Makefile 861 B

123456789101112131415161718192021222324252627282930313233
  1. # Utilities
  2. RM := rm -rf
  3. CHDIR := cd
  4. EXEC := exec
  5. # Artifacts
  6. EXAMPLE_DIR := examples
  7. EXAMPLE_SRCS := types.cpp stack.cpp functions.cpp usertypes.cpp
  8. EXAMPLE_DEPS := $(EXAMPLE_SRCS:%.cpp=$(EXAMPLE_DIR)/%.d)
  9. EXAMPLE_OBJS := $(EXAMPLE_SRCS:%.cpp=$(EXAMPLE_DIR)/%.out)
  10. # Compiler
  11. CXX ?= clang++
  12. CXXFLAGS += -std=c++14 -O2 -fno-exceptions -fno-rtti -fmessage-length=0 -Wall -Wextra \
  13. -pedantic -Ilib
  14. LDLIBS += -llua
  15. # Examples
  16. examples: $(EXAMPLE_OBJS)
  17. run-examples: examples
  18. @for ex in $(EXAMPLE_OBJS); do echo "> Example '$$ex'"; ./$$ex; done
  19. clean:
  20. $(RM) $(EXAMPLE_OBJS) $(EXAMPLE_DEPS)
  21. -include $(EXAMPLE_DEPS)
  22. $(EXAMPLE_DIR)/%.out: $(EXAMPLE_DIR)/%.cpp Makefile
  23. $(CXX) $(CXXFLAGS) -MMD -MF$(@:%=%.d) -MT$@ -o$@ $< $(LDLIBS)
  24. # Phony
  25. .PHONY: examples clean