make/autoconf/flags-cflags.m4
branchihse-cflags-rewrite-branch
changeset 56312 a52bcf4118eb
parent 56250 d64ab781c927
parent 49200 a19a6228cdb2
child 56726 3a9b7a1f9197
equal deleted inserted replaced
56285:9bc8db601fe2 56312:a52bcf4118eb
   106 
   106 
   107 AC_DEFUN([FLAGS_SETUP_DEBUG_SYMBOLS],
   107 AC_DEFUN([FLAGS_SETUP_DEBUG_SYMBOLS],
   108 [
   108 [
   109   # Debug symbols
   109   # Debug symbols
   110   if test "x$TOOLCHAIN_TYPE" = xgcc; then
   110   if test "x$TOOLCHAIN_TYPE" = xgcc; then
   111     if test "x$OPENJDK_TARGET_CPU_BITS" = "x64" && test "x$DEBUG_LEVEL" = "xfastdebug"; then
   111     CFLAGS_DEBUG_SYMBOLS="-g"
   112       CFLAGS_DEBUG_SYMBOLS="-g1"
       
   113     else
       
   114       CFLAGS_DEBUG_SYMBOLS="-g"
       
   115     fi
       
   116   elif test "x$TOOLCHAIN_TYPE" = xclang; then
   112   elif test "x$TOOLCHAIN_TYPE" = xclang; then
   117     CFLAGS_DEBUG_SYMBOLS="-g"
   113     CFLAGS_DEBUG_SYMBOLS="-g"
   118   elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
   114   elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
   119     CFLAGS_DEBUG_SYMBOLS="-g -xs"
       
   120     # -g0 enables debug symbols without disabling inlining.
   115     # -g0 enables debug symbols without disabling inlining.
   121     CXXFLAGS_DEBUG_SYMBOLS="-g0 -xs"
   116     CFLAGS_DEBUG_SYMBOLS="-g0 -xs"
   122   elif test "x$TOOLCHAIN_TYPE" = xxlc; then
   117   elif test "x$TOOLCHAIN_TYPE" = xxlc; then
   123     CFLAGS_DEBUG_SYMBOLS="-g"
   118     CFLAGS_DEBUG_SYMBOLS="-g"
   124   elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
   119   elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
   125     CFLAGS_DEBUG_SYMBOLS="-Zi"
   120     CFLAGS_DEBUG_SYMBOLS="-Z7 -d2Zi+"
   126   fi
   121   fi
   127 
   122 
   128   if test "x$CXXFLAGS_DEBUG_SYMBOLS" = x; then
       
   129     # If we did not specify special flags for C++, use C version
       
   130     CXXFLAGS_DEBUG_SYMBOLS="$CFLAGS_DEBUG_SYMBOLS"
       
   131   fi
       
   132   AC_SUBST(CFLAGS_DEBUG_SYMBOLS)
   123   AC_SUBST(CFLAGS_DEBUG_SYMBOLS)
   133   AC_SUBST(CXXFLAGS_DEBUG_SYMBOLS)
       
   134 
       
   135   # FIXME: This was never used in the old build. What to do with it?
       
   136   if test "x$TOOLCHAIN_TYPE" = xgcc; then
       
   137     # "-Og" suppported for GCC 4.8 and later
       
   138     CFLAG_OPTIMIZE_DEBUG_FLAG="-Og"
       
   139     FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$CFLAG_OPTIMIZE_DEBUG_FLAG],
       
   140       IF_TRUE: [HAS_CFLAG_OPTIMIZE_DEBUG=true],
       
   141       IF_FALSE: [HAS_CFLAG_OPTIMIZE_DEBUG=false])
       
   142   fi
       
   143 
       
   144   # Debug symbols for JVM_CFLAGS
       
   145   if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
       
   146     JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -xs"
       
   147     if test "x$DEBUG_LEVEL" = xslowdebug; then
       
   148       JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -g"
       
   149     else
       
   150       # -g0 does not disable inlining, which -g does.
       
   151       JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -g0"
       
   152     fi
       
   153   elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
       
   154     JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -Z7 -d2Zi+"
       
   155   else
       
   156     JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -g"
       
   157   fi
       
   158   AC_SUBST(JVM_CFLAGS_SYMBOLS)
       
   159 ])
   124 ])
   160 
   125 
   161 AC_DEFUN([FLAGS_SETUP_WARNINGS],
   126 AC_DEFUN([FLAGS_SETUP_WARNINGS],
   162 [
   127 [
   163   AC_ARG_ENABLE([warnings-as-errors], [AS_HELP_STRING([--disable-warnings-as-errors],
   128   AC_ARG_ENABLE([warnings-as-errors], [AS_HELP_STRING([--disable-warnings-as-errors],
   208       DISABLED_WARNINGS_C="E_OLD_STYLE_FUNC_DECL E_OLD_STYLE_FUNC_DEF E_SEMANTICS_OF_OP_CHG_IN_ANSI_C E_NO_REPLACEMENT_IN_STRING E_DECLARATION_IN_CODE"
   173       DISABLED_WARNINGS_C="E_OLD_STYLE_FUNC_DECL E_OLD_STYLE_FUNC_DEF E_SEMANTICS_OF_OP_CHG_IN_ANSI_C E_NO_REPLACEMENT_IN_STRING E_DECLARATION_IN_CODE"
   209       DISABLED_WARNINGS_CXX="inllargeuse inllargeint notused wemptydecl notemsource"
   174       DISABLED_WARNINGS_CXX="inllargeuse inllargeint notused wemptydecl notemsource"
   210       # helpful quality checks, should not be disabled: inllargeuse inllargeint
   175       # helpful quality checks, should not be disabled: inllargeuse inllargeint
   211       ;;
   176       ;;
   212     gcc)
   177     gcc)
   213       # Prior to gcc 4.4, a -Wno-X where X is unknown for that version of gcc will cause an error
   178       DISABLE_WARNING_PREFIX="-Wno-"
   214       FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [-Wno-this-is-a-warning-that-do-not-exist],
       
   215           IF_TRUE: [GCC_CAN_DISABLE_WARNINGS=true],
       
   216           IF_FALSE: [GCC_CAN_DISABLE_WARNINGS=false]
       
   217       )
       
   218       if test "x$GCC_CAN_DISABLE_WARNINGS" = "xtrue"; then
       
   219         DISABLE_WARNING_PREFIX="-Wno-"
       
   220       else
       
   221         DISABLE_WARNING_PREFIX=
       
   222       fi
       
   223       CFLAGS_WARNINGS_ARE_ERRORS="-Werror"
   179       CFLAGS_WARNINGS_ARE_ERRORS="-Werror"
   224 
   180 
   225       # -Wall -Wextra does not enable all warnings. We add some more that we
   181       # -Wall -Wextra does not enable all warnings. We add some more that we
   226       # consider relevant:
   182       # consider relevant:
   227       WARNINGS_ENABLE_ADDITIONAL="-Wpointer-arith -Wundef -Wlogical-op -Winit-self -Wpacked -Wdisabled-optimization -Wtrampolines"
   183       WARNINGS_ENABLE_ADDITIONAL="-Wpointer-arith -Wundef -Wlogical-op -Winit-self -Wpacked -Wdisabled-optimization -Wtrampolines"
   240       CXX_OLD="$CXX"
   196       CXX_OLD="$CXX"
   241       CC="$BUILD_CC"
   197       CC="$BUILD_CC"
   242       CXX="$BUILD_CXX"
   198       CXX="$BUILD_CXX"
   243       CFLAGS_OLD="$CFLAGS"
   199       CFLAGS_OLD="$CFLAGS"
   244       CFLAGS=""
   200       CFLAGS=""
   245       FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [-Wno-this-is-a-warning-that-do-not-exist],
   201       BUILD_CC_DISABLE_WARNING_PREFIX="-Wno-"
   246           IF_TRUE: [BUILD_CC_CAN_DISABLE_WARNINGS=true],
       
   247           IF_FALSE: [BUILD_CC_CAN_DISABLE_WARNINGS=false]
       
   248       )
       
   249       if test "x$BUILD_CC_CAN_DISABLE_WARNINGS" = "xtrue"; then
       
   250         BUILD_CC_DISABLE_WARNING_PREFIX="-Wno-"
       
   251       else
       
   252         BUILD_CC_DISABLE_WARNING_PREFIX=
       
   253       fi
       
   254       CC="$CC_OLD"
   202       CC="$CC_OLD"
   255       CXX="$CXX_OLD"
   203       CXX="$CXX_OLD"
   256       CFLAGS="$CFLAGS_OLD"
   204       CFLAGS="$CFLAGS_OLD"
   257       ;;
   205       ;;
   258     clang)
   206     clang)
   288       # FIXME: By adding this to C(XX)FLAGS_DEBUG_OPTIONS/JVM_CFLAGS_SYMBOLS it
   236       # FIXME: By adding this to C(XX)FLAGS_DEBUG_OPTIONS/JVM_CFLAGS_SYMBOLS it
   289       # get's added conditionally on whether we produce debug symbols or not.
   237       # get's added conditionally on whether we produce debug symbols or not.
   290       # This is most likely not really correct.
   238       # This is most likely not really correct.
   291 
   239 
   292       # Add runtime stack smashing and undefined behavior checks.
   240       # Add runtime stack smashing and undefined behavior checks.
   293       # Not all versions of gcc support -fstack-protector
   241       CFLAGS_DEBUG_OPTIONS="-fstack-protector-all --param ssp-buffer-size=1 -Wstack-protector"
   294       STACK_PROTECTOR_CFLAG="-fstack-protector-all"
   242       CXXFLAGS_DEBUG_OPTIONS="-fstack-protector-all --param ssp-buffer-size=1 -Wstack-protector"
   295       FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$STACK_PROTECTOR_CFLAG -Werror],
   243 
   296           IF_FALSE: [STACK_PROTECTOR_CFLAG=""])
   244       JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -fstack-protector-all --param ssp-buffer-size=1 -Wstack-protector"
   297 
       
   298       CFLAGS_DEBUG_OPTIONS="$STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1 -Wstack-protector"
       
   299       CXXFLAGS_DEBUG_OPTIONS="$STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1 -Wstack-protector"
       
   300 
       
   301       if test "x$STACK_PROTECTOR_CFLAG" != x; then
       
   302         JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS $STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1 -Wstack-protector"
       
   303       fi
       
   304       ;;
   245       ;;
   305     esac
   246     esac
   306   fi
   247   fi
   307 ])
   248 ])
   308 
   249 
   531   fi
   472   fi
   532 
   473 
   533   if test "x$DEBUG_LEVEL" != xrelease; then
   474   if test "x$DEBUG_LEVEL" != xrelease; then
   534     DEBUG_OPTIONS_FLAGS_JDK="$CFLAGS_DEBUG_OPTIONS"
   475     DEBUG_OPTIONS_FLAGS_JDK="$CFLAGS_DEBUG_OPTIONS"
   535     DEBUG_SYMBOLS_CFLAGS_JDK="$CFLAGS_DEBUG_SYMBOLS"
   476     DEBUG_SYMBOLS_CFLAGS_JDK="$CFLAGS_DEBUG_SYMBOLS"
   536     DEBUG_SYMBOLS_CXXFLAGS_JDK="$CXXFLAGS_DEBUG_SYMBOLS"
       
   537   fi
   477   fi
   538 
   478 
   539   #### TOOLCHAIN DEFINES
   479   #### TOOLCHAIN DEFINES
   540 
   480 
   541   if test "x$TOOLCHAIN_TYPE" = xgcc; then
   481   if test "x$TOOLCHAIN_TYPE" = xgcc; then
   594     TOOLCHAIN_CFLAGS_JDK="-mt $TOOLCHAIN_FLAGS"
   534     TOOLCHAIN_CFLAGS_JDK="-mt $TOOLCHAIN_FLAGS"
   595     TOOLCHAIN_CFLAGS_JDK_CONLY="-xc99=%none -xCC -Xa -W0,-noglobal $TOOLCHAIN_CFLAGS" # C only
   535     TOOLCHAIN_CFLAGS_JDK_CONLY="-xc99=%none -xCC -Xa -W0,-noglobal $TOOLCHAIN_CFLAGS" # C only
   596     TOOLCHAIN_CFLAGS_JDK_CXXONLY="-features=no%except -norunpath -xnolib" # CXX only
   536     TOOLCHAIN_CFLAGS_JDK_CXXONLY="-features=no%except -norunpath -xnolib" # CXX only
   597     TOOLCHAIN_CFLAGS_JVM="-template=no%extdef -features=no%split_init \
   537     TOOLCHAIN_CFLAGS_JVM="-template=no%extdef -features=no%split_init \
   598         -library=stlport4 -mt -features=no%except $TOOLCHAIN_FLAGS"
   538         -library=stlport4 -mt -features=no%except $TOOLCHAIN_FLAGS"
       
   539     if test "x$DEBUG_LEVEL" = xslowdebug; then
       
   540       # Previously -g was used instead of -g0 for slowdebug; this is equivalent
       
   541       # to setting +d.
       
   542       TOOLCHAIN_CFLAGS_JVM="$TOOLCHAIN_CFLAGS_JVM +d"
       
   543     fi
       
   544 
   599   elif test "x$TOOLCHAIN_TYPE" = xxlc; then
   545   elif test "x$TOOLCHAIN_TYPE" = xxlc; then
   600     TOOLCHAIN_CFLAGS_JDK="-qchars=signed -qfullpath -qsaveopt"  # add on both CFLAGS
   546     TOOLCHAIN_CFLAGS_JDK="-qchars=signed -qfullpath -qsaveopt"  # add on both CFLAGS
   601     TOOLCHAIN_CFLAGS_JVM="-qtune=balanced \
   547     TOOLCHAIN_CFLAGS_JVM="-qtune=balanced \
   602         -qalias=noansi -qstrict -qtls=default -qlanglvl=c99vla \
   548         -qalias=noansi -qstrict -qtls=default -qlanglvl=c99vla \
   603         -qlanglvl=noredefmac -qnortti -qnoeh -qignerrno"
   549         -qlanglvl=noredefmac -qnortti -qnoeh -qignerrno"
   841 
   787 
   842   if test "x$TOOLCHAIN_TYPE" = xgcc; then
   788   if test "x$TOOLCHAIN_TYPE" = xgcc; then
   843     TOOLCHAIN_CHECK_COMPILER_VERSION(VERSION: 6, PREFIX: $2, IF_AT_LEAST: FLAGS_SETUP_GCC6_COMPILER_FLAGS($1))
   789     TOOLCHAIN_CHECK_COMPILER_VERSION(VERSION: 6, PREFIX: $2, IF_AT_LEAST: FLAGS_SETUP_GCC6_COMPILER_FLAGS($1))
   844     $1_TOOLCHAIN_CFLAGS="${$1_GCC6_CFLAGS}"
   790     $1_TOOLCHAIN_CFLAGS="${$1_GCC6_CFLAGS}"
   845 
   791 
   846     TOOLCHAIN_CHECK_COMPILER_VERSION(VERSION: [4.8], PREFIX: $2,
   792     $1_WARNING_CFLAGS_JVM="-Wno-format-zero-length -Wtype-limits -Wuninitialized"
   847         IF_AT_LEAST: [
       
   848           # These flags either do not work or give spurious warnings prior to gcc 4.8.
       
   849           $1_WARNING_CFLAGS_JVM="-Wno-format-zero-length -Wtype-limits -Wuninitialized"
       
   850         ]
       
   851     )
       
   852   fi
   793   fi
   853 
   794 
   854   # EXPORT to API
   795   # EXPORT to API
   855   CFLAGS_JVM_COMMON="$ALWAYS_CFLAGS_JVM $ALWAYS_DEFINES_JVM $TOOLCHAIN_CFLAGS_JVM \
   796   CFLAGS_JVM_COMMON="$ALWAYS_CFLAGS_JVM $ALWAYS_DEFINES_JVM $TOOLCHAIN_CFLAGS_JVM \
   856       $OS_CFLAGS $OS_CFLAGS_JVM $CFLAGS_OS_DEF_JVM $DEBUG_CFLAGS_JVM \
   797       $OS_CFLAGS $OS_CFLAGS_JVM $CFLAGS_OS_DEF_JVM $DEBUG_CFLAGS_JVM \
   857       $WARNING_CFLAGS $WARNING_CFLAGS_JVM $JVM_PICFLAG"
   798       $WARNING_CFLAGS $WARNING_CFLAGS_JVM $JVM_PICFLAG"
   858 
   799 
   859   CFLAGS_JDK_COMMON="$ALWAYS_CFLAGS_JDK $ALWAYS_DEFINES_JDK $TOOLCHAIN_CFLAGS_JDK \
   800   CFLAGS_JDK_COMMON="$ALWAYS_CFLAGS_JDK $ALWAYS_DEFINES_JDK $TOOLCHAIN_CFLAGS_JDK \
   860       $OS_CFLAGS $CFLAGS_OS_DEF_JDK $DEBUG_CFLAGS_JDK $DEBUG_OPTIONS_FLAGS_JDK \
   801       $OS_CFLAGS $CFLAGS_OS_DEF_JDK $DEBUG_CFLAGS_JDK $DEBUG_OPTIONS_FLAGS_JDK \
   861       $WARNING_CFLAGS $WARNING_CFLAGS_JDK"
   802       $WARNING_CFLAGS $WARNING_CFLAGS_JDK $DEBUG_SYMBOLS_CFLAGS_JDK"
   862 
   803 
   863   # Use ${$2EXTRA_CFLAGS} to block EXTRA_CFLAGS to be added to build flags.
   804   # Use ${$2EXTRA_CFLAGS} to block EXTRA_CFLAGS to be added to build flags.
   864   # (Currently we don't have any OPENJDK_BUILD_EXTRA_CFLAGS, but that might
   805   # (Currently we don't have any OPENJDK_BUILD_EXTRA_CFLAGS, but that might
   865   # change in the future.)
   806   # change in the future.)
   866 
   807 
   867   CFLAGS_JDK_COMMON_CONLY="$TOOLCHAIN_CFLAGS_JDK_CONLY $DEBUG_SYMBOLS_CFLAGS_JDK \
   808   CFLAGS_JDK_COMMON_CONLY="$TOOLCHAIN_CFLAGS_JDK_CONLY  \
   868       $WARNING_CFLAGS_JDK_CONLY ${$2EXTRA_CFLAGS}"
   809       $WARNING_CFLAGS_JDK_CONLY ${$2EXTRA_CFLAGS}"
   869   CFLAGS_JDK_COMMON_CXXONLY="$ALWAYS_DEFINES_JDK_CXXONLY $TOOLCHAIN_CFLAGS_JDK_CXXONLY \
   810   CFLAGS_JDK_COMMON_CXXONLY="$ALWAYS_DEFINES_JDK_CXXONLY $TOOLCHAIN_CFLAGS_JDK_CXXONLY \
   870       $DEBUG_SYMBOLS_CXXFLAGS_JDK $WARNING_CFLAGS_JDK_CXXONLY ${$2EXTRA_CXXFLAGS}"
   811       $WARNING_CFLAGS_JDK_CXXONLY ${$2EXTRA_CXXFLAGS}"
   871 
   812 
   872   $1_CFLAGS_JVM="${$1_DEFINES_CPU_JVM} ${$1_CFLAGS_CPU} ${$1_CFLAGS_CPU_JVM} ${$1_TOOLCHAIN_CFLAGS} ${$1_WARNING_CFLAGS_JVM}"
   813   $1_CFLAGS_JVM="${$1_DEFINES_CPU_JVM} ${$1_CFLAGS_CPU} ${$1_CFLAGS_CPU_JVM} ${$1_TOOLCHAIN_CFLAGS} ${$1_WARNING_CFLAGS_JVM}"
   873   $1_CFLAGS_JDK="${$1_DEFINES_CPU_JDK} ${$1_CFLAGS_CPU} ${$1_CFLAGS_CPU_JDK} ${$1_TOOLCHAIN_CFLAGS}"
   814   $1_CFLAGS_JDK="${$1_DEFINES_CPU_JDK} ${$1_CFLAGS_CPU} ${$1_CFLAGS_CPU_JDK} ${$1_TOOLCHAIN_CFLAGS}"
   874 
   815 
   875   $2JVM_CFLAGS="$CFLAGS_JVM_COMMON ${$1_CFLAGS_JVM} ${$2EXTRA_CXXFLAGS}"
   816   $2JVM_CFLAGS="$CFLAGS_JVM_COMMON ${$1_CFLAGS_JVM} ${$2EXTRA_CXXFLAGS}"