From 5d26eca4a4622c9dc573db92b5ba38d016412cc1 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Thu, 23 Mar 2006 06:49:01 +0000 Subject: [PATCH] Added -fvisibility=hidden support, for builds by gcc4 and later. All the sordid reasons for this are laid out here: http://gcc.gnu.org/wiki/Visibility --- CHANGELOG | 1 + configure.in | 28 +++++++++++++++++++++++++--- physfs.h | 2 ++ 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index caf7b080..dbe6f299 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,7 @@ * CHANGELOG. */ +03232006 - Added -fvisibility for gcc4 (http://gcc.gnu.org/wiki/Visibility) 01012006 - Cleaned up overflow checks in platform memory allocators (thanks to Nicolas Lebedenco for pointing out the original issue with long long literals). Added physfs.rc (thanks, Dennis!). Changed my diff --git a/configure.in b/configure.in index 6bf98038..4e9a4f26 100644 --- a/configure.in +++ b/configure.in @@ -68,19 +68,41 @@ AC_ARG_ENABLE(debug, , enable_debug=no) if test x$enable_debug = xyes; then if test x$ac_cv_prog_cc_g = xyes; then - PHYSFSCFLAGS="-g -O0" + PHYSFSCFLAGS="$PHYSFSCFLAGS -g -O0" else - PHYSFSCFLAGS="-O0" + PHYSFSCFLAGS="$PHYSFSCFLAGS -O0" fi PHYSFSCFLAGS="$PHYSFSCFLAGS -Werror -Wall" AC_DEFINE([DEBUG], 1, [define if debug build is enabled]) AC_DEFINE([DEBUG_CHATTER], 1, [define if debug chatter is enabled]) else - PHYSFSCFLAGS="-O2" + PHYSFSCFLAGS="$PHYSFSCFLAGS -O2" AC_DEFINE([NDEBUG], 1, [define if debug build is disabled]) fi +dnl --------------------------------------------------------------------- +dnl Have GCC's -fvisibility option? +dnl --------------------------------------------------------------------- +AC_MSG_CHECKING(for GCC -fvisibility=hidden option) +have_gcc_fvisibility=no +visibility_CFLAGS="-fvisibility=hidden" +save_CFLAGS="$CFLAGS" +CFLAGS="$save_CFLAGS $visibility_CFLAGS" +AC_TRY_COMPILE([ +int placeholder = 1; +],[ +],[ +have_gcc_fvisibility=yes +]) +AC_MSG_RESULT($have_gcc_fvisibility) +CFLAGS="$save_CFLAGS" + +if test x$have_gcc_fvisibility = xyes; then + PHYSFSCFLAGS="$PHYSFSCFLAGS $visibility_CFLAGS" +fi + + dnl --------------------------------------------------------------------- dnl Profile sorts, etc? dnl --------------------------------------------------------------------- diff --git a/physfs.h b/physfs.h index 84b84a0f..9ea52207 100644 --- a/physfs.h +++ b/physfs.h @@ -166,6 +166,8 @@ extern "C" { #ifndef DOXYGEN_SHOULD_IGNORE_THIS #if (defined _MSC_VER) #define __EXPORT__ __declspec(dllexport) +#elif (defined __GNUC__) +#define __EXPORT__ __attribute__((visibility("default"))) #else #define __EXPORT__ #endif