Makefile 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. CFLAGS-libos = -L../../../build/libos -I../../include
  2. special_executables = bootstrap_static bootstrap_pie shared_object
  3. c_executables = $(filter-out $(special_executables),$(patsubst %.c,%,$(wildcard *.c)))
  4. cxx_executables = $(patsubst %.cpp,%,$(wildcard *.cpp))
  5. manifests = $(patsubst %.manifest.template,%.manifest,$(wildcard *.manifest.template)) manifest
  6. exec_target = $(special_executables) $(c_executables) $(cxx_executables)
  7. target = $(exec_target) $(manifests)
  8. clean-extra += clean-tmp
  9. .PHONY: default
  10. default: all
  11. level = ../
  12. include ../Makefile
  13. ifeq ($(findstring x86_64,$(SYS))$(findstring linux,$(SYS)),x86_64linux)
  14. $(c_executables): %: %.c
  15. @echo [ $@ ]
  16. @$(CC) $(CFLAGS) $(if $(findstring .libos,$@),$(CFLAGS-libos),) -o $@ $< \
  17. $(shell echo $@ | sed 's/^[^\.]*//g' | sed 's/\./ -l/g')
  18. $(cxx_executables): %: %.cpp
  19. @echo [ $@ ]
  20. @$(CC) $(CFLAGS) -o $@ $< \
  21. $(shell echo $@ | sed 's/^[^\.]*//g' | sed 's/\./ -l/g')
  22. bootstrap_static: %: %.c
  23. @echo [ $@ ]
  24. @$(CC) $(CFLAGS) -o $@ -static $< \
  25. $(shell echo $@ | sed 's/^[^\.]*//g' | sed 's/\./ -l/g')
  26. bootstrap_pie: %: %.c
  27. @echo [ $@ ]
  28. @$(CC) $(CFLAGS) -fPIC --pie -o $@ $< \
  29. $(shell echo $@ | sed 's/^[^\.]*//g' | sed 's/\./ -l/g')
  30. shared_object: %: %.c
  31. @echo [ $@ ]
  32. @$(CC) $(CFLAGS) -o $@ -fPIC -pie $< \
  33. $(shell echo $@ | sed 's/^[^\.]*//g' | sed 's/\./ -l/g')
  34. else
  35. .IGNORE: $(special_executables) $(c_executables) $(cxx_executables)
  36. $(special_executables) $(c_executables) $(cxx_executables):
  37. endif
  38. PYTHONENV="PYTHONPATH=../../../../Scripts"
  39. ifeq ($(SGX_RUN),1)
  40. PYTHONENV += "TIMEOUT=5000"
  41. endif
  42. .PHONY: regression
  43. regression: $(target)
  44. @echo "\n\nBasic Bootstrapping:"
  45. @for f in $(wildcard 00_*.py); do env $(PYTHONENV) python $$f $(RUNTIME)/pal-$(PAL_HOST) || exit $$?; done
  46. @echo "\n\nSyscall Support:"
  47. @for f in $(wildcard 30_*.py); do env $(PYTHONENV) python $$f $(RUNTIME)/pal-$(PAL_HOST) || exit $$?; done
  48. @echo "\n\nSocket Support:"
  49. @for f in $(wildcard 80_*.py); do env $(PYTHONENV) python $$f $(RUNTIME)/pal-$(PAL_HOST) || exit $$?; done
  50. @echo "\n\nLarge File Support:"
  51. @for f in $(wildcard 90_*.py); do env $(PYTHONENV) python $$f $(RUNTIME)/pal-$(PAL_HOST) || exit $$?; done
  52. .PHONY: clean-tmp
  53. clean-tmp:
  54. rm -rf *.tmp ../apps/ltp/*.csv *.cached *.manifest.sgx *~ *.sig *.token