mirror of
https://github.com/FRRouting/frr.git
synced 2025-04-30 13:37:17 +02:00
build: chop down complicated CFLAGS logic
Other packages don't have --with-cflags; we don't need it either. The user can specify CFLAGS= in the environment or on ./configure and that would work perfectly fine. If only it weren't for autoconf being an idiot and adding its own "-g -O2" ... so we work around that. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
This commit is contained in:
parent
491871f72d
commit
a89b1641fd
119
configure.ac
119
configure.ac
|
@ -49,17 +49,6 @@ dnl XXX add --pkgsrcrcdir to autoconf standard directory list somehow
|
||||||
AC_SUBST(pkgsrcdir)
|
AC_SUBST(pkgsrcdir)
|
||||||
AC_SUBST(pkgsrcrcdir)
|
AC_SUBST(pkgsrcrcdir)
|
||||||
|
|
||||||
dnl ------------
|
|
||||||
dnl Check CFLAGS
|
|
||||||
dnl ------------
|
|
||||||
AC_ARG_WITH(cflags,
|
|
||||||
AS_HELP_STRING([--with-cflags], [Set CFLAGS for use in compilation.]))
|
|
||||||
if test "x$with_cflags" != "x" ; then
|
|
||||||
CFLAGS="$with_cflags" ; cflags_specified=yes ;
|
|
||||||
elif test -n "$CFLAGS" ; then
|
|
||||||
cflags_specified=yes ;
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_ARG_ENABLE(tcmalloc,
|
AC_ARG_ENABLE(tcmalloc,
|
||||||
AS_HELP_STRING([--enable-tcmalloc], [Turn on tcmalloc]),
|
AS_HELP_STRING([--enable-tcmalloc], [Turn on tcmalloc]),
|
||||||
[case "${enableval}" in
|
[case "${enableval}" in
|
||||||
|
@ -74,13 +63,18 @@ esac],[tcmalloc_enabled=false])
|
||||||
dnl --------------------
|
dnl --------------------
|
||||||
dnl Check CC and friends
|
dnl Check CC and friends
|
||||||
dnl --------------------
|
dnl --------------------
|
||||||
|
dnl note orig_cflags is also used further down
|
||||||
|
orig_cflags="$CFLAGS"
|
||||||
AC_LANG([C])
|
AC_LANG([C])
|
||||||
AC_PROG_CC
|
AC_PROG_CC
|
||||||
AC_PROG_CPP
|
AC_PROG_CPP
|
||||||
AM_PROG_CC_C_O
|
AM_PROG_CC_C_O
|
||||||
AC_PROG_EGREP
|
dnl remove autoconf default "-g -O2"
|
||||||
|
CFLAGS="$orig_cflags"
|
||||||
AC_PROG_CC_C99
|
AC_PROG_CC_C99
|
||||||
|
|
||||||
|
AC_PROG_EGREP
|
||||||
|
|
||||||
dnl autoconf 2.59 appears not to support AC_PROG_SED
|
dnl autoconf 2.59 appears not to support AC_PROG_SED
|
||||||
dnl AC_PROG_SED
|
dnl AC_PROG_SED
|
||||||
AC_CHECK_PROG([SED],[sed],[sed],[/bin/false])
|
AC_CHECK_PROG([SED],[sed],[sed],[/bin/false])
|
||||||
|
@ -95,25 +89,8 @@ else
|
||||||
fi
|
fi
|
||||||
AM_CONDITIONAL([HAVE_LATEX], [test "x$HAVE_LATEX" = "xtrue"])
|
AM_CONDITIONAL([HAVE_LATEX], [test "x$HAVE_LATEX" = "xtrue"])
|
||||||
|
|
||||||
if test "x${GCC}" != "xyes" ; then
|
dnl try and enable CFLAGS that are useful for Quagga
|
||||||
AC_MSG_CHECKING([whether we are using SunPro compiler])
|
dnl - specifically, options to control warnings
|
||||||
AC_EGREP_CPP([^__SUNPRO_C.*0x5(7|8|9)], ["__SUNPRO_C" __SUNPRO_C],
|
|
||||||
[AC_MSG_RESULT([no])],
|
|
||||||
[COMPILER="SUNPRO"
|
|
||||||
AC_MSG_RESULT([yes])]
|
|
||||||
)
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl ---------------------------------------------
|
|
||||||
dnl If CLFAGS doesn\'t exist set default value
|
|
||||||
dnl AC_PROG_CC will have set minimal default
|
|
||||||
dnl already, eg "-O2 -g" for gcc, "-g" for others
|
|
||||||
dnl (Wall is gcc specific... have to make sure
|
|
||||||
dnl gcc is being used before setting it)
|
|
||||||
dnl
|
|
||||||
dnl Sun Studio 10 / SunPro 5.7 is also supported,
|
|
||||||
dnl so lets set some sane CFLAGS for it.
|
|
||||||
dnl ---------------------------------------------
|
|
||||||
|
|
||||||
AC_USE_SYSTEM_EXTENSIONS()
|
AC_USE_SYSTEM_EXTENSIONS()
|
||||||
AC_DEFUN([AC_C_FLAG], [{
|
AC_DEFUN([AC_C_FLAG], [{
|
||||||
|
@ -137,52 +114,46 @@ AC_DEFUN([AC_C_FLAG], [{
|
||||||
AC_LANG_POP(C)
|
AC_LANG_POP(C)
|
||||||
}])
|
}])
|
||||||
|
|
||||||
AC_MSG_CHECKING([whether to set a default CFLAGS])
|
dnl ICC won't bail on unknown options without -diag-error 10006
|
||||||
if test "x${cflags_specified}" = "x" ; then
|
dnl need to do this first so we get useful results for the other options
|
||||||
case ${COMPILER} in
|
AC_C_FLAG([-diag-error 10006])
|
||||||
"SUNPRO")
|
|
||||||
CFLAGS="-xO4 -v -g -xspace -xcode=pic32 -xstrconst -xc99"
|
|
||||||
AC_MSG_RESULT([SunPro default])
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
AC_MSG_RESULT([autodetecting])
|
|
||||||
|
|
||||||
AC_C_FLAG([-diag-error 10006])
|
dnl if the user specified any CFLAGS, we don't add "-g -Os/-O2" here
|
||||||
AC_C_FLAG([-g])
|
if test "z$orig_cflags" = "z"; then
|
||||||
AC_C_FLAG([-Os], [
|
AC_C_FLAG([-g])
|
||||||
AC_C_FLAG([-O2])
|
AC_C_FLAG([-Os], [
|
||||||
])
|
AC_C_FLAG([-O2])
|
||||||
AC_C_FLAG([-fno-omit-frame-pointer])
|
])
|
||||||
AC_C_FLAG([-Wall])
|
|
||||||
AC_C_FLAG([-Wextra])
|
|
||||||
AC_C_FLAG([-Wmissing-prototypes])
|
|
||||||
AC_C_FLAG([-Wmissing-declarations])
|
|
||||||
AC_C_FLAG([-Wpointer-arith])
|
|
||||||
AC_C_FLAG([-Wbad-function-cast])
|
|
||||||
AC_C_FLAG([-Wwrite-strings])
|
|
||||||
if test x"${enable_gcc_ultra_verbose}" = x"yes" ; then
|
|
||||||
AC_C_FLAG([-Wcast-qual])
|
|
||||||
AC_C_FLAG([-Wstrict-prototypes])
|
|
||||||
AC_C_FLAG([-Wmissing-noreturn])
|
|
||||||
AC_C_FLAG([-Wmissing-format-attribute])
|
|
||||||
AC_C_FLAG([-Wunreachable-code])
|
|
||||||
AC_C_FLAG([-Wpacked])
|
|
||||||
AC_C_FLAG([-Wpadded])
|
|
||||||
else
|
|
||||||
AC_C_FLAG([-Wno-unused-result])
|
|
||||||
fi
|
|
||||||
AC_C_FLAG([-Wno-unused-parameter])
|
|
||||||
AC_C_FLAG([-Wno-missing-field-initializers])
|
|
||||||
# ICC emits a broken warning for const char *x = a ? "b" : "c";
|
|
||||||
# for some reason the string consts get 'promoted' to char *,
|
|
||||||
# triggering a const to non-const conversion warning.
|
|
||||||
AC_C_FLAG([-diag-disable 3179])
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT([CFLAGS supplied by user])
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
dnl always want these CFLAGS
|
||||||
|
AC_C_FLAG([-fno-omit-frame-pointer])
|
||||||
|
AC_C_FLAG([-Wall])
|
||||||
|
AC_C_FLAG([-Wextra])
|
||||||
|
AC_C_FLAG([-Wmissing-prototypes])
|
||||||
|
AC_C_FLAG([-Wmissing-declarations])
|
||||||
|
AC_C_FLAG([-Wpointer-arith])
|
||||||
|
AC_C_FLAG([-Wbad-function-cast])
|
||||||
|
AC_C_FLAG([-Wwrite-strings])
|
||||||
|
if test x"${enable_gcc_ultra_verbose}" = x"yes" ; then
|
||||||
|
AC_C_FLAG([-Wcast-qual])
|
||||||
|
AC_C_FLAG([-Wstrict-prototypes])
|
||||||
|
AC_C_FLAG([-Wmissing-noreturn])
|
||||||
|
AC_C_FLAG([-Wmissing-format-attribute])
|
||||||
|
AC_C_FLAG([-Wunreachable-code])
|
||||||
|
AC_C_FLAG([-Wpacked])
|
||||||
|
AC_C_FLAG([-Wpadded])
|
||||||
|
else
|
||||||
|
AC_C_FLAG([-Wno-unused-result])
|
||||||
|
fi
|
||||||
|
AC_C_FLAG([-Wno-unused-parameter])
|
||||||
|
AC_C_FLAG([-Wno-missing-field-initializers])
|
||||||
|
|
||||||
|
dnl ICC emits a broken warning for const char *x = a ? "b" : "c";
|
||||||
|
dnl for some reason the string consts get 'promoted' to char *,
|
||||||
|
dnl triggering a const to non-const conversion warning.
|
||||||
|
AC_C_FLAG([-diag-disable 3179])
|
||||||
|
|
||||||
if test x"${enable_werror}" = x"yes" ; then
|
if test x"${enable_werror}" = x"yes" ; then
|
||||||
WERROR="-Werror"
|
WERROR="-Werror"
|
||||||
fi
|
fi
|
||||||
|
|
Loading…
Reference in a new issue