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.
|