blob: 9e478ae9a84e56e62c3ca22e32d90e68f6f6bb4f [file] [log] [blame] [raw]
#!/bin/sh
[ "$1" = --version ] && WINEDEBUG=-all exec cl12 2>&1
output_assembly_file=
output_object_file=
output_executable_file=
flags=
set -e
if [ "$ONLY_STAGE" != E ]; then
output_object_file="`mktemp -t cl.XXXXXXXX.o`"
trap 'rm -f "$output_object_file"' EXIT
fi
case "$ONLY_STAGE" in
E)
flags=-E
;;
S)
flags=-c
output_assembly_file="`mktemp -t cl.XXXXXXXX.s`"
trap 'rm -f "$output_assembly_file" "$output_object_file"' EXIT
#ln -sf /dev/stdout "$output_assembly_file"
ln -sf /dev/null "$output_object_file"
;;
c)
flags=-c
#ln -sf /dev/stdout "$output_object_file"
;;
"")
output_executable_file="`mktemp -t cl.XXXXXXXX.exe`"
trap 'rm -f "$output_object_file" "$output_executable_file"' EXIT
#ln -sf /dev/stdout "$output_executable_file"
;;
esac
[ -n "$DEBUG" ] && flags="$flags -Zi"
[ -n "$OPTIMIZATION" ] && flags="$flags -O$OPTIMIZATION"
for d in $DEFINE; do flags="-D $d $flags"; done
for d in $UNDEFINE; do flags="-U $d $flags"; done
[ -z "$VERBOSE" ] && flags="-nologo $flags"
input_file="`mktemp -t cl.XXXXXXXX.cpp`" || exit
if ! cat > "$input_file"; then
rm -f "$input_file"
exit 1
fi
[ -n "$output_assembly_file" ] && flags="$flags -Faz:$output_assembly_file"
[ -n "$output_object_file" ] && flags="$flags -Foz:$output_object_file"
[ -n "$output_executable_file" ] && flags="$flags -Fez:$output_executable_file"
[ -n "$TMPDIR" ] && cd "$TMPDIR" || cd /tmp || exit
set +e
/usr/local/bin/cl12 -W4 $flags "$@" "-Tp$input_file" 1>&2
r=$?
rm -f "$input_file"
if [ $r = 0 ]; then case "$ONLY_STAGE" in
S)
cat "$output_assembly_file"
;;
c)
cat "$output_object_file"
;;
"")
cat "$output_executable_file"
;;
esac fi
exit $r