119 elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
119 elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then |
120 CFLAGS_DEBUG_SYMBOLS="-Z7 -d2Zi+" |
120 CFLAGS_DEBUG_SYMBOLS="-Z7 -d2Zi+" |
121 fi |
121 fi |
122 |
122 |
123 AC_SUBST(CFLAGS_DEBUG_SYMBOLS) |
123 AC_SUBST(CFLAGS_DEBUG_SYMBOLS) |
124 |
|
125 # FIXME: This was never used in the old build. What to do with it? |
|
126 if test "x$TOOLCHAIN_TYPE" = xgcc; then |
|
127 # "-Og" suppported for GCC 4.8 and later |
|
128 CFLAG_OPTIMIZE_DEBUG_FLAG="-Og" |
|
129 FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$CFLAG_OPTIMIZE_DEBUG_FLAG], |
|
130 IF_TRUE: [HAS_CFLAG_OPTIMIZE_DEBUG=true], |
|
131 IF_FALSE: [HAS_CFLAG_OPTIMIZE_DEBUG=false]) |
|
132 fi |
|
133 ]) |
124 ]) |
134 |
125 |
135 AC_DEFUN([FLAGS_SETUP_WARNINGS], |
126 AC_DEFUN([FLAGS_SETUP_WARNINGS], |
136 [ |
127 [ |
137 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], |
161 solstudio) |
152 solstudio) |
162 DISABLE_WARNING_PREFIX="-erroff=" |
153 DISABLE_WARNING_PREFIX="-erroff=" |
163 CFLAGS_WARNINGS_ARE_ERRORS="-errtags -errwarn=%all" |
154 CFLAGS_WARNINGS_ARE_ERRORS="-errtags -errwarn=%all" |
164 ;; |
155 ;; |
165 gcc) |
156 gcc) |
166 # Prior to gcc 4.4, a -Wno-X where X is unknown for that version of gcc will cause an error |
157 DISABLE_WARNING_PREFIX="-Wno-" |
167 FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [-Wno-this-is-a-warning-that-do-not-exist], |
|
168 IF_TRUE: [GCC_CAN_DISABLE_WARNINGS=true], |
|
169 IF_FALSE: [GCC_CAN_DISABLE_WARNINGS=false] |
|
170 ) |
|
171 if test "x$GCC_CAN_DISABLE_WARNINGS" = "xtrue"; then |
|
172 DISABLE_WARNING_PREFIX="-Wno-" |
|
173 else |
|
174 DISABLE_WARNING_PREFIX= |
|
175 fi |
|
176 CFLAGS_WARNINGS_ARE_ERRORS="-Werror" |
158 CFLAGS_WARNINGS_ARE_ERRORS="-Werror" |
177 # Repeate the check for the BUILD_CC and BUILD_CXX. Need to also reset |
159 # Repeate the check for the BUILD_CC and BUILD_CXX. Need to also reset |
178 # CFLAGS since any target specific flags will likely not work with the |
160 # CFLAGS since any target specific flags will likely not work with the |
179 # build compiler |
161 # build compiler |
180 CC_OLD="$CC" |
162 CC_OLD="$CC" |
181 CXX_OLD="$CXX" |
163 CXX_OLD="$CXX" |
182 CC="$BUILD_CC" |
164 CC="$BUILD_CC" |
183 CXX="$BUILD_CXX" |
165 CXX="$BUILD_CXX" |
184 CFLAGS_OLD="$CFLAGS" |
166 CFLAGS_OLD="$CFLAGS" |
185 CFLAGS="" |
167 CFLAGS="" |
186 FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [-Wno-this-is-a-warning-that-do-not-exist], |
168 BUILD_CC_DISABLE_WARNING_PREFIX="-Wno-" |
187 IF_TRUE: [BUILD_CC_CAN_DISABLE_WARNINGS=true], |
|
188 IF_FALSE: [BUILD_CC_CAN_DISABLE_WARNINGS=false] |
|
189 ) |
|
190 if test "x$BUILD_CC_CAN_DISABLE_WARNINGS" = "xtrue"; then |
|
191 BUILD_CC_DISABLE_WARNING_PREFIX="-Wno-" |
|
192 else |
|
193 BUILD_CC_DISABLE_WARNING_PREFIX= |
|
194 fi |
|
195 CC="$CC_OLD" |
169 CC="$CC_OLD" |
196 CXX="$CXX_OLD" |
170 CXX="$CXX_OLD" |
197 CFLAGS="$CFLAGS_OLD" |
171 CFLAGS="$CFLAGS_OLD" |
198 ;; |
172 ;; |
199 clang) |
173 clang) |
225 # FIXME: By adding this to C(XX)FLAGS_DEBUG_OPTIONS/JVM_CFLAGS_SYMBOLS it |
199 # FIXME: By adding this to C(XX)FLAGS_DEBUG_OPTIONS/JVM_CFLAGS_SYMBOLS it |
226 # get's added conditionally on whether we produce debug symbols or not. |
200 # get's added conditionally on whether we produce debug symbols or not. |
227 # This is most likely not really correct. |
201 # This is most likely not really correct. |
228 |
202 |
229 # Add runtime stack smashing and undefined behavior checks. |
203 # Add runtime stack smashing and undefined behavior checks. |
230 # Not all versions of gcc support -fstack-protector |
204 CFLAGS_DEBUG_OPTIONS="-fstack-protector-all --param ssp-buffer-size=1" |
231 STACK_PROTECTOR_CFLAG="-fstack-protector-all" |
205 CXXFLAGS_DEBUG_OPTIONS="-fstack-protector-all --param ssp-buffer-size=1" |
232 FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$STACK_PROTECTOR_CFLAG -Werror], |
206 |
233 IF_FALSE: [STACK_PROTECTOR_CFLAG=""]) |
207 JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -fstack-protector-all --param ssp-buffer-size=1" |
234 |
|
235 CFLAGS_DEBUG_OPTIONS="$STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1" |
|
236 CXXFLAGS_DEBUG_OPTIONS="$STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1" |
|
237 |
|
238 if test "x$STACK_PROTECTOR_CFLAG" != x; then |
|
239 JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS $STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1" |
|
240 fi |
|
241 ;; |
208 ;; |
242 esac |
209 esac |
243 fi |
210 fi |
244 ]) |
211 ]) |
245 |
212 |
787 |
754 |
788 if test "x$TOOLCHAIN_TYPE" = xgcc; then |
755 if test "x$TOOLCHAIN_TYPE" = xgcc; then |
789 TOOLCHAIN_CHECK_COMPILER_VERSION(VERSION: 6, PREFIX: $2, IF_AT_LEAST: FLAGS_SETUP_GCC6_COMPILER_FLAGS($1)) |
756 TOOLCHAIN_CHECK_COMPILER_VERSION(VERSION: 6, PREFIX: $2, IF_AT_LEAST: FLAGS_SETUP_GCC6_COMPILER_FLAGS($1)) |
790 $1_TOOLCHAIN_CFLAGS="${$1_GCC6_CFLAGS}" |
757 $1_TOOLCHAIN_CFLAGS="${$1_GCC6_CFLAGS}" |
791 |
758 |
792 TOOLCHAIN_CHECK_COMPILER_VERSION(VERSION: [4.8], PREFIX: $2, |
759 $1_WARNING_CFLAGS_JVM="-Wno-format-zero-length -Wtype-limits -Wuninitialized" |
793 IF_AT_LEAST: [ |
|
794 # These flags either do not work or give spurious warnings prior to gcc 4.8. |
|
795 $1_WARNING_CFLAGS_JVM="-Wno-format-zero-length -Wtype-limits -Wuninitialized" |
|
796 ] |
|
797 ) |
|
798 fi |
760 fi |
799 |
761 |
800 # EXPORT to API |
762 # EXPORT to API |
801 CFLAGS_JVM_COMMON="$ALWAYS_CFLAGS_JVM $ALWAYS_DEFINES_JVM $TOOLCHAIN_CFLAGS_JVM \ |
763 CFLAGS_JVM_COMMON="$ALWAYS_CFLAGS_JVM $ALWAYS_DEFINES_JVM $TOOLCHAIN_CFLAGS_JVM \ |
802 $OS_CFLAGS $OS_CFLAGS_JVM $CFLAGS_OS_DEF_JVM $DEBUG_CFLAGS_JVM \ |
764 $OS_CFLAGS $OS_CFLAGS_JVM $CFLAGS_OS_DEF_JVM $DEBUG_CFLAGS_JVM \ |