@@ -918,14 +918,18 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_BUILD_COMPILERS],
918918 . $CONFIGURESUPPORT_OUTPUTDIR/build-devkit.info
919919 # This potentially sets the following:
920920 # A descriptive name of the devkit
921- BASIC_EVAL_DEVKIT_VARIABLE ([ BUILD_DEVKIT_NAME] )
921+ BASIC_EVAL_BUILD_DEVKIT_VARIABLE ([ BUILD_DEVKIT_NAME] )
922922 # Corresponds to --with-extra-path
923- BASIC_EVAL_DEVKIT_VARIABLE ([ BUILD_DEVKIT_EXTRA_PATH] )
923+ BASIC_EVAL_BUILD_DEVKIT_VARIABLE ([ BUILD_DEVKIT_EXTRA_PATH] )
924924 # Corresponds to --with-toolchain-path
925- BASIC_EVAL_DEVKIT_VARIABLE ([ BUILD_DEVKIT_TOOLCHAIN_PATH] )
925+ BASIC_EVAL_BUILD_DEVKIT_VARIABLE ([ BUILD_DEVKIT_TOOLCHAIN_PATH] )
926926 # Corresponds to --with-sysroot
927- BASIC_EVAL_DEVKIT_VARIABLE([ BUILD_DEVKIT_SYSROOT] )
928- # Skip the Window specific parts
927+ BASIC_EVAL_BUILD_DEVKIT_VARIABLE([ BUILD_DEVKIT_SYSROOT] )
928+
929+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
930+ BASIC_EVAL_BUILD_DEVKIT_VARIABLE([ BUILD_DEVKIT_VS_INCLUDE] )
931+ BASIC_EVAL_BUILD_DEVKIT_VARIABLE([ BUILD_DEVKIT_VS_LIB] )
932+ fi
929933 fi
930934
931935 AC_MSG_CHECKING ( [ for build platform devkit] )
@@ -935,13 +939,22 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_BUILD_COMPILERS],
935939 AC_MSG_RESULT ( [ $BUILD_DEVKIT_ROOT] )
936940 fi
937941
938- BUILD_SYSROOT ="$BUILD_DEVKIT_SYSROOT "
942+ PATH ="$BUILD_DEVKIT_EXTRA_PATH:$PATH "
939943
940- # Fallback default of just /bin if DEVKIT_PATH is not defined
944+ # Fallback default of just /bin if DEVKIT_PATH is not defined
941945 if test "x$BUILD_DEVKIT_TOOLCHAIN_PATH" = x; then
942946 BUILD_DEVKIT_TOOLCHAIN_PATH="$BUILD_DEVKIT_ROOT/bin"
943947 fi
944- PATH="$BUILD_DEVKIT_TOOLCHAIN_PATH:$BUILD_DEVKIT_EXTRA_PATH"
948+ PATH="$BUILD_DEVKIT_TOOLCHAIN_PATH:$PATH"
949+
950+ BUILD_SYSROOT="$BUILD_DEVKIT_SYSROOT"
951+
952+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
953+ BUILD_VS_INCLUDE="$BUILD_DEVKIT_VS_INCLUDE"
954+ BUILD_VS_LIB="$BUILD_DEVKIT_VS_LIB"
955+
956+ TOOLCHAIN_SETUP_VISUAL_STUDIO_SYSROOT_FLAGS([ BUILD_] )
957+ fi
945958 fi
946959 fi
947960
@@ -967,9 +980,37 @@ AC_DEFUN_ONCE([TOOLCHAIN_SETUP_BUILD_COMPILERS],
967980 BASIC_FIXUP_EXECUTABLE(BUILD_STRIP)
968981 # Assume the C compiler is the assembler
969982 BUILD_AS="$BUILD_CC -c"
970- # Just like for the target compiler, use the compiler as linker
971- BUILD_LD="$BUILD_CC"
972- BUILD_LDCXX="$BUILD_CXX"
983+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
984+ # In the Microsoft toolchain we have a separate LD command "link".
985+ # Make sure we reject /usr/bin/link (as determined in CYGWIN_LINK), which is
986+ # a cygwin program for something completely different.
987+ AC_CHECK_PROG ( [ BUILD_LD] , [ link$EXE_SUFFIX] ,[ link$EXE_SUFFIX] ,,, [ $CYGWIN_LINK] )
988+ BASIC_FIXUP_EXECUTABLE(BUILD_LD)
989+ # Verify that we indeed succeeded with this trick.
990+ AC_MSG_CHECKING ( [ if the found link.exe is actually the Visual Studio linker] )
991+
992+ # Reset PATH since it can contain a mix of WSL/linux paths and Windows paths from VS,
993+ # which, in combination with WSLENV, will make the WSL layer complain
994+ old_path="$PATH"
995+ PATH=
996+
997+ "$BUILD_LD" --version > /dev/null
998+
999+ if test $? -eq 0 ; then
1000+ AC_MSG_RESULT ( [ no] )
1001+ AC_MSG_ERROR ( [ This is the Cygwin link tool. Please check your PATH and rerun configure.] )
1002+ else
1003+ AC_MSG_RESULT ( [ yes] )
1004+ fi
1005+
1006+ PATH="$old_path"
1007+
1008+ BUILD_LDCXX="$BUILD_LD"
1009+ else
1010+ # Just like for the target compiler, use the compiler as linker
1011+ BUILD_LD="$BUILD_CC"
1012+ BUILD_LDCXX="$BUILD_CXX"
1013+ fi
9731014
9741015 PATH="$OLDPATH"
9751016
@@ -1025,6 +1066,10 @@ AC_DEFUN_ONCE([TOOLCHAIN_MISC_CHECKS],
10251066 if test "x$COMPILER_CPU_TEST" != "xx64"; then
10261067 AC_MSG_ERROR ( [ Target CPU mismatch. We are building for $OPENJDK_TARGET_CPU but CL is for "$COMPILER_CPU_TEST"; expected "x64".] )
10271068 fi
1069+ elif test "x$OPENJDK_TARGET_CPU" = "xaarch64"; then
1070+ if test "x$COMPILER_CPU_TEST" != "xARM64"; then
1071+ AC_MSG_ERROR ( [ Target CPU mismatch. We are building for $OPENJDK_TARGET_CPU but CL is for "$COMPILER_CPU_TEST"; expected "arm64".] )
1072+ fi
10281073 fi
10291074 fi
10301075
0 commit comments