| diff --git a/mklove/modules/configure.lib b/mklove/modules/configure.lib |
| index 49ed293681f9cc10cca6b7bc8dd17e4c6f4b6a71..fea2be71a0b4ec9074e80162468f1ff4a08d64a9 100644 |
| --- a/mklove/modules/configure.lib |
| +++ b/mklove/modules/configure.lib |
| @@ -14,7 +14,12 @@ function checks { |
| mkl_meta_set gnulib name "GNU-compatible linker options" |
| mkl_meta_set osxlib name "OSX linker options" |
| |
| - if mkl_compile_check gnulib WITH_GNULD cont CC \ |
| + if mkl_compile_check mgwlib WITH_MGWLD cont CC \ |
| + "-shared -Wl,--out-implib,mkltest.0" "" ; then |
| + # MinGW linker |
| + mkl_mkvar_append LIB_LDFLAGS LIB_LDFLAGS '-Wl,--out-implib,$(LIBFILENAMELINK)' |
| + |
| + elif mkl_compile_check gnulib WITH_GNULD cont CC \ |
| "-shared -Wl,-soname,mkltest.0" "" ; then |
| # GNU linker |
| mkl_mkvar_append LIB_LDFLAGS LIB_LDFLAGS '-Wl,-soname,$(LIBFILENAME)' |
| diff --git a/mklove/modules/configure.socket b/mklove/modules/configure.socket |
| index f0777ab3b697a1b010a7fea90756ce7108a94baa..419dfbb1d712895aa4ee1345cddf76f351ee9fd3 100644 |
| --- a/mklove/modules/configure.socket |
| +++ b/mklove/modules/configure.socket |
| @@ -6,15 +6,21 @@ function checks { |
| |
| local src=" |
| #include <sys/types.h> |
| +#ifdef WIN32 |
| +#include <winsock2.h> |
| +#else |
| #include <sys/socket.h> |
| +#endif |
| #include <unistd.h> |
| void foo (void) { |
| int s = socket(0, 0, 0); |
| close(s); |
| }" |
| if ! mkl_compile_check socket "" cont CC "" "$src"; then |
| - if mkl_compile_check --ldflags="-lsocket -lnsl" socket_nsl "" fail CC "" "$src"; then |
| + if mkl_compile_check --ldflags="-lsocket -lnsl" socket_nsl "" cont CC "" "$src"; then |
| mkl_mkvar_append socket_nsl LIBS "-lsocket -lnsl" |
| + elif mkl_compile_check --ldflags="-lws2_32" winsock "" fail CC "" "$src"; then |
| + mkl_mkvar_append winsock LIBS "-lws2_32" |
| fi |
| fi |
| } |
| diff --git a/mklove/Makefile.base b/mklove/Makefile.base |
| index 783b3a6bba1a471f74816d69c8f3d6768e006ff0..e33c58aebabc4ea913b454f2ec1e71e18f71ec3c 100755 |
| --- a/mklove/Makefile.base |
| +++ b/mklove/Makefile.base |
| @@ -26,9 +26,13 @@ ifndef MKL_MAKEFILE_CONFIG |
| endif |
| |
| _UNAME_S := $(shell uname -s) |
| +_UNAME_O := $(shell uname -o) |
| ifeq ($(_UNAME_S),Darwin) |
| LIBFILENAME=$(LIBNAME).$(LIBVER).dylib |
| LIBFILENAMELINK=$(LIBNAME).dylib |
| +else ifeq ($(_UNAME_O),Msys) |
| + LIBFILENAME=$(LIBNAME)-$(LIBVER).dll |
| + LIBFILENAMELINK=$(LIBNAME).dll.a |
| else |
| LIBFILENAME=$(LIBNAME).so.$(LIBVER) |
| LIBFILENAMELINK=$(LIBNAME).so |
| @@ -91,8 +95,10 @@ $(LIBNAME).a: $(OBJS) |
| $(AR) rcs$(ARFLAGS) $@ $(OBJS) |
| |
| $(LIBFILENAMELINK): $(LIBFILENAME) |
| +ifneq ($(_UNAME_O),Msys) |
| @printf "$(MKL_YELLOW)Creating $@ symlink$(MKL_CLR_RESET)\n" |
| rm -f "$@" && ln -s "$^" "$@" |
| +endif |
| |
| |
| # pkg-config .pc file definition |
| @@ -151,13 +157,23 @@ lib-install: |
| $(INSTALL) -d $$DESTDIR$(includedir)/$(PKGNAME) ; \ |
| $(INSTALL) -d $$DESTDIR$(libdir) ; \ |
| $(INSTALL) $(HDRS) $$DESTDIR$(includedir)/$(PKGNAME) ; \ |
| - $(INSTALL) $(LIBNAME).a $$DESTDIR$(libdir) ; \ |
| + $(INSTALL) $(LIBNAME).a $$DESTDIR$(libdir) |
| +ifeq ($(_UNAME_O),Msys) |
| + $(INSTALL) -d $$DESTDIR$(bindir) ; \ |
| + $(INSTALL) $(LIBFILENAME) $$DESTDIR$(bindir) ; \ |
| + [ -f "$(LIBNAME0).pc" ] && ( \ |
| + $(INSTALL) -d $$DESTDIR$(pkgconfigdir) ; \ |
| + $(INSTALL) -m 0644 $(LIBNAME0).pc $$DESTDIR$(pkgconfigdir) \ |
| + ) ; \ |
| + $(INSTALL) $(LIBFILENAMELINK) $$DESTDIR$(libdir) |
| +else |
| $(INSTALL) $(LIBFILENAME) $$DESTDIR$(libdir) ; \ |
| [ -f "$(LIBNAME0).pc" ] && ( \ |
| $(INSTALL) -d $$DESTDIR$(pkgconfigdir) ; \ |
| $(INSTALL) -m 0644 $(LIBNAME0).pc $$DESTDIR$(pkgconfigdir) \ |
| ) ; \ |
| (cd $$DESTDIR$(libdir) && ln -sf $(LIBFILENAME) $(LIBFILENAMELINK)) |
| +endif |
| |
| lib-uninstall: |
| @printf "$(MKL_YELLOW)Uninstall $(LIBNAME) from $$DESTDIR$(prefix)$(MKL_CLR_RESET)\n" |
| @@ -173,7 +189,7 @@ lib-uninstall: |
| bin-install: |
| @printf "$(MKL_YELLOW)Install $(BIN) to $$DESTDIR$(prefix)$(MKL_CLR_RESET)\n" |
| $(INSTALL) -d $$DESTDIR$(bindir) && \ |
| - $(INSTALL) $(BIN) $$DESTDIR$(bindir) |
| + $(INSTALL) $(BIN) $$DESTDIR$(bindir) |
| |
| bin-uninstall: |
| @printf "$(MKL_YELLOW)Uninstall $(BIN) from $$DESTDIR$(prefix)$(MKL_CLR_RESET)\n" |
| diff --git a/examples/kafka-serdes-avro-console-consumer.cpp b/examples/kafka-serdes-avro-console-consumer.cpp |
| index 6772686a9c5ebb9865e25152ae59d5807a9bb5af..1e2646c4ade66386b35d931ae9836e8500879098 100644 |
| --- a/examples/kafka-serdes-avro-console-consumer.cpp |
| +++ b/examples/kafka-serdes-avro-console-consumer.cpp |
| @@ -28,7 +28,11 @@ |
| #include <signal.h> |
| #include <getopt.h> |
| |
| +#ifdef WIN32 |
| +#include <winsock2.h> |
| +#else |
| #include <netinet/in.h> // remove |
| +#endif |
| |
| /* Typical include path is <libserdes/serdescpp-avro.h> */ |
| #include "../src-cpp/serdescpp-avro.h" |
| @@ -71,7 +75,7 @@ static int avro2json (Serdes::Schema *schema, const avro::GenericDatum *datum, |
| |
| /* JSON output stream */ |
| std::ostringstream oss; |
| - std::auto_ptr<avro::OutputStream> json_os = avro::ostreamOutputStream(oss); |
| + avro::OutputStreamPtr json_os = avro::ostreamOutputStream(oss); |
| |
| try { |
| /* Encode Avro datum to JSON */ |
| @@ -213,11 +217,16 @@ int main (int argc, char **argv) { |
| std::string errstr; |
| |
| /* Controlled termination */ |
| +#ifdef WIN32 |
| + signal(SIGINT, sig_term); |
| + signal(SIGTERM, sig_term); |
| +#else |
| struct sigaction sa; |
| memset(&sa, 0, sizeof(sa)); |
| sa.sa_handler = sig_term; |
| sigaction(SIGINT, &sa, NULL); |
| sigaction(SIGTERM, &sa, NULL); |
| +#endif |
| |
| |
| /* Create serdes configuration object. |
| diff --git a/examples/kafka-serdes-avro-console-producer.cpp b/examples/kafka-serdes-avro-console-producer.cpp |
| index de5836a55aee332cb6a8ae59c2ae381c1498d6ad..1eb771d74e2671f7c958234949047c78986212af 100644 |
| --- a/examples/kafka-serdes-avro-console-producer.cpp |
| +++ b/examples/kafka-serdes-avro-console-producer.cpp |
| @@ -85,7 +85,7 @@ static int json2avro (Serdes::Schema *schema, const std::string &json, |
| |
| /* Input stream from json string */ |
| std::istringstream iss(json); |
| - std::auto_ptr<avro::InputStream> json_is = avro::istreamInputStream(iss); |
| + avro::InputStreamPtr json_is = avro::istreamInputStream(iss); |
| |
| /* JSON decoder */ |
| avro::DecoderPtr json_decoder = avro::jsonDecoder(*avro_schema); |
| @@ -155,11 +155,16 @@ int main (int argc, char **argv) { |
| int partition = -1; |
| |
| /* Controlled termination */ |
| +#ifdef WIN32 |
| + signal(SIGINT, sig_term); |
| + signal(SIGTERM, sig_term); |
| +#else |
| struct sigaction sa; |
| memset(&sa, 0, sizeof(sa)); |
| sa.sa_handler = sig_term; |
| sigaction(SIGINT, &sa, NULL); |
| sigaction(SIGTERM, &sa, NULL); |
| +#endif |
| |
| |
| /* Create serdes configuration object. |
| diff --git a/examples/serdes-tool.cpp b/examples/serdes-tool.cpp |
| index 457694bfde6be15deb35ace4a4213d19306fe999..00bd9a4697464f388723366d3ae57344fc89cf73 100644 |
| --- a/examples/serdes-tool.cpp |
| +++ b/examples/serdes-tool.cpp |
| @@ -84,7 +84,7 @@ static void decode_json (Serdes::Schema *schema, const std::string &json_str) { |
| |
| decoder = avro::jsonDecoder(*static_cast<avro::ValidSchema*>(schema->object())); |
| |
| - std::auto_ptr<avro::InputStream> istream = |
| + avro::InputStreamPtr istream = |
| avro::memoryInputStream((const uint8_t *)json_str.c_str(), json_str.size()); |
| |
| decoder->init(*istream); |
| @@ -112,11 +112,16 @@ int main (int argc, char **argv) { |
| |
| |
| /* Controlled termination */ |
| +#ifdef WIN32 |
| + signal(SIGINT, sig_term); |
| + signal(SIGTERM, sig_term); |
| +#else |
| struct sigaction sa; |
| memset(&sa, 0, sizeof(sa)); |
| sa.sa_handler = sig_term; |
| sigaction(SIGINT, &sa, NULL); |
| sigaction(SIGTERM, &sa, NULL); |
| +#endif |
| |
| |
| /* Create serdes configuration object. |
| diff --git a/src/framing.c b/src/framing.c |
| index 45429bc749e24f39308d5ca996b27991048e3d38..8e08987bb14581793b507ec9cc3f1be4edd75357 100644 |
| --- a/src/framing.c |
| +++ b/src/framing.c |
| @@ -16,7 +16,11 @@ |
| |
| #include "serdes_int.h" |
| |
| +#ifdef WIN32 |
| +#include <winsock2.h> |
| +#else |
| #include <arpa/inet.h> /* ntohl/htonl */ |
| +#endif |
| |
| |
| size_t serdes_serializer_framing_size (serdes_t *sd) { |
| diff --git a/src/serdes_int.h b/src/serdes_int.h |
| index d2f4e97013a2d82aa0f9ed59c1f53dc0eb6d63b3..3e4852551e7db0185eb5a1c0c0589b6ac144be25 100644 |
| --- a/src/serdes_int.h |
| +++ b/src/serdes_int.h |
| @@ -15,7 +15,7 @@ |
| */ |
| #pragma once |
| |
| -#include <sys/queue.h> |
| +#include "queue.h" |
| |
| #include <avro.h> |
| |
| diff --git a/src-cpp/Makefile b/src-cpp/Makefile |
| index 4bd77ba85fba264b7cd4c68ab7720ce1019b94b9..322585daa1a9dd50f2294f2022e488ef5520f53f 100644 |
| --- a/src-cpp/Makefile |
| +++ b/src-cpp/Makefile |
| @@ -26,12 +26,15 @@ endif |
| ifeq ($(_UNAME_S),AIX) |
| FWD_LINKING_REQ=y |
| endif |
| -ifeq ($(shell uname -o 2>/dev/null),Cygwin) |
| +ifeq ($(_UNAME_O),Cygwin) |
| + FWD_LINKING_REQ=y |
| +endif |
| +ifeq ($(_UNAME_O),Msys) |
| FWD_LINKING_REQ=y |
| endif |
| |
| ifeq ($(FWD_LINKING_REQ),y) |
| - LIBS := -L../src -lserdes $(LIBS) |
| + LIBS := -L../src -lserdes $(LIBS) |
| endif |
| |
| LIBS += -lstdc++ |
| diff --git a/src-cpp/Serdes.cpp b/src-cpp/Serdes.cpp |
| index 01446fb376d4eca367f31c446f318ff2cf21cce7..e5a9c3a3e98d8b9c3a932960c86d3a0c21f30915 100644 |
| --- a/src-cpp/Serdes.cpp |
| +++ b/src-cpp/Serdes.cpp |
| @@ -221,7 +221,7 @@ ssize_t AvroImpl::serialize (Schema *schema, const avro::GenericDatum *datum, |
| avro::ValidSchema *avro_schema = schema->object(); |
| |
| /* Binary encoded output stream */ |
| - std::auto_ptr<avro::OutputStream> bin_os = avro::memoryOutputStream(); |
| + avro::OutputStreamPtr bin_os = avro::memoryOutputStream(); |
| /* Avro binary encoder */ |
| avro::EncoderPtr bin_encoder = avro::validatingEncoder(*avro_schema, |
| avro::binaryEncoder()); |
| @@ -238,7 +238,7 @@ ssize_t AvroImpl::serialize (Schema *schema, const avro::GenericDatum *datum, |
| } |
| |
| /* Extract written bytes. */ |
| - boost::shared_ptr<std::vector<uint8_t> > v; |
| + std::shared_ptr<std::vector<uint8_t> > v; |
| v = avro::snapshot(*bin_os.get()); |
| |
| /* Write framing */ |
| @@ -281,7 +281,7 @@ ssize_t AvroImpl::deserialize (Schema **schemap, avro::GenericDatum **datump, |
| avro::ValidSchema *avro_schema = schema->object(); |
| |
| /* Binary input stream */ |
| - std::auto_ptr<avro::InputStream> bin_is = |
| + avro::InputStreamPtr bin_is = |
| avro::memoryInputStream((const uint8_t *)payload, size); |
| |
| /* Binary Avro decoder */ |