mirror of
https://github.com/open62541/open62541.git
synced 2025-06-03 04:00:21 +00:00
feat(ci): Add Zephyr build to the CI
This commit is contained in:
parent
148514c14e
commit
4562ed8938
28
.github/workflows/build_zephyr.yml
vendored
Normal file
28
.github/workflows/build_zephyr.yml
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
name: Zephyr Build
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: true
|
||||
- name: Build open62541 for Zephyr
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt -y install python3 python3-pip git cmake build-essential \
|
||||
ninja-build gperf ccache dfu-util device-tree-compiler wget \
|
||||
python3-dev python3-setuptools python3-tk python3-wheel xz-utils file \
|
||||
make gcc gcc-multilib g++-multilib libsdl2-dev libmagic1 curl
|
||||
python3 -m pip install west
|
||||
wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.17.0/zephyr-sdk-0.17.0_linux-x86_64.tar.xz
|
||||
tar xf zephyr-sdk-0.17.0_linux-x86_64.tar.xz
|
||||
./zephyr-sdk-0.17.0/setup.sh -t all -h -c
|
||||
cd examples/zephyr
|
||||
west init -l server
|
||||
west update
|
||||
python3 -m pip install -r zephyr/scripts/requirements.txt
|
||||
cd server
|
||||
west build -p -b native_sim
|
@ -1,5 +1,7 @@
|
||||
cmake_minimum_required(VERSION 3.13)
|
||||
# set(CMAKE_VERBOSE_MAKEFILE ON)
|
||||
|
||||
# Default android platform of android.toolchain.cmake is "19" but we need "24" for "epoll_create1" and "<ifaddrs.h>"
|
||||
set(ANDROID_PLATFORM 24)
|
||||
|
||||
if(UA_BUILD_FUZZING OR UA_BUILD_OSS_FUZZ OR UA_BUILD_FUZZING_CORPUS)
|
||||
project(open62541) # We need to have C++ support configured for fuzzing
|
||||
@ -7,13 +9,20 @@ else()
|
||||
project(open62541 C) # Do not look for a C++ compiler
|
||||
endif()
|
||||
|
||||
##################
|
||||
# CMake Packages #
|
||||
##################
|
||||
if(ZEPHYR_BASE)
|
||||
if(NOT CONFIG_OPEN62541)
|
||||
return()
|
||||
endif()
|
||||
include(arch/zephyr/zephyr.cmake)
|
||||
endif()
|
||||
|
||||
# set(CMAKE_VERBOSE_MAKEFILE ON)
|
||||
|
||||
set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/tools/cmake")
|
||||
|
||||
find_package(Python3 REQUIRED)
|
||||
find_package(Git)
|
||||
|
||||
include(AssignSourceGroup)
|
||||
include(GNUInstallDirs)
|
||||
include(open62541Macros)
|
||||
@ -76,15 +85,8 @@ elseif("${UA_ARCHITECTURE}" STREQUAL "win32")
|
||||
set(UA_ARCHITECTURE_WIN32 1)
|
||||
elseif("${UA_ARCHITECTURE}" STREQUAL "zephyr")
|
||||
set(UA_ARCHITECTURE_ZEPHYR 1)
|
||||
if(NOT CONFIG_OPEN62541)
|
||||
return()
|
||||
endif()
|
||||
include(zephyr/zephyr.cmake)
|
||||
endif()
|
||||
|
||||
# Default android platform of android.toolchain.cmake is "19" but we need "24" for "epoll_create1" and "<ifaddrs.h>"
|
||||
set(ANDROID_PLATFORM 24)
|
||||
|
||||
#################
|
||||
# Build Options #
|
||||
#################
|
||||
@ -520,7 +522,8 @@ function(add_cc_flag CC_FLAG)
|
||||
endfunction()
|
||||
|
||||
if((CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID STREQUAL "Clang") AND
|
||||
NOT ${UA_ARCHITECTURE} STREQUAL "zephyr")
|
||||
NOT ${UA_ARCHITECTURE} STREQUAL "zephyr")
|
||||
|
||||
check_add_cc_flag("-std=c99") # C99 mode
|
||||
check_add_cc_flag("-pipe") # Avoid writing temporary files (for compiler speed)
|
||||
check_add_cc_flag("-Wall") # Warnings
|
||||
@ -537,6 +540,7 @@ if((CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID STREQUAL "Clang") AND
|
||||
check_add_cc_flag("-Wno-maybe-uninitialized") # too many false positives
|
||||
|
||||
# Use a strict subset of the C and C++ languages
|
||||
|
||||
check_add_cc_flag("-Wc++-compat")
|
||||
|
||||
# Check that format strings (printf/scanf) are sane
|
||||
@ -547,12 +551,14 @@ if((CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID STREQUAL "Clang") AND
|
||||
# Check prototype definitions
|
||||
check_add_cc_flag("-Wmissing-prototypes")
|
||||
check_add_cc_flag("-Wstrict-prototypes")
|
||||
|
||||
check_add_cc_flag("-Wredundant-decls")
|
||||
|
||||
check_add_cc_flag("-Wuninitialized")
|
||||
check_add_cc_flag("-Winit-self")
|
||||
check_add_cc_flag("-Wcast-qual")
|
||||
check_add_cc_flag("-Wstrict-overflow")
|
||||
|
||||
check_add_cc_flag("-Wnested-externs")
|
||||
check_add_cc_flag("-Wmultichar")
|
||||
check_add_cc_flag("-Wundef")
|
||||
@ -920,23 +926,20 @@ list(APPEND plugin_sources
|
||||
${PROJECT_SOURCE_DIR}/arch/common/timer.c
|
||||
${PROJECT_SOURCE_DIR}/arch/common/eventloop_common.h
|
||||
${PROJECT_SOURCE_DIR}/arch/common/eventloop_common.c
|
||||
${PROJECT_SOURCE_DIR}/arch/posix/clock_posix.c
|
||||
${PROJECT_SOURCE_DIR}/arch/common/eventloop_mqtt.c
|
||||
${PROJECT_SOURCE_DIR}/arch/posix/eventloop_posix.h
|
||||
${PROJECT_SOURCE_DIR}/arch/posix/eventloop_posix.c
|
||||
${PROJECT_SOURCE_DIR}/arch/posix/eventloop_posix_tcp.c
|
||||
${PROJECT_SOURCE_DIR}/arch/posix/eventloop_posix_udp.c
|
||||
${PROJECT_SOURCE_DIR}/arch/posix/eventloop_posix_eth.c
|
||||
${PROJECT_SOURCE_DIR}/arch/posix/eventloop_posix_interrupt.c
|
||||
${PROJECT_SOURCE_DIR}/arch/common/eventloop_mqtt.c)
|
||||
|
||||
if(UA_ARCHITECTURE_ZEPHYR)
|
||||
list(APPEND plugin_sources
|
||||
${PROJECT_SOURCE_DIR}/arch/zephyr/clock_zephyr.c
|
||||
${PROJECT_SOURCE_DIR}/arch/zephyr/eventloop_zephyr.h
|
||||
${PROJECT_SOURCE_DIR}/arch/zephyr/eventloop_zephyr.c
|
||||
${PROJECT_SOURCE_DIR}/arch/zephyr/eventloop_zephyr_tcp.c)
|
||||
endif()
|
||||
|
||||
${PROJECT_SOURCE_DIR}/arch/posix/clock_posix.c
|
||||
${PROJECT_SOURCE_DIR}/arch/zephyr/eventloop_zephyr.h
|
||||
${PROJECT_SOURCE_DIR}/arch/zephyr/eventloop_zephyr.c
|
||||
${PROJECT_SOURCE_DIR}/arch/zephyr/eventloop_zephyr_tcp.c
|
||||
${PROJECT_SOURCE_DIR}/arch/zephyr/eventloop_zephyr_tcp.c
|
||||
${PROJECT_SOURCE_DIR}/arch/zephyr/clock_zephyr.c)
|
||||
|
||||
# For file based server configuration
|
||||
if(UA_ENABLE_JSON_ENCODING)
|
||||
list(APPEND plugin_headers ${PROJECT_SOURCE_DIR}/plugins/include/open62541/server_config_file_based.h)
|
||||
|
@ -1,4 +1,4 @@
|
||||
name: open62541
|
||||
build:
|
||||
cmake: .
|
||||
cmake: ..
|
||||
kconfig: zephyr/Kconfig
|
||||
|
@ -4,8 +4,8 @@ project(server)
|
||||
|
||||
# set(CMAKE_OBJCOPY /usr/bin/arm-linux-gnueabihf-objcopy)
|
||||
set(Python3_EXECUTABLE "/usr/bin/python3" CACHE STRING "" FORCE)
|
||||
set(EXTRA_ZEPHYR_MODULES ${CMAKE_CURRENT_SOURCE_DIR}/../..)
|
||||
set(EXTRA_ZEPHYR_MODULES ${CMAKE_CURRENT_SOURCE_DIR}/../../../arch)
|
||||
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
|
||||
|
||||
target_sources(app PRIVATE main.c)
|
||||
target_sources(app PRIVATE src/main.c)
|
||||
target_link_libraries(app PUBLIC open62541)
|
Loading…
Reference in New Issue
Block a user