2022-06-03 03:53:28 +08:00
|
|
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
2024-06-21 22:39:50 +02:00
|
|
|
index b14fe178..9e9a776a 100644
|
2022-06-03 03:53:28 +08:00
|
|
|
--- a/CMakeLists.txt
|
|
|
|
+++ b/CMakeLists.txt
|
2024-05-28 05:33:42 +08:00
|
|
|
@@ -68,7 +68,8 @@ endif()
|
2022-06-03 03:53:28 +08:00
|
|
|
|
|
|
|
if(WITH_THRIFT)
|
|
|
|
set(THRIFT_CPP_FLAG "-DENABLE_THRIFT_FRAMED_PROTOCOL")
|
2024-05-28 05:33:42 +08:00
|
|
|
- find_library(THRIFT_LIB NAMES thrift)
|
2022-06-03 03:53:28 +08:00
|
|
|
+ find_package(Thrift CONFIG REQUIRED)
|
|
|
|
+ set(THRIFT_LIB "thrift::thrift")
|
2024-05-28 05:33:42 +08:00
|
|
|
if (NOT THRIFT_LIB)
|
|
|
|
message(FATAL_ERROR "Fail to find Thrift")
|
|
|
|
endif()
|
2024-06-21 22:39:50 +02:00
|
|
|
@@ -154,6 +155,8 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
2022-06-03 03:53:28 +08:00
|
|
|
endif()
|
|
|
|
|
2024-06-21 22:39:50 +02:00
|
|
|
find_package(Protobuf REQUIRED)
|
2022-06-03 03:53:28 +08:00
|
|
|
+get_target_property(PROTOBUF_INCLUDE_DIR protobuf::libprotobuf INTERFACE_INCLUDE_DIRECTORIES)
|
|
|
|
+set(PROTOBUF_LIBRARIES protobuf::libprotobuf)
|
2024-05-28 05:33:42 +08:00
|
|
|
if(Protobuf_VERSION GREATER 4.21)
|
|
|
|
# required by absl
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
|
|
@@ -199,9 +202,11 @@ else()
|
|
|
|
use_cxx11()
|
|
|
|
endif()
|
2022-06-03 03:53:28 +08:00
|
|
|
find_package(Threads REQUIRED)
|
2023-07-25 01:59:05 +08:00
|
|
|
+find_package(ZLIB REQUIRED)
|
2022-07-20 15:20:39 -07:00
|
|
|
|
2022-06-03 03:53:28 +08:00
|
|
|
+find_package(leveldb CONFIG REQUIRED)
|
2023-07-25 01:59:05 +08:00
|
|
|
find_path(LEVELDB_INCLUDE_PATH NAMES leveldb/db.h)
|
|
|
|
-find_library(LEVELDB_LIB NAMES leveldb)
|
2022-06-03 03:53:28 +08:00
|
|
|
+set(LEVELDB_LIB leveldb::leveldb)
|
2023-07-25 01:59:05 +08:00
|
|
|
if ((NOT LEVELDB_INCLUDE_PATH) OR (NOT LEVELDB_LIB))
|
|
|
|
message(FATAL_ERROR "Fail to find leveldb")
|
|
|
|
endif()
|
2024-05-28 05:33:42 +08:00
|
|
|
@@ -216,8 +221,9 @@ if(WITH_SNAPPY)
|
2022-07-20 15:20:39 -07:00
|
|
|
endif()
|
2022-06-03 03:53:28 +08:00
|
|
|
|
|
|
|
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()
|
2024-05-28 05:33:42 +08:00
|
|
|
@@ -244,7 +250,7 @@ if(WITH_RDMA)
|
2023-02-13 23:41:36 +08:00
|
|
|
endif()
|
2022-06-03 03:53:28 +08:00
|
|
|
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()
|
2024-05-28 05:33:42 +08:00
|
|
|
@@ -259,7 +265,7 @@ else()
|
2022-06-03 03:53:28 +08:00
|
|
|
)
|
2024-05-28 05:33:42 +08:00
|
|
|
endif()
|
2022-06-03 03:53:28 +08:00
|
|
|
|
2024-05-28 05:33:42 +08:00
|
|
|
- find_package(OpenSSL)
|
|
|
|
+ find_package(OpenSSL REQUIRED)
|
|
|
|
include_directories(${OPENSSL_INCLUDE_DIR})
|
|
|
|
endif()
|
2022-06-03 03:53:28 +08:00
|
|
|
|
2024-05-28 05:33:42 +08:00
|
|
|
@@ -275,9 +281,10 @@ set(DYNAMIC_LIB
|
2022-06-03 03:53:28 +08:00
|
|
|
${LEVELDB_LIB}
|
|
|
|
${PROTOC_LIB}
|
|
|
|
${CMAKE_THREAD_LIBS_INIT}
|
|
|
|
+ ${OPENSSL_SSL_LIBRARY}
|
2024-05-28 05:33:42 +08:00
|
|
|
${THRIFT_LIB}
|
2022-06-03 03:53:28 +08:00
|
|
|
dl
|
2023-07-25 01:59:05 +08:00
|
|
|
- z)
|
|
|
|
+ ZLIB::ZLIB)
|
2022-06-03 03:53:28 +08:00
|
|
|
|
2024-05-28 05:33:42 +08:00
|
|
|
if(WITH_BORINGSSL)
|
|
|
|
list(APPEND DYNAMIC_LIB ${BORINGSSL_SSL_LIBRARY})
|
2024-06-21 22:39:50 +02:00
|
|
|
@@ -520,7 +527,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}
|
|
|
|
${BTHREAD_SOURCES}
|
2022-06-03 03:53:28 +08:00
|
|
|
diff --git a/cmake/FindGFLAGS.cmake b/cmake/FindGFLAGS.cmake
|
2024-06-21 22:39:50 +02:00
|
|
|
index dfad5fd8..8423d55a 100644
|
2022-06-03 03:53:28 +08:00
|
|
|
--- a/cmake/FindGFLAGS.cmake
|
|
|
|
+++ b/cmake/FindGFLAGS.cmake
|
2023-02-09 05:43:34 +08:00
|
|
|
@@ -24,7 +24,9 @@ if (GFLAGS_STATIC)
|
2022-06-03 03:53:28 +08:00
|
|
|
set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
|
|
|
|
endif (WIN32)
|
|
|
|
endif (GFLAGS_STATIC)
|
|
|
|
-find_library(GFLAGS_LIBRARY NAMES gflags libgflags)
|
2023-02-09 05:43:34 +08:00
|
|
|
+find_package(gflags CONFIG REQUIRED)
|
2022-06-03 03:53:28 +08:00
|
|
|
+set(GFLAGS_LIBRARY gflags::gflags)
|
2023-02-09 05:43:34 +08:00
|
|
|
+get_target_property(GFLAGS_INCLUDE_PATH gflags::gflags INTERFACE_INCLUDE_DIRECTORIES)
|
2022-06-03 03:53:28 +08:00
|
|
|
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
|
2024-06-21 22:39:50 +02:00
|
|
|
index 1b4b2332..638ec070 100644
|
2022-06-03 03:53:28 +08:00
|
|
|
--- a/src/CMakeLists.txt
|
|
|
|
+++ b/src/CMakeLists.txt
|
2024-06-21 22:39:50 +02:00
|
|
|
@@ -24,13 +24,16 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
|
|
|
include_directories(${PROJECT_SOURCE_DIR}/src)
|
|
|
|
|
|
|
|
add_library(BUTIL_LIB OBJECT ${BUTIL_SOURCES})
|
|
|
|
+target_link_libraries(BUTIL_LIB PUBLIC ${DYNAMIC_LIB})
|
|
|
|
add_library(SOURCES_LIB OBJECT ${SOURCES})
|
|
|
|
+target_link_libraries(SOURCES_LIB PUBLIC ${DYNAMIC_LIB})
|
|
|
|
add_dependencies(SOURCES_LIB PROTO_LIB)
|
|
|
|
|
|
|
|
# shared library needs POSITION_INDEPENDENT_CODE
|
2022-06-03 03:53:28 +08:00
|
|
|
set_property(TARGET ${SOURCES_LIB} PROPERTY POSITION_INDEPENDENT_CODE 1)
|
|
|
|
set_property(TARGET ${BUTIL_LIB} PROPERTY POSITION_INDEPENDENT_CODE 1)
|
2023-02-09 05:43:34 +08:00
|
|
|
|
2022-07-20 15:20:39 -07:00
|
|
|
+if(NOT BUILD_SHARED_LIBS)
|
2022-06-03 03:53:28 +08:00
|
|
|
add_library(brpc-static STATIC $<TARGET_OBJECTS:BUTIL_LIB>
|
|
|
|
$<TARGET_OBJECTS:SOURCES_LIB>
|
|
|
|
$<TARGET_OBJECTS:PROTO_LIB>)
|
2024-06-21 22:39:50 +02:00
|
|
|
@@ -60,12 +63,19 @@ endfunction()
|
2022-07-20 15:20:39 -07:00
|
|
|
|
2024-05-28 05:33:42 +08:00
|
|
|
|
|
|
|
if(WITH_THRIFT)
|
|
|
|
- target_link_libraries(brpc-static ${THRIFT_LIB})
|
|
|
|
- check_thrift_version(brpc-static)
|
|
|
|
+ target_link_libraries(brpc-static PUBLIC ${THRIFT_LIB})
|
2022-07-20 15:20:39 -07:00
|
|
|
endif()
|
2023-02-09 05:43:34 +08:00
|
|
|
|
2022-07-20 15:20:39 -07:00
|
|
|
+target_link_libraries(brpc-static PUBLIC ${DYNAMIC_LIB})
|
|
|
|
+if(BRPC_WITH_GLOG)
|
2024-05-28 05:33:42 +08:00
|
|
|
+ target_link_libraries(brpc-static PUBLIC ${GLOG_LIB})
|
2022-06-03 03:53:28 +08:00
|
|
|
+endif()
|
|
|
|
+target_include_directories(brpc-static PUBLIC $<INSTALL_INTERFACE:include>)
|
2024-05-28 05:33:42 +08:00
|
|
|
+
|
2022-07-20 15:20:39 -07:00
|
|
|
SET_TARGET_PROPERTIES(brpc-static PROPERTIES OUTPUT_NAME brpc CLEAN_DIRECT_OUTPUT 1)
|
2022-06-03 03:53:28 +08:00
|
|
|
+endif()
|
2024-05-28 05:33:42 +08:00
|
|
|
|
2022-07-20 15:20:39 -07:00
|
|
|
+if(0)
|
|
|
|
# for protoc-gen-mcpack
|
|
|
|
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/output/bin)
|
|
|
|
|
2024-06-21 22:39:50 +02:00
|
|
|
@@ -74,36 +84,63 @@ set(protoc_gen_mcpack_SOURCES
|
2022-07-20 15:20:39 -07:00
|
|
|
)
|
|
|
|
|
|
|
|
add_executable(protoc-gen-mcpack ${protoc_gen_mcpack_SOURCES})
|
|
|
|
+endif()
|
2023-02-09 05:43:34 +08:00
|
|
|
|
2022-07-20 15:20:39 -07:00
|
|
|
if(BUILD_SHARED_LIBS)
|
|
|
|
add_library(brpc-shared SHARED $<TARGET_OBJECTS:BUTIL_LIB>
|
|
|
|
$<TARGET_OBJECTS:SOURCES_LIB>
|
|
|
|
$<TARGET_OBJECTS:PROTO_LIB>)
|
2024-05-28 05:33:42 +08:00
|
|
|
- target_link_libraries(brpc-shared ${DYNAMIC_LIB})
|
|
|
|
+ target_link_libraries(brpc-shared PUBLIC ${DYNAMIC_LIB})
|
2022-07-20 15:20:39 -07:00
|
|
|
+ target_include_directories(brpc-shared PUBLIC $<INSTALL_INTERFACE:include>)
|
2024-05-28 05:33:42 +08:00
|
|
|
if(WITH_GLOG)
|
|
|
|
- target_link_libraries(brpc-shared ${GLOG_LIB})
|
|
|
|
+ target_link_libraries(brpc-shared PUBLIC ${GLOG_LIB})
|
2022-07-20 15:20:39 -07:00
|
|
|
endif()
|
2024-05-28 05:33:42 +08:00
|
|
|
if(WITH_THRIFT)
|
|
|
|
- target_link_libraries(brpc-shared ${THRIFT_LIB})
|
|
|
|
- check_thrift_version(brpc-shared)
|
|
|
|
+ target_link_libraries(brpc-shared PUBLIC ${THRIFT_LIB})
|
2022-07-20 15:20:39 -07:00
|
|
|
endif()
|
|
|
|
SET_TARGET_PROPERTIES(brpc-shared PROPERTIES OUTPUT_NAME brpc CLEAN_DIRECT_OUTPUT 1)
|
2023-07-25 01:59:05 +08:00
|
|
|
-
|
|
|
|
+ if(0)
|
2022-07-20 15:20:39 -07:00
|
|
|
target_link_libraries(protoc-gen-mcpack brpc-shared ${DYNAMIC_LIB} pthread)
|
2023-07-25 01:59:05 +08:00
|
|
|
+ endif()
|
2024-05-28 05:33:42 +08:00
|
|
|
|
|
|
|
- install(TARGETS brpc-shared
|
2022-07-20 15:20:39 -07:00
|
|
|
+ install(TARGETS brpc-shared EXPORT unofficial-brpcTargets
|
|
|
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
|
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
|
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
|
|
)
|
|
|
|
else()
|
2023-07-25 01:59:05 +08:00
|
|
|
+if(0)
|
|
|
|
target_link_libraries(protoc-gen-mcpack brpc-static ${DYNAMIC_LIB} pthread)
|
2022-06-03 03:53:28 +08:00
|
|
|
endif()
|
2023-07-25 01:59:05 +08:00
|
|
|
+endif()
|
2022-06-03 03:53:28 +08:00
|
|
|
|
|
|
|
|
2024-05-28 05:33:42 +08:00
|
|
|
-
|
2022-06-03 03:53:28 +08:00
|
|
|
-install(TARGETS brpc-static
|
2022-07-20 15:20:39 -07:00
|
|
|
+if(NOT BUILD_SHARED_LIBS)
|
2022-06-03 03:53:28 +08:00
|
|
|
+install(TARGETS brpc-static EXPORT unofficial-brpcTargets
|
|
|
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
|
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
|
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
|
|
)
|
|
|
|
+endif()
|
2023-07-25 01:59:05 +08:00
|
|
|
+
|
2022-06-03 03:53:28 +08:00
|
|
|
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/unofficial-brpc-config.cmake"
|
|
|
|
+[[include(CMakeFindDependencyMacro)
|
|
|
|
+find_dependency(OpenSSL)
|
|
|
|
+find_dependency(Threads)
|
2023-07-25 01:59:05 +08:00
|
|
|
+find_dependency(ZLIB)
|
2022-06-03 03:53:28 +08:00
|
|
|
+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
|
|
|
|
+)
|