56 VS_VS_INSTALLDIR_2013="Microsoft Visual Studio 12.0" |
56 VS_VS_INSTALLDIR_2013="Microsoft Visual Studio 12.0" |
57 VS_SDK_INSTALLDIR_2013= |
57 VS_SDK_INSTALLDIR_2013= |
58 VS_VS_PLATFORM_NAME_2013="v120" |
58 VS_VS_PLATFORM_NAME_2013="v120" |
59 VS_SDK_PLATFORM_NAME_2013= |
59 VS_SDK_PLATFORM_NAME_2013= |
60 |
60 |
|
61 VS_DESCRIPTION_2015="Microsoft Visual Studio 2015 - CURRENTLY NOT WORKING" |
|
62 VS_VERSION_INTERNAL_2015=140 |
|
63 VS_MSVCR_2015=vcruntime140.dll |
|
64 VS_MSVCP_2015=msvcp140.dll |
|
65 VS_ENVVAR_2015="VS140COMNTOOLS" |
|
66 VS_VS_INSTALLDIR_2015="Microsoft Visual Studio 14.0" |
|
67 VS_SDK_INSTALLDIR_2015= |
|
68 VS_VS_PLATFORM_NAME_2015="v140" |
|
69 VS_SDK_PLATFORM_NAME_2015= |
|
70 # The vcvars of 2015 breaks if 2017 is also installed. Work around this by |
|
71 # explicitly specifying Windows Kit 8.1 to be used. |
|
72 VS_ENV_ARGS_2015="8.1" |
|
73 |
|
74 VS_DESCRIPTION_2017="Microsoft Visual Studio 2017 - CURRENTLY NOT WORKING" |
|
75 VS_VERSION_INTERNAL_2017=141 |
|
76 VS_MSVCR_2017=vcruntime140.dll |
|
77 VS_MSVCP_2017=msvcp140.dll |
|
78 VS_ENVVAR_2017="VS150COMNTOOLS" |
|
79 VS_VS_INSTALLDIR_2017="Microsoft Visual Studio/2017" |
|
80 VS_EDITIONS_2017="Community Professional Enterprise" |
|
81 VS_SDK_INSTALLDIR_2017= |
|
82 VS_VS_PLATFORM_NAME_2017="v141" |
|
83 VS_SDK_PLATFORM_NAME_2017= |
|
84 |
61 ################################################################################ |
85 ################################################################################ |
62 |
86 |
63 AC_DEFUN([TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT], |
87 AC_DEFUN([TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT], |
64 [ |
88 [ |
65 if test "x$VS_ENV_CMD" = x; then |
89 if test "x$VS_ENV_CMD" = x; then |
66 VS_VERSION="$1" |
90 VS_VERSION="$1" |
67 VS_BASE="$2" |
91 VS_BASE="$2" |
68 METHOD="$3" |
92 METHOD="$3" |
69 |
93 |
70 if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then |
|
71 VCVARSFILE="vc/bin/vcvars32.bat" |
|
72 else |
|
73 VCVARSFILE="vc/bin/amd64/vcvars64.bat" |
|
74 fi |
|
75 |
|
76 BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(VS_BASE) |
94 BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(VS_BASE) |
|
95 # In VS 2017, the default installation is in a subdir named after the edition. |
|
96 # Find the first one present and use that. |
|
97 if test "x$VS_EDITIONS" != x; then |
|
98 for edition in $VS_EDITIONS; do |
|
99 if test -d "$VS_BASE/$edition"; then |
|
100 VS_BASE="$VS_BASE/$edition" |
|
101 break |
|
102 fi |
|
103 done |
|
104 fi |
|
105 |
77 if test -d "$VS_BASE"; then |
106 if test -d "$VS_BASE"; then |
78 if test -f "$VS_BASE/$VCVARSFILE"; then |
107 AC_MSG_NOTICE([Found Visual Studio installation at $VS_BASE using $METHOD]) |
79 AC_MSG_NOTICE([Found Visual Studio installation at $VS_BASE using $METHOD]) |
108 if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then |
80 VS_ENV_CMD="$VS_BASE/$VCVARSFILE" |
109 VCVARSFILES="vc/bin/vcvars32.bat vc/auxiliary/build/vcvars32.bat" |
81 # PLATFORM_TOOLSET is used during the compilation of the freetype sources (see |
110 else |
82 # 'LIB_BUILD_FREETYPE' in libraries.m4) and must be one of 'v100', 'v110' or 'v120' for VS 2010, 2012 or VS2013 |
111 VCVARSFILES="vc/bin/amd64/vcvars64.bat vc/bin/x86_amd64/vcvarsx86_amd64.bat \ |
|
112 vc/auxiliary/build/vcvarsx86_amd64.bat vc/auxiliary/build/vcvars64.bat" |
|
113 fi |
|
114 |
|
115 for VCVARSFILE in $VCVARSFILES; do |
|
116 if test -f "$VS_BASE/$VCVARSFILE"; then |
|
117 VS_ENV_CMD="$VS_BASE/$VCVARSFILE" |
|
118 break |
|
119 fi |
|
120 done |
|
121 |
|
122 if test "x$VS_ENV_CMD" = x; then |
|
123 AC_MSG_NOTICE([Warning: None of $VCVARSFILES were found, Visual Studio installation not recognized. Ignoring]) |
|
124 else |
|
125 # PLATFORM_TOOLSET is used during the compilation of the freetype sources |
|
126 # (see 'LIB_BUILD_FREETYPE' in libraries.m4) and must be one of 'v100', |
|
127 # 'v110' or 'v120' for VS 2010, 2012 or VS2013 |
83 eval PLATFORM_TOOLSET="\${VS_VS_PLATFORM_NAME_${VS_VERSION}}" |
128 eval PLATFORM_TOOLSET="\${VS_VS_PLATFORM_NAME_${VS_VERSION}}" |
84 else |
|
85 AC_MSG_NOTICE([Found Visual Studio installation at $VS_BASE using $METHOD]) |
|
86 AC_MSG_NOTICE([Warning: $VCVARSFILE is missing, this is probably Visual Studio Express. Ignoring]) |
|
87 fi |
129 fi |
88 fi |
130 fi |
89 fi |
131 fi |
90 ]) |
132 ]) |
91 |
133 |
131 [ |
173 [ |
132 VS_VERSION="$1" |
174 VS_VERSION="$1" |
133 eval VS_COMNTOOLS_VAR="\${VS_ENVVAR_${VS_VERSION}}" |
175 eval VS_COMNTOOLS_VAR="\${VS_ENVVAR_${VS_VERSION}}" |
134 eval VS_COMNTOOLS="\$${VS_COMNTOOLS_VAR}" |
176 eval VS_COMNTOOLS="\$${VS_COMNTOOLS_VAR}" |
135 eval VS_INSTALL_DIR="\${VS_VS_INSTALLDIR_${VS_VERSION}}" |
177 eval VS_INSTALL_DIR="\${VS_VS_INSTALLDIR_${VS_VERSION}}" |
|
178 eval VS_EDITIONS="\${VS_EDITIONS_${VS_VERSION}}" |
136 eval SDK_INSTALL_DIR="\${VS_SDK_INSTALLDIR_${VS_VERSION}}" |
179 eval SDK_INSTALL_DIR="\${VS_SDK_INSTALLDIR_${VS_VERSION}}" |
|
180 eval VS_ENV_ARGS="\${VS_ENV_ARGS_${VS_VERSION}}" |
137 |
181 |
138 # When using --with-tools-dir, assume it points to the correct and default |
182 # When using --with-tools-dir, assume it points to the correct and default |
139 # version of Visual Studio or that --with-toolchain-version was also set. |
183 # version of Visual Studio or that --with-toolchain-version was also set. |
140 if test "x$with_tools_dir" != x; then |
184 if test "x$with_tools_dir" != x; then |
141 TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT([${VS_VERSION}], |
185 TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT([${VS_VERSION}], |
211 |
254 |
212 exit 0 |
255 exit 0 |
213 elif test "x$DEVKIT_VS_VERSION" != x; then |
256 elif test "x$DEVKIT_VS_VERSION" != x; then |
214 VS_VERSION=$DEVKIT_VS_VERSION |
257 VS_VERSION=$DEVKIT_VS_VERSION |
215 TOOLCHAIN_VERSION=$VS_VERSION |
258 TOOLCHAIN_VERSION=$VS_VERSION |
216 eval VS_DESCRIPTION="\${VS_DESCRIPTION_${VS_VERSION}}" |
259 # If the devkit has a name, use that as description |
|
260 VS_DESCRIPTION="$DEVKIT_NAME" |
|
261 if test "x$VS_DESCRIPTION" = x; then |
|
262 eval VS_DESCRIPTION="\${VS_DESCRIPTION_${VS_VERSION}}" |
|
263 fi |
217 eval VS_VERSION_INTERNAL="\${VS_VERSION_INTERNAL_${VS_VERSION}}" |
264 eval VS_VERSION_INTERNAL="\${VS_VERSION_INTERNAL_${VS_VERSION}}" |
218 eval MSVCR_NAME="\${VS_MSVCR_${VS_VERSION}}" |
265 eval MSVCR_NAME="\${VS_MSVCR_${VS_VERSION}}" |
219 eval MSVCP_NAME="\${VS_MSVCP_${VS_VERSION}}" |
266 eval MSVCP_NAME="\${VS_MSVCP_${VS_VERSION}}" |
220 eval PLATFORM_TOOLSET="\${VS_VS_PLATFORM_NAME_${VS_VERSION}}" |
267 eval PLATFORM_TOOLSET="\${VS_VS_PLATFORM_NAME_${VS_VERSION}}" |
221 VS_PATH="$TOOLCHAIN_PATH:$PATH" |
268 VS_PATH="$TOOLCHAIN_PATH:$PATH" |
265 # The rest of the variables are already evaled while probing |
312 # The rest of the variables are already evaled while probing |
266 AC_MSG_NOTICE([Found $VS_DESCRIPTION]) |
313 AC_MSG_NOTICE([Found $VS_DESCRIPTION]) |
267 break |
314 break |
268 fi |
315 fi |
269 done |
316 done |
|
317 |
|
318 TOOLCHAIN_DESCRIPTION="$VS_DESCRIPTION" |
|
319 if test "$TOOLCHAIN_VERSION" -gt 2013; then |
|
320 UNSUPPORTED_TOOLCHAIN_VERSION=yes |
|
321 fi |
270 ]) |
322 ]) |
271 |
323 |
272 ################################################################################ |
324 ################################################################################ |
273 # Check if the VS env variables were setup prior to running configure. |
325 # Check if the VS env variables were setup prior to running configure. |
274 # If not, then find vcvarsall.bat and run it automatically, and integrate |
326 # If not, then find vcvarsall.bat and run it automatically, and integrate |
318 EXTRACT_VC_ENV_BAT_FILE="$VS_ENV_TMP_DIR/extract-vs-env.bat" |
370 EXTRACT_VC_ENV_BAT_FILE="$VS_ENV_TMP_DIR/extract-vs-env.bat" |
319 $ECHO "@echo off" > $EXTRACT_VC_ENV_BAT_FILE |
371 $ECHO "@echo off" > $EXTRACT_VC_ENV_BAT_FILE |
320 # This will end up something like: |
372 # This will end up something like: |
321 # call C:/progra~2/micros~2.0/vc/bin/amd64/vcvars64.bat |
373 # call C:/progra~2/micros~2.0/vc/bin/amd64/vcvars64.bat |
322 $ECHO "call $WINPATH_VS_ENV_CMD $VS_ENV_ARGS" >> $EXTRACT_VC_ENV_BAT_FILE |
374 $ECHO "call $WINPATH_VS_ENV_CMD $VS_ENV_ARGS" >> $EXTRACT_VC_ENV_BAT_FILE |
|
375 # In some cases, the VS_ENV_CMD will change directory, change back so |
|
376 # the set-vs-env.sh ends up in the right place. |
|
377 $ECHO 'cd %~dp0' >> $EXTRACT_VC_ENV_BAT_FILE |
323 # These will end up something like: |
378 # These will end up something like: |
324 # C:/CygWin/bin/bash -c 'echo VS_PATH=\"$PATH\" > localdevenv.sh |
379 # C:/CygWin/bin/bash -c 'echo VS_PATH=\"$PATH\" > localdevenv.sh |
325 # The trailing space for everyone except PATH is no typo, but is needed due |
380 # The trailing space for everyone except PATH is no typo, but is needed due |
326 # to trailing \ in the Windows paths. These will be stripped later. |
381 # to trailing \ in the Windows paths. These will be stripped later. |
327 $ECHO "$WINPATH_BASH -c 'echo VS_PATH="'\"$PATH\" > set-vs-env.sh' \ |
382 $ECHO "$WINPATH_BASH -c 'echo VS_PATH="'\"$PATH\" > set-vs-env.sh' \ |
481 [ |
536 [ |
482 DLL_NAME="$1" |
537 DLL_NAME="$1" |
483 MSVC_DLL= |
538 MSVC_DLL= |
484 |
539 |
485 if test "x$MSVC_DLL" = x; then |
540 if test "x$MSVC_DLL" = x; then |
486 # Probe: Using well-known location from Visual Studio 10.0 |
|
487 if test "x$VCINSTALLDIR" != x; then |
541 if test "x$VCINSTALLDIR" != x; then |
488 CYGWIN_VC_INSTALL_DIR="$VCINSTALLDIR" |
542 CYGWIN_VC_INSTALL_DIR="$VCINSTALLDIR" |
489 BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(CYGWIN_VC_INSTALL_DIR) |
543 BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(CYGWIN_VC_INSTALL_DIR) |
490 if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then |
544 if test "$VS_VERSION" -lt 2017; then |
491 POSSIBLE_MSVC_DLL="$CYGWIN_VC_INSTALL_DIR/redist/x64/Microsoft.VC${VS_VERSION_INTERNAL}.CRT/$DLL_NAME" |
545 # Probe: Using well-known location from Visual Studio 12.0 and older |
492 else |
546 if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then |
493 POSSIBLE_MSVC_DLL="$CYGWIN_VC_INSTALL_DIR/redist/x86/Microsoft.VC${VS_VERSION_INTERNAL}.CRT/$DLL_NAME" |
547 POSSIBLE_MSVC_DLL="$CYGWIN_VC_INSTALL_DIR/redist/x64/Microsoft.VC${VS_VERSION_INTERNAL}.CRT/$DLL_NAME" |
494 fi |
548 else |
495 $ECHO "POSSIBLE_MSVC_DLL $POSSIBLEMSVC_DLL" |
549 POSSIBLE_MSVC_DLL="$CYGWIN_VC_INSTALL_DIR/redist/x86/Microsoft.VC${VS_VERSION_INTERNAL}.CRT/$DLL_NAME" |
496 TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL([$DLL_NAME], [$POSSIBLE_MSVC_DLL], |
550 fi |
497 [well-known location in VCINSTALLDIR]) |
551 else |
|
552 # Probe: Using well-known location from VS 2017 |
|
553 if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then |
|
554 POSSIBLE_MSVC_DLL="`ls $CYGWIN_VC_INSTALL_DIR/Redist/MSVC/*/x64/Microsoft.VC${VS_VERSION_INTERNAL}.CRT/$DLL_NAME`" |
|
555 else |
|
556 POSSIBLE_MSVC_DLL="`ls $CYGWIN_VC_INSTALL_DIR/Redist/MSVC/*/x86/Microsoft.VC${VS_VERSION_INTERNAL}.CRT/$DLL_NAME`" |
|
557 fi |
|
558 fi |
|
559 # In case any of the above finds more than one file, loop over them. |
|
560 for possible_msvc_dll in $POSSIBLE_MSVC_DLL; do |
|
561 $ECHO "POSSIBLE_MSVC_DLL $possible_msvc_dll" |
|
562 TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL([$DLL_NAME], [$possible_msvc_dll], |
|
563 [well-known location in VCINSTALLDIR]) |
|
564 done |
498 fi |
565 fi |
499 fi |
566 fi |
500 |
567 |
501 if test "x$MSVC_DLL" = x; then |
568 if test "x$MSVC_DLL" = x; then |
502 # Probe: Check in the Boot JDK directory. |
569 # Probe: Check in the Boot JDK directory. |
574 MSVCR_DLL="$MSVC_DLL" |
641 MSVCR_DLL="$MSVC_DLL" |
575 elif test "x$DEVKIT_MSVCR_DLL" != x; then |
642 elif test "x$DEVKIT_MSVCR_DLL" != x; then |
576 TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL($MSVCR_NAME, [$DEVKIT_MSVCR_DLL], [devkit]) |
643 TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL($MSVCR_NAME, [$DEVKIT_MSVCR_DLL], [devkit]) |
577 if test "x$MSVC_DLL" = x; then |
644 if test "x$MSVC_DLL" = x; then |
578 AC_MSG_ERROR([Could not find a proper $MSVCR_NAME as specified by devkit]) |
645 AC_MSG_ERROR([Could not find a proper $MSVCR_NAME as specified by devkit]) |
579 fi |
646 fi |
580 MSVCR_DLL="$MSVC_DLL" |
647 MSVCR_DLL="$MSVC_DLL" |
581 else |
648 else |
582 TOOLCHAIN_SETUP_MSVC_DLL([${MSVCR_NAME}]) |
649 TOOLCHAIN_SETUP_MSVC_DLL([${MSVCR_NAME}]) |
583 MSVCR_DLL="$MSVC_DLL" |
650 MSVCR_DLL="$MSVC_DLL" |
584 fi |
651 fi |
597 MSVCP_DLL="$MSVC_DLL" |
664 MSVCP_DLL="$MSVC_DLL" |
598 elif test "x$DEVKIT_MSVCP_DLL" != x; then |
665 elif test "x$DEVKIT_MSVCP_DLL" != x; then |
599 TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL($MSVCP_NAME, [$DEVKIT_MSVCP_DLL], [devkit]) |
666 TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL($MSVCP_NAME, [$DEVKIT_MSVCP_DLL], [devkit]) |
600 if test "x$MSVC_DLL" = x; then |
667 if test "x$MSVC_DLL" = x; then |
601 AC_MSG_ERROR([Could not find a proper $MSVCP_NAME as specified by devkit]) |
668 AC_MSG_ERROR([Could not find a proper $MSVCP_NAME as specified by devkit]) |
602 fi |
669 fi |
603 MSVCP_DLL="$MSVC_DLL" |
670 MSVCP_DLL="$MSVC_DLL" |
604 else |
671 else |
605 TOOLCHAIN_SETUP_MSVC_DLL([${MSVCP_NAME}]) |
672 TOOLCHAIN_SETUP_MSVC_DLL([${MSVCP_NAME}]) |
606 MSVCP_DLL="$MSVC_DLL" |
673 MSVCP_DLL="$MSVC_DLL" |
607 fi |
674 fi |