mirror of
https://github.com/curl/curl.git
synced 2025-01-18 14:04:30 +08:00
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.
This commit is contained in:
parent
1bfaf76dd0
commit
2245ac2f88
51
acinclude.m4
51
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.
|
||||
|
@ -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])
|
||||
|
@ -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)
|
||||
CARES_PROCESS_DEBUG_BUILD_OPTS
|
||||
|
||||
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"
|
||||
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
|
||||
|
319
ares/m4/cares-compilers.m4
Normal file
319
ares/m4/cares-compilers.m4
Normal file
@ -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
|
||||
#
|
||||
])
|
||||
|
||||
|
86
ares/m4/cares-confopts.m4
Normal file
86
ares/m4/cares-confopts.m4
Normal file
@ -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])
|
||||
])
|
182
configure.ac
182
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
|
||||
@ -2462,31 +2331,6 @@ AC_HELP_STRING([--disable-sspi],[Disable SSPI]),
|
||||
AC_MSG_RESULT(no)
|
||||
)
|
||||
|
||||
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
|
||||
|
316
m4/curl-compilers.m4
Normal file
316
m4/curl-compilers.m4
Normal file
@ -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
|
||||
#
|
||||
])
|
||||
|
||||
|
||||
|
93
m4/curl-confopts.m4
Normal file
93
m4/curl-confopts.m4
Normal file
@ -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])
|
||||
])
|
||||
|
Loading…
Reference in New Issue
Block a user