Commit 10489879 authored by Dan Fandrich's avatar Dan Fandrich
Browse files

Enable --enable-hidden-symbols for SunPro C

parent fe22872d
Loading
Loading
Loading
Loading
+17 −4
Original line number Diff line number Diff line
@@ -1962,29 +1962,42 @@ AC_HELP_STRING([--disable-cookies],[Disable cookies support]),
dnl ************************************************************
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 on gcc >= 4.0
dnl on gcc >= 4.0 and SunPro C.
dnl
AC_MSG_CHECKING([whether to enable hidden symbols in the library])
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]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       ;;
  *)   
       if test "$GCC" = yes ; then
       AC_MSG_CHECKING([whether $CC supports it])
       if test "$GCC" = yes ; then
         if $CC --help --verbose 2>&1 | grep fvisibility= > /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, [__attribute__ ((visibility ("default")))], [to make a symbol visible])
	   AC_SUBST(CURL_EXTERN_SYMBOL)
	   CFLAGS="$CFLAGS -fvisibility=hidden"
         else
            AC_MSG_RESULT(no)
          fi

       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
       ;;
  esac ],
+5 −4
Original line number Diff line number Diff line
@@ -61,11 +61,12 @@ extern "C" {

#ifdef CURL_HIDDEN_SYMBOLS
/*
 * On gcc >= 4 if -fvisibility=hidden is given then this is used to cause
 * external definitions to be put into the shared library.  It makes no
 * difference to applications whether this is set or not, only the library.
 * This definition is used to make external definitions visibile in the 
 * shared library when symbols are hidden by default.  It makes no
 * 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
#define CURL_EXTERN 
#endif