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