aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--acinclude.m486
-rw-r--r--configure.ac70
2 files changed, 92 insertions, 64 deletions
diff --git a/acinclude.m4 b/acinclude.m4
index abc48ada5..60a41f311 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -475,3 +475,89 @@ if test "$ac_cv_func_gethostbyname_r" = "yes"; then
fi
fi
])
+
+dnl We create a function for detecting which compiler we use and then set as
+dnl pendantic compiler options as possible for that particular compiler. The
+dnl options are only used for debug-builds.
+
+AC_DEFUN([CURL_CC_DEBUG_OPTS],
+[
+ if test "$GCC" = "yes"; then
+
+ dnl figure out gcc version!
+ AC_MSG_CHECKING([gcc version])
+ gccver=`$CC -dumpversion`
+ num1=`echo $gccver | cut -d . -f1`
+ num2=`echo $gccver | cut -d . -f2`
+ gccnum=`(expr $num1 "*" 100 + $num2) 2>/dev/null`
+ AC_MSG_RESULT($gccver)
+
+ AC_MSG_CHECKING([if this is icc in disguise])
+ AC_EGREP_CPP([^__ICC], [__ICC],
+ dnl action if the text is found, this it has not been replaced by the
+ dnl cpp
+ [ICC="no"]
+ AC_MSG_RESULT([no]),
+ dnl the text was not found, it was replaced by the cpp
+ [ICC="yes"]
+ AC_MSG_RESULT([yes])
+ )
+
+ if test "$ICC" = "yes"; then
+ dnl this is icc, not gcc.
+ WARN = ""
+ else dnl $ICC = yes
+ dnl
+ WARN="-W -Wall -Wwrite-strings -pedantic -Wno-long-long -Wundef -Wpointer-arith -Wnested-externs -Winline -Wmissing-declarations -Wmissing-prototypes -Wsign-compare"
+
+ dnl -Wcast-align is a bit too annoying ;-)
+
+ if test "$gccnum" -ge "296"; then
+ dnl gcc 2.96 or later
+ WARN="$WARN -Wfloat-equal"
+
+ if test "$gccnum" -gt "296"; then
+ dnl this option does not exist in 2.96
+ WARN="$WARN -Wno-format-nonliteral"
+ fi
+
+ dnl -Wunreachable-code seems totally unreliable on my gcc 3.3.2 on
+ dnl on i686-Linux as it gives us heaps with false positives
+ if test "$gccnum" -ge "303"; then
+ dnl gcc 3.3 and later
+ WARN="$WARN -Wendif-labels -Wstrict-prototypes"
+ fi
+ fi
+
+ NEWFLAGS=""
+ for flag in $CPPFLAGS; do
+ case "$flag" in
+ -I*)
+ dnl include path
+ add=`echo $flag | sed 's/^-I/-isystem /g'`
+ NEWFLAGS="$NEWFLAGS $add"
+ ;;
+ esac
+ done
+
+ CFLAGS="$CFLAGS $WARN $NEWFLAGS"
+ fi dnl $ICC = no
+
+ fi dnl $GCC = yes
+
+ dnl strip off optimizer flags
+ NEWFLAGS=""
+ for flag in $CFLAGS; do
+ case "$flag" in
+ -O*)
+ dnl echo "cut off $flag"
+ ;;
+ *)
+ NEWFLAGS="$NEWFLAGS $flag"
+ ;;
+ esac
+ done
+ CFLAGS=$NEWFLAGS
+
+]) dnl end of AC_DEFUN()
+
diff --git a/configure.ac b/configure.ac
index ce84cba55..a746aa5d1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1188,72 +1188,14 @@ AC_HELP_STRING([--disable-debug],[Disable debug options]),
*) AC_MSG_RESULT(yes)
CPPFLAGS="$CPPFLAGS -DCURLDEBUG"
- CFLAGS="$CFLAGS -g"
- if test "$GCC" = "yes"; then
-
- dnl figure out gcc version!
- AC_MSG_CHECKING([gcc version])
- gccver=`$CC -dumpversion`
- num1=`echo $gccver | cut -d . -f1`
- num2=`echo $gccver | cut -d . -f2`
- gccnum=`(expr $num1 "*" 100 + $num2) 2>/dev/null`
- AC_MSG_RESULT($gccver)
-
- if test "$gccnum" -lt "500"; then
- dnl we only like gcc less than 5.0, since if it is above that it is
- dnl likely just a compiler that looks like gcc (like icc 8.0)!
- dnl here's the standard setup
- WARN="-W -Wall -Wwrite-strings -pedantic -Wno-long-long -Wundef -Wpointer-arith -Wnested-externs -Winline -Wmissing-declarations -Wmissing-prototypes -Wsign-compare"
-
- dnl -Wcast-align is a bit too annoying ;-)
-
- if test "$gccnum" -ge "296"; then
- dnl gcc 2.96 or later
- WARN="$WARN -Wfloat-equal"
-
- if test "$gccnum" -gt "296"; then
- dnl this option does not exist in 2.96
- WARN="$WARN -Wno-format-nonliteral"
- fi
-
- dnl -Wunreachable-code seems totally unreliable on my gcc 3.3.2 on
- dnl on i686-Linux as it gives us heaps with false positives
- if test "$gccnum" -ge "303"; then
- dnl gcc 3.3 and later
- WARN="$WARN -Wendif-labels -Wstrict-prototypes"
- fi
- fi
-
- NEWFLAGS=""
- for flag in $CPPFLAGS; do
- case "$flag" in
- -I*)
- dnl include path
- add=`echo $flag | sed 's/^-I/-isystem /g'`
- NEWFLAGS="$NEWFLAGS $add"
- ;;
- esac
- done
-
- CFLAGS="$CFLAGS $WARN $NEWFLAGS"
- fi
+ CFLAGS="$CFLAGS -g"
- fi
- dnl strip off optimizer flags
- NEWFLAGS=""
- for flag in $CFLAGS; do
- case "$flag" in
- -O*)
- dnl echo "cut off $flag"
- ;;
- *)
- NEWFLAGS="$NEWFLAGS $flag"
- ;;
- esac
- done
- CFLAGS=$NEWFLAGS
+ dnl set compiler "debug" options to become more picky, and remove
+ dnl optimize options from CFLAGS
+ CURL_CC_DEBUG_OPTS
;;
- esac ],
+ esac
+ ],
AC_MSG_RESULT(no)
)