A 2D tile-based sandbox game.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. # Makefile generated by smake.
  2. PROJNAME = swan
  3. PROJTYPE = exe
  4. SRCS = src/main.cc
  5. HDRS =
  6. OBJS = $(patsubst src/%,$(BUILD)/obj/%.o,$(SRCS))
  7. DEPS = $(patsubst src/%,$(BUILD)/dep/%.d,$(SRCS))
  8. PUBLICHDRS =
  9. # Defaults
  10. PKGS =
  11. EXTRADEPS = libswan/src/Body.cc libswan/src/Chunk.cc libswan/src/Game.cc libswan/src/Mod.cc libswan/src/Player.cc libswan/src/World.cc libswan/src/WorldPlane.cc libswan/include/swan/Chunk.h libswan/include/swan/Game.h libswan/include/swan/Player.h libswan/include/swan/WorldPlane.h libswan/include/swan/World.h libswan/include/swan/common.h libswan/include/swan/Tile.h libswan/include/swan/Mod.h libswan/include/swan/Body.h
  12. EXTRAPUBLICDEPS = libswan/include/swan/Chunk.h libswan/include/swan/Game.h libswan/include/swan/Player.h libswan/include/swan/WorldPlane.h libswan/include/swan/World.h libswan/include/swan/common.h libswan/include/swan/Tile.h libswan/include/swan/Mod.h libswan/include/swan/Body.h
  13. CONFIG ?= release
  14. BUILDDIR ?= build
  15. BUILD ?= $(BUILDDIR)/$(CONFIG)
  16. WARNINGS = -Wall -Wextra -Wno-unused-parameter
  17. SMAKEFILE ?= Smakefile
  18. DESTDIR ?=
  19. PREFIX ?= /usr/local
  20. PHONIES = dumpdeps dumppublicdeps dumpprojtype clean cleanall
  21. CONFIGS = release sanitize debug
  22. PKG_CONFIG ?= pkg-config
  23. AR ?= ar
  24. CCOPTS = -Iinclude -isystem libswan/include
  25. CCOPTS_release = -O2 -flto
  26. CCOPTS_debug = -g
  27. CCOPTS_sanitize = -fsanitize=address -fsanitize=undefined $(CCOPTS_debug)
  28. LDOPTS = -Llibswan/build/$(CONFIG)
  29. LDOPTS_release = -flto
  30. LDOPTS_debug =
  31. LDOPTS_sanitize = -fsanitize=address -fsanitize=undefined $(LDOPTS_debug)
  32. runpfx = @echo $(1) $(2) && $(2)
  33. .PHONY: all
  34. all: $(BUILD)/$(PROJNAME)
  35. -include $(SMAKEFILE)
  36. ifeq ($(filter $(CONFIGS),$(CONFIG)),)
  37. ifeq ($(filter cleanall,$(MAKECMDGOALS)),)
  38. $(error Unknown config '$(CONFIG)'. Supported configs: $(CONFIGS))
  39. endif
  40. endif
  41. ifneq ($(PKGS),)
  42. CCOPTS += $(shell $(PKG_CONFIG) --cflags $(PKGS))
  43. LDOPTS += $(shell $(PKG_CONFIG) --libs $(PKGS))
  44. endif
  45. CFLAGS := $(CCOPTS_$(CONFIG)) $(CCOPTS) $(WARNINGS) $(CFLAGS)
  46. CXXFLAGS := $(CCOPTS_$(CONFIG)) $(CCOPTS) $(WARNINGS) $(CXXFLAGS)
  47. LDFLAGS := $(LDOPTS_$(CONFIG)) $(LDOPTS) $(LDFLAGS)
  48. $(BUILD)/$(PROJNAME): libswan/build/$(CONFIG)/.built $(OBJS)
  49. @mkdir -p $(@D)
  50. $(call runpfx,'(LD)',$(CC) -o $@ $(OBJS) $(LDFLAGS))
  51. touch $(BUILD)/.built
  52. @echo '(OK)' Created $@.
  53. $(PROJNAME): $(BUILD)/$(PROJNAME)
  54. cp $< $@
  55. @echo '(OK)' Created $@.
  56. libswan/build/$(CONFIG)/.built: libswan/src/Body.cc libswan/src/Chunk.cc libswan/src/Game.cc libswan/src/Mod.cc libswan/src/Player.cc libswan/src/World.cc libswan/src/WorldPlane.cc libswan/include/swan/Chunk.h libswan/include/swan/Game.h libswan/include/swan/Player.h libswan/include/swan/WorldPlane.h libswan/include/swan/World.h libswan/include/swan/common.h libswan/include/swan/Tile.h libswan/include/swan/Mod.h libswan/include/swan/Body.h
  57. $(call runpfx,'(SUB)',$(MAKE) -C libswan)
  58. $(BUILD)/obj/%.c.o: src/%.c $(EXTRAPUBLICDEPS)
  59. @mkdir -p $(@D)
  60. $(call runpfx,'(CC)',$(CC) -o $@ -c $< $(CFLAGS))
  61. $(BUILD)/obj/%.cc.o: src/%.cc $(EXTRAPUBLICDEPS)
  62. @mkdir -p $(@D)
  63. $(call runpfx,'(CXX)',$(CXX) -o $@ -c $< $(CXXFLAGS))
  64. $(BUILD)/dep/%.c.d: src/%.c $(HDRS)
  65. @mkdir -p $(@D)
  66. $(call runpfx,'(DEP)',$(CC) -o $@ -MM $< -MT $(patsubst src/%,$(BUILD)/obj/%.o,$<) $(CFLAGS))
  67. $(BUILD)/dep/%.cc.d: src/%.cc $(HDRS)
  68. @mkdir -p $(@D)
  69. $(call runpfx,'(DEP)',$(CXX) -o $@ -MM $< -MT $(patsubst src/%,$(BUILD)/obj/%.o,$<) $(CXXFLAGS))
  70. .PHONY: install
  71. install: $(BUILD)/$(PROJNAME)
  72. mkdir -p $(DESTDIR)$(PREFIX)/bin
  73. cp -f $^ $(DESTDIR)$(PREFIX)/bin
  74. chmod 755 $(DESTDIR)$(PREFIX)/bin/$(PROJNAME)
  75. $(MAKE) -C libswan install
  76. .PHONY: uninstall
  77. uninstall:
  78. rm -f $(DESTDIR)$(PREFIX)/bin/$(PROJNAME)
  79. $(MAKE) -C libswan uninstall
  80. .PHONY: clean
  81. clean:
  82. rm -rf $(PROJNAME) $(BUILD)
  83. $(MAKE) -C libswan clean
  84. .PHONY: cleanall
  85. cleanall:
  86. rm -rf $(BUILDDIR)
  87. $(MAKE) -C libswan cleanall
  88. .PHONY: dumpdeps
  89. dumpdeps:
  90. @echo $(addprefix $(PREPEND),$(SRCS) $(HDRS) $(EXTRADEPS))
  91. .PHONY: dumppublicdeps
  92. dumppublicdeps:
  93. @echo $(addprefix $(PREPEND),$(PUBLICHDRS) $(EXTRAPUBLICDEPS))
  94. .PHONY: dumpprojtype
  95. dumpprojtype:
  96. @echo $(PROJTYPE)
  97. ifeq ($(filter $(PHONIES),$(MAKECMDGOALS)),)
  98. -include $(DEPS)
  99. endif