diff --git a/lib/Makefile b/lib/Makefile index bf1088d68..44c64b8ed 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -70,7 +70,7 @@ libzstd.a: $(ZSTD_FILES) @$(CC) $(FLAGS) -c $^ @$(AR) $(ARFLAGS) $@ *.o -$(LIBZSTD): LDFLAGS += -shared -fPIC +$(LIBZSTD): LDFLAGS += -shared -fPIC -fvisibility=hidden $(LIBZSTD): $(ZSTD_FILES) @echo compiling dynamic library $(LIBVER) ifneq (,$(filter Windows%,$(OS))) diff --git a/lib/deprecated/zbuff.h b/lib/deprecated/zbuff.h index 4956aaaa4..8296dc64a 100644 --- a/lib/deprecated/zbuff.h +++ b/lib/deprecated/zbuff.h @@ -27,20 +27,12 @@ extern "C" { * Dependencies ***************************************/ #include /* size_t */ -#include /* ZSTD_CStream, ZSTD_DStream */ +#include /* ZSTD_CStream, ZSTD_DStream, ZSTDLIB_API */ /* *************************************************************** * Compiler specifics *****************************************************************/ -/* ZSTD_DLL_EXPORT : -* Enable exporting of functions when building a Windows DLL */ -#if defined(_WIN32) && defined(ZSTD_DLL_EXPORT) && (ZSTD_DLL_EXPORT==1) -# define ZSTDLIB_API __declspec(dllexport) -#else -# define ZSTDLIB_API -#endif - /* Deprecation warnings */ /* Should these warnings be a problem, it is generally possible to disable them, @@ -48,17 +40,17 @@ extern "C" { or _CRT_SECURE_NO_WARNINGS in Visual. Otherwise, it's also possible to define ZBUFF_DISABLE_DEPRECATE_WARNINGS */ #ifdef ZBUFF_DISABLE_DEPRECATE_WARNINGS -# define ZBUFF_DEPRECATED(message) /* disable deprecation warnings */ +# define ZBUFF_DEPRECATED(message) ZSTDLIB_API /* disable deprecation warnings */ #else # if (defined(__GNUC__) && (__GNUC__ >= 5)) || defined(__clang__) -# define ZBUFF_DEPRECATED(message) __attribute__((deprecated(message))) +# define ZBUFF_DEPRECATED(message) ZSTDLIB_API __attribute__((deprecated(message))) # elif defined(__GNUC__) && (__GNUC__ >= 3) -# define ZBUFF_DEPRECATED(message) __attribute__((deprecated)) +# define ZBUFF_DEPRECATED(message) ZSTDLIB_API __attribute__((deprecated)) # elif defined(_MSC_VER) -# define ZBUFF_DEPRECATED(message) __declspec(deprecated(message)) +# define ZBUFF_DEPRECATED(message) ZSTDLIB_API __declspec(deprecated(message)) # else # pragma message("WARNING: You need to implement ZBUFF_DEPRECATED for this compiler") -# define ZBUFF_DEPRECATED(message) +# define ZBUFF_DEPRECATED(message) ZSTDLIB_API # endif #endif /* ZBUFF_DISABLE_DEPRECATE_WARNINGS */ diff --git a/lib/zstd.h b/lib/zstd.h index 3989cc307..b696d643c 100644 --- a/lib/zstd.h +++ b/lib/zstd.h @@ -18,12 +18,10 @@ extern "C" { #include /* size_t */ -/* ====== Export for Windows ======*/ -/* -* ZSTD_DLL_EXPORT : -* Enable exporting of functions when building a Windows DLL -*/ -#if defined(ZSTD_DLL_EXPORT) && (ZSTD_DLL_EXPORT==1) +/* ===== ZSTDLIB_API : control library symbols visibility ===== */ +#if defined(__GNUC__) && (__GNUC__ >= 4) +# define ZSTDLIB_API __attribute__ ((visibility ("default"))) +#elif defined(ZSTD_DLL_EXPORT) && (ZSTD_DLL_EXPORT==1) # define ZSTDLIB_API __declspec(dllexport) #elif defined(ZSTD_DLL_IMPORT) && (ZSTD_DLL_IMPORT==1) # define ZSTDLIB_API __declspec(dllimport) /* It isn't required but allows to generate better code, saving a function pointer load from the IAT and an indirect jump.*/