diff options
author | Yang Tse <yangsita@gmail.com> | 2008-10-02 03:56:55 +0000 |
---|---|---|
committer | Yang Tse <yangsita@gmail.com> | 2008-10-02 03:56:55 +0000 |
commit | 2245ac2f884513bb3145f841fb3a9aed80b6ff34 (patch) | |
tree | bc60c78e19ae34e8b57ef5bf19c12fe30ae33d33 | |
parent | 1bfaf76dd09a12ccd0dea7f4ec7d1a34b38cbce5 (diff) |
Initial attempt to support configure's --(dis|en)able-warnings
option to specify dis(activation) of picky compiler warnings.
If option is specified, it will be honored independant of the
--(dis|en)able-debug option.
If option is not specified, it will follow --(dis|en)able-debug
setting, whose default is disabled if not specified.
-rw-r--r-- | acinclude.m4 | 51 | ||||
-rw-r--r-- | ares/acinclude.m4 | 54 | ||||
-rw-r--r-- | ares/configure.ac | 194 | ||||
-rw-r--r-- | ares/m4/cares-compilers.m4 | 319 | ||||
-rw-r--r-- | ares/m4/cares-confopts.m4 | 86 | ||||
-rw-r--r-- | configure.ac | 182 | ||||
-rw-r--r-- | m4/curl-compilers.m4 | 316 | ||||
-rw-r--r-- | m4/curl-confopts.m4 | 93 |
8 files changed, 841 insertions, 454 deletions
diff --git a/acinclude.m4 b/acinclude.m4 index 6b0d33228..7a758dc3e 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -2601,57 +2601,6 @@ fi ]) -dnl ********************************************************************** -dnl CURL_DETECT_ICC ([ACTION-IF-YES]) -dnl -dnl check if this is the Intel ICC compiler, and if so run the ACTION-IF-YES -dnl sets the $ICC variable to "yes" or "no" -dnl ********************************************************************** -AC_DEFUN([CURL_DETECT_ICC], -[ - ICC="no" - AC_MSG_CHECKING([for icc in use]) - if test "$GCC" = "yes"; then - dnl check if this is icc acting as gcc in disguise - AC_EGREP_CPP([^__INTEL_COMPILER], [__INTEL_COMPILER], - dnl action if the text is found, this it has not been replaced by the - dnl cpp - ICC="no", - dnl the text was not found, it was replaced by the cpp - ICC="yes" - AC_MSG_RESULT([yes]) - [$1] - ) - fi - if test "$ICC" = "no"; then - # this is not ICC - AC_MSG_RESULT([no]) - 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], -[ - 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 -]) # AC-DEFUN - - - # This is only a temporary fix. This macro is here to replace the broken one # delivered by the automake project (including the 1.9.6 release). As soon as # they ship a working version we SHOULD remove this work-around. diff --git a/ares/acinclude.m4 b/ares/acinclude.m4 index 06fa2f58a..0225f9ba7 100644 --- a/ares/acinclude.m4 +++ b/ares/acinclude.m4 @@ -1827,60 +1827,6 @@ AC_DEFUN([CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC], [ ]) -dnl ********************************************************************** -dnl CURL_DETECT_ICC ([ACTION-IF-YES]) -dnl -dnl check if this is the Intel ICC compiler, and if so run the ACTION-IF-YES -dnl sets the $ICC variable to "yes" or "no" -dnl ********************************************************************** -AC_DEFUN([CURL_DETECT_ICC], -[ - ICC="no" - AC_MSG_CHECKING([for icc in use]) - if test "$GCC" = "yes"; then - dnl check if this is icc acting as gcc in disguise - AC_EGREP_CPP([^__INTEL_COMPILER], [__INTEL_COMPILER], - dnl action if the text is found, this it has not been replaced by the - dnl cpp - ICC="no", - dnl the text was not found, it was replaced by the cpp - ICC="yes" - AC_MSG_RESULT([yes]) - [$1] - ) - fi - if test "$ICC" = "no"; then - # this is not ICC - AC_MSG_RESULT([no]) - 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. - -dnl This is a copy of the original found in curl's configure script. Don't -dnl modify this one, edit the one in curl and copy it back here when that one -dnl is changed. - -AC_DEFUN([CURL_CC_DEBUG_OPTS], -[ - 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 This macro determines if the specified struct exists in the specified file dnl Syntax: dnl CARES_CHECK_STRUCT(headers, struct name, if found, [if not found]) diff --git a/ares/configure.ac b/ares/configure.ac index 59c1cdbee..39c249554 100644 --- a/ares/configure.ac +++ b/ares/configure.ac @@ -8,6 +8,9 @@ AC_CONFIG_SRCDIR([ares_ipv6.h]) AM_CONFIG_HEADER([config.h]) AM_MAINTAINER_MODE +CARES_CHECK_OPTION_DEBUG +CARES_CHECK_OPTION_WARNINGS + dnl SED is mandatory for configure process and libtool. dnl Set it now, allowing it to be changed later. AC_PATH_PROG([SED], [sed], [not_found], @@ -86,43 +89,10 @@ esac dnl support building of Windows DLLs AC_LIBTOOL_WIN32_DLL -dnl ************************************************************ -dnl Option to switch on debug options. This makes an assumption that -dnl this is built as an 'ares' subdir in the curl source tree. Subject for -dnl improval in the future! -dnl -AC_MSG_CHECKING([whether to enable debug options]) -AC_ARG_ENABLE(debug, -AC_HELP_STRING([--enable-debug],[Enable pedantic debug options]) -AC_HELP_STRING([--disable-debug],[Disable debug options]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - ;; - *) AC_MSG_RESULT(yes) - - dnl when doing the debug stuff, use static library only - AC_DISABLE_SHARED - - debugbuild="yes" - - dnl the entire --enable-debug is a hack that lives and runs on top of - dnl libcurl stuff so this BUILDING_LIBCURL is not THAT much uglier - AC_DEFINE(BUILDING_LIBCURL, 1, [when building as static part of libcurl]) +CARES_PROCESS_DEBUG_BUILD_OPTS - CPPFLAGS="$CPPFLAGS -DCURLDEBUG -I$srcdir/../include" - CFLAGS="$CFLAGS -g" - - dnl set compiler "debug" options to become more picky, and remove - dnl optimize options from CFLAGS - CURL_CC_DEBUG_OPTS - - ;; - esac ], - AC_MSG_RESULT(no) -) -AM_CONDITIONAL(DEBUGBUILD, test x$debugbuild = xyes) -AM_CONDITIONAL(CURLDEBUG, test x$debugbuild = xyes) +AM_CONDITIONAL(DEBUGBUILD, test x$want_debug = xyes) +AM_CONDITIONAL(CURLDEBUG, test x$want_debug = xyes) dnl skip libtool C++ and Fortran compiler checks m4_ifdef([AC_PROG_CXX], [m4_undefine([AC_PROG_CXX])]) @@ -171,160 +141,24 @@ dnl ********************************************************************** dnl platform/compiler/architecture specific checks/flags dnl ********************************************************************** -ac_cv_compiler="unknown" -ac_cv_compiler_num="unknown" - -AC_MSG_CHECKING([whether we are using the IBM C compiler]) -CURL_CHECK_DEF([__IBMC__], [], [silent]) -if test "$curl_cv_have_def___IBMC__" = "yes"; then - AC_MSG_RESULT([yes]) - ac_cv_compiler="IBMC" - dnl Ensure that compiler optimizations are always thread-safe. - CFLAGS="$CFLAGS -qthreaded" - dnl Disable type based strict aliasing optimizations, using worst - dnl case aliasing assumptions when compiling. Type based aliasing - dnl would restrict the lvalues that could be safely used to access - dnl a data object. - CFLAGS="$CFLAGS -qnoansialias" - dnl Force compiler to stop after the compilation phase, without - dnl generating an object code file when compilation has errors. - CFLAGS="$CFLAGS -qhalt=e" -else - AC_MSG_RESULT([no]) -fi - -AC_MSG_CHECKING([whether we are using the Intel C compiler]) -CURL_CHECK_DEF([__INTEL_COMPILER], [], [silent]) -if test "$curl_cv_have_def___INTEL_COMPILER" = "yes"; then - AC_MSG_RESULT([yes]) - ac_cv_compiler="ICC" - ac_cv_compiler_num="$curl_cv_def___INTEL_COMPILER" - dnl On unix this compiler uses gcc's header files, so - dnl we select ANSI C89 dialect plus GNU extensions. - CPPFLAGS="$CPPFLAGS -std=gnu89" - if test "$ac_cv_compiler_num" -gt "600"; then - dnl Show errors, warnings, and remarks - CPPFLAGS="$CPPFLAGS -Wall" - dnl Perform extra compile-time code checking - CPPFLAGS="$CPPFLAGS -Wcheck" - fi - dnl Change some warnings into errors - dnl #140: too many arguments in function call - dnl #147: declaration is incompatible with 'previous one' - dnl #165: too few arguments in function call - dnl #266: function declared implicitly - CPPFLAGS="$CPPFLAGS -we 140,147,165,266" - dnl Disable some remarks - dnl #279: controlling expression is constant - dnl #981: operands are evaluated in unspecified order - dnl #1469: "cc" clobber ignored - if test "$ac_cv_compiler_num" -lt "910"; then - CPPFLAGS="$CPPFLAGS -wd 279" - fi - CPPFLAGS="$CPPFLAGS -wd 981,1469" - dnl Disable use of ANSI C aliasing rules in optimizations - CFLAGS="$CFLAGS -no-ansi-alias" - dnl Disable floating point optimizations - CFLAGS="$CFLAGS -fp-model precise -mp" -else - AC_MSG_RESULT([no]) -fi - -AC_MSG_CHECKING([whether we are using the DEC/Compaq C compiler]) -CURL_CHECK_DEF([__DECC], [], [silent]) -CURL_CHECK_DEF([__DECC_VER], [], [silent]) -if test "$curl_cv_have_def___DECC" = "yes" && - test "$curl_cv_have_def___DECC_VER" = "yes"; then - AC_MSG_RESULT([yes]) - ac_cv_compiler="DECC" - dnl Select strict ANSI C compiler mode - CFLAGS="$CFLAGS -std1" - dnl Turn off optimizer ANSI C aliasing rules - CFLAGS="$CFLAGS -noansi_alias" - dnl Select a higher warning level than default level2 - CFLAGS="$CFLAGS -msg_enable level3" - dnl Generate warnings for missing function prototypes - CFLAGS="$CFLAGS -warnprotos" - dnl Change some warnings into fatal errors - CFLAGS="$CFLAGS -msg_fatal toofewargs,toomanyargs" -else - AC_MSG_RESULT([no]) -fi - -AC_MSG_CHECKING([whether we are using the GNU C compiler]) -CURL_CHECK_DEF([__GNUC__], [], [silent]) -if test "$curl_cv_have_def___GNUC__" = "yes" && - test "$ac_cv_compiler" = "unknown"; then - AC_MSG_RESULT([yes]) - ac_cv_compiler="GNUC" - gccver=`$CC -dumpversion` - gccvhi=`echo $gccver | cut -d . -f1` - gccvlo=`echo $gccver | cut -d . -f2` - gccnum=`(expr $gccvhi "*" 100 + $gccvlo) 2>/dev/null` - ac_cv_compiler_num="$gccnum" - dnl this is a set of options we believe *ALL* gcc versions support: - WARN="-W -Wall -Wwrite-strings -pedantic -Wpointer-arith -Wnested-externs -Winline -Wmissing-prototypes" - dnl -Wcast-align is a bit too annoying on all gcc versions ;-) - if test "$ac_cv_compiler_num" -ge "207"; then - dnl gcc 2.7 or later - WARN="$WARN -Wmissing-declarations" - fi - if test "$ac_cv_compiler_num" -gt "295"; then - dnl only if the compiler is newer than 2.95 since we got lots of - dnl "`_POSIX_C_SOURCE' is not defined" in system headers with - dnl gcc 2.95.4 on FreeBSD 4.9! - WARN="$WARN -Wundef -Wno-long-long -Wsign-compare -Wshadow -Wno-multichar" - fi - if test "$ac_cv_compiler_num" -ge "296"; then - dnl gcc 2.96 or later - WARN="$WARN -Wfloat-equal" - fi - if test "$ac_cv_compiler_num" -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. - dnl Also, on gcc 4.0.X it is totally unbearable and complains all - dnl over making it unusable for generic purposes. Let's not use it. - if test "$ac_cv_compiler_num" -ge "303"; then - dnl gcc 3.3 and later - WARN="$WARN -Wendif-labels -Wstrict-prototypes" - fi - if test "$ac_cv_compiler_num" -ge "304"; then - # try these on gcc 3.4 - WARN="$WARN -Wdeclaration-after-statement" - fi - for flag in $CPPFLAGS; do - case "$flag" in - -I*) - dnl Include path, provide a -isystem option for the same dir - dnl to prevent warnings in those dirs. The -isystem was not very - dnl reliable on earlier gcc versions. - add=`echo $flag | sed 's/^-I/-isystem /g'` - WARN="$WARN $add" - ;; - esac - done - CFLAGS="$CFLAGS $WARN" - AC_MSG_NOTICE([Added this set of compiler options: $WARN]) -else - AC_MSG_RESULT([no]) -fi +CARES_CHECK_COMPILER +CARES_PROCESS_CC_BASIC_OPTS +CARES_PROCESS_CC_DEBUG_OPTS +CARES_PROCESS_CC_WARNING_OPTS case $host in # x86_64*linux*|amd64*freebsd*|ia64*freebsd*) # - if test "$ac_cv_compiler" = "ICC"; then + if test "$compiler_id" = "ICC_unix"; then # - if test "$ac_cv_compiler_num" -ge "900" && - test "$ac_cv_compiler_num" -lt "1000"; then + if test "$compiler_num" -ge "900" && + test "$compiler_num" -lt "1000"; then dnl icc 9.X specific CFLAGS="$CFLAGS -i-dynamic" fi # - if test "$ac_cv_compiler_num" -ge "1000"; then + if test "$compiler_num" -ge "1000"; then dnl icc 10.X or later CFLAGS="$CFLAGS -shared-intel" fi diff --git a/ares/m4/cares-compilers.m4 b/ares/m4/cares-compilers.m4 new file mode 100644 index 000000000..23aa017cc --- /dev/null +++ b/ares/m4/cares-compilers.m4 @@ -0,0 +1,319 @@ +#*************************************************************************** +# $Id$ +# +# Copyright (C) 2008 by Daniel Stenberg et al +# +# Permission to use, copy, modify, and distribute this software and its +# documentation for any purpose and without fee is hereby granted, provided +# that the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. M.I.T. makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +#*************************************************************************** + +# File version for 'aclocal' use. Keep it a single number. +# serial 1 + + +dnl CARES_CHECK_COMPILER +dnl ------------------------------------------------- +dnl Verify if the C compiler being used is known. + +AC_DEFUN([CARES_CHECK_COMPILER], [ + # + compiler_id="unknown" + compiler_num="0" + # + CARES_CHECK_COMPILER_DEC + CARES_CHECK_COMPILER_IBM + CARES_CHECK_COMPILER_INTEL + CARES_CHECK_COMPILER_GNU + # +]) + + +dnl CARES_CHECK_COMPILER_DEC +dnl ------------------------------------------------- +dnl Verify if the C compiler being used is DEC's. + +AC_DEFUN([CARES_CHECK_COMPILER_DEC], [ + AC_MSG_CHECKING([whether we are using the DEC/Compaq C compiler]) + CURL_CHECK_DEF([__DECC], [], [silent]) + CURL_CHECK_DEF([__DECC_VER], [], [silent]) + if test "$curl_cv_have_def___DECC" = "yes" && + test "$curl_cv_have_def___DECC_VER" = "yes"; then + AC_MSG_RESULT([yes]) + compiler_id="DECC" + else + AC_MSG_RESULT([no]) + fi +]) + + +dnl CARES_CHECK_COMPILER_GNU +dnl ------------------------------------------------- +dnl Verify if the C compiler being used is GNU's. + +AC_DEFUN([CARES_CHECK_COMPILER_GNU], [ + AC_REQUIRE([CARES_CHECK_COMPILER_INTEL])dnl + # + AC_MSG_CHECKING([whether we are using the GNU C compiler]) + CURL_CHECK_DEF([__GNUC__], [], [silent]) + if test "$curl_cv_have_def___GNUC__" = "yes" && + test "$compiler_id" = "unknown"; then + AC_MSG_RESULT([yes]) + compiler_id="GNUC" + gccver=`$CC -dumpversion` + gccvhi=`echo $gccver | cut -d . -f1` + gccvlo=`echo $gccver | cut -d . -f2` + compiler_num=`(expr $gccvhi "*" 100 + $gccvlo) 2>/dev/null` + else + AC_MSG_RESULT([no]) + fi +]) + + +dnl CARES_CHECK_COMPILER_IBM +dnl ------------------------------------------------- +dnl Verify if the C compiler being used is IBM's. + +AC_DEFUN([CARES_CHECK_COMPILER_IBM], [ + AC_MSG_CHECKING([whether we are using the IBM C compiler]) + CURL_CHECK_DEF([__IBMC__], [], [silent]) + if test "$curl_cv_have_def___IBMC__" = "yes"; then + AC_MSG_RESULT([yes]) + compiler_id="IBMC" + else + AC_MSG_RESULT([no]) + fi +]) + + +dnl CARES_CHECK_COMPILER_INTEL +dnl ------------------------------------------------- +dnl Verify if the C compiler being used is Intel's. + +AC_DEFUN([CARES_CHECK_COMPILER_INTEL], [ + AC_BEFORE([$0],[CARES_CHECK_COMPILER_GNU])dnl + AC_MSG_CHECKING([whether we are using the Intel C compiler]) + CURL_CHECK_DEF([__INTEL_COMPILER], [], [silent]) + if test "$curl_cv_have_def___INTEL_COMPILER" = "yes"; then + AC_MSG_RESULT([yes]) + CURL_CHECK_DEF([__unix__], [], [silent]) + if test "$curl_cv_have_def___unix__" = "yes"; then + compiler_id="ICC_unix" + else + compiler_id="ICC_windows" + fi + compiler_num="$curl_cv_def___INTEL_COMPILER" + else + AC_MSG_RESULT([no]) + fi +]) + + +dnl CARES_PROCESS_CC_BASIC_OPTS +dnl ------------------------------------------------- +dnl Sets compiler options/flags which are independant +dnl of configure's debug or warnings options. + +AC_DEFUN([CARES_PROCESS_CC_BASIC_OPTS], [ + AC_REQUIRE([CARES_CHECK_COMPILER])dnl + # + if test "$compiler_id" = "DECC"; then + dnl Select strict ANSI C compiler mode + CFLAGS="$CFLAGS -std1" + dnl Turn off optimizer ANSI C aliasing rules + CFLAGS="$CFLAGS -noansi_alias" + dnl Generate warnings for missing function prototypes + CFLAGS="$CFLAGS -warnprotos" + dnl Change some warnings into fatal errors + CFLAGS="$CFLAGS -msg_fatal toofewargs,toomanyargs" + fi + # + if test "$compiler_id" = "IBMC"; then + dnl Ensure that compiler optimizations are always thread-safe. + CFLAGS="$CFLAGS -qthreaded" + dnl Disable type based strict aliasing optimizations, using worst + dnl case aliasing assumptions when compiling. Type based aliasing + dnl would restrict the lvalues that could be safely used to access + dnl a data object. + CFLAGS="$CFLAGS -qnoansialias" + dnl Force compiler to stop after the compilation phase, without + dnl generating an object code file when compilation has errors. + CFLAGS="$CFLAGS -qhalt=e" + fi + # + if test "$compiler_id" = "ICC_unix"; then + dnl On unix this compiler uses gcc's header files, so + dnl we select ANSI C89 dialect plus GNU extensions. + CPPFLAGS="$CPPFLAGS -std=gnu89" + dnl Change some warnings into errors + dnl #140: too many arguments in function call + dnl #147: declaration is incompatible with 'previous one' + dnl #165: too few arguments in function call + dnl #266: function declared implicitly + CPPFLAGS="$CPPFLAGS -we 140,147,165,266" + dnl Disable some remarks + dnl #279: controlling expression is constant + dnl #981: operands are evaluated in unspecified order + dnl #1469: "cc" clobber ignored + if test "$compiler_num" -lt "910"; then + CPPFLAGS="$CPPFLAGS -wd 279" + fi + CPPFLAGS="$CPPFLAGS -wd 981,1469" + dnl Disable use of ANSI C aliasing rules in optimizations + CFLAGS="$CFLAGS -no-ansi-alias" + dnl Disable floating point optimizations + CFLAGS="$CFLAGS -fp-model precise" + fi +]) + + +dnl CARES_PROCESS_CC_DEBUG_OPTS +dnl ------------------------------------------------- +dnl Sets compiler options/flags and other settings +dnl which depend on configure's debug given option. + +AC_DEFUN([CARES_PROCESS_CC_DEBUG_OPTS], [ + AC_REQUIRE([CARES_CHECK_OPTION_DEBUG])dnl + AC_REQUIRE([CARES_CHECK_COMPILER])dnl + # + if test "$want_debug" = "yes"; then + CFLAGS="$CFLAGS -g" + fi + # + if test "$want_debug" = "no"; then + 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 + fi + # +]) + + +dnl CARES_PROCESS_CC_WARNING_OPTS +dnl ------------------------------------------------- +dnl Sets compiler options/flags which depend on +dnl configure's warnings given option. + +AC_DEFUN([CARES_PROCESS_CC_WARNING_OPTS], [ + AC_REQUIRE([CARES_CHECK_OPTION_WARNINGS])dnl + AC_REQUIRE([CARES_CHECK_COMPILER])dnl + # + if test "$compiler_id" = "DECC"; then + if test "$want_warnings" = "yes"; then + dnl Select a higher warning level than default level2 + CFLAGS="$CFLAGS -msg_enable level3" + fi + fi + # + if test "$compiler_id" = "ICC_unix"; then + if test "$want_warnings" = "yes"; then + if test "$compiler_num" -gt "600"; then + dnl Show errors, warnings, and remarks + CPPFLAGS="$CPPFLAGS -Wall" + dnl Perform extra compile-time code checking + CPPFLAGS="$CPPFLAGS -Wcheck" + fi + fi + fi + # + if test "$compiler_id" = "GNUC"; then + # + # FIXME: Some of these warnings should be changed into errors + # and moved to CARES-PROCESS-CC-BASIC-OPTS + # + if test "$want_warnings" = "yes"; then + dnl this is a set of options we believe *ALL* gcc versions support: + WARN="-W -Wall -Wwrite-strings -pedantic -Wpointer-arith -Wnested-externs -Winline -Wmissing-prototypes" + dnl -Wcast-align is a bit too annoying on all gcc versions ;-) + if test "$compiler_num" -ge "207"; then + dnl gcc 2.7 or later + WARN="$WARN -Wmissing-declarations" + fi + if test "$compiler_num" -gt "295"; then + dnl only if the compiler is newer than 2.95 since we got lots of + dnl "`_POSIX_C_SOURCE' is not defined" in system headers with + dnl gcc 2.95.4 on FreeBSD 4.9! + WARN="$WARN -Wundef -Wno-long-long -Wsign-compare -Wshadow -Wno-multichar" + fi + if test "$compiler_num" -ge "296"; then + dnl gcc 2.96 or later + WARN="$WARN -Wfloat-equal" + fi + if test "$compiler_num" -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. + dnl Also, on gcc 4.0.X it is totally unbearable and complains all + dnl over making it unusable for generic purposes. Let's not use it. + if test "$compiler_num" -ge "303"; then + dnl gcc 3.3 and later + WARN="$WARN -Wendif-labels -Wstrict-prototypes" + fi + if test "$compiler_num" -ge "304"; then + # try these on gcc 3.4 + WARN="$WARN -Wdeclaration-after-statement" + fi + for flag in $CPPFLAGS; do + case "$flag" in + -I*) + dnl Include path, provide a -isystem option for the same dir + dnl to prevent warnings in those dirs. The -isystem was not very + dnl reliable on earlier gcc versions. + add=`echo $flag | sed 's/^-I/-isystem /g'` + WARN="$WARN $add" + ;; + esac + done + CFLAGS="$CFLAGS $WARN" + AC_MSG_NOTICE([Added this set of compiler options: $WARN]) + fi + fi + # +]) + + +dnl CARES_PROCESS_DEBUG_BUILD_OPTS +dnl ------------------------------------------------- +dnl Settings which depend on configure's debug given +dnl option, and further configure the build process. + +AC_DEFUN([CARES_PROCESS_DEBUG_BUILD_OPTS], [ + AC_REQUIRE([CARES_CHECK_OPTION_DEBUG])dnl + AC_BEFORE([$0],[AC_PROG_LIBTOOL])dnl + # + if test "$want_debug" = "yes"; then + + dnl when doing the debug stuff, use static library only + AC_DISABLE_SHARED + + debugbuild="yes" + + dnl the entire --enable-debug is a hack that lives and runs on top of + dnl libcurl stuff so this BUILDING_LIBCURL is not THAT much uglier + AC_DEFINE(BUILDING_LIBCURL, 1, [when building as static part of libcurl]) + + CPPFLAGS="$CPPFLAGS -DCURLDEBUG -I$srcdir/../include" + fi + # +]) + + diff --git a/ares/m4/cares-confopts.m4 b/ares/m4/cares-confopts.m4 new file mode 100644 index 000000000..2299b6074 --- /dev/null +++ b/ares/m4/cares-confopts.m4 @@ -0,0 +1,86 @@ +#*************************************************************************** +# $Id$ +# +# Copyright (C) 2008 by Daniel Stenberg et al +# +# Permission to use, copy, modify, and distribute this software and its +# documentation for any purpose and without fee is hereby granted, provided +# that the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. M.I.T. makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +#*************************************************************************** + +# File version for 'aclocal' use. Keep it a single number. +# serial 1 + + +dnl CARES_CHECK_OPTION_DEBUG +dnl ------------------------------------------------- +dnl Verify if configure has been invoked with option +dnl --enable-debug or --disable-debug, and set shell +dnl variable want_debug value as appropriate. + +AC_DEFUN([CARES_CHECK_OPTION_DEBUG], [ + AC_BEFORE([$0],[CARES_CHECK_OPTION_WARNINGS])dnl + AC_BEFORE([$0],[AC_PROG_CC])dnl + AC_MSG_CHECKING([whether to enable debug build options]) + OPT_DEBUG_BUILD="default" + AC_ARG_ENABLE(debug, + AC_HELP_STRING([--enable-debug],[Enable debug build options]) + AC_HELP_STRING([--disable-debug],[Disable debug build options]), + OPT_DEBUG_BUILD=$enableval) + case "$OPT_DEBUG_BUILD" in + no) + dnl --disable-debug option used + want_debug="no" + ;; + default) + dnl configure option not specified + want_debug="no" + ;; + *) + dnl --enable-debug option used + want_debug="yes" + ;; + esac + AC_MSG_RESULT([$want_debug]) +]) + + +dnl CARES_CHECK_OPTION_WARNINGS +dnl ------------------------------------------------- +dnl Verify if configure has been invoked with option +dnl --enable-warnings or --disable-warnings, and set +DNL shell variable want_warnings as appropriate. + +AC_DEFUN([CARES_CHECK_OPTION_WARNINGS], [ + AC_REQUIRE([CARES_CHECK_OPTION_DEBUG])dnl + AC_BEFORE([$0],[AC_PROG_CC])dnl + AC_MSG_CHECKING([whether to enable strict compiler warnings]) + OPT_COMPILER_WARNINGS="default" + AC_ARG_ENABLE(warnings, + AC_HELP_STRING([--enable-warnings],[Enable strict compiler warnings]) + AC_HELP_STRING([--disable-warnings],[Disable strict compiler warnings]), + OPT_COMPILER_WARNINGS=$enableval) + case "$OPT_COMPILER_WARNINGS" in + no) + dnl --disable-warnings option used + want_warnings="no" + ;; + default) + dnl configure option not specified, so + dnl use same setting as --enable-debug + want_warnings="$want_debug" + ;; + *) + dnl --enable-warnings option used + want_warnings="yes" + ;; + esac + AC_MSG_RESULT([$want_warnings]) +]) diff --git a/configure.ac b/configure.ac index ace7a5e22..935ee46cb 100644 --- a/configure.ac +++ b/configure.ac @@ -36,6 +36,9 @@ AC_CONFIG_SRCDIR([lib/urldata.h]) AM_CONFIG_HEADER(lib/config.h src/config.h include/curl/curlbuild.h) AM_MAINTAINER_MODE +CURL_CHECK_OPTION_DEBUG +CURL_CHECK_OPTION_WARNINGS + dnl SED is mandatory for configure process and libtool. dnl Set it now, allowing it to be changed later. AC_PATH_PROG([SED], [sed], [not_found], @@ -147,6 +150,8 @@ AC_SYS_LARGEFILE dnl support building of Windows DLLs AC_LIBTOOL_WIN32_DLL +CURL_PROCESS_DEBUG_BUILD_OPTS + dnl skip libtool C++ and Fortran compiler checks m4_ifdef([AC_PROG_CXX], [m4_undefine([AC_PROG_CXX])]) m4_defun([AC_PROG_CXX],[]) @@ -245,160 +250,24 @@ dnl ********************************************************************** dnl platform/compiler/architecture specific checks/flags dnl ********************************************************************** -ac_cv_compiler="unknown" -ac_cv_compiler_num="unknown" - -AC_MSG_CHECKING([whether we are using the IBM C compiler]) -CURL_CHECK_DEF([__IBMC__], [], [silent]) -if test "$curl_cv_have_def___IBMC__" = "yes"; then - AC_MSG_RESULT([yes]) - ac_cv_compiler="IBMC" - dnl Ensure that compiler optimizations are always thread-safe. - CFLAGS="$CFLAGS -qthreaded" - dnl Disable type based strict aliasing optimizations, using worst - dnl case aliasing assumptions when compiling. Type based aliasing - dnl would restrict the lvalues that could be safely used to access - dnl a data object. - CFLAGS="$CFLAGS -qnoansialias" - dnl Force compiler to stop after the compilation phase, without - dnl generating an object code file when compilation has errors. - CFLAGS="$CFLAGS -qhalt=e" -else - AC_MSG_RESULT([no]) -fi - -AC_MSG_CHECKING([whether we are using the Intel C compiler]) -CURL_CHECK_DEF([__INTEL_COMPILER], [], [silent]) -if test "$curl_cv_have_def___INTEL_COMPILER" = "yes"; then - AC_MSG_RESULT([yes]) - ac_cv_compiler="ICC" - ac_cv_compiler_num="$curl_cv_def___INTEL_COMPILER" - dnl On unix this compiler uses gcc's header files, so - dnl we select ANSI C89 dialect plus GNU extensions. - CPPFLAGS="$CPPFLAGS -std=gnu89" - if test "$ac_cv_compiler_num" -gt "600"; then - dnl Show errors, warnings, and remarks - CPPFLAGS="$CPPFLAGS -Wall" - dnl Perform extra compile-time code checking - CPPFLAGS="$CPPFLAGS -Wcheck" - fi - dnl Change some warnings into errors - dnl #140: too many arguments in function call - dnl #147: declaration is incompatible with 'previous one' - dnl #165: too few arguments in function call - dnl #266: function declared implicitly - CPPFLAGS="$CPPFLAGS -we 140,147,165,266" - dnl Disable some remarks - dnl #279: controlling expression is constant - dnl #981: operands are evaluated in unspecified order - dnl #1469: "cc" clobber ignored - if test "$ac_cv_compiler_num" -lt "910"; then - CPPFLAGS="$CPPFLAGS -wd 279" - fi - CPPFLAGS="$CPPFLAGS -wd 981,1469" - dnl Disable use of ANSI C aliasing rules in optimizations - CFLAGS="$CFLAGS -no-ansi-alias" - dnl Disable floating point optimizations - CFLAGS="$CFLAGS -fp-model precise -mp" -else - AC_MSG_RESULT([no]) -fi - -AC_MSG_CHECKING([whether we are using the DEC/Compaq C compiler]) -CURL_CHECK_DEF([__DECC], [], [silent]) -CURL_CHECK_DEF([__DECC_VER], [], [silent]) -if test "$curl_cv_have_def___DECC" = "yes" && - test "$curl_cv_have_def___DECC_VER" = "yes"; then - AC_MSG_RESULT([yes]) - ac_cv_compiler="DECC" - dnl Select strict ANSI C compiler mode - CFLAGS="$CFLAGS -std1" - dnl Turn off optimizer ANSI C aliasing rules - CFLAGS="$CFLAGS -noansi_alias" - dnl Select a higher warning level than default level2 - CFLAGS="$CFLAGS -msg_enable level3" - dnl Generate warnings for missing function prototypes - CFLAGS="$CFLAGS -warnprotos" - dnl Change some warnings into fatal errors - CFLAGS="$CFLAGS -msg_fatal toofewargs,toomanyargs" -else - AC_MSG_RESULT([no]) -fi - -AC_MSG_CHECKING([whether we are using the GNU C compiler]) -CURL_CHECK_DEF([__GNUC__], [], [silent]) -if test "$curl_cv_have_def___GNUC__" = "yes" && - test "$ac_cv_compiler" = "unknown"; then - AC_MSG_RESULT([yes]) - ac_cv_compiler="GNUC" - gccver=`$CC -dumpversion` - gccvhi=`echo $gccver | cut -d . -f1` - gccvlo=`echo $gccver | cut -d . -f2` - gccnum=`(expr $gccvhi "*" 100 + $gccvlo) 2>/dev/null` - ac_cv_compiler_num="$gccnum" - dnl this is a set of options we believe *ALL* gcc versions support: - WARN="-W -Wall -Wwrite-strings -pedantic -Wpointer-arith -Wnested-externs -Winline -Wmissing-prototypes" - dnl -Wcast-align is a bit too annoying on all gcc versions ;-) - if test "$ac_cv_compiler_num" -ge "207"; then - dnl gcc 2.7 or later - WARN="$WARN -Wmissing-declarations" - fi - if test "$ac_cv_compiler_num" -gt "295"; then - dnl only if the compiler is newer than 2.95 since we got lots of - dnl "`_POSIX_C_SOURCE' is not defined" in system headers with - dnl gcc 2.95.4 on FreeBSD 4.9! - WARN="$WARN -Wundef -Wno-long-long -Wsign-compare -Wshadow -Wno-multichar" - fi - if test "$ac_cv_compiler_num" -ge "296"; then - dnl gcc 2.96 or later - WARN="$WARN -Wfloat-equal" - fi - if test "$ac_cv_compiler_num" -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. - dnl Also, on gcc 4.0.X it is totally unbearable and complains all - dnl over making it unusable for generic purposes. Let's not use it. - if test "$ac_cv_compiler_num" -ge "303"; then - dnl gcc 3.3 and later - WARN="$WARN -Wendif-labels -Wstrict-prototypes" - fi - if test "$ac_cv_compiler_num" -ge "304"; then - # try these on gcc 3.4 - WARN="$WARN -Wdeclaration-after-statement" - fi - for flag in $CPPFLAGS; do - case "$flag" in - -I*) - dnl Include path, provide a -isystem option for the same dir - dnl to prevent warnings in those dirs. The -isystem was not very - dnl reliable on earlier gcc versions. - add=`echo $flag | sed 's/^-I/-isystem /g'` - WARN="$WARN $add" - ;; - esac - done - CFLAGS="$CFLAGS $WARN" - AC_MSG_NOTICE([Added this set of compiler options: $WARN]) -else - AC_MSG_RESULT([no]) -fi +CURL_CHECK_COMPILER +CURL_PROCESS_CC_BASIC_OPTS +CURL_PROCESS_CC_DEBUG_OPTS +CURL_PROCESS_CC_WARNING_OPTS case $host in # x86_64*linux*|amd64*freebsd*|ia64*freebsd*) # - if test "$ac_cv_compiler" = "ICC"; then + if test "$compiler_id" = "ICC_unix"; then # - if test "$ac_cv_compiler_num" -ge "900" && - test "$ac_cv_compiler_num" -lt "1000"; then + if test "$compiler_num" -ge "900" && + test "$compiler_num" -lt "1000"; then dnl icc 9.X specific CFLAGS="$CFLAGS -i-dynamic" fi # - if test "$ac_cv_compiler_num" -ge "1000"; then + if test "$compiler_num" -ge "1000"; then dnl icc 10.X or later CFLAGS="$CFLAGS -shared-intel" fi @@ -2463,31 +2332,6 @@ AC_HELP_STRING([--disable-sspi],[Disable SSPI]), ) dnl ************************************************************ -dnl lame option to switch on debug options -dnl -AC_MSG_CHECKING([whether to enable debug options]) -AC_ARG_ENABLE(debug, -AC_HELP_STRING([--enable-debug],[Enable pedantic debug options]) -AC_HELP_STRING([--disable-debug],[Disable debug options]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - ;; - *) AC_MSG_RESULT(yes) - - CPPFLAGS="$CPPFLAGS -DCURLDEBUG" - CFLAGS="$CFLAGS -g" - - dnl set compiler "debug" options to become more picky, and remove - dnl optimize options from CFLAGS - CURL_CC_DEBUG_OPTS - ;; - esac - ], - AC_MSG_RESULT(no) -) - -dnl ************************************************************ dnl disable cryptographic authentication dnl AC_MSG_CHECKING([whether to enable cryptographic authentication methods]) diff --git a/m4/curl-compilers.m4 b/m4/curl-compilers.m4 new file mode 100644 index 000000000..a132ec28b --- /dev/null +++ b/m4/curl-compilers.m4 @@ -0,0 +1,316 @@ +#*************************************************************************** +# _ _ ____ _ +# Project ___| | | | _ \| | +# / __| | | | |_) | | +# | (__| |_| | _ <| |___ +# \___|\___/|_| \_\_____| +# +# Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al. +# +# This software is licensed as described in the file COPYING, which +# you should have received as part of this distribution. The terms +# are also available at http://curl.haxx.se/docs/copyright.html. +# +# You may opt to use, copy, modify, merge, publish, distribute and/or sell +# copies of the Software, and permit persons to whom the Software is +# furnished to do so, under the terms of the COPYING file. +# +# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY +# KIND, either express or implied. +# +# $Id$ +#*************************************************************************** + +# File version for 'aclocal' use. Keep it a single number. +# serial 1 + + +dnl CURL_CHECK_COMPILER +dnl ------------------------------------------------- +dnl Verify if the C compiler being used is known. + +AC_DEFUN([CURL_CHECK_COMPILER], [ + # + compiler_id="unknown" + compiler_num="0" + # + CURL_CHECK_COMPILER_DEC + CURL_CHECK_COMPILER_IBM + CURL_CHECK_COMPILER_INTEL + CURL_CHECK_COMPILER_GNU + # +]) + + +dnl CURL_CHECK_COMPILER_DEC +dnl ------------------------------------------------- +dnl Verify if the C compiler being used is DEC's. + +AC_DEFUN([CURL_CHECK_COMPILER_DEC], [ + AC_MSG_CHECKING([whether we are using the DEC/Compaq C compiler]) + CURL_CHECK_DEF([__DECC], [], [silent]) + CURL_CHECK_DEF([__DECC_VER], [], [silent]) + if test "$curl_cv_have_def___DECC" = "yes" && + test "$curl_cv_have_def___DECC_VER" = "yes"; then + AC_MSG_RESULT([yes]) + compiler_id="DECC" + else + AC_MSG_RESULT([no]) + fi +]) + + +dnl CURL_CHECK_COMPILER_GNU +dnl ------------------------------------------------- +dnl Verify if the C compiler being used is GNU's. + +AC_DEFUN([CURL_CHECK_COMPILER_GNU], [ + AC_REQUIRE([CURL_CHECK_COMPILER_INTEL])dnl + # + AC_MSG_CHECKING([whether we are using the GNU C compiler]) + CURL_CHECK_DEF([__GNUC__], [], [silent]) + if test "$curl_cv_have_def___GNUC__" = "yes" && + test "$compiler_id" = "unknown"; then + AC_MSG_RESULT([yes]) + compiler_id="GNUC" + gccver=`$CC -dumpversion` + gccvhi=`echo $gccver | cut -d . -f1` + gccvlo=`echo $gccver | cut -d . -f2` + compiler_num=`(expr $gccvhi "*" 100 + $gccvlo) 2>/dev/null` + else + AC_MSG_RESULT([no]) + fi +]) + + +dnl CURL_CHECK_COMPILER_IBM +dnl ------------------------------------------------- +dnl Verify if the C compiler being used is IBM's. + +AC_DEFUN([CURL_CHECK_COMPILER_IBM], [ + AC_MSG_CHECKING([whether we are using the IBM C compiler]) + CURL_CHECK_DEF([__IBMC__], [], [silent]) + if test "$curl_cv_have_def___IBMC__" = "yes"; then + AC_MSG_RESULT([yes]) + compiler_id="IBMC" + else + AC_MSG_RESULT([no]) + fi +]) + + +dnl CURL_CHECK_COMPILER_INTEL +dnl ------------------------------------------------- +dnl Verify if the C compiler being used is Intel's. + +AC_DEFUN([CURL_CHECK_COMPILER_INTEL], [ + AC_BEFORE([$0],[CURL_CHECK_COMPILER_GNU])dnl + AC_MSG_CHECKING([whether we are using the Intel C compiler]) + CURL_CHECK_DEF([__INTEL_COMPILER], [], [silent]) + if test "$curl_cv_have_def___INTEL_COMPILER" = "yes"; then + AC_MSG_RESULT([yes]) + CURL_CHECK_DEF([__unix__], [], [silent]) + if test "$curl_cv_have_def___unix__" = "yes"; then + compiler_id="ICC_unix" + else + compiler_id="ICC_windows" + fi + compiler_num="$curl_cv_def___INTEL_COMPILER" + else + AC_MSG_RESULT([no]) + fi +]) + + +dnl CURL_PROCESS_CC_BASIC_OPTS +dnl ------------------------------------------------- +dnl Sets compiler options/flags which are independant +dnl of configure's debug or warnings options. + +AC_DEFUN([CURL_PROCESS_CC_BASIC_OPTS], [ + AC_REQUIRE([CURL_CHECK_COMPILER])dnl + # + if test "$compiler_id" = "DECC"; then + dnl Select strict ANSI C compiler mode + CFLAGS="$CFLAGS -std1" + dnl Turn off optimizer ANSI C aliasing rules + CFLAGS="$CFLAGS -noansi_alias" + dnl Generate warnings for missing function prototypes + CFLAGS="$CFLAGS -warnprotos" + dnl Change some warnings into fatal errors + CFLAGS="$CFLAGS -msg_fatal toofewargs,toomanyargs" + fi + # + if test "$compiler_id" = "IBMC"; then + dnl Ensure that compiler optimizations are always thread-safe. + CFLAGS="$CFLAGS -qthreaded" + dnl Disable type based strict aliasing optimizations, using worst + dnl case aliasing assumptions when compiling. Type based aliasing + dnl would restrict the lvalues that could be safely used to access + dnl a data object. + CFLAGS="$CFLAGS -qnoansialias" + dnl Force compiler to stop after the compilation phase, without + dnl generating an object code file when compilation has errors. + CFLAGS="$CFLAGS -qhalt=e" + fi + # + if test "$compiler_id" = "ICC_unix"; then + dnl On unix this compiler uses gcc's header files, so + dnl we select ANSI C89 dialect plus GNU extensions. + CPPFLAGS="$CPPFLAGS -std=gnu89" + dnl Change some warnings into errors + dnl #140: too many arguments in function call + dnl #147: declaration is incompatible with 'previous one' + dnl #165: too few arguments in function call + dnl #266: function declared implicitly + CPPFLAGS="$CPPFLAGS -we 140,147,165,266" + dnl Disable some remarks + dnl #279: controlling expression is constant + dnl #981: operands are evaluated in unspecified order + dnl #1469: "cc" clobber ignored + if test "$compiler_num" -lt "910"; then + CPPFLAGS="$CPPFLAGS -wd 279" + fi + CPPFLAGS="$CPPFLAGS -wd 981,1469" + dnl Disable use of ANSI C aliasing rules in optimizations + CFLAGS="$CFLAGS -no-ansi-alias" + dnl Disable floating point optimizations + CFLAGS="$CFLAGS -fp-model precise" + fi +]) + + +dnl CURL_PROCESS_CC_DEBUG_OPTS +dnl ------------------------------------------------- +dnl Sets compiler options/flags which depend on +dnl configure's debug given option. + +AC_DEFUN([CURL_PROCESS_CC_DEBUG_OPTS], [ + AC_REQUIRE([CURL_CHECK_OPTION_DEBUG])dnl + AC_REQUIRE([CURL_CHECK_COMPILER])dnl + # + if test "$want_debug" = "yes"; then + CFLAGS="$CFLAGS -g" + fi + # + if test "$want_debug" = "no"; then + 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 + fi + # +]) + + +dnl CURL_PROCESS_CC_WARNING_OPTS +dnl ------------------------------------------------- +dnl Sets compiler options/flags which depend on +dnl configure's warnings given option. + +AC_DEFUN([CURL_PROCESS_CC_WARNING_OPTS], [ + AC_REQUIRE([CURL_CHECK_OPTION_WARNINGS])dnl + AC_REQUIRE([CURL_CHECK_COMPILER])dnl + # + if test "$compiler_id" = "DECC"; then + if test "$want_warnings" = "yes"; then + dnl Select a higher warning level than default level2 + CFLAGS="$CFLAGS -msg_enable level3" + fi + fi + # + if test "$compiler_id" = "ICC_unix"; then + if test "$want_warnings" = "yes"; then + if test "$compiler_num" -gt "600"; then + dnl Show errors, warnings, and remarks + CPPFLAGS="$CPPFLAGS -Wall" + dnl Perform extra compile-time code checking + CPPFLAGS="$CPPFLAGS -Wcheck" + fi + fi + fi + # + if test "$compiler_id" = "GNUC"; then + # + # FIXME: Some of these warnings should be changed into errors + # and moved to CURL-PROCESS-CC-BASIC-OPTS + # + if test "$want_warnings" = "yes"; then + dnl this is a set of options we believe *ALL* gcc versions support: + WARN="-W -Wall -Wwrite-strings -pedantic -Wpointer-arith -Wnested-externs -Winline -Wmissing-prototypes" + dnl -Wcast-align is a bit too annoying on all gcc versions ;-) + if test "$compiler_num" -ge "207"; then + dnl gcc 2.7 or later + WARN="$WARN -Wmissing-declarations" + fi + if test "$compiler_num" -gt "295"; then + dnl only if the compiler is newer than 2.95 since we got lots of + dnl "`_POSIX_C_SOURCE' is not defined" in system headers with + dnl gcc 2.95.4 on FreeBSD 4.9! + WARN="$WARN -Wundef -Wno-long-long -Wsign-compare -Wshadow -Wno-multichar" + fi + if test "$compiler_num" -ge "296"; then + dnl gcc 2.96 or later + WARN="$WARN -Wfloat-equal" + fi + if test "$compiler_num" -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. + dnl Also, on gcc 4.0.X it is totally unbearable and complains all + dnl over making it unusable for generic purposes. Let's not use it. + if test "$compiler_num" -ge "303"; then + dnl gcc 3.3 and later + WARN="$WARN -Wendif-labels -Wstrict-prototypes" + fi + if test "$compiler_num" -ge "304"; then + # try these on gcc 3.4 + WARN="$WARN -Wdeclaration-after-statement" + fi + for flag in $CPPFLAGS; do + case "$flag" in + -I*) + dnl Include path, provide a -isystem option for the same dir + dnl to prevent warnings in those dirs. The -isystem was not very + dnl reliable on earlier gcc versions. + add=`echo $flag | sed 's/^-I/-isystem /g'` + WARN="$WARN $add" + ;; + esac + done + CFLAGS="$CFLAGS $WARN" + AC_MSG_NOTICE([Added this set of compiler options: $WARN]) + fi + fi + # +]) + + +dnl CURL_PROCESS_DEBUG_BUILD_OPTS +dnl ------------------------------------------------- +dnl Settings which depend on configure's debug given +dnl option, and further configure the build process. + +AC_DEFUN([CURL_PROCESS_DEBUG_BUILD_OPTS], [ + AC_REQUIRE([CURL_CHECK_OPTION_DEBUG])dnl + AC_BEFORE([$0],[AC_PROG_LIBTOOL])dnl + # + if test "$want_debug" = "yes"; then + CPPFLAGS="$CPPFLAGS -DCURLDEBUG" + fi + # +]) + + + diff --git a/m4/curl-confopts.m4 b/m4/curl-confopts.m4 new file mode 100644 index 000000000..5daf2df5e --- /dev/null +++ b/m4/curl-confopts.m4 @@ -0,0 +1,93 @@ +#*************************************************************************** +# _ _ ____ _ +# Project ___| | | | _ \| | +# / __| | | | |_) | | +# | (__| |_| | _ <| |___ +# \___|\___/|_| \_\_____| +# +# Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al. +# +# This software is licensed as described in the file COPYING, which +# you should have received as part of this distribution. The terms +# are also available at http://curl.haxx.se/docs/copyright.html. +# +# You may opt to use, copy, modify, merge, publish, distribute and/or sell +# copies of the Software, and permit persons to whom the Software is +# furnished to do so, under the terms of the COPYING file. +# +# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY +# KIND, either express or implied. +# +# $Id$ +#*************************************************************************** + +# File version for 'aclocal' use. Keep it a single number. +# serial 1 + + +dnl CURL_CHECK_OPTION_DEBUG +dnl ------------------------------------------------- +dnl Verify if configure has been invoked with option +dnl --enable-debug or --disable-debug, and set shell +dnl variable want_debug value as appropriate. + +AC_DEFUN([CURL_CHECK_OPTION_DEBUG], [ + AC_BEFORE([$0],[CURL_CHECK_OPTION_DEBUG])dnl + AC_BEFORE([$0],[AC_PROG_CC])dnl + AC_MSG_CHECKING([whether to enable debug build options]) + OPT_DEBUG_BUILD="default" + AC_ARG_ENABLE(debug, + AC_HELP_STRING([--enable-debug],[Enable debug build options]) + AC_HELP_STRING([--disable-debug],[Disable debug build options]), + OPT_DEBUG_BUILD=$enableval) + case "$OPT_DEBUG_BUILD" in + no) + dnl --disable-debug option used + want_debug="no" + ;; + default) + dnl configure option not specified + want_debug="no" + ;; + *) + dnl --enable-debug option used + want_debug="yes" + ;; + esac + AC_MSG_RESULT([$want_debug]) +]) + + +dnl CURL_CHECK_OPTION_WARNINGS +dnl ------------------------------------------------- +dnl Verify if configure has been invoked with option +dnl --enable-warnings or --disable-warnings, and set +DNL shell variable want_warnings as appropriate. + +AC_DEFUN([CURL_CHECK_OPTION_WARNINGS], [ + AC_REQUIRE([CURL_CHECK_OPTION_DEBUG])dnl + AC_BEFORE([$0],[AC_PROG_CC])dnl + AC_MSG_CHECKING([whether to enable strict compiler warnings]) + OPT_COMPILER_WARNINGS="default" + AC_ARG_ENABLE(warnings, + AC_HELP_STRING([--enable-warnings],[Enable strict compiler warnings]) + AC_HELP_STRING([--disable-warnings],[Disable strict compiler warnings]), + OPT_COMPILER_WARNINGS=$enableval) + case "$OPT_COMPILER_WARNINGS" in + no) + dnl --disable-warnings option used + want_warnings="no" + ;; + default) + dnl configure option not specified, so + dnl use same setting as --enable-debug + want_warnings="$want_debug" + ;; + *) + dnl --enable-warnings option used + want_warnings="yes" + ;; + esac + AC_MSG_RESULT([$want_warnings]) +]) + |