summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMukund Sivaraman <muks@banu.com>2009-09-20 13:32:46 +0530
committerMukund Sivaraman <muks@banu.com>2009-09-20 13:32:46 +0530
commit753010f571fcbe82c682cf00ab823d1e165a2f46 (patch)
treee281418c6243e1235dd66a1bd81612583a6ac741
parent07ad8ad1b2ff9a5ca4ec90c949cadbb061457558 (diff)
downloadtinyproxy-753010f571fcbe82c682cf00ab823d1e165a2f46.tar.gz
tinyproxy-753010f571fcbe82c682cf00ab823d1e165a2f46.zip
build: Update CFLAGS and also check if they are supported
Also, enable all warnings by default, whether it is a debug build or not.
-rw-r--r--configure.ac15
-rw-r--r--m4macros/Makefile.am1
-rw-r--r--m4macros/as-compiler-flag.m464
3 files changed, 76 insertions, 4 deletions
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 <regex.h>
#endif
+#if HAVE_STDLIB_H
+# include <stdlib.h>
+#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 <ds@schleef.org>
+dnl Tim-Philipp Müller <tim centricular net>
+
+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])
+])
+