@@ -35,33 +35,47 @@ set(CMAKE_CXX_STANDARD 20)
3535set (CMAKE_CXX_STANDARD_REQUIRED ON )
3636set (CMAKE_POSITION_INDEPENDENT_CODE ON )
3737
38+ # --------------------------------------------------------------------
39+ # Umbrella build policy:
40+ # When building inside the Vix umbrella, dependencies are managed by the
41+ # umbrella (add_subdirectory order + options). Cache must not FetchContent
42+ # nor add sibling subdirectories.
43+ # --------------------------------------------------------------------
44+ if (DEFINED VIX_UMBRELLA_BUILD AND VIX_UMBRELLA_BUILD)
45+ set (VIX_CACHE_FETCH_NET OFF CACHE BOOL "Auto-fetch vix::net if missing" FORCE )
46+ endif ()
47+
3848# Sources discovery
3949file (GLOB_RECURSE CACHE_SOURCES "${CMAKE_CURRENT_SOURCE_DIR} /src/*.cpp" )
4050
4151# Net dependency
4252option (VIX_CACHE_FETCH_NET "Auto-fetch vix::net if missing" ON )
4353
44- if (NOT TARGET vix::net)
45- if (EXISTS "${CMAKE_CURRENT_LIST_DIR} /../net/CMakeLists.txt" )
46- message (STATUS "[cache] Adding net from umbrella: ../net" )
47- add_subdirectory ("${CMAKE_CURRENT_LIST_DIR} /../net" "net" )
48- elseif (VIX_CACHE_FETCH_NET)
49- include (FetchContent )
50- message (STATUS "[cache] Fetching vix::net via FetchContent" )
51- FetchContent_Declare (vix_net
52- GIT_REPOSITORY https://github.com/vixcpp/net.git
53- GIT_TAG v0.1.0
54- )
55- FetchContent_MakeAvailable (vix_net)
56- else ()
57- message (FATAL_ERROR "vix::net not found. Enable VIX_CACHE_FETCH_NET=ON or provide the target before cache." )
54+ if (DEFINED VIX_UMBRELLA_BUILD AND VIX_UMBRELLA_BUILD)
55+ # Umbrella owns dependency graph: never add_subdirectory/FetchContent here.
56+ if (NOT TARGET vix::net)
57+ message (FATAL_ERROR "[cache] Umbrella build: vix::net must be provided by umbrella before cache." )
58+ endif ()
59+ else ()
60+ if (NOT TARGET vix::net)
61+ if (EXISTS "${CMAKE_CURRENT_LIST_DIR} /../net/CMakeLists.txt" )
62+ message (STATUS "[cache] Adding net from umbrella: ../net" )
63+ add_subdirectory ("${CMAKE_CURRENT_LIST_DIR} /../net" "net" )
64+ elseif (VIX_CACHE_FETCH_NET)
65+ include (FetchContent )
66+ message (STATUS "[cache] Fetching vix::net via FetchContent" )
67+ FetchContent_Declare (vix_net
68+ GIT_REPOSITORY https://github.com/vixcpp/net.git
69+ GIT_TAG v0.1.0
70+ )
71+ FetchContent_MakeAvailable (vix_net)
72+ else ()
73+ message (FATAL_ERROR "vix::net not found. Enable VIX_CACHE_FETCH_NET=ON or provide the target before cache." )
74+ endif ()
5875 endif ()
5976endif ()
6077
6178set (VIX_NET_TARGET vix::net)
62- if (NOT TARGET ${VIX_NET_TARGET} AND TARGET vix::net)
63- set (VIX_NET_TARGET vix::net)
64- endif ()
6579
6680# STATIC
6781if (CACHE_SOURCES)
@@ -85,9 +99,10 @@ if (CACHE_SOURCES)
8599
86100 if (TARGET vix_warnings)
87101 target_link_libraries (vix_cache PUBLIC vix_warnings )
88- if (VIX_ENABLE_SANITIZERS AND TARGET vix_sanitizers)
89- target_link_libraries (vix_cache INTERFACE vix_sanitizers )
90- endif ()
102+ endif ()
103+
104+ if (VIX_ENABLE_SANITIZERS AND TARGET vix_sanitizers)
105+ target_link_libraries (vix_cache PUBLIC vix_sanitizers )
91106 endif ()
92107
93108 set_target_properties (vix_cache PROPERTIES
@@ -105,8 +120,11 @@ if (CACHE_SOURCES)
105120 INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
106121 )
107122
108- install (DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
109- FILES_MATCHING PATTERN "*.hpp" PATTERN "*.h" )
123+ if (NOT (DEFINED VIX_UMBRELLA_BUILD AND VIX_UMBRELLA_BUILD))
124+ install (DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
125+ FILES_MATCHING PATTERN "*.hpp" PATTERN "*.h" )
126+ endif ()
127+
110128
111129# HEADER-ONLY
112130else ()
@@ -135,8 +153,11 @@ else()
135153 INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
136154 )
137155
138- install (DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
139- FILES_MATCHING PATTERN "*.hpp" PATTERN "*.h" )
156+ if (NOT (DEFINED VIX_UMBRELLA_BUILD AND VIX_UMBRELLA_BUILD))
157+ install (DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
158+ FILES_MATCHING PATTERN "*.hpp" PATTERN "*.h" )
159+ endif ()
160+
140161endif ()
141162
142163# Tests
0 commit comments