2 QCC ?= ../../../../gmqcc/gmqcc
7 QCCFLAGS_WATERMARK ?= $(shell git describe --tags --dirty='~')
8 VER = $(subst *,\*,$(QCCFLAGS_WATERMARK))
11 ENABLE_EFFECTINFO ?= 0
13 ENABLE_DEBUGTRACE ?= 0
17 ifneq ($(shell which zip 2>/dev/null),)
20 ifneq ($(shell which 7z 2>/dev/null),)
21 ZIP := 7z a -tzip -mx=9 -sdel
23 ifneq ($(shell which 7za 2>/dev/null),)
24 ZIP := 7za a -tzip -mx=9 -sdel
27 $(warning "No zip / 7z / 7za in ($(PATH))")
28 ZIP := : zip_not_found
32 # Set to empty string to temporarily enable warnings when debugging
36 # We eventually need to get rid of these
41 -DXONOTIC=$(XONOTIC) \
42 -DWATERMARK="$(QCCFLAGS_WATERMARK)" \
44 -DENABLE_EFFECTINFO=$(ENABLE_EFFECTINFO) \
45 -DENABLE_DEBUGDRAW=$(ENABLE_DEBUGDRAW) \
46 -DENABLE_DEBUGTRACE=$(ENABLE_DEBUGTRACE) \
47 $(if $(BUILD_MOD), -DBUILD_MOD="$(BUILD_MOD)" -I$(BUILD_MOD), ) \
50 # -Ooverlap-locals is required
58 -flno -futf8 -fno-bail-on-werror \
59 -frelaxed-switch -freturn-assignments \
72 $(RM) $(PROGS_OUT)/csprogs.dat
73 $(RM) $(PROGS_OUT)/menu.dat
74 $(RM) $(PROGS_OUT)/progs.dat
75 $(RM) $(PROGS_OUT)/csprogs.lno
76 $(RM) $(PROGS_OUT)/menu.lno
77 $(RM) $(PROGS_OUT)/progs.lno
80 $(RM) $(WORKDIR)/*.txt
81 $(RM) $(WORKDIR)/qccversion.*
82 $(RM) $(WORKDIR)/csprogs-*
83 $(RM) $(WORKDIR)/autoexec/csprogs-*.cfg
84 $(RM) $(WORKDIR)/*.dat
88 qc: $(PROGS_OUT)/csprogs.dat $(PROGS_OUT)/menu.dat $(PROGS_OUT)/progs.dat
91 sv: $(PROGS_OUT)/csprogs.dat $(PROGS_OUT)/progs.dat
94 pk3: csprogs-$(VER).pk3
98 COMPTESTS = test-server test-client test-menu
99 .PHONY: test $(COMPTESTS)
102 tools/compilationunits.sh $@
106 %-$(VER).pk3: $(PROGS_OUT)/%.dat
108 $(eval PK3=$(PROG)-$(VER).pk3)
109 $(eval CFG=autoexec/$(PROG)-$(VER).cfg)
110 $(eval DAT=$(PROG)-$(VER).dat)
111 $(eval LNO=$(PROG)-$(VER).lno)
112 @ mkdir -p $(WORKDIR)/autoexec
113 @ echo "// http://xonotic.org" > $(WORKDIR)/$(CFG)
114 @ echo "set csqc_progname $(DAT)" >> $(WORKDIR)/$(CFG)
115 @ cp -f $(PROGS_OUT)/$(PROG).dat $(WORKDIR)/$(DAT)
116 @ cp -f $(PROGS_OUT)/$(PROG).lno $(WORKDIR)/$(LNO)
117 @ $(RM) $(PROG)-*.pk3
118 cd $(WORKDIR) && $(ZIP) $(CURDIR)/$(PK3) $(CFG) $(DAT) $(LNO)
120 QCCVERSION := $(shell cd lib && $(QCC) --version)
121 QCCVERSIONFILE := $(WORKDIR)/qccversion.$(shell echo ${QCCVERSION} | git hash-object --stdin)
122 $(QCCVERSIONFILE): | $(WORKDIR)
123 @ $(RM) $(WORKDIR)/qccversion.*
124 @ echo $(QCCVERSION) > $@
132 $(PROGS_OUT)/csprogs.dat: client/progs.inc $(QCCVERSIONFILE) | $(WORKDIR)
133 @ echo make[1]: Entering directory \`$(CURDIR)/client\'
134 ./tools/qcc.sh client $@ $<
135 -include $(WORKDIR)/client.d
137 $(PROGS_OUT)/progs.dat: server/progs.inc $(QCCVERSIONFILE) | $(WORKDIR)
138 @ echo make[1]: Entering directory \`$(CURDIR)/server\'
139 ./tools/qcc.sh server $@ $<
140 -include $(WORKDIR)/server.d
142 $(PROGS_OUT)/menu.dat: menu/progs.inc $(QCCVERSIONFILE) | $(WORKDIR)
143 @ echo make[1]: Entering directory \`$(CURDIR)/menu\'
144 ./tools/qcc.sh menu $@ $<
145 -include $(WORKDIR)/menu.d