From 7afc61ae7c4859fa1a6273e1964d378c00142746 Mon Sep 17 00:00:00 2001 From: malosek Date: Tue, 6 Oct 2009 12:57:24 +0200 Subject: 0MQ compilable on winXP mingw with --with-pgm2 option --- src/Makefile.am | 53 +++++++++++++++++++++++++++++++++------------------- src/pgm_receiver.cpp | 5 +++++ src/pgm_receiver.hpp | 8 +++++++- src/pgm_sender.cpp | 6 ++++-- src/pgm_sender.hpp | 4 ++++ src/pgm_socket.cpp | 23 +++++++++++++++-------- src/pgm_socket.hpp | 13 +++++-------- src/platform.hpp.in | 3 +++ 8 files changed, 77 insertions(+), 38 deletions(-) (limited to 'src') diff --git a/src/Makefile.am b/src/Makefile.am index 807a9c8..c13441b 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -217,6 +217,39 @@ endif if BUILD_PGM2 libzmq_la_CXXFLAGS = -I$(top_srcdir)/foreign/openpgm/@pgm_basename@/openpgm/pgm/include/ -Wall @LIBZMQ_EXTRA_CXXFLAGS@ + +if ON_MINGW +libpgm_diff_flags = \ + -D_WIN32_WINNT=0x0501 \ + -DCONFIG_HAVE_IFR_NETMASK \ + -DCONFIG_BIND_INADDR_ANY \ + -DCONFIG_GALOIS_MUL_LUT \ + -DGETTEXT_PACKAGE='"pgm"' \ + -DG_LOG_DOMAIN='"Pgm"' + +else +libpgm_diff_flags = \ + -D__need_IOV_MAX \ + -DCONFIG_HAVE_PSELECT \ + -DCONFIG_HAVE_POLL \ + -DCONFIG_HAVE_PPOLL \ + -DCONFIG_HAVE_EPOLL \ + -DCONFIG_HAVE_CLOCK_GETTIME \ + -DCONFIG_HAVE_CLOCK_NANOSLEEP \ + -DCONFIG_HAVE_NANOSLEEP \ + -DCONFIG_HAVE_USLEEP \ + -DCONFIG_HAVE_RTC \ + -DCONFIG_HAVE_TSC \ + -DCONFIG_HAVE_IFR_NETMASK \ + -DCONFIG_HAVE_GETIFADDRS \ + -DCONFIG_HAVE_GETHOSTBYNAME2 \ + -DCONFIG_HAVE_GETPROTOBYNAME_R \ + -DCONFIG_BIND_INADDR_ANY \ + -DCONFIG_GALOIS_MUL_LUT \ + -DGETTEXT_PACKAGE='"pgm"' \ + -DG_LOG_DOMAIN='"Pgm"' +endif + libzmq_la_CFLAGS = -I$(top_srcdir)/foreign/openpgm/@pgm_basename@/openpgm/pgm/include/ @LIBZMQ_EXTRA_CXXFLAGS@ \ -pipe \ -Wall \ @@ -244,25 +277,7 @@ libzmq_la_CFLAGS = -I$(top_srcdir)/foreign/openpgm/@pgm_basename@/openpgm/pgm/in --param max-inline-insns-single=600 \ -D_REENTRANT \ -D_GNU_SOURCE \ - -D__need_IOV_MAX \ - -DCONFIG_HAVE_PSELECT \ - -DCONFIG_HAVE_POLL \ - -DCONFIG_HAVE_PPOLL \ - -DCONFIG_HAVE_EPOLL \ - -DCONFIG_HAVE_CLOCK_GETTIME \ - -DCONFIG_HAVE_CLOCK_NANOSLEEP \ - -DCONFIG_HAVE_NANOSLEEP \ - -DCONFIG_HAVE_USLEEP \ - -DCONFIG_HAVE_RTC \ - -DCONFIG_HAVE_TSC \ - -DCONFIG_HAVE_IFR_NETMASK \ - -DCONFIG_HAVE_GETIFADDRS \ - -DCONFIG_HAVE_GETHOSTBYNAME2 \ - -DCONFIG_HAVE_GETPROTOBYNAME_R \ - -DCONFIG_BIND_INADDR_ANY \ - -DCONFIG_GALOIS_MUL_LUT \ - -DGETTEXT_PACKAGE='"pgm"' \ - -DG_LOG_DOMAIN='"Pgm"' + ${libpgm_diff_flags} endif if BUILD_NO_PGM diff --git a/src/pgm_receiver.cpp b/src/pgm_receiver.cpp index 2ffb9ab..aa7bab0 100644 --- a/src/pgm_receiver.cpp +++ b/src/pgm_receiver.cpp @@ -21,6 +21,11 @@ #if defined ZMQ_HAVE_OPENPGM +#ifdef ZMQ_HAVE_WINDOWS +#include "windows.hpp" +#endif + +#include #include #include "pgm_receiver.hpp" diff --git a/src/pgm_receiver.hpp b/src/pgm_receiver.hpp index b573081..f92f1c5 100644 --- a/src/pgm_receiver.hpp +++ b/src/pgm_receiver.hpp @@ -24,13 +24,19 @@ #if defined ZMQ_HAVE_OPENPGM +#ifdef ZMQ_HAVE_WINDOWS +#include "windows.hpp" +#endif + +#include +#include + #include "io_object.hpp" #include "i_engine.hpp" #include "options.hpp" #include "zmq_decoder.hpp" #include "pgm_socket.hpp" -#include namespace zmq { diff --git a/src/pgm_sender.cpp b/src/pgm_sender.cpp index 51dfbf1..4fb6d2b 100644 --- a/src/pgm_sender.cpp +++ b/src/pgm_sender.cpp @@ -21,6 +21,10 @@ #if defined ZMQ_HAVE_OPENPGM +#ifdef ZMQ_HAVE_WINDOWS +#include "windows.hpp" +#endif + #include #include "io_thread.hpp" @@ -42,7 +46,6 @@ { printf (__VA_ARGS__);}} while (0) #endif -#ifdef ZMQ_HAVE_LINUX zmq::pgm_sender_t::pgm_sender_t (io_thread_t *parent_, const options_t &options_, const char *session_name_) : io_object_t (parent_), @@ -213,4 +216,3 @@ size_t zmq::pgm_sender_t::write_one_pkt_with_offset (unsigned char *data_, } #endif -#endif diff --git a/src/pgm_sender.hpp b/src/pgm_sender.hpp index 380e80b..1cebaa8 100644 --- a/src/pgm_sender.hpp +++ b/src/pgm_sender.hpp @@ -24,6 +24,10 @@ #if defined ZMQ_HAVE_OPENPGM +#ifdef ZMQ_HAVE_WINDOWS +#include "windows.hpp" +#endif + #include "stdint.hpp" #include "io_object.hpp" #include "i_engine.hpp" diff --git a/src/pgm_socket.cpp b/src/pgm_socket.cpp index b4f79e6..da8da3b 100644 --- a/src/pgm_socket.cpp +++ b/src/pgm_socket.cpp @@ -21,13 +21,17 @@ #ifdef ZMQ_HAVE_OPENPGM +#ifdef ZMQ_HAVE_WINDOWS +#include "windows.hpp" +#endif + #ifdef ZMQ_HAVE_LINUX -// TODO: needed for pgm - add this into platform.hpp? +#include +// Has to be defined befiore including pgm/pgm.h #define CONFIG_HAVE_POLL - -#include #endif +#include #include #include @@ -51,8 +55,6 @@ { printf (__VA_ARGS__);}} while (0) #endif -#ifdef ZMQ_HAVE_LINUX - zmq::pgm_socket_t::pgm_socket_t (bool receiver_, const options_t &options_) : g_transport (NULL), options (options_), @@ -480,7 +482,9 @@ void zmq::pgm_socket_t::close_transport (void) int zmq::pgm_socket_t::get_receiver_fds (int *recv_fd_, int *waiting_pipe_fd_) { - +#ifdef ZMQ_HAVE_WINDOWS + zmq_assert (false); +#else // For POLLIN there are 2 pollfds in pgm_transport. int fds_array_size = pgm_receiver_fd_count; pollfd *fds = new pollfd [fds_array_size]; @@ -500,7 +504,7 @@ int zmq::pgm_socket_t::get_receiver_fds (int *recv_fd_, *waiting_pipe_fd_ = fds [1].fd; delete [] fds; - +#endif return pgm_receiver_fd_count; } @@ -520,6 +524,9 @@ int zmq::pgm_socket_t::get_sender_fds (int *send_fd_, int *receive_fd_, zmq_assert (rdata_notify_fd_); #endif +#ifdef ZMQ_HAVE_WINDOWS + zmq_assert (false); +#else // Preallocate pollfds array. int fds_array_size = pgm_sender_fd_count; pollfd *fds = new pollfd [fds_array_size]; @@ -546,6 +553,7 @@ int zmq::pgm_socket_t::get_sender_fds (int *send_fd_, int *receive_fd_, #endif delete [] fds; +#endif return pgm_sender_fd_count; } @@ -855,4 +863,3 @@ void zmq::pgm_socket_t::process_upstream (void) #endif -#endif diff --git a/src/pgm_socket.hpp b/src/pgm_socket.hpp index c9d03bd..9b9ae45 100644 --- a/src/pgm_socket.hpp +++ b/src/pgm_socket.hpp @@ -24,13 +24,12 @@ #if defined ZMQ_HAVE_OPENPGM -#ifdef ZMQ_HAVE_LINUX -#include -#include -#else -#include +#ifdef ZMQ_HAVE_WINDOWS +#include "windows.hpp" #endif +#include + #include "stdint.hpp" #include "options.hpp" @@ -40,8 +39,6 @@ namespace zmq class pgm_socket_t { -#ifdef ZMQ_HAVE_LINUX - public: // If receiver_ is true PGM transport is not generating SPM packets. // interface format: iface;mcast_group:port for raw PGM socket @@ -148,9 +145,9 @@ namespace zmq // Receiver transport uses 2 fd. enum {pgm_receiver_fd_count = 2}; -#endif }; } #endif #endif + diff --git a/src/platform.hpp.in b/src/platform.hpp.in index 1197b57..2cae818 100644 --- a/src/platform.hpp.in +++ b/src/platform.hpp.in @@ -24,6 +24,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H +/* Define to 1 if you have the `Iphlpapi' library (-lIphlpapi). */ +#undef HAVE_LIBIPHLPAPI + /* Define to 1 if you have the `nsl' library (-lnsl). */ #undef HAVE_LIBNSL -- cgit v1.2.3