0
0
mirror of https://github.com/zeromq/libzmq.git synced 2024-12-27 15:41:05 +08:00

Upstream the openpgm build fixes. Add DSO symbol visibility to OpenPGM builds

Signed-off-by: Mikko Koppanen <mkoppanen@php.net>
This commit is contained in:
Mikko Koppanen 2011-03-31 18:42:09 +02:00 committed by Martin Sustrik
parent d36d9a378a
commit fbf1f51468
7 changed files with 59 additions and 208 deletions

1
.gitignore vendored
View File

@ -51,5 +51,6 @@ builds/msvc/*/Release
foreign/openpgm/* foreign/openpgm/*
!foreign/openpgm/*.tar.bz2 !foreign/openpgm/*.tar.bz2
!foreign/openpgm/*.tar.gz !foreign/openpgm/*.tar.gz
!foreign/openpgm/Makefile.am
zeromq-*.tar.gz zeromq-*.tar.gz
zeromq-*.zip zeromq-*.zip

View File

@ -1,7 +1,12 @@
ACLOCAL_AMFLAGS = -I config ACLOCAL_AMFLAGS = -I config
if BUILD_PGM
SUBDIRS = foreign/openpgm src doc perf tests
else
SUBDIRS = src doc perf tests SUBDIRS = src doc perf tests
DIST_SUBDIRS = src doc perf tests builds/msvc endif
DIST_SUBDIRS = foreign/openpgm src doc perf tests builds/msvc
EXTRA_DIST = \ EXTRA_DIST = \
autogen.sh \ autogen.sh \
@ -29,8 +34,8 @@ dist-hook:
fi fi
-cp $(top_srcdir)/builds/redhat/zeromq.spec $(distdir)/zeromq.spec -cp $(top_srcdir)/builds/redhat/zeromq.spec $(distdir)/zeromq.spec
-sed s/\@PACKAGE_VERSION\@/@PACKAGE_VERSION@/ -i $(distdir)/zeromq.spec -sed s/\@PACKAGE_VERSION\@/@PACKAGE_VERSION@/ -i $(distdir)/zeromq.spec
-rm -rf $(distdir)/foreign/openpgm/@pgm_basename@ -rm -rf $(distdir)/foreign/openpgm/build-staging
distclean-local: distclean-local:
-rm -rf $(top_srcdir)/foreign/openpgm/@pgm_basename@ -rm -rf $(top_srcdir)/foreign/openpgm/build-staging
maintainer-clean-local: maintainer-clean-local:
-rm -rf $(top_srcdir)/config -rm -rf $(top_srcdir)/config

View File

@ -12,6 +12,7 @@ AC_CONFIG_AUX_DIR(config)
AC_CONFIG_MACRO_DIR(config) AC_CONFIG_MACRO_DIR(config)
AM_CONFIG_HEADER(src/platform.hpp) AM_CONFIG_HEADER(src/platform.hpp)
AM_INIT_AUTOMAKE(tar-ustar dist-zip foreign) AM_INIT_AUTOMAKE(tar-ustar dist-zip foreign)
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
# This lets us use PACKAGE_VERSION in Makefiles # This lets us use PACKAGE_VERSION in Makefiles
AC_SUBST(PACKAGE_VERSION) AC_SUBST(PACKAGE_VERSION)
@ -45,6 +46,10 @@ AC_PROG_SED
AC_PROG_AWK AC_PROG_AWK
# Libtool configuration for different targets. See acinclude.m4 # Libtool configuration for different targets. See acinclude.m4
AC_ARG_VAR([XMLTO], [Path to xmlto command])
AC_PATH_PROG([XMLTO], [xmlto])
AC_ARG_VAR([ASCIIDOC], [Path to asciidoc command])
AC_PATH_PROG([ASCIIDOC], [asciidoc])
AC_ZMQ_CONFIG_LIBTOOL AC_ZMQ_CONFIG_LIBTOOL
AC_LIBTOOL_WIN32_DLL AC_LIBTOOL_WIN32_DLL
AC_PROG_LIBTOOL AC_PROG_LIBTOOL
@ -212,10 +217,6 @@ esac
# Check if the compiler supports -fvisibility=hidden flag. MinGW32 uses __declspec # Check if the compiler supports -fvisibility=hidden flag. MinGW32 uses __declspec
# #
if test "x$ac_zmq_dso_visibility" = "xyes"; then if test "x$ac_zmq_dso_visibility" = "xyes"; then
AC_LANG_PUSH([C])
AC_ZMQ_CHECK_LANG_VISIBILITY([LIBZMQ_EXTRA_CFLAGS="$ac_zmq_cv_[]_AC_LANG_ABBREV[]_visibility_flag ${LIBZMQ_EXTRA_CFLAGS}"])
AC_LANG_POP([C])
AC_LANG_PUSH([C++]) AC_LANG_PUSH([C++])
AC_ZMQ_CHECK_LANG_VISIBILITY([LIBZMQ_EXTRA_CXXFLAGS="$ac_zmq_cv_[]_AC_LANG_ABBREV[]_visibility_flag ${LIBZMQ_EXTRA_CXXFLAGS}"]) AC_ZMQ_CHECK_LANG_VISIBILITY([LIBZMQ_EXTRA_CXXFLAGS="$ac_zmq_cv_[]_AC_LANG_ABBREV[]_visibility_flag ${LIBZMQ_EXTRA_CXXFLAGS}"])
AC_LANG_POP([C++]) AC_LANG_POP([C++])
@ -266,70 +267,21 @@ AC_C_VOLATILE
# PGM extension # PGM extension
ac_zmq_pgm_ext="no" ac_zmq_pgm_ext="no"
pgm_basename="libpgm-5.0.92~dfsg" pgm_basename="libpgm-5.1.115~dfsg"
AC_SUBST(pgm_basename)
AC_ARG_WITH([pgm], [AS_HELP_STRING([--with-pgm], AC_ARG_WITH([pgm], [AS_HELP_STRING([--with-pgm],
[build libzmq with PGM extension [default=no]])], [build libzmq with PGM extension [default=no]])],
[with_pgm_ext=yes], [with_pgm_ext=no]) [with_pgm_ext=$withval], [with_pgm_ext=no])
if test "x$with_pgm_ext" != "xno"; then if test "x$with_pgm_ext" != "xno"; then
if test "x$ac_cv_prog_cc_c99" = "xno"; then # This allows placing the tar.gz to foreign/openpgm
AC_MSG_WARN([The C compiler is not set to C99 mode. The build will most likely fail]) # and using ./configure --with-pgm=libpgm-x.y.z
if test "x$with_pgm_ext" != "xyes"; then
pgm_basename="$with_pgm_ext"
fi fi
AC_MSG_CHECKING([if the PGM extension is supported on this platform]) # Unpack libpgm
# OpenPGM is only supported by the vendor on x86, AMD64, and SPARC platforms...
case "${host_cpu}" in
i*86|x86_64|amd64|*sparc*|s390*)
# Supported
;;
*)
AC_MSG_ERROR([the PGM extension is not supported on the ${host_cpu} platform.])
;;
esac
# ... and on Linux/Windows/Solaris/FreeBSD/OSX systems.
case "${host_os}" in
*linux*|*mingw32*|*solaris*|*freebsd*|*darwin*)
AC_MSG_RESULT([yes])
AC_LANG_PUSH([C++])
AC_ZMQ_CHECK_LANG_FLAG([-Wno-variadic-macros], [LIBZMQ_EXTRA_CXXFLAGS="-Wno-variadic-macros $LIBZMQ_EXTRA_CXXFLAGS"])
AC_ZMQ_CHECK_LANG_FLAG([-Wno-long-long], [LIBZMQ_EXTRA_CXXFLAGS="-Wno-long-long $LIBZMQ_EXTRA_CXXFLAGS"])
AC_LANG_POP([C++])
AC_LANG_PUSH([C])
AC_ZMQ_LANG_STRICT([LIBZMQ_EXTRA_CFLAGS="$ac_zmq_cv_[]_AC_LANG_ABBREV[]_strict_flag $LIBZMQ_EXTRA_CFLAGS"])
if test "x$ac_zmq_cv_[]_AC_LANG_ABBREV[]_intel_compiler" = "xyes" -o \
"x$ac_zmq_cv_[]_AC_LANG_ABBREV[]_sun_studio_compiler" = "xyes"; then
LIBZMQ_EXTRA_CFLAGS="-Dasm=__asm__ $LIBZMQ_EXTRA_CFLAGS"
fi
AC_LANG_POP([C])
;;
*)
AC_MSG_ERROR([the PGM extension is not supported on system ${host_os}.])
;;
esac
# Gzip, Perl and Python are required during PGM build
AC_CHECK_PROG(ac_zmq_have_gzip, gzip, yes, no)
if test "x$ac_zmq_have_gzip" != "xyes"; then
AC_MSG_ERROR([gzip is required for building the PGM extension.])
fi
AC_CHECK_PROG(ac_zmq_have_perl, perl, yes, no)
if test "x$ac_zmq_have_perl" != "xyes"; then
AC_MSG_ERROR([perl is required for building the PGM extension.])
fi
AC_CHECK_PROG(ac_zmq_have_python, python, yes, no)
if test "x$ac_zmq_have_python" != "xyes"; then
AC_MSG_ERROR([python is required for building the PGM extension.])
fi
# Unpack libpgm
AC_MSG_NOTICE([Unpacking ${pgm_basename}.tar.gz]) AC_MSG_NOTICE([Unpacking ${pgm_basename}.tar.gz])
ac_zmq_pwd=`pwd` ac_zmq_pwd=`pwd`
cd foreign/openpgm cd foreign/openpgm
@ -337,17 +289,38 @@ if test "x$with_pgm_ext" != "xno"; then
if ! (gzip -dc "${pgm_basename}.tar.gz" || echo "failed") | ${am__untar}; then if ! (gzip -dc "${pgm_basename}.tar.gz" || echo "failed") | ${am__untar}; then
AC_MSG_ERROR([cannot unpack the foreign/openpgm/${pgm_basename}.tar.gz file]) AC_MSG_ERROR([cannot unpack the foreign/openpgm/${pgm_basename}.tar.gz file])
fi fi
cd "${ac_zmq_pwd}" cd "${ac_zmq_pwd}"
# Success! if test -d foreign/openpgm/build-staging; then
rm -rf foreign/openpgm/build-staging
fi
mv foreign/openpgm/${pgm_basename} foreign/openpgm/build-staging
pgm_srcdir=foreign/openpgm/build-staging/openpgm/pgm
if ! test -d foreign/openpgm/build-staging/openpgm/pgm/config; then
mkdir foreign/openpgm/build-staging/openpgm/pgm/config
fi
# DSO symbol visibility for openpgm
AC_LANG_PUSH([C])
AC_ZMQ_CHECK_LANG_VISIBILITY([ac_configure_args="CFLAGS='$ac_zmq_cv_[]_AC_LANG_ABBREV[]_visibility_flag' ${ac_configure_args}"])
AC_LANG_POP([C])
pgm_subdir=build-staging/openpgm/pgm
AC_SUBST(pgm_subdir)
AC_SUBST(pgm_srcdir)
AC_CONFIG_SUBDIRS([foreign/openpgm/build-staging/openpgm/pgm/])
# Success!
AC_DEFINE(ZMQ_HAVE_OPENPGM, 1, [Have OpenPGM extension]) AC_DEFINE(ZMQ_HAVE_OPENPGM, 1, [Have OpenPGM extension])
ac_zmq_pgm_ext="yes" ac_zmq_pgm_ext="yes"
# these break OpenPGM so don't specify them if we are building with it.
ac_zmq_pedantic="no"
ac_zmq_werror="no"
fi fi
AC_SUBST(pgm_basename)
# Set -Wall, -Werror and -pedantic # Set -Wall, -Werror and -pedantic
AC_LANG_PUSH([C++]) AC_LANG_PUSH([C++])
@ -371,52 +344,6 @@ AC_TYPE_SIGNAL
AC_CHECK_FUNCS(perror gettimeofday memset socket getifaddrs freeifaddrs) AC_CHECK_FUNCS(perror gettimeofday memset socket getifaddrs freeifaddrs)
AC_CHECK_HEADERS([alloca.h]) AC_CHECK_HEADERS([alloca.h])
if test "x$with_pgm_ext" != "xno"; then
# Check additional functions for PGM build
AC_CHECK_FUNCS(poll epoll_create pselect getopt vasprintf getprotobyname_r2 getprotobyname_r)
if test "x$ac_cv_func_gettimeofday" = "xyes"; then
LIBZMQ_EXTRA_CFLAGS="-DCONFIG_HAVE_GETTIMEOFDAY $LIBZMQ_EXTRA_CFLAGS"
fi
if test "x$ac_cv_func_getprotobyname_r2" = "xyes"; then
LIBZMQ_EXTRA_CFLAGS="-DCONFIG_HAVE_GETPROTOBYNAME_R2 $LIBZMQ_EXTRA_CFLAGS"
fi
if test "x$ac_cv_func_poll" = "xyes"; then
LIBZMQ_EXTRA_CFLAGS="-DCONFIG_HAVE_POLL $LIBZMQ_EXTRA_CFLAGS"
fi
if test "x$ac_cv_func_epoll_create" = "xyes"; then
LIBZMQ_EXTRA_CFLAGS="-DCONFIG_HAVE_EPOLL $LIBZMQ_EXTRA_CFLAGS"
fi
if test "x$ac_cv_func_getifaddrs" = "xyes"; then
LIBZMQ_EXTRA_CFLAGS="-DCONFIG_HAVE_GETIFADDRS $LIBZMQ_EXTRA_CFLAGS"
fi
if test "x$ac_cv_func_getopt" = "xyes"; then
LIBZMQ_EXTRA_CFLAGS="-DCONFIG_HAVE_GETOPT $LIBZMQ_EXTRA_CFLAGS"
fi
if test "x$ac_cv_func_pselect" = "xyes"; then
LIBZMQ_EXTRA_CFLAGS="-DCONFIG_HAVE_PSELECT $LIBZMQ_EXTRA_CFLAGS"
fi
if test "x$ac_cv_header_alloca_h" = "xyes"; then
LIBZMQ_EXTRA_CFLAGS="-DCONFIG_HAVE_ALLOCA_H $LIBZMQ_EXTRA_CFLAGS"
fi
if test "x$ac_cv_c_compiler_gnu" = "xno"; then
LIBZMQ_EXTRA_CFLAGS="-DCONFIG_HAVE_ISO_VARARGS $LIBZMQ_EXTRA_CFLAGS"
else
LIBZMQ_EXTRA_CFLAGS="-DCONFIG_HAVE_GNU_VARARGS $LIBZMQ_EXTRA_CFLAGS"
fi
if test "x$ac_cv_func_vasprintf" = "xyes"; then
LIBZMQ_EXTRA_CFLAGS="-DCONFIG_HAVE_VASPRINTF $LIBZMQ_EXTRA_CFLAGS"
fi
case "${host_cpu}" in
i*86|x86_64|amd64|*sparc*)
LIBZMQ_EXTRA_CFLAGS="-DCONFIG_HAVE_TSC -DCONFIG_HAVE_RTC -DCONFIG_HAVE_HPET $LIBZMQ_EXTRA_CFLAGS"
;;
*sparc*|s390*)
;;
esac
fi
# Subst LIBZMQ_EXTRA_CFLAGS & CXXFLAGS & LDFLAGS # Subst LIBZMQ_EXTRA_CFLAGS & CXXFLAGS & LDFLAGS
AC_SUBST(LIBZMQ_EXTRA_CFLAGS) AC_SUBST(LIBZMQ_EXTRA_CFLAGS)
AC_SUBST(LIBZMQ_EXTRA_CXXFLAGS) AC_SUBST(LIBZMQ_EXTRA_CXXFLAGS)
@ -424,6 +351,7 @@ AC_SUBST(LIBZMQ_EXTRA_LDFLAGS)
AC_CONFIG_FILES([Makefile src/Makefile doc/Makefile AC_CONFIG_FILES([Makefile src/Makefile doc/Makefile
perf/Makefile src/libzmq.pc \ perf/Makefile src/libzmq.pc \
builds/msvc/Makefile tests/Makefile]) builds/msvc/Makefile tests/Makefile \
foreign/openpgm/Makefile])
AC_OUTPUT AC_OUTPUT

View File

@ -0,0 +1,8 @@
SUBDIRS = $(pgm_subdir)
DIST_SUBDIRS =
# Override Automake's installation targets with the command ":" that does nothing.
install:; @:
install-exec:; @:
install-data:; @:
uninstall:; @:
dist:; @;

Binary file not shown.

View File

@ -5,61 +5,6 @@ pkgconfig_DATA = libzmq.pc
include_HEADERS = ../include/zmq.h ../include/zmq_utils.h include_HEADERS = ../include/zmq.h ../include/zmq_utils.h
if BUILD_PGM
noinst_LTLIBRARIES = libpgm.la
nodist_libpgm_la_SOURCES = ../foreign/openpgm/@pgm_basename@/openpgm/pgm/thread.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/mem.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/string.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/list.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/slist.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/queue.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/hashtable.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/messages.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/error.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/math.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/packet_parse.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/packet_test.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/sockaddr.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/time.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/if.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/getifaddrs.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/getnodeaddr.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/indextoaddr.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/indextoname.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/nametoindex.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/inet_network.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/md5.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/rand.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/gsi.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/tsi.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/txw.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/rxw.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/skbuff.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/socket.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/source.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/receiver.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/recv.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/engine.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/timer.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/net.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/rate_control.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/checksum.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/reed_solomon.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/galois_tables.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/wsastrerror.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/histogram.c \
../foreign/openpgm/@pgm_basename@/openpgm/pgm/version.c
../foreign/openpgm/@pgm_basename@/openpgm/pgm/version.c: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/version_generator.py
python ../foreign/openpgm/@pgm_basename@/openpgm/pgm/version_generator.py > $@
../foreign/openpgm/@pgm_basename@/openpgm/pgm/galois_tables.c: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/galois_generator.pl
perl ../foreign/openpgm/@pgm_basename@/openpgm/pgm/galois_generator.pl > $@
libpgm_la_LIBADD = @LTLIBOBJS@
endif
libzmq_la_SOURCES = \ libzmq_la_SOURCES = \
array.hpp \ array.hpp \
atomic_counter.hpp \ atomic_counter.hpp \
@ -195,47 +140,11 @@ else
libzmq_la_LDFLAGS = -version-info @LTVER@ @LIBZMQ_EXTRA_LDFLAGS@ libzmq_la_LDFLAGS = -version-info @LTVER@ @LIBZMQ_EXTRA_LDFLAGS@
endif endif
if BUILD_PGM
if ON_MINGW
libpgm_diff_flags = \
-D_WIN32_WINNT=0x0501 \
-DCONFIG_HAVE_ISO_VARARGS \
-DCONFIG_HAVE_TSC \
-DCONFIG_HAVE_WSACMSGHDR \
-DCONFIG_BIND_INADDR_ANY
else
libpgm_diff_flags = \
-DCONFIG_HAVE_PROC \
-DCONFIG_HAVE_BACKTRACE \
-DCONFIG_HAVE_IFR_NETMASK \
-DCONFIG_HAVE_MCAST_JOIN \
-DCONFIG_HAVE_IP_MREQN \
-DCONFIG_HAVE_SPRINTF_GROUPING \
-DCONFIG_BIND_INADDR_ANY
endif
libpgm_la_CFLAGS = -I$(top_srcdir)/foreign/openpgm/@pgm_basename@/openpgm/pgm/include/ @LIBZMQ_EXTRA_CFLAGS@ \
-D_XOPEN_SOURCE=600 \
-D_BSD_SOURCE \
-D_REENTRANT \
-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/ \
@LIBZMQ_EXTRA_CXXFLAGS@
endif
if !BUILD_PGM
libzmq_la_CXXFLAGS = @LIBZMQ_EXTRA_CXXFLAGS@ libzmq_la_CXXFLAGS = @LIBZMQ_EXTRA_CXXFLAGS@
endif
if BUILD_PGM if BUILD_PGM
libzmq_la_LIBADD = libpgm.la libzmq_la_CPPFLAGS = -I$(top_srcdir)/@pgm_srcdir@/include/
libzmq_la_LIBADD = $(top_srcdir)/@pgm_srcdir@/libpgm_noinst.la
endif endif
dist-hook: dist-hook: