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 ])
|