mirror of
https://github.com/zeromq/libzmq.git
synced 2025-01-06 00:31:13 +01:00
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 <mato@kotelna.sk>
This commit is contained in:
parent
734624be76
commit
c9584096e0
12
configure.in
12
configure.in
@ -223,6 +223,18 @@ case "${host_os}" in
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
# Check if the compiler supports -fvisibility=hidden. If so, use it, but not
|
||||||
|
# on MinGW32 where we use a separate mechanism (__declspec).
|
||||||
|
_LT_COMPILER_OPTION([if $compiler supports -fvisibility=hidden],
|
||||||
|
ac_cv_prog_compiler_visibility,
|
||||||
|
[-fvisibility=hidden],
|
||||||
|
[],
|
||||||
|
[have_dso_visibility=yes])
|
||||||
|
if test "x$have_dso_visibility" = "xyes" -a "x$on_mingw32" = "xno"; then
|
||||||
|
LIBZMQ_EXTRA_CFLAGS="-fvisibility=hidden $LIBZMQ_EXTRA_CFLAGS"
|
||||||
|
LIBZMQ_EXTRA_CXXFLAGS="-fvisibility=hidden $LIBZMQ_EXTRA_CXXFLAGS"
|
||||||
|
fi
|
||||||
|
|
||||||
# CPU-specific optimizations
|
# CPU-specific optimizations
|
||||||
case "${host_cpu}" in
|
case "${host_cpu}" in
|
||||||
*sparc*)
|
*sparc*)
|
||||||
|
@ -39,6 +39,9 @@ extern "C" {
|
|||||||
# endif
|
# endif
|
||||||
#else
|
#else
|
||||||
# define ZMQ_EXPORT
|
# define ZMQ_EXPORT
|
||||||
|
# if defined __GNUC__ && __GNUC__ >= 4
|
||||||
|
# pragma GCC visibility push(default)
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
@ -242,6 +245,11 @@ ZMQ_EXPORT int zmq_poll (zmq_pollitem_t *items, int nitems, long timeout);
|
|||||||
|
|
||||||
ZMQ_EXPORT int zmq_device (int device, void * insocket, void* outsocket);
|
ZMQ_EXPORT int zmq_device (int device, void * insocket, void* outsocket);
|
||||||
|
|
||||||
|
#undef ZMQ_EXPORT
|
||||||
|
#if defined __GNUC__ && __GNUC__ >= 4 && !defined _WIN32
|
||||||
|
# pragma GCC visibility pop
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -33,6 +33,9 @@ extern "C" {
|
|||||||
# endif
|
# endif
|
||||||
#else
|
#else
|
||||||
# define ZMQ_EXPORT
|
# define ZMQ_EXPORT
|
||||||
|
# if defined __GNUC__ && __GNUC__ >= 4
|
||||||
|
# pragma GCC visibility push(default)
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Helper functions are used by perf tests so that they don't have to care */
|
/* Helper functions are used by perf tests so that they don't have to care */
|
||||||
@ -49,6 +52,9 @@ ZMQ_EXPORT unsigned long zmq_stopwatch_stop (void *watch_);
|
|||||||
ZMQ_EXPORT void zmq_sleep (int seconds_);
|
ZMQ_EXPORT void zmq_sleep (int seconds_);
|
||||||
|
|
||||||
#undef ZMQ_EXPORT
|
#undef ZMQ_EXPORT
|
||||||
|
#if defined __GNUC__ && __GNUC__ >= 4 && !defined _WIN32
|
||||||
|
# pragma GCC visibility pop
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -203,7 +203,6 @@ libpgm_diff_flags = \
|
|||||||
-DCONFIG_HAVE_ISO_VARARGS \
|
-DCONFIG_HAVE_ISO_VARARGS \
|
||||||
-DCONFIG_HAVE_TSC \
|
-DCONFIG_HAVE_TSC \
|
||||||
-DCONFIG_HAVE_WSACMSGHDR \
|
-DCONFIG_HAVE_WSACMSGHDR \
|
||||||
-DCONFIG_HAVE_DSO_VISIBILITY \
|
|
||||||
-DCONFIG_BIND_INADDR_ANY
|
-DCONFIG_BIND_INADDR_ANY
|
||||||
|
|
||||||
else
|
else
|
||||||
@ -225,7 +224,6 @@ libpgm_diff_flags = \
|
|||||||
-DCONFIG_HAVE_IP_MREQN \
|
-DCONFIG_HAVE_IP_MREQN \
|
||||||
-DCONFIG_HAVE_SPRINTF_GROUPING \
|
-DCONFIG_HAVE_SPRINTF_GROUPING \
|
||||||
-DCONFIG_HAVE_VASPRINTF \
|
-DCONFIG_HAVE_VASPRINTF \
|
||||||
-DCONFIG_HAVE_DSO_VISIBILITY \
|
|
||||||
-DCONFIG_BIND_INADDR_ANY \
|
-DCONFIG_BIND_INADDR_ANY \
|
||||||
-DCONFIG_HAVE_GETOPT
|
-DCONFIG_HAVE_GETOPT
|
||||||
endif
|
endif
|
||||||
@ -237,6 +235,7 @@ libpgm_la_CFLAGS = -I$(top_srcdir)/foreign/openpgm/@pgm_basename@/openpgm/pgm/in
|
|||||||
-DCONFIG_16BIT_CHECKSUM \
|
-DCONFIG_16BIT_CHECKSUM \
|
||||||
-DCONFIG_GALOIS_MUL_LUT \
|
-DCONFIG_GALOIS_MUL_LUT \
|
||||||
-DGETTEXT_PACKAGE='"pgm"' \
|
-DGETTEXT_PACKAGE='"pgm"' \
|
||||||
|
-DPGM_GNUC_INTERNAL= \
|
||||||
${libpgm_diff_flags}
|
${libpgm_diff_flags}
|
||||||
|
|
||||||
libzmq_la_CXXFLAGS = -I$(top_srcdir)/foreign/openpgm/@pgm_basename@/openpgm/pgm/include/ \
|
libzmq_la_CXXFLAGS = -I$(top_srcdir)/foreign/openpgm/@pgm_basename@/openpgm/pgm/include/ \
|
||||||
|
@ -60,6 +60,10 @@
|
|||||||
#include <pgm/pgm.h>
|
#include <pgm/pgm.h>
|
||||||
#endif
|
#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_)
|
void zmq_version (int *major_, int *minor_, int *patch_)
|
||||||
{
|
{
|
||||||
*major_ = ZMQ_VERSION_MAJOR;
|
*major_ = ZMQ_VERSION_MAJOR;
|
||||||
@ -725,3 +729,7 @@ unsigned long zmq_stopwatch_stop (void *watch_)
|
|||||||
return (unsigned long) (end - start);
|
return (unsigned long) (end - start);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined __GNUC__ && __GNUC__ >= 4 && !defined ZMQ_HAVE_WINDOWS
|
||||||
|
#pragma GCC visibility pop
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user