rules.mk 1.3 KB

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