cmake: Fix pybind11_protobuf integration
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user