< prev index next >

make/autoconf/flags-cflags.m4

Print this page




 747 
 748   elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
 749     if test "x$FLAGS_CPU" = xx86; then
 750       $1_CFLAGS_CPU_JVM="-arch:IA32"
 751     elif test "x$OPENJDK_TARGET_CPU" = xx86_64; then
 752       if test "x$DEBUG_LEVEL" != xrelease; then
 753         # NOTE: This is probably redundant; -homeparams is default on
 754         # non-release builds.
 755         $1_CFLAGS_CPU_JVM="-homeparams"
 756       fi
 757     fi
 758   fi
 759 
 760   if test "x$TOOLCHAIN_TYPE" = xgcc; then
 761     TOOLCHAIN_CHECK_COMPILER_VERSION(VERSION: 6, PREFIX: $2, IF_AT_LEAST: FLAGS_SETUP_GCC6_COMPILER_FLAGS($1))
 762     $1_TOOLCHAIN_CFLAGS="${$1_GCC6_CFLAGS}"
 763 
 764     $1_WARNING_CFLAGS_JVM="-Wno-format-zero-length -Wtype-limits -Wuninitialized"
 765   fi
 766 




















 767   # EXPORT to API
 768   CFLAGS_JVM_COMMON="$ALWAYS_CFLAGS_JVM $ALWAYS_DEFINES_JVM $TOOLCHAIN_CFLAGS_JVM \
 769       $OS_CFLAGS $OS_CFLAGS_JVM $CFLAGS_OS_DEF_JVM $DEBUG_CFLAGS_JVM \
 770       $WARNING_CFLAGS $WARNING_CFLAGS_JVM $JVM_PICFLAG"
 771 
 772   CFLAGS_JDK_COMMON="$ALWAYS_CFLAGS_JDK $ALWAYS_DEFINES_JDK $TOOLCHAIN_CFLAGS_JDK \
 773       $OS_CFLAGS $CFLAGS_OS_DEF_JDK $DEBUG_CFLAGS_JDK $DEBUG_OPTIONS_FLAGS_JDK \
 774       $WARNING_CFLAGS $WARNING_CFLAGS_JDK $DEBUG_SYMBOLS_CFLAGS_JDK"
 775 
 776   # Use ${$2EXTRA_CFLAGS} to block EXTRA_CFLAGS to be added to build flags.
 777   # (Currently we don't have any OPENJDK_BUILD_EXTRA_CFLAGS, but that might
 778   # change in the future.)
 779 
 780   CFLAGS_JDK_COMMON_CONLY="$TOOLCHAIN_CFLAGS_JDK_CONLY  \
 781       $WARNING_CFLAGS_JDK_CONLY ${$2EXTRA_CFLAGS}"
 782   CFLAGS_JDK_COMMON_CXXONLY="$ALWAYS_DEFINES_JDK_CXXONLY $TOOLCHAIN_CFLAGS_JDK_CXXONLY \
 783       $WARNING_CFLAGS_JDK_CXXONLY ${$2EXTRA_CXXFLAGS}"
 784 
 785   $1_CFLAGS_JVM="${$1_DEFINES_CPU_JVM} ${$1_CFLAGS_CPU} ${$1_CFLAGS_CPU_JVM} ${$1_TOOLCHAIN_CFLAGS} ${$1_WARNING_CFLAGS_JVM}"
 786   $1_CFLAGS_JDK="${$1_DEFINES_CPU_JDK} ${$1_CFLAGS_CPU} ${$1_CFLAGS_CPU_JDK} ${$1_TOOLCHAIN_CFLAGS}"


 787 
 788   $2JVM_CFLAGS="$CFLAGS_JVM_COMMON ${$1_CFLAGS_JVM} ${$2EXTRA_CXXFLAGS}"
 789 
 790   $2CFLAGS_JDKEXE="$CFLAGS_JDK_COMMON $CFLAGS_JDK_COMMON_CONLY ${$1_CFLAGS_JDK}"
 791   $2CXXFLAGS_JDKEXE="$CFLAGS_JDK_COMMON $CFLAGS_JDK_COMMON_CXXONLY ${$1_CFLAGS_JDK}"
 792   $2CFLAGS_JDKLIB="${$2CFLAGS_JDKEXE} $JDK_PICFLAG ${$1_CFLAGS_CPU_JDK_LIBONLY}"
 793   $2CXXFLAGS_JDKLIB="${$2CXXFLAGS_JDKEXE} $JDK_PICFLAG ${$1_CFLAGS_CPU_JDK_LIBONLY}"
 794 
 795   AC_SUBST($2JVM_CFLAGS)
 796   AC_SUBST($2CFLAGS_JDKLIB)
 797   AC_SUBST($2CFLAGS_JDKEXE)
 798   AC_SUBST($2CXXFLAGS_JDKLIB)
 799   AC_SUBST($2CXXFLAGS_JDKEXE)

 800 ])
 801 
 802 # FLAGS_SETUP_GCC6_COMPILER_FLAGS([PREFIX])
 803 # Arguments:
 804 # $1 - Prefix for each variable defined.
 805 AC_DEFUN([FLAGS_SETUP_GCC6_COMPILER_FLAGS],
 806 [
 807   # These flags are required for GCC 6 builds as undefined behaviour in OpenJDK code
 808   # runs afoul of the more aggressive versions of these optimisations.
 809   # Notably, value range propagation now assumes that the this pointer of C++
 810   # member functions is non-null.
 811   NO_DELETE_NULL_POINTER_CHECKS_CFLAG="-fno-delete-null-pointer-checks"
 812   dnl Argument check is disabled until FLAGS_COMPILER_CHECK_ARGUMENTS handles cross-compilation
 813   dnl FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$NO_DELETE_NULL_POINTER_CHECKS_CFLAG -Werror],
 814   dnl                                        IF_FALSE: [NO_DELETE_NULL_POINTER_CHECKS_CFLAG=""])
 815   NO_LIFETIME_DSE_CFLAG="-fno-lifetime-dse"
 816   dnl Argument check is disabled until FLAGS_COMPILER_CHECK_ARGUMENTS handles cross-compilation
 817   dnl FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$NO_LIFETIME_DSE_CFLAG -Werror],
 818   dnl                                        IF_FALSE: [NO_LIFETIME_DSE_CFLAG=""])
 819   AC_MSG_NOTICE([GCC >= 6 detected; adding ${NO_DELETE_NULL_POINTER_CHECKS_CFLAG} and ${NO_LIFETIME_DSE_CFLAG}])




 747 
 748   elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
 749     if test "x$FLAGS_CPU" = xx86; then
 750       $1_CFLAGS_CPU_JVM="-arch:IA32"
 751     elif test "x$OPENJDK_TARGET_CPU" = xx86_64; then
 752       if test "x$DEBUG_LEVEL" != xrelease; then
 753         # NOTE: This is probably redundant; -homeparams is default on
 754         # non-release builds.
 755         $1_CFLAGS_CPU_JVM="-homeparams"
 756       fi
 757     fi
 758   fi
 759 
 760   if test "x$TOOLCHAIN_TYPE" = xgcc; then
 761     TOOLCHAIN_CHECK_COMPILER_VERSION(VERSION: 6, PREFIX: $2, IF_AT_LEAST: FLAGS_SETUP_GCC6_COMPILER_FLAGS($1))
 762     $1_TOOLCHAIN_CFLAGS="${$1_GCC6_CFLAGS}"
 763 
 764     $1_WARNING_CFLAGS_JVM="-Wno-format-zero-length -Wtype-limits -Wuninitialized"
 765   fi
 766 
 767   case $TOOLCHAIN_TYPE in
 768     gcc)
 769       $2NO_SPECULATIVE_CTI_CFLAGS="-mindirect-branch=thunk \
 770           -mfunction-return=thunk -mindirect-branch-register"
 771       ;;
 772     microsoft)
 773       $2NO_SPECULATIVE_CTI_CFLAGS="-Qspectre"
 774       ;;
 775     *)
 776       $2NO_SPECULATIVE_CTI_CFLAGS=""
 777       ;;
 778   esac
 779   if test -n "${$2NO_SPECULATIVE_CTI_CFLAGS}"; then
 780     FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [${$2NO_SPECULATIVE_CTI_CFLAGS}],
 781         IF_FALSE: [
 782           $2NO_SPECULATIVE_CTI_CFLAGS=""
 783         ]
 784     )
 785   fi
 786 
 787   # EXPORT to API
 788   CFLAGS_JVM_COMMON="$ALWAYS_CFLAGS_JVM $ALWAYS_DEFINES_JVM $TOOLCHAIN_CFLAGS_JVM \
 789       $OS_CFLAGS $OS_CFLAGS_JVM $CFLAGS_OS_DEF_JVM $DEBUG_CFLAGS_JVM \
 790       $WARNING_CFLAGS $WARNING_CFLAGS_JVM $JVM_PICFLAG"
 791 
 792   CFLAGS_JDK_COMMON="$ALWAYS_CFLAGS_JDK $ALWAYS_DEFINES_JDK $TOOLCHAIN_CFLAGS_JDK \
 793       $OS_CFLAGS $CFLAGS_OS_DEF_JDK $DEBUG_CFLAGS_JDK $DEBUG_OPTIONS_FLAGS_JDK \
 794       $WARNING_CFLAGS $WARNING_CFLAGS_JDK $DEBUG_SYMBOLS_CFLAGS_JDK"
 795 
 796   # Use ${$2EXTRA_CFLAGS} to block EXTRA_CFLAGS to be added to build flags.
 797   # (Currently we don't have any OPENJDK_BUILD_EXTRA_CFLAGS, but that might
 798   # change in the future.)
 799 
 800   CFLAGS_JDK_COMMON_CONLY="$TOOLCHAIN_CFLAGS_JDK_CONLY  \
 801       $WARNING_CFLAGS_JDK_CONLY ${$2EXTRA_CFLAGS}"
 802   CFLAGS_JDK_COMMON_CXXONLY="$ALWAYS_DEFINES_JDK_CXXONLY $TOOLCHAIN_CFLAGS_JDK_CXXONLY \
 803       $WARNING_CFLAGS_JDK_CXXONLY ${$2EXTRA_CXXFLAGS}"
 804 
 805   $1_CFLAGS_JVM="${$1_DEFINES_CPU_JVM} ${$1_CFLAGS_CPU} ${$1_CFLAGS_CPU_JVM} \
 806       ${$1_TOOLCHAIN_CFLAGS} ${$1_WARNING_CFLAGS_JVM}"
 807   $1_CFLAGS_JDK="${$1_DEFINES_CPU_JDK} ${$1_CFLAGS_CPU} ${$1_CFLAGS_CPU_JDK} \
 808       ${$1_TOOLCHAIN_CFLAGS}"
 809 
 810   $2JVM_CFLAGS="$CFLAGS_JVM_COMMON ${$1_CFLAGS_JVM} ${$2EXTRA_CXXFLAGS}"
 811 
 812   $2CFLAGS_JDKEXE="$CFLAGS_JDK_COMMON $CFLAGS_JDK_COMMON_CONLY ${$1_CFLAGS_JDK}"
 813   $2CXXFLAGS_JDKEXE="$CFLAGS_JDK_COMMON $CFLAGS_JDK_COMMON_CXXONLY ${$1_CFLAGS_JDK}"
 814   $2CFLAGS_JDKLIB="${$2CFLAGS_JDKEXE} $JDK_PICFLAG ${$1_CFLAGS_CPU_JDK_LIBONLY}"
 815   $2CXXFLAGS_JDKLIB="${$2CXXFLAGS_JDKEXE} $JDK_PICFLAG ${$1_CFLAGS_CPU_JDK_LIBONLY}"
 816 
 817   AC_SUBST($2JVM_CFLAGS)
 818   AC_SUBST($2CFLAGS_JDKLIB)
 819   AC_SUBST($2CFLAGS_JDKEXE)
 820   AC_SUBST($2CXXFLAGS_JDKLIB)
 821   AC_SUBST($2CXXFLAGS_JDKEXE)
 822   AC_SUBST($2NO_SPECULATIVE_CTI_CFLAGS)
 823 ])
 824 
 825 # FLAGS_SETUP_GCC6_COMPILER_FLAGS([PREFIX])
 826 # Arguments:
 827 # $1 - Prefix for each variable defined.
 828 AC_DEFUN([FLAGS_SETUP_GCC6_COMPILER_FLAGS],
 829 [
 830   # These flags are required for GCC 6 builds as undefined behaviour in OpenJDK code
 831   # runs afoul of the more aggressive versions of these optimisations.
 832   # Notably, value range propagation now assumes that the this pointer of C++
 833   # member functions is non-null.
 834   NO_DELETE_NULL_POINTER_CHECKS_CFLAG="-fno-delete-null-pointer-checks"
 835   dnl Argument check is disabled until FLAGS_COMPILER_CHECK_ARGUMENTS handles cross-compilation
 836   dnl FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$NO_DELETE_NULL_POINTER_CHECKS_CFLAG -Werror],
 837   dnl                                        IF_FALSE: [NO_DELETE_NULL_POINTER_CHECKS_CFLAG=""])
 838   NO_LIFETIME_DSE_CFLAG="-fno-lifetime-dse"
 839   dnl Argument check is disabled until FLAGS_COMPILER_CHECK_ARGUMENTS handles cross-compilation
 840   dnl FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$NO_LIFETIME_DSE_CFLAG -Werror],
 841   dnl                                        IF_FALSE: [NO_LIFETIME_DSE_CFLAG=""])
 842   AC_MSG_NOTICE([GCC >= 6 detected; adding ${NO_DELETE_NULL_POINTER_CHECKS_CFLAG} and ${NO_LIFETIME_DSE_CFLAG}])


< prev index next >