vcpkg/ports/brpc/fix-build.patch
2023-02-08 13:43:34 -08:00

192 lines
6.5 KiB
Diff

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9edc0a68..af786821 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -25,7 +25,7 @@ option(WITH_DEBUG_SYMBOLS "With debug symbols" ON)
option(WITH_THRIFT "With thrift framed protocol supported" OFF)
option(WITH_SNAPPY "With snappy" OFF)
option(BUILD_UNIT_TESTS "Whether to build unit tests" OFF)
-option(BUILD_BRPC_TOOLS "Whether to build brpc tools" ON)
+option(BUILD_BRPC_TOOLS "Whether to build brpc tools" OFF)
option(DOWNLOAD_GTEST "Download and build a fresh copy of googletest. Requires Internet access." ON)
# Enable MACOSX_RPATH. Run "cmake --help-policy CMP0042" for policy details.
@@ -65,7 +65,8 @@ endif()
if(WITH_THRIFT)
set(THRIFT_CPP_FLAG "-DENABLE_THRIFT_FRAMED_PROTOCOL")
- set(THRIFT_LIB "thrift")
+ find_package(Thrift CONFIG REQUIRED)
+ set(THRIFT_LIB "thrift::thrift")
endif()
include(GNUInstallDirs)
@@ -144,11 +145,14 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
endif()
endif()
-find_package(Protobuf REQUIRED)
+find_package(protobuf CONFIG REQUIRED)
+get_target_property(PROTOBUF_INCLUDE_DIR protobuf::libprotobuf INTERFACE_INCLUDE_DIRECTORIES)
+set(PROTOBUF_LIBRARIES protobuf::libprotobuf)
find_package(Threads REQUIRED)
-find_path(LEVELDB_INCLUDE_PATH NAMES leveldb/db.h)
-find_library(LEVELDB_LIB NAMES leveldb)
+find_package(leveldb CONFIG REQUIRED)
+set(LEVELDB_INCLUDE_PATH ${PROTOBUF_INCLUDE_DIR})
+set(LEVELDB_LIB leveldb::leveldb)
if ((NOT LEVELDB_INCLUDE_PATH) OR (NOT LEVELDB_LIB))
message(FATAL_ERROR "Fail to find leveldb")
endif()
@@ -163,8 +167,9 @@ if(WITH_SNAPPY)
endif()
if(WITH_GLOG)
- find_path(GLOG_INCLUDE_PATH NAMES glog/logging.h)
- find_library(GLOG_LIB NAMES glog)
+ find_package(glog CONFIG REQUIRED)
+ get_target_property(GLOG_INCLUDE_PATH glog::glog INTERFACE_INCLUDE_DIRECTORIES)
+ set(GLOG_LIB glog::glog)
if((NOT GLOG_INCLUDE_PATH) OR (NOT GLOG_LIB))
message(FATAL_ERROR "Fail to find glog")
endif()
@@ -182,7 +187,7 @@ if(WITH_MESALINK)
include_directories(${MESALINK_INCLUDE_PATH})
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()
@@ -193,7 +198,7 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
)
endif()
-find_package(OpenSSL)
+find_package(OpenSSL REQUIRED)
include_directories(
${GFLAGS_INCLUDE_PATH}
@@ -208,9 +213,9 @@ set(DYNAMIC_LIB
${LEVELDB_LIB}
${PROTOC_LIB}
${CMAKE_THREAD_LIBS_INIT}
- ${THRIFT_LIB}
- ${THRIFTNB_LIB}
${OPENSSL_CRYPTO_LIBRARY}
+ ${OPENSSL_SSL_LIBRARY}
+ ${THRIFT_LIB}
dl
z)
diff --git a/cmake/FindGFLAGS.cmake b/cmake/FindGFLAGS.cmake
index dfad5fd8..8423d55a 100644
--- a/cmake/FindGFLAGS.cmake
+++ b/cmake/FindGFLAGS.cmake
@@ -24,7 +24,9 @@ if (GFLAGS_STATIC)
set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
endif (WIN32)
endif (GFLAGS_STATIC)
-find_library(GFLAGS_LIBRARY NAMES gflags libgflags)
+find_package(gflags CONFIG REQUIRED)
+set(GFLAGS_LIBRARY gflags::gflags)
+get_target_property(GFLAGS_INCLUDE_PATH gflags::gflags INTERFACE_INCLUDE_DIRECTORIES)
if(GFLAGS_INCLUDE_PATH AND GFLAGS_LIBRARY)
set(GFLAGS_FOUND TRUE)
endif(GFLAGS_INCLUDE_PATH AND GFLAGS_LIBRARY)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index fbcc7cc5..1c61c4ce 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -31,16 +31,24 @@ add_dependencies(SOURCES_LIB PROTO_LIB)
set_property(TARGET ${SOURCES_LIB} PROPERTY POSITION_INDEPENDENT_CODE 1)
set_property(TARGET ${BUTIL_LIB} PROPERTY POSITION_INDEPENDENT_CODE 1)
+if(NOT BUILD_SHARED_LIBS)
add_library(brpc-static STATIC $<TARGET_OBJECTS:BUTIL_LIB>
$<TARGET_OBJECTS:SOURCES_LIB>
$<TARGET_OBJECTS:PROTO_LIB>)
-if(BRPC_WITH_THRIFT)
+if(WITH_THRIFT)
target_link_libraries(brpc-static thrift)
endif()
+target_link_libraries(brpc-static PUBLIC ${DYNAMIC_LIB})
+if(BRPC_WITH_GLOG)
+ target_link_libraries(brpc-static ${GLOG_LIB})
+endif()
+target_include_directories(brpc-static PUBLIC $<INSTALL_INTERFACE:include>)
SET_TARGET_PROPERTIES(brpc-static PROPERTIES OUTPUT_NAME brpc CLEAN_DIRECT_OUTPUT 1)
+endif()
+if(0)
# for protoc-gen-mcpack
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/output/bin)
@@ -49,35 +57,58 @@ set(protoc_gen_mcpack_SOURCES
)
add_executable(protoc-gen-mcpack ${protoc_gen_mcpack_SOURCES})
+endif()
if(BUILD_SHARED_LIBS)
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_include_directories(brpc-shared PUBLIC $<INSTALL_INTERFACE:include>)
if(BRPC_WITH_GLOG)
target_link_libraries(brpc-shared ${GLOG_LIB})
endif()
- if(BRPC_WITH_THRIFT)
+ if(WITH_THRIFT)
target_link_libraries(brpc-shared thrift)
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)
- install(TARGETS brpc-shared
+ install(TARGETS brpc-shared EXPORT unofficial-brpcTargets
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
)
else()
- target_link_libraries(protoc-gen-mcpack brpc-static ${DYNAMIC_LIB} pthread)
endif()
-install(TARGETS brpc-static
+if(NOT BUILD_SHARED_LIBS)
+install(TARGETS brpc-static EXPORT unofficial-brpcTargets
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(gflags CONFIG)
+find_dependency(protobuf CONFIG)
+find_dependency(leveldb CONFIG)
+find_dependency(Thrift CONFIG)
+find_dependency(glog CONFIG)
+file(GLOB TARGET_FILES "${CMAKE_CURRENT_LIST_DIR}/unofficial-brpcTargets.cmake")
+foreach (TARGET_FILE ${TARGET_FILES})
+ include("${TARGET_FILE}")
+endforeach()
+]])
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/unofficial-brpc-config.cmake" DESTINATION share/unofficial-brpc)
+
+install(EXPORT unofficial-brpcTargets
+ NAMESPACE unofficial::brpc::
+ DESTINATION share/unofficial-brpc
+)