diff options
Diffstat (limited to 'meta-oe/recipes-extended/etcd/etcd-cpp-apiv3/0001-cmake-fix-when-cross-compiling.patch')
-rw-r--r-- | meta-oe/recipes-extended/etcd/etcd-cpp-apiv3/0001-cmake-fix-when-cross-compiling.patch | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/meta-oe/recipes-extended/etcd/etcd-cpp-apiv3/0001-cmake-fix-when-cross-compiling.patch b/meta-oe/recipes-extended/etcd/etcd-cpp-apiv3/0001-cmake-fix-when-cross-compiling.patch new file mode 100644 index 0000000000..ce12d4270a --- /dev/null +++ b/meta-oe/recipes-extended/etcd/etcd-cpp-apiv3/0001-cmake-fix-when-cross-compiling.patch @@ -0,0 +1,68 @@ +From cb79329010d73e36ce64830914005f1c17f8f53c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= <peron.clem@gmail.com> +Date: Sat, 23 Sep 2023 11:32:18 +0200 +Subject: [PATCH] cmake: fix when cross compiling +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +In order to generate protobuf files CMake need to use the protoc +and grpc-cpp-plugin compiled for the host architecture. + +Unfortunately, the protoc and grpc-cpp-plugin in the gRPC CMake +configuration file are the one for the target architecture. + +Fix this by properly finding the correct executable when +CMake is cross compiling. + +Signed-off-by: Clément Péron <peron.clem@gmail.com> +--- +Upstream-Status: Pending + + CMakeLists.txt | 28 ++++++++++++++++++++++++++-- + 1 file changed, 26 insertions(+), 2 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 5aa1310..80ebad2 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -120,10 +120,34 @@ if(Protobuf_PROTOC_EXECUTABLE) + endif() + endif() + ++# When cross compiling we look for the native protoc compiler ++# overwrite protobuf::protoc with the proper protoc ++if(CMAKE_CROSSCOMPILING) ++ find_program(Protobuf_PROTOC_EXECUTABLE REQUIRED NAMES protoc) ++ if(NOT TARGET protobuf::protoc) ++ add_executable(protobuf::protoc IMPORTED) ++ endif() ++ set_target_properties(protobuf::protoc PROPERTIES ++ IMPORTED_LOCATION "${Protobuf_PROTOC_EXECUTABLE}") ++endif() ++ + find_package(gRPC QUIET) +-if(gRPC_FOUND AND TARGET gRPC::grpc AND TARGET gRPC::grpc_cpp_plugin) ++if(gRPC_FOUND AND TARGET gRPC::grpc) ++ # When cross compiling we look for the native grpc_cpp_plugin ++ if(CMAKE_CROSSCOMPILING) ++ find_program(GRPC_CPP_PLUGIN REQUIRED NAMES grpc_cpp_plugin) ++ if(NOT TARGET gRPC::grpc_cpp_plugin) ++ add_executable(gRPC::grpc_cpp_plugin IMPORTED) ++ endif() ++ set_target_properties(gRPC::grpc_cpp_plugin PROPERTIES ++ IMPORTED_LOCATION "${GRPC_CPP_PLUGIN}") ++ elseif(TARGET gRPC::grpc_cpp_plugin) ++ get_target_property(GRPC_CPP_PLUGIN gRPC::grpc_cpp_plugin LOCATION) ++ else() ++ message(FATAL_ERROR "Found gRPC but no gRPC CPP plugin defined") ++ endif() ++ + set(GRPC_LIBRARIES gRPC::gpr gRPC::grpc gRPC::grpc++) +- get_target_property(GRPC_CPP_PLUGIN gRPC::grpc_cpp_plugin LOCATION) + get_target_property(GRPC_INCLUDE_DIR gRPC::grpc INTERFACE_INCLUDE_DIRECTORIES) + else() + include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindGRPC.cmake) +-- +2.39.3 (Apple Git-145) + |