mirror of https://github.com/eclipse/paho.mqtt.c
Fix build for QNX 8.0
Fixes the Make and CMake builds Changes: Code: - SHA1.c: endian handling via gulliver.h - Define AI_ADDRCONFIG=0, since it is not defined in all QNX versions CMake: - Add -D_QNX_SOURCE Makefile: - Removed -pthread, since is implied in QNX - Added -lsocket, which is mandatory in QNX for networking - Removed -ldl, since is not available in QNX - defaults to qcc for QNX and gcc for Linux and Darwin in Makefile Build instructions: cmake -DCMAKE_SYSTEM_NAME=QNX -B build -S . cmake --build build or make OS_TYPE=QNX This builds with qcc by default, but you can specify CC=ntoaarch64-gcc or CC=ntox86_64-gcc Signed-off-by: Jan Claußen <jan.claussen10@web.de>
This commit is contained in:
parent
4a939ddb01
commit
e6147936f5
45
Makefile
45
Makefile
|
|
@ -45,6 +45,13 @@ ifeq ($(OSTYPE),linux)
|
|||
OSTYPE = Linux
|
||||
endif
|
||||
|
||||
ifndef QNX_TARGET
|
||||
CC ?= gcc
|
||||
else
|
||||
CC ?= qcc
|
||||
OSTYPE = QNX
|
||||
endif
|
||||
|
||||
# assume this is normally run in the main Paho directory
|
||||
ifndef srcdir
|
||||
srcdir = src
|
||||
|
|
@ -123,8 +130,6 @@ MQTTLIB_CS = paho-mqtt3cs
|
|||
MQTTLIB_A = paho-mqtt3a
|
||||
MQTTLIB_AS = paho-mqtt3as
|
||||
|
||||
CC ?= gcc
|
||||
|
||||
ifndef INSTALL
|
||||
INSTALL = install
|
||||
endif
|
||||
|
|
@ -159,14 +164,14 @@ PAHO_CS_SUB_TARGET = ${blddir}/samples/${PAHO_CS_SUB_NAME}
|
|||
#FLAGS_EXES = $(LDFLAGS) -I ${srcdir} ${START_GROUP} -pthread -lssl -lcrypto ${END_GROUP} -L ${blddir}
|
||||
|
||||
CCFLAGS_SO = -g -fPIC $(CFLAGS) -D_GNU_SOURCE -Os -Wall -fvisibility=hidden -I$(blddir_work) -DPAHO_MQTT_EXPORTS=1
|
||||
FLAGS_EXE = $(LDFLAGS) -I ${srcdir} ${START_GROUP} -pthread ${GAI_LIB} ${END_GROUP} -L ${blddir}
|
||||
FLAGS_EXES = $(LDFLAGS) -I ${srcdir} ${START_GROUP} -pthread ${GAI_LIB} -lssl -lcrypto ${END_GROUP} -L ${blddir}
|
||||
FLAGS_EXE = $(LDFLAGS) -I ${srcdir} ${START_GROUP} ${THREAD_LIB} ${GAI_LIB} ${END_GROUP} -L ${blddir}
|
||||
FLAGS_EXES = $(LDFLAGS) -I ${srcdir} ${START_GROUP} ${THREAD_LIB} ${GAI_LIB} -lssl -lcrypto ${END_GROUP} -L ${blddir}
|
||||
|
||||
LDCONFIG ?= /sbin/ldconfig
|
||||
LDFLAGS_C = $(LDFLAGS) -shared -Wl,-init,$(MQTTCLIENT_INIT) $(START_GROUP) -pthread $(GAI_LIB) $(END_GROUP)
|
||||
LDFLAGS_CS = $(LDFLAGS) -shared $(START_GROUP) -pthread $(GAI_LIB) $(EXTRA_LIB) -lssl -lcrypto $(END_GROUP) -Wl,-init,$(MQTTCLIENT_INIT)
|
||||
LDFLAGS_A = $(LDFLAGS) -shared -Wl,-init,$(MQTTASYNC_INIT) $(START_GROUP) -pthread $(GAI_LIB) $(END_GROUP)
|
||||
LDFLAGS_AS = $(LDFLAGS) -shared $(START_GROUP) -pthread $(GAI_LIB) $(EXTRA_LIB) -lssl -lcrypto $(END_GROUP) -Wl,-init,$(MQTTASYNC_INIT)
|
||||
LDFLAGS_C = $(LDFLAGS) -shared -Wl,-init,$(MQTTCLIENT_INIT) $(START_GROUP) $(THREAD_LIB) $(GAI_LIB) $(END_GROUP)
|
||||
LDFLAGS_CS = $(LDFLAGS) -shared $(START_GROUP) $(THREAD_LIB) $(GAI_LIB) $(EXTRA_LIB) -lssl -lcrypto $(END_GROUP) -Wl,-init,$(MQTTCLIENT_INIT)
|
||||
LDFLAGS_A = $(LDFLAGS) -shared -Wl,-init,$(MQTTASYNC_INIT) $(START_GROUP) $(THREAD_LIB) $(GAI_LIB) $(END_GROUP)
|
||||
LDFLAGS_AS = $(LDFLAGS) -shared $(START_GROUP) $(THREAD_LIB) $(GAI_LIB) $(EXTRA_LIB) -lssl -lcrypto $(END_GROUP) -Wl,-init,$(MQTTASYNC_INIT)
|
||||
|
||||
SED_COMMAND = sed \
|
||||
-e "s/@CLIENT_VERSION@/${release.version}/g" \
|
||||
|
|
@ -181,12 +186,33 @@ END_GROUP = -Wl,--end-group
|
|||
|
||||
GAI_LIB = -lanl
|
||||
EXTRA_LIB = -ldl
|
||||
THREAD_LIB = -pthread
|
||||
|
||||
LDFLAGS_C += -Wl,-soname,lib$(MQTTLIB_C).so.${MAJOR_VERSION}
|
||||
LDFLAGS_CS += -Wl,-soname,lib$(MQTTLIB_CS).so.${MAJOR_VERSION} -Wl,-no-whole-archive
|
||||
LDFLAGS_A += -Wl,-soname,lib${MQTTLIB_A}.so.${MAJOR_VERSION}
|
||||
LDFLAGS_AS += -Wl,-soname,lib${MQTTLIB_AS}.so.${MAJOR_VERSION} -Wl,-no-whole-archive
|
||||
|
||||
else ifeq ($(OSTYPE),QNX)
|
||||
|
||||
MQTTCLIENT_INIT = MQTTClient_init
|
||||
MQTTASYNC_INIT = MQTTAsync_init
|
||||
START_GROUP =
|
||||
END_GROUP =
|
||||
|
||||
GAI_LIB = -lsocket
|
||||
EXTRA_LIB =
|
||||
THREAD_LIB =
|
||||
|
||||
LDFLAGS_C += -Wl,-soname,lib$(MQTTLIB_C).so.${MAJOR_VERSION}
|
||||
LDFLAGS_CS += -Wl,-soname,lib$(MQTTLIB_CS).so.${MAJOR_VERSION} -Wl,-no-whole-archive
|
||||
LDFLAGS_A += -Wl,-soname,lib${MQTTLIB_A}.so.${MAJOR_VERSION}
|
||||
LDFLAGS_AS += -Wl,-soname,lib${MQTTLIB_AS}.so.${MAJOR_VERSION} -Wl,-no-whole-archive
|
||||
|
||||
CCFLAGS_SO += -D_QNX_SOURCE
|
||||
|
||||
LDCONFIG = echo
|
||||
|
||||
else ifeq ($(OSTYPE),Darwin)
|
||||
|
||||
MQTTCLIENT_INIT = _MQTTClient_init
|
||||
|
|
@ -196,6 +222,7 @@ END_GROUP =
|
|||
|
||||
GAI_LIB =
|
||||
EXTRA_LIB = -ldl
|
||||
THREAD_LIB =
|
||||
|
||||
CCFLAGS_SO += -Wno-deprecated-declarations -DOSX -I /usr/local/opt/openssl/include
|
||||
LDFLAGS_C += -Wl,-install_name,lib$(MQTTLIB_C).so.${MAJOR_VERSION}
|
||||
|
|
@ -271,7 +298,7 @@ ${MQTTLIB_AS_TARGET}: ${SOURCE_FILES_AS} ${HEADERS_A} $(blddir_work)/VersionInfo
|
|||
-ln -s lib$(MQTTLIB_AS).so.${MAJOR_VERSION} ${blddir}/lib$(MQTTLIB_AS).so
|
||||
|
||||
${MQTTVERSION_TARGET}: $(srcdir)/MQTTVersion.c $(srcdir)/MQTTAsync.h $(MQTTLIB_A_TARGET)
|
||||
${CC} ${FLAGS_EXE} -o $@ -l${MQTTLIB_A} $(srcdir)/MQTTVersion.c -ldl
|
||||
${CC} ${FLAGS_EXE} -o $@ -l${MQTTLIB_A} $(srcdir)/MQTTVersion.c
|
||||
|
||||
strip_options:
|
||||
$(eval INSTALL_OPTS := -s)
|
||||
|
|
|
|||
|
|
@ -80,6 +80,7 @@ elseif(UNIX)
|
|||
set(LIBS_SYSTEM compat pthread)
|
||||
elseif(CMAKE_SYSTEM_NAME MATCHES "QNX")
|
||||
set(LIBS_SYSTEM c socket)
|
||||
add_definitions(-D_QNX_SOURCE)
|
||||
else()
|
||||
set(LIBS_SYSTEM c pthread)
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -16,6 +16,12 @@
|
|||
|
||||
#include "SHA1.h"
|
||||
|
||||
#if defined(__QNXNTO__)
|
||||
#include <gulliver.h>
|
||||
#define be32toh(x) ENDIAN_BE32(x)
|
||||
#define htobe32(x) ENDIAN_BE32(x)
|
||||
#endif
|
||||
|
||||
#if !defined(OPENSSL)
|
||||
#if defined(_WIN32)
|
||||
#pragma comment(lib, "crypt32.lib")
|
||||
|
|
|
|||
|
|
@ -62,8 +62,10 @@
|
|||
#include <arpa/inet.h>
|
||||
#include <netdb.h>
|
||||
#ifdef __QNXNTO__
|
||||
#ifndef AI_ADDRCONFIG
|
||||
#define AI_ADDRCONFIG 0
|
||||
#endif
|
||||
#endif
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <errno.h>
|
||||
|
|
|
|||
|
|
@ -15,6 +15,10 @@ elseif(UNIX)
|
|||
set(LIBS_SYSTEM c dl pthread)
|
||||
elseif (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
|
||||
set(LIBS_SYSTEM compat pthread)
|
||||
|
||||
elseif(CMAKE_SYSTEM_NAME MATCHES "QNX")
|
||||
set(LIBS_SYSTEM c socket)
|
||||
add_definitions(-D_QNX_SOURCE)
|
||||
else()
|
||||
set(LIBS_SYSTEM c pthread)
|
||||
endif()
|
||||
|
|
|
|||
Loading…
Reference in New Issue