Commit 4a9f71be authored by Ian Craggs's avatar Ian Craggs

Add build for OSX

parent bf67bab4
#*******************************************************************************
# Copyright (c) 2009, 2013 IBM Corp.
# Copyright (c) 2009, 2014 IBM Corp.
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
......@@ -14,6 +14,7 @@
# Ian Craggs - initial API and implementation and/or initial documentation
# Allan Stockdill-Mander - SSL updates
# Andy Piper - various fixes
# Ian Craggs - OSX build
#*******************************************************************************/
# Note: on OS X you should install XCode and the associated command-line tools
......@@ -208,3 +209,128 @@ html:
endif
ifeq ($(OSTYPE),Darwin)
CC ?= gcc
ifndef INSTALL
INSTALL = install
endif
INSTALL_PROGRAM = $(INSTALL)
INSTALL_DATA = $(INSTALL) -m 644
DOXYGEN_COMMAND = doxygen
MAJOR_VERSION = 1
MINOR_VERSION = 0
VERSION = ${MAJOR_VERSION}.${MINOR_VERSION}
MQTTLIB_C_TARGET = ${blddir}/lib${MQTTLIB_C}.so.${VERSION}
MQTTLIB_CS_TARGET = ${blddir}/lib${MQTTLIB_CS}.so.${VERSION}
MQTTLIB_A_TARGET = ${blddir}/lib${MQTTLIB_A}.so.${VERSION}
MQTTLIB_AS_TARGET = ${blddir}/lib${MQTTLIB_AS}.so.${VERSION}
MQTTVERSION_TARGET = ${blddir}/MQTTVersion
CCFLAGS_SO = -g -fPIC -Os -Wall -fvisibility=hidden -Wno-deprecated-declarations
FLAGS_EXE = -I ${srcdir} -lpthread -L ${blddir}
LDFLAGS_C = -shared -Wl,-install_name,lib$(MQTTLIB_C).so.${MAJOR_VERSION} -Wl,-init,_MQTTClient_init -lpthread
LDFLAGS_CS = -shared -Wl,-install_name,lib$(MQTTLIB_CS).so.${MAJOR_VERSION} -lpthread -ldl -lcrypto -lssl -Wl,-init,_MQTTClient_init
LDFLAGS_A = -shared -Wl,-install_name,lib${MQTTLIB_A}.so.${MAJOR_VERSION} -Wl,-init,_MQTTAsync_init -lpthread
LDFLAGS_AS = -shared -Wl,-install_name,lib${MQTTLIB_AS}.so.${MAJOR_VERSION} -lpthread -ldl -lcrypto -lssl -Wl,-init,_MQTTAsync_init
all: build
build: | mkdir ${MQTTLIB_C_TARGET} ${MQTTLIB_CS_TARGET} ${MQTTLIB_A_TARGET} ${MQTTLIB_AS_TARGET} ${MQTTVERSION_TARGET} ${SYNC_SAMPLES} ${ASYNC_SAMPLES} ${SYNC_TESTS} ${SYNC_SSL_TESTS} ${ASYNC_TESTS} ${ASYNC_SSL_TESTS}
clean:
rm -rf ${blddir}/*
mkdir:
-mkdir -p ${blddir}/samples
-mkdir -p ${blddir}/test
${SYNC_TESTS}: ${blddir}/test/%: ${srcdir}/../test/%.c
${CC} -g -o ${blddir}/test/${basename ${+F}} $< -l${MQTTLIB_C} ${FLAGS_EXE}
${SYNC_SSL_TESTS}: ${blddir}/test/%: ${srcdir}/../test/%.c
${CC} -g -o ${blddir}/test/${basename ${+F}} $< -l${MQTTLIB_CS} ${FLAGS_EXE} -lssl
${ASYNC_TESTS}: ${blddir}/test/%: ${srcdir}/../test/%.c
${CC} -g -o ${blddir}/test/${basename ${+F}} $< -l${MQTTLIB_A} ${FLAGS_EXE}
${ASYNC_SSL_TESTS}: ${blddir}/test/%: ${srcdir}/../test/%.c
${CC} -g -o ${blddir}/test/${basename ${+F}} $< -l${MQTTLIB_AS} ${FLAGS_EXE} -lssl
${SYNC_SAMPLES}: ${blddir}/samples/%: ${srcdir}/samples/%.c
${CC} -o ${blddir}/samples/${basename ${+F}} $< -l${MQTTLIB_C} ${FLAGS_EXE}
${ASYNC_SAMPLES}: ${blddir}/samples/%: ${srcdir}/samples/%.c
${CC} -o ${blddir}/samples/${basename ${+F}} $< -l${MQTTLIB_A} ${FLAGS_EXE}
${MQTTLIB_C_TARGET}: ${SOURCE_FILES_C} ${HEADERS_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}
${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}
${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}
${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
${MQTTVERSION_TARGET}: $(srcdir)/MQTTVersion.c $(srcdir)/MQTTAsync.h
${CC} ${FLAGS_EXE} -o $@ -l${MQTTLIB_A} $(srcdir)/MQTTVersion.c -ldl
strip_options:
$(eval INSTALL_OPTS := -s)
install-strip: build strip_options install
install: build
$(INSTALL_DATA) ${INSTALL_OPTS} ${MQTTLIB_C_TARGET} $(DESTDIR)${libdir}
$(INSTALL_DATA) ${INSTALL_OPTS} ${MQTTLIB_CS_TARGET} $(DESTDIR)${libdir}
$(INSTALL_DATA) ${INSTALL_OPTS} ${MQTTLIB_A_TARGET} $(DESTDIR)${libdir}
$(INSTALL_DATA) ${INSTALL_OPTS} ${MQTTLIB_AS_TARGET} $(DESTDIR)${libdir}
$(INSTALL_PROGRAM) ${INSTALL_OPTS} ${MQTTVERSION_TARGET} $(DESTDIR)${bindir}
/sbin/ldconfig $(DESTDIR)${libdir}
ln -s lib$(MQTTLIB_C).so.${MAJOR_VERSION} $(DESTDIR)${libdir}/lib$(MQTTLIB_C).so
ln -s lib$(MQTTLIB_CS).so.${MAJOR_VERSION} $(DESTDIR)${libdir}/lib$(MQTTLIB_CS).so
ln -s lib$(MQTTLIB_A).so.${MAJOR_VERSION} $(DESTDIR)${libdir}/lib$(MQTTLIB_A).so
ln -s lib$(MQTTLIB_AS).so.${MAJOR_VERSION} $(DESTDIR)${libdir}/lib$(MQTTLIB_AS).so
$(INSTALL_DATA) ${srcdir}/MQTTAsync.h $(DESTDIR)${includedir}
$(INSTALL_DATA) ${srcdir}/MQTTClient.h $(DESTDIR)${includedir}
$(INSTALL_DATA) ${srcdir}/MQTTClientPersistence.h $(DESTDIR)${includedir}
uninstall:
rm $(DESTDIR)${libdir}/lib$(MQTTLIB_C).so.${VERSION}
rm $(DESTDIR)${libdir}/lib$(MQTTLIB_CS).so.${VERSION}
rm $(DESTDIR)${libdir}/lib$(MQTTLIB_A).so.${VERSION}
rm $(DESTDIR)${libdir}/lib$(MQTTLIB_AS).so.${VERSION}
rm $(DESTDIR)${bindir}/MQTTVersion
/sbin/ldconfig $(DESTDIR)${libdir}
rm $(DESTDIR)${libdir}/lib$(MQTTLIB_C).so
rm $(DESTDIR)${libdir}/lib$(MQTTLIB_CS).so
rm $(DESTDIR)${libdir}/lib$(MQTTLIB_A).so
rm $(DESTDIR)${libdir}/lib$(MQTTLIB_AS).so
rm $(DESTDIR)${includedir}/MQTTAsync.h
rm $(DESTDIR)${includedir}/MQTTClient.h
rm $(DESTDIR)${includedir}/MQTTClientPersistence.h
html:
-mkdir -p ${blddir}/doc
cd ${srcdir}; $(DOXYGEN_COMMAND) ../doc/DoxyfileV3ClientAPI
cd ${srcdir}; $(DOXYGEN_COMMAND) ../doc/DoxyfileV3AsyncAPI
cd ${srcdir}; $(DOXYGEN_COMMAND) ../doc/DoxyfileV3ClientInternal
endif
......@@ -24,7 +24,7 @@
</taskdef>
<property name="output.folder" value="build/output" />
<property name="release.version" value="0.4.0" />
<property name="release.version" value="0.9.0" />
<property name="libname" value="mqttv3c" />
<property name="libname.ssl" value="mqttv3cs" />
......@@ -73,6 +73,7 @@
<arg value="--connection" />
<arg value="tcp://${test.hostname}:${test.port}" />
<env key="LD_LIBRARY_PATH" path="${output.folder}" />
<env key="DYLD_LIBRARY_PATH" path="${output.folder}" />
</exec>
</target>
......@@ -81,6 +82,7 @@
<arg value="--hostname" />
<arg value="${test.hostname}" />
<env key="LD_LIBRARY_PATH" path="${output.folder}" />
<env key="DYLD_LIBRARY_PATH" path="${output.folder}" />
</exec>
</target>
......@@ -124,12 +126,29 @@
<exec executable="make" dir="."/>
</then>
</if>
</then>
</if>
<if>
<os family="windows"/>
<then>
<delete dir="${output.folder}" />
<!-- display gcc version -->
<exec executable="cl" failonerror="true">
</exec>
<if>
<available file="msbuild.exe"/>
<then>
<exec executable="msbuild" dir=".">
<arg line="Windows Build\Paho C MQTT APIs.sln"/>
<arg line="/p:Configuration=Release"/>
</exec>
</then>
</if>
</then>
</if>
</target>
<target name="package">
<target name="package">
<mkdir dir="${output.folder}/include"/>
<copy overwrite="true" todir="${output.folder}/include">
<fileset dir="src" includes="MQTTClient.h,MQTTAsync.h,MQTTClientPersistence.h"/>
......@@ -155,7 +174,7 @@
<exec executable="tar" failonerror="true" dir="${output.folder}">
<arg value="acf"/>
<arg value="paho-mqtt-c-unix-${release.version}.tar.gz"/>
<arg value="paho-mqtt-c-unix-incubation-${release.version}.tar.gz"/>
<arg value="about.html"/>
<arg value="notice.html"/>
<arg value="README.md"/>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment