--- old/common/autoconf/flags.m4 2016-03-14 18:58:03.218871711 +0000 +++ new/common/autoconf/flags.m4 2016-03-14 18:58:03.130873193 +0000 @@ -585,6 +585,12 @@ elif test "x$TOOLCHAIN_TYPE" = xxlc; then CFLAGS_JDK="${CFLAGS_JDK} -qchars=signed -qfullpath -qsaveopt" CXXFLAGS_JDK="${CXXFLAGS_JDK} -qchars=signed -qfullpath -qsaveopt" + elif test "x$TOOLCHAIN_TYPE" = xgcc; then + CXXSTD_CXXFLAG="-std=gnu++98" + FLAGS_CXX_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$CXXSTD_CXXFLAG -Werror], + IF_FALSE: [CXXSTD_CXXFLAG=""]) + CXXFLAGS_JDK="${CXXFLAGS_JDK} ${CXXSTD_CXXFLAG}" + AC_SUBST([CXXSTD_CXXFLAG]) fi CFLAGS_JDK="${CFLAGS_JDK} $EXTRA_CFLAGS" @@ -622,6 +628,16 @@ CFLAGS_JDK="${CFLAGS_JDK} -fno-strict-aliasing" ;; esac + # These flags are required for GCC 6 builds but may not be available on earlier versions + NO_NULL_POINTER_CHECK_CFLAG="-fno-delete-null-pointer-checks" + FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$NO_NULL_POINTER_CHECK_CFLAG -Werror], + IF_FALSE: [NO_NULL_POINTER_CHECK_CFLAG=""]) + AC_SUBST([NO_NULL_POINTER_CHECK_CFLAG]) + NO_LIFETIME_DSE_CFLAG="-fno-lifetime-dse" + FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$NO_LIFETIME_DSE_CFLAG -Werror], + IF_FALSE: [NO_LIFETIME_DSE_CFLAG=""]) + CFLAGS_JDK="${CFLAGS_JDK} ${NO_NULL_POINTER_CHECK_CFLAG} ${NO_LIFETIME_DSE_CFLAG}" + AC_SUBST([NO_LIFETIME_DSE_CFLAG]) elif test "x$TOOLCHAIN_TYPE" = xclang; then if test "x$OPENJDK_TARGET_OS" = xlinux; then if test "x$OPENJDK_TARGET_CPU" = xx86; then @@ -918,14 +934,14 @@ AC_SUBST(LDFLAGS_TESTEXE) ]) -# FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [ARGUMENT], IF_TRUE: [RUN-IF-TRUE], -# IF_FALSE: [RUN-IF-FALSE]) +# FLAGS_C_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [ARGUMENT], IF_TRUE: [RUN-IF-TRUE], +# IF_FALSE: [RUN-IF-FALSE]) # ------------------------------------------------------------ -# Check that the c and c++ compilers support an argument -BASIC_DEFUN_NAMED([FLAGS_COMPILER_CHECK_ARGUMENTS], +# Check that the C compiler supports an argument +BASIC_DEFUN_NAMED([FLAGS_C_COMPILER_CHECK_ARGUMENTS], [*ARGUMENT IF_TRUE IF_FALSE], [$@], [ - AC_MSG_CHECKING([if compiler supports "ARG_ARGUMENT"]) + AC_MSG_CHECKING([if the C compiler supports "ARG_ARGUMENT"]) supports=yes saved_cflags="$CFLAGS" @@ -936,6 +952,26 @@ AC_LANG_POP([C]) CFLAGS="$saved_cflags" + AC_MSG_RESULT([$supports]) + if test "x$supports" = "xyes" ; then + : + ARG_IF_TRUE + else + : + ARG_IF_FALSE + fi +]) + +# FLAGS_CXX_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [ARGUMENT], IF_TRUE: [RUN-IF-TRUE], +# IF_FALSE: [RUN-IF-FALSE]) +# ------------------------------------------------------------ +# Check that the C++ compiler supports an argument +BASIC_DEFUN_NAMED([FLAGS_CXX_COMPILER_CHECK_ARGUMENTS], + [*ARGUMENT IF_TRUE IF_FALSE], [$@], +[ + AC_MSG_CHECKING([if the C++ compiler supports "ARG_ARGUMENT"]) + supports=yes + saved_cxxflags="$CXXFLAGS" CXXFLAGS="$CXXFLAG ARG_ARGUMENT" AC_LANG_PUSH([C++]) @@ -947,6 +983,34 @@ AC_MSG_RESULT([$supports]) if test "x$supports" = "xyes" ; then : + ARG_IF_TRUE + else + : + ARG_IF_FALSE + fi +]) + +# FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [ARGUMENT], IF_TRUE: [RUN-IF-TRUE], +# IF_FALSE: [RUN-IF-FALSE]) +# ------------------------------------------------------------ +# Check that the C and C++ compilers support an argument +BASIC_DEFUN_NAMED([FLAGS_COMPILER_CHECK_ARGUMENTS], + [*ARGUMENT IF_TRUE IF_FALSE], [$@], +[ + FLAGS_C_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [ARG_ARGUMENT], + IF_TRUE: [C_COMP_SUPPORTS="yes"], + IF_FALSE: [C_COMP_SUPPORTS="no"]) + FLAGS_CXX_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [ARG_ARGUMENT], + IF_TRUE: [CXX_COMP_SUPPORTS="yes"], + IF_FALSE: [CXX_COMP_SUPPORTS="no"]) + + AC_MSG_CHECKING([if both compilers support "ARG_ARGUMENT"]) + 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 + : ARG_IF_TRUE else :