Skip to content
Draft
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
27 changes: 18 additions & 9 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -161,22 +161,25 @@ jobs:
run: |
rm -rf ./build
mkdir -p ./build && cd ./build
cmake -DCMAKE_TOOLCHAIN_FILE="../ci/toolchains/TC-armv7-unknown-linux-gnueabihf.cmake" -DZENOHC_BUILD_WITH_SHARED_MEMORY=ON -DZENOHC_BUILD_WITH_UNSTABLE_API=ON ..
cmake -DCMAKE_TOOLCHAIN_FILE="../ci/toolchains/TC-armv7-unknown-linux-gnueabihf.cmake" -DZENOHC_BUILD_WITH_SHARED_MEMORY=ON -DZENOHC_BUILD_WITH_UNSTABLE_API=ON -DZENOHC_BUILD_ZENOHD=ON ..
cmake --build . --target examples
cmake --build . --target zenohd

- name: Cross compile for x86_64-unknown-linux-gnu
run: |
rm -rf ./build
mkdir -p ./build && cd ./build
cmake -DCMAKE_TOOLCHAIN_FILE="../ci/toolchains/TC-x86_64-unknown-linux-gnu.cmake" -DZENOHC_BUILD_WITH_SHARED_MEMORY=ON -DZENOHC_BUILD_WITH_UNSTABLE_API=ON ..
cmake -DCMAKE_TOOLCHAIN_FILE="../ci/toolchains/TC-x86_64-unknown-linux-gnu.cmake" -DZENOHC_BUILD_WITH_SHARED_MEMORY=ON -DZENOHC_BUILD_WITH_UNSTABLE_API=ON -DZENOHC_BUILD_ZENOHD=ON ..
cmake --build . --target examples
cmake --build . --target zenohd

- name: Cross compile for x86_64-pc-windows-gnu
run: |
rm -rf ./build
mkdir -p ./build && cd ./build
cmake -DCMAKE_TOOLCHAIN_FILE="../ci/toolchains/TC-x86_64-pc-windows-gnu.cmake" -DZENOHC_BUILD_WITH_SHARED_MEMORY=ON -DZENOHC_BUILD_WITH_UNSTABLE_API=ON ..
cmake -DCMAKE_TOOLCHAIN_FILE="../ci/toolchains/TC-x86_64-pc-windows-gnu.cmake" -DZENOHC_BUILD_WITH_SHARED_MEMORY=ON -DZENOHC_BUILD_WITH_UNSTABLE_API=ON -DZENOHC_BUILD_ZENOHD=ON ..
cmake --build . --target examples
cmake --build . --target zenohd

cross-compile-ubuntu:
name: Cross compile on ubuntu-latest
Expand Down Expand Up @@ -217,43 +220,49 @@ jobs:
run: |
rm -rf ./build
mkdir -p ./build && cd ./build
cmake -DCMAKE_TOOLCHAIN_FILE="../ci/toolchains/TC-arm-unknown-linux-gnueabi.cmake" -DZENOHC_BUILD_WITH_SHARED_MEMORY=ON -DZENOHC_BUILD_WITH_UNSTABLE_API=ON ..
cmake -DCMAKE_TOOLCHAIN_FILE="../ci/toolchains/TC-arm-unknown-linux-gnueabi.cmake" -DZENOHC_BUILD_WITH_SHARED_MEMORY=ON -DZENOHC_BUILD_WITH_UNSTABLE_API=ON -DZENOHC_BUILD_ZENOHD=ON ..
cmake --build . --target examples
cmake --build . --target zenohd

- name: Cross compile for arm-unknown-linux-gnueabihf
run: |
rm -rf ./build
mkdir -p ./build && cd ./build
cmake -DCMAKE_TOOLCHAIN_FILE="../ci/toolchains/TC-arm-unknown-linux-gnueabihf.cmake" -DZENOHC_BUILD_WITH_SHARED_MEMORY=ON -DZENOHC_BUILD_WITH_UNSTABLE_API=ON ..
cmake -DCMAKE_TOOLCHAIN_FILE="../ci/toolchains/TC-arm-unknown-linux-gnueabihf.cmake" -DZENOHC_BUILD_WITH_SHARED_MEMORY=ON -DZENOHC_BUILD_WITH_UNSTABLE_API=ON -DZENOHC_BUILD_ZENOHD=ON ..
cmake --build . --target examples
cmake --build . --target zenohd

- name: Cross compile for aarch64-unknown-linux-gnu
run: |
rm -rf ./build
mkdir -p ./build && cd ./build
cmake -DCMAKE_TOOLCHAIN_FILE="../ci/toolchains/TC-aarch64-unknown-linux-gnu.cmake" -DZENOHC_BUILD_WITH_SHARED_MEMORY=ON -DZENOHC_BUILD_WITH_UNSTABLE_API=ON ..
cmake -DCMAKE_TOOLCHAIN_FILE="../ci/toolchains/TC-aarch64-unknown-linux-gnu.cmake" -DZENOHC_BUILD_WITH_SHARED_MEMORY=ON -DZENOHC_BUILD_WITH_UNSTABLE_API=ON -DZENOHC_BUILD_ZENOHD=ON ..
cmake --build . --target examples
cmake --build . --target zenohd

- name: Cross compile for aarch64-unknown-linux-musl
run: |
rm -rf ./build
mkdir -p ./build && cd ./build
cmake -DCMAKE_TOOLCHAIN_FILE="../ci/toolchains/TC-aarch64-unknown-linux-musl.cmake" -DZENOHC_BUILD_WITH_SHARED_MEMORY=ON -DZENOHC_BUILD_WITH_UNSTABLE_API=ON ..
cmake -DCMAKE_TOOLCHAIN_FILE="../ci/toolchains/TC-aarch64-unknown-linux-musl.cmake" -DZENOHC_BUILD_WITH_SHARED_MEMORY=ON -DZENOHC_BUILD_WITH_UNSTABLE_API=ON -DZENOHC_BUILD_ZENOHD=ON ..
cmake --build . --target examples
cmake --build . --target zenohd

- name: Cross compile for x86_64-unknown-linux-musl
run: |
rm -rf ./build
mkdir -p ./build && cd ./build
cmake -DCMAKE_TOOLCHAIN_FILE="../ci/toolchains/TC-x86_64-unknown-linux-musl.cmake" -DZENOHC_BUILD_WITH_SHARED_MEMORY=ON -DZENOHC_BUILD_WITH_UNSTABLE_API=ON ..
cmake -DCMAKE_TOOLCHAIN_FILE="../ci/toolchains/TC-x86_64-unknown-linux-musl.cmake" -DZENOHC_BUILD_WITH_SHARED_MEMORY=ON -DZENOHC_BUILD_WITH_UNSTABLE_API=ON -DZENOHC_BUILD_ZENOHD=ON ..
cmake --build . --target examples
cmake --build . --target zenohd

- name: Cross compile for x86_64-pc-windows-gnu
run: |
rm -rf ./build
mkdir -p ./build && cd ./build
cmake -DCMAKE_TOOLCHAIN_FILE="../ci/toolchains/TC-x86_64-pc-windows-gnu.cmake" -DZENOHC_BUILD_WITH_SHARED_MEMORY=ON -DZENOHC_BUILD_WITH_UNSTABLE_API=ON ..
cmake -DCMAKE_TOOLCHAIN_FILE="../ci/toolchains/TC-x86_64-pc-windows-gnu.cmake" -DZENOHC_BUILD_WITH_SHARED_MEMORY=ON -DZENOHC_BUILD_WITH_UNSTABLE_API=ON -DZENOHC_BUILD_ZENOHD=ON ..
cmake --build . --target examples
cmake --build . --target zenohd

markdown_lint:
runs-on: ubuntu-latest
Expand Down
48 changes: 48 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ declare_cache_var(ZENOHC_CARGO_CHANNEL "" STRING "Cargo channel parameter. Shoul
declare_cache_var(ZENOHC_CARGO_FLAGS "" STRING "Additional cargo flags")
declare_cache_var(BUILD_SHARED_LIBS TRUE BOOL "Alias zenohc::lib target to zenohc::shared if TRUE, to zenohc::static if FALSE")
declare_cache_var(ZENOHC_TREAT_WARNING_AS_ERROR OFF BOOL "Whether to treat compilation warnings as errors")
declare_cache_var(ZENOHC_BUILD_ZENOHD OFF BOOL "Build zenohd")
set(CMAKE_COMPILE_WARNING_AS_ERROR ${ZENOHC_TREAT_WARNING_AS_ERROR})

set(project_version "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}")
Expand Down Expand Up @@ -217,16 +218,19 @@ set_genexpr_condition(cargo_flags DEBUG $<CONFIG:Debug>
"--manifest-path=${cargo_toml_dir_debug}/Cargo.toml"
"--release;--manifest-path=${cargo_toml_dir_release}/Cargo.toml")
set(cargo_flags ${cargo_flags} ${ZENOHC_CARGO_FLAGS})
set(zenohd_cargo_flags ${ZENOHC_CARGO_FLAGS})

if(ZENOHC_BUILD_WITH_SHARED_MEMORY)
set(cargo_flags ${cargo_flags} --features=shared-memory)
set(zenohd_cargo_flags ${zenohd_cargo_flags} --features=zenoh/shared-memory)
elseif("${cargo_flags}" MATCHES ^.*shared-memory.*$)
set(ZENOHC_BUILD_WITH_SHARED_MEMORY TRUE)
message(STATUS "Due to ZENOHC_CARGO_FLAGS setting ZENOHC_BUILD_WITH_SHARED_MEMORY = TRUE")
endif()

if(ZENOHC_BUILD_WITH_UNSTABLE_API)
set(cargo_flags ${cargo_flags} --features=unstable)
set(zenohd_cargo_flags ${zenohd_cargo_flags} --features=zenoh/unstable)
elseif("${cargo_flags}" MATCHES ^.*unstable.*$)
set(ZENOHC_BUILD_WITH_UNSTABLE_API TRUE)
message(STATUS "Due to ZENOHC_CARGO_FLAGS setting ZENOHC_BUILD_WITH_UNSTABLE_API = TRUE")
Expand All @@ -235,6 +239,7 @@ endif()

if(NOT(ZENOHC_CUSTOM_TARGET STREQUAL ""))
set(cargo_flags ${cargo_flags} --target=${ZENOHC_CUSTOM_TARGET})
set(zenohd_cargo_flags ${zenohd_cargo_flags} --target=${ZENOHC_CUSTOM_TARGET})
endif()

status_print(cargo_flags)
Expand Down Expand Up @@ -311,6 +316,49 @@ else()
add_library(zenohc::lib ALIAS zenohc_static)
endif()

if (ZENOHC_BUILD_ZENOHD)
file(READ ${cargo_toml_dir}/Cargo.toml cargo_toml)
string(REGEX MATCH "zenoh *= *{([^}]*)" zenoh_info ${cargo_toml})
set(zenoh_info ${CMAKE_MATCH_1})
if (${zenoh_info} MATCHES "version *= *[\"']([^,}\"']*)")
set(zenohd_cargo_flags ${zenohd_cargo_flags} "--version=${CMAKE_MATCH_1}")
endif()
if (${zenoh_info} MATCHES "git *= *[\"']([^,}\"']*)")
set(zenohd_cargo_flags ${zenohd_cargo_flags} "--git=${CMAKE_MATCH_1}")
endif()
if (${zenoh_info} MATCHES "branch *= *[\"']([^,}\"']*)")
set(zenohd_cargo_flags ${zenohd_cargo_flags} "--branch=${CMAKE_MATCH_1}")
endif()
if (${zenoh_info} MATCHES "rev *= *[\"']([^,}\"']*)")
set(zenohd_cargo_flags ${zenohd_cargo_flags} "--rev=${CMAKE_MATCH_1}")
endif()

add_custom_target(
zenohd ALL
DEPENDS zenohd_build
)
add_executable(zenohc::zenohd IMPORTED)
add_dependencies(zenohc::zenohd zenohd)
set_target_properties(zenohc::zenohd
PROPERTIES
IMPORTED_GLOBAL TRUE
IMPORTED_LOCATION_DEBUG ${cargo_binary_dir_debug}/zenohd/bin/zenohd
IMPORTED_LOCATION_RELEASE ${cargo_binary_dir_release}/zenohd/bin/zenohd
IMPORTED_LOCATION_MINSIZEREL ${cargo_binary_dir_release}/zenohd/bin/zenohd
IMPORTED_LOCATION_RELWITHDEBINFO ${cargo_binary_dir_release}/zenohd/bin/zenohd
)
set_genexpr_condition(zenohd_dir DEBUG $<CONFIG:Debug> ${cargo_binary_dir_debug}/zenohd ${cargo_binary_dir_release}/zenohd)
add_custom_command(
OUTPUT zenohd_build
COMMAND ${CMAKE_COMMAND} -E echo \"RUSTFLAGS = $$RUSTFLAGS\"
COMMAND ${CMAKE_COMMAND} -E echo \"cargo ${ZENOHC_CARGO_CHANNEL} install zenohd --root ${zenohd_dir} ${zenohd_cargo_flags}\"
COMMAND cargo ${ZENOHC_CARGO_CHANNEL} install zenohd --root ${zenohd_dir} ${zenohd_cargo_flags}
VERBATIM
COMMAND_EXPAND_LISTS
DEPENDS "${rust_sources}"
)
endif()


#
# Components included only if project is the root project
Expand Down
10 changes: 6 additions & 4 deletions install/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,19 @@ function(install_zenohc_lib configurations property_postfix package_name)
get_target_property(NATIVE_STATIC_LIBS zenohc::static INTERFACE_LINK_LIBRARIES)
get_filename_component(STATICLIB ${staticlib_path} NAME)
install(FILES ${staticlib_path} DESTINATION ${CMAKE_INSTALL_LIBDIR} CONFIGURATIONS ${configurations} COMPONENT dev)

if (ZENOHC_BUILD_ZENOHD)
get_target_property(zenohd_path zenohc::zenohd IMPORTED_LOCATION_${property_postfix})
install(PROGRAMS ${zenohd_path} DESTINATION ${CMAKE_INSTALL_BINDIR} CONFIGURATIONS ${configurations} COMPONENT lib)
endif()

set(CMAKE_INSTALL_CMAKEDIR "${CMAKE_INSTALL_LIBDIR}/cmake/${package_name}")

# Generate <Package>Config.cmake
configure_package_config_file(
"PackageConfig.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/${package_name}_${property_postfix}Config.cmake"
PATH_VARS CMAKE_INSTALL_INCLUDEDIR CMAKE_INSTALL_LIBDIR ZENOHC_INSTALL_DYLIBDIR
PATH_VARS CMAKE_INSTALL_INCLUDEDIR CMAKE_INSTALL_LIBDIR ZENOHC_INSTALL_DYLIBDIR CMAKE_INSTALL_BINDIR
INSTALL_DESTINATION "${CMAKE_INSTALL_CMAKEDIR}")

# Generate <Package>Version.cmake
Expand All @@ -69,11 +74,8 @@ function(install_zenohc_lib configurations property_postfix package_name)
CONFIGURATIONS ${configurations}
RENAME ${package_name}ConfigVersion.cmake
COMPONENT dev)


endfunction()


#
# Install headers
#
Expand Down
10 changes: 10 additions & 0 deletions install/PackageConfig.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

set(ZENOHC_BUILD_WITH_UNSTABLE_API @ZENOHC_BUILD_WITH_UNSTABLE_API@)
set(ZENOHC_BUILD_WITH_SHARED_MEMORY @ZENOHC_BUILD_WITH_SHARED_MEMORY@)
set(ZENOHC_BUILD_ZENOHD @ZENOHC_BUILD_ZENOHD@)


if(NOT TARGET __zenohc_shared)
Expand All @@ -41,6 +42,15 @@ if(NOT TARGET __zenohc_static)
)
endif()

if(ZENOHC_BUILD_ZENOHD AND (NOT TARGET __zenohd))
add_executable(__zenohd IMPORTED)
set_target_properties(__zenohd
PROPERTIES
IMPORTED_LOCATION "@PACKAGE_CMAKE_INSTALL_BINDIR@/zenohd"
)
add_executable(zenohc::zenohd ALIAS __zenohd)
endif()

if(NOT TARGET zenohc::lib)
if(@BUILD_SHARED_LIBS@)
add_library(zenohc::lib ALIAS __zenohc_shared)
Expand Down
Loading