提交 26882e4d 编写于 作者: H HuangWei 提交者: Wu Tao

CMake: remove MY_PROJ_LIB_PATH, improve client_lib, use rocksdb target to link (#373)

上级 4b35e054
Subproject commit 975c50dc8996bbda2cfdf00fb754d650c57f13c7
Subproject commit 5836aeaab278402239c57d9ee829678e490e3746
......@@ -208,7 +208,8 @@ function run_build()
echo "INFO: start build rocksdb..."
ROCKSDB_BUILD_DIR="$ROOT/rocksdb/build"
CMAKE_OPTIONS="-DCMAKE_C_COMPILER=$C_COMPILER -DCMAKE_CXX_COMPILER=$CXX_COMPILER -DWITH_LZ4=ON -DWITH_ZSTD=ON -DWITH_SNAPPY=ON -DWITH_BZ2=OFF -DWITH_TESTS=OFF -DBUILD_SHARED_LIBS=OFF -DBUILD_STATIC_LIBS=ON"
ROCKSDB_BUILD_OUTPUT="$ROCKSDB_BUILD_DIR/output"
CMAKE_OPTIONS="-DCMAKE_C_COMPILER=$C_COMPILER -DCMAKE_CXX_COMPILER=$CXX_COMPILER -DWITH_LZ4=ON -DWITH_ZSTD=ON -DWITH_SNAPPY=ON -DWITH_BZ2=OFF -DWITH_TESTS=OFF"
if [ "$WARNING_ALL" == "YES" ]
then
echo "WARNING_ALL=YES"
......@@ -252,7 +253,7 @@ function run_build()
mkdir -p $ROCKSDB_BUILD_DIR
cd $ROCKSDB_BUILD_DIR
echo "$CMAKE_OPTIONS" >CMAKE_OPTIONS
cmake .. -DCMAKE_INSTALL_PREFIX=$ROCKSDB_BUILD_DIR $CMAKE_OPTIONS
cmake .. -DCMAKE_INSTALL_PREFIX=$ROCKSDB_BUILD_OUTPUT $CMAKE_OPTIONS
if [ $? -ne 0 ]; then
echo "ERROR: cmake failed"
exit 1
......
......@@ -29,7 +29,6 @@ execute_process(COMMAND cp -rf ${DSN_ROOT} ${PEGASUS_PROJECT_DIR})
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
include_directories(${PEGASUS_PROJECT_DIR}/rocksdb/include)
include_directories(${PEGASUS_ROOT}/include)
link_directories(${PEGASUS_ROOT}/lib)
......@@ -40,11 +39,8 @@ set(CMAKE_INSTALL_PREFIX ${PEGASUS_ROOT} CACHE STRING "" FORCE)
message (STATUS "pegasus Installation directory: CMAKE_INSTALL_PREFIX = " ${CMAKE_INSTALL_PREFIX})
# rocksdb
set(CMAKE_MODULE_PATH "${PEGASUS_PROJECT_DIR}/rocksdb/cmake/modules")
find_package(snappy REQUIRED)
find_package(zstd REQUIRED)
find_package(lz4 REQUIRED)
set(ROCKSDB_LINK_LIBRARIES librocksdb.a ${ZSTD_LIBRARIES} ${LZ4_LIBRARIES} ${SNAPPY_LIBRARIES})
set(CMAKE_PREFIX_PATH ${PEGASUS_PROJECT_DIR}/rocksdb/build/output;${CMAKE_PREFIX_PATH})
find_package(RocksDB REQUIRED) # RocksDB::rocksdb means librocksdb.a
add_subdirectory(base)
add_subdirectory(reporter)
......
set(MY_PROJ_NAME "pegasus.base")
set(MY_PROJ_NAME "pegasus_base")
if(UNIX)
add_compile_options(-fPIC)
......@@ -11,8 +11,8 @@ set(MY_SRC_SEARCH_MODE "GLOB")
set(MY_PROJ_SRC "")
set(MY_PROJ_INC_PATH "../include")
set(MY_PROJ_LIB_PATH "")
set(MY_PROJ_INC_PATH "")
dsn_add_static_library()
target_link_libraries(pegasus_base PUBLIC RocksDB::rocksdb)
......@@ -12,6 +12,7 @@ set(MY_SRC_SEARCH_MODE "GLOB")
set(MY_PROJ_LIBS
dsn_runtime
pegasus_base
gtest)
set(MY_BOOST_LIBS Boost::system Boost::filesystem)
......
......@@ -5,38 +5,36 @@ file("GLOB"
add_definitions(-fPIC)
add_library(pegasus_client_impl_objects OBJECT ${source_files})
add_library(pegasus_client_impl $<TARGET_OBJECTS:pegasus_client_impl_objects>)
target_link_libraries(pegasus_client_impl_objects pegasus_base)
# both shared & static version of pegasus client depends on boost_system,boost_filesystem,aio,dl
#
# link the static lib of pegasus_client:
# with pegasus_client_impl pegasus.base thrift
set(pegasus_clientlib_static_path ${CMAKE_BINARY_DIR}/client_lib/libpegasus_client_static.a)
add_custom_target(clientlib_target
# link the static lib of pegasus_client: combine pegasus_client_impl, pegasus_base, etc into a single static lib
set(pegasus_client_static_lib ${CMAKE_CURRENT_BINARY_DIR}/libpegasus_client_static.a)
add_custom_target(combine_lib
COMMAND ar -x ${DSN_ROOT}/lib/libdsn_runtime.a
COMMAND ar -x ${DSN_ROOT}/lib/libdsn_replication_client.a
COMMAND ar -x ${DSN_ROOT}/lib/libdsn_replication_common.a
COMMAND ar -x ${DSN_THIRDPARTY_ROOT}/lib/libthrift.a
COMMAND ar -x ${CMAKE_BINARY_DIR}/client_lib/libpegasus_client_impl.a
COMMAND ar -x ${CMAKE_BINARY_DIR}/base/libpegasus.base.a
COMMAND ar -qcs ${pegasus_clientlib_static_path} *.o
COMMAND ar -x ${CMAKE_BINARY_DIR}/base/libpegasus_base.a
COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/$<TARGET_NAME:pegasus_client_impl_objects>.dir/*.o .
COMMAND ar -qcs ${pegasus_client_static_lib} *.o
COMMAND rm -rf *.o
WORKING_DIRECTORY ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}
DEPENDS pegasus_client_impl pegasus.base
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS pegasus_base pegasus_client_impl_objects
COMMENT "generate pegasus client static library"
)
)
add_library(pegasus_client_static STATIC IMPORTED GLOBAL)
add_dependencies(pegasus_client_static clientlib_target)
add_dependencies(pegasus_client_static combine_lib)
set_target_properties(pegasus_client_static
PROPERTIES
IMPORTED_LOCATION ${pegasus_clientlib_static_path})
install(FILES ${pegasus_clientlib_static_path} DESTINATION "lib")
IMPORTED_LOCATION ${pegasus_client_static_lib})
install(FILES ${pegasus_client_static_lib} DESTINATION "lib")
# link the shared lib of pegasus client
add_library(pegasus_client_shared SHARED $<TARGET_OBJECTS:pegasus_client_impl_objects>)
target_link_libraries(pegasus_client_shared PRIVATE
pegasus.base
pegasus_base
dsn_runtime
thrift)
install(TARGETS pegasus_client_shared DESTINATION "lib")
......@@ -10,7 +10,7 @@ set(MY_PROJ_SRC "")
# "GLOB" for non-recursive search
set(MY_SRC_SEARCH_MODE "GLOB")
set(MY_PROJ_LIB_PATH "../../../rocksdb/build")
set(MY_PROJ_INC_PATH "")
set(MY_PROJ_LIBS
pegasus_geo_lib
......@@ -18,12 +18,13 @@ set(MY_PROJ_LIBS
s2
pegasus_client_static
fmt
${ROCKSDB_LINK_LIBRARIES}
z)
RocksDB::rocksdb
)
set(MY_BOOST_LIBS Boost::system Boost::filesystem)
set(MY_BINPLACES "config.ini")
dsn_add_executable()
dsn_install_executable()
......@@ -10,13 +10,16 @@ set(MY_PROJ_SRC "")
# "GLOB" for non-recursive search
set(MY_SRC_SEARCH_MODE "GLOB")
set(MY_PROJ_INC_PATH "../../include")
set(MY_PROJ_INC_PATH "")
set(MY_PROJ_LIBS
s2
pegasus_client_static
fmt)
set(MY_PROJ_LIBS ""
# s2
# pegasus_client_static
# fmt
)
set(MY_BOOST_LIBS Boost::system Boost::filesystem)
dsn_add_static_library()
target_link_libraries(${MY_PROJ_NAME} PRIVATE pegasus_base) # TODO(huangwei5): dsn_add_static_library doesnt link libs, need fix
......@@ -9,10 +9,10 @@ set(MY_PROJ_SRC "")
# "GLOB" for non-recursive search
set(MY_SRC_SEARCH_MODE "GLOB")
set(MY_PROJ_INC_PATH "../../include" "../../base" "../proxy_lib")
set(MY_PROJ_INC_PATH "../../base" "../proxy_lib")
set(MY_PROJ_LIBS pegasus.rproxylib
pegasus.base
pegasus_base
pegasus_geo_lib
pegasus_reporter
prometheus-cpp-pull
......
......@@ -9,12 +9,12 @@ set(MY_PROJ_SRC "")
# "GLOB" for non-recursive search
set(MY_SRC_SEARCH_MODE "GLOB")
set(MY_PROJ_INC_PATH "../../include" "../../base")
set(MY_PROJ_INC_PATH "../../base")
set(MY_PROJ_LIBS "")
set(MY_PROJ_LIB_PATH "")
add_definitions(-Wno-attributes)
dsn_add_static_library()
target_link_libraries(${MY_PROJ_NAME} PRIVATE RocksDB::rocksdb) # TODO(huangwei5): dsn_add_static_library doesnt link libs, need fix
......@@ -10,7 +10,7 @@ set(MY_PROJ_SRC "")
# "GLOB" for non-recursive search
set(MY_SRC_SEARCH_MODE "GLOB")
set(MY_PROJ_INC_PATH "../../include" "../../base" "../proxy_lib")
set(MY_PROJ_INC_PATH "../../base" "../proxy_lib")
if (UNIX)
set(MY_PROJ_LIBS gtest pthread)
......@@ -21,11 +21,12 @@ endif()
set(MY_BOOST_LIBS Boost::system Boost::filesystem)
set(MY_PROJ_LIBS pegasus.rproxylib
pegasus.base ${MY_PROJ_LIBS}
pegasus_geo_lib
s2
pegasus_client_static
fmt)
pegasus_base
${MY_PROJ_LIBS}
pegasus_geo_lib
s2
pegasus_client_static
fmt)
set(MY_BINPLACES "config.ini" "run.sh")
......
......@@ -10,7 +10,8 @@ set(MY_PROJ_SRC "")
# "GLOB" for non-recursive search
set(MY_SRC_SEARCH_MODE "GLOB")
set(MY_PROJ_LIB_PATH "")
set(MY_PROJ_INC_PATH "")
dsn_add_static_library()
target_link_libraries(${MY_PROJ_NAME} PUBLIC pegasus_base) # TODO(huangwei5): dsn_add_static_library doesnt link libs, need fix
......@@ -17,6 +17,7 @@
#include <prometheus/registry.h>
#include <prometheus/gateway.h>
namespace pegasus {
namespace server {
......
......@@ -9,11 +9,7 @@ set(MY_PROJ_SRC "")
# "GLOB" for non-recursive search
set(MY_SRC_SEARCH_MODE "GLOB")
set(MY_PROJ_INC_PATH
"${PEGASUS_PROJECT_DIR}/rocksdb")
set(MY_PROJ_LIB_PATH
"${PEGASUS_PROJECT_DIR}/rocksdb/build")
set(MY_PROJ_INC_PATH "")
set(MY_PROJ_LIBS
dsn_replica_server
......@@ -25,6 +21,7 @@ set(MY_PROJ_LIBS
dsn.failure_detector
dsn.failure_detector.multimaster
dsn.replication.zookeeper_provider
RocksDB::rocksdb
pegasus_reporter
prometheus-cpp-pull
prometheus-cpp-push
......@@ -40,8 +37,6 @@ set(MY_PROJ_LIBS
PocoJSON
crypto
fmt
${ROCKSDB_LINK_LIBRARIES}
z
rt
aio
pthread)
......
......@@ -10,8 +10,6 @@ set(MY_PROJ_SRC "../pegasus_server_impl.cpp"
set(MY_SRC_SEARCH_MODE "GLOB")
set(MY_PROJ_LIB_PATH "../../../rocksdb/build")
set(MY_PROJ_LIBS
dsn_replica_server
dsn_meta_server
......@@ -23,6 +21,7 @@ set(MY_PROJ_LIBS
dsn.failure_detector.multimaster
dsn.replication.zookeeper_provider
pegasus_reporter
RocksDB::rocksdb
pegasus_client_static
zookeeper_mt
event
......@@ -37,8 +36,7 @@ set(MY_PROJ_LIBS
prometheus-cpp-core
prometheus-cpp-pull
curl
${ROCKSDB_LINK_LIBRARIES}
pegasus.base
pegasus_base
gtest
z rt aio pthread
)
......
......@@ -10,12 +10,7 @@ set(MY_PROJ_SRC "linenoise/linenoise.c" "sds/sds.c")
# "GLOB" for non-recursive search
set(MY_SRC_SEARCH_MODE "GLOB_RECURSE")
set(MY_PROJ_INC_PATH
"${PEGASUS_PROJECT_DIR}/src/include"
"${PEGASUS_PROJECT_DIR}/src/base")
set(MY_PROJ_LIB_PATH
"${PEGASUS_PROJECT_DIR}/rocksdb/build")
set(MY_PROJ_INC_PATH "${PEGASUS_PROJECT_DIR}/src/base")
set(MY_PROJ_LIBS
dsn.replication.tool
......@@ -35,9 +30,8 @@ set(MY_PROJ_LIBS
crypto
fmt
pegasus_geo_lib
RocksDB::rocksdb
s2
${ROCKSDB_LINK_LIBRARIES}
z
rt
aio
pthread)
......
......@@ -10,14 +10,11 @@ set(MY_PROJ_SRC "")
# "GLOB" for non-recursive search
set(MY_SRC_SEARCH_MODE "GLOB")
set(MY_PROJ_INC_PATH "../../include" "../../../rocksdb")
set(MY_PROJ_LIB_PATH "../../../rocksdb/build")
set(MY_PROJ_INC_PATH "../../../rocksdb")
set(MY_PROJ_LIBS
pegasus_client_static
${ROCKSDB_LINK_LIBRARIES}
z
RocksDB::rocksdb
gflags)
set(MY_BOOST_LIBS Boost::system Boost::filesystem)
......
......@@ -10,7 +10,7 @@ set(MY_PROJ_SRC "")
# "GLOB" for non-recursive search
set(MY_SRC_SEARCH_MODE "GLOB")
set(MY_PROJ_INC_PATH "../../include")
set(MY_PROJ_INC_PATH "")
set(MY_PROJ_LIBS
dsn.replication.ddlclient
......@@ -27,8 +27,6 @@ endif()
set(MY_BOOST_LIBS Boost::system Boost::filesystem)
set(MY_PROJ_LIB_PATH "../..")
set(MY_BINPLACES "config.ini" "run.sh")
dsn_add_test()
......@@ -10,7 +10,7 @@ set(MY_PROJ_SRC ../function_test/global_env.cpp)
# "GLOB" for non-recursive search
set(MY_SRC_SEARCH_MODE "GLOB")
set(MY_PROJ_INC_PATH "../../include" "../function_test")
set(MY_PROJ_INC_PATH "../function_test")
set(MY_PROJ_LIBS
pegasus_client_static
......
......@@ -10,7 +10,7 @@ set(MY_PROJ_SRC "")
# "GLOB" for non-recursive search
set(MY_SRC_SEARCH_MODE "GLOB")
set(MY_PROJ_INC_PATH "../../include")
set(MY_PROJ_INC_PATH "")
set(MY_PROJ_LIBS
pegasus_client_static
......
......@@ -10,7 +10,7 @@ set(MY_PROJ_SRC ../function_test/global_env.cpp)
# "GLOB" for non-recursive search
set(MY_SRC_SEARCH_MODE "GLOB")
set(MY_PROJ_INC_PATH "../../include" "../function_test")
set(MY_PROJ_INC_PATH "../function_test")
set(MY_PROJ_LIBS
pegasus_client_static
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册