Commit fe57fdaa authored by Ian Craggs's avatar Ian Craggs

Add USE_NAMED_SEMAPHORES to Mac OSX compile options

Bug: 407343
parent 92824a94
...@@ -232,7 +232,7 @@ MQTTLIB_A_TARGET = ${blddir}/lib${MQTTLIB_A}.so.${VERSION} ...@@ -232,7 +232,7 @@ MQTTLIB_A_TARGET = ${blddir}/lib${MQTTLIB_A}.so.${VERSION}
MQTTLIB_AS_TARGET = ${blddir}/lib${MQTTLIB_AS}.so.${VERSION} MQTTLIB_AS_TARGET = ${blddir}/lib${MQTTLIB_AS}.so.${VERSION}
MQTTVERSION_TARGET = ${blddir}/MQTTVersion MQTTVERSION_TARGET = ${blddir}/MQTTVersion
CCFLAGS_SO = -g -fPIC -Os -Wall -fvisibility=hidden -Wno-deprecated-declarations CCFLAGS_SO = -g -fPIC -Os -Wall -fvisibility=hidden -Wno-deprecated-declarations -DUSE_NAMED_SEMAPHORES
FLAGS_EXE = -I ${srcdir} -lpthread -L ${blddir} 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_C = -shared -Wl,-install_name,lib$(MQTTLIB_C).so.${MAJOR_VERSION} -Wl,-init,_MQTTClient_init -lpthread
......
#*******************************************************************************
# Copyright (c) 2009, 2013 IBM Corp.
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# and Eclipse Distribution License v1.0 which accompany this distribution.
#
# The Eclipse Public License is available at
# http://www.eclipse.org/legal/epl-v10.html
# and the Eclipse Distribution License is available at
# http://www.eclipse.org/org/documents/edl-v10.php.
#
# Contributors:
# Ian Craggs - initial API and implementation and/or initial documentation
# Allan Stockdill-Mander - SSL updates
# Andy Piper - various fixes
#*******************************************************************************/
# Build output is produced in the current directory.
# MQTTCLIENT_DIR must point to the base directory containing the MQTT client source code.
# Example: make -f makefile MQTTCLIENT_DIR=V3Client/MQTTClient
# Note: this makefile requires gnu make which you may need to obtain if compiling on AIX or Solaris
# Note: on OS X you should install XCode and the associated command-line tools
ifndef MQTTCLIENT_DIR
MQTTCLIENT_DIR = $(CURDIR)
endif
ifndef SSL_DIR
SSL_DIR = ${MQTTCLIENT_DIR}/../../../../source/openssl-1.0.1c/
endif
ifndef SAMPLES_DIR
SAMPLES_DIR = ${SSL_DIR}/../com.ibm.mq.mqxr.listener/SDK/clients/c/samples/
endif
MQTTLIB = mqttv3c
VPATH = ${MQTTCLIENT_DIR}
ALL_SOURCE_FILES = $(wildcard $(MQTTCLIENT_DIR)/*.c)
SOURCE_FILES = $(filter-out $(MQTTCLIENT_DIR)/MQTTAsync.c $(MQTTCLIENT_DIR)/MQTTVersion.c $(MQTTCLIENT_DIR)/SSLSocket.c, $(ALL_SOURCE_FILES))
ALL_HEADERS = $(MQTTCLIENT_DIR)/*.h
HEADERS = $(filter-out $(MQTTCLIENT_DIR)/MQTTAsync.h, $(ALL_HEADERS))
MQTTLIB_S = mqttv3cs
SOURCE_FILES_S = $(filter-out $(MQTTCLIENT_DIR)/MQTTAsync.c $(MQTTCLIENT_DIR)/MQTTVersion.c, $(ALL_SOURCE_FILES))
MQTTLIB_A = mqttv3a
SOURCE_FILES_A = $(filter-out $(MQTTCLIENT_DIR)/MQTTClient.c $(MQTTCLIENT_DIR)/MQTTVersion.c $(MQTTCLIENT_DIR)/SSLSocket.c, $(ALL_SOURCE_FILES))
HEADERS_A = $(MQTTCLIENT_DIR)/*.h
MQTTLIB_AS = mqttv3as
SOURCE_FILES_AS = $(filter-out $(MQTTCLIENT_DIR)/MQTTClient.c $(MQTTCLIENT_DIR)/MQTTVersion.c, $(ALL_SOURCE_FILES))
# In most cases the targets will be built for the native platform. However, to allow for cross compiling,
# a target platform variable can be set to override the platform choice. If this variable is set to
# a recognised string (currently just 'Arm') the appropriate values of OSTYPE and MACHINETYPE are set.
ifeq ($(TARGET_PLATFORM),Arm)
OSTYPE = Linux
MACHINETYPE = Arm
else
ifeq ($(OS),Windows_NT)
OSTYPE = $(OS)
else
OSTYPE = $(shell uname -s)
MACHINETYPE = $(shell uname -m)
endif
endif
ifeq ($(OSTYPE),Linux)
ifeq ($(MACHINETYPE),x86_64)
CC = gcc
CCFLAGS_SO = -fPIC -Os -Wall -I ${SSL_DIR}/include -fvisibility=hidden
CCFLAGS_EXE = -I ${MQTTCLIENT_DIR}
LDFLAGS = -shared -Wl,-soname,lib${MQTTLIB}.so
LDFLAGS_S = -shared -Wl,-soname,lib${MQTTLIB_S}.so -ldl -Wl,-whole-archive -L${SSL_DIR}/output/lib -lcrypto -lssl -Wl,-no-whole-archive
LDFLAGS_A = -shared -Wl,-soname,lib${MQTTLIB_A}.so
LDFLAGS_AS = -shared -Wl,-soname,lib${MQTTLIB_AS}.so -ldl -Wl,-whole-archive -L${SSL_DIR}/output/lib -lcrypto -lssl -Wl,-no-whole-archive
LDFLAGS_EXE = -lpthread
MQTTLIB_IA64 = linux_ia64/lib${MQTTLIB}.so
MQTTLIB_IA64_S = linux_ia64/lib${MQTTLIB_S}.so
MQTTLIB_IA64_A = linux_ia64/lib${MQTTLIB_A}.so
MQTTLIB_IA64_AS = linux_ia64/lib${MQTTLIB_AS}.so
ifdef BUILD_SAMPLES
all: linux_ia64 ${MQTTLIB_IA64} ${MQTTLIB_IA64_A} ${MQTTLIB_IA64_S} ${MQTTLIB_IA64_AS} samples
else
all: linux_ia64 ${MQTTLIB_IA64} ${MQTTLIB_IA64_A} ${MQTTLIB_IA64_S} ${MQTTLIB_IA64_AS}
endif
linux_ia64:
-mkdir linux_ia64
samples:
-mkdir ${SAMPLES_DIR}/linux_ia64
${CC} -m64 -I ${MQTTCLIENT_DIR} -L ${MQTTCLIENT_DIR}/linux_ia64 -o ${SAMPLES_DIR}/linux_ia64/MQTTV3Sample ${SAMPLES_DIR}/MQTTV3Sample.c -lmqttv3c -lpthread
${CC} -m64 -I ${MQTTCLIENT_DIR} -L ${MQTTCLIENT_DIR}/linux_ia64 -o ${SAMPLES_DIR}/linux_ia64/MQTTV3SSample ${SAMPLES_DIR}/MQTTV3SSample.c -lmqttv3cs -lpthread
${CC} -m64 -I ${MQTTCLIENT_DIR} -L ${MQTTCLIENT_DIR}/linux_ia64 -o ${SAMPLES_DIR}/linux_ia64/MQTTV3ASample ${SAMPLES_DIR}/MQTTV3ASample.c -lmqttv3a -lpthread
${CC} -m64 -I ${MQTTCLIENT_DIR} -L ${MQTTCLIENT_DIR}/linux_ia64 -o ${SAMPLES_DIR}/linux_ia64/MQTTV3ASSample ${SAMPLES_DIR}/MQTTV3ASSample.c -lmqttv3as -lpthread
${MQTTLIB_IA64}: ${SOURCE_FILES} ${HEADERS}
${CC} -m64 ${CCFLAGS_SO} ${LDFLAGS} -o $@ ${SOURCE_FILES}
strip $@
${MQTTLIB_IA64_S}: ${SOURCE_FILES_S} ${HEADERS}
${CC} -m64 ${CCFLAGS_SO} ${LDFLAGS_S} -o $@ ${SOURCE_FILES_S} -DOPENSSL
strip $@
${MQTTLIB_IA64_A}: ${SOURCE_FILES_A} ${HEADERS_A}
${CC} -m64 ${CCFLAGS_SO} ${LDFLAGS_A} -o $@ ${SOURCE_FILES_A}
strip $@
${MQTTLIB_IA64_AS}: ${SOURCE_FILES_AS} ${HEADERS_A}
${CC} -m64 ${CCFLAGS_SO} ${LDFLAGS_AS} -o $@ ${SOURCE_FILES_AS} -DOPENSSL
strip $@
else
ifeq ($(MACHINETYPE),ppc64)
CC = gcc
CCFLAGS_SO = -fPIC -Os -Wall -I ${SSL_DIR}/include -fvisibility=hidden
CCFLAGS_EXE = -I ${MQTTCLIENT_DIR}
LDFLAGS = -shared -Wl,-soname,lib${MQTTLIB}.so
LDFLAGS_S = -shared -Wl,-soname,lib${MQTTLIB_S}.so -ldl -Wl,-whole-archive -L${SSL_DIR}/output/lib -lcrypto -lssl -Wl,-no-whole-archive
LDFLAGS_A = -shared -Wl,-soname,lib${MQTTLIB_A}.so
LDFLAGS_AS = -shared -Wl,-soname,lib${MQTTLIB_AS}.so -ldl -Wl,-whole-archive -L${SSL_DIR}/output/lib -lcrypto -lssl -Wl,-no-whole-archive
LDFLAGS_EXE = -lpthread
MQTTLIB_PPC64 = linux_ppc64/lib${MQTTLIB}.so
MQTTLIB_PPC64_S = linux_ppc64/lib${MQTTLIB_S}.so
MQTTLIB_PPC64_A = linux_ppc64/lib${MQTTLIB_A}.so
MQTTLIB_PPC64_AS = linux_ppc64/lib${MQTTLIB_AS}.so
all: linux_ppc64 ${MQTTLIB_PPC64} ${MQTTLIB_PPC64_A} #${MQTTLIB_PPC64_S} ${MQTTLIB_PPC64_AS}
linux_ppc64:
-mkdir linux_ppc64
${MQTTLIB_PPC64}: ${SOURCE_FILES} ${HEADERS}
${CC} -m64 ${CCFLAGS_SO} ${LDFLAGS} -o $@ ${SOURCE_FILES}
strip $@
${MQTTLIB_PPC64_S}: ${SOURCE_FILES_S} ${HEADERS}
${CC} -m64 ${CCFLAGS_SO} ${LDFLAGS_S} -o $@ ${SOURCE_FILES_S} -DOPENSSL
strip $@
${MQTTLIB_PPC64_A}: ${SOURCE_FILES_A} ${HEADERS_A}
${CC} -m64 ${CCFLAGS_SO} ${LDFLAGS_A} -o $@ ${SOURCE_FILES_A}
strip $@
${MQTTLIB_PPC64_AS}: ${SOURCE_FILES_AS} ${HEADERS_A}
${CC} -m64 ${CCFLAGS_SO} ${LDFLAGS_AS} -o $@ ${SOURCE_FILES_AS} -DOPENSSL
strip $@
else
ifeq ($(MACHINETYPE),s390x)
CC = gcc
CCFLAGS_SO = -fPIC -Os -Wall -DREVERSED -fvisibility=hidden
CCFLAGS_EXE = -I ${MQTTCLIENT_DIR}
LDFLAGS = -shared -Wl,-soname,lib${MQTTLIB}.so
LDFLAGS_EXE = -lpthread
MQTTLIB_390 = linux_s390x/lib${MQTTLIB}.so
all: ${MQTTLIB_390}
${MQTTLIB_390}: ${SOURCE_FILES} ${HEADERS}
-mkdir linux_s390x
${CC} -m64 ${CCFLAGS_SO} ${LDFLAGS} -o $@ ${SOURCE_FILES}
strip $@
else
ifeq ($(MACHINETYPE),Arm)
CC = gcc
# ARM_GLIBC_CC = arm-linux-gcc
# ARM_UCLIBC_CC = ~/x-tools/arm-unknown-linux-uclibcgnueabi/bin/arm-unknown-linux-uclibcgnueabi-gcc
ifndef ARM_GLIBC_CC
ARM_GLIBC_CC = arm-linux-gcc
endif
ifndef ARM_UCLIBC_CC
ARM_UCLIBC_CC = arm-unknown-linux-uclibcgnueabi-gcc
endif
ifndef ARM_GLIBC_STRIP
ARM_GLIBC_STRIP = $(subst -gcc,-strip,${ARM_GLIBC_CC})
endif
ifndef ARM_UCLIBC_STRIP
ARM_UCLIBC_STRIP = $(subst -gcc,-strip,${ARM_UCLIBC_CC})
endif
CCFLAGS_SO = -fPIC -Os -Wall -fvisibility=hidden
CCFLAGS_EXE = -I ${MQTTCLIENT_DIR}
LDFLAGS = -shared -Wl,-soname,lib${MQTTLIB}.so
LDFLAGS_EXE = -lpthread
MQTTLIB_ARM_GLIBC = linux_ARM_glibc/lib${MQTTLIB}.so
MQTTLIB_ARM_UCLIBC = linux_ARM_uclibc/lib${MQTTLIB}.so
MQTTLIB_ARM_GLIBC_A = linux_ARM_glibc/lib${MQTTLIB_A}.so
MQTTLIB_ARM_UCLIBC_A = linux_ARM_uclibc/lib${MQTTLIB_A}.so
all: ${MQTTLIB_ARM_GLIBC} ${MQTTLIB_ARM_UCLIBC}
${MQTTLIB_ARM_GLIBC}: ${SOURCE_FILES} ${HEADERS}
-mkdir linux_ARM_glibc
${ARM_GLIBC_CC} ${CCFLAGS_SO} ${LDFLAGS} -o $@ ${SOURCE_FILES}
${ARM_GLIBC_STRIP} $@
${MQTTLIB_ARM_UCLIBC}: ${SOURCE_FILES} ${HEADERS}
-mkdir linux_ARM_uclibc
${ARM_UCLIBC_CC} ${CCFLAGS_SO} ${LDFLAGS} -o $@ ${SOURCE_FILES}
${ARM_UCLIBC_STRIP} $@
else
CC = gcc
CCFLAGS_SO = -fPIC -Os -Wall -I ${SSL_DIR}/include -fvisibility=hidden
CCFLAGS_EXE = -I ${MQTTCLIENT_DIR}
LDFLAGS = -shared -Wl,-soname,lib${MQTTLIB}.so
LDFLAGS_S = -shared -Wl,-soname,lib${MQTTLIB_S}.so -ldl -Wl,-whole-archive -L${SSL_DIR}/output/lib -lcrypto -lssl -Wl,-no-whole-archive
LDFLAGS_A = -shared -Wl,-soname,lib${MQTTLIB_A}.so
LDFLAGS_AS = -shared -Wl,-soname,lib${MQTTLIB_AS}.so -ldl -Wl,-whole-archive -L/${SSL_DIR}/output/lib -lcrypto -lssl -Wl,-no-whole-archive
LDFLAGS_EXE = -lpthread
MQTTLIB_IA32 = linux_ia32/lib${MQTTLIB}.so
MQTTLIB_IA32_S = linux_ia32/lib${MQTTLIB_S}.so
MQTTLIB_IA32_A = linux_ia32/lib${MQTTLIB_A}.so
MQTTLIB_IA32_AS = linux_ia32/lib${MQTTLIB_AS}.so
ifdef BUILD_SAMPLES
all: linux_ia32 ${MQTTLIB_IA32_A} ${MQTTLIB_IA32} ${MQTTLIB_IA32_S} ${MQTTLIB_IA32_AS} samples
else
all: linux_ia32 ${MQTTLIB_IA32_A} ${MQTTLIB_IA32} ${MQTTLIB_IA32_S} ${MQTTLIB_IA32_AS}
endif
samples:
-mkdir ${SAMPLES_DIR}/linux_ia32
${CC} -m32 -I ${MQTTCLIENT_DIR} -L ${MQTTCLIENT_DIR}/linux_ia32 -o ${SAMPLES_DIR}/linux_ia32/MQTTV3Sample ${SAMPLES_DIR}/MQTTV3Sample.c -lmqttv3c -lpthread
${CC} -m32 -I ${MQTTCLIENT_DIR} -L ${MQTTCLIENT_DIR}/linux_ia32 -o ${SAMPLES_DIR}/linux_ia32/MQTTV3SSample ${SAMPLES_DIR}/MQTTV3SSample.c -lmqttv3cs -lpthread
${CC} -m32 -I ${MQTTCLIENT_DIR} -L ${MQTTCLIENT_DIR}/linux_ia32 -o ${SAMPLES_DIR}/linux_ia32/MQTTV3ASample ${SAMPLES_DIR}/MQTTV3ASample.c -lmqttv3a -lpthread
${CC} -m32 -I ${MQTTCLIENT_DIR} -L ${MQTTCLIENT_DIR}/linux_ia32 -o ${SAMPLES_DIR}/linux_ia32/MQTTV3ASSample ${SAMPLES_DIR}/MQTTV3ASSample.c -lmqttv3as -lpthread
linux_ia32:
-mkdir linux_ia32
${MQTTLIB_IA32}: ${SOURCE_FILES} ${HEADERS}
${CC} -m32 ${CCFLAGS_SO} ${LDFLAGS} -o $@ ${SOURCE_FILES}
strip $@
${MQTTLIB_IA32_S}: ${SOURCE_FILES_S} ${HEADERS}
${CC} -m32 ${CCFLAGS_SO} ${LDFLAGS_S} -o $@ ${SOURCE_FILES_S} -DOPENSSL
strip $@
${MQTTLIB_IA32_A}: ${SOURCE_FILES_A} ${HEADERS_A}
${CC} -m32 ${CCFLAGS_SO} ${LDFLAGS_A} -o $@ ${SOURCE_FILES_A}
strip $@
${MQTTLIB_IA32_AS}: ${SOURCE_FILES_AS} ${HEADERS_A}
${CC} -m32 ${CCFLAGS_SO} ${LDFLAGS_AS} -o $@ ${SOURCE_FILES_AS} -DOPENSSL
strip $@
endif
endif
endif
endif
endif
ifeq ($(OSTYPE),Darwin)
ifeq ($(MACHINETYPE),x86_64)
CC = gcc
CCFLAGS_SO = -fPIC -Os -Wall -I ${SSL_DIR}/include
CCFLAGS_EXE = -I ${MQTTCLIENT_DIR}
LDFLAGS = -shared -Wl,-install_name,lib${MQTTLIB}.so
LDFLAGS_S = -shared -Wl,-install_name,lib${MQTTLIB_S}.so -ldl -Wl,-all_load -L${SSL_DIR}/lib -lcrypto -lssl
LDFLAGS_A = -shared -Wl,-install_name,lib${MQTTLIB_A}.so
LDFLAGS_AS = -shared -Wl,-install_name,lib${MQTTLIB_AS}.so -ldl -Wl,-all_load -L${SSL_DIR}/lib -lcrypto -lssl
LDFLAGS_EXE = -lpthread
MQTTLIB_IA64 = darwin_ia64/lib${MQTTLIB}.so
MQTTLIB_IA64_S = darwin_ia64/lib${MQTTLIB_S}.so
MQTTLIB_IA64_A = darwin_ia64/lib${MQTTLIB_A}.so
MQTTLIB_IA64_AS = darwin_ia64/lib${MQTTLIB_AS}.so
ifdef BUILD_SAMPLES
all: darwin_ia64 ${MQTTLIB_IA64} ${MQTTLIB_IA64_A} ${MQTTLIB_IA64_S} ${MQTTLIB_IA64_AS} samples
else
all: darwin_ia64 ${MQTTLIB_IA64} ${MQTTLIB_IA64_A} ${MQTTLIB_IA64_S} ${MQTTLIB_IA64_AS}
endif
darwin_ia64:
-mkdir darwin_ia64
samples:
-mkdir ${SAMPLES_DIR}/darwin_ia64
${CC} -m64 -I ${MQTTCLIENT_DIR} -L ${MQTTCLIENT_DIR}/darwin_ia64 -o ${SAMPLES_DIR}/darwin_ia64/MQTTV3Sample ${SAMPLES_DIR}/MQTTV3Sample.c -lmqttv3c -lpthread
${CC} -m64 -I ${MQTTCLIENT_DIR} -L ${MQTTCLIENT_DIR}/darwin_ia64 -o ${SAMPLES_DIR}/darwin_ia64/MQTTV3SSample ${SAMPLES_DIR}/MQTTV3SSample.c -lmqttv3cs -lpthread
${CC} -m64 -I ${MQTTCLIENT_DIR} -L ${MQTTCLIENT_DIR}/darwin_ia64 -o ${SAMPLES_DIR}/darwin_ia64/MQTTV3ASample ${SAMPLES_DIR}/MQTTV3ASample.c -lmqttv3a -lpthread
${CC} -m64 -I ${MQTTCLIENT_DIR} -L ${MQTTCLIENT_DIR}/darwin_ia64 -o ${SAMPLES_DIR}/darwin_ia64/MQTTV3ASSample ${SAMPLES_DIR}/MQTTV3ASSample.c -lmqttv3as -lpthread
${MQTTLIB_IA64}: ${SOURCE_FILES} ${HEADERS}
${CC} -m64 ${CCFLAGS_SO} ${LDFLAGS} -o $@ ${SOURCE_FILES}
strip -x $@
${MQTTLIB_IA64_S}: ${SOURCE_FILES_S} ${HEADERS}
${CC} -m64 ${CCFLAGS_SO} ${LDFLAGS_S} -o $@ ${SOURCE_FILES_S} -DOPENSSL
strip -x $@
${MQTTLIB_IA64_A}: ${SOURCE_FILES_A} ${HEADERS_A}
${CC} -m64 ${CCFLAGS_SO} ${LDFLAGS_A} -o $@ ${SOURCE_FILES_A}
strip -x $@
${MQTTLIB_IA64_AS}: ${SOURCE_FILES_AS} ${HEADERS_A}
${CC} -m64 ${CCFLAGS_SO} ${LDFLAGS_AS} -o $@ ${SOURCE_FILES_AS} -DOPENSSL
strip -x $@
endif
endif
ifeq ($(OSTYPE),AIX)
# applications must be linked with -I. -L. -lmqttv3c -Wl,-brtl -pthread
CC = gxlc
CCFLAGS_SO = -fPIC -Os -shared -DREVERSED -DAIX
LDFLAGS = -Wl,-G
MQTTLIB_AIX = aix/lib${MQTTLIB}.so
all: ${MQTTLIB_AIX}
${MQTTLIB_AIX}: ${SOURCE_FILES} ${HEADERS}
-mkdir aix
${CC} ${CCFLAGS_SO} ${LDFLAGS} -o $@ ${SOURCE_FILES}
strip $@
endif
ifeq ($(OSTYPE),Windows_NT)
CC = cl
LD = link
# compiler flags
CPPFLAGS = /D "WIN32" /D "_UNICODE" /D "UNICODE" /D "_CRT_SECURE_NO_WARNINGS"
CFLAGS = /nologo /c /O2 /W3 /Fd /MD /TC
CPPFLAGS_S = /D "OPENSSL" /I ${SSL_DIR}/include
# linker flags
LINKFLAGS = /nologo /machine:x86 /manifest
WINLIBS = kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ws2_32.lib
WINLIBS_S = crypt32.lib ssleay32.lib libeay32.lib
SSLLIBPATH = /LIBPATH:${SSL_DIR}/output/lib
# Flags to link C libraries
LIBLINKFLAGS = /dll
IMP = /implib:$(@:.dll=.lib)
LIBPDB = /pdb:$(@:.dll=.pdb)
LIBMAP = /map:$(@:.dll=.map)
LIBLDFLAGS = $(LINKFLAGS) $(WINLIBS) $(LIBLINKFLAGS) $(IMP) $(LIBPDB) $(LIBMAP)
LIBLDFLAGS_S = $(LINKFLAGS) $(SSLLIBPATH) $(WINLIBS) $(WINLIBS_S) $(LIBLINKFLAGS) $(IMP) $(LIBPDB) $(LIBMAP)
# Flags to link C programs
MAINLINKFLAGS = /subsystem:console
EXEPDB = /pdb:$(@:.exe=.pdb)
EXEMAP = /map:$(@:.exe=.map)
MAINLDFLAGS = $(LINKFLAGS) $(WINLIBS) $(MAINLINKFLAGS) $(EXEPDB) $(EXEMAP)
MQTTLDLIB = windows_ia32/$(MQTTLIB).lib
MQTTDLL = windows_ia32/$(MQTTLIB).dll
MQTTLDLIB_A = windows_ia32/$(MQTTLIB_A).lib
MQTTDLL_A = windows_ia32/$(MQTTLIB_A).dll
MQTTLDLIB_AS = windows_ia32/$(MQTTLIB_AS).lib
MQTTDLL_AS = windows_ia32/$(MQTTLIB_AS).dll
MQTTLDLIB_S = windows_ia32/$(MQTTLIB_S).lib
MQTTDLL_S = windows_ia32/$(MQTTLIB_S).dll
ifdef BUILD_SAMPLES
all: windows_ia32 ${MQTTDLL} ${MQTTDLL_A} ${MQTTDLL_AS} ${MQTTDLL_S} samples
else
all: windows_ia32 ${MQTTDLL} ${MQTTDLL_A} ${MQTTDLL_AS} ${MQTTDLL_S}
endif
samples:
-mkdir ${SAMPLES_DIR}/windows_ia32
${CC} /nologo /D "WIN32" /I ${MQTTCLIENT_DIR} ${SAMPLES_DIR}/MQTTV3Sample.c /Fe${SAMPLES_DIR}/windows_ia32/ /link /LIBPATH:${MQTTCLIENT_DIR}/windows_ia32 /nologo /subsystem:console /manifest /machine:x86 mqttv3c.lib
${CC} /nologo /D "WIN32" /I ${MQTTCLIENT_DIR} ${SAMPLES_DIR}/MQTTV3CSSample.c /Fe${SAMPLES_DIR}/windows_ia32/ /link /LIBPATH:${MQTTCLIENT_DIR}/windows_ia32 /nologo /subsystem:console /manifest /machine:x86 mqttv3cs.lib
${CC} /nologo /D "WIN32" /I ${MQTTCLIENT_DIR} ${SAMPLES_DIR}/MQTTV3ASample.c /Fe${SAMPLES_DIR}/windows_ia32/ /link /LIBPATH:${MQTTCLIENT_DIR}/windows_ia32 /nologo /subsystem:console /manifest /machine:x86 mqttv3a.lib
${CC} /nologo /D "WIN32" /I ${MQTTCLIENT_DIR} ${SAMPLES_DIR}/MQTTV3ASSample.c /Fe${SAMPLES_DIR}/windows_ia32/ /link /LIBPATH:${MQTTCLIENT_DIR}/windows_ia32 /nologo /subsystem:console /manifest /machine:x86 mqttv3as.lib
windows_ia32:
-mkdir windows_ia32
$(MQTTDLL): ${SOURCE_FILES} ${HEADERS}
-rm -f *.obj
${CC} ${CPPFLAGS} ${CFLAGS} /I ${MQTTCLIENT_DIR} /I ${MQTTCLIENT_DIR}/.. /Fo ${SOURCE_FILES}
$(LD) $(LIBLDFLAGS) *.obj /out:$(MQTTDLL)
mt -manifest windows_ia32/mqttv3c.dll.manifest -outputresource:$(MQTTDLL)\;2
$(MQTTDLL_A): ${SOURCE_FILES_A} ${HEADERS_A}
-rm -f *.obj
${CC} ${CPPFLAGS} ${CFLAGS} /I ${MQTTCLIENT_DIR} /I ${MQTTCLIENT_DIR}/.. /Fo ${SOURCE_FILES_A}
$(LD) $(LIBLDFLAGS) *.obj /out:$(MQTTDLL_A)
mt -manifest windows_ia32/mqttv3a.dll.manifest -outputresource:$(MQTTDLL_A)\;2
$(MQTTDLL_S): ${SOURCE_FILES_S} ${HEADERS}
-rm -f *.obj
${CC} ${CPPFLAGS} ${CFLAGS} ${CPPFLAGS_S} /I ${MQTTCLIENT_DIR} /I ${MQTTCLIENT_DIR}/.. /Fo ${SOURCE_FILES_S}
$(LD) $(LIBLDFLAGS_S) *.obj /out:$(MQTTDLL_S)
mt -manifest windows_ia32/mqttv3cs.dll.manifest -outputresource:$(MQTTDLL_S)\;2
$(MQTTDLL_AS): ${SOURCE_FILES_AS} ${HEADERS}
-rm -f *.obj
${CC} ${CPPFLAGS} ${CFLAGS} ${CPPFLAGS_S} /I ${MQTTCLIENT_DIR} /I ${MQTTCLIENT_DIR}/.. /Fo ${SOURCE_FILES_AS}
$(LD) $(LIBLDFLAGS_S) *.obj /out:$(MQTTDLL_AS)
mt -manifest windows_ia32/mqttv3as.dll.manifest -outputresource:$(MQTTDLL_AS)\;2
endif
#########################################################################################################
# The following was how the C Clients were built using cygwin GNU make and has been left here as a reference
# This has been converted to use ming GNU make (which uses the native format of file names)
#
#$(MQTTDLL): $(shell cygpath -au ${SOURCE_FILES}) $(shell cygpath -au ${HEADERS})
# -mkdir windows_ia32
# ${CC} ${CPPFLAGS} ${CFLAGS} /I $(shell cygpath -am ${MQTTCLIENT_DIR}) /I $(shell cygpath -am ${MQTTCLIENT_DIR})/.. /Fo $(shell cygpath -am ${SOURCE_FILES})
# $(LD) $(LIBLDFLAGS) *.obj /out:$(MQTTDLL)
# mt -manifest windows_ia32/mqttv3c.dll.manifest -outputresource:$(MQTTDLL)\;2
#
#endif
#########################################################################################################
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