]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/tools/compilationunits.sh
8543f8c861244934b6b4af4277a80d9ad1ebeace
[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     -DENABLE_EFFECTINFO=0
15     -DENABLE_DEBUGDRAW=0
16     -DENABLE_DEBUGTRACE=0
17 )
18 QCCDEFS="${QCCDEFS[@]}"
19
20 declare -a QCCFLAGS=(
21     -std=gmqcc
22     -Wall -Werror
23     -futf8
24     -freturn-assignments
25     -frelaxed-switch
26     -Ooverlap-locals
27 )
28 declare -a NOWARN=(
29     -Wno-field-redeclared
30     -Wno-unused-variable
31     -Wno-implicit-function-pointer
32     -Wno-missing-return-values
33 )
34 QCCFLAGS="${QCCFLAGS[@]} ${NOWARN[@]}"
35
36 . qcc.sh
37 cd ..
38
39 function check1() {
40     declare -l prog="${1}"
41     declare -l file="${2}"
42     MODE=${prog}
43     qpp ${file} test.dat \
44             -include lib/_all.inc -include ${prog}/_all.qh \
45             -I. ${QCCIDENT} ${QCCDEFS} > ${WORKDIR}/${prog}.qc
46     qcc ${QCCFLAGS} -o ../${WORKDIR}/test.dat ../${WORKDIR}/${prog}.qc >/dev/null
47 }
48
49 function check() {
50     declare -l prog="${1}"
51     find ${prog} -type f -name '*.qc' -print0 | sort -z | while read -r -d '' file; do
52         check1 ${prog} ${file}
53     done
54 }
55
56 check client
57 check server
58 check menu