152 lines
5.0 KiB
CMake
152 lines
5.0 KiB
CMake
cmake_minimum_required(VERSION 2.8)
|
|
|
|
SET( CMAKE_CXX_COMPILER /opt/rh/devtoolset-2/root/usr/bin/g++ )
|
|
message("CMAKE_CXX_COMPILER ${CMAKE_CXX_COMPILER} " )
|
|
|
|
SET( CMAKE_C_COMPILER /opt/rh/devtoolset-2/root/usr/bin/gcc )
|
|
message("CMAKE_C_COMPILER ${CMAKE_C_COMPILER} " )
|
|
|
|
SET (PRJ_SRC
|
|
../consensus/algorithm/configuration.cc
|
|
../consensus/algorithm/raft.cc
|
|
../consensus/algorithm/raft_server.cc
|
|
../consensus/algorithm/rd_raft_log.cc
|
|
../consensus/protocol/raft.pb.cc
|
|
../consensus/net/easyNet.cc
|
|
../consensus/service/service.cc
|
|
../consensus/service/client_service.cc
|
|
./service/state_machine.cc
|
|
./service/state_machine_service.cc
|
|
./service/state_machine_server.cc
|
|
./service/flags.cc
|
|
./storage/data_storage.cc
|
|
./memcached/text_request.cc
|
|
./memcached/text_response.cc
|
|
./memcached/memcached_easyNet.cc
|
|
./memcached/memcached_object.cc
|
|
)
|
|
|
|
SET (CLIENT_SRC
|
|
./service/flags.cc
|
|
./client/cli_sdk.cc
|
|
./client/dst_cli_sdk.cc
|
|
)
|
|
|
|
SET (UT_SRC
|
|
unittest/rd_raft_log-t.cc
|
|
unittest/text_request-t.cc
|
|
unittest/text_response-t.cc
|
|
unittest/memcached_object-t.cc
|
|
unittest/gunit_test_main.cc
|
|
)
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -g -O0")
|
|
|
|
SET (GFLAGS_OUTPUT
|
|
${CMAKE_CURRENT_SOURCE_DIR}/output/lib/libgflags.a
|
|
)
|
|
add_custom_command (
|
|
OUTPUT ${GFLAGS_OUTPUT}
|
|
COMMAND cd ${CMAKE_CURRENT_SOURCE_DIR}/../dependency/gflags-2.1.2/ && ([ -f
|
|
Makefile ] || (cmake -DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_SOURCE_DIR}/output .) ) && make -j && make install
|
|
COMMENT "building gflags"
|
|
)
|
|
|
|
add_custom_target (libgflags
|
|
ALL DEPENDS ${GFLAGS_OUTPUT}
|
|
)
|
|
|
|
SET (LIBMEMCACHED_OUTPUT
|
|
${CMAKE_CURRENT_SOURCE_DIR}/output/lib/libmemcached.a
|
|
)
|
|
add_custom_command (
|
|
OUTPUT ${LIBMEMCACHED_OUTPUT}
|
|
COMMAND cd ${CMAKE_CURRENT_SOURCE_DIR}/../dependency/libmemcached-1.0.18/ && ([ -f
|
|
Makefile ] || (./configure --prefix=${CMAKE_CURRENT_SOURCE_DIR}/output --disable-sasl --enable-static --with-memcached LDFLAGS=-Wl,--as-neede))
|
|
&& make -j && make install
|
|
COMMENT "building libmemcached"
|
|
)
|
|
|
|
add_custom_target (libmemcached
|
|
ALL DEPENDS ${LIBMEMCACHED_OUTPUT}
|
|
)
|
|
|
|
SET (SNAPPY_OUTPUT
|
|
${CMAKE_CURRENT_SOURCE_DIR}/output/lib/libsnappy.a
|
|
)
|
|
add_custom_command (
|
|
OUTPUT ${SNAPPY_OUTPUT}
|
|
COMMAND cd ${CMAKE_CURRENT_SOURCE_DIR}/../dependency/snappy-1.1.1/
|
|
&& ([ -f Makefile ] || (./configure --prefix=${CMAKE_CURRENT_SOURCE_DIR}/output))
|
|
&& make -j && make install
|
|
COMMENT "building libsnappy"
|
|
)
|
|
|
|
add_custom_target (libsnappy
|
|
ALL DEPENDS ${SNAPPY_OUTPUT}
|
|
)
|
|
|
|
SET (ROCKSDB_OUTPUT
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../dependency/rocksdb/librocksdb.a
|
|
)
|
|
add_custom_command (
|
|
OUTPUT ${ROCKSDB_OUTPUT}
|
|
COMMAND cd ${CMAKE_CURRENT_SOURCE_DIR}/../dependency/rocksdb/ &&
|
|
(export CC=/opt/rh/devtoolset-2/root/usr/bin/gcc &&
|
|
export CXX=/opt/rh/devtoolset-2/root/usr/bin/g++ &&
|
|
make static_lib -j)
|
|
COMMENT "building rocksdb"
|
|
)
|
|
|
|
add_custom_target (librocksdb
|
|
ALL DEPENDS ${ROCKSDB_OUTPUT}
|
|
)
|
|
|
|
SET (LIBEASY_OUTPUT
|
|
${CMAKE_CURRENT_SOURCE_DIR}/output/lib/libmyeasy.a
|
|
)
|
|
|
|
add_custom_command (
|
|
OUTPUT ${LIBEASY_OUTPUT}
|
|
#COMMAND cd ${CMAKE_CURRENT_SOURCE_DIR}/../dependency/easy/src && ([ -f
|
|
#Makefile ] || (sh bootstrap.sh && ./configure
|
|
#--prefix=${CMAKE_CURRENT_SOURCE_DIR}/output) ) && make -j && make install
|
|
|
|
COMMAND cd ${CMAKE_CURRENT_SOURCE_DIR}/../dependency/easy/src && ([ -d
|
|
bu ] || (mkdir bu && cd bu && cmake -D
|
|
CMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_SOURCE_DIR}/output .. && cd ..) ) && cd
|
|
bu && make -j && make install
|
|
COMMENT "building libmyeasy"
|
|
)
|
|
|
|
add_custom_target (libmyeasy
|
|
ALL DEPENDS ${LIBEASY_OUTPUT}
|
|
)
|
|
|
|
INCLUDE_DIRECTORIES (../consensus/include ${CMAKE_CURRENT_SOURCE_DIR}/../dependency/rocksdb/include/
|
|
${CMAKE_CURRENT_SOURCE_DIR}/output/include/easy/
|
|
${CMAKE_CURRENT_SOURCE_DIR}/output/include/)
|
|
|
|
LINK_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../dependency/rocksdb/
|
|
${CMAKE_CURRENT_SOURCE_DIR}/output/lib)
|
|
|
|
ADD_EXECUTABLE(rd_server ./service/server.cc ${PRJ_SRC})
|
|
ADD_EXECUTABLE(sample ./sample/sample.cc ${CLIENT_SRC})
|
|
ADD_EXECUTABLE(func_test ./test/func_test.cc ${CLIENT_SRC})
|
|
ADD_EXECUTABLE(dst_func_test ./test/dst_func_test.cc ${CLIENT_SRC})
|
|
ADD_EXECUTABLE(cli ./client/cli.cc ${CLIENT_SRC})
|
|
ADD_EXECUTABLE(dstcli ./client/dst_cli.cc ${CLIENT_SRC})
|
|
SET(EXECUTABLE_OUTPUT_PATH ./sample)
|
|
|
|
TARGET_LINK_LIBRARIES (rd_server protobuf gflags pthread librocksdb.a
|
|
libmemcached.a rt libsnappy.a z bz2 lz4 ssl crypto libmyeasy.a)
|
|
TARGET_LINK_LIBRARIES (cli gflags pthread libmemcached.a libmyeasy.a ssl crypto)
|
|
TARGET_LINK_LIBRARIES (dstcli gflags pthread libmemcached.a libmyeasy.a ssl crypto)
|
|
TARGET_LINK_LIBRARIES (sample gflags pthread libmemcached.a libmyeasy.a ssl crypto)
|
|
TARGET_LINK_LIBRARIES (func_test gflags pthread libmemcached.a libmyeasy.a ssl crypto)
|
|
TARGET_LINK_LIBRARIES (dst_func_test gflags pthread libmemcached.a libmyeasy.a ssl crypto)
|
|
|
|
ADD_EXECUTABLE (gtest_run ${PRJ_SRC} ${UT_SRC})
|
|
TARGET_LINK_LIBRARIES (gtest_run gtest protobuf gflags pthread librocksdb.a
|
|
libmemcached.a rt libsnappy.a z bz2 lz4 ssl crypto libmyeasy.a)
|