diff --git a/cmake/check_deps.cmake b/cmake/check_deps.cmake index 365a982dbc..36736909ee 100644 --- a/cmake/check_deps.cmake +++ b/cmake/check_deps.cmake @@ -99,6 +99,10 @@ endif() # Check language Dependencies if(BUILD_PYTHON) + if(NOT TARGET pybind11::pybind11_headers) + message(FATAL_ERROR "Target pybind11::pybind11_headers not available.") + endif() + if(NOT TARGET pybind11_abseil::absl_casters) message(FATAL_ERROR "Target pybind11_abseil::absl_casters not available.") endif() diff --git a/patches/pybind11_protobuf.patch b/patches/pybind11_protobuf.patch index d16952621c..6d2388cd8e 100644 --- a/patches/pybind11_protobuf.patch +++ b/patches/pybind11_protobuf.patch @@ -1,8 +1,8 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt -index 2139dc0..1942ad0 100644 +index 2139dc0..df3f30a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -27,7 +27,7 @@ include(CTest) +@@ -27,58 +27,64 @@ include(CTest) # ============================================================================ # Find Python @@ -11,7 +11,106 @@ index 2139dc0..1942ad0 100644 # ============================================================================ # Build dependencies -@@ -87,8 +87,10 @@ pybind11_add_module( ++include(FetchContent) + +-if(USE_SYSTEM_ABSEIL) +- # Version omitted, as absl only allows EXACT version matches +- set(_absl_package_args REQUIRED) +-else() +- set(_absl_package_args 20230125) +-endif() +-if(USE_SYSTEM_PROTOBUF) +- set(_protobuf_package_args 4.23.3 REQUIRED) +-else() +- set(_protobuf_package_args 4.23.3) +-endif() +-if(USE_SYSTEM_PYBIND) +- set(_pybind11_package_args 2.11.1 REQUIRED) +-else() +- set(_pybind11_package_args 2.11.1) ++message(CHECK_START "Checking for external dependencies") ++list(APPEND CMAKE_MESSAGE_INDENT " ") ++ ++if(NOT TARGET absl::base) ++ if(USE_SYSTEM_ABSEIL) ++ # Version omitted, as absl only allows EXACT version matches ++ set(_absl_package_args REQUIRED) ++ else() ++ set(_absl_package_args 20230125) ++ endif() ++ FetchContent_Declare( ++ absl ++ GIT_REPOSITORY "https://github.com/abseil/abseil-cpp.git" ++ GIT_TAG 20230125.3 ++ FIND_PACKAGE_ARGS ${_absl_package_args} NAMES absl) ++ set(ABSL_PROPAGATE_CXX_STD ON) ++ set(ABSL_ENABLE_INSTALL ON) ++ FetchContent_MakeAvailable(absl) + endif() + +-set(ABSL_PROPAGATE_CXX_STD ON) +-set(ABSL_ENABLE_INSTALL ON) ++if(NOT TARGET protobuf::libprotobuf) ++ if(USE_SYSTEM_PROTOBUF) ++ set(_protobuf_package_args 4.23.3 REQUIRED) ++ else() ++ set(_protobuf_package_args 4.23.3) ++ endif() ++ FetchContent_Declare( ++ Protobuf ++ GIT_REPOSITORY "https://github.com/protocolbuffers/protobuf.git" ++ GIT_TAG v23.3 ++ GIT_SUBMODULES "" ++ FIND_PACKAGE_ARGS ${_protobuf_package_args} NAMES protobuf) ++ set(protobuf_BUILD_TESTS OFF CACHE INTERNAL "") ++ FetchContent_MakeAvailable(Protobuf) ++endif() + +-include(FetchContent) +-FetchContent_Declare( +- absl +- GIT_REPOSITORY "https://github.com/abseil/abseil-cpp.git" +- GIT_TAG 20230125.3 +- FIND_PACKAGE_ARGS ${_absl_package_args} NAMES absl) +- +-# cmake-format: off +-FetchContent_Declare( +- Protobuf +- GIT_REPOSITORY "https://github.com/protocolbuffers/protobuf.git" +- GIT_TAG v23.3 +- GIT_SUBMODULES "" +- FIND_PACKAGE_ARGS ${_protobuf_package_args} NAMES protobuf) +-set(protobuf_BUILD_TESTS OFF CACHE INTERNAL "") +-# cmake-format: on +- +-FetchContent_Declare( +- pybind11 +- GIT_REPOSITORY "https://github.com/pybind/pybind11.git" +- GIT_TAG v2.11.1 +- FIND_PACKAGE_ARGS ${_pybind11_package_args} NAMES pybind11) ++if(NOT TARGET pybind11::pybind11_headers) ++ if(USE_SYSTEM_PYBIND) ++ set(_pybind11_package_args 2.11.1 REQUIRED) ++ else() ++ set(_pybind11_package_args 2.11.1) ++ endif() ++ FetchContent_Declare( ++ pybind11 ++ GIT_REPOSITORY "https://github.com/pybind/pybind11.git" ++ GIT_TAG v2.11.1 ++ FIND_PACKAGE_ARGS ${_pybind11_package_args} NAMES pybind11) ++ FetchContent_MakeAvailable(pybind11) ++endif() + +-message(CHECK_START "Checking for external dependencies") +-list(APPEND CMAKE_MESSAGE_INDENT " ") +-FetchContent_MakeAvailable(absl Protobuf pybind11) + list(POP_BACK CMAKE_MESSAGE_INDENT) ++message(CHECK_PASS "found") + + # ============================================================================ + # pybind11_proto_utils pybind11 extension module +@@ -87,8 +93,10 @@ pybind11_add_module( pybind11_protobuf/proto_utils.h) target_link_libraries( @@ -24,7 +123,7 @@ index 2139dc0..1942ad0 100644 target_include_directories( pybind11_proto_utils PRIVATE ${PROJECT_SOURCE_DIR} ${protobuf_INCLUDE_DIRS} -@@ -116,10 +118,11 @@ target_link_libraries( +@@ -116,10 +124,11 @@ target_link_libraries( absl::optional protobuf::libprotobuf pybind11::pybind11 @@ -37,7 +136,7 @@ index 2139dc0..1942ad0 100644 PRIVATE ${PROJECT_SOURCE_DIR} ${protobuf_INCLUDE_DIRS} ${protobuf_SOURCE_DIR} ${pybind11_INCLUDE_DIRS}) -@@ -143,7 +146,7 @@ target_link_libraries( +@@ -143,7 +152,7 @@ target_link_libraries( absl::optional protobuf::libprotobuf pybind11::pybind11