build adjustments: CURL_HIDDEN_SYMBOLS no longer defined in config files
configure script now provides conditional definitions for Makefile.am that result in CURL_HIDDEN_SYMBOLS being defined by resulting makefiles when appropriate. Additionally, configure script option for symbol hiding control is now named --enable-symbol-hiding --disable-symbol-hiding. While still valid, old option name --enable-hidden-symbols --disable-hidden-symbols will be deprecated in some future release.
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
# Copyright (C) 1998 - 2012, 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
|
||||
@@ -21,7 +21,7 @@
|
||||
#***************************************************************************
|
||||
|
||||
# File version for 'aclocal' use. Keep it a single number.
|
||||
# serial 58
|
||||
# serial 59
|
||||
|
||||
|
||||
dnl CURL_CHECK_COMPILER
|
||||
@@ -1375,6 +1375,114 @@ AC_DEFUN([CURL_CHECK_COMPILER_STRUCT_MEMBER_SIZE], [
|
||||
])
|
||||
|
||||
|
||||
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>&1 | 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_VAR_MATCH (VARNAME, VALUE)
|
||||
dnl -------------------------------------------------
|
||||
dnl Verifies if shell variable VARNAME contains VALUE.
|
||||
|
Reference in New Issue
Block a user