Skip to content

Commit

Permalink
add ZENOHC_BUILD_ZENOHD option for automatically building zenohd with…
Browse files Browse the repository at this point in the history
… the same version and same features
  • Loading branch information
DenisBiryukov91 committed Feb 4, 2025
1 parent 15d56e1 commit d1d6703
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 12 deletions.
18 changes: 9 additions & 9 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -138,21 +138,21 @@ 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
- 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
- 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
cross-compile-ubuntu:
Expand Down Expand Up @@ -193,42 +193,42 @@ 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
- 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
- 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
- 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
- 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
- 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
markdown_lint:
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_target ALL
DEPENDS zenohd_build
)
add_executable(zenohd IMPORTED)
add_dependencies(zenohd zenohd_target)
set_target_properties(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
8 changes: 5 additions & 3 deletions install/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,11 @@ 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 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}")

Expand Down Expand Up @@ -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

0 comments on commit d1d6703

Please sign in to comment.