rules.mk 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. .PHONY: format clean all run versionning cflags release bundle
  2. all: $(EXE)
  3. include $(wildcard */rules.mk)
  4. MISC_FILES=$(wildcard bundle_files/*)
  5. RELEASE_DIRECTORY=release/$(PLATFORM)
  6. RELEASE_FILES=$(addprefix $(RELEASE_DIRECTORY)/, $(addsuffix $(DATA_FILE_SUFFIX), $(wildcard data/*)))
  7. RELEASE_MISC_FILES=$(addprefix $(RELEASE_DIRECTORY)/, $(notdir $(MISC_FILES)))
  8. # Object dependency files
  9. -include $(OBJS:%.o=%.d)
  10. $(OUT)/%.o: %.c | $(BUILT_SRCS)
  11. @echo "CC: $@"
  12. @mkdir -p $(dir $@)
  13. @$(CC) $(CFLAGS) -c $< -o $@
  14. %.o: %.c | $(BUILT_SRCS)
  15. @echo "CC: $@"
  16. @$(CC) $(CFLAGS) -c $< -o $@
  17. $(OUT)/%.o: %.cpp | $(BUILT_SRCS)
  18. @echo "CPP: $@"
  19. @mkdir -p $(dir $@)
  20. @$(CPP) $(CPPFLAGS) -c $< -o $@
  21. %.o: %.cpp | $(BUILT_SRCS)
  22. @echo "CPP: $@"
  23. @$(CPP) $(CPPFLAGS) -c $< -o $@
  24. $(ELF): $(OBJS)
  25. @mkdir -p $(dir $@)
  26. @echo "CCLD: $@"
  27. #@+$(CC) $(LDFLAGS) $^ $(LIBS) -o $(ELF)
  28. @+$(CC) $^ $(LIBS) -o $(ELF) $(LDFLAGS)
  29. clean:
  30. @echo "RM: $(OUT)"
  31. @rm -rf $(OUT)
  32. @echo "RM : $(RELEASE_DIRECTORY)"
  33. @rm -rf $(RELEASE_DIRECTORY)
  34. make_release_dirs:
  35. @mkdir -p "$(RELEASE_DIRECTORY)/data"
  36. # Data files
  37. $(RELEASE_DIRECTORY)/%$(DATA_FILE_SUFFIX) : % | make_release_dirs
  38. @echo "$^ => $@"
  39. @cp -u "$^" "$@"
  40. # Misc bundle files
  41. $(RELEASE_DIRECTORY)/% : bundle_files/% | make_release_dirs
  42. @echo "$^ => $@"
  43. @cp -u "$^" "$@"
  44. # Executable
  45. $(RELEASE_DIRECTORY)/$(notdir $(EXE)): $(EXE)
  46. @echo "$^ => $@"
  47. @cp -u "$^" "$@"
  48. release: $(EXE) $(RELEASE_FILES) $(RELEASE_MISC_FILES) $(RELEASE_DIRECTORY)/$(notdir $(EXE))
  49. #Archive
  50. release/$(PLATFORM).tar.gz:
  51. @echo "Tar-zipping"
  52. @cd release; tar cfz "$(PLATFORM).tar.gz" $(PLATFORM);
  53. bundle: release/$(PLATFORM).tar.gz release
  54. @echo "Archive ready at $(RELEASE_DIRECTORY).tar.gz"
  55. format:
  56. @echo "Formatting source using clang-format"
  57. @clang-format -i -style=file $(shell git ls-files -c -o --exclude-standard *.c *.cpp *.h)
  58. cflags:
  59. @echo -n $(CPPFLAGS) $(YCM_EXTRA_CFLAGS)
  60. .FORCE: