function qpp() {
IN=$1
OUT=$2
- >&2 echo + ${CPP} ${@:3} ${IN}
+ case ${MODE} in
+ client) DEFS="-DGAMEQC -DCSQC"
+ ;;
+ menu) DEFS="-DMENUQC"
+ ;;
+ server) DEFS="-DGAMEQC -DSVQC"
+ ;;
+ esac
+ #>&2 echo + ${CPP} "${@:3}" ${DEFS} "${IN}"
set +e
# additional information
- ${CPP} ${@:3} \
- -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} -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}) $@
+ #>&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
-
- case ${MODE} in
- client) PROG=CSQC
+ case "${OUT}" in
+ /*)
+ OUT_ABSOLUTE=${OUT}
;;
- menu) PROG=MENUQC
- ;;
- server) PROG=SVQC
+ *)
+ OUT_ABSOLUTE=${PWD}/${OUT}
;;
esac
-
- qpp ${IN} ${OUT} -I. ${QCCIDENT} ${QCCDEFS} -D${PROG} > ${WORKDIR}/${MODE}.qc
- qcc ${QCCFLAGS} -o ${OUT} ../${WORKDIR}/${MODE}.qc
+ set -x
+ qpp "${IN}" "${OUT}" -I. ${QCCIDENT} ${QCCDEFS} > "${WORKDIR}/${MODE}.qc"
+ qcc ${QCCFLAGS} -o "${OUT_ABSOLUTE}" "../${WORKDIR}/${MODE}.qc"
}