changed : dll : only approved ZSTD symbols are now exposed. All other symbols remain internal.
diff --git a/lib/Makefile b/lib/Makefile
index bf1088d..44c64b8 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -70,7 +70,7 @@
@$(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 4956aaa..8296dc6 100644
--- a/lib/deprecated/zbuff.h
+++ b/lib/deprecated/zbuff.h
@@ -27,20 +27,12 @@
* Dependencies
***************************************/
#include <stddef.h> /* size_t */
-#include <zstd.h> /* ZSTD_CStream, ZSTD_DStream */
+#include <zstd.h> /* 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 @@
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 3989cc3..b696d64 100644
--- a/lib/zstd.h
+++ b/lib/zstd.h
@@ -18,12 +18,10 @@
#include <stddef.h> /* 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.*/