]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/tools/compilationunits.sh
Merge branch 'master' into TimePath/scoreboard_elo
[xonotic/xonotic-data.pk3dir.git] / qcsrc / tools / compilationunits.sh
1 #!/usr/bin/env bash
2 set -eu
3 cd ${0%/*}
4
5 WORKDIR=../.tmp
6
7 CPP="cc -xc -E"
8 : ${QCC:=$PWD/../../../../gmqcc/gmqcc}
9
10 declare -a QCCDEFS=(
11     -DNDEBUG=1
12     -DXONOTIC=1
13     -DWATERMARK="\"$(git describe --tags --dirty='~')\""
14     -DDEBUGPATHING=0
15 )
16 QCCDEFS="${QCCDEFS[@]}"
17
18 declare -a QCCFLAGS=(
19     -std=gmqcc
20     -Wall -Werror
21     -futf8
22     -freturn-assignments
23     -frelaxed-switch
24     -Ooverlap-locals
25 )
26 declare -a NOWARN=(
27     -Wno-field-redeclared
28     -Wno-unused-variable
29     -Wno-implicit-function-pointer
30     -Wno-missing-return-values
31 )
32 QCCFLAGS="${QCCFLAGS[@]} ${NOWARN[@]}"
33
34 . qcc.sh
35 cd ..
36
37 function check1() {
38     declare -l base="${1}"
39     MODE=${2}
40     declare -l file="${3}"
41     qpp ${file} test.dat \
42             -include lib/_all.inc -include ${base}/_all.qh \
43             -I. ${QCCIDENT} ${QCCDEFS} -D${MODE} > ${WORKDIR}/${MODE}.qc
44     qcc ${QCCFLAGS} -o ../${WORKDIR}/test.dat ../${WORKDIR}/${MODE}.qc >/dev/null
45 }
46
47 function check() {
48     declare -l base="${1}"
49     MODE=${2}
50     find ${base} -type f -name '*.qc' -print0 | sort -z | while read -r -d '' file; do
51         check1 ${base} ${MODE} ${file}
52     done
53 }
54
55 check client CSQC
56 check server SVQC
57 check menu MENUQC