aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/brpc
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/brpc')
-rw-r--r--vcpkg/ports/brpc/fix-build.patch243
-rw-r--r--vcpkg/ports/brpc/fix-warnings.patch15
-rw-r--r--vcpkg/ports/brpc/portfile.cmake36
-rw-r--r--vcpkg/ports/brpc/vcpkg.json32
4 files changed, 326 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
++)
diff --git a/vcpkg/ports/brpc/fix-warnings.patch b/vcpkg/ports/brpc/fix-warnings.patch
new file mode 100644
index 0000000..72755d1
--- /dev/null
+++ b/vcpkg/ports/brpc/fix-warnings.patch
@@ -0,0 +1,15 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 9e9a776a..a8c4c1ea 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -124,8 +124,8 @@ if(WITH_MESALINK)
+ endif()
+ set(CMAKE_CPP_FLAGS "${CMAKE_CPP_FLAGS} -DBTHREAD_USE_FAST_PTHREAD_MUTEX -D__const__=__unused__ -D_GNU_SOURCE -DUSE_SYMBOLIZE -DNO_TCMALLOC -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -DBRPC_REVISION=\\\"${BRPC_REVISION}\\\" -D__STRICT_ANSI__")
+ set(CMAKE_CPP_FLAGS "${CMAKE_CPP_FLAGS} ${DEBUG_SYMBOL} ${THRIFT_CPP_FLAG}")
+-set(CMAKE_CXX_FLAGS "${CMAKE_CPP_FLAGS} -O2 -pipe -Wall -W -fPIC -fstrict-aliasing -Wno-invalid-offsetof -Wno-unused-parameter -fno-omit-frame-pointer")
+-set(CMAKE_C_FLAGS "${CMAKE_CPP_FLAGS} -O2 -pipe -Wall -W -fPIC -fstrict-aliasing -Wno-unused-parameter -fno-omit-frame-pointer")
++set(CMAKE_CXX_FLAGS "${CMAKE_CPP_FLAGS} -O2 -pipe -w -fPIC -fstrict-aliasing -Wno-invalid-offsetof -Wno-unused-parameter -fno-omit-frame-pointer")
++set(CMAKE_C_FLAGS "${CMAKE_CPP_FLAGS} -O2 -pipe -w -fPIC -fstrict-aliasing -Wno-unused-parameter -fno-omit-frame-pointer")
+
+ macro(use_cxx11)
+ if(CMAKE_VERSION VERSION_LESS "3.1.3")
diff --git a/vcpkg/ports/brpc/portfile.cmake b/vcpkg/ports/brpc/portfile.cmake
new file mode 100644
index 0000000..b22b9bc
--- /dev/null
+++ b/vcpkg/ports/brpc/portfile.cmake
@@ -0,0 +1,36 @@
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO apache/brpc
+ REF "${VERSION}"
+ SHA512 954be2562f598ca9a0939a96cb6f0af98dbbd9b3d191db613516239be63643ccfd1836eeb0510549f3526915af92e7c1b7f3cab4c55b0257cfc0a3c5eb4fb7dd
+ HEAD_REF master
+ PATCHES
+ fix-build.patch
+ fix-warnings.patch
+)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ DISABLE_PARALLEL_CONFIGURE
+ OPTIONS
+ -DBUILD_BRPC_TOOLS=OFF
+ -DDOWNLOAD_GTEST=OFF
+ -DWITH_THRIFT=ON
+ -DWITH_GLOG=ON
+ -DCMAKE_REQUIRE_FIND_PACKAGE_OpenSSL=ON
+)
+
+vcpkg_cmake_install()
+vcpkg_copy_pdbs()
+vcpkg_fixup_pkgconfig()
+vcpkg_cmake_config_fixup(PACKAGE_NAME unofficial-brpc CONFIG_PATH share/unofficial-brpc)
+vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/unofficial-brpc/unofficial-brpc-targets.cmake"
+ "add_library(unofficial::brpc::brpc-"
+ "add_library(#[[skip-usage-heuristics]] unofficial::brpc::brpc-"
+)
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/include/butil/third_party/superfasthash")
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
+
diff --git a/vcpkg/ports/brpc/vcpkg.json b/vcpkg/ports/brpc/vcpkg.json
new file mode 100644
index 0000000..5143e1d
--- /dev/null
+++ b/vcpkg/ports/brpc/vcpkg.json
@@ -0,0 +1,32 @@
+{
+ "name": "brpc",
+ "version": "1.14.1",
+ "description": "Industrial-grade RPC framework used throughout Baidu, with 1,000,000+ instances and thousands kinds of services, called \"baidu-rpc\" inside Baidu.",
+ "homepage": "https://github.com/apache/brpc",
+ "license": "Apache-2.0",
+ "supports": "!android & !windows",
+ "dependencies": [
+ "gflags",
+ "glog",
+ {
+ "name": "leveldb",
+ "default-features": false
+ },
+ "openssl",
+ {
+ "name": "protobuf",
+ "features": [
+ "zlib"
+ ]
+ },
+ "thrift",
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ }
+ ]
+}