With --disable-optimization, _FORTIFY_SOURCE=3 produces compiler warnings/errors: /usr/include/features.h:422:4: error: #warning _FORTIFY_SOURCE requires compiling with optimization (-O) [-Werror=cpp] 422 | # warning _FORTIFY_SOURCE requires compiling with optimization (-O) Before enabling it for --enable-maintainer-mode, check the compiler doesn't fail when using the flag. --- acinclude.m4 | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/acinclude.m4 b/acinclude.m4 index 9f2dc302e..168117840 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -65,7 +65,6 @@ AC_DEFUN([COMPILER_FLAGS], [ with_cflags="$with_cflags -DG_DISABLE_DEPRECATED" with_cflags="$with_cflags -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_28" with_cflags="$with_cflags -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_32" - with_cflags="$with_cflags -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3" fi AC_SUBST([WARNING_CFLAGS], $with_cflags) ]) @@ -136,6 +135,21 @@ AC_DEFUN([MISC_FLAGS], [ misc_cflags="$misc_cflags --coverage" misc_ldflags="$misc_ldflags --coverage" fi + if (test "$USE_MAINTAINER_MODE" = "yes"); then + AC_CACHE_CHECK([whether ${CC-cc} accepts -D_FORTIFY_SOURCE=3], + ac_cv_prog_cc_fortify_source_3, [ + echo '#include <errno.h>' > fortify.c + if test -z "`${CC-cc} ${CFLAGS} ${misc_cflags} -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -c fortify.c 2>&1`"; then + ac_cv_prog_cc_fortify_source_3=yes + else + ac_cv_prog_cc_fortify_source_3=no + fi + rm -f fortify.c fortify.o + ]) + if test "${ac_cv_prog_cc_fortify_source_3}" = "yes"; then + misc_cflags="$misc_cflags -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3" + fi + fi misc_cflags="$misc_cflags -ffunction-sections -fdata-sections" misc_ldflags="$misc_ldflags -Wl,--gc-sections" AC_SUBST([MISC_CFLAGS], $misc_cflags) -- 2.48.1