123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- # Makefile generated by smake.
-
- PROJNAME = core.mod
- PROJTYPE = solib
-
- SRCS = src/mod.cc
- HDRS =
- OBJS = $(patsubst src/%,$(BUILD)/obj/%.o,$(SRCS))
- DEPS = $(patsubst src/%,$(BUILD)/dep/%.d,$(SRCS))
- PUBLICHDRS =
-
- # Defaults
- PKGS =
- 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
- 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
- CONFIG ?= release
- BUILDDIR ?= build
- BUILD ?= $(BUILDDIR)/$(CONFIG)
- WARNINGS = -Wall -Wextra -Wno-unused-parameter
- SMAKEFILE ?= Smakefile
- DESTDIR ?=
- PREFIX ?= /usr/local
- PHONIES = dumpdeps dumppublicdeps dumpprojtype clean cleanall
- CONFIGS = release sanitize debug
-
- PKG_CONFIG ?= pkg-config
- AR ?= ar
-
- CCOPTS = -Iinclude -fPIC -isystem ../libswan/include
- CCOPTS_release = -O2 -flto
- CCOPTS_debug = -g
- CCOPTS_sanitize = -fsanitize=address -fsanitize=undefined $(CCOPTS_debug)
-
- LDOPTS = -L../libswan/build/$(CONFIG)
- LDOPTS_release = -flto
- LDOPTS_debug =
- LDOPTS_sanitize = -fsanitize=address -fsanitize=undefined $(LDOPTS_debug)
-
- runpfx = @echo $(1) $(2) && $(2)
-
- .PHONY: all
- all: $(BUILD)/$(PROJNAME).so
-
- -include $(SMAKEFILE)
-
- ifeq ($(filter $(CONFIGS),$(CONFIG)),)
- ifeq ($(filter cleanall,$(MAKECMDGOALS)),)
- $(error Unknown config '$(CONFIG)'. Supported configs: $(CONFIGS))
- endif
- endif
-
- ifneq ($(PKGS),)
- CCOPTS += $(shell $(PKG_CONFIG) --cflags $(PKGS))
- LDOPTS += $(shell $(PKG_CONFIG) --libs $(PKGS))
- endif
-
- CFLAGS := $(CCOPTS_$(CONFIG)) $(CCOPTS) $(WARNINGS) $(CFLAGS)
- CXXFLAGS := $(CCOPTS_$(CONFIG)) $(CCOPTS) $(WARNINGS) $(CXXFLAGS)
- LDFLAGS := $(LDOPTS_$(CONFIG)) $(LDOPTS) $(LDFLAGS)
-
- $(BUILD)/$(PROJNAME).so: ../libswan/build/$(CONFIG)/.built $(OBJS) $(EXTRADEPS)
- @mkdir -p $(@D)
- $(call runpfx,'(LD)',$(CC) -o $@ $(OBJS) -shared $(LDLAGS))
- touch $(BUILD)/.built
- @echo '(OK)' Created $@.
-
- ../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
- $(call runpfx,'(SUB)',$(MAKE) -C ../libswan)
-
- $(BUILD)/obj/%.c.o: src/%.c $(EXTRAPUBLICDEPS)
- @mkdir -p $(@D)
- $(call runpfx,'(CC)',$(CC) -o $@ -c $< $(CFLAGS))
- $(BUILD)/obj/%.cc.o: src/%.cc $(EXTRAPUBLICDEPS)
- @mkdir -p $(@D)
- $(call runpfx,'(CXX)',$(CXX) -o $@ -c $< $(CXXFLAGS))
-
- $(BUILD)/dep/%.c.d: src/%.c $(HDRS)
- @mkdir -p $(@D)
- $(call runpfx,'(DEP)',$(CC) -o $@ -MM $< -MT $(patsubst src/%,$(BUILD)/obj/%.o,$<) $(CFLAGS))
- $(BUILD)/dep/%.cc.d: src/%.cc $(HDRS)
- @mkdir -p $(@D)
- $(call runpfx,'(DEP)',$(CXX) -o $@ -MM $< -MT $(patsubst src/%,$(BUILD)/obj/%.o,$<) $(CXXFLAGS))
-
- .PHONY: install
- install: $(BUILD)/$(PROJNAME).so
- mkdir -p $(DESTDIR)$(PREFIX)/lib
- cp -f $^ $(DESTDIR)$(PREFIX)/lib
- chmod 755 $(DESTDIR)$(PREFIX)/lib/$(PROJNAME).so
- mkdir -p $(DESTDIR)$(PREFIX)/include
- cp -rf include/* $(DESTDIR)$(PREFIX)/include
- $(MAKE) -C ../libswan install
-
- .PHONY: uninstall
- uninstall:
- rm -f $(DESTDIR)$(PREFIX)/lib/$(PROJNAME).so
- rm -rf $(patsubst include/%,$(DESTDIR)$(PREFIX)/include/%,$(wildcard include/*))
- $(MAKE) -C ../libswan uninstall
-
- .PHONY: clean
- clean:
- rm -rf $(PROJNAME) $(BUILD)
- $(MAKE) -C ../libswan clean
-
- .PHONY: cleanall
- cleanall:
- rm -rf $(BUILDDIR)
- $(MAKE) -C ../libswan cleanall
-
- .PHONY: dumpdeps
- dumpdeps:
- @echo $(addprefix $(PREPEND),$(SRCS) $(HDRS) $(EXTRADEPS))
-
- .PHONY: dumppublicdeps
- dumppublicdeps:
- @echo $(addprefix $(PREPEND),$(PUBLICHDRS) $(EXTRAPUBLICDEPS))
-
- .PHONY: dumpprojtype
- dumpprojtype:
- @echo $(PROJTYPE)
-
- ifeq ($(filter $(PHONIES),$(MAKECMDGOALS)),)
- -include $(DEPS)
- endif
|