diff --git a/CMakeLists.txt b/CMakeLists.txt
index d22098853..1a29d3ad4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -24,8 +24,8 @@ if(NOT CMAKE_C_STANDARD)
message(STATUS "Setting C99 as the C Standard")
endif()
endif()
-
set(CMAKE_C_STANDARD_REQUIRED TRUE)
+add_definitions(-DZENOH_C_STANDARD=${CMAKE_C_STANDARD})
# while in development, use timestamp for patch version:
string(TIMESTAMP PROJECT_VERSION_PATCH "%Y%m%ddev")
@@ -35,32 +35,16 @@ set(PROJECT_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE RELEASE)
endif()
-
string(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE)
-message(STATUS "Building in ${CMAKE_BUILD_TYPE} mode")
option(BUILD_SHARED_LIBS "Build shared libraries if ON, otherwise build static libraries" ON)
-message(STATUS "Build shared library: ${BUILD_SHARED_LIBS}")
-
option(PACKAGING "Use option on Linux to produce Debian and RPM packages." OFF)
-message(STATUS "Produce Debian and RPM packages: ${PACKAGING}")
-
option(BUILD_EXAMPLES "Use this to also build the examples." ON)
-message(STATUS "Build examples: ${BUILD_EXAMPLES}")
-
option(BUILD_TOOLS "Use this to also build the tools." OFF)
-message(STATUS "Build examples: ${BUILD_TOOLS}")
-
option(BUILD_TESTING "Use this to also build tests." ON)
-message(STATUS "Build tests: ${BUILD_TESTING}")
-
option(BUILD_INTEGRATION "Use this to also build integration tests." OFF)
-message(STATUS "Build integration: ${BUILD_INTEGRATION}")
-
option(ZENOH_DEBUG "Use this to set the ZENOH_DEBUG variable." 0)
-message(STATUS "Zenoh Level Log: ${ZENOH_DEBUG}")
-
-message(STATUS "Configuring for ${CMAKE_SYSTEM_NAME}")
+option(WITH_ZEPHYR "Build for Zephyr RTOS" OFF)
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
add_definitions(-DZENOH_LINUX)
@@ -76,13 +60,29 @@ elseif(CMAKE_SYSTEM_NAME MATCHES "Windows")
add_definitions(-DZENOH_WINDOWS -D_CRT_SECURE_NO_WARNINGS)
set(BUILD_SHARED_LIBS "OFF")
add_definitions(-DZENOH_NO_STDATOMIC)
+elseif(CMAKE_SYSTEM_NAME MATCHES "Generic")
+ if(WITH_ZEPHYR)
+ add_definitions(-DZENOH_ZEPHYR)
+ set(BUILD_SHARED_LIBS "OFF")
+ endif()
else()
message(FATAL_ERROR "zenoh-pico is not yet available on ${CMAKE_SYSTEM_NAME} platform")
return()
endif()
add_definitions(-DZENOH_DEBUG=${ZENOH_DEBUG})
-add_definitions(-DZENOH_C_STANDARD=${CMAKE_C_STANDARD})
+
+# Print summary of CMAKE configurations
+message(STATUS "Building in ${CMAKE_BUILD_TYPE} mode")
+message(STATUS "Build shared library: ${BUILD_SHARED_LIBS}")
+message(STATUS "Produce Debian and RPM packages: ${PACKAGING}")
+message(STATUS "Build examples: ${BUILD_EXAMPLES}")
+message(STATUS "Build examples: ${BUILD_TOOLS}")
+message(STATUS "Build tests: ${BUILD_TESTING}")
+message(STATUS "Build integration: ${BUILD_INTEGRATION}")
+message(STATUS "Zenoh Level Log: ${ZENOH_DEBUG}")
+message(STATUS "Build for Zephyr RTOS: ${WITH_ZEPHYR}")
+message(STATUS "Configuring for ${CMAKE_SYSTEM_NAME}")
if(SKBUILD)
set(INSTALL_RPATH "zenoh")
@@ -96,14 +96,18 @@ find_package(Threads REQUIRED)
if(CMAKE_BUILD_TYPE MATCHES "DEBUG")
if(UNIX)
add_compile_options(-c -Wall -Wextra -Werror -Wunused -Wstrict-prototypes -pipe -g -O0)
- elseif (MSVC)
+ elseif(MSVC)
add_compile_options(/W4 /WX /Od)
+ elseif(CMAKE_SYSTEM_NAME MATCHES "Generic")
+ add_compile_options(-Wall -Wextra -Wno-unused-parameter -Wmissing-prototypes -pipe -g -O0)
endif()
elseif(CMAKE_BUILD_TYPE MATCHES "RELEASE")
if(UNIX)
add_compile_options(-pipe -O3)
- elseif (MSVC)
+ elseif(MSVC)
add_compile_options(/O2)
+ elseif(CMAKE_SYSTEM_NAME MATCHES "Generic")
+ add_compile_options(-pipe -O3)
endif()
endif()
@@ -149,17 +153,16 @@ file(GLOB Sources "src/*.c"
"src/utils/*.c"
)
-if(CMAKE_SYSTEM_NAME MATCHES "Linux" OR CMAKE_SYSTEM_NAME MATCHES "Darwin" OR CMAKE_SYSTEM_NAME MATCHES "BSD")
+if(WITH_ZEPHYR)
+ file (GLOB Sources_Zephyr "src/system/zephyr/*.c")
+ list(APPEND Sources ${Sources_Zephyr})
+elseif(CMAKE_SYSTEM_NAME MATCHES "Linux" OR CMAKE_SYSTEM_NAME MATCHES "Darwin" OR CMAKE_SYSTEM_NAME MATCHES "BSD")
file (GLOB Sources_Unix "src/system/unix/*.c")
list(APPEND Sources ${Sources_Unix})
-endif()
-
-if(CMAKE_SYSTEM_NAME MATCHES "Emscripten")
+elseif(CMAKE_SYSTEM_NAME MATCHES "Emscripten")
file (GLOB Sources_Emscripten "src/system/emscripten/*.c")
list(APPEND Sources ${Sources_Emscripten})
-endif()
-
-if(CMAKE_SYSTEM_NAME MATCHES "Windows")
+elseif(CMAKE_SYSTEM_NAME MATCHES "Windows")
file (GLOB Sources_Windows "src/system/windows/*.c")
list(APPEND Sources ${Sources_Windows})
endif()
@@ -220,7 +223,7 @@ if(BUILD_EXAMPLES)
add_executable(z_info ${PROJECT_SOURCE_DIR}/examples/unix/c11/z_info.c)
add_executable(z_scout ${PROJECT_SOURCE_DIR}/examples/unix/c11/z_scout.c)
endif()
- elseif (MSVC)
+ elseif(MSVC)
add_executable(z_put ${PROJECT_SOURCE_DIR}/examples/windows/z_put.c)
add_executable(z_pub ${PROJECT_SOURCE_DIR}/examples/windows/z_pub.c)
add_executable(z_pub_st ${PROJECT_SOURCE_DIR}/examples/windows/z_pub_st.c)
@@ -233,76 +236,80 @@ if(BUILD_EXAMPLES)
add_executable(z_scout ${PROJECT_SOURCE_DIR}/examples/windows/z_scout.c)
endif()
- target_link_libraries(z_put ${Libname})
- target_link_libraries(z_pub ${Libname})
- target_link_libraries(z_pub_st ${Libname})
- target_link_libraries(z_sub ${Libname})
- target_link_libraries(z_sub_st ${Libname})
- target_link_libraries(z_pull ${Libname})
- target_link_libraries(z_get ${Libname})
- target_link_libraries(z_queryable ${Libname})
- target_link_libraries(z_info ${Libname})
- target_link_libraries(z_scout ${Libname})
-endif()
-
-if(BUILD_TOOLS)
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/tools)
- add_executable(z_keyexpr_canonizer ${PROJECT_SOURCE_DIR}/tools/z_keyexpr_canonizer.c)
- target_link_libraries(z_keyexpr_canonizer ${Libname})
+ if(UNIX OR MSVC)
+ target_link_libraries(z_put ${Libname})
+ target_link_libraries(z_pub ${Libname})
+ target_link_libraries(z_pub_st ${Libname})
+ target_link_libraries(z_sub ${Libname})
+ target_link_libraries(z_sub_st ${Libname})
+ target_link_libraries(z_pull ${Libname})
+ target_link_libraries(z_get ${Libname})
+ target_link_libraries(z_queryable ${Libname})
+ target_link_libraries(z_info ${Libname})
+ target_link_libraries(z_scout ${Libname})
+ endif()
endif()
-if(BUILD_TESTING)
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/tests")
-
- add_executable(z_data_struct_test ${PROJECT_SOURCE_DIR}/tests/z_data_struct_test.c)
- add_executable(z_endpoint_test ${PROJECT_SOURCE_DIR}/tests/z_endpoint_test.c)
- add_executable(z_iobuf_test ${PROJECT_SOURCE_DIR}/tests/z_iobuf_test.c)
- add_executable(z_msgcodec_test ${PROJECT_SOURCE_DIR}/tests/z_msgcodec_test.c)
- add_executable(z_keyexpr_test ${PROJECT_SOURCE_DIR}/tests/z_keyexpr_test.c)
-
- target_link_libraries(z_data_struct_test ${Libname})
- target_link_libraries(z_endpoint_test ${Libname})
- target_link_libraries(z_iobuf_test ${Libname})
- target_link_libraries(z_msgcodec_test ${Libname})
- target_link_libraries(z_keyexpr_test ${Libname})
-
- enable_testing()
- add_test(z_data_struct_test ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/z_data_struct_test)
- add_test(z_endpoint_test ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/z_endpoint_test)
- add_test(z_iobuf_test ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/z_iobuf_test)
- add_test(z_msgcodec_test ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/z_msgcodec_test)
- add_test(z_keyexpr_test ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/z_keyexpr_test)
-endif()
+if(UNIX OR MSVC)
+ if(BUILD_TOOLS)
+ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/tools)
+ add_executable(z_keyexpr_canonizer ${PROJECT_SOURCE_DIR}/tools/z_keyexpr_canonizer.c)
+ target_link_libraries(z_keyexpr_canonizer ${Libname})
+ endif()
-if(BUILD_MULTICAST)
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/tests")
+ if(BUILD_TESTING)
+ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/tests")
- if(CMAKE_C_STANDARD MATCHES "11")
- add_executable(z_peer_multicast_test ${PROJECT_SOURCE_DIR}/tests/z_peer_multicast_test.c)
- target_link_libraries(z_peer_multicast_test ${Libname})
+ add_executable(z_data_struct_test ${PROJECT_SOURCE_DIR}/tests/z_data_struct_test.c)
+ add_executable(z_endpoint_test ${PROJECT_SOURCE_DIR}/tests/z_endpoint_test.c)
+ add_executable(z_iobuf_test ${PROJECT_SOURCE_DIR}/tests/z_iobuf_test.c)
+ add_executable(z_msgcodec_test ${PROJECT_SOURCE_DIR}/tests/z_msgcodec_test.c)
+ add_executable(z_keyexpr_test ${PROJECT_SOURCE_DIR}/tests/z_keyexpr_test.c)
- configure_file(${PROJECT_SOURCE_DIR}/tests/multicast.sh ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/multicast.sh COPYONLY)
+ target_link_libraries(z_data_struct_test ${Libname})
+ target_link_libraries(z_endpoint_test ${Libname})
+ target_link_libraries(z_iobuf_test ${Libname})
+ target_link_libraries(z_msgcodec_test ${Libname})
+ target_link_libraries(z_keyexpr_test ${Libname})
enable_testing()
- add_test(z_peer_multicast_test bash ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/multicast.sh z_peer_multicast_test)
+ add_test(z_data_struct_test ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/z_data_struct_test)
+ add_test(z_endpoint_test ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/z_endpoint_test)
+ add_test(z_iobuf_test ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/z_iobuf_test)
+ add_test(z_msgcodec_test ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/z_msgcodec_test)
+ add_test(z_keyexpr_test ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/z_keyexpr_test)
endif()
-endif()
-if(BUILD_INTEGRATION)
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/tests")
+ if(BUILD_MULTICAST)
+ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/tests")
- if(CMAKE_C_STANDARD MATCHES "11")
- add_executable(z_client_test ${PROJECT_SOURCE_DIR}/tests/z_client_test.c)
- add_executable(z_api_alignment_test ${PROJECT_SOURCE_DIR}/tests/z_api_alignment_test.c)
- target_link_libraries(z_client_test ${Libname})
- target_link_libraries(z_api_alignment_test ${Libname})
+ if(CMAKE_C_STANDARD MATCHES "11")
+ add_executable(z_peer_multicast_test ${PROJECT_SOURCE_DIR}/tests/z_peer_multicast_test.c)
+ target_link_libraries(z_peer_multicast_test ${Libname})
- configure_file(${PROJECT_SOURCE_DIR}/tests/routed.sh ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/routed.sh COPYONLY)
- configure_file(${PROJECT_SOURCE_DIR}/tests/api.sh ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/api.sh COPYONLY)
+ configure_file(${PROJECT_SOURCE_DIR}/tests/multicast.sh ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/multicast.sh COPYONLY)
- enable_testing()
- add_test(z_client_test bash ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/routed.sh z_client_test)
- add_test(z_api_alignment_test bash ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/api.sh z_api_alignment_test)
+ enable_testing()
+ add_test(z_peer_multicast_test bash ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/multicast.sh z_peer_multicast_test)
+ endif()
+ endif()
+
+ if(BUILD_INTEGRATION)
+ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/tests")
+
+ if(CMAKE_C_STANDARD MATCHES "11")
+ add_executable(z_client_test ${PROJECT_SOURCE_DIR}/tests/z_client_test.c)
+ add_executable(z_api_alignment_test ${PROJECT_SOURCE_DIR}/tests/z_api_alignment_test.c)
+ target_link_libraries(z_client_test ${Libname})
+ target_link_libraries(z_api_alignment_test ${Libname})
+
+ configure_file(${PROJECT_SOURCE_DIR}/tests/routed.sh ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/routed.sh COPYONLY)
+ configure_file(${PROJECT_SOURCE_DIR}/tests/api.sh ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/api.sh COPYONLY)
+
+ enable_testing()
+ add_test(z_client_test bash ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/routed.sh z_client_test)
+ add_test(z_api_alignment_test bash ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/api.sh z_api_alignment_test)
+ endif()
endif()
endif()
diff --git a/extra_script.py b/extra_script.py
index 391eb8047..c454607cc 100644
--- a/extra_script.py
+++ b/extra_script.py
@@ -28,7 +28,7 @@
"-",
"-",
"-"]
- CPPDEFINES = ["ZENOH_ZEPHYR"]
+ CPPDEFINES = ["ZENOH_ZEPHYR", "ZENOH_PIO"]
elif FRAMEWORK == 'arduino':
PLATFORM = env.get("PIOPLATFORM")
diff --git a/include/zenoh-pico/system/platform/zephyr.h b/include/zenoh-pico/system/platform/zephyr.h
index 19c8795c3..ca3924e11 100644
--- a/include/zenoh-pico/system/platform/zephyr.h
+++ b/include/zenoh-pico/system/platform/zephyr.h
@@ -15,8 +15,13 @@
#ifndef ZENOH_PICO_SYSTEM_ZEPHYR_TYPES_H
#define ZENOH_PICO_SYSTEM_ZEPHYR_TYPES_H
-#include
+#if defined(ZENOH_PIO)
#include
+#else
+#include
+#endif
+
+#include
#include "zenoh-pico/config.h"
diff --git a/src/system/zephyr/network.c b/src/system/zephyr/network.c
index 4c8f7574e..e89afc107 100644
--- a/src/system/zephyr/network.c
+++ b/src/system/zephyr/network.c
@@ -12,7 +12,12 @@
// ZettaScale Zenoh Team,
//
+#if defined(ZENOH_PIO)
#include
+#else
+#include
+#endif
+
#include
#include
#include
diff --git a/src/system/zephyr/system.c b/src/system/zephyr/system.c
index d34dc2581..37c2333f1 100644
--- a/src/system/zephyr/system.c
+++ b/src/system/zephyr/system.c
@@ -12,8 +12,14 @@
// ZettaScale Zenoh Team,
//
+#if defined(ZENOH_PIO)
#include
#include
+#else
+#include
+#include
+#endif
+
#include
#include
#include