rules.mk 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. clean:
  29. @echo "RM: $(OUT)"
  30. @rm -rf $(OUT)
  31. @echo "RM : $(RELEASE_DIRECTORY)"
  32. @rm -rf $(RELEASE_DIRECTORY)
  33. make_release_dirs:
  34. @mkdir -p "$(RELEASE_DIRECTORY)/data"
  35. # Data files
  36. $(RELEASE_DIRECTORY)/%$(DATA_FILE_SUFFIX) : % | make_release_dirs
  37. @echo "$^ => $@"
  38. @cp -u "$^" "$@"
  39. # Misc bundle files
  40. $(RELEASE_DIRECTORY)/% : bundle_files/% | make_release_dirs
  41. @echo "$^ => $@"
  42. @cp -u "$^" "$@"
  43. # Executable
  44. $(RELEASE_DIRECTORY)/$(notdir $(EXE)): $(EXE)
  45. @echo "$^ => $@"
  46. @cp -u "$^" "$@"
  47. release: $(EXE) $(RELEASE_FILES) $(RELEASE_MISC_FILES) $(RELEASE_DIRECTORY)/$(notdir $(EXE))
  48. #Archive
  49. release/$(PLATFORM).tar.gz:
  50. @echo "Tar-zipping"
  51. @cd release; tar cfz "$(PLATFORM).tar.gz" $(PLATFORM);
  52. bundle: release/$(PLATFORM).tar.gz release
  53. @echo "Archive ready at $(RELEASE_DIRECTORY).tar.gz"
  54. format:
  55. @echo "Formatting source using clang-format"
  56. @clang-format -i -style=file $(shell git ls-files -c -o --exclude-standard *.c *.cpp *.h)
  57. cflags:
  58. @echo -n $(CPPFLAGS) $(YCM_EXTRA_CFLAGS)
  59. .FORCE: