< prev index next >

make/autoconf/flags-cflags.m4

Print this page
rev 59610 : imported patch cpp14_build


 505   fi
 506 
 507   # CFLAGS C language level for JDK sources (hotspot only uses C++)
 508   # Ideally we would have a common level across all toolchains so that all sources
 509   # are sure to conform to the same standard. Unfortunately neither our sources nor
 510   # our toolchains are in a condition to support that. But what we loosely aim for is
 511   # C99 level.
 512   if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang || test "x$TOOLCHAIN_TYPE" = xxlc; then
 513     # Explicitly set C99. clang and xlclang support the same flag.
 514     LANGSTD_CFLAGS="-std=c99"
 515   elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
 516     # MSVC doesn't support C99/C11 explicitly, unless you compile as C++:
 517     # LANGSTD_CFLAGS="-TP"
 518     # but that requires numerous changes to the sources files. So we are limited
 519     # to C89/C90 plus whatever extensions Visual Studio has decided to implement.
 520     # This is the lowest bar for shared code.
 521     LANGSTD_CFLAGS=""
 522   fi
 523   TOOLCHAIN_CFLAGS_JDK_CONLY="$LANGSTD_CFLAGS $TOOLCHAIN_CFLAGS_JDK_CONLY"
 524 












 525   # CFLAGS WARNINGS STUFF
 526   # Set JVM_CFLAGS warning handling
 527   if test "x$TOOLCHAIN_TYPE" = xgcc; then
 528     WARNING_CFLAGS_JDK_CONLY="$WARNINGS_ENABLE_ALL_CFLAGS"
 529     WARNING_CFLAGS_JDK_CXXONLY="$WARNINGS_ENABLE_ALL_CXXFLAGS"
 530     WARNING_CFLAGS_JVM="$WARNINGS_ENABLE_ALL_CXXFLAGS"
 531 
 532   elif test "x$TOOLCHAIN_TYPE" = xclang; then
 533     WARNING_CFLAGS="$WARNINGS_ENABLE_ALL"
 534 
 535   elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
 536     WARNING_CFLAGS="$WARNINGS_ENABLE_ALL"
 537 
 538   elif test "x$TOOLCHAIN_TYPE" = xxlc; then
 539     WARNING_CFLAGS=""  # currently left empty
 540   fi
 541 
 542   # Set some additional per-OS defines.
 543 
 544   # Additional macosx handling


 687     elif test "x$FLAGS_CPU_ARCH" = xppc; then
 688       $1_CFLAGS_CPU_JVM="-minsert-sched-nops=regroup_exact -mno-multiple -mno-string"
 689       if test "x$FLAGS_CPU" = xppc64; then
 690         # -mminimal-toc fixes `relocation truncated to fit' error for gcc 4.1.
 691         # Use ppc64 instructions, but schedule for power5
 692         $1_CFLAGS_CPU_JVM="${$1_CFLAGS_CPU_JVM} -mminimal-toc -mcpu=powerpc64 -mtune=power5"
 693       elif test "x$FLAGS_CPU" = xppc64le; then
 694         # Little endian machine uses ELFv2 ABI.
 695         # Use Power8, this is the first CPU to support PPC64 LE with ELFv2 ABI.
 696         $1_CFLAGS_CPU_JVM="${$1_CFLAGS_CPU_JVM} -DABI_ELFv2 -mcpu=power8 -mtune=power8"
 697       fi
 698     elif test "x$FLAGS_CPU" = xs390x; then
 699       $1_CFLAGS_CPU="-mbackchain -march=z10"
 700     fi
 701 
 702     if test "x$FLAGS_CPU_ARCH" != xarm &&  test "x$FLAGS_CPU_ARCH" != xppc; then
 703       # for all archs except arm and ppc, prevent gcc to omit frame pointer
 704       $1_CFLAGS_CPU_JDK="${$1_CFLAGS_CPU_JDK} -fno-omit-frame-pointer"
 705     fi
 706 
 707     $1_CXXSTD_CXXFLAG="-std=gnu++98"
 708     FLAGS_CXX_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [${$1_CXXSTD_CXXFLAG}],
 709         PREFIX: $3, IF_FALSE: [$1_CXXSTD_CXXFLAG=""])
 710     $1_TOOLCHAIN_CFLAGS_JDK_CXXONLY="${$1_CXXSTD_CXXFLAG}"
 711     $1_TOOLCHAIN_CFLAGS_JVM="${$1_TOOLCHAIN_CFLAGS_JVM} ${$1_CXXSTD_CXXFLAG}"
 712     $2ADLC_CXXFLAG="${$1_CXXSTD_CXXFLAG}"
 713 
 714   elif test "x$TOOLCHAIN_TYPE" = xclang; then
 715     if test "x$FLAGS_OS" = xlinux; then
 716       # ppc test not really needed for clang
 717       if test "x$FLAGS_CPU_ARCH" != xarm &&  test "x$FLAGS_CPU_ARCH" != xppc; then
 718         # for all archs except arm and ppc, prevent gcc to omit frame pointer
 719         $1_CFLAGS_CPU_JDK="${$1_CFLAGS_CPU_JDK} -fno-omit-frame-pointer"
 720       fi
 721     fi
 722 
 723   elif test "x$TOOLCHAIN_TYPE" = xxlc; then
 724     if test "x$FLAGS_CPU" = xppc64; then
 725       $1_CFLAGS_CPU_JVM="-qarch=ppc64"
 726     fi
 727 
 728   elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
 729     if test "x$FLAGS_CPU" = xx86; then
 730       $1_CFLAGS_CPU_JVM="-arch:IA32"
 731     elif test "x$OPENJDK_TARGET_CPU" = xx86_64; then
 732       if test "x$DEBUG_LEVEL" != xrelease; then
 733         # NOTE: This is probably redundant; -homeparams is default on


 788       ${$1_TOOLCHAIN_CFLAGS_JDK_CXXONLY} \
 789       $WARNING_CFLAGS_JDK_CXXONLY ${$2EXTRA_CXXFLAGS}"
 790 
 791   $1_CFLAGS_JVM="${$1_DEFINES_CPU_JVM} ${$1_CFLAGS_CPU} ${$1_CFLAGS_CPU_JVM} ${$1_TOOLCHAIN_CFLAGS} ${$1_WARNING_CFLAGS_JVM}"
 792   $1_CFLAGS_JDK="${$1_DEFINES_CPU_JDK} ${$1_CFLAGS_CPU} ${$1_CFLAGS_CPU_JDK} ${$1_TOOLCHAIN_CFLAGS}"
 793 
 794   $2JVM_CFLAGS="$CFLAGS_JVM_COMMON ${$1_CFLAGS_JVM} ${$2EXTRA_CXXFLAGS}"
 795 
 796   $2CFLAGS_JDKEXE="$CFLAGS_JDK_COMMON $CFLAGS_JDK_COMMON_CONLY ${$1_CFLAGS_JDK} $PIEFLAG"
 797   $2CXXFLAGS_JDKEXE="$CFLAGS_JDK_COMMON $CFLAGS_JDK_COMMON_CXXONLY ${$1_CFLAGS_JDK} $PIEFLAG"
 798   $2CFLAGS_JDKLIB="$CFLAGS_JDK_COMMON $CFLAGS_JDK_COMMON_CONLY ${$1_CFLAGS_JDK} \
 799       $JDK_PICFLAG ${$1_CFLAGS_CPU_JDK_LIBONLY}"
 800   $2CXXFLAGS_JDKLIB="$CFLAGS_JDK_COMMON $CFLAGS_JDK_COMMON_CXXONLY ${$1_CFLAGS_JDK} \
 801       $JDK_PICFLAG ${$1_CFLAGS_CPU_JDK_LIBONLY}"
 802 
 803   AC_SUBST($2JVM_CFLAGS)
 804   AC_SUBST($2CFLAGS_JDKLIB)
 805   AC_SUBST($2CFLAGS_JDKEXE)
 806   AC_SUBST($2CXXFLAGS_JDKLIB)
 807   AC_SUBST($2CXXFLAGS_JDKEXE)
 808   AC_SUBST($2ADLC_CXXFLAG)
 809 
 810   COMPILER_FP_CONTRACT_OFF_FLAG="-ffp-contract=off"
 811   # Check that the compiler supports -ffp-contract=off flag
 812   # Set FDLIBM_CFLAGS to -ffp-contract=off if it does. Empty
 813   # otherwise.
 814   # These flags are required for GCC-based builds of
 815   # fdlibm with optimization without losing precision.
 816   # Notably, -ffp-contract=off needs to be added for GCC >= 4.6.
 817   if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
 818     FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [${COMPILER_FP_CONTRACT_OFF_FLAG}],
 819         PREFIX: $3,
 820         IF_TRUE: [$2FDLIBM_CFLAGS=${COMPILER_FP_CONTRACT_OFF_FLAG}],
 821         IF_FALSE: [$2FDLIBM_CFLAGS=""])
 822   fi
 823   AC_SUBST($2FDLIBM_CFLAGS)
 824 ])
 825 
 826 # FLAGS_SETUP_GCC6_COMPILER_FLAGS([PREFIX])
 827 # Arguments:
 828 # $1 - Prefix for each variable defined.


 505   fi
 506 
 507   # CFLAGS C language level for JDK sources (hotspot only uses C++)
 508   # Ideally we would have a common level across all toolchains so that all sources
 509   # are sure to conform to the same standard. Unfortunately neither our sources nor
 510   # our toolchains are in a condition to support that. But what we loosely aim for is
 511   # C99 level.
 512   if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang || test "x$TOOLCHAIN_TYPE" = xxlc; then
 513     # Explicitly set C99. clang and xlclang support the same flag.
 514     LANGSTD_CFLAGS="-std=c99"
 515   elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
 516     # MSVC doesn't support C99/C11 explicitly, unless you compile as C++:
 517     # LANGSTD_CFLAGS="-TP"
 518     # but that requires numerous changes to the sources files. So we are limited
 519     # to C89/C90 plus whatever extensions Visual Studio has decided to implement.
 520     # This is the lowest bar for shared code.
 521     LANGSTD_CFLAGS=""
 522   fi
 523   TOOLCHAIN_CFLAGS_JDK_CONLY="$LANGSTD_CFLAGS $TOOLCHAIN_CFLAGS_JDK_CONLY"
 524 
 525   # CXXFLAGS C++ language level for all of JDK, including Hotspot.
 526   if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang || test "x$TOOLCHAIN_TYPE" = xxlc; then
 527     LANGSTD_CXXFLAGS="-std=c++14"
 528   elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
 529     LANGSTD_CXXFLAGS="-std:c++14"
 530   else
 531     AC_MSG_ERROR([Don't know how to enable C++14 for this toolchain])
 532   fi
 533   TOOLCHAIN_CFLAGS_JDK_CXXONLY="$TOOLCHAIN_CFLAGS_JDK_CXXONLY $LANGSTD_CXXFLAGS"
 534   TOOLCHAIN_CFLAGS_JVM="$TOOLCHAIN_CFLAGS_JVM $LANGSTD_CXXFLAGS"
 535   ADLC_LANGSTD_CXXFLAGS="$LANGSTD_CXXFLAGS"
 536 
 537   # CFLAGS WARNINGS STUFF
 538   # Set JVM_CFLAGS warning handling
 539   if test "x$TOOLCHAIN_TYPE" = xgcc; then
 540     WARNING_CFLAGS_JDK_CONLY="$WARNINGS_ENABLE_ALL_CFLAGS"
 541     WARNING_CFLAGS_JDK_CXXONLY="$WARNINGS_ENABLE_ALL_CXXFLAGS"
 542     WARNING_CFLAGS_JVM="$WARNINGS_ENABLE_ALL_CXXFLAGS"
 543 
 544   elif test "x$TOOLCHAIN_TYPE" = xclang; then
 545     WARNING_CFLAGS="$WARNINGS_ENABLE_ALL"
 546 
 547   elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
 548     WARNING_CFLAGS="$WARNINGS_ENABLE_ALL"
 549 
 550   elif test "x$TOOLCHAIN_TYPE" = xxlc; then
 551     WARNING_CFLAGS=""  # currently left empty
 552   fi
 553 
 554   # Set some additional per-OS defines.
 555 
 556   # Additional macosx handling


 699     elif test "x$FLAGS_CPU_ARCH" = xppc; then
 700       $1_CFLAGS_CPU_JVM="-minsert-sched-nops=regroup_exact -mno-multiple -mno-string"
 701       if test "x$FLAGS_CPU" = xppc64; then
 702         # -mminimal-toc fixes `relocation truncated to fit' error for gcc 4.1.
 703         # Use ppc64 instructions, but schedule for power5
 704         $1_CFLAGS_CPU_JVM="${$1_CFLAGS_CPU_JVM} -mminimal-toc -mcpu=powerpc64 -mtune=power5"
 705       elif test "x$FLAGS_CPU" = xppc64le; then
 706         # Little endian machine uses ELFv2 ABI.
 707         # Use Power8, this is the first CPU to support PPC64 LE with ELFv2 ABI.
 708         $1_CFLAGS_CPU_JVM="${$1_CFLAGS_CPU_JVM} -DABI_ELFv2 -mcpu=power8 -mtune=power8"
 709       fi
 710     elif test "x$FLAGS_CPU" = xs390x; then
 711       $1_CFLAGS_CPU="-mbackchain -march=z10"
 712     fi
 713 
 714     if test "x$FLAGS_CPU_ARCH" != xarm &&  test "x$FLAGS_CPU_ARCH" != xppc; then
 715       # for all archs except arm and ppc, prevent gcc to omit frame pointer
 716       $1_CFLAGS_CPU_JDK="${$1_CFLAGS_CPU_JDK} -fno-omit-frame-pointer"
 717     fi
 718 







 719   elif test "x$TOOLCHAIN_TYPE" = xclang; then
 720     if test "x$FLAGS_OS" = xlinux; then
 721       # ppc test not really needed for clang
 722       if test "x$FLAGS_CPU_ARCH" != xarm &&  test "x$FLAGS_CPU_ARCH" != xppc; then
 723         # for all archs except arm and ppc, prevent gcc to omit frame pointer
 724         $1_CFLAGS_CPU_JDK="${$1_CFLAGS_CPU_JDK} -fno-omit-frame-pointer"
 725       fi
 726     fi
 727 
 728   elif test "x$TOOLCHAIN_TYPE" = xxlc; then
 729     if test "x$FLAGS_CPU" = xppc64; then
 730       $1_CFLAGS_CPU_JVM="-qarch=ppc64"
 731     fi
 732 
 733   elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
 734     if test "x$FLAGS_CPU" = xx86; then
 735       $1_CFLAGS_CPU_JVM="-arch:IA32"
 736     elif test "x$OPENJDK_TARGET_CPU" = xx86_64; then
 737       if test "x$DEBUG_LEVEL" != xrelease; then
 738         # NOTE: This is probably redundant; -homeparams is default on


 793       ${$1_TOOLCHAIN_CFLAGS_JDK_CXXONLY} \
 794       $WARNING_CFLAGS_JDK_CXXONLY ${$2EXTRA_CXXFLAGS}"
 795 
 796   $1_CFLAGS_JVM="${$1_DEFINES_CPU_JVM} ${$1_CFLAGS_CPU} ${$1_CFLAGS_CPU_JVM} ${$1_TOOLCHAIN_CFLAGS} ${$1_WARNING_CFLAGS_JVM}"
 797   $1_CFLAGS_JDK="${$1_DEFINES_CPU_JDK} ${$1_CFLAGS_CPU} ${$1_CFLAGS_CPU_JDK} ${$1_TOOLCHAIN_CFLAGS}"
 798 
 799   $2JVM_CFLAGS="$CFLAGS_JVM_COMMON ${$1_CFLAGS_JVM} ${$2EXTRA_CXXFLAGS}"
 800 
 801   $2CFLAGS_JDKEXE="$CFLAGS_JDK_COMMON $CFLAGS_JDK_COMMON_CONLY ${$1_CFLAGS_JDK} $PIEFLAG"
 802   $2CXXFLAGS_JDKEXE="$CFLAGS_JDK_COMMON $CFLAGS_JDK_COMMON_CXXONLY ${$1_CFLAGS_JDK} $PIEFLAG"
 803   $2CFLAGS_JDKLIB="$CFLAGS_JDK_COMMON $CFLAGS_JDK_COMMON_CONLY ${$1_CFLAGS_JDK} \
 804       $JDK_PICFLAG ${$1_CFLAGS_CPU_JDK_LIBONLY}"
 805   $2CXXFLAGS_JDKLIB="$CFLAGS_JDK_COMMON $CFLAGS_JDK_COMMON_CXXONLY ${$1_CFLAGS_JDK} \
 806       $JDK_PICFLAG ${$1_CFLAGS_CPU_JDK_LIBONLY}"
 807 
 808   AC_SUBST($2JVM_CFLAGS)
 809   AC_SUBST($2CFLAGS_JDKLIB)
 810   AC_SUBST($2CFLAGS_JDKEXE)
 811   AC_SUBST($2CXXFLAGS_JDKLIB)
 812   AC_SUBST($2CXXFLAGS_JDKEXE)
 813   AC_SUBST($2ADLC_LANGSTD_CXXFLAGS)
 814 
 815   COMPILER_FP_CONTRACT_OFF_FLAG="-ffp-contract=off"
 816   # Check that the compiler supports -ffp-contract=off flag
 817   # Set FDLIBM_CFLAGS to -ffp-contract=off if it does. Empty
 818   # otherwise.
 819   # These flags are required for GCC-based builds of
 820   # fdlibm with optimization without losing precision.
 821   # Notably, -ffp-contract=off needs to be added for GCC >= 4.6.
 822   if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
 823     FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [${COMPILER_FP_CONTRACT_OFF_FLAG}],
 824         PREFIX: $3,
 825         IF_TRUE: [$2FDLIBM_CFLAGS=${COMPILER_FP_CONTRACT_OFF_FLAG}],
 826         IF_FALSE: [$2FDLIBM_CFLAGS=""])
 827   fi
 828   AC_SUBST($2FDLIBM_CFLAGS)
 829 ])
 830 
 831 # FLAGS_SETUP_GCC6_COMPILER_FLAGS([PREFIX])
 832 # Arguments:
 833 # $1 - Prefix for each variable defined.
< prev index next >