]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Makefile: factor out qcc
authorTimePath <andrew.hardaker1995@gmail.com>
Thu, 31 Dec 2015 13:22:37 +0000 (00:22 +1100)
committerTimePath <andrew.hardaker1995@gmail.com>
Thu, 31 Dec 2015 13:22:37 +0000 (00:22 +1100)
qcsrc/Makefile
qcsrc/qcc.sh [new file with mode: 0755]

index ac418a5fae9a7df4290b8a5823e24b5394186bd7..a0848a1851305ee8a501ecc85eb0087f5160df72 100644 (file)
@@ -1,8 +1,7 @@
 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)
 QCC ?= gmqcc
-QCCDEFS_EXTRA ?= -DGMQCC
 NDEBUG ?= 1
 BUILD_MOD ?= 0
 
@@ -13,7 +12,7 @@ QCCFLAGS_WTFS ?= \
        -Wno-field-redeclared
 
 QCCDEFS ?= \
-       $(QCCFLAGS_WATERMARK) \
+       -DWATERMARK="$(QCCFLAGS_WATERMARK)" \
        -DNDEBUG=$(NDEBUG) \
        -DBUILD_MOD=$(BUILD_MOD) \
        $(QCCDEFS_EXTRA)
@@ -47,28 +46,24 @@ $(QCCVERSIONFILE):
        $(RM) qccversion.*
        echo This file intentionally left blank. > $@
 
+export QCC
+export CPP
+export QCCDEFS
+export QCCFLAGS
+
 ../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
        @echo make[1]: Entering directory \`$(PWD)/client\'
-       cd client && $(QCC) $(QCCFLAGS) -o ../$@ ../tmp/client.qc
+       ./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
        @echo make[1]: Entering directory \`$(PWD)/server\'
-       cd server && $(QCC) $(QCCFLAGS) -o ../$@ ../tmp/server.qc
+       ./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
        @echo make[1]: Entering directory \`$(PWD)/menu\'
-       cd menu && $(QCC) $(QCCFLAGS) -o ../$@ ../tmp/menu.qc
+       ./qcc.sh menu $@ $<
 -include tmp/menu.d
 
 .PHONY: testcase
diff --git a/qcsrc/qcc.sh b/qcsrc/qcc.sh
new file mode 100755 (executable)
index 0000000..f0a734a
--- /dev/null
@@ -0,0 +1,26 @@
+#!/bin/sh
+set -eu
+
+MODE=$1
+IN=$3
+OUT=$2
+
+QCC=${QCC}
+QCCIDENT="-DGMQCC"
+
+case ${MODE} in
+    client) PROG=CSQC
+    ;;
+    menu) PROG=MENUQC
+    ;;
+    server) PROG=SVQC
+    ;;
+esac
+
+CPP="${CPP} -I. ${QCCIDENT} ${QCCDEFS} -D${PROG}"
+set -x
+${CPP} -CC -MMD -MP -MT ${OUT} -Wall -Wundef -Werror -o tmp/${MODE}.qc ${IN}
+${CPP} -dM 1>tmp/${MODE}_macros.txt -H 2>tmp/${MODE}_includes.txt ${IN}
+sed -i 's/^#\(line\)\? \([[:digit:]]\+\) "\(.*\)".*/\n#pragma file(\3)\n#pragma line(\2)/g' tmp/${MODE}.qc
+cd ${MODE}
+${QCC} ${QCCFLAGS} -o ../${OUT} ../tmp/${MODE}.qc