early-access version 2853
This commit is contained in:
104
externals/vcpkg/scripts/buildsystems/make_wrapper/cl_cpp_wrapper
vendored
Executable file
104
externals/vcpkg/scripts/buildsystems/make_wrapper/cl_cpp_wrapper
vendored
Executable file
@@ -0,0 +1,104 @@
|
||||
#!/usr/bin/bash
|
||||
# cl_cpp_wrapper
|
||||
# Wrapper around MS's cl.exe to make it act more like Unix cpp
|
||||
|
||||
PATH="$PATH:/usr/bin"
|
||||
|
||||
case $MACHTYPE in
|
||||
*-msys)
|
||||
slash="-"
|
||||
;;
|
||||
*)
|
||||
slash="/"
|
||||
;;
|
||||
esac
|
||||
|
||||
# prog specifies the program that should be run cl.exe
|
||||
prog=cl.exe
|
||||
debug=
|
||||
cppopt=("${slash}nologo")
|
||||
cppopt+=("${slash}E")
|
||||
verbose=
|
||||
shared_index=-1
|
||||
|
||||
processargs()
|
||||
{
|
||||
### Run through every option and convert it to the proper MS one
|
||||
while test $# -gt 0; do
|
||||
case "$1" in
|
||||
-D*) optarg= ;;
|
||||
-*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
|
||||
*) optarg= ;;
|
||||
esac
|
||||
gotparam=1
|
||||
case "$1" in
|
||||
--help)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
--verbose)
|
||||
verbose=1
|
||||
;;
|
||||
-*)
|
||||
# Remaining '-' options are passed to the compiler
|
||||
if test x$optarg != x ; then
|
||||
cppopt+=("${slash}${1:1}=$optarg")
|
||||
else
|
||||
cppopt+=("${slash}${1:1}")
|
||||
fi
|
||||
;;
|
||||
|
||||
/*)
|
||||
# All '/' options are assumed to be for cpp and are passed through
|
||||
cppopt+=("${slash}${1:1}")
|
||||
;;
|
||||
|
||||
*)
|
||||
file=$1
|
||||
#cppopt+=("$1")
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
}
|
||||
|
||||
# Whitespace in paths is dealt with by setting IFS and using bash arrays
|
||||
|
||||
# processargs $CPP_FLAGS
|
||||
IFS=""
|
||||
processargs $@
|
||||
|
||||
if test x$V = x1 ; then
|
||||
verbose=1
|
||||
fi
|
||||
|
||||
if test -n "$verbose" ; then
|
||||
echo -n "$prog"
|
||||
for opt in "${cppopt[@]}" ; do
|
||||
echo -n " \"$opt\""
|
||||
done
|
||||
echo ""
|
||||
fi
|
||||
|
||||
[ $# -ge 1 -a -f "$1" ] && input="$file" || input="-"
|
||||
|
||||
input_file="${file:-/proc/self/fd/0}"
|
||||
if [ "$input_file" == "/proc/self/fd/0" ]; then
|
||||
#echo "STDIN"
|
||||
# CL does not support reading from STDIN so it is wrapped here.
|
||||
tmpout=cpp_wrapper_$RANDOM.h
|
||||
/usr/bin/cp $input_file $tmpout
|
||||
# from https://stackoverflow.com/questions/36313562/how-to-redirect-stdin-to-file-in-bash
|
||||
#exec 3> cppstdtmp.h
|
||||
#while IFS= read -r line; do
|
||||
# printf '%s' "$line"
|
||||
#done
|
||||
#exec 3<&-
|
||||
#echo "$(</dev/stdin)" > cppstdtmp.h
|
||||
exec $prog ${cppopt[@]} $tmpout
|
||||
rm -f $tmpout
|
||||
else
|
||||
#echo "FILE"
|
||||
exec $prog ${cppopt[@]} $input_file
|
||||
fi
|
||||
|
Reference in New Issue
Block a user