From 753010f571fcbe82c682cf00ab823d1e165a2f46 Mon Sep 17 00:00:00 2001 From: Mukund Sivaraman Date: Sun, 20 Sep 2009 13:32:46 +0530 Subject: build: Update CFLAGS and also check if they are supported Also, enable all warnings by default, whether it is a debug build or not. --- configure.ac | 15 ++++++++--- m4macros/Makefile.am | 1 + m4macros/as-compiler-flag.m4 | 64 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 76 insertions(+), 4 deletions(-) create mode 100644 m4macros/as-compiler-flag.m4 diff --git a/configure.ac b/configure.ac index 5c81478..22fd891 100644 --- a/configure.ac +++ b/configure.ac @@ -232,6 +232,14 @@ if test x"$profiling_enabled" = x"yes" ; then debug_enabled=yes fi +dnl Enable extra warnings +DESIRED_FLAGS="-fdiagnostics-show-option -Wall -Wextra -Wno-unused-parameter -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -Wfloat-equal -Wundef -Wformat=2 -Wlogical-op -Wmissing-include-dirs -Wformat-nonliteral -Wold-style-definition -Wpointer-arith -Waggregate-return -Winit-self -Wpacked -pedantic -Wc++-compat -Wno-long-long -Wno-overlength-strings -Wdeclaration-after-statement -Wredundant-decls -Wmissing-noreturn -Wshadow -Wendif-labels -Wcast-qual -Wcast-align -Wwrite-strings -Wp,-D_FORTIFY_SOURCE=2 -fno-common" +for flag in $DESIRED_FLAGS ; do + AS_COMPILER_FLAG([$flag], [CFLAGS="$CFLAGS $flag"]) +done + +LDFLAGS="-Wl,-z,defs" + dnl Enable the debugging flags (by checking for the GCC compiler) if test x"$debug_enabled" = x"yes" ; then dnl Add the warnings if we have the GCC compiler @@ -239,10 +247,6 @@ if test x"$debug_enabled" = x"yes" ; then if test x"$profiling_enabled" = x"yes" ; then CFLAGS="-pg -fprofile-arcs $CFLAGS" fi - CFLAGS="-Wshadow -Wcast-qual -Wcast-align -Wstrict-prototypes $CFLAGS" - CFLAGS="-Wmissing-prototypes -Wmissing-declarations $CFLAGS" - CFLAGS="-Wpointer-arith -Waggregate-return -Wnested-externs $CFLAGS" - CFLAGS="-Wwrite-strings -Wcomment -Wextra -Wc++-compat $CFLAGS" fi CFLAGS="-Wall -g $CFLAGS" else @@ -270,6 +274,9 @@ else #if HAVE_REGEX_H # include #endif +#if HAVE_STDLIB_H +# include +#endif int main(void) { regex_t blah; diff --git a/m4macros/Makefile.am b/m4macros/Makefile.am index 8e09385..de54db6 100644 --- a/m4macros/Makefile.am +++ b/m4macros/Makefile.am @@ -1,3 +1,4 @@ EXTRA_DIST = \ + as-compiler-flag.m4 \ argenable.m4 \ typecheck.m4 diff --git a/m4macros/as-compiler-flag.m4 b/m4macros/as-compiler-flag.m4 new file mode 100644 index 0000000..882a4c7 --- /dev/null +++ b/m4macros/as-compiler-flag.m4 @@ -0,0 +1,64 @@ +dnl as-compiler-flag.m4 0.1.0 + +dnl autostars m4 macro for detection of compiler flags + +dnl David Schleef +dnl Tim-Philipp Müller + +dnl AS_COMPILER_FLAG(CFLAGS, ACTION-IF-ACCEPTED, [ACTION-IF-NOT-ACCEPTED]) +dnl Tries to compile with the given CFLAGS. +dnl Runs ACTION-IF-ACCEPTED if the compiler can compile with the flags, +dnl and ACTION-IF-NOT-ACCEPTED otherwise. + +AC_DEFUN([AS_COMPILER_FLAG], +[ + AC_MSG_CHECKING([to see if compiler understands $1]) + + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $1" + + AC_TRY_COMPILE([ ], [], [flag_ok=yes], [flag_ok=no]) + CFLAGS="$save_CFLAGS" + + if test "X$flag_ok" = Xyes ; then + $2 + true + else + $3 + true + fi + AC_MSG_RESULT([$flag_ok]) +]) + +dnl AS_CXX_COMPILER_FLAG(CPPFLAGS, ACTION-IF-ACCEPTED, [ACTION-IF-NOT-ACCEPTED]) +dnl Tries to compile with the given CPPFLAGS. +dnl Runs ACTION-IF-ACCEPTED if the compiler can compile with the flags, +dnl and ACTION-IF-NOT-ACCEPTED otherwise. + +AC_DEFUN([AS_CXX_COMPILER_FLAG], +[ + AC_REQUIRE([AC_PROG_CXX]) + + AC_MSG_CHECKING([to see if c++ compiler understands $1]) + + save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $1" + + AC_LANG_PUSH(C++) + + AC_TRY_COMPILE([ ], [], [flag_ok=yes], [flag_ok=no]) + CPPFLAGS="$save_CPPFLAGS" + + if test "X$flag_ok" = Xyes ; then + $2 + true + else + $3 + true + fi + + AC_LANG_POP(C++) + + AC_MSG_RESULT([$flag_ok]) +]) + -- cgit v1.2.3