]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/Makefile
Probable fix for the annoying player bending issue
[xonotic/xonotic-data.pk3dir.git] / qcsrc / Makefile
index ac418a5fae9a7df4290b8a5823e24b5394186bd7..45360c60c19ff9ae2799e8aecb0c8ee20ada8b36 100644 (file)
@@ -1,9 +1,10 @@
 SCM := $(shell if [ -d .svn ]; then echo svn; elif [ -d ../.git ]; then echo git; fi)
 PERL ?= perl
-QCCFLAGS_WATERMARK ?= -DWATERMARK='"$(shell git describe)"'
+QCCFLAGS_WATERMARK ?= $(shell git describe)
+CPP := cc -xc -E
 QCC ?= gmqcc
-QCCDEFS_EXTRA ?= -DGMQCC
 NDEBUG ?= 1
+PROGS_OUT ?= $(CURDIR)/..
 BUILD_MOD ?= 0
 
 QCCVERSIONFILE := qccversion.$(shell (cd server && $(QCC) --version) > qccversion.txt && git hash-object qccversion.txt)
@@ -13,7 +14,7 @@ QCCFLAGS_WTFS ?= \
        -Wno-field-redeclared
 
 QCCDEFS ?= \
-       $(QCCFLAGS_WATERMARK) \
+       -DWATERMARK="$(QCCFLAGS_WATERMARK)" \
        -DNDEBUG=$(NDEBUG) \
        -DBUILD_MOD=$(BUILD_MOD) \
        $(QCCDEFS_EXTRA)
@@ -36,40 +37,36 @@ XON_BUILDSYSTEM =
 all: qc
 
 .PHONY: qc
-qc: ../menu.dat ../progs.dat ../csprogs.dat
+qc: $(PROGS_OUT)/menu.dat $(PROGS_OUT)/progs.dat $(PROGS_OUT)/csprogs.dat
 
 .PHONY: clean
 clean:
-       rm -f ../progs.dat ../menu.dat ../csprogs.dat
-       rm -f tmp/*.qc tmp/*.d tmp/*.txt
+       rm -f $(PROGS_OUT)/{csprogs,progs,menu}.dat
+       rm -f ../.tmp/*.{qc,d,txt}
 
 $(QCCVERSIONFILE):
        $(RM) qccversion.*
        echo This file intentionally left blank. > $@
 
-../csprogs.dat: client/progs.inc $(QCCVERSIONFILE)
-       $(CC) -xc -I. $(QCCDEFS) -DCSQC -E -MMD -MP -MT $@ -Wall -Wundef -Werror -CC -o tmp/client.qc $<
-       @$(CC) -xc -I. $(QCCDEFS) -DCSQC -E -dM 1>tmp/client_macros.txt -H 2>tmp/client_includes.txt $<
-       @sed -i 's/^# \([[:digit:]]\+\) "\(.*\)".*/\n#pragma file(\2)\n#pragma line(\1)/g' tmp/client.qc
+export QCC
+export CPP
+export QCCDEFS
+export QCCFLAGS
+
+$(PROGS_OUT)/csprogs.dat: client/progs.inc $(QCCVERSIONFILE)
        @echo make[1]: Entering directory \`$(PWD)/client\'
-       cd client && $(QCC) $(QCCFLAGS) -o ../$@ ../tmp/client.qc
--include tmp/client.d
+       sh ./qcc.sh client $@ $<
+-include ../.tmp/client.d
 
-../progs.dat: server/progs.inc $(QCCVERSIONFILE)
-       $(CC) -xc -I. $(QCCDEFS) -DSVQC -E -MMD -MP -MT $@ -Wall -Wundef -Werror -CC -o tmp/server.qc $<
-       @$(CC) -xc -I. $(QCCDEFS) -DSVQC -E -dM 1>tmp/server_macros.txt -H 2>tmp/server_includes.txt $<
-       @sed -i 's/^# \([[:digit:]]\+\) "\(.*\)".*/\n#pragma file(\2)\n#pragma line(\1)/g' tmp/server.qc
+$(PROGS_OUT)/progs.dat: server/progs.inc $(QCCVERSIONFILE)
        @echo make[1]: Entering directory \`$(PWD)/server\'
-       cd server && $(QCC) $(QCCFLAGS) -o ../$@ ../tmp/server.qc
--include tmp/server.d
+       sh ./qcc.sh server $@ $<
+-include ../.tmp/server.d
 
-../menu.dat: menu/progs.inc $(QCCVERSIONFILE)
-       $(CC) -xc -I. $(QCCDEFS) -DMENUQC -E -MMD -MP -MT $@ -Wall -Wundef -Werror -CC -o tmp/menu.qc $<
-       @$(CC) -xc -I. $(QCCDEFS) -DMENUQC -E -dM 1>tmp/menu_macros.txt -H 2>tmp/menu_includes.txt $<
-       @sed -i 's/^# \([[:digit:]]\+\) "\(.*\)".*/\n#pragma file(\2)\n#pragma line(\1)/g' tmp/menu.qc
+$(PROGS_OUT)/menu.dat: menu/progs.inc $(QCCVERSIONFILE)
        @echo make[1]: Entering directory \`$(PWD)/menu\'
-       cd menu && $(QCC) $(QCCFLAGS) -o ../$@ ../tmp/menu.qc
--include tmp/menu.d
+       sh ./qcc.sh menu $@ $<
+-include ../.tmp/menu.d
 
 .PHONY: testcase
 testcase: