diff --git a/Makefile b/Makefile index be6f18f..cf23365 100644 --- a/Makefile +++ b/Makefile @@ -16,6 +16,13 @@ ifneq ($(strip $(MSGPACK_LIB)),) LDFLAGS += -lmsgpack endif +# check for MessagePackC +MSGPACKC_LIB=$(shell ls /usr/lib/libmsgpackc.so 2>/dev/null) +ifneq ($(strip $(MSGPACKC_LIB)),) + FORMAT_OBJS += src/formats/msgpack.o + CFLAGS += -DMSGPACK=1 + LDFLAGS += -lmsgpackc +endif OBJS_DEPS=$(wildcard *.d) diff --git a/src/formats/msgpack.c b/src/formats/msgpack.c index dc1ab0c..a3abc8b 100644 --- a/src/formats/msgpack.c +++ b/src/formats/msgpack.c @@ -8,6 +8,18 @@ #include #include +/* msgpack-c versions >= 1.0 changed to support the v5 msgpack spec. + * As part of doing this, the (un)pack_raw functions were replaced with + * more explicit (un)pack_str and (un)pack_bin. 1.2.0 introduced the + * (un)pack_v4raw functions to retain compatibility. + */ +#if defined(MSGPACK_VERSION_MAJOR) && defined(MSGPACK_VERSION_MINOR) \ + && MSGPACK_VERSION_MAJOR > 1 \ + || (MSGPACK_VERSION_MAJOR == 1 && MSGPACK_VERSION_MINOR >= 2) +#define msgpack_pack_raw msgpack_pack_v4raw +#define msgpack_pack_raw_body msgpack_pack_v4raw_body +#endif + struct msg_out { char *p; size_t sz;