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