< prev index next >

common/autoconf/flags.m4

Print this page




 408   elif test "x$TOOLCHAIN_TYPE" = xxlc; then
 409     CFLAGS_DEBUG_SYMBOLS="-g"
 410     CXXFLAGS_DEBUG_SYMBOLS="-g"
 411   fi
 412   AC_SUBST(CFLAGS_DEBUG_SYMBOLS)
 413   AC_SUBST(CXXFLAGS_DEBUG_SYMBOLS)
 414 
 415   # bounds, memory and behavior checking options
 416   if test "x$TOOLCHAIN_TYPE" = xgcc; then
 417     case $DEBUG_LEVEL in
 418     release )
 419       # no adjustment
 420       ;;
 421     fastdebug )
 422       # no adjustment
 423       ;;
 424     slowdebug )
 425       # Add runtime stack smashing and undefined behavior checks.
 426       # Not all versions of gcc support -fstack-protector
 427       STACK_PROTECTOR_CFLAG="-fstack-protector-all"
 428       FLAGS_COMPILER_CHECK_ARGUMENTS([$STACK_PROTECTOR_CFLAG], [], [STACK_PROTECTOR_CFLAG=""])
 429 
 430       CFLAGS_DEBUG_OPTIONS="$STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1"
 431       CXXFLAGS_DEBUG_OPTIONS="$STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1"
 432       ;;
 433     esac
 434   fi
 435 
 436   # Optimization levels
 437   if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
 438     CC_HIGHEST="$CC_HIGHEST -fns -fsimple -fsingle -xbuiltin=%all -xdepend -xrestrict -xlibmil"
 439 
 440     if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86"; then
 441       # FIXME: seems we always set -xregs=no%frameptr; put it elsewhere more global?
 442       C_O_FLAG_HIGHEST="-xO4 -Wu,-O4~yz $CC_HIGHEST -xalias_level=basic -xregs=no%frameptr"
 443       C_O_FLAG_HI="-xO4 -Wu,-O4~yz -xregs=no%frameptr"
 444       C_O_FLAG_NORM="-xO2 -Wu,-O2~yz -xregs=no%frameptr"
 445       C_O_FLAG_DEBUG="-xregs=no%frameptr"
 446       C_O_FLAG_NONE="-xregs=no%frameptr"
 447       CXX_O_FLAG_HIGHEST="-xO4 -Qoption ube -O4~yz $CC_HIGHEST -xregs=no%frameptr"
 448       CXX_O_FLAG_HI="-xO4 -Qoption ube -O4~yz -xregs=no%frameptr"


 879 
 880     JDKLIB_LIBS="-ljava -ljvm"
 881     if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
 882       JDKLIB_LIBS="$JDKLIB_LIBS -lc"
 883     fi
 884   fi
 885 
 886   AC_SUBST(LDFLAGS_JDKLIB)
 887   AC_SUBST(LDFLAGS_JDKEXE)
 888   AC_SUBST(JDKLIB_LIBS)
 889   AC_SUBST(JDKEXE_LIBS)
 890   AC_SUBST(LDFLAGS_CXX_JDK)
 891 
 892   LDFLAGS_TESTLIB="$LDFLAGS_JDKLIB"
 893   LDFLAGS_TESTEXE="$LDFLAGS_JDKEXE"
 894 
 895   AC_SUBST(LDFLAGS_TESTLIB)
 896   AC_SUBST(LDFLAGS_TESTEXE)
 897 ])
 898 
 899 # FLAGS_COMPILER_CHECK_ARGUMENTS([ARGUMENT], [RUN-IF-TRUE],
 900 #                                   [RUN-IF-FALSE])
 901 # ------------------------------------------------------------
 902 # Check that the c and c++ compilers support an argument
 903 AC_DEFUN([FLAGS_COMPILER_CHECK_ARGUMENTS],

 904 [
 905   AC_MSG_CHECKING([if compiler supports "$1"])
 906   supports=yes
 907 
 908   saved_cflags="$CFLAGS"
 909   CFLAGS="$CFLAGS $1"
 910   AC_LANG_PUSH([C])
 911   AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int i;]])], [],
 912       [supports=no])
 913   AC_LANG_POP([C])
 914   CFLAGS="$saved_cflags"
 915 
 916   saved_cxxflags="$CXXFLAGS"
 917   CXXFLAGS="$CXXFLAG $1"
 918   AC_LANG_PUSH([C++])
 919   AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int i;]])], [],
 920       [supports=no])
 921   AC_LANG_POP([C++])
 922   CXXFLAGS="$saved_cxxflags"
 923 
 924   AC_MSG_RESULT([$supports])
 925   if test "x$supports" = "xyes" ; then
 926     m4_ifval([$2], [$2], [:])

 927   else
 928     m4_ifval([$3], [$3], [:])

 929   fi
 930 ])
 931 
 932 # FLAGS_LINKER_CHECK_ARGUMENTS([ARGUMENT], [RUN-IF-TRUE],
 933 #                                    [RUN-IF-FALSE])
 934 # ------------------------------------------------------------
 935 # Check that the linker support an argument
 936 AC_DEFUN([FLAGS_LINKER_CHECK_ARGUMENTS],

 937 [
 938   AC_MSG_CHECKING([if linker supports "$1"])
 939   supports=yes
 940 
 941   saved_ldflags="$LDFLAGS"
 942   LDFLAGS="$LDFLAGS $1"
 943   AC_LANG_PUSH([C])
 944   AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],
 945       [], [supports=no])
 946   AC_LANG_POP([C])
 947   LDFLAGS="$saved_ldflags"
 948 
 949   AC_MSG_RESULT([$supports])
 950   if test "x$supports" = "xyes" ; then
 951     m4_ifval([$2], [$2], [:])

 952   else
 953     m4_ifval([$3], [$3], [:])

 954   fi
 955 ])
 956 
 957 AC_DEFUN_ONCE([FLAGS_SETUP_COMPILER_FLAGS_MISC],
 958 [
 959   # Some Zero and Shark settings.
 960   # ZERO_ARCHFLAG tells the compiler which mode to build for
 961   case "${OPENJDK_TARGET_CPU}" in
 962     s390)
 963       ZERO_ARCHFLAG="${COMPILER_TARGET_BITS_FLAG}31"
 964       ;;
 965     *)
 966       ZERO_ARCHFLAG="${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}"
 967   esac
 968   FLAGS_COMPILER_CHECK_ARGUMENTS([$ZERO_ARCHFLAG], [], [ZERO_ARCHFLAG=""])
 969   AC_SUBST(ZERO_ARCHFLAG)
 970 
 971   # Check that the compiler supports -mX (or -qX on AIX) flags
 972   # Set COMPILER_SUPPORTS_TARGET_BITS_FLAG to 'true' if it does
 973   FLAGS_COMPILER_CHECK_ARGUMENTS([${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}],
 974       [COMPILER_SUPPORTS_TARGET_BITS_FLAG=true],
 975       [COMPILER_SUPPORTS_TARGET_BITS_FLAG=false])
 976   AC_SUBST(COMPILER_SUPPORTS_TARGET_BITS_FLAG)
 977 
 978   AC_ARG_ENABLE([warnings-as-errors], [AS_HELP_STRING([--disable-warnings-as-errors],
 979       [do not consider native warnings to be an error @<:@enabled@:>@])])
 980 
 981   AC_MSG_CHECKING([if native warnings are errors])
 982   if test "x$enable_warnings_as_errors" = "xyes"; then
 983     AC_MSG_RESULT([yes (explicitely set)])
 984     WARNINGS_AS_ERRORS=true
 985   elif test "x$enable_warnings_as_errors" = "xno"; then
 986     AC_MSG_RESULT([no])
 987     WARNINGS_AS_ERRORS=false
 988   elif test "x$enable_warnings_as_errors" = "x"; then
 989     AC_MSG_RESULT([yes (default)])
 990     WARNINGS_AS_ERRORS=true
 991   else
 992     AC_MSG_ERROR([--enable-warnings-as-errors accepts no argument])
 993   fi
 994 
 995   if test "x$WARNINGS_AS_ERRORS" = "xfalse"; then
 996     # Set legacy hotspot variable
 997     HOTSPOT_SET_WARNINGS_AS_ERRORS="WARNINGS_ARE_ERRORS="
 998   else
 999     HOTSPOT_SET_WARNINGS_AS_ERRORS=""
1000   fi
1001 
1002   AC_SUBST(WARNINGS_AS_ERRORS)
1003   AC_SUBST(HOTSPOT_SET_WARNINGS_AS_ERRORS)
1004 
1005   case "${TOOLCHAIN_TYPE}" in
1006     microsoft)
1007       DISABLE_WARNING_PREFIX="-wd"
1008       CFLAGS_WARNINGS_ARE_ERRORS="-WX"
1009       ;;
1010     solstudio)
1011       DISABLE_WARNING_PREFIX="-erroff="
1012       CFLAGS_WARNINGS_ARE_ERRORS="-errtags -errwarn=%all"
1013       ;;
1014     gcc)
1015       # Prior to gcc 4.4, a -Wno-X where X is unknown for that version of gcc will cause an error
1016       FLAGS_COMPILER_CHECK_ARGUMENTS([-Wno-this-is-a-warning-that-do-not-exist],
1017           [GCC_CAN_DISABLE_WARNINGS=true],
1018           [GCC_CAN_DISABLE_WARNINGS=false]
1019       )
1020       if test "x$GCC_CAN_DISABLE_WARNINGS" = "xtrue"; then
1021         DISABLE_WARNING_PREFIX="-Wno-"
1022       else
1023         DISABLE_WARNING_PREFIX=
1024       fi
1025       CFLAGS_WARNINGS_ARE_ERRORS="-Werror"
1026       # Repeate the check for the BUILD_CC
1027       CC_OLD="$CC"
1028       CC="$BUILD_CC"
1029       FLAGS_COMPILER_CHECK_ARGUMENTS([-Wno-this-is-a-warning-that-do-not-exist],
1030           [BUILD_CC_CAN_DISABLE_WARNINGS=true],
1031           [BUILD_CC_CAN_DISABLE_WARNINGS=false]
1032       )
1033       if test "x$BUILD_CC_CAN_DISABLE_WARNINGS" = "xtrue"; then
1034         BUILD_CC_DISABLE_WARNING_PREFIX="-Wno-"
1035       else
1036         BUILD_CC_DISABLE_WARNING_PREFIX=
1037       fi
1038       CC="$CC_OLD"
1039       ;;
1040     clang)
1041       DISABLE_WARNING_PREFIX="-Wno-"
1042       CFLAGS_WARNINGS_ARE_ERRORS="-Werror"
1043       ;;
1044   esac
1045   AC_SUBST(DISABLE_WARNING_PREFIX)
1046   AC_SUBST(CFLAGS_WARNINGS_ARE_ERRORS)
1047 ])


 408   elif test "x$TOOLCHAIN_TYPE" = xxlc; then
 409     CFLAGS_DEBUG_SYMBOLS="-g"
 410     CXXFLAGS_DEBUG_SYMBOLS="-g"
 411   fi
 412   AC_SUBST(CFLAGS_DEBUG_SYMBOLS)
 413   AC_SUBST(CXXFLAGS_DEBUG_SYMBOLS)
 414 
 415   # bounds, memory and behavior checking options
 416   if test "x$TOOLCHAIN_TYPE" = xgcc; then
 417     case $DEBUG_LEVEL in
 418     release )
 419       # no adjustment
 420       ;;
 421     fastdebug )
 422       # no adjustment
 423       ;;
 424     slowdebug )
 425       # Add runtime stack smashing and undefined behavior checks.
 426       # Not all versions of gcc support -fstack-protector
 427       STACK_PROTECTOR_CFLAG="-fstack-protector-all"
 428       FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$STACK_PROTECTOR_CFLAG], IF_FALSE: [STACK_PROTECTOR_CFLAG=""])
 429 
 430       CFLAGS_DEBUG_OPTIONS="$STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1"
 431       CXXFLAGS_DEBUG_OPTIONS="$STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1"
 432       ;;
 433     esac
 434   fi
 435 
 436   # Optimization levels
 437   if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
 438     CC_HIGHEST="$CC_HIGHEST -fns -fsimple -fsingle -xbuiltin=%all -xdepend -xrestrict -xlibmil"
 439 
 440     if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86"; then
 441       # FIXME: seems we always set -xregs=no%frameptr; put it elsewhere more global?
 442       C_O_FLAG_HIGHEST="-xO4 -Wu,-O4~yz $CC_HIGHEST -xalias_level=basic -xregs=no%frameptr"
 443       C_O_FLAG_HI="-xO4 -Wu,-O4~yz -xregs=no%frameptr"
 444       C_O_FLAG_NORM="-xO2 -Wu,-O2~yz -xregs=no%frameptr"
 445       C_O_FLAG_DEBUG="-xregs=no%frameptr"
 446       C_O_FLAG_NONE="-xregs=no%frameptr"
 447       CXX_O_FLAG_HIGHEST="-xO4 -Qoption ube -O4~yz $CC_HIGHEST -xregs=no%frameptr"
 448       CXX_O_FLAG_HI="-xO4 -Qoption ube -O4~yz -xregs=no%frameptr"


 879 
 880     JDKLIB_LIBS="-ljava -ljvm"
 881     if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
 882       JDKLIB_LIBS="$JDKLIB_LIBS -lc"
 883     fi
 884   fi
 885 
 886   AC_SUBST(LDFLAGS_JDKLIB)
 887   AC_SUBST(LDFLAGS_JDKEXE)
 888   AC_SUBST(JDKLIB_LIBS)
 889   AC_SUBST(JDKEXE_LIBS)
 890   AC_SUBST(LDFLAGS_CXX_JDK)
 891 
 892   LDFLAGS_TESTLIB="$LDFLAGS_JDKLIB"
 893   LDFLAGS_TESTEXE="$LDFLAGS_JDKEXE"
 894 
 895   AC_SUBST(LDFLAGS_TESTLIB)
 896   AC_SUBST(LDFLAGS_TESTEXE)
 897 ])
 898 
 899 # FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [ARGUMENT], IF_TRUE: [RUN-IF-TRUE],
 900 #                                   IF_FALSE: [RUN-IF-FALSE])
 901 # ------------------------------------------------------------
 902 # Check that the c and c++ compilers support an argument
 903 BASIC_DEFUN_NAMED([FLAGS_COMPILER_CHECK_ARGUMENTS],
 904     [*ARGUMENT IF_TRUE IF_FALSE], [$@],
 905 [
 906   AC_MSG_CHECKING([if compiler supports "ARG_ARGUMENT"])
 907   supports=yes
 908 
 909   saved_cflags="$CFLAGS"
 910   CFLAGS="$CFLAGS ARG_ARGUMENT"
 911   AC_LANG_PUSH([C])
 912   AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int i;]])], [],
 913       [supports=no])
 914   AC_LANG_POP([C])
 915   CFLAGS="$saved_cflags"
 916 
 917   saved_cxxflags="$CXXFLAGS"
 918   CXXFLAGS="$CXXFLAG ARG_ARGUMENT"
 919   AC_LANG_PUSH([C++])
 920   AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int i;]])], [],
 921       [supports=no])
 922   AC_LANG_POP([C++])
 923   CXXFLAGS="$saved_cxxflags"
 924 
 925   AC_MSG_RESULT([$supports])
 926   if test "x$supports" = "xyes" ; then
 927     :
 928     ARG_IF_TRUE
 929   else
 930     :
 931     ARG_IF_FALSE
 932   fi
 933 ])
 934 
 935 # FLAGS_LINKER_CHECK_ARGUMENTS(ARGUMENT: [ARGUMENT], IF_TRUE: [RUN-IF-TRUE],
 936 #                                   IF_FALSE: [RUN-IF-FALSE])
 937 # ------------------------------------------------------------
 938 # Check that the linker support an argument
 939 BASIC_DEFUN_NAMED([FLAGS_LINKER_CHECK_ARGUMENTS],
 940     [*ARGUMENT IF_TRUE IF_FALSE], [$@],
 941 [
 942   AC_MSG_CHECKING([if linker supports "ARG_ARGUMENT"])
 943   supports=yes
 944 
 945   saved_ldflags="$LDFLAGS"
 946   LDFLAGS="$LDFLAGS ARG_ARGUMENT"
 947   AC_LANG_PUSH([C])
 948   AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],
 949       [], [supports=no])
 950   AC_LANG_POP([C])
 951   LDFLAGS="$saved_ldflags"
 952 
 953   AC_MSG_RESULT([$supports])
 954   if test "x$supports" = "xyes" ; then
 955     :
 956     ARG_IF_TRUE
 957   else
 958     :
 959     ARG_IF_FALSE
 960   fi
 961 ])
 962 
 963 AC_DEFUN_ONCE([FLAGS_SETUP_COMPILER_FLAGS_MISC],
 964 [
 965   # Some Zero and Shark settings.
 966   # ZERO_ARCHFLAG tells the compiler which mode to build for
 967   case "${OPENJDK_TARGET_CPU}" in
 968     s390)
 969       ZERO_ARCHFLAG="${COMPILER_TARGET_BITS_FLAG}31"
 970       ;;
 971     *)
 972       ZERO_ARCHFLAG="${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}"
 973   esac
 974   FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$ZERO_ARCHFLAG], IF_FALSE: [ZERO_ARCHFLAG=""])
 975   AC_SUBST(ZERO_ARCHFLAG)
 976 
 977   # Check that the compiler supports -mX (or -qX on AIX) flags
 978   # Set COMPILER_SUPPORTS_TARGET_BITS_FLAG to 'true' if it does
 979   FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}],
 980       IF_TRUE: [COMPILER_SUPPORTS_TARGET_BITS_FLAG=true],
 981       IF_FALSE: [COMPILER_SUPPORTS_TARGET_BITS_FLAG=false])
 982   AC_SUBST(COMPILER_SUPPORTS_TARGET_BITS_FLAG)
 983 
 984   AC_ARG_ENABLE([warnings-as-errors], [AS_HELP_STRING([--disable-warnings-as-errors],
 985       [do not consider native warnings to be an error @<:@enabled@:>@])])
 986 
 987   AC_MSG_CHECKING([if native warnings are errors])
 988   if test "x$enable_warnings_as_errors" = "xyes"; then
 989     AC_MSG_RESULT([yes (explicitely set)])
 990     WARNINGS_AS_ERRORS=true
 991   elif test "x$enable_warnings_as_errors" = "xno"; then
 992     AC_MSG_RESULT([no])
 993     WARNINGS_AS_ERRORS=false
 994   elif test "x$enable_warnings_as_errors" = "x"; then
 995     AC_MSG_RESULT([yes (default)])
 996     WARNINGS_AS_ERRORS=true
 997   else
 998     AC_MSG_ERROR([--enable-warnings-as-errors accepts no argument])
 999   fi
1000 
1001   if test "x$WARNINGS_AS_ERRORS" = "xfalse"; then
1002     # Set legacy hotspot variable
1003     HOTSPOT_SET_WARNINGS_AS_ERRORS="WARNINGS_ARE_ERRORS="
1004   else
1005     HOTSPOT_SET_WARNINGS_AS_ERRORS=""
1006   fi
1007 
1008   AC_SUBST(WARNINGS_AS_ERRORS)
1009   AC_SUBST(HOTSPOT_SET_WARNINGS_AS_ERRORS)
1010 
1011   case "${TOOLCHAIN_TYPE}" in
1012     microsoft)
1013       DISABLE_WARNING_PREFIX="-wd"
1014       CFLAGS_WARNINGS_ARE_ERRORS="-WX"
1015       ;;
1016     solstudio)
1017       DISABLE_WARNING_PREFIX="-erroff="
1018       CFLAGS_WARNINGS_ARE_ERRORS="-errtags -errwarn=%all"
1019       ;;
1020     gcc)
1021       # Prior to gcc 4.4, a -Wno-X where X is unknown for that version of gcc will cause an error
1022       FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [-Wno-this-is-a-warning-that-do-not-exist],
1023           IF_TRUE: [GCC_CAN_DISABLE_WARNINGS=true],
1024           IF_FALSE: [GCC_CAN_DISABLE_WARNINGS=false]
1025       )
1026       if test "x$GCC_CAN_DISABLE_WARNINGS" = "xtrue"; then
1027         DISABLE_WARNING_PREFIX="-Wno-"
1028       else
1029         DISABLE_WARNING_PREFIX=
1030       fi
1031       CFLAGS_WARNINGS_ARE_ERRORS="-Werror"
1032       # Repeate the check for the BUILD_CC
1033       CC_OLD="$CC"
1034       CC="$BUILD_CC"
1035       FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [-Wno-this-is-a-warning-that-do-not-exist],
1036           IF_TRUE: [BUILD_CC_CAN_DISABLE_WARNINGS=true],
1037           IF_FALSE: [BUILD_CC_CAN_DISABLE_WARNINGS=false]
1038       )
1039       if test "x$BUILD_CC_CAN_DISABLE_WARNINGS" = "xtrue"; then
1040         BUILD_CC_DISABLE_WARNING_PREFIX="-Wno-"
1041       else
1042         BUILD_CC_DISABLE_WARNING_PREFIX=
1043       fi
1044       CC="$CC_OLD"
1045       ;;
1046     clang)
1047       DISABLE_WARNING_PREFIX="-Wno-"
1048       CFLAGS_WARNINGS_ARE_ERRORS="-Werror"
1049       ;;
1050   esac
1051   AC_SUBST(DISABLE_WARNING_PREFIX)
1052   AC_SUBST(CFLAGS_WARNINGS_ARE_ERRORS)
1053 ])
< prev index next >