From 1c929f7eb090103ae2b5a00356c5fb17a9b9f6a8 Mon Sep 17 00:00:00 2001 From: Ian Craggs Date: Tue, 10 Feb 2015 10:56:58 +0000 Subject: [PATCH 1/4] Add version number processing to Makefile Documentation and copyright date updates --- Makefile | 35 ++++++++++++++++++++++------------- src/MQTTAsync.h | 6 +++--- src/MQTTClient.h | 13 +++++++------ src/MQTTVersion.c | 4 ++-- 4 files changed, 34 insertions(+), 24 deletions(-) diff --git a/Makefile b/Makefile index 322825c2..17c1de17 100755 --- a/Makefile +++ b/Makefile @@ -23,6 +23,24 @@ SHELL = /bin/sh .PHONY: clean, mkdir, install, uninstall, html +ifndef release.version + release.version = 1.0.3 +endif + +# determine current platform +BUILD_TYPE ?= debug +ifeq ($(OS),Windows_NT) + OSTYPE ?= $(OS) + MACHINETYPE ?= $(PROCESSOR_ARCHITECTURE) +else + OSTYPE ?= $(shell uname -s) + MACHINETYPE ?= $(shell uname -m) + build.level = $(shell date) +endif # OS +ifeq ($(OSTYPE),linux) + OSTYPE = Linux +endif + # assume this is normally run in the main Paho directory ifndef srcdir srcdir = src @@ -78,19 +96,6 @@ MQTTLIB_CS = paho-mqtt3cs MQTTLIB_A = paho-mqtt3a MQTTLIB_AS = paho-mqtt3as -# determine current platform -BUILD_TYPE ?= debug -ifeq ($(OS),Windows_NT) - OSTYPE ?= $(OS) - MACHINETYPE ?= $(PROCESSOR_ARCHITECTURE) -else - OSTYPE ?= $(shell uname -s) - MACHINETYPE ?= $(shell uname -m) -endif # OS -ifeq ($(OSTYPE),linux) - OSTYPE = Linux -endif - CC ?= gcc ifndef INSTALL @@ -181,21 +186,25 @@ ${ASYNC_SAMPLES}: ${blddir}/samples/%: ${srcdir}/samples/%.c $(MQTTLIB_A_TARGET) ${CC} -o $@ $< -l${MQTTLIB_A} ${FLAGS_EXE} ${MQTTLIB_C_TARGET}: ${SOURCE_FILES_C} ${HEADERS_C} + sed -i "s/##MQTTCLIENT_VERSION_TAG##/${release.version}/g; s/##MQTTCLIENT_BUILD_TAG##/${build.level}/g" $(srcdir)/MQTTClient.c ${CC} ${CCFLAGS_SO} -o $@ ${SOURCE_FILES_C} ${LDFLAGS_C} -ln -s lib$(MQTTLIB_C).so.${VERSION} ${blddir}/lib$(MQTTLIB_C).so.${MAJOR_VERSION} -ln -s lib$(MQTTLIB_C).so.${MAJOR_VERSION} ${blddir}/lib$(MQTTLIB_C).so ${MQTTLIB_CS_TARGET}: ${SOURCE_FILES_CS} ${HEADERS_C} + sed -i "s/##MQTTCLIENT_VERSION_TAG##/${release.version}/g; s/##MQTTCLIENT_BUILD_TAG##/${build.level}/g" $(srcdir)/MQTTClient.c ${CC} ${CCFLAGS_SO} -o $@ ${SOURCE_FILES_CS} -DOPENSSL ${LDFLAGS_CS} -ln -s lib$(MQTTLIB_CS).so.${VERSION} ${blddir}/lib$(MQTTLIB_CS).so.${MAJOR_VERSION} -ln -s lib$(MQTTLIB_CS).so.${MAJOR_VERSION} ${blddir}/lib$(MQTTLIB_CS).so ${MQTTLIB_A_TARGET}: ${SOURCE_FILES_A} ${HEADERS_A} + sed -i "s/##MQTTCLIENT_VERSION_TAG##/${release.version}/g; s/##MQTTCLIENT_BUILD_TAG##/${build.level}/g" $(srcdir)/MQTTAsync.c ${CC} ${CCFLAGS_SO} -o $@ ${SOURCE_FILES_A} ${LDFLAGS_A} -ln -s lib$(MQTTLIB_A).so.${VERSION} ${blddir}/lib$(MQTTLIB_A).so.${MAJOR_VERSION} -ln -s lib$(MQTTLIB_A).so.${MAJOR_VERSION} ${blddir}/lib$(MQTTLIB_A).so ${MQTTLIB_AS_TARGET}: ${SOURCE_FILES_AS} ${HEADERS_A} + sed -i "s/##MQTTCLIENT_VERSION_TAG##/${release.version}/g; s/##MQTTCLIENT_BUILD_TAG##/${build.level}/g" $(srcdir)/MQTTAsync.c ${CC} ${CCFLAGS_SO} -o $@ ${SOURCE_FILES_AS} -DOPENSSL ${LDFLAGS_AS} -ln -s lib$(MQTTLIB_AS).so.${VERSION} ${blddir}/lib$(MQTTLIB_AS).so.${MAJOR_VERSION} -ln -s lib$(MQTTLIB_AS).so.${MAJOR_VERSION} ${blddir}/lib$(MQTTLIB_AS).so diff --git a/src/MQTTAsync.h b/src/MQTTAsync.h index c5d4d8f1..579ea80d 100644 --- a/src/MQTTAsync.h +++ b/src/MQTTAsync.h @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2014 IBM Corp. + * Copyright (c) 2009, 2015 IBM Corp. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -23,7 +23,7 @@ * @cond MQTTAsync_main * @mainpage Asynchronous MQTT client library for C * - * © Copyright IBM Corp. 2009, 2014 + * © Copyright IBM Corp. 2009, 2015 * * @brief An Asynchronous MQTT client library for C. * @@ -447,7 +447,7 @@ DLLExport int MQTTAsync_setCallbacks(MQTTAsync handle, void* context, MQTTAsync_ * @param serverURI A null-terminated string specifying the server to * which the client will connect. It takes the form protocol://host:port. * protocol must be tcp or ssl. For host, you can - * specify either an IP address or a domain name. For instance, to connect to + * specify either an IP address or a host name. For instance, to connect to * a server running on the local machines with the default MQTT port, specify * tcp://localhost:1883. * @param clientId The client identifier passed to the server when the diff --git a/src/MQTTClient.h b/src/MQTTClient.h index 222bea5c..21b74d7b 100644 --- a/src/MQTTClient.h +++ b/src/MQTTClient.h @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2014 IBM Corp. + * Copyright (c) 2009, 2015 IBM Corp. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -38,7 +38,7 @@ * @endcond * @cond MQTTClient_main * @mainpage MQTT Client library for C - * © Copyright IBM Corp. 2009, 2014 + * © Copyright IBM Corp. 2009, 2015 * * @brief An MQTT client library in C. * @@ -370,8 +370,9 @@ DLLExport int MQTTClient_setCallbacks(MQTTClient handle, void* context, MQTTClie * this function. * @param serverURI A null-terminated string specifying the server to * which the client will connect. It takes the form protocol://host:port. - * Currently, protocol must be tcp. For host, you can - * specify either an IP address or a domain name. For instance, to connect to + * Currently, protocol must be tcp or ssl. + * For host, you can + * specify either an IP address or a host name. For instance, to connect to * a server running on the local machines with the default MQTT port, specify * tcp://localhost:1883. * @param clientId The client identifier passed to the server when the @@ -567,13 +568,13 @@ typedef struct */ MQTTClient_willOptions* will; /** - * MQTT servers that support the MQTT v3.1 protocol provide authentication + * MQTT servers that support the MQTT v3.1.1 protocol provide authentication * and authorisation by user name and password. This is the user name * parameter. */ const char* username; /** - * MQTT servers that support the MQTT v3.1 protocol provide authentication + * MQTT servers that support the MQTT v3.1.1 protocol provide authentication * and authorisation by user name and password. This is the password * parameter. */ diff --git a/src/MQTTVersion.c b/src/MQTTVersion.c index a7a3fd18..32be1b3c 100644 --- a/src/MQTTVersion.c +++ b/src/MQTTVersion.c @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2012, 2014 IBM Corp. + * Copyright (c) 2012, 2015 IBM Corp. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -178,7 +178,7 @@ void printEyecatchers(char* filename) int main(int argc, char** argv) { printf("MQTTVersion: print the version strings of an MQTT client library\n"); - printf("Copyright (c) 2013 IBM Corp.\n"); + printf("Copyright (c) 2012, 2015 IBM Corp.\n"); if (argc == 1) { From 2928280eb5edbbcbb999e027330998dc9515e1dc Mon Sep 17 00:00:00 2001 From: Ian Craggs Date: Tue, 10 Feb 2015 11:02:55 +0000 Subject: [PATCH 2/4] Sed command that will work on the Mac --- Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 17c1de17..2d291c9c 100755 --- a/Makefile +++ b/Makefile @@ -186,25 +186,25 @@ ${ASYNC_SAMPLES}: ${blddir}/samples/%: ${srcdir}/samples/%.c $(MQTTLIB_A_TARGET) ${CC} -o $@ $< -l${MQTTLIB_A} ${FLAGS_EXE} ${MQTTLIB_C_TARGET}: ${SOURCE_FILES_C} ${HEADERS_C} - sed -i "s/##MQTTCLIENT_VERSION_TAG##/${release.version}/g; s/##MQTTCLIENT_BUILD_TAG##/${build.level}/g" $(srcdir)/MQTTClient.c + sed -i -e 's/##MQTTCLIENT_VERSION_TAG##/${release.version}/g' -e 's/##MQTTCLIENT_BUILD_TAG##/${build.level}/g' $(srcdir)/MQTTClient.c ${CC} ${CCFLAGS_SO} -o $@ ${SOURCE_FILES_C} ${LDFLAGS_C} -ln -s lib$(MQTTLIB_C).so.${VERSION} ${blddir}/lib$(MQTTLIB_C).so.${MAJOR_VERSION} -ln -s lib$(MQTTLIB_C).so.${MAJOR_VERSION} ${blddir}/lib$(MQTTLIB_C).so ${MQTTLIB_CS_TARGET}: ${SOURCE_FILES_CS} ${HEADERS_C} - sed -i "s/##MQTTCLIENT_VERSION_TAG##/${release.version}/g; s/##MQTTCLIENT_BUILD_TAG##/${build.level}/g" $(srcdir)/MQTTClient.c + sed -i -e 's/##MQTTCLIENT_VERSION_TAG##/${release.version}/g' -e 's/##MQTTCLIENT_BUILD_TAG##/${build.level}/g' $(srcdir)/MQTTClient.c ${CC} ${CCFLAGS_SO} -o $@ ${SOURCE_FILES_CS} -DOPENSSL ${LDFLAGS_CS} -ln -s lib$(MQTTLIB_CS).so.${VERSION} ${blddir}/lib$(MQTTLIB_CS).so.${MAJOR_VERSION} -ln -s lib$(MQTTLIB_CS).so.${MAJOR_VERSION} ${blddir}/lib$(MQTTLIB_CS).so ${MQTTLIB_A_TARGET}: ${SOURCE_FILES_A} ${HEADERS_A} - sed -i "s/##MQTTCLIENT_VERSION_TAG##/${release.version}/g; s/##MQTTCLIENT_BUILD_TAG##/${build.level}/g" $(srcdir)/MQTTAsync.c + sed -i -e "s/##MQTTCLIENT_VERSION_TAG##/${release.version}/g" -e "s/##MQTTCLIENT_BUILD_TAG##/${build.level}/g" $(srcdir)/MQTTAsync.c ${CC} ${CCFLAGS_SO} -o $@ ${SOURCE_FILES_A} ${LDFLAGS_A} -ln -s lib$(MQTTLIB_A).so.${VERSION} ${blddir}/lib$(MQTTLIB_A).so.${MAJOR_VERSION} -ln -s lib$(MQTTLIB_A).so.${MAJOR_VERSION} ${blddir}/lib$(MQTTLIB_A).so ${MQTTLIB_AS_TARGET}: ${SOURCE_FILES_AS} ${HEADERS_A} - sed -i "s/##MQTTCLIENT_VERSION_TAG##/${release.version}/g; s/##MQTTCLIENT_BUILD_TAG##/${build.level}/g" $(srcdir)/MQTTAsync.c + sed -i -e "s/##MQTTCLIENT_VERSION_TAG##/${release.version}/g" -e "s/##MQTTCLIENT_BUILD_TAG##/${build.level}/g" $(srcdir)/MQTTAsync.c ${CC} ${CCFLAGS_SO} -o $@ ${SOURCE_FILES_AS} -DOPENSSL ${LDFLAGS_AS} -ln -s lib$(MQTTLIB_AS).so.${VERSION} ${blddir}/lib$(MQTTLIB_AS).so.${MAJOR_VERSION} -ln -s lib$(MQTTLIB_AS).so.${MAJOR_VERSION} ${blddir}/lib$(MQTTLIB_AS).so From 95047f5895936fa576aa62e0851a82f75eb89d81 Mon Sep 17 00:00:00 2001 From: Ian Craggs Date: Tue, 10 Feb 2015 11:05:59 +0000 Subject: [PATCH 3/4] That didn't work on the Mac, try this --- Makefile | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 2d291c9c..4c330b35 100755 --- a/Makefile +++ b/Makefile @@ -186,25 +186,29 @@ ${ASYNC_SAMPLES}: ${blddir}/samples/%: ${srcdir}/samples/%.c $(MQTTLIB_A_TARGET) ${CC} -o $@ $< -l${MQTTLIB_A} ${FLAGS_EXE} ${MQTTLIB_C_TARGET}: ${SOURCE_FILES_C} ${HEADERS_C} - sed -i -e 's/##MQTTCLIENT_VERSION_TAG##/${release.version}/g' -e 's/##MQTTCLIENT_BUILD_TAG##/${build.level}/g' $(srcdir)/MQTTClient.c + sed -i 's/##MQTTCLIENT_VERSION_TAG##/${release.version}/g' $(srcdir)/MQTTClient.c + sed -i 's/##MQTTCLIENT_BUILD_TAG##/${build.level}/g' $(srcdir)/MQTTClient.c ${CC} ${CCFLAGS_SO} -o $@ ${SOURCE_FILES_C} ${LDFLAGS_C} -ln -s lib$(MQTTLIB_C).so.${VERSION} ${blddir}/lib$(MQTTLIB_C).so.${MAJOR_VERSION} -ln -s lib$(MQTTLIB_C).so.${MAJOR_VERSION} ${blddir}/lib$(MQTTLIB_C).so ${MQTTLIB_CS_TARGET}: ${SOURCE_FILES_CS} ${HEADERS_C} - sed -i -e 's/##MQTTCLIENT_VERSION_TAG##/${release.version}/g' -e 's/##MQTTCLIENT_BUILD_TAG##/${build.level}/g' $(srcdir)/MQTTClient.c + sed -i 's/##MQTTCLIENT_VERSION_TAG##/${release.version}/g' $(srcdir)/MQTTClient.c + sed -i 's/##MQTTCLIENT_BUILD_TAG##/${build.level}/g' $(srcdir)/MQTTClient.c ${CC} ${CCFLAGS_SO} -o $@ ${SOURCE_FILES_CS} -DOPENSSL ${LDFLAGS_CS} -ln -s lib$(MQTTLIB_CS).so.${VERSION} ${blddir}/lib$(MQTTLIB_CS).so.${MAJOR_VERSION} -ln -s lib$(MQTTLIB_CS).so.${MAJOR_VERSION} ${blddir}/lib$(MQTTLIB_CS).so ${MQTTLIB_A_TARGET}: ${SOURCE_FILES_A} ${HEADERS_A} - sed -i -e "s/##MQTTCLIENT_VERSION_TAG##/${release.version}/g" -e "s/##MQTTCLIENT_BUILD_TAG##/${build.level}/g" $(srcdir)/MQTTAsync.c + sed -i "s/##MQTTCLIENT_VERSION_TAG##/${release.version}/g" $(srcdir)/MQTTAsync.c + sed -i "s/##MQTTCLIENT_BUILD_TAG##/${build.level}/g" $(srcdir)/MQTTAsync.c ${CC} ${CCFLAGS_SO} -o $@ ${SOURCE_FILES_A} ${LDFLAGS_A} -ln -s lib$(MQTTLIB_A).so.${VERSION} ${blddir}/lib$(MQTTLIB_A).so.${MAJOR_VERSION} -ln -s lib$(MQTTLIB_A).so.${MAJOR_VERSION} ${blddir}/lib$(MQTTLIB_A).so ${MQTTLIB_AS_TARGET}: ${SOURCE_FILES_AS} ${HEADERS_A} - sed -i -e "s/##MQTTCLIENT_VERSION_TAG##/${release.version}/g" -e "s/##MQTTCLIENT_BUILD_TAG##/${build.level}/g" $(srcdir)/MQTTAsync.c + sed -i "s/##MQTTCLIENT_VERSION_TAG##/${release.version}/g" $(srcdir)/MQTTAsync.c + sed -i "s/##MQTTCLIENT_BUILD_TAG##/${build.level}/g" $(srcdir)/MQTTAsync.c ${CC} ${CCFLAGS_SO} -o $@ ${SOURCE_FILES_AS} -DOPENSSL ${LDFLAGS_AS} -ln -s lib$(MQTTLIB_AS).so.${VERSION} ${blddir}/lib$(MQTTLIB_AS).so.${MAJOR_VERSION} -ln -s lib$(MQTTLIB_AS).so.${MAJOR_VERSION} ${blddir}/lib$(MQTTLIB_AS).so From d2c47512a1c5c285536790a324c5a12fc300d61b Mon Sep 17 00:00:00 2001 From: Ian Craggs Date: Tue, 10 Feb 2015 11:22:22 +0000 Subject: [PATCH 4/4] Another go at the Mac Makefile --- Makefile | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index 4c330b35..9f9f002d 100755 --- a/Makefile +++ b/Makefile @@ -126,6 +126,8 @@ LDFLAGS_AS = $(LDFLAGS) -shared $(START_GROUP) -lpthread $(EXTRA_LIB) -lssl -lcr ifeq ($(OSTYPE),Linux) +SED_COMMAND = sed -i "s/\#\#MQTTCLIENT_VERSION_TAG\#\#/${release.version}/g; s/\#\#MQTTCLIENT_BUILD_TAG\#\#/${build.level}/g" + MQTTCLIENT_INIT = MQTTClient_init MQTTASYNC_INIT = MQTTAsync_init START_GROUP = -Wl,--start-group @@ -140,6 +142,8 @@ LDFLAGS_AS += -Wl,-soname,lib${MQTTLIB_AS}.so.${MAJOR_VERSION} -Wl,-no-whole-arc else ifeq ($(OSTYPE),Darwin) +SED_COMMAND = sed -i "" -e "s/\#\#MQTTCLIENT_VERSION_TAG\#\#/${release.version}/g" -e "s/\#\#MQTTCLIENT_BUILD_TAG\#\#/${build.level}/g" + MQTTCLIENT_INIT = _MQTTClient_init MQTTASYNC_INIT = _MQTTAsync_init START_GROUP = @@ -186,29 +190,25 @@ ${ASYNC_SAMPLES}: ${blddir}/samples/%: ${srcdir}/samples/%.c $(MQTTLIB_A_TARGET) ${CC} -o $@ $< -l${MQTTLIB_A} ${FLAGS_EXE} ${MQTTLIB_C_TARGET}: ${SOURCE_FILES_C} ${HEADERS_C} - sed -i 's/##MQTTCLIENT_VERSION_TAG##/${release.version}/g' $(srcdir)/MQTTClient.c - sed -i 's/##MQTTCLIENT_BUILD_TAG##/${build.level}/g' $(srcdir)/MQTTClient.c + $(SED_COMMAND) $(srcdir)/MQTTClient.c ${CC} ${CCFLAGS_SO} -o $@ ${SOURCE_FILES_C} ${LDFLAGS_C} -ln -s lib$(MQTTLIB_C).so.${VERSION} ${blddir}/lib$(MQTTLIB_C).so.${MAJOR_VERSION} -ln -s lib$(MQTTLIB_C).so.${MAJOR_VERSION} ${blddir}/lib$(MQTTLIB_C).so ${MQTTLIB_CS_TARGET}: ${SOURCE_FILES_CS} ${HEADERS_C} - sed -i 's/##MQTTCLIENT_VERSION_TAG##/${release.version}/g' $(srcdir)/MQTTClient.c - sed -i 's/##MQTTCLIENT_BUILD_TAG##/${build.level}/g' $(srcdir)/MQTTClient.c + $(SED_COMMAND) $(srcdir)/MQTTClient.c ${CC} ${CCFLAGS_SO} -o $@ ${SOURCE_FILES_CS} -DOPENSSL ${LDFLAGS_CS} -ln -s lib$(MQTTLIB_CS).so.${VERSION} ${blddir}/lib$(MQTTLIB_CS).so.${MAJOR_VERSION} -ln -s lib$(MQTTLIB_CS).so.${MAJOR_VERSION} ${blddir}/lib$(MQTTLIB_CS).so ${MQTTLIB_A_TARGET}: ${SOURCE_FILES_A} ${HEADERS_A} - sed -i "s/##MQTTCLIENT_VERSION_TAG##/${release.version}/g" $(srcdir)/MQTTAsync.c - sed -i "s/##MQTTCLIENT_BUILD_TAG##/${build.level}/g" $(srcdir)/MQTTAsync.c + $(SED_COMMAND) $(srcdir)/MQTTAsync.c ${CC} ${CCFLAGS_SO} -o $@ ${SOURCE_FILES_A} ${LDFLAGS_A} -ln -s lib$(MQTTLIB_A).so.${VERSION} ${blddir}/lib$(MQTTLIB_A).so.${MAJOR_VERSION} -ln -s lib$(MQTTLIB_A).so.${MAJOR_VERSION} ${blddir}/lib$(MQTTLIB_A).so ${MQTTLIB_AS_TARGET}: ${SOURCE_FILES_AS} ${HEADERS_A} - sed -i "s/##MQTTCLIENT_VERSION_TAG##/${release.version}/g" $(srcdir)/MQTTAsync.c - sed -i "s/##MQTTCLIENT_BUILD_TAG##/${build.level}/g" $(srcdir)/MQTTAsync.c + $(SED_COMMAND) $(srcdir)/MQTTAsync.c ${CC} ${CCFLAGS_SO} -o $@ ${SOURCE_FILES_AS} -DOPENSSL ${LDFLAGS_AS} -ln -s lib$(MQTTLIB_AS).so.${VERSION} ${blddir}/lib$(MQTTLIB_AS).so.${MAJOR_VERSION} -ln -s lib$(MQTTLIB_AS).so.${MAJOR_VERSION} ${blddir}/lib$(MQTTLIB_AS).so