]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/Makefile
Merge branch 'master' into terencehill/dynamic_hud
[xonotic/xonotic-data.pk3dir.git] / qcsrc / Makefile
1 CPP := cc -xc -E
2 QCC ?= gmqcc
3
4 PROGS_OUT ?= $(CURDIR)/..
5 WORKDIR ?= ../.tmp
6
7 QCCFLAGS_WATERMARK ?= $(shell git describe --tags --dirty='~')
8 VER = $(subst *,\*,$(QCCFLAGS_WATERMARK))
9 NDEBUG ?= 1
10 BUILD_MOD ?= 0
11
12 ifndef ZIP
13         ifneq ($(shell which zip),)
14                 ZIP := zip -9
15         endif
16         ifneq ($(shell which 7z),)
17                 ZIP := 7z a -tzip -mx=9
18         endif
19         ifneq ($(shell which 7za),)
20                 ZIP := 7za a -tzip -mx=9
21         endif
22     ifndef ZIP
23         $(warning "No zip in ($(PATH))")
24         ZIP := : zip_not_found
25     endif
26 endif
27
28 # We eventually need to get rid of these
29 QCCFLAGS_WTFS ?= \
30         -Wno-field-redeclared
31
32 QCCDEFS ?= \
33         -DWATERMARK="$(QCCFLAGS_WATERMARK)" \
34         -DNDEBUG=$(NDEBUG) \
35         -DBUILD_MOD=$(BUILD_MOD) \
36         $(QCCDEFS_EXTRA)
37
38 # -Ooverlap-locals is required
39 QCCFLAGS ?= \
40         -std=gmqcc \
41         -Ooverlap-locals \
42         -O3 \
43         -Werror -Wall \
44         $(QCCFLAGS_WTFS) \
45         -flno -futf8 -fno-bail-on-werror \
46         -frelaxed-switch -freturn-assignments \
47         $(QCCFLAGS_EXTRA)
48
49
50
51 .PHONY: all
52 all: qc pk3
53
54 $(WORKDIR):
55         @mkdir -p $@
56
57 .PHONY: clean
58 clean: | $(WORKDIR)
59         $(RM) $(PROGS_OUT)/csprogs.dat
60         $(RM) $(PROGS_OUT)/menu.dat
61         $(RM) $(PROGS_OUT)/progs.dat
62         $(RM) $(WORKDIR)/*.d
63         $(RM) $(WORKDIR)/*.qc
64         $(RM) $(WORKDIR)/*.txt
65
66 .PHONY: qc
67 qc: $(PROGS_OUT)/csprogs.dat $(PROGS_OUT)/menu.dat $(PROGS_OUT)/progs.dat
68
69 .PHONY: pk3
70 pk3: csprogs-$(VER).pk3
71
72
73
74
75
76 %-$(VER).pk3: $(PROGS_OUT)/%.dat
77         $(eval PROG=$*)
78         $(eval PK3=$(PROG)-$(VER).pk3)
79         $(eval TXT=$(PROG)-$(VER).txt)
80         $(eval DAT=$(PROG)-$(VER).dat)
81         $(eval LNO=$(PROG)-$(VER).lno)
82         @ echo "http://xonotic.org" > $(TXT)
83         @ ln -f $(PROGS_OUT)/$(PROG).dat $(DAT)
84         @ ln -f $(PROGS_OUT)/$(PROG).lno $(LNO)
85         @ $(RM) *.pk3
86         $(ZIP) $(PK3) $(TXT) $(DAT) $(LNO)
87         @ $(RM) $(TXT) $(DAT) $(LNO)
88
89 QCCVERSION := $(shell cd lib && $(QCC) --version)
90 QCCVERSIONFILE := $(WORKDIR)/qccversion.$(shell echo ${QCCVERSION} | git hash-object --stdin)
91 $(QCCVERSIONFILE): | $(WORKDIR)
92         @ $(RM) $(WORKDIR)/qccversion.*
93         @ echo $(QCCVERSION) > $@
94
95 export WORKDIR
96 export CPP
97 export QCC
98 export QCCDEFS
99 export QCCFLAGS
100
101 $(PROGS_OUT)/csprogs.dat: client/progs.inc $(QCCVERSIONFILE) | $(WORKDIR)
102         @ echo make[1]: Entering directory \`$(CURDIR)/client\'
103         @ ./tools/qcc.sh client $@ $<
104 -include $(WORKDIR)/client.d
105
106 $(PROGS_OUT)/progs.dat: server/progs.inc $(QCCVERSIONFILE) | $(WORKDIR)
107         @ echo make[1]: Entering directory \`$(CURDIR)/server\'
108         @ ./tools/qcc.sh server $@ $<
109 -include $(WORKDIR)/server.d
110
111 $(PROGS_OUT)/menu.dat: menu/progs.inc $(QCCVERSIONFILE) | $(WORKDIR)
112         @ echo make[1]: Entering directory \`$(CURDIR)/menu\'
113         @ ./tools/qcc.sh menu $@ $<
114 -include $(WORKDIR)/menu.d