Erik:

Looks good to me. Thanks for picking this up - I struggled with the problem for months.

Tim

Please review this patch, which adds support for building with different versions of Visual Studio and in particular adds support for VS2013. In order to control which version to use, I've introduced a new configure parameter "--with-toolchain-version". On windows, this parameter will have the valid values 2010, 2012 and 2013. The default is still 2010. Note that 2012 was added for convenience, but has not been tested to actually work. The longer term goal is to switch the official compiler used for JDK 9 to VS2013. This is just the first step.

The main difference that needed to be addressed was that _STATIC_CPPLIB is no longer supported since VS2012, so we will now have to bundle another runtime dll (MSVCP). Also, since the build needs to be compatible with multiple versions of VS, we can no longer hard code the name msvcr100.dll. I changed the names of the dlls into macros that get added to the preprocessor command line. Note that the implementation for msvcp*.dll in java_md.c could perhaps be more elegant. I'm not familiar enough with the APIs, but if someone would like to improve on it, please do.

Bug: https://bugs.openjdk.java.net/browse/JDK-8042707
Webrevs:
http://cr.openjdk.java.net/~erikj/8042707/webrev.root.01/
http://cr.openjdk.java.net/~erikj/8042707/webrev.jdk.01/

Here is a patch for make/jprt.properties that adds new build and test platforms using the new compilers for windows and macosx. If you apply this and run JPRT, windows and mac platforms will be built and tested with both the old and the new compilers. I would like to commit this change too, but will do it separately later.

diff -r ef5c7075496d make/jprt.properties
--- a/make/jprt.properties
+++ b/make/jprt.properties
@@ -115,6 +115,12 @@
     ${my.i586.default.build.configure.args}                \
     ${jprt.productOpen.build.configure.args}

+jprt.windows_i586_6.2.build.configure.args= \
+ --with-toolchain-version=2013 \
+    ${jprt.i586.build.configure.args}
+jprt.windows_x64_6.2.build.configure.args= \
+    --with-toolchain-version=2013
+
 ########
 #
 # Build targets and options (default/jdk)
@@ -130,8 +136,11 @@
     linux_i586_2.6-{product|fastdebug},                    \
     linux_x64_2.6-{product|fastdebug},                    \
     macosx_x64_10.7-{product|fastdebug},                \
-    windows_i586_6.1-{product|fastdebug},                \
-    windows_x64_6.1-{product|fastdebug}
+    macosx_x64_10.9-{product|fastdebug},                \
+    windows_i586_6.1-{product|fastdebug},                         \
+ windows_x64_6.1-{product|fastdebug}, \
+ windows_i586_6.2-{product|fastdebug}, \
+    windows_x64_6.2-{product|fastdebug}

 # Test target list (no fastdebug & limited c2 testing)
 my.test.target.set=                            \
@@ -140,8 +149,11 @@
     linux_i586_2.6-product-{c1|c2}-TESTNAME,                \
     linux_x64_2.6-product-c2-TESTNAME,                    \
     macosx_x64_10.7-product-c2-TESTNAME,                \
+    macosx_x64_10.9-product-c2-TESTNAME,                \
     windows_i586_6.1-product-c1-TESTNAME,                \
-    windows_x64_6.1-product-c2-TESTNAME
+    windows_x64_6.1-product-c2-TESTNAME,                \
+    windows_i586_6.2-product-c1-TESTNAME,                \
+    windows_x64_6.2-product-c2-TESTNAME

 # Default vm test targets (testset=default)
 my.test.targets.default=                        \

/Erik

Reply via email to