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" |
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 |
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}" |