aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/brpc/fix-build.patch
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/brpc/fix-build.patch')
-rw-r--r--vcpkg/ports/brpc/fix-build.patch243
1 files changed, 243 insertions, 0 deletions
diff --git a/vcpkg/ports/brpc/fix-build.patch b/vcpkg/ports/brpc/fix-build.patch
new file mode 100644
index 0000000..3ba7576
--- /dev/null
+++ b/vcpkg/ports/brpc/fix-build.patch
@@ -0,0 +1,243 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 92f7114..f60e395 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -77,7 +77,8 @@ endif()
+
+ if(WITH_THRIFT)
+ set(THRIFT_CPP_FLAG "-DENABLE_THRIFT_FRAMED_PROTOCOL")
+- find_library(THRIFT_LIB NAMES thrift)
++ find_package(Thrift CONFIG REQUIRED)
++ set(THRIFT_LIB "thrift::thrift")
+ if (NOT THRIFT_LIB)
+ message(FATAL_ERROR "Fail to find Thrift")
+ endif()
+@@ -115,7 +116,10 @@ configure_file(${PROJECT_SOURCE_DIR}/config.h.in ${PROJECT_SOURCE_DIR}/src/butil
+
+ list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
+
+-find_package(GFLAGS REQUIRED)
++set(GFLAGS_USE_TARGET_NAMESPACE ON)
++find_package(gflags CONFIG REQUIRED)
++set(GFLAGS_INCLUDE_PATH "")
++set(GFLAGS_LIBRARY gflags::gflags)
+
+ include_directories(
+ ${PROJECT_SOURCE_DIR}/src
+@@ -177,12 +181,17 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+ endif()
+
+ find_package(Protobuf REQUIRED)
++get_target_property(PROTOBUF_INCLUDE_DIR protobuf::libprotobuf INTERFACE_INCLUDE_DIRECTORIES)
++set(PROTOBUF_INCLUDE_DIRS "")
++set(PROTOBUF_LIBRARIES protobuf::libprotobuf)
+ if(Protobuf_VERSION GREATER 4.21)
+ # required by absl
+ set(CMAKE_CXX_STANDARD 17)
+
+ find_package(absl REQUIRED CONFIG)
+ set(protobuf_ABSL_USED_TARGETS
++ "")
++ set(protobuf_ABSL_provided_by_vcpkg
+ absl::absl_check
+ absl::absl_log
+ absl::algorithm
+@@ -222,29 +231,21 @@ else()
+ use_cxx11()
+ endif()
+ find_package(Threads REQUIRED)
++find_package(ZLIB REQUIRED)
++add_library(z ALIAS ZLIB::ZLIB)
+
+-find_path(LEVELDB_INCLUDE_PATH NAMES leveldb/db.h)
+-find_library(LEVELDB_LIB NAMES leveldb)
+-if ((NOT LEVELDB_INCLUDE_PATH) OR (NOT LEVELDB_LIB))
+- message(FATAL_ERROR "Fail to find leveldb")
+-endif()
++find_package(leveldb CONFIG REQUIRED)
++set(LEVELDB_INCLUDE_PATH "")
++set(LEVELDB_LIB leveldb::leveldb)
+
+ if(WITH_SNAPPY)
+- find_path(SNAPPY_INCLUDE_PATH NAMES snappy.h)
+- find_library(SNAPPY_LIB NAMES snappy)
+- if ((NOT SNAPPY_INCLUDE_PATH) OR (NOT SNAPPY_LIB))
+- message(FATAL_ERROR "Fail to find snappy")
+- endif()
+- include_directories(${SNAPPY_INCLUDE_PATH})
++ find_package(Snappy CONFIG REQUIRED)
++ set(SNAPPY_LIB Snappy::snappy)
+ endif()
+
+ if(WITH_GLOG)
+- find_path(GLOG_INCLUDE_PATH NAMES glog/logging.h)
+- find_library(GLOG_LIB NAMES glog)
+- if((NOT GLOG_INCLUDE_PATH) OR (NOT GLOG_LIB))
+- message(FATAL_ERROR "Fail to find glog")
+- endif()
+- include_directories(${GLOG_INCLUDE_PATH})
++ find_package(glog CONFIG REQUIRED)
++ set(GLOG_LIB glog::glog)
+ endif()
+
+ if(WITH_MESALINK)
+@@ -267,7 +268,7 @@ if(WITH_RDMA)
+ endif()
+ endif()
+
+-find_library(PROTOC_LIB NAMES protoc)
++set(PROTOC_LIB "protobuf::libprotoc")
+ if(NOT PROTOC_LIB)
+ message(FATAL_ERROR "Fail to find protoc lib")
+ endif()
+@@ -277,9 +278,6 @@ if(WITH_BORINGSSL)
+ include_directories(${BORINGSSL_INCLUDE_DIR})
+ else()
+ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND NOT OPENSSL_ROOT_DIR)
+- set(OPENSSL_ROOT_DIR
+- "/usr/local/opt/openssl" # Homebrew installed OpenSSL
+- )
+ endif()
+
+ find_package(OpenSSL)
+@@ -305,6 +303,8 @@ set(DYNAMIC_LIB
+ if(WITH_BORINGSSL)
+ list(APPEND DYNAMIC_LIB ${BORINGSSL_SSL_LIBRARY})
+ list(APPEND DYNAMIC_LIB ${BORINGSSL_CRYPTO_LIBRARY})
++elseif(1)
++ list(APPEND DYNAMIC_LIB OpenSSL::SSL)
+ else()
+ list(APPEND DYNAMIC_LIB ${OPENSSL_CRYPTO_LIBRARY})
+ if(WITH_MESALINK)
+@@ -318,7 +318,8 @@ if(WITH_RDMA)
+ list(APPEND DYNAMIC_LIB ${RDMA_LIB})
+ endif()
+
+-set(BRPC_PRIVATE_LIBS "-lgflags -lprotobuf -lleveldb -lprotoc -lssl -lcrypto -ldl -lz")
++set(BRPC_PRIVATE_LIBS "-lleveldb -lprotoc -ldl")
++set(BRPC_PRIVATE_REQUIRES "gflags protobuf openssl zlib")
+
+ if(WITH_GLOG)
+ set(DYNAMIC_LIB ${GLOG_LIB} ${DYNAMIC_LIB})
+@@ -327,7 +328,7 @@ endif()
+
+ if(WITH_SNAPPY)
+ set(DYNAMIC_LIB ${DYNAMIC_LIB} ${SNAPPY_LIB})
+- set(BRPC_PRIVATE_LIBS "${BRPC_PRIVATE_LIBS} -lsnappy")
++ set(BRPC_PRIVATE_REQUIRES "${BRPC_PRIVATE_LIBS} snappy")
+ endif()
+
+ if (WITH_BTHREAD_TRACER)
+@@ -551,6 +552,7 @@ compile_proto(PROTO_HDRS PROTO_SRCS ${PROJECT_BINARY_DIR}
+ ${PROJECT_SOURCE_DIR}/src
+ "${PROTO_FILES}")
+ add_library(PROTO_LIB OBJECT ${PROTO_SRCS} ${PROTO_HDRS})
++target_link_libraries(PROTO_LIB PUBLIC ${DYNAMIC_LIB})
+
+ set(SOURCES
+ ${BVAR_SOURCES}
+diff --git a/cmake/brpc.pc.in b/cmake/brpc.pc.in
+index 723dab4..36277cd 100644
+--- a/cmake/brpc.pc.in
++++ b/cmake/brpc.pc.in
+@@ -24,3 +24,4 @@ Version: @BRPC_VERSION@
+ Cflags: -I${includedir}
+ Libs: -L${libdir}/ -lbrpc
+ Libs.private: @BRPC_PRIVATE_LIBS@
++Requires.private: @BRPC_PRIVATE_REQUIRES@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 1b4b233..e0bdb64 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -26,6 +26,10 @@ include_directories(${PROJECT_SOURCE_DIR}/src)
+ add_library(BUTIL_LIB OBJECT ${BUTIL_SOURCES})
+ add_library(SOURCES_LIB OBJECT ${SOURCES})
+ add_dependencies(SOURCES_LIB PROTO_LIB)
++if(WITH_GLOG)
++ target_link_libraries(BUTIL_LIB PRIVATE glog::glog)
++ target_link_libraries(SOURCES_LIB PRIVATE glog::glog)
++endif()
+
+ # shared library needs POSITION_INDEPENDENT_CODE
+ set_property(TARGET ${SOURCES_LIB} PROPERTY POSITION_INDEPENDENT_CODE 1)
+@@ -58,10 +62,9 @@ function(check_thrift_version target_arg)
+ endif()
+ endfunction()
+
++target_link_libraries(brpc-static PUBLIC ${DYNAMIC_LIB})
+
+ if(WITH_THRIFT)
+- target_link_libraries(brpc-static ${THRIFT_LIB})
+- check_thrift_version(brpc-static)
+ endif()
+
+ SET_TARGET_PROPERTIES(brpc-static PROPERTIES OUTPUT_NAME brpc CLEAN_DIRECT_OUTPUT 1)
+@@ -74,24 +77,25 @@ set(protoc_gen_mcpack_SOURCES
+ )
+
+ add_executable(protoc-gen-mcpack ${protoc_gen_mcpack_SOURCES})
++set_target_properties(protoc-gen-mcpack PROPERTIES EXCLUDE_FROM_ALL 1)
+
+ if(BUILD_SHARED_LIBS)
++ set_target_properties(brpc-static PROPERTIES EXCLUDE_FROM_ALL 1)
+ add_library(brpc-shared SHARED $<TARGET_OBJECTS:BUTIL_LIB>
+ $<TARGET_OBJECTS:SOURCES_LIB>
+ $<TARGET_OBJECTS:PROTO_LIB>)
+- target_link_libraries(brpc-shared ${DYNAMIC_LIB})
++ target_link_libraries(brpc-shared PUBLIC ${DYNAMIC_LIB})
+ if(WITH_GLOG)
+- target_link_libraries(brpc-shared ${GLOG_LIB})
+ endif()
+ if(WITH_THRIFT)
+- target_link_libraries(brpc-shared ${THRIFT_LIB})
+- check_thrift_version(brpc-shared)
+ endif()
+ SET_TARGET_PROPERTIES(brpc-shared PROPERTIES OUTPUT_NAME brpc CLEAN_DIRECT_OUTPUT 1)
+
+ target_link_libraries(protoc-gen-mcpack brpc-shared ${DYNAMIC_LIB} pthread)
+
++ target_include_directories(brpc-shared PUBLIC $<INSTALL_INTERFACE:include>)
+ install(TARGETS brpc-shared
++ EXPORT unofficial-brpc-targets
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+@@ -102,8 +106,38 @@ endif()
+
+
+
++if(NOT BUILD_SHARED_LIBS)
++target_include_directories(brpc-static PUBLIC $<INSTALL_INTERFACE:include>)
+ install(TARGETS brpc-static
++ EXPORT unofficial-brpc-targets
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ )
++endif()
++
++file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/unofficial-brpc-config.cmake"
++[[include(CMakeFindDependencyMacro)
++find_dependency(OpenSSL)
++find_dependency(Threads)
++find_dependency(ZLIB)
++find_dependency(gflags CONFIG)
++find_dependency(protobuf CONFIG)
++find_dependency(leveldb CONFIG)
++find_dependency(Thrift CONFIG)
++find_dependency(glog CONFIG)
++include("${CMAKE_CURRENT_LIST_DIR}/unofficial-brpc-targets.cmake")
++if(NOT TARGET unofficial::brpc::brpc)
++ if(TARGET unofficial::brpc::brpc-static)
++ add_library(unofficial::brpc::brpc ALIAS unofficial::brpc::brpc-static)
++ else()
++ add_library(unofficial::brpc::brpc ALIAS unofficial::brpc::brpc-shared)
++ endif()
++endif()
++]])
++install(FILES "${CMAKE_CURRENT_BINARY_DIR}/unofficial-brpc-config.cmake" DESTINATION share/unofficial-brpc)
++
++install(EXPORT unofficial-brpc-targets
++ NAMESPACE unofficial::brpc::
++ DESTINATION share/unofficial-brpc
++)