Skip to content

Commit 61cd6bb

Browse files
add ZENOHC_BUILD_ZENOHD option for automatically building zenohd with the same version and same features
1 parent 15d56e1 commit 61cd6bb

File tree

3 files changed

+71
-12
lines changed

3 files changed

+71
-12
lines changed

.github/workflows/ci.yml

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -138,22 +138,25 @@ jobs:
138138
run: |
139139
rm -rf ./build
140140
mkdir -p ./build && cd ./build
141-
cmake -DCMAKE_TOOLCHAIN_FILE="../ci/toolchains/TC-armv7-unknown-linux-gnueabihf.cmake" -DZENOHC_BUILD_WITH_SHARED_MEMORY=ON -DZENOHC_BUILD_WITH_UNSTABLE_API=ON ..
141+
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 ..
142142
cmake --build . --target examples
143+
cmake --build . --target zenohd
143144
144145
- name: Cross compile for x86_64-unknown-linux-gnu
145146
run: |
146147
rm -rf ./build
147148
mkdir -p ./build && cd ./build
148-
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 ..
149+
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 ..
149150
cmake --build . --target examples
151+
cmake --build . --target zenohd
150152
151153
- name: Cross compile for x86_64-pc-windows-gnu
152154
run: |
153155
rm -rf ./build
154156
mkdir -p ./build && cd ./build
155-
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 ..
157+
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 ..
156158
cmake --build . --target examples
159+
cmake --build . --target zenohd
157160
158161
cross-compile-ubuntu:
159162
name: Cross compile on ubuntu-latest
@@ -193,43 +196,49 @@ jobs:
193196
run: |
194197
rm -rf ./build
195198
mkdir -p ./build && cd ./build
196-
cmake -DCMAKE_TOOLCHAIN_FILE="../ci/toolchains/TC-arm-unknown-linux-gnueabi.cmake" -DZENOHC_BUILD_WITH_SHARED_MEMORY=ON -DZENOHC_BUILD_WITH_UNSTABLE_API=ON ..
199+
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 ..
197200
cmake --build . --target examples
201+
cmake --build . --target zenohd
198202
199203
- name: Cross compile for arm-unknown-linux-gnueabihf
200204
run: |
201205
rm -rf ./build
202206
mkdir -p ./build && cd ./build
203-
cmake -DCMAKE_TOOLCHAIN_FILE="../ci/toolchains/TC-arm-unknown-linux-gnueabihf.cmake" -DZENOHC_BUILD_WITH_SHARED_MEMORY=ON -DZENOHC_BUILD_WITH_UNSTABLE_API=ON ..
207+
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 ..
204208
cmake --build . --target examples
209+
cmake --build . --target zenohd
205210
206211
- name: Cross compile for aarch64-unknown-linux-gnu
207212
run: |
208213
rm -rf ./build
209214
mkdir -p ./build && cd ./build
210-
cmake -DCMAKE_TOOLCHAIN_FILE="../ci/toolchains/TC-aarch64-unknown-linux-gnu.cmake" -DZENOHC_BUILD_WITH_SHARED_MEMORY=ON -DZENOHC_BUILD_WITH_UNSTABLE_API=ON ..
215+
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 ..
211216
cmake --build . --target examples
217+
cmake --build . --target zenohd
212218
213219
- name: Cross compile for aarch64-unknown-linux-musl
214220
run: |
215221
rm -rf ./build
216222
mkdir -p ./build && cd ./build
217-
cmake -DCMAKE_TOOLCHAIN_FILE="../ci/toolchains/TC-aarch64-unknown-linux-musl.cmake" -DZENOHC_BUILD_WITH_SHARED_MEMORY=ON -DZENOHC_BUILD_WITH_UNSTABLE_API=ON ..
223+
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 ..
218224
cmake --build . --target examples
225+
cmake --build . --target zenohd
219226
220227
- name: Cross compile for x86_64-unknown-linux-musl
221228
run: |
222229
rm -rf ./build
223230
mkdir -p ./build && cd ./build
224-
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 ..
231+
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 ..
225232
cmake --build . --target examples
233+
cmake --build . --target zenohd
226234
227235
- name: Cross compile for x86_64-pc-windows-gnu
228236
run: |
229237
rm -rf ./build
230238
mkdir -p ./build && cd ./build
231-
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 ..
239+
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 ..
232240
cmake --build . --target examples
241+
cmake --build . --target zenohd
233242
234243
markdown_lint:
235244
runs-on: ubuntu-latest

CMakeLists.txt

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ declare_cache_var(ZENOHC_CARGO_CHANNEL "" STRING "Cargo channel parameter. Shoul
3535
declare_cache_var(ZENOHC_CARGO_FLAGS "" STRING "Additional cargo flags")
3636
declare_cache_var(BUILD_SHARED_LIBS TRUE BOOL "Alias zenohc::lib target to zenohc::shared if TRUE, to zenohc::static if FALSE")
3737
declare_cache_var(ZENOHC_TREAT_WARNING_AS_ERROR OFF BOOL "Whether to treat compilation warnings as errors")
38+
declare_cache_var(ZENOHC_BUILD_ZENOHD OFF BOOL "Build zenohd")
3839
set(CMAKE_COMPILE_WARNING_AS_ERROR ${ZENOHC_TREAT_WARNING_AS_ERROR})
3940

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

221223
if(ZENOHC_BUILD_WITH_SHARED_MEMORY)
222224
set(cargo_flags ${cargo_flags} --features=shared-memory)
225+
set(zenohd_cargo_flags ${zenohd_cargo_flags} --features=zenoh/shared-memory)
223226
elseif("${cargo_flags}" MATCHES ^.*shared-memory.*$)
224227
set(ZENOHC_BUILD_WITH_SHARED_MEMORY TRUE)
225228
message(STATUS "Due to ZENOHC_CARGO_FLAGS setting ZENOHC_BUILD_WITH_SHARED_MEMORY = TRUE")
226229
endif()
227230

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

236240
if(NOT(ZENOHC_CUSTOM_TARGET STREQUAL ""))
237241
set(cargo_flags ${cargo_flags} --target=${ZENOHC_CUSTOM_TARGET})
242+
set(zenohd_cargo_flags ${zenohd_cargo_flags} --target=${ZENOHC_CUSTOM_TARGET})
238243
endif()
239244

240245
status_print(cargo_flags)
@@ -311,6 +316,49 @@ else()
311316
add_library(zenohc::lib ALIAS zenohc_static)
312317
endif()
313318

319+
if (ZENOHC_BUILD_ZENOHD)
320+
file(READ ${cargo_toml_dir}/Cargo.toml cargo_toml)
321+
string(REGEX MATCH "zenoh *= *{([^}]*)" zenoh_info ${cargo_toml})
322+
set(zenoh_info ${CMAKE_MATCH_1})
323+
if (${zenoh_info} MATCHES "version *= *[\"']([^,}\"']*)")
324+
set(zenohd_cargo_flags ${zenohd_cargo_flags} "--version=${CMAKE_MATCH_1}")
325+
endif()
326+
if (${zenoh_info} MATCHES "git *= *[\"']([^,}\"']*)")
327+
set(zenohd_cargo_flags ${zenohd_cargo_flags} "--git=${CMAKE_MATCH_1}")
328+
endif()
329+
if (${zenoh_info} MATCHES "branch *= *[\"']([^,}\"']*)")
330+
set(zenohd_cargo_flags ${zenohd_cargo_flags} "--branch=${CMAKE_MATCH_1}")
331+
endif()
332+
if (${zenoh_info} MATCHES "rev *= *[\"']([^,}\"']*)")
333+
set(zenohd_cargo_flags ${zenohd_cargo_flags} "--rev=${CMAKE_MATCH_1}")
334+
endif()
335+
336+
add_custom_target(
337+
zenohd ALL
338+
DEPENDS zenohd_build
339+
)
340+
add_executable(zenohd_bin IMPORTED)
341+
add_dependencies(zenohd_bin zenohd)
342+
set_target_properties(zenohd_bin
343+
PROPERTIES
344+
IMPORTED_GLOBAL TRUE
345+
IMPORTED_LOCATION_DEBUG ${cargo_binary_dir_debug}/zenohd/bin/zenohd
346+
IMPORTED_LOCATION_RELEASE ${cargo_binary_dir_release}/zenohd/bin/zenohd
347+
IMPORTED_LOCATION_MINSIZEREL ${cargo_binary_dir_release}/zenohd/bin/zenohd
348+
IMPORTED_LOCATION_RELWITHDEBINFO ${cargo_binary_dir_release}/zenohd/bin/zenohd
349+
)
350+
set_genexpr_condition(zenohd_dir DEBUG $<CONFIG:Debug> ${cargo_binary_dir_debug}/zenohd ${cargo_binary_dir_release}/zenohd)
351+
add_custom_command(
352+
OUTPUT zenohd_build
353+
COMMAND ${CMAKE_COMMAND} -E echo \"RUSTFLAGS = $$RUSTFLAGS\"
354+
COMMAND ${CMAKE_COMMAND} -E echo \"cargo ${ZENOHC_CARGO_CHANNEL} install zenohd --root ${zenohd_dir} ${zenohd_cargo_flags}\"
355+
COMMAND cargo ${ZENOHC_CARGO_CHANNEL} install zenohd --root ${zenohd_dir} ${zenohd_cargo_flags}
356+
VERBATIM
357+
COMMAND_EXPAND_LISTS
358+
DEPENDS "${rust_sources}"
359+
)
360+
endif()
361+
314362

315363
#
316364
# Components included only if project is the root project

install/CMakeLists.txt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@ function(install_zenohc_lib configurations property_postfix package_name)
4040
get_target_property(NATIVE_STATIC_LIBS zenohc::static INTERFACE_LINK_LIBRARIES)
4141
get_filename_component(STATICLIB ${staticlib_path} NAME)
4242
install(FILES ${staticlib_path} DESTINATION ${CMAKE_INSTALL_LIBDIR} CONFIGURATIONS ${configurations} COMPONENT dev)
43+
44+
if (ZENOHC_BUILD_ZENOHD)
45+
get_target_property(zenohd_path zenohd_bin IMPORTED_LOCATION_${property_postfix})
46+
install(PROGRAMS ${zenohd_path} DESTINATION ${CMAKE_INSTALL_BINDIR} CONFIGURATIONS ${configurations} COMPONENT lib)
47+
endif()
4348

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

@@ -69,11 +74,8 @@ function(install_zenohc_lib configurations property_postfix package_name)
6974
CONFIGURATIONS ${configurations}
7075
RENAME ${package_name}ConfigVersion.cmake
7176
COMPONENT dev)
72-
73-
7477
endfunction()
7578

76-
7779
#
7880
# Install headers
7981
#

0 commit comments

Comments
 (0)