[arch-commits] Commit in java8-openjdk/trunk (PKGBUILD build_with_gcc6.patch)

Guillaume Alaux guillaume at archlinux.org
Tue Feb 27 12:44:18 UTC 2018


    Date: Tuesday, February 27, 2018 @ 12:44:09
  Author: guillaume
Revision: 317582

Upstream release 8.u162

Modified:
  java8-openjdk/trunk/PKGBUILD
Deleted:
  java8-openjdk/trunk/build_with_gcc6.patch

-----------------------+
 PKGBUILD              |   28 -
 build_with_gcc6.patch | 1098 ------------------------------------------------
 2 files changed, 12 insertions(+), 1114 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2018-02-27 12:34:23 UTC (rev 317581)
+++ PKGBUILD	2018-02-27 12:44:09 UTC (rev 317582)
@@ -11,8 +11,8 @@
 pkgbase=java8-openjdk
 _java_ver=8
 # Found @ http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
-_jdk_update=144
-_jdk_build=01
+_jdk_update=162
+_jdk_build=12
 pkgver=${_java_ver}.u${_jdk_update}
 _repo_ver=jdk${_java_ver}u${_jdk_update}-b${_jdk_build}
 pkgrel=1
@@ -29,18 +29,16 @@
         jaxws-${_repo_ver}.tar.gz::${_url_src}/jaxws/archive/${_repo_ver}.tar.gz
         jaxp-${_repo_ver}.tar.gz::${_url_src}/jaxp/archive/${_repo_ver}.tar.gz
         langtools-${_repo_ver}.tar.gz::${_url_src}/langtools/archive/${_repo_ver}.tar.gz
-        nashorn-${_repo_ver}.tar.gz::${_url_src}/nashorn/archive/${_repo_ver}.tar.gz
-        build_with_gcc6.patch)
+        nashorn-${_repo_ver}.tar.gz::${_url_src}/nashorn/archive/${_repo_ver}.tar.gz)
 
-sha256sums=('85a8a8c55cda2d3bae833578d6ad6c8bf531550ac051776d47946d17858a6721'
-            'f0a153807e08c79c5ce229be6eafe7951854a7d7eb496cea7b24a0a5f305ccfe'
-            '18d9fc6b9a6830cb8083e366b9ef31f8c8ebb80c816d7f516de8285181fb6bc1'
-            'e8442fd2fcce332abdb1e34bb33655e43e6d88bb551fc67883b8cab043aba53f'
-            '5146841822b49e1300c6c78a88be617fd72a80b76e8e2bb8d6ed526edfe1a929'
-            'd5479dde109483c81f94abb91d93d11b1a899bb5d5685e7dfdd96ba8e35adf93'
-            '7a3a7d2f2f6f47de876532d9ad9e3d04f0235a8d848ea958d6371dbb2535f83c'
-            '5d14d0e910fec1cc34e02bf25173b25619083f2afda8e73d0bb5ba456c12b89c'
-            'dcf5f495620231068b0c925a33ba7246bbeb85e9ae822b30ab77a66839c2d3b6')
+sha256sums=('7ad155f34bae7bfb43b5f74972f61cf2d390be9d068d7825af8416fe098f15b1'
+            'd45747d3ef7bfff09e48391b10e9264619c2e3c65708cdf62fa3c4c4f724bf88'
+            '9614ed1e9eb7e1ad9ee206272e761cbdb0d24193f4e70fad853ae1e8eb668af4'
+            '1809fc11f8d5bd4817ac8be30493d0c6ae994c2f089101040345aed39cabe40d'
+            'c576306038e548071a0c9904dd0ef82e1ada4dba8acf865b065672356c256dde'
+            'c45c2bc4519992d78666c81b5faa33d7b40e268c8ae5c17ac1b7726fdf8e16d4'
+            'b0dae1ddc9113d6ce5e7afc0a75284f913ab2d8f21c56b2378962037947629ec'
+            'b8a89d7870c332055e4bde9ca7a4183b4de1a280709de29f18a6867dd1eb8296')
 
 case "${CARCH}" in
   'x86_64') _JARCH=amd64 ; _DOC_ARCH=x86_64 ;;
@@ -63,8 +61,6 @@
   do
     ln -s ../${subrepo}-${_repo_ver} ${subrepo}
   done
-
-  patch -p1 < ../build_with_gcc6.patch
 }
 
 build() {
@@ -74,7 +70,7 @@
   # http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=1346
   export MAKEFLAGS=${MAKEFLAGS/-j*}
   # https://hydra.nixos.org/build/41230444/log
-  export CFLAGS="-Wno-error=deprecated-declarations"
+  export CFLAGS="-Wno-error=deprecated-declarations -fno-lifetime-dse"
 
   install -d -m 755 "${srcdir}/${_prefix}/"
   sh configure \

Deleted: build_with_gcc6.patch
===================================================================
--- build_with_gcc6.patch	2018-02-27 12:34:23 UTC (rev 317581)
+++ build_with_gcc6.patch	2018-02-27 12:44:09 UTC (rev 317582)
@@ -1,1098 +0,0 @@
-# HG changeset patch
-# User andrew
-# Date 1468209748 -3600
-#      Mon Jul 11 05:02:28 2016 +0100
-# Node ID 7eb66a95dbd58d26ed271477076e0ab72e8c9ebf
-# Parent  817d9fb584baecae7c989dfd7009a7f0ac7c6360
-8151841: Build needs additional flags to compile with GCC 6 [plus parts of 8149647 & 8032045]
-Summary: C++ standard needs to be explicitly set and some optimisations turned off to build on GCC 6
-Reviewed-by: erikj, dholmes, kbarrett
-
-diff --git a/common/autoconf/generated-configure.sh b/common/autoconf/generated-configure.sh
---- a/common/autoconf/generated-configure.sh
-+++ b/common/autoconf/generated-configure.sh
-@@ -679,6 +679,9 @@
- CFLAGS_JDKLIB
- MACOSX_VERSION_MIN
- PACKAGE_PATH
-+NO_LIFETIME_DSE_CFLAG
-+NO_DELETE_NULL_POINTER_CHECKS_CFLAG
-+CXXSTD_CXXFLAG
- LEGACY_EXTRA_LDFLAGS
- LEGACY_EXTRA_CXXFLAGS
- LEGACY_EXTRA_CFLAGS
-@@ -743,6 +746,8 @@
- ac_ct_OBJC
- OBJCFLAGS
- OBJC
-+CXX_VERSION
-+CC_VERSION
- ac_ct_CXX
- CXXFLAGS
- CXX
-@@ -3672,7 +3677,7 @@
- 
- 
- #
--# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
-+# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
- # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- #
- # This code is free software; you can redistribute it and/or modify it
-@@ -3795,6 +3800,19 @@
- # questions.
- #
- 
-+# Prepare the system so that TOOLCHAIN_CHECK_COMPILER_VERSION can be called.
-+# Must have CC_VERSION_NUMBER and CXX_VERSION_NUMBER.
-+
-+
-+# Check if the configured compiler (C and C++) is of a specific version or
-+# newer. TOOLCHAIN_PREPARE_FOR_VERSION_COMPARISONS must have been called before.
-+#
-+# Arguments:
-+#   $1:   The version string to check against the found version
-+#   $2:   block to run if the compiler is at least this version (>=)
-+#   $3:   block to run if the compiler is older than this version (<)
-+
-+
- # $1 = compiler to test (CC or CXX)
- # $2 = human readable name of compiler (C or C++)
- 
-@@ -3818,10 +3836,22 @@
- 
- 
- 
-+# TOOLCHAIN_C_COMPILER_CHECK_ARGUMENTS([ARGUMENT], [RUN-IF-TRUE],
-+#                                      [RUN-IF-FALSE])
-+# ------------------------------------------------------------
-+# Check that the C compiler supports an argument
-+
-+
-+# TOOLCHAIN_CXX_COMPILER_CHECK_ARGUMENTS([ARGUMENT], [RUN-IF-TRUE],
-+#                                        [RUN-IF-FALSE])
-+# ------------------------------------------------------------
-+# Check that the C++ compiler supports an argument
-+
-+
- # TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([ARGUMENT], [RUN-IF-TRUE],
--#                                   [RUN-IF-FALSE])
-+#                                    [RUN-IF-FALSE])
- # ------------------------------------------------------------
--# Check that the c and c++ compilers support an argument
-+# Check that the C and C++ compilers support an argument
- 
- 
- 
-@@ -3829,6 +3859,8 @@
- # Setup the JTREG paths
- 
- 
-+
-+
- #
- # Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
- # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-@@ -3880,7 +3912,7 @@
- #CUSTOM_AUTOCONF_INCLUDE
- 
- # Do not change or remove the following line, it is needed for consistency checks:
--DATE_WHEN_GENERATED=1449096260
-+DATE_WHEN_GENERATED=1468207795
- 
- ###############################################################################
- #
-@@ -20368,7 +20400,8 @@
- 
-     # First line typically looks something like:
-     # gcc (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2
--    COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^.* \([1-9][0-9.]*\)/\1/p"`
-+    COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | \
-+        $SED -e 's/^.* \([1-9]\.[0-9.]*\)[^0-9.].*$/\1/'`
-     COMPILER_VENDOR=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^\(.*\) [1-9][0-9.]*/\1/p"`
-   fi
-   # This sets CC_VERSION or CXX_VERSION. (This comment is a grep marker)
-@@ -21969,7 +22002,8 @@
- 
-     # First line typically looks something like:
-     # gcc (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2
--    COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^.* \([1-9][0-9.]*\)/\1/p"`
-+    COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | \
-+        $SED -e 's/^.* \([1-9]\.[0-9.]*\)[^0-9.].*$/\1/'`
-     COMPILER_VENDOR=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^\(.*\) [1-9][0-9.]*/\1/p"`
-   fi
-   # This sets CC_VERSION or CXX_VERSION. (This comment is a grep marker)
-@@ -22240,6 +22274,32 @@
- ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
- 
- 
-+  # This is the compiler version number on the form X.Y[.Z]
-+
-+
-+
-+
-+  if test "x$CC_VERSION" != "x$CXX_VERSION"; then
-+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C and C++ compiler has different version numbers, $CC_VERSION vs $CXX_VERSION." >&5
-+$as_echo "$as_me: WARNING: C and C++ compiler has different version numbers, $CC_VERSION vs $CXX_VERSION." >&2;}
-+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: This typically indicates a broken setup, and is not supported" >&5
-+$as_echo "$as_me: WARNING: This typically indicates a broken setup, and is not supported" >&2;}
-+  fi
-+
-+  # We only check CC_VERSION since we assume CXX_VERSION is equal.
-+  if  [[ "$CC_VERSION" =~ (.*\.){3} ]] ; then
-+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C compiler version number has more than three parts (X.Y.Z): $CC_VERSION. Comparisons might be wrong." >&5
-+$as_echo "$as_me: WARNING: C compiler version number has more than three parts (X.Y.Z): $CC_VERSION. Comparisons might be wrong." >&2;}
-+  fi
-+
-+  if  [[  "$CC_VERSION" =~ [0-9]{6} ]] ; then
-+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C compiler version number has a part larger than 99999: $CC_VERSION. Comparisons might be wrong." >&5
-+$as_echo "$as_me: WARNING: C compiler version number has a part larger than 99999: $CC_VERSION. Comparisons might be wrong." >&2;}
-+  fi
-+
-+  COMPARABLE_ACTUAL_VERSION=`$AWK -F. '{ printf("%05d%05d%05d\n", $1, $2, $3) }' <<< "$CC_VERSION"`
-+
-+
-   ### Locate other tools
- 
-   if test "x$OPENJDK_TARGET_OS" = xmacosx; then
-@@ -24831,7 +24891,8 @@
- 
- 
-       COMPILER_TYPE=CL
--      CCXXFLAGS="$CCXXFLAGS -nologo"
-+      # silence copyright notice and other headers.
-+      COMMON_CCXXFLAGS="$COMMON_CCXXFLAGS -nologo"
- 
- fi
- 
-@@ -29664,12 +29725,57 @@
-   #
-   # Now setup the CFLAGS and LDFLAGS for the JDK build.
-   # Later we will also have CFLAGS and LDFLAGS for the hotspot subrepo build.
-+  #    CFLAGS_JDK    - C Compiler flags
-+  #    CXXFLAGS_JDK  - C++ Compiler flags
-+  #    COMMON_CCXXFLAGS_JDK - common to C and C++
-   #
-   case $COMPILER_NAME in
-     gcc )
--      CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -W -Wall -Wno-unused -Wno-parentheses \
-+      COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS $COMMON_CCXXFLAGS_JDK -W -Wall -Wno-unused -Wno-parentheses \
-       -pipe \
-       -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE"
-+      CXXSTD_CXXFLAG="-std=gnu++98"
-+
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C++ compiler supports \"$CXXSTD_CXXFLAG $CFLAGS_WARNINGS_ARE_ERRORS\"" >&5
-+$as_echo_n "checking if the C++ compiler supports \"$CXXSTD_CXXFLAG $CFLAGS_WARNINGS_ARE_ERRORS\"... " >&6; }
-+  supports=yes
-+
-+  saved_cxxflags="$CXXFLAGS"
-+  CXXFLAGS="$CXXFLAG $CXXSTD_CXXFLAG $CFLAGS_WARNINGS_ARE_ERRORS"
-+  ac_ext=cpp
-+ac_cpp='$CXXCPP $CPPFLAGS'
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-+
-+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h.  */
-+int i;
-+_ACEOF
-+if ac_fn_cxx_try_compile "$LINENO"; then :
-+
-+else
-+  supports=no
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+  ac_ext=cpp
-+ac_cpp='$CXXCPP $CPPFLAGS'
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-+
-+  CXXFLAGS="$saved_cxxflags"
-+
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
-+$as_echo "$supports" >&6; }
-+  if test "x$supports" = "xyes" ; then
-+    :
-+  else
-+    CXXSTD_CXXFLAG=""
-+  fi
-+
-+      CXXFLAGS_JDK="${CXXFLAGS_JDK} ${CXXSTD_CXXFLAG}"
-+
-       case $OPENJDK_TARGET_CPU_ARCH in
-         arm )
-           # on arm we don't prevent gcc to omit frame pointer but do prevent strict aliasing
-@@ -29679,16 +29785,234 @@
-           # on ppc we don't prevent gcc to omit frame pointer nor strict-aliasing
-           ;;
-         * )
--          CCXXFLAGS_JDK="$CCXXFLAGS_JDK -fno-omit-frame-pointer"
-+          COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -fno-omit-frame-pointer"
-           CFLAGS_JDK="${CFLAGS_JDK} -fno-strict-aliasing"
-           ;;
-       esac
-+
-+  REFERENCE_VERSION=6
-+
-+  if  [[ "$REFERENCE_VERSION" =~ (.*\.){3} ]] ; then
-+    as_fn_error $? "Internal error: Cannot compare to $REFERENCE_VERSION, only three parts (X.Y.Z) is supported" "$LINENO" 5
-+  fi
-+
-+  if  [[ "$REFERENCE_VERSION" =~ [0-9]{6} ]] ; then
-+    as_fn_error $? "Internal error: Cannot compare to $REFERENCE_VERSION, only parts < 99999 is supported" "$LINENO" 5
-+  fi
-+
-+  # Version comparison method inspired by http://stackoverflow.com/a/24067243
-+  COMPARABLE_REFERENCE_VERSION=`$AWK -F. '{ printf("%05d%05d%05d\n", $1, $2, $3) }' <<< "$REFERENCE_VERSION"`
-+
-+  if test $COMPARABLE_ACTUAL_VERSION -ge $COMPARABLE_REFERENCE_VERSION ; then
-+
-+  # These flags are required for GCC 6 builds as undefined behaviour in OpenJDK code
-+  # runs afoul of the more aggressive versions of these optimisations.
-+  # Notably, value range propagation now assumes that the this pointer of C++
-+  # member functions is non-null.
-+  NO_DELETE_NULL_POINTER_CHECKS_CFLAG="-fno-delete-null-pointer-checks"
-+
-+
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C compiler supports \"$NO_DELETE_NULL_POINTER_CHECKS_CFLAG -Werror\"" >&5
-+$as_echo_n "checking if the C compiler supports \"$NO_DELETE_NULL_POINTER_CHECKS_CFLAG -Werror\"... " >&6; }
-+  supports=yes
-+
-+  saved_cflags="$CFLAGS"
-+  CFLAGS="$CFLAGS $NO_DELETE_NULL_POINTER_CHECKS_CFLAG -Werror"
-+  ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+
-+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h.  */
-+int i;
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+
-+else
-+  supports=no
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+  ac_ext=cpp
-+ac_cpp='$CXXCPP $CPPFLAGS'
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-+
-+  CFLAGS="$saved_cflags"
-+
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
-+$as_echo "$supports" >&6; }
-+  if test "x$supports" = "xyes" ; then
-+    C_COMP_SUPPORTS="yes"
-+  else
-+    C_COMP_SUPPORTS="no"
-+  fi
-+
-+
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C++ compiler supports \"$NO_DELETE_NULL_POINTER_CHECKS_CFLAG -Werror\"" >&5
-+$as_echo_n "checking if the C++ compiler supports \"$NO_DELETE_NULL_POINTER_CHECKS_CFLAG -Werror\"... " >&6; }
-+  supports=yes
-+
-+  saved_cxxflags="$CXXFLAGS"
-+  CXXFLAGS="$CXXFLAG $NO_DELETE_NULL_POINTER_CHECKS_CFLAG -Werror"
-+  ac_ext=cpp
-+ac_cpp='$CXXCPP $CPPFLAGS'
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-+
-+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h.  */
-+int i;
-+_ACEOF
-+if ac_fn_cxx_try_compile "$LINENO"; then :
-+
-+else
-+  supports=no
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+  ac_ext=cpp
-+ac_cpp='$CXXCPP $CPPFLAGS'
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-+
-+  CXXFLAGS="$saved_cxxflags"
-+
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
-+$as_echo "$supports" >&6; }
-+  if test "x$supports" = "xyes" ; then
-+    CXX_COMP_SUPPORTS="yes"
-+  else
-+    CXX_COMP_SUPPORTS="no"
-+  fi
-+
-+
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if both compilers support \"$NO_DELETE_NULL_POINTER_CHECKS_CFLAG -Werror\"" >&5
-+$as_echo_n "checking if both compilers support \"$NO_DELETE_NULL_POINTER_CHECKS_CFLAG -Werror\"... " >&6; }
-+  supports=no
-+  if test "x$C_COMP_SUPPORTS" = "xyes" -a "x$CXX_COMP_SUPPORTS" = "xyes"; then supports=yes; fi
-+
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
-+$as_echo "$supports" >&6; }
-+  if test "x$supports" = "xyes" ; then
-+    :
-+  else
-+    NO_DELETE_NULL_POINTER_CHECKS_CFLAG=""
-+  fi
-+
-+
-+  NO_LIFETIME_DSE_CFLAG="-fno-lifetime-dse"
-+
-+
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C compiler supports \"$NO_LIFETIME_DSE_CFLAG -Werror\"" >&5
-+$as_echo_n "checking if the C compiler supports \"$NO_LIFETIME_DSE_CFLAG -Werror\"... " >&6; }
-+  supports=yes
-+
-+  saved_cflags="$CFLAGS"
-+  CFLAGS="$CFLAGS $NO_LIFETIME_DSE_CFLAG -Werror"
-+  ac_ext=c
-+ac_cpp='$CPP $CPPFLAGS'
-+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_c_compiler_gnu
-+
-+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h.  */
-+int i;
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+
-+else
-+  supports=no
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+  ac_ext=cpp
-+ac_cpp='$CXXCPP $CPPFLAGS'
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-+
-+  CFLAGS="$saved_cflags"
-+
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
-+$as_echo "$supports" >&6; }
-+  if test "x$supports" = "xyes" ; then
-+    C_COMP_SUPPORTS="yes"
-+  else
-+    C_COMP_SUPPORTS="no"
-+  fi
-+
-+
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C++ compiler supports \"$NO_LIFETIME_DSE_CFLAG -Werror\"" >&5
-+$as_echo_n "checking if the C++ compiler supports \"$NO_LIFETIME_DSE_CFLAG -Werror\"... " >&6; }
-+  supports=yes
-+
-+  saved_cxxflags="$CXXFLAGS"
-+  CXXFLAGS="$CXXFLAG $NO_LIFETIME_DSE_CFLAG -Werror"
-+  ac_ext=cpp
-+ac_cpp='$CXXCPP $CPPFLAGS'
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-+
-+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h.  */
-+int i;
-+_ACEOF
-+if ac_fn_cxx_try_compile "$LINENO"; then :
-+
-+else
-+  supports=no
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+  ac_ext=cpp
-+ac_cpp='$CXXCPP $CPPFLAGS'
-+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-+
-+  CXXFLAGS="$saved_cxxflags"
-+
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
-+$as_echo "$supports" >&6; }
-+  if test "x$supports" = "xyes" ; then
-+    CXX_COMP_SUPPORTS="yes"
-+  else
-+    CXX_COMP_SUPPORTS="no"
-+  fi
-+
-+
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if both compilers support \"$NO_LIFETIME_DSE_CFLAG -Werror\"" >&5
-+$as_echo_n "checking if both compilers support \"$NO_LIFETIME_DSE_CFLAG -Werror\"... " >&6; }
-+  supports=no
-+  if test "x$C_COMP_SUPPORTS" = "xyes" -a "x$CXX_COMP_SUPPORTS" = "xyes"; then supports=yes; fi
-+
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
-+$as_echo "$supports" >&6; }
-+  if test "x$supports" = "xyes" ; then
-+    :
-+  else
-+    NO_LIFETIME_DSE_CFLAG=""
-+  fi
-+
-+  CFLAGS_JDK="${CFLAGS_JDK} ${NO_DELETE_NULL_POINTER_CHECKS_CFLAG} ${NO_LIFETIME_DSE_CFLAG}"
-+
-+
-+
-+  else
-+    :
-+  fi
-+
-       ;;
-     ossc )
--      CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -DTRACING -DMACRO_MEMSYS_OPS -DBREAKPTS"
-+      COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS $COMMON_CCXXFLAGS_JDK -DTRACING -DMACRO_MEMSYS_OPS -DBREAKPTS"
-       case $OPENJDK_TARGET_CPU_ARCH in
-         x86 )
--          CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DcpuIntel -Di586 -D$OPENJDK_TARGET_CPU_LEGACY_LIB"
-+          COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DcpuIntel -Di586 -D$OPENJDK_TARGET_CPU_LEGACY_LIB"
-           CFLAGS_JDK="$CFLAGS_JDK -erroff=E_BAD_PRAGMA_PACK_VALUE"
-           ;;
-       esac
-@@ -29707,16 +30031,16 @@
-       LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK"
-       ;;
-     cl )
--      CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -Zi -MD -Zc:wchar_t- -W3 -wd4800 \
-+      COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS $COMMON_CCXXFLAGS_JDK -Zi -MD -Zc:wchar_t- -W3 -wd4800 \
-       -D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB -DWIN32_LEAN_AND_MEAN \
-       -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE \
-       -DWIN32 -DIAL"
-       case $OPENJDK_TARGET_CPU in
-         x86 )
--          CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_X86_ -Dx86"
-+          COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_X86_ -Dx86"
-           ;;
-         x86_64 )
--          CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_AMD64_ -Damd64"
-+          COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_AMD64_ -Damd64"
-           ;;
-       esac
-       ;;
-@@ -29746,7 +30070,7 @@
-       ;;
-   esac
- 
--  CCXXFLAGS_JDK="$CCXXFLAGS_JDK $ADD_LP64"
-+  COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK $ADD_LP64"
- 
-   # The package path is used only on macosx?
-   PACKAGE_PATH=/opt/local
-@@ -29759,27 +30083,27 @@
-     #   Note: -Dmacro         is the same as    #define macro 1
-     #         -Dmacro=        is the same as    #define macro
-     if test "x$OPENJDK_TARGET_OS" = xsolaris; then
--      CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_LITTLE_ENDIAN="
--    else
--      CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_LITTLE_ENDIAN"
--    fi
--  else
--    CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_BIG_ENDIAN"
-+      COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_LITTLE_ENDIAN="
-+    else
-+      COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_LITTLE_ENDIAN"
-+    fi
-+  else
-+    COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_BIG_ENDIAN"
-   fi
-   if test "x$OPENJDK_TARGET_OS" = xlinux; then
--    CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DLINUX"
-+    COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DLINUX"
-   fi
-   if test "x$OPENJDK_TARGET_OS" = xwindows; then
--    CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DWINDOWS"
-+    COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DWINDOWS"
-   fi
-   if test "x$OPENJDK_TARGET_OS" = xsolaris; then
--    CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DSOLARIS"
-+    COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DSOLARIS"
-   fi
-   if test "x$OPENJDK_TARGET_OS" = xaix; then
--    CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DAIX -DPPC64"
-+    COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DAIX -DPPC64"
-   fi
-   if test "x$OPENJDK_TARGET_OS" = xmacosx; then
--    CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DMACOSX -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT"
-+    COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DMACOSX -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT"
-     # Setting these parameters makes it an error to link to macosx APIs that are
-     # newer than the given OS version and makes the linked binaries compatible even
-     # if built on a newer version of the OS.
-@@ -29789,25 +30113,25 @@
-     # The macro takes the version with no dots, ex: 1070
-     # Let the flags variables get resolved in make for easier override on make
-     # command line.
--    CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
-+    COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
-     LDFLAGS_JDK="$LDFLAGS_JDK -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
-   fi
-   if test "x$OPENJDK_TARGET_OS" = xbsd; then
--    CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DBSD -D_ALLBSD_SOURCE"
-+    COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DBSD -D_ALLBSD_SOURCE"
-   fi
-   if test "x$DEBUG_LEVEL" = xrelease; then
--    CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DNDEBUG"
-+    COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DNDEBUG"
-   if test "x$OPENJDK_TARGET_OS" = xsolaris; then
--    CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DTRIMMED"
--  fi
--  else
--    CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DDEBUG"
--  fi
--
--  CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DARCH='\"$OPENJDK_TARGET_CPU_LEGACY\"' -D$OPENJDK_TARGET_CPU_LEGACY"
--  CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DRELEASE='\"\$(RELEASE)\"'"
--
--  CCXXFLAGS_JDK="$CCXXFLAGS_JDK \
-+    COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DTRIMMED"
-+  fi
-+  else
-+    COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DDEBUG"
-+  fi
-+
-+  COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DARCH='\"$OPENJDK_TARGET_CPU_LEGACY\"' -D$OPENJDK_TARGET_CPU_LEGACY"
-+  COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DRELEASE='\"\$(RELEASE)\"'"
-+
-+  COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK \
-       -I${JDK_OUTPUTDIR}/include \
-       -I${JDK_OUTPUTDIR}/include/$OPENJDK_TARGET_OS \
-       -I${JDK_TOPDIR}/src/share/javavm/export \
-@@ -29816,12 +30140,12 @@
-       -I${JDK_TOPDIR}/src/$OPENJDK_TARGET_OS_API_DIR/native/common"
- 
-   # The shared libraries are compiled using the picflag.
--  CFLAGS_JDKLIB="$CCXXFLAGS_JDK $CFLAGS_JDK $PICFLAG $CFLAGS_JDKLIB_EXTRA"
--  CXXFLAGS_JDKLIB="$CCXXFLAGS_JDK $CXXFLAGS_JDK $PICFLAG $CXXFLAGS_JDKLIB_EXTRA "
-+  CFLAGS_JDKLIB="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK $PICFLAG $CFLAGS_JDKLIB_EXTRA"
-+  CXXFLAGS_JDKLIB="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK $PICFLAG $CXXFLAGS_JDKLIB_EXTRA "
- 
-   # Executable flags
--  CFLAGS_JDKEXE="$CCXXFLAGS_JDK $CFLAGS_JDK"
--  CXXFLAGS_JDKEXE="$CCXXFLAGS_JDK $CXXFLAGS_JDK"
-+  CFLAGS_JDKEXE="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK"
-+  CXXFLAGS_JDKEXE="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK"
- 
-   # Now this is odd. The JDK native libraries have to link against libjvm.so
-   # On 32-bit machines there is normally two distinct libjvm.so:s, client and server.
-@@ -29905,7 +30229,6 @@
- 
- 
- 
--
-   # Some Zero and Shark settings.
-   # ZERO_ARCHFLAG tells the compiler which mode to build for
-   case "${OPENJDK_TARGET_CPU}" in
-@@ -29916,8 +30239,9 @@
-       ZERO_ARCHFLAG="${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}"
-   esac
- 
--  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler supports \"$ZERO_ARCHFLAG\"" >&5
--$as_echo_n "checking if compiler supports \"$ZERO_ARCHFLAG\"... " >&6; }
-+
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C compiler supports \"$ZERO_ARCHFLAG\"" >&5
-+$as_echo_n "checking if the C compiler supports \"$ZERO_ARCHFLAG\"... " >&6; }
-   supports=yes
- 
-   saved_cflags="$CFLAGS"
-@@ -29946,6 +30270,19 @@
- 
-   CFLAGS="$saved_cflags"
- 
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
-+$as_echo "$supports" >&6; }
-+  if test "x$supports" = "xyes" ; then
-+    C_COMP_SUPPORTS="yes"
-+  else
-+    C_COMP_SUPPORTS="no"
-+  fi
-+
-+
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C++ compiler supports \"$ZERO_ARCHFLAG\"" >&5
-+$as_echo_n "checking if the C++ compiler supports \"$ZERO_ARCHFLAG\"... " >&6; }
-+  supports=yes
-+
-   saved_cxxflags="$CXXFLAGS"
-   CXXFLAGS="$CXXFLAG $ZERO_ARCHFLAG"
-   ac_ext=cpp
-@@ -29975,6 +30312,20 @@
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
- $as_echo "$supports" >&6; }
-   if test "x$supports" = "xyes" ; then
-+    CXX_COMP_SUPPORTS="yes"
-+  else
-+    CXX_COMP_SUPPORTS="no"
-+  fi
-+
-+
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if both compilers support \"$ZERO_ARCHFLAG\"" >&5
-+$as_echo_n "checking if both compilers support \"$ZERO_ARCHFLAG\"... " >&6; }
-+  supports=no
-+  if test "x$C_COMP_SUPPORTS" = "xyes" -a "x$CXX_COMP_SUPPORTS" = "xyes"; then supports=yes; fi
-+
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
-+$as_echo "$supports" >&6; }
-+  if test "x$supports" = "xyes" ; then
-     :
-   else
-     ZERO_ARCHFLAG=""
-@@ -29985,8 +30336,9 @@
-   # Check that the compiler supports -mX (or -qX on AIX) flags
-   # Set COMPILER_SUPPORTS_TARGET_BITS_FLAG to 'true' if it does
- 
--  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler supports \"${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}\"" >&5
--$as_echo_n "checking if compiler supports \"${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}\"... " >&6; }
-+
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C compiler supports \"${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}\"" >&5
-+$as_echo_n "checking if the C compiler supports \"${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}\"... " >&6; }
-   supports=yes
- 
-   saved_cflags="$CFLAGS"
-@@ -30015,6 +30367,19 @@
- 
-   CFLAGS="$saved_cflags"
- 
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
-+$as_echo "$supports" >&6; }
-+  if test "x$supports" = "xyes" ; then
-+    C_COMP_SUPPORTS="yes"
-+  else
-+    C_COMP_SUPPORTS="no"
-+  fi
-+
-+
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C++ compiler supports \"${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}\"" >&5
-+$as_echo_n "checking if the C++ compiler supports \"${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}\"... " >&6; }
-+  supports=yes
-+
-   saved_cxxflags="$CXXFLAGS"
-   CXXFLAGS="$CXXFLAG ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}"
-   ac_ext=cpp
-@@ -30044,6 +30409,20 @@
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
- $as_echo "$supports" >&6; }
-   if test "x$supports" = "xyes" ; then
-+    CXX_COMP_SUPPORTS="yes"
-+  else
-+    CXX_COMP_SUPPORTS="no"
-+  fi
-+
-+
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if both compilers support \"${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}\"" >&5
-+$as_echo_n "checking if both compilers support \"${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}\"... " >&6; }
-+  supports=no
-+  if test "x$C_COMP_SUPPORTS" = "xyes" -a "x$CXX_COMP_SUPPORTS" = "xyes"; then supports=yes; fi
-+
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
-+$as_echo "$supports" >&6; }
-+  if test "x$supports" = "xyes" ; then
-     COMPILER_SUPPORTS_TARGET_BITS_FLAG=true
-   else
-     COMPILER_SUPPORTS_TARGET_BITS_FLAG=false
-diff --git a/common/autoconf/hotspot-spec.gmk.in b/common/autoconf/hotspot-spec.gmk.in
---- a/common/autoconf/hotspot-spec.gmk.in
-+++ b/common/autoconf/hotspot-spec.gmk.in
-@@ -1,5 +1,5 @@
- #
--# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
-+# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
- # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- #
- # This code is free software; you can redistribute it and/or modify it
-@@ -109,7 +109,8 @@
- MT:=@HOTSPOT_MT@
- RC:=@HOTSPOT_RC@
- 
--EXTRA_CFLAGS=@LEGACY_EXTRA_CFLAGS@
-+EXTRA_CFLAGS=@LEGACY_EXTRA_CFLAGS@ $(NO_DELETE_NULL_POINTER_CHECKS_CFLAG) \
-+				   $(NO_LIFETIME_DSE_CFLAG) $(CXXSTD_CXXFLAG)
- EXTRA_CXXFLAGS=@LEGACY_EXTRA_CXXFLAGS@
- EXTRA_LDFLAGS=@LEGACY_EXTRA_LDFLAGS@
- 
-diff --git a/common/autoconf/spec.gmk.in b/common/autoconf/spec.gmk.in
---- a/common/autoconf/spec.gmk.in
-+++ b/common/autoconf/spec.gmk.in
-@@ -331,6 +331,10 @@
- CFLAGS_JDKEXE:=@CFLAGS_JDKEXE@
- CXXFLAGS_JDKEXE:=@CXXFLAGS_JDKEXE@
- 
-+NO_DELETE_NULL_POINTER_CHECKS_CFLAG=@NO_DELETE_NULL_POINTER_CHECKS_CFLAG@
-+NO_LIFETIME_DSE_CFLAG=@NO_LIFETIME_DSE_CFLAG@
-+CXXSTD_CXXFLAG=@CXXSTD_CXXFLAG@
-+
- CXX:=@FIXPATH@ @CCACHE@ @CXX@
- #CXXFLAGS:=@CXXFLAGS@
- 
-diff --git a/common/autoconf/toolchain.m4 b/common/autoconf/toolchain.m4
---- a/common/autoconf/toolchain.m4
-+++ b/common/autoconf/toolchain.m4
-@@ -23,9 +23,59 @@
- # questions.
- #
- 
-+# Prepare the system so that TOOLCHAIN_CHECK_COMPILER_VERSION can be called.
-+# Must have CC_VERSION_NUMBER and CXX_VERSION_NUMBER.
-+AC_DEFUN([TOOLCHAIN_PREPARE_FOR_VERSION_COMPARISONS],
-+[
-+  if test "x$CC_VERSION" != "x$CXX_VERSION"; then
-+    AC_MSG_WARN([C and C++ compiler has different version numbers, $CC_VERSION vs $CXX_VERSION.])
-+    AC_MSG_WARN([This typically indicates a broken setup, and is not supported])
-+  fi
-+
-+  # We only check CC_VERSION since we assume CXX_VERSION is equal.
-+  if [ [[ "$CC_VERSION" =~ (.*\.){3} ]] ]; then
-+    AC_MSG_WARN([C compiler version number has more than three parts (X.Y.Z): $CC_VERSION. Comparisons might be wrong.])
-+  fi
-+
-+  if [ [[  "$CC_VERSION" =~ [0-9]{6} ]] ]; then
-+    AC_MSG_WARN([C compiler version number has a part larger than 99999: $CC_VERSION. Comparisons might be wrong.])
-+  fi
-+
-+  COMPARABLE_ACTUAL_VERSION=`$AWK -F. '{ printf("%05d%05d%05d\n", [$]1, [$]2, [$]3) }' <<< "$CC_VERSION"`
-+])
-+
-+# Check if the configured compiler (C and C++) is of a specific version or
-+# newer. TOOLCHAIN_PREPARE_FOR_VERSION_COMPARISONS must have been called before.
-+#
-+# Arguments:
-+#   $1:   The version string to check against the found version
-+#   $2:   block to run if the compiler is at least this version (>=)
-+#   $3:   block to run if the compiler is older than this version (<)
-+AC_DEFUN([TOOLCHAIN_CHECK_COMPILER_VERSION],
-+[
-+  REFERENCE_VERSION=$1
-+
-+  if [ [[ "$REFERENCE_VERSION" =~ (.*\.){3} ]] ]; then
-+    AC_MSG_ERROR([Internal error: Cannot compare to $REFERENCE_VERSION, only three parts (X.Y.Z) is supported])
-+  fi
-+
-+  if [ [[ "$REFERENCE_VERSION" =~ [0-9]{6} ]] ]; then
-+    AC_MSG_ERROR([Internal error: Cannot compare to $REFERENCE_VERSION, only parts < 99999 is supported])
-+  fi
-+
-+  # Version comparison method inspired by http://stackoverflow.com/a/24067243
-+  COMPARABLE_REFERENCE_VERSION=`$AWK -F. '{ printf("%05d%05d%05d\n", [$]1, [$]2, [$]3) }' <<< "$REFERENCE_VERSION"`
-+
-+  if test $COMPARABLE_ACTUAL_VERSION -ge $COMPARABLE_REFERENCE_VERSION ; then
-+    m4_ifval([$2], [$2], [:])
-+  else
-+    m4_ifval([$3], [$3], [:])
-+  fi
-+])
-+
- # $1 = compiler to test (CC or CXX)
- # $2 = human readable name of compiler (C or C++)
--AC_DEFUN([TOOLCHAIN_CHECK_COMPILER_VERSION],
-+AC_DEFUN([TOOLCHAIN_EXTRACT_COMPILER_VERSION],
- [
-   COMPILER=[$]$1
-   COMPILER_NAME=$2
-@@ -81,7 +131,8 @@
- 
-     # First line typically looks something like:
-     # gcc (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2
--    COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^.* \(@<:@1-9@:>@@<:@0-9.@:>@*\)/\1/p"`
-+    COMPILER_VERSION=`$ECHO $COMPILER_VERSION_TEST | \
-+        $SED -e 's/^.* \(@<:@1-9@:>@\.@<:@0-9.@:>@*\)@<:@^0-9.@:>@.*$/\1/'`
-     COMPILER_VENDOR=`$ECHO $COMPILER_VERSION_TEST | $SED -n "s/^\(.*\) @<:@1-9@:>@@<:@0-9.@:>@*/\1/p"`
-   fi
-   # This sets CC_VERSION or CXX_VERSION. (This comment is a grep marker)
-@@ -181,7 +232,7 @@
-     AC_MSG_RESULT([no, keeping $1])
-     $1="$TEST_COMPILER"
-   fi
--  TOOLCHAIN_CHECK_COMPILER_VERSION([$1], [$COMPILER_NAME])
-+  TOOLCHAIN_EXTRACT_COMPILER_VERSION([$1], [$COMPILER_NAME])
- ])
- 
- 
-@@ -385,6 +436,12 @@
-   # Now that we have resolved CXX ourself, let autoconf have its go at it
-   AC_PROG_CXX([$CXX])
- 
-+  # This is the compiler version number on the form X.Y[.Z]
-+  AC_SUBST(CC_VERSION)
-+  AC_SUBST(CXX_VERSION)
-+
-+  TOOLCHAIN_PREPARE_FOR_VERSION_COMPARISONS
-+
-   ### Locate other tools
- 
-   if test "x$OPENJDK_TARGET_OS" = xmacosx; then
-@@ -507,7 +564,8 @@
-       BASIC_FIXUP_EXECUTABLE(DUMPBIN)
- 
-       COMPILER_TYPE=CL
--      CCXXFLAGS="$CCXXFLAGS -nologo"
-+      # silence copyright notice and other headers.
-+      COMMON_CCXXFLAGS="$COMMON_CCXXFLAGS -nologo"
-   ])
-   AC_SUBST(RC_FLAGS)
-   AC_SUBST(COMPILER_TYPE)
-@@ -954,12 +1012,20 @@
-   #
-   # Now setup the CFLAGS and LDFLAGS for the JDK build.
-   # Later we will also have CFLAGS and LDFLAGS for the hotspot subrepo build.
-+  #    CFLAGS_JDK    - C Compiler flags
-+  #    CXXFLAGS_JDK  - C++ Compiler flags
-+  #    COMMON_CCXXFLAGS_JDK - common to C and C++
-   #
-   case $COMPILER_NAME in
-     gcc )
--      CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -W -Wall -Wno-unused -Wno-parentheses \
-+      COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS $COMMON_CCXXFLAGS_JDK -W -Wall -Wno-unused -Wno-parentheses \
-       -pipe \
-       -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE"
-+      CXXSTD_CXXFLAG="-std=gnu++98"
-+      TOOLCHAIN_CXX_COMPILER_CHECK_ARGUMENTS([$CXXSTD_CXXFLAG $CFLAGS_WARNINGS_ARE_ERRORS],
-+    					     [], [CXXSTD_CXXFLAG=""])
-+      CXXFLAGS_JDK="${CXXFLAGS_JDK} ${CXXSTD_CXXFLAG}"
-+      AC_SUBST([CXXSTD_CXXFLAG])
-       case $OPENJDK_TARGET_CPU_ARCH in
-         arm )
-           # on arm we don't prevent gcc to omit frame pointer but do prevent strict aliasing
-@@ -969,16 +1035,17 @@
-           # on ppc we don't prevent gcc to omit frame pointer nor strict-aliasing
-           ;;
-         * )
--          CCXXFLAGS_JDK="$CCXXFLAGS_JDK -fno-omit-frame-pointer"
-+          COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -fno-omit-frame-pointer"
-           CFLAGS_JDK="${CFLAGS_JDK} -fno-strict-aliasing"
-           ;;
-       esac
-+      TOOLCHAIN_CHECK_COMPILER_VERSION(6, TOOLCHAIN_SETUP_GCC6_COMPILER_FLAGS)
-       ;;
-     ossc )
--      CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -DTRACING -DMACRO_MEMSYS_OPS -DBREAKPTS"
-+      COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS $COMMON_CCXXFLAGS_JDK -DTRACING -DMACRO_MEMSYS_OPS -DBREAKPTS"
-       case $OPENJDK_TARGET_CPU_ARCH in
-         x86 )
--          CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DcpuIntel -Di586 -D$OPENJDK_TARGET_CPU_LEGACY_LIB"
-+          COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DcpuIntel -Di586 -D$OPENJDK_TARGET_CPU_LEGACY_LIB"
-           CFLAGS_JDK="$CFLAGS_JDK -erroff=E_BAD_PRAGMA_PACK_VALUE"
-           ;;
-       esac
-@@ -997,16 +1064,16 @@
-       LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK"
-       ;;
-     cl )
--      CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -Zi -MD -Zc:wchar_t- -W3 -wd4800 \
-+      COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS $COMMON_CCXXFLAGS_JDK -Zi -MD -Zc:wchar_t- -W3 -wd4800 \
-       -D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB -DWIN32_LEAN_AND_MEAN \
-       -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE \
-       -DWIN32 -DIAL"
-       case $OPENJDK_TARGET_CPU in
-         x86 )
--          CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_X86_ -Dx86"
-+          COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_X86_ -Dx86"
-           ;;
-         x86_64 )
--          CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_AMD64_ -Damd64"
-+          COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_AMD64_ -Damd64"
-           ;;
-       esac
-       ;;
-@@ -1036,7 +1103,7 @@
-       ;;
-   esac
- 
--  CCXXFLAGS_JDK="$CCXXFLAGS_JDK $ADD_LP64"
-+  COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK $ADD_LP64"
- 
-   # The package path is used only on macosx?
-   PACKAGE_PATH=/opt/local
-@@ -1049,27 +1116,27 @@
-     #   Note: -Dmacro         is the same as    #define macro 1
-     #         -Dmacro=        is the same as    #define macro
-     if test "x$OPENJDK_TARGET_OS" = xsolaris; then
--      CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_LITTLE_ENDIAN="
-+      COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_LITTLE_ENDIAN="
-     else
--      CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_LITTLE_ENDIAN"
-+      COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_LITTLE_ENDIAN"
-     fi
-   else
--    CCXXFLAGS_JDK="$CCXXFLAGS_JDK -D_BIG_ENDIAN"
-+    COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_BIG_ENDIAN"
-   fi
-   if test "x$OPENJDK_TARGET_OS" = xlinux; then
--    CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DLINUX"
-+    COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DLINUX"
-   fi
-   if test "x$OPENJDK_TARGET_OS" = xwindows; then
--    CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DWINDOWS"
-+    COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DWINDOWS"
-   fi
-   if test "x$OPENJDK_TARGET_OS" = xsolaris; then
--    CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DSOLARIS"
-+    COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DSOLARIS"
-   fi
-   if test "x$OPENJDK_TARGET_OS" = xaix; then
--    CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DAIX -DPPC64"
-+    COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DAIX -DPPC64"
-   fi
-   if test "x$OPENJDK_TARGET_OS" = xmacosx; then
--    CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DMACOSX -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT"
-+    COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DMACOSX -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT"
-     # Setting these parameters makes it an error to link to macosx APIs that are
-     # newer than the given OS version and makes the linked binaries compatible even
-     # if built on a newer version of the OS.
-@@ -1079,25 +1146,25 @@
-     # The macro takes the version with no dots, ex: 1070
-     # Let the flags variables get resolved in make for easier override on make
-     # command line.
--    CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
-+    COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
-     LDFLAGS_JDK="$LDFLAGS_JDK -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
-   fi
-   if test "x$OPENJDK_TARGET_OS" = xbsd; then
--    CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DBSD -D_ALLBSD_SOURCE"
-+    COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DBSD -D_ALLBSD_SOURCE"
-   fi
-   if test "x$DEBUG_LEVEL" = xrelease; then
--    CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DNDEBUG"
-+    COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DNDEBUG"
-   if test "x$OPENJDK_TARGET_OS" = xsolaris; then
--    CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DTRIMMED"
-+    COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DTRIMMED"
-   fi
-   else
--    CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DDEBUG"
-+    COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DDEBUG"
-   fi
- 
--  CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DARCH='\"$OPENJDK_TARGET_CPU_LEGACY\"' -D$OPENJDK_TARGET_CPU_LEGACY"
--  CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DRELEASE='\"\$(RELEASE)\"'"
-+  COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DARCH='\"$OPENJDK_TARGET_CPU_LEGACY\"' -D$OPENJDK_TARGET_CPU_LEGACY"
-+  COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DRELEASE='\"\$(RELEASE)\"'"
- 
--  CCXXFLAGS_JDK="$CCXXFLAGS_JDK \
-+  COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK \
-       -I${JDK_OUTPUTDIR}/include \
-       -I${JDK_OUTPUTDIR}/include/$OPENJDK_TARGET_OS \
-       -I${JDK_TOPDIR}/src/share/javavm/export \
-@@ -1106,12 +1173,12 @@
-       -I${JDK_TOPDIR}/src/$OPENJDK_TARGET_OS_API_DIR/native/common"
- 
-   # The shared libraries are compiled using the picflag.
--  CFLAGS_JDKLIB="$CCXXFLAGS_JDK $CFLAGS_JDK $PICFLAG $CFLAGS_JDKLIB_EXTRA"
--  CXXFLAGS_JDKLIB="$CCXXFLAGS_JDK $CXXFLAGS_JDK $PICFLAG $CXXFLAGS_JDKLIB_EXTRA "
-+  CFLAGS_JDKLIB="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK $PICFLAG $CFLAGS_JDKLIB_EXTRA"
-+  CXXFLAGS_JDKLIB="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK $PICFLAG $CXXFLAGS_JDKLIB_EXTRA "
- 
-   # Executable flags
--  CFLAGS_JDKEXE="$CCXXFLAGS_JDK $CFLAGS_JDK"
--  CXXFLAGS_JDKEXE="$CCXXFLAGS_JDK $CXXFLAGS_JDK"
-+  CFLAGS_JDKEXE="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK"
-+  CXXFLAGS_JDKEXE="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK"
- 
-   # Now this is odd. The JDK native libraries have to link against libjvm.so
-   # On 32-bit machines there is normally two distinct libjvm.so:s, client and server.
-@@ -1196,13 +1263,13 @@
- ])
- 
- 
--# TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([ARGUMENT], [RUN-IF-TRUE],
--#                                   [RUN-IF-FALSE])
-+# TOOLCHAIN_C_COMPILER_CHECK_ARGUMENTS([ARGUMENT], [RUN-IF-TRUE],
-+#                                      [RUN-IF-FALSE])
- # ------------------------------------------------------------
--# Check that the c and c++ compilers support an argument
--AC_DEFUN([TOOLCHAIN_COMPILER_CHECK_ARGUMENTS],
-+# Check that the C compiler supports an argument
-+AC_DEFUN([TOOLCHAIN_C_COMPILER_CHECK_ARGUMENTS],
- [
--  AC_MSG_CHECKING([if compiler supports "$1"])
-+  AC_MSG_CHECKING([if the C compiler supports "$1"])
-   supports=yes
- 
-   saved_cflags="$CFLAGS"
-@@ -1213,6 +1280,23 @@
-   AC_LANG_POP([C])
-   CFLAGS="$saved_cflags"
- 
-+  AC_MSG_RESULT([$supports])
-+  if test "x$supports" = "xyes" ; then
-+    m4_ifval([$2], [$2], [:])
-+  else
-+    m4_ifval([$3], [$3], [:])
-+  fi
-+])
-+
-+# TOOLCHAIN_CXX_COMPILER_CHECK_ARGUMENTS([ARGUMENT], [RUN-IF-TRUE],
-+#                                        [RUN-IF-FALSE])
-+# ------------------------------------------------------------
-+# Check that the C++ compiler supports an argument
-+AC_DEFUN([TOOLCHAIN_CXX_COMPILER_CHECK_ARGUMENTS],
-+[
-+  AC_MSG_CHECKING([if the C++ compiler supports "$1"])
-+  supports=yes
-+
-   saved_cxxflags="$CXXFLAGS"
-   CXXFLAGS="$CXXFLAG $1"
-   AC_LANG_PUSH([C++])
-@@ -1220,7 +1304,32 @@
-       [supports=no])
-   AC_LANG_POP([C++])
-   CXXFLAGS="$saved_cxxflags"
-+  
-+  AC_MSG_RESULT([$supports])
-+  if test "x$supports" = "xyes" ; then
-+    m4_ifval([$2], [$2], [:])
-+  else
-+    m4_ifval([$3], [$3], [:])
-+  fi
-+])
- 
-+# TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([ARGUMENT], [RUN-IF-TRUE],
-+#                                    [RUN-IF-FALSE])
-+# ------------------------------------------------------------
-+# Check that the C and C++ compilers support an argument
-+AC_DEFUN([TOOLCHAIN_COMPILER_CHECK_ARGUMENTS],
-+[
-+  TOOLCHAIN_C_COMPILER_CHECK_ARGUMENTS([$1],
-+  				       [C_COMP_SUPPORTS="yes"],
-+				       [C_COMP_SUPPORTS="no"])
-+  TOOLCHAIN_CXX_COMPILER_CHECK_ARGUMENTS([$1],
-+  					 [CXX_COMP_SUPPORTS="yes"],
-+					 [CXX_COMP_SUPPORTS="no"])
-+
-+  AC_MSG_CHECKING([if both compilers support "$1"])
-+  supports=no
-+  if test "x$C_COMP_SUPPORTS" = "xyes" -a "x$CXX_COMP_SUPPORTS" = "xyes"; then supports=yes; fi
-+  
-   AC_MSG_RESULT([$supports])
-   if test "x$supports" = "xyes" ; then
-     m4_ifval([$2], [$2], [:])
-@@ -1311,3 +1420,20 @@
-   AC_SUBST(JT_HOME)
-   AC_SUBST(JTREGEXE)
- ])
-+
-+AC_DEFUN_ONCE([TOOLCHAIN_SETUP_GCC6_COMPILER_FLAGS],
-+[
-+  # These flags are required for GCC 6 builds as undefined behaviour in OpenJDK code
-+  # runs afoul of the more aggressive versions of these optimisations.
-+  # Notably, value range propagation now assumes that the this pointer of C++
-+  # member functions is non-null.
-+  NO_DELETE_NULL_POINTER_CHECKS_CFLAG="-fno-delete-null-pointer-checks"
-+  TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([$NO_DELETE_NULL_POINTER_CHECKS_CFLAG -Werror],
-+  				     [], [NO_DELETE_NULL_POINTER_CHECKS_CFLAG=""])
-+  AC_SUBST([NO_DELETE_NULL_POINTER_CHECKS_CFLAG])
-+  NO_LIFETIME_DSE_CFLAG="-fno-lifetime-dse"
-+  TOOLCHAIN_COMPILER_CHECK_ARGUMENTS([$NO_LIFETIME_DSE_CFLAG -Werror],
-+  				     [], [NO_LIFETIME_DSE_CFLAG=""])
-+  CFLAGS_JDK="${CFLAGS_JDK} ${NO_DELETE_NULL_POINTER_CHECKS_CFLAG} ${NO_LIFETIME_DSE_CFLAG}"
-+  AC_SUBST([NO_LIFETIME_DSE_CFLAG])
-+])



More information about the arch-commits mailing list