# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2017, 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.
+# are also available at https://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
# 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 23
+# serial 67
dnl CURL_CHECK_COMPILER
flags_opt_yes="unknown"
flags_opt_off="unknown"
#
- CURL_CHECK_COMPILER_DEC
- CURL_CHECK_COMPILER_HP
- CURL_CHECK_COMPILER_IBM
- CURL_CHECK_COMPILER_INTEL
- CURL_CHECK_COMPILER_GNU
+ flags_prefer_cppflags="no"
+ #
+ CURL_CHECK_COMPILER_DEC_C
+ CURL_CHECK_COMPILER_HPUX_C
+ CURL_CHECK_COMPILER_IBM_C
+ CURL_CHECK_COMPILER_INTEL_C
+ CURL_CHECK_COMPILER_CLANG
+ CURL_CHECK_COMPILER_GNU_C
CURL_CHECK_COMPILER_LCC
- CURL_CHECK_COMPILER_SGI_MIPSpro_C
+ CURL_CHECK_COMPILER_SGI_MIPSPRO_C
CURL_CHECK_COMPILER_SGI_MIPS_C
- CURL_CHECK_COMPILER_SUN
- CURL_CHECK_COMPILER_TINYC
+ CURL_CHECK_COMPILER_SUNPRO_C
+ CURL_CHECK_COMPILER_TINY_C
+ CURL_CHECK_COMPILER_WATCOM_C
#
if test "$compiler_id" = "unknown"; then
cat <<_EOF 1>&2
***
*** Whatever settings are present in CFLAGS will be used for this run.
***
-*** If you wish to help the cURL project to better support your compiler
+*** If you wish to help the curl project to better support your compiler
*** you can report this and the required info on the libcurl development
-*** mailing list: http://cool.haxx.se/mailman/listinfo/curl-library/
+*** mailing list: https://cool.haxx.se/mailman/listinfo/curl-library/
***
_EOF
fi
])
-dnl CURL_CHECK_COMPILER_DEC
+dnl CURL_CHECK_COMPILER_CLANG
dnl -------------------------------------------------
-dnl Verify if the C compiler being used is DEC's.
+dnl Verify if compiler being used is clang.
-AC_DEFUN([CURL_CHECK_COMPILER_DEC], [
- AC_MSG_CHECKING([whether we are using the DEC/Compaq C compiler])
+AC_DEFUN([CURL_CHECK_COMPILER_CLANG], [
+ AC_BEFORE([$0],[CURL_CHECK_COMPILER_GNU_C])dnl
+ AC_MSG_CHECKING([if compiler is clang])
+ CURL_CHECK_DEF([__clang__], [], [silent])
+ if test "$curl_cv_have_def___clang__" = "yes"; then
+ AC_MSG_RESULT([yes])
+ compiler_id="CLANG"
+ fullclangver=`$CC -v 2>&1 | grep version`
+ clangver=`echo $fullclangver | grep "based on LLVM " | "$SED" 's/.*(based on LLVM \(@<:@0-9@:>@*\.@<:@0-9@:>@*\).*)/\1/'`
+ if test -z "$clangver"; then
+ if echo $fullclangver | grep "Apple LLVM version " >/dev/null; then
+ dnl Starting with XCode 7 / clang 3.7, Apple clang won't tell its upstream version
+ clangver="3.7"
+ else
+ clangver=`echo $fullclangver | "$SED" 's/.*version \(@<:@0-9@:>@*\.@<:@0-9@:>@*\).*/\1/'`
+ fi
+ fi
+ clangvhi=`echo $clangver | cut -d . -f1`
+ clangvlo=`echo $clangver | cut -d . -f2`
+ compiler_num=`(expr $clangvhi "*" 100 + $clangvlo) 2>/dev/null`
+ flags_dbg_all="-g -g0 -g1 -g2 -g3"
+ flags_dbg_all="$flags_dbg_all -ggdb"
+ flags_dbg_all="$flags_dbg_all -gstabs"
+ flags_dbg_all="$flags_dbg_all -gstabs+"
+ flags_dbg_all="$flags_dbg_all -gcoff"
+ flags_dbg_all="$flags_dbg_all -gxcoff"
+ flags_dbg_all="$flags_dbg_all -gdwarf-2"
+ flags_dbg_all="$flags_dbg_all -gvms"
+ flags_dbg_yes="-g"
+ flags_dbg_off=""
+ flags_opt_all="-O -O0 -O1 -O2 -Os -O3 -O4"
+ flags_opt_yes="-Os"
+ flags_opt_off="-O0"
+ else
+ AC_MSG_RESULT([no])
+ fi
+])
+
+
+dnl CURL_CHECK_COMPILER_DEC_C
+dnl -------------------------------------------------
+dnl Verify if compiler being used is DEC C.
+
+AC_DEFUN([CURL_CHECK_COMPILER_DEC_C], [
+ AC_MSG_CHECKING([if compiler is DEC/Compaq/HP C])
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"
+ compiler_id="DEC_C"
flags_dbg_all="-g -g0 -g1 -g2 -g3"
flags_dbg_yes="-g2"
- flags_dbg_off="-g0"
+ flags_dbg_off=""
flags_opt_all="-O -O0 -O1 -O2 -O3 -O4"
flags_opt_yes="-O1"
flags_opt_off="-O0"
])
-dnl CURL_CHECK_COMPILER_GNU
+dnl CURL_CHECK_COMPILER_GNU_C
dnl -------------------------------------------------
-dnl Verify if the C compiler being used is GNU's.
+dnl Verify if compiler being used is GNU C.
-AC_DEFUN([CURL_CHECK_COMPILER_GNU], [
- AC_REQUIRE([CURL_CHECK_COMPILER_INTEL])dnl
- #
- AC_MSG_CHECKING([whether we are using the GNU C compiler])
+AC_DEFUN([CURL_CHECK_COMPILER_GNU_C], [
+ AC_REQUIRE([CURL_CHECK_COMPILER_INTEL_C])dnl
+ AC_REQUIRE([CURL_CHECK_COMPILER_CLANG])dnl
+ AC_MSG_CHECKING([if compiler is GNU C])
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"
+ compiler_id="GNU_C"
gccver=`$CC -dumpversion`
gccvhi=`echo $gccver | cut -d . -f1`
gccvlo=`echo $gccver | cut -d . -f2`
flags_dbg_all="$flags_dbg_all -gdwarf-2"
flags_dbg_all="$flags_dbg_all -gvms"
flags_dbg_yes="-g"
- flags_dbg_off="-g0"
- flags_opt_all="-O -O0 -O1 -O2 -O3 -Os"
+ flags_dbg_off=""
+ flags_opt_all="-O -O0 -O1 -O2 -O3 -Os -Og -Ofast"
flags_opt_yes="-O2"
flags_opt_off="-O0"
+ CURL_CHECK_DEF([_WIN32], [], [silent])
else
AC_MSG_RESULT([no])
fi
])
-dnl CURL_CHECK_COMPILER_HP
+dnl CURL_CHECK_COMPILER_HPUX_C
dnl -------------------------------------------------
-dnl Verify if the C compiler being used is HP's.
+dnl Verify if compiler being used is HP-UX C.
-AC_DEFUN([CURL_CHECK_COMPILER_HP], [
- AC_MSG_CHECKING([whether we are using the HP C compiler])
+AC_DEFUN([CURL_CHECK_COMPILER_HPUX_C], [
+ AC_MSG_CHECKING([if compiler is HP-UX C])
CURL_CHECK_DEF([__HP_cc], [], [silent])
if test "$curl_cv_have_def___HP_cc" = "yes"; then
AC_MSG_RESULT([yes])
- compiler_id="HPUXC"
+ compiler_id="HP_UX_C"
flags_dbg_all="-g -s"
flags_dbg_yes="-g"
flags_dbg_off="-s"
])
-dnl CURL_CHECK_COMPILER_IBM
+dnl CURL_CHECK_COMPILER_IBM_C
dnl -------------------------------------------------
-dnl Verify if the C compiler being used is IBM's.
+dnl Verify if compiler being used is IBM C.
-AC_DEFUN([CURL_CHECK_COMPILER_IBM], [
- AC_MSG_CHECKING([whether we are using the IBM C compiler])
+AC_DEFUN([CURL_CHECK_COMPILER_IBM_C], [
+ AC_MSG_CHECKING([if compiler is IBM C])
CURL_CHECK_DEF([__IBMC__], [], [silent])
if test "$curl_cv_have_def___IBMC__" = "yes"; then
AC_MSG_RESULT([yes])
- compiler_id="IBMC"
+ compiler_id="IBM_C"
flags_dbg_all="-g -g0 -g1 -g2 -g3"
flags_dbg_yes="-g"
flags_dbg_off=""
flags_opt_all="$flags_opt_all -qoptimize=5"
flags_opt_yes="-O2"
flags_opt_off="-qnooptimize"
+ flags_prefer_cppflags="yes"
else
AC_MSG_RESULT([no])
fi
])
-dnl CURL_CHECK_COMPILER_INTEL
+dnl CURL_CHECK_COMPILER_INTEL_C
dnl -------------------------------------------------
-dnl Verify if the C compiler being used is Intel's.
+dnl Verify if compiler being used is Intel C.
-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])
+AC_DEFUN([CURL_CHECK_COMPILER_INTEL_C], [
+ AC_BEFORE([$0],[CURL_CHECK_COMPILER_GNU_C])dnl
+ AC_MSG_CHECKING([if compiler is Intel C])
CURL_CHECK_DEF([__INTEL_COMPILER], [], [silent])
if test "$curl_cv_have_def___INTEL_COMPILER" = "yes"; then
AC_MSG_RESULT([yes])
+ compiler_num="$curl_cv_def___INTEL_COMPILER"
CURL_CHECK_DEF([__unix__], [], [silent])
if test "$curl_cv_have_def___unix__" = "yes"; then
- compiler_id="ICC_unix"
+ compiler_id="INTEL_UNIX_C"
flags_dbg_all="-g -g0"
flags_dbg_yes="-g"
- flags_dbg_off="-g0"
+ flags_dbg_off=""
flags_opt_all="-O -O0 -O1 -O2 -O3 -Os"
flags_opt_yes="-O2"
flags_opt_off="-O0"
else
- compiler_id="ICC_windows"
+ compiler_id="INTEL_WINDOWS_C"
flags_dbg_all="/ZI /Zi /zI /zi /ZD /Zd /zD /zd /Z7 /z7 /Oy /Oy-"
flags_dbg_all="$flags_dbg_all /debug"
flags_dbg_all="$flags_dbg_all /debug:none"
flags_opt_yes="/O2"
flags_opt_off="/Od"
fi
- compiler_num="$curl_cv_def___INTEL_COMPILER"
else
AC_MSG_RESULT([no])
fi
dnl CURL_CHECK_COMPILER_LCC
dnl -------------------------------------------------
-dnl Verify if the C compiler being used is LCC.
+dnl Verify if compiler being used is LCC.
AC_DEFUN([CURL_CHECK_COMPILER_LCC], [
- AC_MSG_CHECKING([whether we are using the LCC C compiler])
+ AC_MSG_CHECKING([if compiler is LCC])
CURL_CHECK_DEF([__LCC__], [], [silent])
if test "$curl_cv_have_def___LCC__" = "yes"; then
AC_MSG_RESULT([yes])
dnl CURL_CHECK_COMPILER_SGI_MIPS_C
dnl -------------------------------------------------
-dnl Verify if the C compiler being used is SGI's.
+dnl Verify if compiler being used is SGI MIPS C.
AC_DEFUN([CURL_CHECK_COMPILER_SGI_MIPS_C], [
- AC_REQUIRE([CURL_CHECK_COMPILER_SGI_MIPSpro_C])dnl
+ AC_REQUIRE([CURL_CHECK_COMPILER_SGI_MIPSPRO_C])dnl
AC_MSG_CHECKING([if compiler is SGI MIPS C])
CURL_CHECK_DEF([__GNUC__], [], [silent])
CURL_CHECK_DEF([__sgi], [], [silent])
compiler_id="SGI_MIPS_C"
flags_dbg_all="-g -g0 -g1 -g2 -g3"
flags_dbg_yes="-g"
- flags_dbg_off="-g0"
+ flags_dbg_off=""
flags_opt_all="-O -O0 -O1 -O2 -O3 -Ofast"
flags_opt_yes="-O2"
flags_opt_off="-O0"
])
-dnl CURL_CHECK_COMPILER_SGI_MIPSpro_C
+dnl CURL_CHECK_COMPILER_SGI_MIPSPRO_C
dnl -------------------------------------------------
-dnl Verify if the C compiler being used is SGI's.
+dnl Verify if compiler being used is SGI MIPSpro C.
-AC_DEFUN([CURL_CHECK_COMPILER_SGI_MIPSpro_C], [
+AC_DEFUN([CURL_CHECK_COMPILER_SGI_MIPSPRO_C], [
AC_BEFORE([$0],[CURL_CHECK_COMPILER_SGI_MIPS_C])dnl
AC_MSG_CHECKING([if compiler is SGI MIPSpro C])
CURL_CHECK_DEF([__GNUC__], [], [silent])
(test "$curl_cv_have_def__SGI_COMPILER_VERSION" = "yes" ||
test "$curl_cv_have_def__COMPILER_VERSION" = "yes"); then
AC_MSG_RESULT([yes])
- compiler_id="SGI_MIPSpro_C"
+ compiler_id="SGI_MIPSPRO_C"
flags_dbg_all="-g -g0 -g1 -g2 -g3"
flags_dbg_yes="-g"
- flags_dbg_off="-g0"
+ flags_dbg_off=""
flags_opt_all="-O -O0 -O1 -O2 -O3 -Ofast"
flags_opt_yes="-O2"
flags_opt_off="-O0"
])
-dnl CURL_CHECK_COMPILER_SUN
+dnl CURL_CHECK_COMPILER_SUNPRO_C
dnl -------------------------------------------------
-dnl Verify if the C compiler being used is SUN's.
+dnl Verify if compiler being used is SunPro C.
-AC_DEFUN([CURL_CHECK_COMPILER_SUN], [
- AC_MSG_CHECKING([whether we are using the SUN C compiler])
+AC_DEFUN([CURL_CHECK_COMPILER_SUNPRO_C], [
+ AC_MSG_CHECKING([if compiler is SunPro C])
CURL_CHECK_DEF([__SUNPRO_C], [], [silent])
if test "$curl_cv_have_def___SUNPRO_C" = "yes"; then
AC_MSG_RESULT([yes])
- compiler_id="SUNC"
+ compiler_id="SUNPRO_C"
flags_dbg_all="-g -s"
flags_dbg_yes="-g"
flags_dbg_off="-s"
])
-dnl CURL_CHECK_COMPILER_TINYC
+dnl CURL_CHECK_COMPILER_TINY_C
dnl -------------------------------------------------
-dnl Verify if the C compiler being used is TINYC.
+dnl Verify if compiler being used is Tiny C.
-AC_DEFUN([CURL_CHECK_COMPILER_TINYC], [
- AC_MSG_CHECKING([whether we are using the TinyCC C compiler])
+AC_DEFUN([CURL_CHECK_COMPILER_TINY_C], [
+ AC_MSG_CHECKING([if compiler is Tiny C])
CURL_CHECK_DEF([__TINYC__], [], [silent])
if test "$curl_cv_have_def___TINYC__" = "yes"; then
AC_MSG_RESULT([yes])
- compiler_id="TINYC"
+ compiler_id="TINY_C"
flags_dbg_all="-g -b"
- flags_dbg_yes="-g -b"
+ flags_dbg_yes="-g"
flags_dbg_off=""
flags_opt_all=""
flags_opt_yes=""
])
+dnl CURL_CHECK_COMPILER_WATCOM_C
+dnl -------------------------------------------------
+dnl Verify if compiler being used is Watcom C.
+
+AC_DEFUN([CURL_CHECK_COMPILER_WATCOM_C], [
+ AC_MSG_CHECKING([if compiler is Watcom C])
+ CURL_CHECK_DEF([__WATCOMC__], [], [silent])
+ if test "$curl_cv_have_def___WATCOMC__" = "yes"; then
+ AC_MSG_RESULT([yes])
+ CURL_CHECK_DEF([__UNIX__], [], [silent])
+ if test "$curl_cv_have_def___UNIX__" = "yes"; then
+ compiler_id="WATCOM_UNIX_C"
+ flags_dbg_all="-g1 -g1+ -g2 -g3"
+ flags_dbg_yes="-g2"
+ flags_dbg_off=""
+ flags_opt_all="-O0 -O1 -O2 -O3"
+ flags_opt_yes="-O2"
+ flags_opt_off="-O0"
+ else
+ compiler_id="WATCOM_WINDOWS_C"
+ flags_dbg_all=""
+ flags_dbg_yes=""
+ flags_dbg_off=""
+ flags_opt_all=""
+ flags_opt_yes=""
+ flags_opt_off=""
+ fi
+ else
+ AC_MSG_RESULT([no])
+ fi
+])
+
+
dnl CURL_CONVERT_INCLUDE_TO_ISYSTEM
dnl -------------------------------------------------
dnl Changes standard include paths present in CFLAGS
dnl and CPPFLAGS into isystem include paths. This is
dnl done to prevent GNUC from generating warnings on
-dnl headers from these locations, even though this is
-dnl not reliable on ancient GNUC versions.
+dnl headers from these locations, although on ancient
+dnl GNUC versions these warnings are not silenced.
AC_DEFUN([CURL_CONVERT_INCLUDE_TO_ISYSTEM], [
- tmp_has_include="no"
- tmp_chg_FLAGS=$CFLAGS
- for word1 in $tmp_chg_FLAGS; do
- case "$word1" in
- -I*)
- tmp_has_include="yes"
- ;;
- esac
- done
- if test "$tmp_has_include" = "yes"; then
- tmp_chg_FLAGS=`echo $tmp_chg_FLAGS | sed 's/^-I/ -isystem /g'`
- tmp_chg_FLAGS=`echo $tmp_chg_FLAGS | sed 's/ -I/ -isystem /g'`
- CFLAGS=`eval echo $tmp_chg_FLAGS`
- fi
- tmp_has_include="no"
- tmp_chg_FLAGS=$CPPFLAGS
- for word1 in $tmp_chg_FLAGS; do
- case "$word1" in
- -I*)
- tmp_has_include="yes"
- ;;
- esac
- done
- if test "$tmp_has_include" = "yes"; then
- tmp_chg_FLAGS=`echo $tmp_chg_FLAGS | sed 's/^-I/ -isystem /g'`
- tmp_chg_FLAGS=`echo $tmp_chg_FLAGS | sed 's/ -I/ -isystem /g'`
- CPPFLAGS=`eval echo $tmp_chg_FLAGS`
+ AC_REQUIRE([CURL_SHFUNC_SQUEEZE])dnl
+ AC_REQUIRE([CURL_CHECK_COMPILER])dnl
+ if test "$compiler_id" = "GNU_C" ||
+ test "$compiler_id" = "CLANG"; then
+ tmp_has_include="no"
+ tmp_chg_FLAGS="$CFLAGS"
+ for word1 in $tmp_chg_FLAGS; do
+ case "$word1" in
+ -I*)
+ tmp_has_include="yes"
+ ;;
+ esac
+ done
+ if test "$tmp_has_include" = "yes"; then
+ tmp_chg_FLAGS=`echo "$tmp_chg_FLAGS" | "$SED" 's/^-I/ -isystem /g'`
+ tmp_chg_FLAGS=`echo "$tmp_chg_FLAGS" | "$SED" 's/ -I/ -isystem /g'`
+ CFLAGS="$tmp_chg_FLAGS"
+ squeeze CFLAGS
+ fi
+ tmp_has_include="no"
+ tmp_chg_FLAGS="$CPPFLAGS"
+ for word1 in $tmp_chg_FLAGS; do
+ case "$word1" in
+ -I*)
+ tmp_has_include="yes"
+ ;;
+ esac
+ done
+ if test "$tmp_has_include" = "yes"; then
+ tmp_chg_FLAGS=`echo "$tmp_chg_FLAGS" | "$SED" 's/^-I/ -isystem /g'`
+ tmp_chg_FLAGS=`echo "$tmp_chg_FLAGS" | "$SED" 's/ -I/ -isystem /g'`
+ CPPFLAGS="$tmp_chg_FLAGS"
+ squeeze CPPFLAGS
+ fi
fi
])
],[
tmp_compiler_works="no"
echo " " >&6
- sed 's/^/cc-fail> /' conftest.err >&6
+ sed 's/^/cc-fail: /' conftest.err >&6
echo " " >&6
])
dnl linking capability verification
],[
tmp_compiler_works="no"
echo " " >&6
- sed 's/^/ln-fail> /' conftest.err >&6
+ sed 's/^/link-fail: /' conftest.err >&6
echo " " >&6
])
fi
],[
tmp_compiler_works="no"
echo " " >&6
- echo "rn-fail test program exited with status $ac_status" >&6
+ echo "run-fail: test program exited with status $ac_status" >&6
echo " " >&6
])
fi
AC_DEFUN([CURL_SET_COMPILER_BASIC_OPTS], [
AC_REQUIRE([CURL_CHECK_COMPILER])dnl
+ AC_REQUIRE([CURL_SHFUNC_SQUEEZE])dnl
#
if test "$compiler_id" != "unknown"; then
#
- if test "$compiler_id" = "GNUC"; then
+ if test "$compiler_id" = "GNU_C" ||
+ test "$compiler_id" = "CLANG"; then
CURL_CONVERT_INCLUDE_TO_ISYSTEM
fi
#
#
case "$compiler_id" in
#
- DECC)
+ CLANG)
+ #
+ dnl Disable warnings for unused arguments, otherwise clang will
+ dnl warn about compile-time arguments used during link-time, like
+ dnl -O and -g and -pedantic.
+ tmp_CFLAGS="$tmp_CFLAGS -Qunused-arguments"
+ ;;
+ #
+ DEC_C)
#
dnl Select strict ANSI C compiler mode
tmp_CFLAGS="$tmp_CFLAGS -std1"
tmp_CFLAGS="$tmp_CFLAGS -msg_fatal toofewargs,toomanyargs"
;;
#
- GNUC)
+ GNU_C)
#
- dnl Placeholder
- tmp_CFLAGS="$tmp_CFLAGS"
+ dnl turn implicit-function-declaration warning into error,
+ dnl at least gcc 2.95 and later support this
+ if test "$compiler_num" -ge "295"; then
+ tmp_CFLAGS="$tmp_CFLAGS -Werror-implicit-function-declaration"
+ fi
;;
#
- HPUXC)
+ HP_UX_C)
#
dnl Disallow run-time dereferencing of null pointers
tmp_CFLAGS="$tmp_CFLAGS -z"
tmp_CFLAGS="$tmp_CFLAGS +W 4227,4255"
;;
#
- IBMC)
+ IBM_C)
#
dnl Ensure that compiler optimizations are always thread-safe.
- tmp_CFLAGS="$tmp_CFLAGS -qthreaded"
+ tmp_CPPFLAGS="$tmp_CPPFLAGS -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.
- tmp_CFLAGS="$tmp_CFLAGS -qnoansialias"
+ tmp_CPPFLAGS="$tmp_CPPFLAGS -qnoansialias"
dnl Force compiler to stop after the compilation phase, without
dnl generating an object code file when compilation has errors.
- tmp_CFLAGS="$tmp_CFLAGS -qhalt=e"
+ tmp_CPPFLAGS="$tmp_CPPFLAGS -qhalt=e"
;;
#
- ICC_unix)
+ INTEL_UNIX_C)
#
dnl On unix this compiler uses gcc's header files, so
dnl we select ANSI C89 dialect plus GNU extensions.
- tmp_CPPFLAGS="$tmp_CPPFLAGS -std=gnu89"
+ tmp_CFLAGS="$tmp_CFLAGS -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
- tmp_CPPFLAGS="$tmp_CPPFLAGS -we 140,147,165,266"
+ tmp_CPPFLAGS="$tmp_CPPFLAGS -we140,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
- tmp_CPPFLAGS="$tmp_CPPFLAGS -wd 279,981,1469"
- dnl Disable use of ANSI C aliasing rules in optimizations
- tmp_CFLAGS="$tmp_CFLAGS -no-ansi-alias"
- dnl Disable floating point optimizations
- tmp_CFLAGS="$tmp_CFLAGS -fp-model precise"
+ tmp_CPPFLAGS="$tmp_CPPFLAGS -wd279,981,1469"
;;
#
- ICC_windows)
+ INTEL_WINDOWS_C)
#
dnl Placeholder
tmp_CFLAGS="$tmp_CFLAGS"
tmp_CFLAGS="$tmp_CFLAGS"
;;
#
- SGI_MIPSpro_C)
+ SGI_MIPSPRO_C)
#
dnl Placeholder
tmp_CFLAGS="$tmp_CFLAGS"
;;
#
- SUNC)
+ SUNPRO_C)
#
dnl Placeholder
tmp_CFLAGS="$tmp_CFLAGS"
;;
#
- TINYC)
+ TINY_C)
+ #
+ dnl Placeholder
+ tmp_CFLAGS="$tmp_CFLAGS"
+ ;;
+ #
+ WATCOM_UNIX_C)
+ #
+ dnl Placeholder
+ tmp_CFLAGS="$tmp_CFLAGS"
+ ;;
+ #
+ WATCOM_WINDOWS_C)
#
dnl Placeholder
tmp_CFLAGS="$tmp_CFLAGS"
#
esac
#
- tmp_CPPFLAGS=`eval echo $tmp_CPPFLAGS`
- tmp_CFLAGS=`eval echo $tmp_CFLAGS`
+ squeeze tmp_CPPFLAGS
+ squeeze tmp_CFLAGS
#
if test ! -z "$tmp_CFLAGS" || test ! -z "$tmp_CPPFLAGS"; then
AC_MSG_CHECKING([if compiler accepts some basic options])
- CPPFLAGS=`eval echo $tmp_save_CPPFLAGS $tmp_CPPFLAGS`
- CFLAGS=`eval echo $tmp_save_CFLAGS $tmp_CFLAGS`
+ CPPFLAGS="$tmp_save_CPPFLAGS $tmp_CPPFLAGS"
+ CFLAGS="$tmp_save_CFLAGS $tmp_CFLAGS"
+ squeeze CPPFLAGS
+ squeeze CFLAGS
CURL_COMPILER_WORKS_IFELSE([
AC_MSG_RESULT([yes])
AC_MSG_NOTICE([compiler options added: $tmp_CFLAGS $tmp_CPPFLAGS])
AC_DEFUN([CURL_SET_COMPILER_DEBUG_OPTS], [
AC_REQUIRE([CURL_CHECK_OPTION_DEBUG])dnl
AC_REQUIRE([CURL_CHECK_COMPILER])dnl
+ AC_REQUIRE([CURL_SHFUNC_SQUEEZE])dnl
#
if test "$compiler_id" != "unknown"; then
#
tmp_options="$flags_dbg_off"
fi
#
- CPPFLAGS=`eval echo $tmp_CPPFLAGS`
- CFLAGS=`eval echo $tmp_CFLAGS $tmp_options`
+ if test "$flags_prefer_cppflags" = "yes"; then
+ CPPFLAGS="$tmp_CPPFLAGS $tmp_options"
+ CFLAGS="$tmp_CFLAGS"
+ else
+ CPPFLAGS="$tmp_CPPFLAGS"
+ CFLAGS="$tmp_CFLAGS $tmp_options"
+ fi
+ squeeze CPPFLAGS
+ squeeze CFLAGS
CURL_COMPILER_WORKS_IFELSE([
AC_MSG_RESULT([yes])
AC_MSG_NOTICE([compiler options added: $tmp_options])
AC_DEFUN([CURL_SET_COMPILER_OPTIMIZE_OPTS], [
AC_REQUIRE([CURL_CHECK_OPTION_OPTIMIZE])dnl
AC_REQUIRE([CURL_CHECK_COMPILER])dnl
+ AC_REQUIRE([CURL_SHFUNC_SQUEEZE])dnl
#
if test "$compiler_id" != "unknown"; then
#
AC_MSG_CHECKING([if compiler accepts optimizer disabling options])
tmp_options="$flags_opt_off"
fi
- CPPFLAGS=`eval echo $tmp_CPPFLAGS`
- CFLAGS=`eval echo $tmp_CFLAGS $tmp_options`
+ if test "$flags_prefer_cppflags" = "yes"; then
+ CPPFLAGS="$tmp_CPPFLAGS $tmp_options"
+ CFLAGS="$tmp_CFLAGS"
+ else
+ CPPFLAGS="$tmp_CPPFLAGS"
+ CFLAGS="$tmp_CFLAGS $tmp_options"
+ fi
+ squeeze CPPFLAGS
+ squeeze CFLAGS
CURL_COMPILER_WORKS_IFELSE([
AC_MSG_RESULT([yes])
AC_MSG_NOTICE([compiler options added: $tmp_options])
AC_DEFUN([CURL_SET_COMPILER_WARNING_OPTS], [
AC_REQUIRE([CURL_CHECK_OPTION_WARNINGS])dnl
AC_REQUIRE([CURL_CHECK_COMPILER])dnl
+ AC_REQUIRE([CURL_SHFUNC_SQUEEZE])dnl
#
if test "$compiler_id" != "unknown"; then
#
#
case "$compiler_id" in
#
- DECC)
+ CLANG)
+ #
+ if test "$want_warnings" = "yes"; then
+ tmp_CFLAGS="$tmp_CFLAGS -pedantic"
+ tmp_CFLAGS="$tmp_CFLAGS -Wall -Wextra"
+ tmp_CFLAGS="$tmp_CFLAGS -Wpointer-arith -Wwrite-strings"
+ tmp_CFLAGS="$tmp_CFLAGS -Wshadow"
+ tmp_CFLAGS="$tmp_CFLAGS -Winline -Wnested-externs"
+ tmp_CFLAGS="$tmp_CFLAGS -Wmissing-declarations"
+ tmp_CFLAGS="$tmp_CFLAGS -Wmissing-prototypes"
+ tmp_CFLAGS="$tmp_CFLAGS -Wno-long-long"
+ tmp_CFLAGS="$tmp_CFLAGS -Wfloat-equal"
+ tmp_CFLAGS="$tmp_CFLAGS -Wno-multichar -Wsign-compare"
+ tmp_CFLAGS="$tmp_CFLAGS -Wundef"
+ tmp_CFLAGS="$tmp_CFLAGS -Wno-format-nonliteral"
+ tmp_CFLAGS="$tmp_CFLAGS -Wendif-labels -Wstrict-prototypes"
+ tmp_CFLAGS="$tmp_CFLAGS -Wdeclaration-after-statement"
+ tmp_CFLAGS="$tmp_CFLAGS -Wcast-align"
+ tmp_CFLAGS="$tmp_CFLAGS -Wno-system-headers"
+ tmp_CFLAGS="$tmp_CFLAGS -Wshorten-64-to-32"
+ #
+ dnl Only clang 1.1 or later
+ if test "$compiler_num" -ge "101"; then
+ tmp_CFLAGS="$tmp_CFLAGS -Wunused"
+ fi
+ #
+ dnl Only clang 2.8 or later
+ if test "$compiler_num" -ge "208"; then
+ tmp_CFLAGS="$tmp_CFLAGS -Wvla"
+ fi
+ #
+ dnl Only clang 2.9 or later
+ if test "$compiler_num" -ge "209"; then
+ tmp_CFLAGS="$tmp_CFLAGS -Wshift-sign-overflow"
+ fi
+ #
+ dnl Only clang 3.2 or later
+ if test "$compiler_num" -ge "302"; then
+ case $host_os in
+ cygwin* | mingw*)
+ dnl skip missing-variable-declarations warnings for cygwin and
+ dnl mingw because the libtool wrapper executable causes them
+ ;;
+ *)
+ tmp_CFLAGS="$tmp_CFLAGS -Wmissing-variable-declarations"
+ ;;
+ esac
+ fi
+ #
+ dnl Only clang 3.6 or later
+ if test "$compiler_num" -ge "306"; then
+ tmp_CFLAGS="$tmp_CFLAGS -Wdouble-promotion"
+ fi
+ #
+ dnl Only clang 3.9 or later
+ if test "$compiler_num" -ge "309"; then
+ tmp_CFLAGS="$tmp_CFLAGS -Wcomma"
+ # avoid the varargs warning, fixed in 4.0
+ # https://bugs.llvm.org/show_bug.cgi?id=29140
+ if test "$compiler_num" -lt "400"; then
+ tmp_CFLAGS="$tmp_CFLAGS -Wno-varargs"
+ fi
+ fi
+ fi
+ ;;
+ #
+ DEC_C)
#
if test "$want_warnings" = "yes"; then
dnl Select a higher warning level than default level2
fi
;;
#
- GNUC)
+ GNU_C)
#
if test "$want_warnings" = "yes"; then
+ #
dnl Do not enable -pedantic when cross-compiling with a gcc older
dnl than 3.0, to avoid warnings from third party system headers.
if test "x$cross_compiling" != "xyes" ||
test "$compiler_num" -ge "300"; then
tmp_CFLAGS="$tmp_CFLAGS -pedantic"
fi
+ #
dnl Set of options we believe *ALL* gcc versions support:
- tmp_CFLAGS="$tmp_CFLAGS -Wall -W -Winline -Wnested-externs"
- tmp_CFLAGS="$tmp_CFLAGS -Wmissing-prototypes -Wpointer-arith"
- tmp_CFLAGS="$tmp_CFLAGS -Wwrite-strings"
- dnl -Wcast-align is a bit too annoying on all gcc versions ;-)
+ tmp_CFLAGS="$tmp_CFLAGS -Wall -W"
+ #
+ dnl Only gcc 1.4 or later
+ if test "$compiler_num" -ge "104"; then
+ tmp_CFLAGS="$tmp_CFLAGS -Wpointer-arith -Wwrite-strings"
+ dnl If not cross-compiling with a gcc older than 3.0
+ if test "x$cross_compiling" != "xyes" ||
+ test "$compiler_num" -ge "300"; then
+ tmp_CFLAGS="$tmp_CFLAGS -Wunused -Wshadow"
+ fi
+ fi
+ #
+ dnl Only gcc 2.7 or later
if test "$compiler_num" -ge "207"; then
- dnl gcc 2.7 or later
- tmp_CFLAGS="$tmp_CFLAGS -Wmissing-declarations"
+ tmp_CFLAGS="$tmp_CFLAGS -Winline -Wnested-externs"
+ dnl If not cross-compiling with a gcc older than 3.0
+ if test "x$cross_compiling" != "xyes" ||
+ test "$compiler_num" -ge "300"; then
+ tmp_CFLAGS="$tmp_CFLAGS -Wmissing-declarations"
+ tmp_CFLAGS="$tmp_CFLAGS -Wmissing-prototypes"
+ fi
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!
- tmp_CFLAGS="$tmp_CFLAGS -Wno-long-long -Wno-multichar -Wshadow"
- tmp_CFLAGS="$tmp_CFLAGS -Wsign-compare -Wundef"
+ #
+ dnl Only gcc 2.95 or later
+ if test "$compiler_num" -ge "295"; then
+ tmp_CFLAGS="$tmp_CFLAGS -Wno-long-long"
fi
+ #
+ dnl Only gcc 2.96 or later
if test "$compiler_num" -ge "296"; then
- dnl gcc 2.96 or later
tmp_CFLAGS="$tmp_CFLAGS -Wfloat-equal"
+ tmp_CFLAGS="$tmp_CFLAGS -Wno-multichar -Wsign-compare"
+ dnl -Wundef used only if gcc is 2.96 or later since we get
+ dnl lots of "`_POSIX_C_SOURCE' is not defined" in system
+ dnl headers with gcc 2.95.4 on FreeBSD 4.9
+ tmp_CFLAGS="$tmp_CFLAGS -Wundef"
fi
- if test "$compiler_num" -gt "296"; then
- dnl this option does not exist in 2.96
+ #
+ dnl Only gcc 2.97 or later
+ if test "$compiler_num" -ge "297"; then
tmp_CFLAGS="$tmp_CFLAGS -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.
+ #
+ dnl Only gcc 3.0 or later
+ if test "$compiler_num" -ge "300"; then
+ 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.
+ tmp_CFLAGS="$tmp_CFLAGS"
+ fi
+ #
+ dnl Only gcc 3.3 or later
if test "$compiler_num" -ge "303"; then
- dnl gcc 3.3 and later
tmp_CFLAGS="$tmp_CFLAGS -Wendif-labels -Wstrict-prototypes"
fi
+ #
+ dnl Only gcc 3.4 or later
if test "$compiler_num" -ge "304"; then
- dnl gcc 3.4 and later
tmp_CFLAGS="$tmp_CFLAGS -Wdeclaration-after-statement"
fi
+ #
+ dnl Only gcc 4.0 or later
+ if test "$compiler_num" -ge "400"; then
+ tmp_CFLAGS="$tmp_CFLAGS -Wstrict-aliasing=3"
+ fi
+ #
+ dnl Only gcc 4.2 or later
+ if test "$compiler_num" -ge "402"; then
+ tmp_CFLAGS="$tmp_CFLAGS -Wcast-align"
+ fi
+ #
+ dnl Only gcc 4.3 or later
+ if test "$compiler_num" -ge "403"; then
+ tmp_CFLAGS="$tmp_CFLAGS -Wtype-limits -Wold-style-declaration"
+ tmp_CFLAGS="$tmp_CFLAGS -Wmissing-parameter-type -Wempty-body"
+ tmp_CFLAGS="$tmp_CFLAGS -Wclobbered -Wignored-qualifiers"
+ tmp_CFLAGS="$tmp_CFLAGS -Wconversion -Wno-sign-conversion -Wvla"
+ fi
+ #
+ dnl Only gcc 4.5 or later
+ if test "$compiler_num" -ge "405"; then
+ dnl Only windows targets
+ if test "$curl_cv_have_def__WIN32" = "yes"; then
+ tmp_CFLAGS="$tmp_CFLAGS -Wno-pedantic-ms-format"
+ fi
+ fi
+ #
+ dnl Only gcc 4.6 or later
+ if test "$compiler_num" -ge "406"; then
+ tmp_CFLAGS="$tmp_CFLAGS -Wdouble-promotion"
+ fi
+ #
fi
#
dnl Do not issue warnings for code in system include paths.
if test "$compiler_num" -ge "300"; then
- dnl gcc 3.0 and later
tmp_CFLAGS="$tmp_CFLAGS -Wno-system-headers"
+ else
+ dnl When cross-compiling with a gcc older than 3.0, disable
+ dnl some warnings triggered on third party system headers.
+ if test "x$cross_compiling" = "xyes"; then
+ if test "$compiler_num" -ge "104"; then
+ dnl gcc 1.4 or later
+ tmp_CFLAGS="$tmp_CFLAGS -Wno-unused -Wno-shadow"
+ fi
+ if test "$compiler_num" -ge "207"; then
+ dnl gcc 2.7 or later
+ tmp_CFLAGS="$tmp_CFLAGS -Wno-missing-declarations"
+ tmp_CFLAGS="$tmp_CFLAGS -Wno-missing-prototypes"
+ fi
+ fi
fi
;;
#
- HPUXC)
+ HP_UX_C)
#
if test "$want_warnings" = "yes"; then
dnl Issue all warnings
- dnl tmp_CFLAGS="$tmp_CFLAGS +w1"
- dnl Due to the HP-UX socklen_t issue it is insane to use the +w1
- dnl warning level. Until the issue is somehow fixed we will just
- dnl use the +w2 warning level.
- tmp_CFLAGS="$tmp_CFLAGS +w2"
+ tmp_CFLAGS="$tmp_CFLAGS +w1"
fi
;;
#
- IBMC)
+ IBM_C)
#
dnl Placeholder
tmp_CFLAGS="$tmp_CFLAGS"
;;
#
- ICC_unix)
+ INTEL_UNIX_C)
#
if test "$want_warnings" = "yes"; then
if test "$compiler_num" -gt "600"; then
dnl Show errors, warnings, and remarks
- tmp_CPPFLAGS="$tmp_CPPFLAGS -Wall"
+ tmp_CPPFLAGS="$tmp_CPPFLAGS -Wall -w2"
dnl Perform extra compile-time code checking
tmp_CPPFLAGS="$tmp_CPPFLAGS -Wcheck"
+ dnl Warn on nested comments
+ tmp_CPPFLAGS="$tmp_CPPFLAGS -Wcomment"
+ dnl Show warnings relative to deprecated features
+ tmp_CPPFLAGS="$tmp_CPPFLAGS -Wdeprecated"
+ dnl Enable warnings for missing prototypes
+ tmp_CPPFLAGS="$tmp_CPPFLAGS -Wmissing-prototypes"
+ dnl Enable warnings for 64-bit portability issues
+ tmp_CPPFLAGS="$tmp_CPPFLAGS -Wp64"
+ dnl Enable warnings for questionable pointer arithmetic
+ tmp_CPPFLAGS="$tmp_CPPFLAGS -Wpointer-arith"
+ dnl Check for function return typw issues
+ tmp_CPPFLAGS="$tmp_CPPFLAGS -Wreturn-type"
+ dnl Warn on variable declarations hiding a previous one
+ tmp_CPPFLAGS="$tmp_CPPFLAGS -Wshadow"
+ dnl Warn when a variable is used before initialized
+ tmp_CPPFLAGS="$tmp_CPPFLAGS -Wuninitialized"
+ dnl Warn if a declared function is not used
+ tmp_CPPFLAGS="$tmp_CPPFLAGS -Wunused-function"
fi
fi
+ dnl Disable using EBP register in optimizations
+ tmp_CFLAGS="$tmp_CFLAGS -fno-omit-frame-pointer"
+ dnl Disable use of ANSI C aliasing rules in optimizations
+ tmp_CFLAGS="$tmp_CFLAGS -fno-strict-aliasing"
+ dnl Value-safe optimizations on floating-point data
+ tmp_CFLAGS="$tmp_CFLAGS -fp-model precise"
+ dnl Only icc 10.0 or later
+ if test "$compiler_num" -ge "1000"; then
+ dnl Disable vectorizer diagnostic information
+ tmp_CFLAGS="$tmp_CFLAGS -vec-report0"
+ fi
;;
#
- ICC_windows)
+ INTEL_WINDOWS_C)
#
dnl Placeholder
tmp_CFLAGS="$tmp_CFLAGS"
if test "$want_warnings" = "yes"; then
dnl Highest warning level is double -A, next is single -A.
dnl Due to the big number of warnings these trigger on third
- dnl party header files it is impratical for us to use any of
+ dnl party header files it is impractical for us to use any of
dnl them here. If you want them simply define it in CPPFLAGS.
tmp_CFLAGS="$tmp_CFLAGS"
fi
fi
;;
#
- SGI_MIPSpro_C)
+ SGI_MIPSPRO_C)
#
if test "$want_warnings" = "yes"; then
dnl Perform stricter semantic and lint-like checks
fi
;;
#
- SUNC)
+ SUNPRO_C)
#
if test "$want_warnings" = "yes"; then
dnl Perform stricter semantic and lint-like checks
fi
;;
#
- TINYC)
+ TINY_C)
#
if test "$want_warnings" = "yes"; then
dnl Activate all warnings
fi
;;
#
+ WATCOM_UNIX_C)
+ #
+ if test "$want_warnings" = "yes"; then
+ dnl Issue all warnings
+ tmp_CFLAGS="$tmp_CFLAGS -Wall -Wextra"
+ fi
+ ;;
+ #
+ WATCOM_WINDOWS_C)
+ #
+ dnl Placeholder
+ tmp_CFLAGS="$tmp_CFLAGS"
+ ;;
+ #
esac
#
- tmp_CPPFLAGS=`eval echo $tmp_CPPFLAGS`
- tmp_CFLAGS=`eval echo $tmp_CFLAGS`
+ squeeze tmp_CPPFLAGS
+ squeeze tmp_CFLAGS
#
if test ! -z "$tmp_CFLAGS" || test ! -z "$tmp_CPPFLAGS"; then
AC_MSG_CHECKING([if compiler accepts strict warning options])
- CPPFLAGS=`eval echo $tmp_save_CPPFLAGS $tmp_CPPFLAGS`
- CFLAGS=`eval echo $tmp_save_CFLAGS $tmp_CFLAGS`
+ CPPFLAGS="$tmp_save_CPPFLAGS $tmp_CPPFLAGS"
+ CFLAGS="$tmp_save_CFLAGS $tmp_CFLAGS"
+ squeeze CPPFLAGS
+ squeeze CFLAGS
CURL_COMPILER_WORKS_IFELSE([
AC_MSG_RESULT([yes])
AC_MSG_NOTICE([compiler options added: $tmp_CFLAGS $tmp_CPPFLAGS])
])
-dnl CURL_PROCESS_DEBUG_BUILD_OPTS
+dnl CURL_SHFUNC_SQUEEZE
dnl -------------------------------------------------
-dnl Settings which depend on configure's debug given
-dnl option, and further configure the build process.
-dnl Don't use this macro for compiler dependant stuff.
+dnl Declares a shell function squeeze() which removes
+dnl redundant whitespace out of a shell variable.
+
+AC_DEFUN([CURL_SHFUNC_SQUEEZE], [
+squeeze() {
+ _sqz_result=""
+ eval _sqz_input=\[$][$]1
+ for _sqz_token in $_sqz_input; do
+ if test -z "$_sqz_result"; then
+ _sqz_result="$_sqz_token"
+ else
+ _sqz_result="$_sqz_result $_sqz_token"
+ fi
+ done
+ eval [$]1=\$_sqz_result
+ return 0
+}
+])
-AC_DEFUN([CURL_PROCESS_DEBUG_BUILD_OPTS], [
- AC_REQUIRE([CURL_CHECK_OPTION_DEBUG])dnl
- AC_BEFORE([$0],[AC_PROG_LIBTOOL])dnl
+
+dnl CURL_CHECK_CURLDEBUG
+dnl -------------------------------------------------
+dnl Settings which depend on configure's curldebug given
+dnl option, and other additional configure pre-requisites.
+dnl Actually the curl debug memory tracking feature can
+dnl only be used/enabled when libcurl is built as a static
+dnl library or as a shared one on those systems on which
+dnl shared libraries support undefined symbols.
+
+AC_DEFUN([CURL_CHECK_CURLDEBUG], [
+ AC_REQUIRE([XC_LIBTOOL])dnl
+ AC_REQUIRE([CURL_SHFUNC_SQUEEZE])dnl
+ supports_curldebug="unknown"
+ if test "$want_curldebug" = "yes"; then
+ if test "x$enable_shared" != "xno" &&
+ test "x$enable_shared" != "xyes"; then
+ AC_MSG_WARN([unknown enable_shared setting.])
+ supports_curldebug="no"
+ fi
+ if test "x$enable_static" != "xno" &&
+ test "x$enable_static" != "xyes"; then
+ AC_MSG_WARN([unknown enable_static setting.])
+ supports_curldebug="no"
+ fi
+ if test "$supports_curldebug" != "no"; then
+ if test "$enable_shared" = "yes" &&
+ test "x$xc_lt_shlib_use_no_undefined" = 'xyes'; then
+ supports_curldebug="no"
+ AC_MSG_WARN([shared library does not support undefined symbols.])
+ fi
+ fi
+ fi
#
- if test "$want_debug" = "yes"; then
- CPPFLAGS="$CPPFLAGS -DCURLDEBUG"
+ if test "$want_curldebug" = "yes"; then
+ AC_MSG_CHECKING([if curl debug memory tracking can be enabled])
+ test "$supports_curldebug" = "no" || supports_curldebug="yes"
+ AC_MSG_RESULT([$supports_curldebug])
+ if test "$supports_curldebug" = "no"; then
+ AC_MSG_WARN([cannot enable curl debug memory tracking.])
+ want_curldebug="no"
+ fi
fi
#
+ if test "$want_curldebug" = "yes"; then
+ CPPFLAGS="-DCURLDEBUG $CPPFLAGS"
+ squeeze CPPFLAGS
+ fi
+ if test "$want_debug" = "yes"; then
+ CPPFLAGS="-DDEBUGBUILD $CPPFLAGS"
+ squeeze CPPFLAGS
+ fi
+])
+
+
+
+dnl CURL_CHECK_COMPILER_HALT_ON_ERROR
+dnl -------------------------------------------------
+dnl Verifies if the compiler actually halts after the
+dnl compilation phase without generating any object
+dnl code file, when the source compiles with errors.
+
+AC_DEFUN([CURL_CHECK_COMPILER_HALT_ON_ERROR], [
+ AC_MSG_CHECKING([if compiler halts on compilation errors])
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+ ]],[[
+ force compilation error
+ ]])
+ ],[
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([compiler does not halt on compilation errors.])
+ ],[
+ AC_MSG_RESULT([yes])
+ ])
+])
+
+
+dnl CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE
+dnl -------------------------------------------------
+dnl Verifies if the compiler actually halts after the
+dnl compilation phase without generating any object
+dnl code file, when the source code tries to define a
+dnl type for a constant array with negative dimension.
+
+AC_DEFUN([CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE], [
+ AC_REQUIRE([CURL_CHECK_COMPILER_HALT_ON_ERROR])dnl
+ AC_MSG_CHECKING([if compiler halts on negative sized arrays])
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+ typedef char bad_t[sizeof(char) == sizeof(int) ? -1 : -1 ];
+ ]],[[
+ bad_t dummy;
+ ]])
+ ],[
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([compiler does not halt on negative sized arrays.])
+ ],[
+ AC_MSG_RESULT([yes])
+ ])
+])
+
+
+dnl CURL_CHECK_COMPILER_STRUCT_MEMBER_SIZE
+dnl -------------------------------------------------
+dnl Verifies if the compiler is capable of handling the
+dnl size of a struct member, struct which is a function
+dnl result, as a compilation-time condition inside the
+dnl type definition of a constant array.
+
+AC_DEFUN([CURL_CHECK_COMPILER_STRUCT_MEMBER_SIZE], [
+ AC_REQUIRE([CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE])dnl
+ AC_MSG_CHECKING([if compiler struct member size checking works])
+ tst_compiler_check_one_works="unknown"
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+ struct mystruct {
+ int mi;
+ char mc;
+ struct mystruct *next;
+ };
+ struct mystruct myfunc();
+ typedef char good_t1[sizeof(myfunc().mi) == sizeof(int) ? 1 : -1 ];
+ typedef char good_t2[sizeof(myfunc().mc) == sizeof(char) ? 1 : -1 ];
+ ]],[[
+ good_t1 dummy1;
+ good_t2 dummy2;
+ ]])
+ ],[
+ tst_compiler_check_one_works="yes"
+ ],[
+ tst_compiler_check_one_works="no"
+ sed 's/^/cc-src: /' conftest.$ac_ext >&6
+ sed 's/^/cc-err: /' conftest.err >&6
+ ])
+ tst_compiler_check_two_works="unknown"
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+ struct mystruct {
+ int mi;
+ char mc;
+ struct mystruct *next;
+ };
+ struct mystruct myfunc();
+ typedef char bad_t1[sizeof(myfunc().mi) != sizeof(int) ? 1 : -1 ];
+ typedef char bad_t2[sizeof(myfunc().mc) != sizeof(char) ? 1 : -1 ];
+ ]],[[
+ bad_t1 dummy1;
+ bad_t2 dummy2;
+ ]])
+ ],[
+ tst_compiler_check_two_works="no"
+ ],[
+ tst_compiler_check_two_works="yes"
+ ])
+ if test "$tst_compiler_check_one_works" = "yes" &&
+ test "$tst_compiler_check_two_works" = "yes"; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([compiler fails struct member size checking.])
+ fi
+])
+
+
+dnl CURL_CHECK_COMPILER_SYMBOL_HIDING
+dnl -------------------------------------------------
+dnl Verify if compiler supports hiding library internal symbols, setting
+dnl shell variable supports_symbol_hiding value as appropriate, as well as
+dnl variables symbol_hiding_CFLAGS and symbol_hiding_EXTERN when supported.
+
+AC_DEFUN([CURL_CHECK_COMPILER_SYMBOL_HIDING], [
+ AC_REQUIRE([CURL_CHECK_COMPILER])dnl
+ AC_BEFORE([$0],[CURL_CONFIGURE_SYMBOL_HIDING])dnl
+ AC_MSG_CHECKING([if compiler supports hiding library internal symbols])
+ supports_symbol_hiding="no"
+ symbol_hiding_CFLAGS=""
+ symbol_hiding_EXTERN=""
+ tmp_CFLAGS=""
+ tmp_EXTERN=""
+ case "$compiler_id" in
+ CLANG)
+ dnl All versions of clang support -fvisibility=
+ tmp_EXTERN="__attribute__ ((__visibility__ (\"default\")))"
+ tmp_CFLAGS="-fvisibility=hidden"
+ supports_symbol_hiding="yes"
+ ;;
+ GNU_C)
+ dnl Only gcc 3.4 or later
+ if test "$compiler_num" -ge "304"; then
+ if $CC --help --verbose 2>/dev/null | grep fvisibility= >/dev/null ; then
+ tmp_EXTERN="__attribute__ ((__visibility__ (\"default\")))"
+ tmp_CFLAGS="-fvisibility=hidden"
+ supports_symbol_hiding="yes"
+ fi
+ fi
+ ;;
+ INTEL_UNIX_C)
+ dnl Only icc 9.0 or later
+ if test "$compiler_num" -ge "900"; then
+ if $CC --help --verbose 2>&1 | grep fvisibility= > /dev/null ; then
+ tmp_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -fvisibility=hidden"
+ AC_LINK_IFELSE([
+ AC_LANG_PROGRAM([[
+# include <stdio.h>
+ ]],[[
+ printf("icc fvisibility bug test");
+ ]])
+ ],[
+ tmp_EXTERN="__attribute__ ((__visibility__ (\"default\")))"
+ tmp_CFLAGS="-fvisibility=hidden"
+ supports_symbol_hiding="yes"
+ ])
+ CFLAGS="$tmp_save_CFLAGS"
+ fi
+ fi
+ ;;
+ SUNPRO_C)
+ if $CC 2>&1 | grep flags >/dev/null && $CC -flags | grep xldscope= >/dev/null ; then
+ tmp_EXTERN="__global"
+ tmp_CFLAGS="-xldscope=hidden"
+ supports_symbol_hiding="yes"
+ fi
+ ;;
+ esac
+ if test "$supports_symbol_hiding" = "yes"; then
+ tmp_save_CFLAGS="$CFLAGS"
+ CFLAGS="$tmp_save_CFLAGS $tmp_CFLAGS"
+ squeeze CFLAGS
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+ $tmp_EXTERN char *dummy(char *buff);
+ char *dummy(char *buff)
+ {
+ if(buff)
+ return ++buff;
+ else
+ return buff;
+ }
+ ]],[[
+ char b[16];
+ char *r = dummy(&b[0]);
+ if(r)
+ return (int)*r;
+ ]])
+ ],[
+ supports_symbol_hiding="yes"
+ if test -f conftest.err; then
+ grep 'visibility' conftest.err >/dev/null
+ if test "$?" -eq "0"; then
+ supports_symbol_hiding="no"
+ fi
+ fi
+ ],[
+ supports_symbol_hiding="no"
+ echo " " >&6
+ sed 's/^/cc-src: /' conftest.$ac_ext >&6
+ sed 's/^/cc-err: /' conftest.err >&6
+ echo " " >&6
+ ])
+ CFLAGS="$tmp_save_CFLAGS"
+ fi
+ if test "$supports_symbol_hiding" = "yes"; then
+ AC_MSG_RESULT([yes])
+ symbol_hiding_CFLAGS="$tmp_CFLAGS"
+ symbol_hiding_EXTERN="$tmp_EXTERN"
+ else
+ AC_MSG_RESULT([no])
+ fi
])
-dnl CURL_CHECK_PROG_CC
+dnl CURL_CHECK_COMPILER_PROTOTYPE_MISMATCH
dnl -------------------------------------------------
-dnl Check for compiler program, preventing CFLAGS and
-dnl CPPFLAGS from being unexpectedly changed.
-
-AC_DEFUN([CURL_CHECK_PROG_CC], [
- ac_save_CFLAGS="$CFLAGS"
- ac_save_CPPFLAGS="$CPPFLAGS"
- AC_PROG_CC
- CFLAGS="$ac_save_CFLAGS"
- CPPFLAGS="$ac_save_CPPFLAGS"
+dnl Verifies if the compiler actually halts after the
+dnl compilation phase without generating any object
+dnl code file, when the source code tries to redefine
+dnl a prototype which does not match previous one.
+
+AC_DEFUN([CURL_CHECK_COMPILER_PROTOTYPE_MISMATCH], [
+ AC_REQUIRE([CURL_CHECK_COMPILER_HALT_ON_ERROR])dnl
+ AC_MSG_CHECKING([if compiler halts on function prototype mismatch])
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+# include <stdlib.h>
+ int rand(int n);
+ int rand(int n)
+ {
+ if(n)
+ return ++n;
+ else
+ return n;
+ }
+ ]],[[
+ int i[2]={0,0};
+ int j = rand(i[0]);
+ if(j)
+ return j;
+ ]])
+ ],[
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([compiler does not halt on function prototype mismatch.])
+ ],[
+ AC_MSG_RESULT([yes])
+ ])
])
dnl from VALUE is removed from VARNAME when present.
AC_DEFUN([CURL_VAR_STRIP], [
+ AC_REQUIRE([CURL_SHFUNC_SQUEEZE])dnl
ac_var_stripped=""
for word1 in $[$1]; do
ac_var_strip_word="no"
fi
done
dnl squeeze whitespace out of result
- [$1]=`eval echo $ac_var_stripped`
+ [$1]="$ac_var_stripped"
+ squeeze [$1]
])
+