mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 13:10:12 +03:00
70 lines
1.6 KiB
Bash
Executable file
70 lines
1.6 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
# tests various --opt=<value> switches:
|
|
#
|
|
# -Dd=<directory>
|
|
# -Df=<filename>
|
|
# -Hd=<directory>
|
|
# -Hf=<filename>
|
|
# -I=<directory>
|
|
# -J=<directory>
|
|
# -L=<linkerflag>
|
|
# -od=<dirname>
|
|
# -of=<objname>
|
|
# -Xf=<filename>
|
|
|
|
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;
|