Enable --enable-hidden-symbols for SunPro C
This commit is contained in:
Родитель
fe22872d14
Коммит
10489879f7
21
configure.ac
21
configure.ac
|
@ -1962,29 +1962,42 @@ AC_HELP_STRING([--disable-cookies],[Disable cookies support]),
|
||||||
dnl ************************************************************
|
dnl ************************************************************
|
||||||
dnl Enable hiding of internal symbols in library to reduce its size and
|
dnl Enable hiding of internal symbols in library to reduce its size and
|
||||||
dnl speed dynamic linking of applications. This currently is only supported
|
dnl speed dynamic linking of applications. This currently is only supported
|
||||||
dnl on gcc >= 4.0
|
dnl on gcc >= 4.0 and SunPro C.
|
||||||
dnl
|
dnl
|
||||||
AC_MSG_CHECKING([whether to enable hidden symbols in the library])
|
AC_MSG_CHECKING([whether to enable hidden symbols in the library])
|
||||||
AC_ARG_ENABLE(hidden-symbols,
|
AC_ARG_ENABLE(hidden-symbols,
|
||||||
AC_HELP_STRING([--enable-hidden-symbols],[Hide internal symbols in library (gcc>=4)])
|
AC_HELP_STRING([--enable-hidden-symbols],[Hide internal symbols in library])
|
||||||
AC_HELP_STRING([--disable-hidden-symbols],[Leave all symbols with default visibility in library]),
|
AC_HELP_STRING([--disable-hidden-symbols],[Leave all symbols with default visibility in library]),
|
||||||
[ case "$enableval" in
|
[ case "$enableval" in
|
||||||
no)
|
no)
|
||||||
AC_MSG_RESULT(no)
|
AC_MSG_RESULT(no)
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
if test "$GCC" = yes ; then
|
|
||||||
AC_MSG_CHECKING([whether $CC supports it])
|
AC_MSG_CHECKING([whether $CC supports it])
|
||||||
|
if test "$GCC" = yes ; then
|
||||||
if $CC --help --verbose 2>&1 | grep fvisibility= > /dev/null ; then
|
if $CC --help --verbose 2>&1 | grep fvisibility= > /dev/null ; then
|
||||||
AC_MSG_RESULT(yes)
|
AC_MSG_RESULT(yes)
|
||||||
AC_DEFINE(CURL_HIDDEN_SYMBOLS, 1, [to enable hidden symbols])
|
AC_DEFINE(CURL_HIDDEN_SYMBOLS, 1, [to enable hidden symbols])
|
||||||
AC_SUBST(CURL_HIDDEN_SYMBOLS)
|
AC_SUBST(CURL_HIDDEN_SYMBOLS)
|
||||||
|
AC_DEFINE(CURL_EXTERN_SYMBOL, [__attribute__ ((visibility ("default")))], [to make a symbol visible])
|
||||||
|
AC_SUBST(CURL_EXTERN_SYMBOL)
|
||||||
CFLAGS="$CFLAGS -fvisibility=hidden"
|
CFLAGS="$CFLAGS -fvisibility=hidden"
|
||||||
else
|
else
|
||||||
AC_MSG_RESULT(no)
|
AC_MSG_RESULT(no)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
else
|
else
|
||||||
AC_MSG_RESULT([no (not gcc)])
|
dnl Test for SunPro cc
|
||||||
|
if $CC 2>&1 | grep flags >/dev/null && $CC -flags | grep xldscope= >/dev/null ; then
|
||||||
|
AC_MSG_RESULT(yes)
|
||||||
|
AC_DEFINE(CURL_HIDDEN_SYMBOLS, 1, [to enable hidden symbols])
|
||||||
|
AC_SUBST(CURL_HIDDEN_SYMBOLS)
|
||||||
|
AC_DEFINE(CURL_EXTERN_SYMBOL, [__global], [to make a symbol visible])
|
||||||
|
AC_SUBST(CURL_EXTERN_SYMBOL)
|
||||||
|
CFLAGS="$CFLAGS -xldscope=hidden"
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT(no)
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac ],
|
esac ],
|
||||||
|
|
|
@ -61,11 +61,12 @@ extern "C" {
|
||||||
|
|
||||||
#ifdef CURL_HIDDEN_SYMBOLS
|
#ifdef CURL_HIDDEN_SYMBOLS
|
||||||
/*
|
/*
|
||||||
* On gcc >= 4 if -fvisibility=hidden is given then this is used to cause
|
* This definition is used to make external definitions visibile in the
|
||||||
* external definitions to be put into the shared library. It makes no
|
* shared library when symbols are hidden by default. It makes no
|
||||||
* difference to applications whether this is set or not, only the library.
|
* difference when compiling applications whether this is set or not,
|
||||||
|
* only when compiling the library.
|
||||||
*/
|
*/
|
||||||
#define CURL_EXTERN __attribute__ ((visibility ("default")))
|
#define CURL_EXTERN CURL_EXTERN_SYMBOL
|
||||||
#else
|
#else
|
||||||
#define CURL_EXTERN
|
#define CURL_EXTERN
|
||||||
#endif
|
#endif
|
||||||
|
|
Загрузка…
Ссылка в новой задаче