Makefile 798 B

1234567891011121314151617181920212223242526272829303132333435
  1. .POSIX:
  2. CC = gcc
  3. CXX = g++
  4. CFLGS = -std=c99
  5. CCFLGS = -ggdb3 -O0 -pedantic-errors -Wall -Wextra -Wno-missing-field-initializers -fpie
  6. CXXFLGS = -std=c++11
  7. IN_EXT = .c
  8. IN_CXX_EXT = .cpp
  9. OUT_EXT = .out
  10. OUTS = $(addsuffix $(OUT_EXT), $(basename $(wildcard *$(IN_EXT))) $(basename $(wildcard *$(IN_CXX_EXT))))
  11. .PHONY: all clean test
  12. all: $(OUTS)
  13. %$(OUT_EXT): %$(IN_EXT)
  14. $(CC) $(CFLGS) $(CCFLGS) $$(python3-config --cflags --embed) -o '$@' '$<' $$(python3-config --embed --ldflags)
  15. %$(OUT_EXT): %$(IN_CXX_EXT)
  16. $(CXX) $(CXXFLGS) $(CCFLGS) $$(python3-config --cflags --embed) -o '$@' '$<' $$(python3-config --embed --ldflags)
  17. clean:
  18. rm -rf *'$(OUT_EXT)' __pycache__ *.pyc
  19. test: all
  20. @\
  21. for t in *"$(OUT_EXT)"; do\
  22. if ! ./"$$t"; then\
  23. echo "ASSERT FAILED: $$t";\
  24. exit 1;\
  25. fi;\
  26. done;\