Makefile 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. MAKEFLAGS += --check-symlink-times
  2. include Makefile.Host
  3. CC = gcc
  4. AR = ar rcs
  5. LD = ld
  6. CFLAGS = -Wall -fPIC -O2 -std=gnu99 -fgnu89-inline -U_FORTIFY_SOURCE \
  7. -fno-omit-frame-pointer \
  8. -fno-stack-protector -fno-builtin
  9. LDFLAGS = -shared -nostdlib --version-script pal.map -z combreloc -z defs \
  10. -T pal.lds
  11. ARFLAGS =
  12. pal_loader = libpal.so
  13. pal_lib = libpal.a
  14. include host/$(OS)/Makefile.am
  15. CFLAGS += -I. -I../include -Ihost/$(OS) -I../lib
  16. pal_target = $(pal_loader) $(pal_lib)
  17. defs = -DIN_PAL -DSRCDIR="$(PWD)/"
  18. objs = $(addprefix db_,streams memory threading semaphore events process \
  19. object main misc ipc exception rtld) slab printf
  20. graphene_lib = ../lib/graphene-lib.a
  21. host_lib = host/$(OS)/libpal-$(OS).a
  22. headers = $(wildcard *.h) $(wildcard ../lib/*.h)
  23. all: $(pal_target) security
  24. debug: debug = debug
  25. debug: CC = gcc -gdwarf-2 -g3
  26. debug: CFLAGS += -DDEBUG
  27. debug: $(pal_target) security
  28. .PHONY: security $(host_lib) $(graphene_lib)
  29. $(graphene_lib):
  30. make -C ../lib $(debug)
  31. $(host_lib):
  32. @[ ! -d host/$(OS) ] || make -C host/$(OS) $(debug)
  33. security:
  34. @[ ! -d security/$(OS) ] || make -C security/$(OS) $(debug)
  35. $(pal_loader): $(addsuffix .o,$(objs)) $(filter %.map %.lds,$(LDFLAGS)) \
  36. $(host_lib) $(graphene_lib)
  37. @echo [ libpal.exe ]
  38. $(LD) $(LDFLAGS) -o $@ $(filter-out %.map %.lds,$^) $(LDFLAGS-suffix)
  39. $(pal_lib): $(addsuffix .o,$(objs)) $(host_lib) $(graphene_lib)
  40. @echo [ $@ ]
  41. $(AR) $(ARFLAGS) $@ $^ $(ARFLAGS-suffix)
  42. %.asm: %.c $(headers)
  43. $(CC) $(CFLAGS) $(defs) -c $< -o $<.o
  44. @objdump -S $<.o > $@
  45. @rm $<.o
  46. %.o: %.c $(headers)
  47. @echo [ $@ ]
  48. @$(CC) $(CFLAGS) $(defs) -c $< -o $@ $(CFLAGS-suffix)
  49. %.e: %.c $(headers)
  50. @echo [ $@ ]
  51. @$(CC) $(CFLAGS) $(defs) -E $< -o $@ $(CFLAGS-suffix)
  52. clean:
  53. rm -rf $(addsuffix .o,$(objs)) $(pal_target)
  54. @[ ! -d host/$(OS) ] || make -C host/$(OS) clean
  55. @[ ! -d security/$(OS) ] || make -C security/$(OS) clean