]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/tools/qcc.sh
Optimize vehicle impact code by only calling vlen() if damage would be taken
[xonotic/xonotic-data.pk3dir.git] / qcsrc / tools / qcc.sh
index 9951ec2fd7837645d812c9bc56e449dde0a05cdb..865e6e592ca48c037932fa643ec80e9dd1b20f83 100755 (executable)
@@ -20,31 +20,40 @@ function qpp() {
         server) DEFS="-DGAMEQC -DSVQC"
         ;;
     esac
-    >&2 echo + ${CPP} ${@:3} ${DEFS} ${IN}
+    >&2 echo + ${CPP} "${@:3}" ${DEFS} "${IN}"
     set +e
     # additional information
-    ${CPP} ${@:3} ${DEFS} \
-        -dM 1>${WORKDIR}/${MODE}_macros.txt \
-        -H 2>${WORKDIR}/${MODE}_includes.txt \
-        ${IN}
+    ${CPP} "${@:3}" ${DEFS} \
+        -dM 1>"${WORKDIR}/${MODE}_macros.txt" \
+        -H 2>"${WORKDIR}/${MODE}_includes.txt" \
+        "${IN}"
     # main step
-    ${CPP} ${@:3} ${DEFS} -MMD -MP -MT ${OUT} -Wall -Wundef -Werror ${IN} -o ${WORKDIR}/${MODE}.txt
+    ${CPP} "${@:3}" ${DEFS} -MMD -MP -MT "${OUT}" -Wall -Wundef -Werror "${IN}" -o "${WORKDIR}/${MODE}.txt"
     err=$?
     set -e
     if [ ${err} -ne 0 ]; then return ${err}; fi
-    sed 's/^#\(line\)\? \([[:digit:]]\+\) "\(.*\)".*/\n#pragma file(\3)\n#pragma line(\2)/g' ${WORKDIR}/${MODE}.txt
+    sed -E 's/^#(line)? ([[:digit:]]+) "(.*)".*/'$'\\\n''#pragma file(\3)'$'\\\n''#pragma line(\2)/g' "${WORKDIR}/${MODE}.txt"
 }
 
 function qcc() {
     >&2 echo + $(basename ${QCC}) $@
     # FIXME: relative compiler path is too deep
-    (cd tools && ${QCC} $@)
+    (cd tools && ${QCC} "$@")
 }
 
 $(return >/dev/null 2>&1) || {
     MODE=$1
     OUT=$2
     IN=$3
-    qpp ${IN} ${OUT} -I. ${QCCIDENT} ${QCCDEFS} > ${WORKDIR}/${MODE}.qc
-    qcc ${QCCFLAGS} -o ${OUT} ../${WORKDIR}/${MODE}.qc
+    case "${OUT}" in
+      /*)
+        OUT_ABSOLUTE=${OUT}
+        ;;
+      *)
+        OUT_ABSOLUTE=${PWD}/${OUT}
+        ;;
+    esac
+    set -x
+    qpp "${IN}" "${OUT}" -I. ${QCCIDENT} ${QCCDEFS} > "${WORKDIR}/${MODE}.qc"
+    qcc ${QCCFLAGS} -o "${OUT_ABSOLUTE}" "../${WORKDIR}/${MODE}.qc"
 }