Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add QNX IDE, Makefile, and remove source code exec bit #317

Merged
merged 5 commits into from
Jul 18, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions IDE/QNX/README.md
Original file line number Diff line number Diff line change
@@ -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
```
8 changes: 8 additions & 0 deletions IDE/QNX/include.am
Original file line number Diff line number Diff line change
@@ -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
578 changes: 578 additions & 0 deletions IDE/QNX/wolfmqtt/.cproject

Large diffs are not rendered by default.

33 changes: 33 additions & 0 deletions IDE/QNX/wolfmqtt/.project
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>wolfmqtt</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
</natures>
<linkedResources>
<link>
<name>src</name>
<type>2</type>
<locationURI>$%7BPARENT-3-PROJECT_LOC%7D/src</locationURI>
</link>
</linkedResources>
</projectDescription>
76 changes: 76 additions & 0 deletions IDE/QNX/wolfmqtt/Makefile
Original file line number Diff line number Diff line change
@@ -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)
1 change: 1 addition & 0 deletions IDE/include.am
Original file line number Diff line number Diff line change
Expand Up @@ -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
Empty file modified src/mqtt_packet.c
100755 → 100644
Empty file.