common/autoconf/flags.m4

changeset 2424
3a2c8d0a600d
parent 2401
7d134528324e
child 2445
ef88239d3d16
equal deleted inserted replaced
2423:9d00e3f144e0 2424:3a2c8d0a600d
448 # 448 #
449 # Now setup the CFLAGS and LDFLAGS for the JDK build. 449 # Now setup the CFLAGS and LDFLAGS for the JDK build.
450 # Later we will also have CFLAGS and LDFLAGS for the hotspot subrepo build. 450 # Later we will also have CFLAGS and LDFLAGS for the hotspot subrepo build.
451 # 451 #
452 452
453 FDLIBM_CFLAGS=""
453 # Setup compiler/platform specific flags to CFLAGS_JDK, 454 # Setup compiler/platform specific flags to CFLAGS_JDK,
454 # CXXFLAGS_JDK and CCXXFLAGS_JDK (common to C and CXX?) 455 # CXXFLAGS_JDK and CCXXFLAGS_JDK (common to C and CXX?)
455 if test "x$TOOLCHAIN_TYPE" = xgcc; then 456 if test "x$TOOLCHAIN_TYPE" = xgcc; then
456 # these options are used for both C and C++ compiles 457 # these options are used for both C and C++ compiles
457 CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -Wall -Wno-parentheses -Wextra -Wno-unused -Wno-unused-parameter -Wformat=2 \ 458 CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -Wall -Wno-parentheses -Wextra -Wno-unused -Wno-unused-parameter -Wformat=2 \
472 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -fno-omit-frame-pointer" 473 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -fno-omit-frame-pointer"
473 CFLAGS_JDK="${CFLAGS_JDK} -fno-strict-aliasing" 474 CFLAGS_JDK="${CFLAGS_JDK} -fno-strict-aliasing"
474 ;; 475 ;;
475 esac 476 esac
476 TOOLCHAIN_CHECK_COMPILER_VERSION(6, FLAGS_SETUP_GCC6_COMPILER_FLAGS) 477 TOOLCHAIN_CHECK_COMPILER_VERSION(6, FLAGS_SETUP_GCC6_COMPILER_FLAGS)
478
479 # Check that the compiler supports -ffp-contract=off flag
480 # Set FDLIBM_CFLAGS to -ffp-contract=off if it does.
481 # For GCC < 4.6, on x86, x86_64 and ppc check for
482 # -mno-fused-madd and -fno-strict-aliasing. If they exist,
483 # use them as a substitute for -ffp-contract=off.
484 #
485 # These flags are required for GCC-based builds of
486 # fdlibm with optimization without losing precision.
487 # Notably, -ffp-contract=off needs to be added for GCC >= 4.6,
488 # -mno-fused-madd -fno-strict-aliasing for GCC < 4.6
489 COMPILER_FP_CONTRACT_OFF_FLAG="-ffp-contract=off"
490 FLAGS_CXX_COMPILER_CHECK_ARGUMENTS([[$]COMPILER_FP_CONTRACT_OFF_FLAG -Werror],
491 [], [COMPILER_FP_CONTRACT_OFF_FLAG=""])
492 if test "x$COMPILER_FP_CONTRACT_OFF_FLAG" = x; then
493 if test "$OPENJDK_TARGET_CPU_ARCH" = "x86" ||
494 test "$OPENJDK_TARGET_CPU_ARCH" = "x86_64" ||
495 test "$OPENJDK_TARGET_CPU_ARCH" = "ppc"; then
496 M_NO_FUSED_ADD_FLAG="-mno-fused-madd"
497 FLAGS_CXX_COMPILER_CHECK_ARGUMENTS([[$]M_NO_FUSED_ADD_FLAG -Werror],
498 [], [M_NO_FUSED_ADD_FLAG=""])
499 NO_STRICT_ALIASING_FLAG="-fno-strict-aliasing"
500 FLAGS_CXX_COMPILER_CHECK_ARGUMENTS([[$]NO_STRICT_ALIASING_FLAG -Werror],
501 [], [NO_STRICT_ALIASING_FLAG=""])
502 if test "x$M_NO_FUSED_ADD_FLAG" != "x" && test "x$NO_STRICT_ALIASING_FLAG" != "x"; then
503 FDLIBM_CFLAGS="$M_NO_FUSED_ADD_FLAG $NO_STRICT_ALIASING_FLAG"
504 fi
505 fi
506 else
507 FDLIBM_CFLAGS="$COMPILER_FP_CONTRACT_OFF_FLAG"
508 fi
477 elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then 509 elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
478 CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -DTRACING -DMACRO_MEMSYS_OPS -DBREAKPTS" 510 CCXXFLAGS_JDK="$CCXXFLAGS $CCXXFLAGS_JDK -DTRACING -DMACRO_MEMSYS_OPS -DBREAKPTS"
479 if test "x$OPENJDK_TARGET_CPU_ARCH" = xx86; then 511 if test "x$OPENJDK_TARGET_CPU_ARCH" = xx86; then
480 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DcpuIntel -Di586 -D$OPENJDK_TARGET_CPU_LEGACY_LIB" 512 CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DcpuIntel -Di586 -D$OPENJDK_TARGET_CPU_LEGACY_LIB"
481 CFLAGS_JDK="$CFLAGS_JDK -erroff=E_BAD_PRAGMA_PACK_VALUE" 513 CFLAGS_JDK="$CFLAGS_JDK -erroff=E_BAD_PRAGMA_PACK_VALUE"
503 if test "x$TOOLCHAIN_VERSION" = "x2010"; then 535 if test "x$TOOLCHAIN_VERSION" = "x2010"; then
504 CCXXFLAGS_JDK="$CCXXFLAGS_JDK \ 536 CCXXFLAGS_JDK="$CCXXFLAGS_JDK \
505 -D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB" 537 -D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB"
506 fi 538 fi
507 fi 539 fi
540 AC_SUBST(FDLIBM_CFLAGS)
508 541
509 ############################################################################### 542 ###############################################################################
510 543
511 # Adjust flags according to debug level. 544 # Adjust flags according to debug level.
512 case $DEBUG_LEVEL in 545 case $DEBUG_LEVEL in

mercurial