diff --git a/IDE/QNX/README.md b/IDE/QNX/README.md new file mode 100644 index 000000000..95deb48a0 --- /dev/null +++ b/IDE/QNX/README.md @@ -0,0 +1,24 @@ +WOLFSSL_DIR is used to point to the directory where wolfSSL was built. By default it looks for an adjacent 'wolfssl' directory. i.e. + +``` +mkdir test +cd test +git clone https://github.com/wolfssl/wolfssl +git clone https://github.com/wolfssl/wolfmqtt +``` + +Then both projects can be imported as a Momentics IDE project. To first build wolfSSL view the README located at wolfssl/IDE/QNX/README.md. Then to build wolfMQTT start momentics with the workspace located at wolfmqtt/IDE/QNX/. Import the wolfmqtt project (File->Import->General->Existing Projects into Workspace, in "Select root directory" browse to the directory wolfmqtt/IDE/QNX/ and select the wolfmqtt project then click "Finish". + +To alter the location that the wolfSSL directory is set WOLFSSL_DIR as an env. variable. + +``` +export WOLFSSL_DIR=/my/wolfssl/directory/ +``` + +To build from the command line using the Makefile do the following: + +``` +source ~/qnx710/qnxsdp-env.sh +cd wolfmqtt/IDE/QNX/wolfmqtt +make +``` diff --git a/IDE/QNX/include.am b/IDE/QNX/include.am new file mode 100644 index 000000000..c4eb40487 --- /dev/null +++ b/IDE/QNX/include.am @@ -0,0 +1,8 @@ +# vim:ft=automake +# included from Top Level Makefile.am +# All paths should be given relative to the root + +EXTRA_DIST+= IDE/QNX/README.md +EXTRA_DIST+= IDE/QNX/wolfmqtt/.cproject +EXTRA_DIST+= IDE/QNX/wolfmqtt/.project +EXTRA_DIST+= IDE/QNX/wolfmqtt/Makefile diff --git a/IDE/QNX/wolfmqtt/.cproject b/IDE/QNX/wolfmqtt/.cproject new file mode 100644 index 000000000..5c2fa9d5d --- /dev/null +++ b/IDE/QNX/wolfmqtt/.cproject @@ -0,0 +1,578 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/IDE/QNX/wolfmqtt/.project b/IDE/QNX/wolfmqtt/.project new file mode 100644 index 000000000..fcdfb87c4 --- /dev/null +++ b/IDE/QNX/wolfmqtt/.project @@ -0,0 +1,33 @@ + + + wolfmqtt + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + + + src + 2 + $%7BPARENT-3-PROJECT_LOC%7D/src + + + diff --git a/IDE/QNX/wolfmqtt/Makefile b/IDE/QNX/wolfmqtt/Makefile new file mode 100644 index 000000000..bfc45e656 --- /dev/null +++ b/IDE/QNX/wolfmqtt/Makefile @@ -0,0 +1,76 @@ +ARTIFACT = libwolfmqtt.so + +#Build architecture/variant string, possible values: x86, armv7le, etc... +PLATFORM ?= armv7le + +#Build profile, possible values: release, debug, profile, coverage +BUILD_PROFILE ?= debug + +#Point to the location where wolfSSL was built +WOLFSSL_DIR ?= ../../../../wolfssl + +CONFIG_NAME ?= $(PLATFORM)-$(BUILD_PROFILE) +OUTPUT_DIR = build/$(CONFIG_NAME) +TARGET = $(OUTPUT_DIR)/$(ARTIFACT) + +#Compiler definitions + +CC = qcc -Vgcc_nto$(PLATFORM) +CXX = q++ -Vgcc_nto$(PLATFORM)_cxx +LD = $(CC) + +#User defined include/preprocessor flags and libraries + +INCLUDES += -I../../../ +INCLUDES += -I$(WOLFSSL_DIR) + +#Location for user_settings.h +INCLUDES += -I$(WOLFSSL_DIR)/IDE/QNX/wolfssl + +LIBS += -L$(WOLFSSL_DIR)/IDE/QNX/wolfssl/$(OUTPUT_DIR) -lwolfssl + +#Compiler flags for build profiles +CCFLAGS_release += -O2 +CCFLAGS_debug += -g -O0 -fno-builtin +CCFLAGS_coverage += -g -O0 -ftest-coverage -fprofile-arcs -nopipe -Wc,-auxbase-strip,$@ +LDFLAGS_coverage += -ftest-coverage -fprofile-arcs +CCFLAGS_profile += -g -O0 -finstrument-functions +LIBS_profile += -lprofilingS + +#Generic compiler flags (which include build type flags) +CCFLAGS_all += -DWOLFSSL_USER_SETTINGS -Wall -fmessage-length=0 +CCFLAGS_all += $(CCFLAGS_$(BUILD_PROFILE)) +#Shared library has to be compiled with -fPIC +CCFLAGS_all += -fPIC +LDFLAGS_all += $(LDFLAGS_$(BUILD_PROFILE)) +LIBS_all += $(LIBS_$(BUILD_PROFILE)) +DEPS = -Wp,-MMD,$(OUTPUT_DIR)/$(notdir $(@:%.o=%.d)),-MT,$(OUTPUT_DIR)/$(notdir $@) + +#Macro to expand files recursively: parameters $1 - directory, $2 - extension, i.e. cpp +rwildcard = $(wildcard $(addprefix $1/*.,$2)) $(foreach d,$(wildcard $1/*),$(call rwildcard,$d,$2)) + +#Source list +SRCS = $(call rwildcard, ../../../src, c) + +#Object files list +OBJS = $(addprefix $(OUTPUT_DIR)/,$(addsuffix .o, $(basename $(SRCS)))) + +#Compiling rule +$(OUTPUT_DIR)/%.o: %.c + @mkdir -p $(dir $(OUTPUT_DIR)/$(notdir $@)) + $(CC) -c $(DEPS) -o $(OUTPUT_DIR)/$(notdir $@) $(INCLUDES) $(CCFLAGS_all) $(CCFLAGS) $< + +#Linking rule +$(TARGET):$(OBJS) + $(LD) -shared -o $(TARGET) $(LDFLAGS_all) $(LDFLAGS) $(foreach f, $(OBJS), $(OUTPUT_DIR)/$(notdir $(f))) $(LIBS_all) $(LIBS) + +#Rules section for default compilation and linking +all: $(TARGET) + +clean: + rm -fr $(OUTPUT_DIR) + +rebuild: clean all + +#Inclusion of dependencies (object files to source and includes) +-include $(OBJS:%.o=%.d) \ No newline at end of file diff --git a/IDE/include.am b/IDE/include.am index 4dede2829..b09722395 100644 --- a/IDE/include.am +++ b/IDE/include.am @@ -6,3 +6,4 @@ include IDE/ARDUINO/include.am include IDE/F767ZI-TOPPERS/include.am include IDE/Microchip-Harmony/include.am include IDE/STM32CUBE/include.am +include IDE/QNX/include.am diff --git a/src/mqtt_packet.c b/src/mqtt_packet.c old mode 100755 new mode 100644