#!/usr/bin/env bash # tests various --opt= switches: # # -Dd= # -Df= # -Hd= # -Hf= # -I= # -J= # -L= # -od= # -of= # -Xf= src_file=${OUTPUT_BASE}/src.d src_file_in_pkg=${OUTPUT_BASE}/pkg/src.d clean() { rm_retry -r ${OUTPUT_BASE} } prepare() { clean; mkdir -p ${OUTPUT_BASE} echo "module mymod;" > ${OUTPUT_BASE}/mymod.d echo "module src; import mymod;" > ${src_file} mkdir ${OUTPUT_BASE}/pkg echo "module pkg.src;" > ${src_file_in_pkg} } die() { echo "test_switches.sh error: Output file $1 not found" exit 1 } checkFile() { if [ ! -f $1 ]; then die $1; fi } checkFiles() { checkFile ${OUTPUT_BASE}/json.json checkFile ${OUTPUT_BASE}/mymod.d checkFile ${OUTPUT_BASE}/src.d checkFile ${OUTPUT_BASE}/src.di checkFile ${OUTPUT_BASE}/src.html } # @BUG@: -Df doesn't take -Dd into account when it's set # @BUG@: -Hf doesn't take -Hd into account when it's set # Workaround: Call DMD twice, first with -Df / -Hf, then with -Dh and -Hd # Note: -L linker flag not explicitly checked (using -c to compile only) # as there's no common linker switch which all linkers support prepare; $DMD -o- -od=${OUTPUT_BASE} -D -Df=${OUTPUT_BASE}/src.html -Hf=${OUTPUT_BASE}/src.di -I=${OUTPUT_BASE} -L=-v -Xf=${OUTPUT_BASE}/json.json ${src_file} checkFiles; prepare; $DMD -o- -oq -od=${OUTPUT_BASE} -D -Dd=${OUTPUT_BASE} -Hd=${OUTPUT_BASE} -I=${OUTPUT_BASE} -L=-v -Xf=${OUTPUT_BASE}/json.json ${src_file} ${src_file_in_pkg} checkFiles; checkFile ${OUTPUT_BASE}/pkg.src.di checkFile ${OUTPUT_BASE}/pkg.src.html clean;