Makefile 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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 -z combreloc -z defs
  10. ARFLAGS =
  11. pal_loader = libpal.so
  12. pal_sec =
  13. pal_lib = libpal.so
  14. pal_lib_deps =
  15. pal_lib_post =
  16. pal_static = libpal.a
  17. include host/$(OS)/Makefile.am
  18. CFLAGS += -I. -I../include -Ihost/$(OS) -I../lib
  19. pal_target = $(pal_lib) $(pal_lib_post) $(pal_static) $(pal_loader) $(pal_sec) pal pal_sec
  20. defs = -DIN_PAL -DSRCDIR="$(PWD)/"
  21. objs = $(addprefix db_,streams memory threading semaphore events process \
  22. object main misc ipc exception rtld) slab printf
  23. graphene_lib = ../lib/graphene-lib.a
  24. host_lib = host/$(OS)/libpal-$(OS).a
  25. headers = $(wildcard *.h) $(wildcard ../lib/*.h) host/$(OS)/pal_host.h
  26. all: $(pal_target)
  27. debug: debug = debug
  28. debug: CC = gcc -gdwarf-2 -g3
  29. debug: CFLAGS += -DDEBUG
  30. debug: $(pal_target)
  31. .PHONY: $(host_lib) $(graphene_lib)
  32. $(graphene_lib):
  33. make -C ../lib $(debug)
  34. $(host_lib):
  35. @[ ! -d host/$(OS) ] || make -C host/$(OS) $(debug)
  36. ifneq ($(pal_sec),)
  37. $(pal_sec):
  38. @[ ! -d security/$(OS) ] || make -C security/$(OS) $(debug)
  39. pal_sec: $(pal_sec)
  40. ln -sf $(pal_sec) pal_sec
  41. endif
  42. $(pal_lib): $(addsuffix .o,$(objs)) $(host_lib) $(graphene_lib) $(pal_lib_deps)
  43. @echo [ $@ ]
  44. $(LD) $(LDFLAGS) -o $@ $(filter-out %.map %.lds,$^) $(LDFLAGS-suffix)
  45. pal: $(pal_loader)
  46. ln -sf $(pal_loader) pal
  47. ifneq ($(pal_lib_post),)
  48. $(pal_lib_post): $(pal_lib)
  49. make -C host/$(OS) ../../$@
  50. endif
  51. $(pal_static): $(addsuffix .o,$(objs)) $(host_lib) $(graphene_lib)
  52. @echo [ $@ ]
  53. $(AR) $(ARFLAGS) $@ $^ $(ARFLAGS-suffix)
  54. %.asm: %.c $(headers)
  55. $(CC) $(CFLAGS) $(defs) -c $< -o $<.o
  56. @objdump -S $<.o > $@
  57. @rm $<.o
  58. %.o: %.c $(headers)
  59. @echo [ $@ ]
  60. @$(CC) $(CFLAGS) $(defs) -c $< -o $@ $(CFLAGS-suffix)
  61. %.e: %.c $(headers)
  62. @echo [ $@ ]
  63. @$(CC) $(CFLAGS) $(defs) -E $< -o $@ $(CFLAGS-suffix)
  64. clean:
  65. rm -rf $(addsuffix .o,$(objs)) $(pal_target)
  66. @[ ! -d host/$(OS) ] || make -C host/$(OS) clean
  67. @[ ! -d security/$(OS) ] || make -C security/$(OS) clean