diff --git a/CHANGELOG b/CHANGELOG index caf7b08..dbe6f29 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 6bf9803..4e9a4f2 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 84b84a0..9ea5220 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