[trunk] use hidden visibility for static library (fixes issue 354)

This commit is contained in:
Matthieu Darbois 2015-01-25 16:59:39 +00:00
parent 7a8cdc4bb0
commit 3ed5858902

View File

@ -78,16 +78,20 @@ Most compilers implement their own version of this keyword ...
#if defined(OPJ_STATIC) || !defined(_WIN32) #if defined(OPJ_STATIC) || !defined(_WIN32)
/* http://gcc.gnu.org/wiki/Visibility */ /* http://gcc.gnu.org/wiki/Visibility */
#if __GNUC__ >= 4 # if __GNUC__ >= 4
#define OPJ_API __attribute__ ((visibility ("default"))) # if defined(OPJ_STATIC) /* static library uses "hidden" */
#define OPJ_LOCAL __attribute__ ((visibility ("hidden"))) # define OPJ_API __attribute__ ((visibility ("hidden")))
# else
# define OPJ_API __attribute__ ((visibility ("default")))
# endif
# define OPJ_LOCAL __attribute__ ((visibility ("hidden")))
# else
# define OPJ_API
# define OPJ_LOCAL
# endif
# define OPJ_CALLCONV
#else #else
#define OPJ_API # define OPJ_CALLCONV __stdcall
#define OPJ_LOCAL
#endif
#define OPJ_CALLCONV
#else
#define OPJ_CALLCONV __stdcall
/* /*
The following ifdef block is the standard way of creating macros which make exporting The following ifdef block is the standard way of creating macros which make exporting
from a DLL simpler. All files within this DLL are compiled with the OPJ_EXPORTS from a DLL simpler. All files within this DLL are compiled with the OPJ_EXPORTS
@ -96,11 +100,11 @@ that uses this DLL. This way any other project whose source files include this f
OPJ_API functions as being imported from a DLL, wheras this DLL sees symbols OPJ_API functions as being imported from a DLL, wheras this DLL sees symbols
defined with this macro as being exported. defined with this macro as being exported.
*/ */
#if defined(OPJ_EXPORTS) || defined(DLL_EXPORT) # if defined(OPJ_EXPORTS) || defined(DLL_EXPORT)
#define OPJ_API __declspec(dllexport) # define OPJ_API __declspec(dllexport)
#else # else
#define OPJ_API __declspec(dllimport) # define OPJ_API __declspec(dllimport)
#endif /* OPJ_EXPORTS */ # endif /* OPJ_EXPORTS */
#endif /* !OPJ_STATIC || !_WIN32 */ #endif /* !OPJ_STATIC || !_WIN32 */
typedef int OPJ_BOOL; typedef int OPJ_BOOL;