Merge r1812263, r1812301 from trunk:

Fix maintainer mode with GCC/Clang.

Setting -Wstrict-prototypes in combination
with -Werror leads to compiler errors during
configure checks (autoconf generates incomplete
prototypes).

Adding -Wno-error=strict-prototypes lets the
compiler tolerate those.

Possible future enhancement: remember such
"configure time only" flags and remove them
from CFLAGS before generating our build time
files (Makefile, config_vars.mk etc.), so that
the full -Werror is in place during building.


Follow up to r1812263.

As suggested by Joe, add --maintainer/debugger-mode's CFLAGS in
NOTEST_CFLAGS to avoid interractions with autoconf's AC_LANG_PROGRAM.

APACHE_ADD_GCC_CFLAG now also forces -Wno-strict-prototypes for -Werror
to work despite AC_LANG_PROGRAM generating this warning by itself.


Submitted by: rjung, ylavic
Reviewed by: ylavic, rjung, jim


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1812437 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Jim Jagielski
2017-10-17 18:48:24 +00:00
parent 50a1c62f0f
commit e2983e0528
3 changed files with 28 additions and 30 deletions

15
STATUS
View File

@ -117,21 +117,6 @@ RELEASE SHOWSTOPPERS:
PATCHES ACCEPTED TO BACKPORT FROM TRUNK: PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
[ start all new proposals below, under PATCHES PROPOSED. ] [ start all new proposals below, under PATCHES PROPOSED. ]
*) configure.in: Fix maintainer mode with GCC/Clang.
Setting -Wstrict-prototypes in combination with -Werror leads to compiler
errors during configure checks (autoconf generates incomplete prototypes).
As suggested by Joe, add --maintainer/debugger-mode's CFLAGS in
NOTEST_CFLAGS to avoid interractions with autoconf's AC_LANG_PROGRAM.
APACHE_ADD_GCC_CFLAG now also forces -Wno-strict-prototypes for -Werror
to work despite AC_LANG_PROGRAM generating this warning by itself.
trunk patch: http://svn.apache.org/r1812263
http://svn.apache.org/r1812301
2.4.x patch: svn merge -c 1812263,1812301 ^/httpd/httpd/trunk .
+1: ylavic, rjung, jim
ylavic: if the below mod_journald proposal gets accepted, it will
also need a backport of r1812339, otherwise maintainer
mode builds will fail due to -Werror.
PATCHES PROPOSED TO BACKPORT FROM TRUNK: PATCHES PROPOSED TO BACKPORT FROM TRUNK:

View File

@ -726,22 +726,26 @@ YES_IS_DEFINED
]) ])
dnl dnl
dnl APACHE_ADD_GCC_CFLAGS dnl APACHE_ADD_GCC_CFLAG
dnl dnl
dnl Check if compiler is gcc and supports flag. If yes, add to CFLAGS. dnl Check if compiler is gcc and supports flag. If yes, add to NOTEST_CFLAGS.
dnl NOTEST_CFLAGS is merged lately, thus it won't accumulate in CFLAGS here.
dnl Also, AC_LANG_PROGRAM() itself is known to trigger [-Wstrict-prototypes]
dnl with some autoconf versions, so we force -Wno-strict-prototypes for the
dnl check to avoid spurious failures when adding flags like -Werror.
dnl dnl
AC_DEFUN([APACHE_ADD_GCC_CFLAG], [ AC_DEFUN([APACHE_ADD_GCC_CFLAG], [
define([ap_gcc_ckvar], [ac_cv_gcc_]translit($1, [-:.=], [____])) define([ap_gcc_ckvar], [ac_cv_gcc_]translit($1, [-:.=], [____]))
if test "$GCC" = "yes"; then if test "$GCC" = "yes"; then
AC_CACHE_CHECK([whether gcc accepts $1], ap_gcc_ckvar, [ AC_CACHE_CHECK([whether gcc accepts $1], ap_gcc_ckvar, [
save_CFLAGS="$CFLAGS" save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $1" CFLAGS="$CFLAGS $1 -Wno-strict-prototypes"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
[ap_gcc_ckvar=yes], [ap_gcc_ckvar=no]) [ap_gcc_ckvar=yes], [ap_gcc_ckvar=no])
CFLAGS="$save_CFLAGS" CFLAGS="$save_CFLAGS"
]) ])
if test "$]ap_gcc_ckvar[" = "yes" ; then if test "$]ap_gcc_ckvar[" = "yes" ; then
APR_ADDTO(CFLAGS,[$1]) APR_ADDTO(NOTEST_CFLAGS,[$1])
fi fi
fi fi
undefine([ap_gcc_ckvar]) undefine([ap_gcc_ckvar])

View File

@ -593,17 +593,21 @@ AC_ARG_ENABLE(load-all-modules,APACHE_HELP_STRING(--enable-load-all-modules,Load
AC_ARG_ENABLE(maintainer-mode,APACHE_HELP_STRING(--enable-maintainer-mode,Turn on debugging and compile time warnings and load all compiled modules), AC_ARG_ENABLE(maintainer-mode,APACHE_HELP_STRING(--enable-maintainer-mode,Turn on debugging and compile time warnings and load all compiled modules),
[ [
if test "$enableval" = "yes"; then if test "$enableval" = "yes"; then
APR_ADDTO(CPPFLAGS, -DAP_DEBUG) APR_ADDTO(NOTEST_CPPFLAGS, -DAP_DEBUG)
if test "$GCC" = "yes"; then if test "$GCC" = "yes"; then
APR_ADDTO(CFLAGS,[-Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -Wpointer-arith])
APACHE_ADD_GCC_CFLAG([-std=c89]) APACHE_ADD_GCC_CFLAG([-std=c89])
APACHE_ADD_GCC_CFLAG([-Werror]) APACHE_ADD_GCC_CFLAG([-Werror])
APACHE_ADD_GCC_CFLAG([-Wall])
APACHE_ADD_GCC_CFLAG([-Wstrict-prototypes])
APACHE_ADD_GCC_CFLAG([-Wmissing-prototypes])
APACHE_ADD_GCC_CFLAG([-Wmissing-declarations])
APACHE_ADD_GCC_CFLAG([-Wdeclaration-after-statement]) APACHE_ADD_GCC_CFLAG([-Wdeclaration-after-statement])
APACHE_ADD_GCC_CFLAG([-Wpointer-arith])
APACHE_ADD_GCC_CFLAG([-Wformat]) APACHE_ADD_GCC_CFLAG([-Wformat])
APACHE_ADD_GCC_CFLAG([-Wformat-security]) APACHE_ADD_GCC_CFLAG([-Wformat-security])
APACHE_ADD_GCC_CFLAG([-Wunused]) APACHE_ADD_GCC_CFLAG([-Wunused])
elif test "$AIX_XLC" = "yes"; then elif test "$AIX_XLC" = "yes"; then
APR_ADDTO(CFLAGS,-qfullpath -qinitauto=FE -qcheck=all -qinfo=pro) APR_ADDTO(NOTEST_CFLAGS,-qfullpath -qinitauto=FE -qcheck=all -qinfo=pro)
fi fi
if test "x$enable_load_all_modules" = "x"; then if test "x$enable_load_all_modules" = "x"; then
LOAD_ALL_MODULES=yes LOAD_ALL_MODULES=yes
@ -619,16 +623,21 @@ AC_ARG_ENABLE(maintainer-mode,APACHE_HELP_STRING(--enable-maintainer-mode,Turn o
AC_ARG_ENABLE(debugger-mode,APACHE_HELP_STRING(--enable-debugger-mode,Turn on debugging and compile time warnings and turn off optimization), AC_ARG_ENABLE(debugger-mode,APACHE_HELP_STRING(--enable-debugger-mode,Turn on debugging and compile time warnings and turn off optimization),
[ [
if test "$enableval" = "yes"; then if test "$enableval" = "yes"; then
APR_ADDTO(CPPFLAGS, -DAP_DEBUG) APR_ADDTO(NOTEST_CPPFLAGS, -DAP_DEBUG)
if test "$GCC" = "yes"; then if test "$GCC" = "yes"; then
APR_ADDTO(CFLAGS,[-Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -Wpointer-arith -O0]) APACHE_ADD_GCC_CFLAG([-O0])
APACHE_ADD_GCC_CFLAG([-Wall])
APACHE_ADD_GCC_CFLAG([-Wstrict-prototypes])
APACHE_ADD_GCC_CFLAG([-Wmissing-prototypes])
APACHE_ADD_GCC_CFLAG([-Wmissing-declarations])
APACHE_ADD_GCC_CFLAG([-Wdeclaration-after-statement]) APACHE_ADD_GCC_CFLAG([-Wdeclaration-after-statement])
APACHE_ADD_GCC_CFLAG([-Werror=declaration-after-statement]) APACHE_ADD_GCC_CFLAG([-Werror=declaration-after-statement])
APACHE_ADD_GCC_CFLAG([-Wpointer-arith])
APACHE_ADD_GCC_CFLAG([-Wformat]) APACHE_ADD_GCC_CFLAG([-Wformat])
APACHE_ADD_GCC_CFLAG([-Wformat-security]) APACHE_ADD_GCC_CFLAG([-Wformat-security])
APACHE_ADD_GCC_CFLAG([-Werror=format-security]) APACHE_ADD_GCC_CFLAG([-Werror=format-security])
elif test "$AIX_XLC" = "yes"; then elif test "$AIX_XLC" = "yes"; then
APR_ADDTO(CFLAGS,-qfullpath -qinitauto=FE -qcheck=all -qinfo=pro) APR_ADDTO(NOTEST_CFLAGS,-qfullpath -qinitauto=FE -qcheck=all -qinfo=pro)
fi fi
fi fi
])dnl ])dnl
@ -810,10 +819,10 @@ AC_MSG_NOTICE([Restore user-defined environment settings...])
AC_MSG_NOTICE([]) AC_MSG_NOTICE([])
APACHE_CONF_SEL_CC=${CC} APACHE_CONF_SEL_CC=${CC}
APACHE_CONF_SEL_CFLAGS=${CFLAGS} APACHE_CONF_SEL_CFLAGS="${CFLAGS} ${EXTRA_CFLAGS} ${NOTEST_CFLAGS}"
APACHE_CONF_SEL_LDFLAGS=${LDFLAGS} APACHE_CONF_SEL_CPPFLAGS="${CPPFLAGS} ${EXTRA_CPPFLAGS} ${NOTEST_CPPFLAGS}"
APACHE_CONF_SEL_LIBS=${LIBS} APACHE_CONF_SEL_LDFLAGS="${LDFLAGS} ${EXTRA_LDFLAGS} ${NOTEST_LDFLAGS}"
APACHE_CONF_SEL_CPPFLAGS=${CPPFLAGS} APACHE_CONF_SEL_LIBS="${LIBS} ${EXTRA_LIBS} ${NOTEST_LIBS}"
APACHE_CONF_SEL_CPP=${CPP} APACHE_CONF_SEL_CPP=${CPP}
APR_RESTORE_THE_ENVIRONMENT(CPPFLAGS, EXTRA_) APR_RESTORE_THE_ENVIRONMENT(CPPFLAGS, EXTRA_)
@ -879,8 +888,8 @@ AC_MSG_NOTICE([summary of build options:
Install prefix: ${prefix} Install prefix: ${prefix}
C compiler: ${APACHE_CONF_SEL_CC} C compiler: ${APACHE_CONF_SEL_CC}
CFLAGS: ${APACHE_CONF_SEL_CFLAGS} CFLAGS: ${APACHE_CONF_SEL_CFLAGS}
CPPFLAGS: ${APACHE_CONF_SEL_CPPFLAGS}
LDFLAGS: ${APACHE_CONF_SEL_LDFLAGS} LDFLAGS: ${APACHE_CONF_SEL_LDFLAGS}
LIBS: ${APACHE_CONF_SEL_LIBS} LIBS: ${APACHE_CONF_SEL_LIBS}
CPPFLAGS: ${APACHE_CONF_SEL_CPPFLAGS}
C preprocessor: ${APACHE_CONF_SEL_CPP} C preprocessor: ${APACHE_CONF_SEL_CPP}
]) ])