Files
ports/www/proxygen/files/patch-cmake_ProxygenFunctions.cmake
T
2026-10-04 04:07:15 +00:00

28 lines
1.5 KiB
CMake

-- Fix shared-library OBJECT target dep resolution: allow non-proxygen external targets
-- (Folly::, mvfst::, fizz:: etc.) when no _obj version exists, while still avoiding
-- circular dependencies caused by proxygen INTERFACE wrappers linking to monolithic proxygen.
--- cmake/ProxygenFunctions.cmake.orig 2026-05-11 03:29:48 UTC
+++ cmake/ProxygenFunctions.cmake
@@ -432,10 +432,17 @@ function(proxygen_resolve_deferred_dependencies)
foreach(_dep IN LISTS _deps)
# For shared builds: if target is an OBJECT library (*_obj) and dep has an _obj version,
# link to _obj for include path propagation
- if(BUILD_SHARED_LIBS AND _target MATCHES "_obj$" AND TARGET ${_dep}_obj)
- list(APPEND _valid_deps ${_dep}_obj)
- elseif(BUILD_SHARED_LIBS AND _target MATCHES "_obj$")
- # No _obj version exists; skip to avoid cycle through monolithic library
+ if(BUILD_SHARED_LIBS AND _target MATCHES "_obj$")
+ # In shared builds, OBJECT libraries must only link to other OBJECT libraries
+ # to avoid circular dependencies through INTERFACE wrappers that link to monolithic proxygen
+ if(TARGET ${_dep}_obj)
+ list(APPEND _valid_deps ${_dep}_obj)
+ elseif(NOT _dep MATCHES "^proxygen_")
+ # Allow non-proxygen targets (external deps like Folly::, mvfst::, etc.)
+ if(TARGET ${_dep})
+ list(APPEND _valid_deps ${_dep})
+ endif()
+ endif()
elseif(TARGET ${_dep})
list(APPEND _valid_deps ${_dep})
endif()