--- old/make/autoconf/flags-cflags.m4 2020-06-04 23:38:54.804404759 -0400 +++ new/make/autoconf/flags-cflags.m4 2020-06-04 23:38:54.380390365 -0400 @@ -522,6 +522,18 @@ fi TOOLCHAIN_CFLAGS_JDK_CONLY="$LANGSTD_CFLAGS $TOOLCHAIN_CFLAGS_JDK_CONLY" + # CXXFLAGS C++ language level for all of JDK, including Hotspot. + if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang || test "x$TOOLCHAIN_TYPE" = xxlc; then + LANGSTD_CXXFLAGS="-std=c++14" + elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then + LANGSTD_CXXFLAGS="-std:c++14" + else + AC_MSG_ERROR([Don't know how to enable C++14 for this toolchain]) + fi + TOOLCHAIN_CFLAGS_JDK_CXXONLY="$TOOLCHAIN_CFLAGS_JDK_CXXONLY $LANGSTD_CXXFLAGS" + TOOLCHAIN_CFLAGS_JVM="$TOOLCHAIN_CFLAGS_JVM $LANGSTD_CXXFLAGS" + ADLC_LANGSTD_CXXFLAGS="$LANGSTD_CXXFLAGS" + # CFLAGS WARNINGS STUFF # Set JVM_CFLAGS warning handling if test "x$TOOLCHAIN_TYPE" = xgcc; then @@ -704,13 +716,6 @@ $1_CFLAGS_CPU_JDK="${$1_CFLAGS_CPU_JDK} -fno-omit-frame-pointer" fi - $1_CXXSTD_CXXFLAG="-std=gnu++98" - FLAGS_CXX_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [${$1_CXXSTD_CXXFLAG}], - PREFIX: $3, IF_FALSE: [$1_CXXSTD_CXXFLAG=""]) - $1_TOOLCHAIN_CFLAGS_JDK_CXXONLY="${$1_CXXSTD_CXXFLAG}" - $1_TOOLCHAIN_CFLAGS_JVM="${$1_TOOLCHAIN_CFLAGS_JVM} ${$1_CXXSTD_CXXFLAG}" - $2ADLC_CXXFLAG="${$1_CXXSTD_CXXFLAG}" - elif test "x$TOOLCHAIN_TYPE" = xclang; then if test "x$FLAGS_OS" = xlinux; then # ppc test not really needed for clang @@ -805,7 +810,7 @@ AC_SUBST($2CFLAGS_JDKEXE) AC_SUBST($2CXXFLAGS_JDKLIB) AC_SUBST($2CXXFLAGS_JDKEXE) - AC_SUBST($2ADLC_CXXFLAG) + AC_SUBST($2ADLC_LANGSTD_CXXFLAGS) COMPILER_FP_CONTRACT_OFF_FLAG="-ffp-contract=off" # Check that the compiler supports -ffp-contract=off flag --- old/make/autoconf/flags-ldflags.m4 2020-06-04 23:38:55.956443866 -0400 +++ new/make/autoconf/flags-ldflags.m4 2020-06-04 23:38:55.536429608 -0400 @@ -53,6 +53,7 @@ LDFLAGS_TESTEXE="${TARGET_LDFLAGS_JDK_LIBPATH}" AC_SUBST(LDFLAGS_TESTEXE) + AC_SUBST(ADLC_LDFLAGS) ]) ################################################################################ --- old/make/autoconf/lib-std.m4 2020-06-04 23:38:57.096482565 -0400 +++ new/make/autoconf/lib-std.m4 2020-06-04 23:38:56.676468307 -0400 @@ -70,6 +70,7 @@ else LIBCXX="$LIBCXX $STATIC_STDCXX_FLAGS" JVM_LDFLAGS="$JVM_LDFLAGS $STATIC_STDCXX_FLAGS" + ADLC_LDFLAGS="$ADLC_LDFLAGS $STATIC_STDCXX_FLAGS" # Ideally, we should test stdc++ for the BUILD toolchain separately. For now # just use the same setting as for the TARGET toolchain. OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS $STATIC_STDCXX_FLAGS" --- old/make/autoconf/spec.gmk.in 2020-06-04 23:38:58.248521672 -0400 +++ new/make/autoconf/spec.gmk.in 2020-06-04 23:38:57.824507279 -0400 @@ -476,7 +476,8 @@ WARNINGS_AS_ERRORS := @WARNINGS_AS_ERRORS@ CFLAGS_CCACHE:=@CFLAGS_CCACHE@ -ADLC_CXXFLAG=@ADLC_CXXFLAG@ +ADLC_LANGSTD_CXXFLAGS=@ADLC_LANGSTD_CXXFLAGS@ +ADLC_LDFLAGS=@ADLC_LDFLAGS@ # Tools that potentially need to be cross compilation aware. CC:=@FIXPATH@ @CCACHE@ @ICECC@ @CC@ --- old/make/autoconf/toolchain.m4 2020-06-04 23:38:59.396560643 -0400 +++ new/make/autoconf/toolchain.m4 2020-06-04 23:38:58.976546385 -0400 @@ -50,9 +50,9 @@ TOOLCHAIN_DESCRIPTION_xlc="IBM XL C/C++" # Minimum supported versions, empty means unspecified -TOOLCHAIN_MINIMUM_VERSION_clang="3.2" +TOOLCHAIN_MINIMUM_VERSION_clang="3.5" TOOLCHAIN_MINIMUM_VERSION_gcc="5.0" -TOOLCHAIN_MINIMUM_VERSION_microsoft="16.00.30319.01" # VS2010 +TOOLCHAIN_MINIMUM_VERSION_microsoft="19.10.0.0" # VS2017 TOOLCHAIN_MINIMUM_VERSION_xlc="" # Minimum supported linker versions, empty means unspecified --- old/make/autoconf/toolchain_windows.m4 2020-06-04 23:39:00.540599478 -0400 +++ new/make/autoconf/toolchain_windows.m4 2020-06-04 23:39:00.116585085 -0400 @@ -25,55 +25,7 @@ ################################################################################ # The order of these defines the priority by which we try to find them. -VALID_VS_VERSIONS="2019 2017 2013 2015 2012 2010" - -VS_DESCRIPTION_2010="Microsoft Visual Studio 2010" -VS_VERSION_INTERNAL_2010=100 -VS_MSVCR_2010=msvcr100.dll -# We don't use msvcp on Visual Studio 2010 -#VS_MSVCP_2010=msvcp100.dll -VS_ENVVAR_2010="VS100COMNTOOLS" -VS_VS_INSTALLDIR_2010="Microsoft Visual Studio 10.0" -VS_SDK_INSTALLDIR_2010="Microsoft SDKs/Windows/v7.1" -VS_VS_PLATFORM_NAME_2010="v100" -VS_SDK_PLATFORM_NAME_2010="Windows7.1SDK" -VS_SUPPORTED_2010=false - -VS_DESCRIPTION_2012="Microsoft Visual Studio 2012" -VS_VERSION_INTERNAL_2012=110 -VS_MSVCR_2012=msvcr110.dll -VS_MSVCP_2012=msvcp110.dll -VS_ENVVAR_2012="VS110COMNTOOLS" -VS_VS_INSTALLDIR_2012="Microsoft Visual Studio 11.0" -VS_SDK_INSTALLDIR_2012= -VS_VS_PLATFORM_NAME_2012="v110" -VS_SDK_PLATFORM_NAME_2012= -VS_SUPPORTED_2012=false - -VS_DESCRIPTION_2013="Microsoft Visual Studio 2013" -VS_VERSION_INTERNAL_2013=120 -VS_MSVCR_2013=msvcr120.dll -VS_MSVCP_2013=msvcp120.dll -VS_ENVVAR_2013="VS120COMNTOOLS" -VS_VS_INSTALLDIR_2013="Microsoft Visual Studio 12.0" -VS_SDK_INSTALLDIR_2013= -VS_VS_PLATFORM_NAME_2013="v120" -VS_SDK_PLATFORM_NAME_2013= -VS_SUPPORTED_2013=false - -VS_DESCRIPTION_2015="Microsoft Visual Studio 2015" -VS_VERSION_INTERNAL_2015=140 -VS_MSVCR_2015=vcruntime140.dll -VS_MSVCP_2015=msvcp140.dll -VS_ENVVAR_2015="VS140COMNTOOLS" -VS_VS_INSTALLDIR_2015="Microsoft Visual Studio 14.0" -VS_SDK_INSTALLDIR_2015= -VS_VS_PLATFORM_NAME_2015="v140" -VS_SDK_PLATFORM_NAME_2015= -# The vcvars of 2015 breaks if 2017 is also installed. Work around this by -# explicitly specifying Windows Kit 8.1 to be used. -VS_ENV_ARGS_2015="8.1" -VS_SUPPORTED_2015=false +VALID_VS_VERSIONS="2019 2017" VS_DESCRIPTION_2017="Microsoft Visual Studio 2017" VS_VERSION_INTERNAL_2017=141 --- old/make/hotspot/gensrc/GensrcAdlc.gmk 2020-06-04 23:39:01.692638586 -0400 +++ new/make/hotspot/gensrc/GensrcAdlc.gmk 2020-06-04 23:39:01.268624192 -0400 @@ -37,18 +37,18 @@ ifeq ($(call isBuildOs, linux), true) ADLC_CFLAGS := -fno-exceptions -DLINUX else ifeq ($(call isBuildOs, aix), true) - ADLC_LDFLAGS := -q64 + ADLC_LDFLAGS += -q64 ADLC_CFLAGS := -qnortti -qeh -q64 -DAIX else ifeq ($(call isBuildOs, windows), true) - ADLC_LDFLAGS := -nologo + ADLC_LDFLAGS += -nologo ADLC_CFLAGS := -nologo -EHsc # NOTE: The old build also have -D_CRT_SECURE_NO_DEPRECATE but it doesn't # seem needed any more. ADLC_CFLAGS_WARNINGS := -W3 -D_CRT_SECURE_NO_WARNINGS endif - # Set the C++ standard if supported - ADLC_CFLAGS += $(ADLC_CXXFLAG) + # Set the C++ standard + ADLC_CFLAGS += $(ADLC_LANGSTD_CXXFLAG) # NOTE: The old build didn't set -DASSERT for windows but it doesn't seem to # hurt. --- old/make/modules/jdk.hotspot.agent/Lib.gmk 2020-06-04 23:39:02.836677421 -0400 +++ new/make/modules/jdk.hotspot.agent/Lib.gmk 2020-06-04 23:39:02.416663163 -0400 @@ -66,6 +66,7 @@ CXXFLAGS := $(CXXFLAGS_JDKLIB) $(SA_CFLAGS) $(SA_CXXFLAGS), \ EXTRA_SRC := $(LIBSA_EXTRA_SRC), \ LDFLAGS := $(LDFLAGS_JDKLIB), \ + LIBS := $(LIBCXX), \ LIBS_linux := $(LIBDL), \ LIBS_macosx := -framework Foundation -framework JavaNativeFoundation \ -framework JavaRuntimeSupport -framework Security -framework CoreFoundation, \