From c9584096e033850c77c4c3d4ee99e8073f7b26da Mon Sep 17 00:00:00 2001 From: Martin Lucina Date: Thu, 25 Nov 2010 17:12:31 +0100 Subject: Control symbol exports using -fvisibility On systems using GCC 4.0 or newer which support symbol visibility in shared libraries, use -fvisibility=hidden and only export explict API functions defined in zmq.cpp. We do not enable -fvisibility on MinGW since this uses a separate mechanism (__declspec). Signed-off-by: Martin Lucina --- src/Makefile.am | 3 +-- src/zmq.cpp | 8 ++++++++ 2 files changed, 9 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/Makefile.am b/src/Makefile.am index 761d8e8..a857ee7 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -203,7 +203,6 @@ libpgm_diff_flags = \ -DCONFIG_HAVE_ISO_VARARGS \ -DCONFIG_HAVE_TSC \ -DCONFIG_HAVE_WSACMSGHDR \ - -DCONFIG_HAVE_DSO_VISIBILITY \ -DCONFIG_BIND_INADDR_ANY else @@ -225,7 +224,6 @@ libpgm_diff_flags = \ -DCONFIG_HAVE_IP_MREQN \ -DCONFIG_HAVE_SPRINTF_GROUPING \ -DCONFIG_HAVE_VASPRINTF \ - -DCONFIG_HAVE_DSO_VISIBILITY \ -DCONFIG_BIND_INADDR_ANY \ -DCONFIG_HAVE_GETOPT endif @@ -237,6 +235,7 @@ libpgm_la_CFLAGS = -I$(top_srcdir)/foreign/openpgm/@pgm_basename@/openpgm/pgm/in -DCONFIG_16BIT_CHECKSUM \ -DCONFIG_GALOIS_MUL_LUT \ -DGETTEXT_PACKAGE='"pgm"' \ + -DPGM_GNUC_INTERNAL= \ ${libpgm_diff_flags} libzmq_la_CXXFLAGS = -I$(top_srcdir)/foreign/openpgm/@pgm_basename@/openpgm/pgm/include/ \ diff --git a/src/zmq.cpp b/src/zmq.cpp index 62e50cd..6a1d396 100644 --- a/src/zmq.cpp +++ b/src/zmq.cpp @@ -60,6 +60,10 @@ #include #endif +#if defined __GNUC__ && __GNUC__ >= 4 && !defined ZMQ_HAVE_WINDOWS +#pragma GCC visibility push(default) +#endif + void zmq_version (int *major_, int *minor_, int *patch_) { *major_ = ZMQ_VERSION_MAJOR; @@ -725,3 +729,7 @@ unsigned long zmq_stopwatch_stop (void *watch_) return (unsigned long) (end - start); } +#if defined __GNUC__ && __GNUC__ >= 4 && !defined ZMQ_HAVE_WINDOWS +#pragma GCC visibility pop +#endif + -- cgit v1.2.3