@@ -35,6 +35,7 @@ declare_cache_var(ZENOHC_CARGO_CHANNEL "" STRING "Cargo channel parameter. Shoul
3535declare_cache_var(ZENOHC_CARGO_FLAGS "" STRING "Additional cargo flags" )
3636declare_cache_var(BUILD_SHARED_LIBS TRUE BOOL "Alias zenohc::lib target to zenohc::shared if TRUE, to zenohc::static if FALSE" )
3737declare_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" )
3839set (CMAKE_COMPILE_WARNING_AS_ERROR ${ZENOHC_TREAT_WARNING_AS_ERROR} )
3940
4041set (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" )
219220set (cargo_flags ${cargo_flags} ${ZENOHC_CARGO_FLAGS} )
221+ set (zenohd_cargo_flags ${ZENOHC_CARGO_FLAGS} )
220222
221223if (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)
223226elseif ("${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" )
226229endif ()
227230
228231if (ZENOHC_BUILD_WITH_UNSTABLE_API)
229232 set (cargo_flags ${cargo_flags} --features=unstable)
233+ set (zenohd_cargo_flags ${zenohd_cargo_flags} --features=zenoh/unstable)
230234elseif ("${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
236240if (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} )
238243endif ()
239244
240245status_print(cargo_flags)
@@ -311,6 +316,49 @@ else()
311316 add_library (zenohc::lib ALIAS zenohc_static)
312317endif ()
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
0 commit comments