From e5eb03b2e63260463a9df70a30e0f57a606f2292 Mon Sep 17 00:00:00 2001 From: "Roger A. Light" Date: Sun, 7 Oct 2018 00:56:42 +0100 Subject: [PATCH] Allow building without shared library. --- client/Makefile | 20 ++++++++++++++++---- config.mk | 8 +++++++- lib/Makefile | 13 ++++++++++++- 3 files changed, 35 insertions(+), 6 deletions(-) diff --git a/client/Makefile b/client/Makefile index 844bc6e0..57acbdf9 100644 --- a/client/Makefile +++ b/client/Makefile @@ -2,7 +2,19 @@ include ../config.mk .PHONY: all install uninstall reallyclean clean static static_pub static_sub -all : mosquitto_pub mosquitto_sub +ifeq ($(WITH_SHARED_LIBRARIES),yes) +SHARED_DEP:=../lib/libmosquitto.so.${SOVERSION} +endif + +ifeq ($(WITH_SHARED_LIBRARIES),yes) + ALL_DEPS:= mosquitto_pub mosquitto_sub +else +ifeq ($(WITH_STATIC_LIBRARIES),yes) + ALL_DEPS:= static_pub static_sub +endif +endif + +all : ${ALL_DEPS} static : static_pub static_sub # This makes mosquitto_pub/sub versions that are statically linked with @@ -20,13 +32,13 @@ mosquitto_pub : pub_client.o client_shared.o mosquitto_sub : sub_client.o sub_client_output.o client_shared.o ${CROSS_COMPILE}${CC} $^ -o $@ ${CLIENT_LDFLAGS} -pub_client.o : pub_client.c ../lib/libmosquitto.so.${SOVERSION} +pub_client.o : pub_client.c ${SHARED_DEP} ${CROSS_COMPILE}${CC} -c $< -o $@ ${CLIENT_CFLAGS} -sub_client.o : sub_client.c ../lib/libmosquitto.so.${SOVERSION} +sub_client.o : sub_client.c ${SHARED_DEP} ${CROSS_COMPILE}${CC} -c $< -o $@ ${CLIENT_CFLAGS} -sub_client_output.o : sub_client_output.c ../lib/libmosquitto.so.${SOVERSION} +sub_client_output.o : sub_client_output.c ${SHARED_DEP} ${CROSS_COMPILE}${CC} -c $< -o $@ ${CLIENT_CFLAGS} client_shared.o : client_shared.c client_shared.h diff --git a/config.mk b/config.mk index 3e877ccf..9871ff05 100644 --- a/config.mk +++ b/config.mk @@ -86,6 +86,9 @@ WITH_STRIP:=no # Build static libraries WITH_STATIC_LIBRARIES:=no +# Build shared libraries +WITH_SHARED_LIBRARIES:=yes + # Build with async dns lookup support for bridges (temporary). Requires glibc. #WITH_ADNS:=yes @@ -146,7 +149,10 @@ ifeq ($(UNAME),Linux) LIB_LIBS:=$(LIB_LIBS) -lrt endif -CLIENT_LDFLAGS:=$(LDFLAGS) -L../lib ../lib/libmosquitto.so.${SOVERSION} +CLIENT_LDFLAGS:=$(LDFLAGS) -L../lib +ifeq ($(WITH_SHARED_LIBRARIES),yes) + CLIENT_LDFLAGS:=${CLIENT_LDFLAGS} ../lib/libmosquitto.so.${SOVERSION} +endif ifeq ($(UNAME),SunOS) ifeq ($(CC),cc) diff --git a/lib/Makefile b/lib/Makefile index 3a293a8a..06577152 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -38,19 +38,28 @@ MOSQ_OBJS=mosquitto.o \ util_mosq.o \ will_mosq.o -ALL_DEPS=libmosquitto.so.${SOVERSION} +ALL_DEPS:= + +ifeq ($(WITH_SHARED_LIBRARIES),yes) + ALL_DEPS+=libmosquitto.so.${SOVERSION} +endif ifeq ($(WITH_STATIC_LIBRARIES),yes) ALL_DEPS+=libmosquitto.a endif all : ${ALL_DEPS} +ifeq ($(WITH_SHARED_LIBRARIES),yes) $(MAKE) -C cpp +endif install : all $(INSTALL) -d "${DESTDIR}$(prefix)/lib${LIB_SUFFIX}/" + +ifeq ($(WITH_SHARED_LIBRARIES),yes) $(INSTALL) ${STRIP_OPTS} libmosquitto.so.${SOVERSION} "${DESTDIR}${prefix}/lib${LIB_SUFFIX}/libmosquitto.so.${SOVERSION}" ln -sf libmosquitto.so.${SOVERSION} "${DESTDIR}${prefix}/lib${LIB_SUFFIX}/libmosquitto.so" +endif ifeq ($(WITH_STATIC_LIBRARIES),yes) $(INSTALL) libmosquitto.a "${DESTDIR}${prefix}/lib${LIB_SUFFIX}/libmosquitto.a" ${CROSS_COMPILE}${STRIP} -g --strip-unneeded "${DESTDIR}${prefix}/lib${LIB_SUFFIX}/libmosquitto.a" @@ -60,7 +69,9 @@ endif $(INSTALL) -d "${DESTDIR}$(prefix)/lib${LIB_SUFFIX}/pkgconfig" $(INSTALL) -m644 ../libmosquitto.pc.in "${DESTDIR}$(prefix)/lib${LIB_SUFFIX}/pkgconfig/libmosquitto.pc" sed -i -e "s#@CMAKE_INSTALL_PREFIX@#$(prefix)#" -e "s#@VERSION@#$(VERSION)#" "${DESTDIR}$(prefix)/lib${LIB_SUFFIX}/pkgconfig/libmosquitto.pc" +ifeq ($(WITH_SHARED_LIBRARIES),yes) $(MAKE) -C cpp install +endif uninstall : -rm -f "${DESTDIR}${prefix}/lib${LIB_SUFFIX}/libmosquitto.so.${SOVERSION}"