Makefile 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. -I. -I../include -Ihost/$(OS) -I../lib
  10. LDFLAGS = -shared -nostdlib --version-script pal.map -z combreloc -z defs \
  11. -T pal.lds
  12. ARFLAGS =
  13. pal_target = libpal.a libpal.so
  14. include host/$(OS)/Makefile.am
  15. defs = -DIN_PAL
  16. objs = $(addprefix db_,streams memory threading semaphore events process \
  17. object main misc ipc exception rtld) slab printf
  18. graphene_lib = ../lib/graphene-lib.a
  19. host_lib = host/$(OS)/libpal-$(OS).a
  20. headers = $(wildcard *.h) $(wildcard ../lib/*.h)
  21. all: $(pal_target) security
  22. debug: debug = debug
  23. debug: CC = gcc -gdwarf-2 -g3
  24. debug: CFLAGS += -DDEBUG
  25. debug: $(pal_target) security
  26. .PHONY: security $(host_lib) $(graphene_lib)
  27. $(graphene_lib):
  28. make -C ../lib $(debug)
  29. $(host_lib):
  30. @[ ! -d host/$(OS) ] || make -C host/$(OS) $(debug)
  31. security:
  32. @[ ! -d security/$(OS) ] || make -C security/$(OS) $(debug)
  33. libpal.so: $(addsuffix .o,$(objs)) $(filter %.map %.lds,$(LDFLAGS)) \
  34. $(host_lib) $(graphene_lib)
  35. @echo [ $@ ]
  36. @$(LD) $(LDFLAGS) -o $@ $(filter-out %.map %.lds,$^) -soname=$@
  37. libpal.a: $(addsuffix .o,$(objs)) $(host_lib) $(graphene_lib)
  38. @echo [ $@ ]
  39. @$(AR) $(ARFLAGS) $@ $^
  40. %.asm: %.c $(headers)
  41. $(CC) $(CFLAGS) $(defs) -c $< -o $<.o
  42. @objdump -S $<.o > $@
  43. @rm $<.o
  44. %.o: %.c $(headers)
  45. @echo [ $@ ]
  46. @$(CC) $(CFLAGS) $(defs) -c $< -o $@
  47. %.e: %.c $(headers)
  48. @echo [ $@ ]
  49. @$(CC) $(CFLAGS) $(defs) -E $< -o $@
  50. clean:
  51. rm -f $(addsuffix .o,$(objs)) $(pal_target)
  52. @[ ! -d host/$(OS) ] || make -C host/$(OS) clean
  53. @[ ! -d security/$(OS) ] || make -C security/$(OS) clean