@@ -74,9 +74,9 @@ find_in ()
7474 if [[ -z $1 ]] ; then
7575 STATUS=1
7676 else
77- IFS=*
77+ IFS=' * '
7878 STATUS=1
79- for f in $1 ; do
79+ for f in $1 ; do
8080 if [[ -e " $f /$2 " ]] ; then
8181 STATUS=0
8282 break
@@ -140,7 +140,7 @@ check_environment ()
140140 ASSEMBLER=${ASSEMBLER% 86} .exe
141141 if [[ $ML_REQUIRED -eq 1 ]] ; then
142142 RET=0
143- find_in " $1 " $ASSEMBLER
143+ find_in " $1 " " $ASSEMBLER "
144144 if [[ $RET -gt 0 ]] ; then
145145 warning " Microsoft Assembler ($ASSEMBLER ) not found - $4 ($5 )"
146146 return 1
@@ -164,7 +164,7 @@ check_environment ()
164164# value (i.e. no change) is output.
165165output ()
166166{
167- if [[ $3 = $ENV_ARCH ]] ; then
167+ if [[ $3 = " $ENV_ARCH " ]] ; then
168168 VALUE=
169169 else
170170 VALUE=$2
@@ -574,7 +574,7 @@ if [[ $SCAN_ENV -eq 1 ]] ; then
574574 ENV_cl=${ENV_CL,,}
575575 ENV_cl=${ENV_cl/ bin\/ * _/ bin\/ }
576576 debug " Environment appears to include a compiler at $ENV_CL "
577- if [[ -n $TARGET_ARCH && $TARGET_ARCH != $ENV_ARCH ]] ; then
577+ if [[ -n $TARGET_ARCH && $TARGET_ARCH != " $ENV_ARCH " ]] ; then
578578 debug " But architecture doesn't match required value"
579579 unset ENV_ARCH
580580 fi
@@ -608,15 +608,15 @@ declare -A COMPILER
608608
609609# Scan the registry for compiler package (vswhere is later)
610610for i in " ${! COMPILERS[@]} " ; do
611- eval COMPILER=${COMPILERS[$i]}
611+ eval COMPILER=" ${COMPILERS[$i]} "
612612
613613 if [[ -n ${COMPILER["ENV"]+x} ]] ; then
614614 # Visual Studio package - test for its environment variable
615615 ENV=VS${COMPILER["ENV"]} COMNTOOLS
616616 if [[ -n ${! ENV+x} ]] ; then
617617 debug " $ENV is a candidate"
618618 TEST_PATH=${! ENV% \" }
619- TEST_PATH=$( cygpath -u -f - <<< ${TEST_PATH# \" } )
619+ TEST_PATH=$( cygpath -u -f - <<< " ${TEST_PATH#\\\ " } " )
620620 if [[ -e $TEST_PATH /vsvars32.bat ]] ; then
621621 debug " Directory pointed to by $ENV contains vsvars32.bat"
622622 EXPRESS=0
@@ -690,7 +690,7 @@ for i in $(reg query "$SDK_ROOT" 2>/dev/null | tr -d '\r' | sed -ne '/Windows\\v
690690 warning "SDK $i is not known to this script - assuming compatibility"
691691 DISPLAY="Windows SDK $i"
692692 else
693- eval COMPILER=${COMPILERS[" SDK${i#v}"]}
693+ eval COMPILER=" ${COMPILERS[SDK${i#v}]}"
694694 DISPLAY=${COMPILER[' NAME' ]}
695695 fi
696696 RESULT=${COMPILERS[' SDK' ]%)}
@@ -706,10 +706,10 @@ for i in $(reg query "$SDK_ROOT" 2>/dev/null | tr -d '\r' | sed -ne '/Windows\\v
706706done
707707
708708# Now enumerate Visual Studio 2017+ instances
709- VSWHERE=$( dirname $( realpath $0 ) ) /vswhere.exe
709+ VSWHERE=$( dirname " $( realpath " $0 " ) " ) /vswhere.exe
710710if [[ ! -x $VSWHERE ]] ; then
711711 VSWHERE=" $( printenv ' ProgramFiles(x86)' ) \\ Microsoft Visual Studio\\ Installer\\ vswhere.exe"
712- VSWHERE=$( echo $VSWHERE | cygpath -f -)
712+ VSWHERE=$( echo " $VSWHERE " | cygpath -f -)
713713fi
714714if [[ -x $VSWHERE ]] ; then
715715 debug " $VSWHERE found"
@@ -726,7 +726,7 @@ if [[ -x $VSWHERE ]] ; then
726726 displayName)
727727 INSTANCE_NAME=${line#*: }
728728 debug " Looking at $INSTANCE in $INSTANCE_PATH ($INSTANCE_VER $INSTANCE_NAME )"
729- if [[ -e " $( echo $INSTANCE_PATH | cygpath -f -) /VC/Auxiliary/Build/vcvarsall.bat" ]] ; then
729+ if [[ -e " $( echo " $INSTANCE_PATH " | cygpath -f -) /VC/Auxiliary/Build/vcvarsall.bat" ]] ; then
730730 debug " vcvarsall.bat found"
731731 FOUND+=([" VS$INSTANCE_VER " ]=" ([\" DISPLAY\" ]=\" $INSTANCE_NAME \" [\" ARCH\" ]=\" x86 x64\" [\" SETENV\" ]=\" $INSTANCE_PATH \\ VC\\ Auxiliary\\ Build\\ vcvarsall.bat\" [\" SETENV_RELEASE\" ]=\"\" )" )
732732 else
@@ -779,14 +779,14 @@ for i in $MSVS_PREFERENCE ; do
779779 else
780780 if [[ -n ${COMPILERS[$i]+x} || -n ${COMPILERS[${i%.*}.*]+x} ]] ; then
781781 if [[ -n ${CANDIDATES[$i]+x} ]] ; then
782- unset CANDIDATES[$i ]
783- TEST+=($i )
784- PREFERENCE+=($i )
782+ unset " CANDIDATES[$i ]"
783+ TEST+=(" $i " )
784+ PREFERENCE+=(" $i " )
785785 elif [[ ${i#* .} = " * " ]] ; then
786786 INSTANCES=
787787 for j in " ${! CANDIDATES[@]} " ; do
788- if [[ " ${j% .* } .*" = $i ]] ; then
789- unset CANDIDATES[$j ]
788+ if [[ " ${j% .* } .* " = " $i " ]] ; then
789+ unset " CANDIDATES[$j ]"
790790 INSTANCES=" $INSTANCES $j "
791791 fi
792792 done
@@ -802,10 +802,10 @@ for i in $MSVS_PREFERENCE ; do
802802 fi
803803 SDKS=
804804 for j in " ${! COMPILERS[@]} " ; do
805- eval COMPILER=${COMPILERS[$j]}
805+ eval COMPILER=" ${COMPILERS[$j]} "
806806 if [[ -n ${COMPILER["VC_VER"]} +x ]] ; then
807- if [[ $i = ${COMPILER[" VC_VER"]} && -n ${CANDIDATES[$j]+x} ]] ; then
808- unset CANDIDATES[$j ]
807+ if [[ $i = " ${COMPILER[VC_VER]} " && -n ${CANDIDATES[$j]+x} ]] ; then
808+ unset CANDIDATES[" $j " ]
809809 SDKS=" $j $SDKS "
810810 fi
811811 fi
823823# them from FOUND so that they don't accidentally get reported on later.
824824for i in " ${! CANDIDATES[@]} " ; do
825825 if [[ $PREFER_ENV -eq 1 ]] ; then
826- TEST+=($i )
826+ TEST+=(" $i " )
827827 else
828- unset FOUND[$i ]
828+ unset " FOUND[$i ]"
829829 fi
830830done
831831
@@ -856,16 +856,16 @@ declare -A ARCHINFO
856856
857857for i in " ${TEST[@]} " ; do
858858 CURRENT=${FOUND[$i]}
859- eval COMPILER=$CURRENT
859+ eval COMPILER=" $CURRENT "
860860 # At the end of this process, the keys of FOUND will be augmented with the architecture found in
861861 # each case (so if " VS14.0" was in FOUND from the scan and both the x86 and x64 compilers are
862862 # valid, then at the end of this loop FOUND will contain " VS14.0-x86" and " VS14.0-x64" ).
863- unset FOUND[$i ]
863+ unset " FOUND[$i ]"
864864
865865 if [[ ${COMPILER["IS_EXPRESS"]} 0 -gt 0 && -n ${COMPILER["EXPRESS_ARCH_SWITCHES"]+x} ]] ; then
866- eval ARCHINFO=${COMPILER[" EXPRESS_ARCH_SWITCHES"]}
866+ eval ARCHINFO=" ${COMPILER[EXPRESS_ARCH_SWITCHES]} "
867867 elif [[ -n ${COMPILER["ARCH_SWITCHES"]+x} ]] ; then
868- eval ARCHINFO=${COMPILER[" ARCH_SWITCHES"]}
868+ eval ARCHINFO=" ${COMPILER[ARCH_SWITCHES]} "
869869 else
870870 ARCHINFO=()
871871 fi
@@ -878,10 +878,10 @@ for i in "${TEST[@]}" ; do
878878 ENV=${! ENV% \" }
879879 ENV=${ENV# \" }
880880 if [[ ${COMPILER["ENV"]} 0 -ge 800 ]] ; then
881- SCRIPT=" $( cygpath -d -f - <<< $ENV ) \\ ..\\ ..\\ VC\\ vcvarsall.bat"
881+ SCRIPT=" $( cygpath -d -f - <<< " $ENV" ) \\ ..\\ ..\\ VC\\ vcvarsall.bat"
882882 SCRIPT_SWITCHES=
883883 else
884- SCRIPT=" $( cygpath -d -f - <<< $ENV ) \\ vsvars32.bat"
884+ SCRIPT=" $( cygpath -d -f - <<< " $ENV" ) \\ vsvars32.bat"
885885 SCRIPT_SWITCHES=
886886 fi
887887 else
@@ -937,7 +937,7 @@ for i in "${TEST[@]}" ; do
937937 EXEC_SCRIPT=" $( basename " $SCRIPT " ) $ARCH_SWITCHES $SCRIPT_SWITCHES " \
938938 $( cygpath " $COMSPEC " ) ${SWITCH_PREFIX} v:on ${SWITCH_PREFIX} c $COMMAND 2>/dev/null | fgrep XMARKER -A 3 | tr -d '\015' | tail -3)
939939 if [[ $DEBUG -gt 3 ]] ; then
940- echo done>&2
940+ echo ' done' >&2
941941 fi
942942
943943 if [[ -n $MSVS_PATH ]] ; then
@@ -959,13 +959,13 @@ for i in "${TEST[@]}" ; do
959959 if [[ ${i/ .*/ } = " VS7" ]] ; then
960960 find_in " ${MSVS_PATH//:/* } " mt.exe
961961 if [[ $RET -eq 1 ]] ; then
962- MSVS_PATH=" $MSVS_PATH $( cygpath -u -f - <<< $ENV \\ Bin\\ winnt) :"
962+ MSVS_PATH=" $MSVS_PATH $( cygpath -u -f - <<< " $ENV" \\ Bin\\ winnt) :"
963963 RET=0
964964 fi
965965 fi
966966
967967 # Ensure that these derived values give a valid compiler.
968- if check_environment " ${MSVS_PATH//:/* } " " ${MSVS_INC// ;/* } " " ${MSVS_LIB// ;/* } " " $i " $arch ; then
968+ if check_environment " ${MSVS_PATH//:/* } " " ${MSVS_INC// ;/* } " " ${MSVS_LIB// ;/* } " " $i " " $arch " ; then
969969 # Put the package back into FOUND, but augmented with the architecture name and with the
970970 # derived values.
971971 FOUND[" $i -$arch " ]=" ${CURRENT% )} [\" MSVS_PATH\" ]=\" $MSVS_PATH \" \
@@ -978,7 +978,7 @@ for i in "${TEST[@]}" ; do
978978 TEST_cl=$( PATH=" $MSVS_PATH :$PATH " " $WHICH " cl)
979979 TEST_cl=${TEST_cl,,}
980980 TEST_cl=${TEST_cl/ bin\/ * _/ bin\/ }
981- if [[ $TEST_cl = $ENV_cl ]] ; then
981+ if [[ $TEST_cl = " $ENV_cl " ]] ; then
982982 if [[ ${! ENV_INC/ " $MSVS_INC " / } != " ${! ENV_INC} " && \
983983 ${! ENV_LIB/ " $MSVS_LIB " / } != " ${! ENV_LIB} " ]] ; then
984984 debug " $i -$arch is a strong candidate for the Environment C compiler"
@@ -1011,7 +1011,7 @@ for i in "${TEST[@]}" ; do
10111011 # Does this package match the current preference? Note that PREFERENCE and TEST are constructed in
10121012 # a cunning (and hopefully not too "You are not expected to understand this" way) such that $PREF
10131013 # will always equal $i, unless $PREF = "@".
1014- if [[ $PREF = $i ]] ; then
1014+ if [[ $PREF = " $i " ]] ; then
10151015 # In which case, check that the architecture(s)s were found
10161016 if [[ -n ${FOUND["$i-$LEFT_ARCH"]+x} && -n ${FOUND["$i-$RIGHT_ARCH"]+x} ]] ; then
10171017 debug " Solved TARGET_ARCH=$TARGET_ARCH with $i "
@@ -1082,7 +1082,7 @@ if [[ $MODE -eq 1 ]] ; then
10821082fi
10831083
10841084if [[ -n $SOLUTION ]] ; then
1085- eval COMPILER=${FOUND[$SOLUTION-$LEFT_ARCH]}
1085+ eval COMPILER=" ${FOUND[$SOLUTION-$LEFT_ARCH]} "
10861086 output MSVS_NAME " ${COMPILER["DISPLAY"]} " $LEFT_ARCH
10871087 output MSVS_PATH " ${COMPILER["MSVS_PATH"]} " $LEFT_ARCH
10881088 output MSVS_INC " ${COMPILER["MSVS_INC"]} " $LEFT_ARCH
@@ -1091,7 +1091,7 @@ if [[ -n $SOLUTION ]] ; then
10911091 output MSVS_ML " ${COMPILER["ASSEMBLER"]% .exe} " always
10921092 fi
10931093 if [[ -z $TARGET_ARCH ]] ; then
1094- eval COMPILER=${FOUND[$SOLUTION-$RIGHT_ARCH]}
1094+ eval COMPILER=" ${FOUND[$SOLUTION-$RIGHT_ARCH]} "
10951095 output MSVS64_PATH " ${COMPILER["MSVS_PATH"]} " $RIGHT_ARCH
10961096 output MSVS64_INC " ${COMPILER["MSVS_INC"]} " $RIGHT_ARCH
10971097 output MSVS64_LIB " ${COMPILER["MSVS_LIB"]} " $RIGHT_ARCH
@@ -1103,4 +1103,3 @@ if [[ -n $SOLUTION ]] ; then
11031103else
11041104 exit 1
11051105fi
1106-
0 commit comments