From bee320e09bc2619306d53f4b17023464a0abe373 Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Wed, 11 Mar 2026 09:14:30 -0500 Subject: [PATCH] cmake build: + xo-genfacet-all target for umbrella build --- CMakeLists.txt | 5 +++++ xo-cmake/cmake/xo_macros/xo_cxx.cmake | 15 +++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5e96aeb1..3aa3d849 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -143,6 +143,11 @@ add_subdirectory(xo-interpreter) # add_subdirectory(xo-imgui) +# ---------------------------------------------------------------- +# umbrella-wide facet code generation + +xo_umbrella_genfacet_all(xo-genfacet-all) + # ---------------------------------------------------------------- # documentation. must follow add_subdirectory() for satellite projects diff --git a/xo-cmake/cmake/xo_macros/xo_cxx.cmake b/xo-cmake/cmake/xo_macros/xo_cxx.cmake index 13ca3f9a..4506ceaa 100644 --- a/xo-cmake/cmake/xo_macros/xo_cxx.cmake +++ b/xo-cmake/cmake/xo_macros/xo_cxx.cmake @@ -1806,7 +1806,22 @@ function(xo_add_genfacet_all target_name) get_property(genfacet_targets DIRECTORY PROPERTY XO_GENFACET_TARGETS) if(genfacet_targets) add_custom_target(${target_name} DEPENDS ${genfacet_targets}) + + if(XO_SUBMODULE_BUILD) + set_property(GLOBAL APPEND PROPERTY XO_UMBRELLA_GENFACET_TARGETS ${target_name}) + endif() else() message(WARNING "xo_add_genfacet_all: no genfacet targets found") endif() endfunction() + +# create umbrella target that depends on all per-satellite genfacet-all targets. +# only meaningful in umbrella build (XO_SUBMODULE_BUILD=True). +function(xo_umbrella_genfacet_all target_name) + get_property(all_targets GLOBAL PROPERTY XO_UMBRELLA_GENFACET_TARGETS) + if(all_targets) + add_custom_target(${target_name} DEPENDS ${all_targets}) + else() + message(WARNING "xo_umbrella_genfacet_all: no umbrella genfacet targets found") + endif() +endfunction()