rules.mk 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. .PHONY: format clean all run versionning include release bundle
  2. all: $(EXE)
  3. include $(wildcard */rules.mk)
  4. RELEASE_DIRECTORY=release/$(PLATFORM)
  5. RELEASE_FILES=$(addprefix $(RELEASE_DIRECTORY)/, $(addsuffix $(DATA_FILE_SUFFIX), $(wildcard data/*)))
  6. # Object dependency files
  7. -include $(OBJS:%.o=%.d)
  8. $(OUT)/%.o: %.c | $(BUILT_SRCS)
  9. @echo "CC: $@"
  10. @mkdir -p $(dir $@)
  11. @$(CC) $(CFLAGS) -c $< -o $@
  12. %.o: %.c | $(BUILT_SRCS)
  13. @echo "CC: $@"
  14. @$(CC) $(CFLAGS) -c $< -o $@
  15. $(OUT)/%.o: %.cpp | $(BUILT_SRCS)
  16. @echo "CPP: $@"
  17. @mkdir -p $(dir $@)
  18. @$(CPP) $(CPPFLAGS) -c $< -o $@
  19. %.o: %.cpp | $(BUILT_SRCS)
  20. @echo "CPP: $@"
  21. @$(CPP) $(CPPFLAGS) -c $< -o $@
  22. $(ELF): $(OBJS)
  23. @mkdir -p $(dir $@)
  24. @echo "CCLD: $@"
  25. @+$(CC) $(LDFLAGS) $^ -o $(ELF)
  26. clean:
  27. @echo "RM: $(OUT)"
  28. @rm -rf $(OUT)
  29. @echo "RM : $(RELEASE_DIRECTORY)"
  30. @rm -rf $(RELEASE_DIRECTORY)
  31. make_release_dirs:
  32. @mkdir -p "$(RELEASE_DIRECTORY)/data"
  33. release/$(PLATFORM)/%$(DATA_FILE_SUFFIX) : % | make_release_dirs
  34. @echo "$^=> $@"
  35. @cp -u "$^" "$@"
  36. release: $(ELF) $(RELEASE_FILES)
  37. @cp $(ELF) "$(RELEASE_DIRECTORY)"
  38. bundle: release
  39. @echo "Tar-zipping"
  40. @tar cf "$(RELEASE_DIRECTORY).tar" "$(RELEASE_DIRECTORY)"
  41. @gzip "$(RELEASE_DIRECTORY).tar" -f
  42. @echo "Archive ready at $(RELEASE_DIRECTORY).tar.gzip"
  43. format:
  44. @echo "Formatting source using clang-format"
  45. @clang-format -i -style=file $(shell git ls-files -c -o --exclude-standard *.c *.cpp *.h)
  46. include:
  47. @echo -n $(addprefix -I ,$(INCLUDE) $(INCLUDE_EXT))
  48. .FORCE: