@@ -56,46 +56,78 @@ file(GLOB_RECURSE LOG_SOURCES CONFIGURE_DEPENDS
5656)
5757
5858# Utils dependency
59- if (NOT TARGET vix::utils AND NOT TARGET vix_utils AND NOT TARGET utils)
60- if (EXISTS "${CMAKE_CURRENT_LIST_DIR} /utils/CMakeLists.txt" )
61- message (STATUS "[log] Adding utils from local sibling: ./utils" )
62- add_subdirectory ("${CMAKE_CURRENT_LIST_DIR} /utils" "utils" )
63- elseif (EXISTS "${CMAKE_CURRENT_LIST_DIR} /../utils/CMakeLists.txt" )
64- message (STATUS "[log] Adding utils from parent sibling: ../utils" )
65- add_subdirectory ("${CMAKE_CURRENT_LIST_DIR} /../utils" "utils" )
59+ set (VIX_UTILS_TARGET "" )
60+
61+ # 1) Reuse already available umbrella/local target
62+ if (TARGET vix::utils)
63+ message (STATUS "[log] Using existing target vix::utils" )
64+ set (VIX_UTILS_TARGET vix::utils)
65+
66+ elseif (TARGET vix_utils)
67+ message (STATUS "[log] Using existing target vix_utils" )
68+ set (VIX_UTILS_TARGET vix_utils)
69+
70+ elseif (TARGET utils)
71+ message (STATUS "[log] Using existing target utils" )
72+ set (VIX_UTILS_TARGET utils)
73+
74+ else ()
75+ # 2) Try local sibling layouts
76+ get_filename_component (_VIX_MODULES_DIR "${CMAKE_CURRENT_SOURCE_DIR} /.." ABSOLUTE )
77+ set (_VIX_UTILS_DIR "${_VIX_MODULES_DIR} /utils" )
78+
79+ if (EXISTS "${_VIX_UTILS_DIR} /CMakeLists.txt" )
80+ message (STATUS "[log] Adding local sibling utils: ${_VIX_UTILS_DIR} " )
81+ add_subdirectory ("${_VIX_UTILS_DIR} " "${CMAKE_BINARY_DIR} /_vix_utils" )
6682 endif ()
6783
68- if (NOT TARGET vix::utils AND NOT TARGET vix_utils AND NOT TARGET utils)
84+ if (TARGET vix::utils)
85+ set (VIX_UTILS_TARGET vix::utils)
86+ elseif (TARGET vix_utils)
87+ set (VIX_UTILS_TARGET vix_utils)
88+ elseif (TARGET utils)
89+ set (VIX_UTILS_TARGET utils)
90+ else ()
91+ # 3) Try installed packages
6992 find_package (vix_utils CONFIG QUIET )
7093 find_package (utils CONFIG QUIET )
94+
95+ if (TARGET vix::utils)
96+ set (VIX_UTILS_TARGET vix::utils)
97+ elseif (TARGET vix_utils)
98+ set (VIX_UTILS_TARGET vix_utils)
99+ elseif (TARGET utils)
100+ set (VIX_UTILS_TARGET utils)
101+ endif ()
71102 endif ()
72103
73- if (NOT TARGET vix::utils AND NOT TARGET vix_utils AND NOT TARGET utils AND VIX_LOG_FETCH_UTILS)
104+ # 4) Optional fetch only as last resort
105+ if (NOT VIX_UTILS_TARGET AND VIX_LOG_FETCH_UTILS)
74106 include (FetchContent )
75107 message (STATUS "[log] Fetching vix::utils via FetchContent" )
76108 FetchContent_Declare (vix_utils
77109 GIT_REPOSITORY https://github.com/vixcpp/utils.git
78110 GIT_TAG v0.1.0
79111 )
80112 FetchContent_MakeAvailable (vix_utils)
81- endif ()
82- endif ()
83113
84- set (VIX_UTILS_TARGET "" )
85- if (TARGET vix::utils)
86- set (VIX_UTILS_TARGET vix::utils)
87- elseif (TARGET vix_utils)
88- set (VIX_UTILS_TARGET vix_utils)
89- elseif (TARGET utils)
90- set (VIX_UTILS_TARGET utils)
114+ if (TARGET vix::utils)
115+ set (VIX_UTILS_TARGET vix::utils)
116+ elseif (TARGET vix_utils)
117+ set (VIX_UTILS_TARGET vix_utils)
118+ elseif (TARGET utils)
119+ set (VIX_UTILS_TARGET utils)
120+ endif ()
121+ endif ()
91122endif ()
92123
93124if (NOT VIX_UTILS_TARGET)
94125 message (FATAL_ERROR
95126 "vix::utils not found.\n "
96- "Searched in ./utils, ../utils, installed packages (vix_utils / utils), "
97- "and optional FetchContent.\n "
98- "Provide utils in the umbrella build, or install/export the utils package."
127+ "Expected one of:\n "
128+ " - existing target: vix::utils / vix_utils / utils\n "
129+ " - local sibling module in ../utils\n "
130+ " - installed package via find_package(vix_utils CONFIG) or find_package(utils CONFIG)\n "
99131 )
100132endif ()
101133
0 commit comments