CMakeLists.txt 16.5 KB
Newer Older
W
init  
wangyunlai.wyl 已提交
1 2 3
cmake_minimum_required(VERSION 3.2)
project(oblogproxy CXX)

F
Fankux 已提交
4 5 6
macro(ob_define VAR DEFAULT)
    if (NOT DEFINED ${VAR})
        set(${VAR} ${DEFAULT})
F
Fankux 已提交
7
    endif ()
F
Fankux 已提交
8 9 10
endmacro()

ob_define(OBLOGPROXY_RELEASEID 1)
F
Fankux 已提交
11

W
init  
wangyunlai.wyl 已提交
12 13 14 15 16 17
option(WITH_DEBUG "With debug symbols" ON)
option(WITH_ASAN "Compile with AddressSanitizer" OFF)
option(WITH_TEST "With Tests" OFF)
option(WITH_DEMO "With Demos" OFF)
option(WITH_JNI_LIB "With oblogreader jni lib" OFF)
option(WITH_GLOG "With google log" ON)
F
Fankux 已提交
18
option(WITH_DEPS "With precompiled deps" ON)
F
Fankux 已提交
19
option(WITH_LOGMSG "compiled logmsg from source files" OFF)
F
Fankux 已提交
20
option(WITH_US_TIMESTAMP "Enable microseconds start timestamp" ON)
H
huaqing 已提交
21
option(USE_OBCDC_NS "With libobcdc" ON)
F
Fankux 已提交
22
option(USE_LIBOBLOG "With precompiled liboblog" OFF)
W
init  
wangyunlai.wyl 已提交
23
option(USE_CXX11_ABI "Build with C++11 ABI" OFF)
F
Fankux 已提交
24
option(USE_LIBOBLOG_3 "With liboblog 3.x" OFF)
W
init  
wangyunlai.wyl 已提交
25 26 27 28 29 30 31 32

SET(OMS_PROJECT_SRC_PATH ${CMAKE_CURRENT_SOURCE_DIR})
SET(OMS_PROJECT_BUILD_PATH ${CMAKE_CURRENT_BINARY_DIR})
SET(EXECUTABLE_OUTPUT_PATH ${OMS_PROJECT_BUILD_PATH})
SET(LIBRARY_OUTPUT_PATH ${OMS_PROJECT_BUILD_PATH})

SET(DEP_VAR $ENV{DEP_VAR})
SET(JAVA_HOME $ENV{JAVA_HOME})
F
Fankux 已提交
33 34
message(STATUS "DEP_VAR: ${DEP_VAR}")
message(STATUS "JAVA_HOME: ${JAVA_HOME}")
F
Fankux 已提交
35 36

SET(FIND_LIBOBLOG ON)
H
huaqing 已提交
37 38 39
if (USE_OBCDC_NS)
    SET(OBCDC_NAME "libobcdc")
    SET(OBCDC_NAME_VAR "-DUSE_OBCDC_NS")
F
Fankux 已提交
40 41 42
    if (USE_LIBOBLOG_3)
        SET(OBCDC_NAME_VAR "${OBCDC_NAME_VAR} -DUSE_LIBOBLOG_3")
    endif()
F
Fankux 已提交
43
else ()
H
huaqing 已提交
44 45
    SET(OBCDC_NAME "liboblog")
endif ()
F
Fankux 已提交
46

F
Fankux 已提交
47 48
if (WITH_DEPS)
    SET(DEP_VAR ${OMS_PROJECT_BUILD_PATH}/deps)
F
Fankux 已提交
49
    SET(THIRD_LIB_DIR ${DEP_VAR}/usr/local/oceanbase/deps/devel/lib)
F
Fankux 已提交
50

F
Fankux 已提交
51
    SET(LIBOBLOG_RPM_NAME "oceanbase-ce-cdc")
F
Fankux 已提交
52 53
    if (NOT USE_LIBOBLOG)
        SET(FIND_LIBOBLOG OFF)
F
Fankux 已提交
54

F
Fankux 已提交
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
        if (USE_LIBOBLOG_3)
            # version before 4.0
            SET(LIBOBLOG_RPM_NAME "oceanbase-ce-devel")
            SET(LIBOBLOG_INCLUDE_PATH ${DEP_VAR}/usr/include)
            SET(LIBOBLOG_LIBRARIES ${DEP_VAR}/usr/lib/${OBCDC_NAME}.so)
        else()
            SET(LIBOBLOG_INCLUDE_PATH "${DEP_VAR}/home/admin/oceanbase/include")
            SET(LIBOBLOG_LIBRARIES ${DEP_VAR}/home/admin/oceanbase/lib64/${OBCDC_NAME}.so)
            SET(LIBOBLOG_LIB_DIR ${DEP_VAR}/home/admin/oceanbase/lib64/)

            SET(LIBOBLOG_DEPS
                    ${THIRD_LIB_DIR}/libaio.so
                    ${THIRD_LIB_DIR}/mariadb/libmariadb.so
                    )
        endif()
F
Fankux 已提交
70

F
Fankux 已提交
71 72
    endif ()

F
Fankux 已提交
73 74 75 76 77 78
    execute_process(
            COMMAND bash deps/dep_create.sh ${OMS_PROJECT_BUILD_PATH}/deps ${LIBOBLOG_RPM_NAME}
            WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
            COMMAND_ERROR_IS_FATAL ANY
    )

F
Fankux 已提交
79 80 81 82
    # make openssl found
    CMAKE_POLICY(SET CMP0074 NEW)
    SET(OpenSSL_ROOT ${DEP_VAR}/usr/local/oceanbase/deps/devel/)

F
Fankux 已提交
83 84 85
    # compiler
    SET(COMPILER_DIR ${DEP_VAR}/usr/local/oceanbase/devtools/bin/)
else ()
F
Fankux 已提交
86 87 88 89 90 91
    # compiler
    execute_process(
            COMMAND which gcc
            OUTPUT_VARIABLE GCC_BIN
    )
    GET_FILENAME_COMPONENT(COMPILER_DIR ${GCC_BIN} DIRECTORY)
F
Fankux 已提交
92 93
endif ()

94
message(STATUS "COMPILER_DIR: ${COMPILER_DIR}")
S
shimengfei.smf 已提交
95 96
add_compile_options($<$<COMPILE_LANGUAGE:CXX,C>:-pipe>)
add_compile_options($<$<COMPILE_LANGUAGE:CXX,C>:-fPIC>)
97

S
shimengfei.smf 已提交
98 99 100 101 102 103
add_compile_options($<$<COMPILE_LANGUAGE:CXX,C>:-pie>)
add_compile_options($<$<COMPILE_LANGUAGE:CXX,C>:-znoexecstack>)
add_compile_options($<$<COMPILE_LANGUAGE:CXX,C>:-znow>)
add_compile_options($<$<COMPILE_LANGUAGE:CXX,C>:-fstack-protector-strong>)

add_link_options($<$<COMPILE_LANGUAGE:CXX,C>:-Wl,-z,relro,-z,now>)
F
Fankux 已提交
104 105 106
find_program(CC NAMES gcc PATHS ${COMPILER_DIR} /usr/bin/ NO_DEFAULT_PATH)
find_program(CXX NAMES g++ PATHS ${COMPILER_DIR} /usr/bin/ NO_DEFAULT_PATH)
find_program(AR NAMES gcc-ar ar PATHS ${COMPILER_DIR} /usr/bin/ NO_DEFAULT_PATH)
W
init  
wangyunlai.wyl 已提交
107 108 109 110 111 112 113 114
SET(CMAKE_C_COMPILER ${CC})
SET(CMAKE_CXX_COMPILER ${CXX})
SET(CMAKE_C_COMPILER_AR ${AR})
SET(CMAKE_CXX_COMPILER_AR ${AR})
message(STATUS "C compiler: ${CMAKE_C_COMPILER}")
message(STATUS "C++ compiler: ${CMAKE_CXX_COMPILER}")
message(STATUS "AR compiler: ${CMAKE_C_COMPILER_AR}")

F
Fankux 已提交
115 116 117 118 119 120 121 122 123 124 125 126
GET_FILENAME_COMPONENT(COMPILER_DIR ${CMAKE_C_COMPILER} DIRECTORY)
GET_FILENAME_COMPONENT(COMPILER_BASE_DIR ${COMPILER_DIR} DIRECTORY)
SET(CXX_LIB_DIR ${COMPILER_BASE_DIR}/lib64/)

# make protoc found libstdc++
SET(PROTOC_LINK_FLAGS "-L${CXX_LIB_DIR} -static-libstdc++")
if (THIRD_LIB_DIR)
    SET(PROTOC_LINK_FLAGS "${PROTOC_LINK_FLAGS} -L${THIRD_LIB_DIR}")
endif ()

SET(DEP_LIB_PATH ${THIRD_LIB_DIR} ${CXX_LIB_DIR})

W
init  
wangyunlai.wyl 已提交
127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216
if (NOT USE_CXX11_ABI)
    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GLIBCXX_USE_CXX11_ABI=0")
endif ()

SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake")

SET(THIRD_PARTY_PATH ${CMAKE_CURRENT_BINARY_DIR}/third-party)
SET(THIRD_PARTY_BUILD_TYPE Release)
SET(EXTERNAL_PROJECT_LOG_ARGS
        LOG_DOWNLOAD 0
        LOG_UPDATE 0
        LOG_CONFIGURE 0
        LOG_BUILD 0
        LOG_TEST 0
        LOG_INSTALL 0)

INCLUDE(ProcessorCount)
ProcessorCount(NUM_OF_PROCESSOR)
message(NUM_OF_PROCESSOR: ${NUM_OF_PROCESSOR})

#thread
include(FindThreads)

#openssl
find_package(OpenSSL REQUIRED)

message(STATUS "ssl:" ${OPENSSL_SSL_LIBRARY})
message(STATUS "crypto:" ${OPENSSL_CRYPTO_LIBRARY})

ADD_LIBRARY(ssl SHARED IMPORTED GLOBAL)
SET_PROPERTY(TARGET ssl PROPERTY IMPORTED_LOCATION ${OPENSSL_SSL_LIBRARY})

ADD_LIBRARY(crypto SHARED IMPORTED GLOBAL)
SET_PROPERTY(TARGET crypto PROPERTY IMPORTED_LOCATION ${OPENSSL_CRYPTO_LIBRARY})

if (WITH_JNI_LIB)
    SET(JAVA_INCLUDE_DIR ${JAVA_HOME}/include ${JAVA_HOME}/include/linux ${JAVA_HOME}/include/darwin)
    SET(JAVA_LIB_DIR ${JAVA_HOME}/jre/lib)
else ()
    SET(JAVA_INCLUDE_DIR "")
    SET(JAVA_LIB_DIR "")
endif ()

include(lz4)
include(jsoncpp)
include(libevent)

if (WITH_GLOG)
    include(gflags)
    include(glog)

    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DWITH_GLOG=1")
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DWITH_GLOG=1")
else ()
    SET(GFLAGS_INCLUDE_DIR "")
    SET(GLOG_INCLUDE_DIR "")
    SET(GFLAGS_LIBRARIES "")
    SET(GLOG_LIBRARIES "")
endif ()

if (WITH_TEST)
    include(gtest)
else ()
    SET(GTEST_INCLUDE_DIR "")
    SET(GTEST_LIBRARIES "")
endif ()

#protobuf
include(protobuf)

file(GLOB PROTO_FILES ${CMAKE_SOURCE_DIR}/proto/*.proto)
message("protoc: ${PROTOBUF_PROTOC_EXECUTABLE}, proto inc: ${PROTOBUF_INCLUDE_DIRS}, lib: ${PROTOBUF_LIBRARIES}, ${PROTOBUF_PROTOC_LIBRARY}, protos: ${PROTO_FILES}")
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/proto)
foreach (PROTO ${PROTO_FILES})
    message(proto : ${PROTO})
    get_filename_component(PROTO_WE ${PROTO} NAME_WE)
    list(APPEND PROTO_HDRS "${CMAKE_CURRENT_BINARY_DIR}/proto/${PROTO_WE}.pb.h")
    list(APPEND PROTO_SRCS "${CMAKE_CURRENT_BINARY_DIR}/proto/${PROTO_WE}.pb.cc")
    add_custom_command(
            OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/proto/${PROTO_WE}.pb.h ${CMAKE_CURRENT_BINARY_DIR}/proto/${PROTO_WE}.pb.cc
            COMMAND ${PROTOBUF_PROTOC_EXECUTABLE}
            --cpp_out=${CMAKE_CURRENT_BINARY_DIR}/proto
            --proto_path=${PROTOBUF_INCLUDE_DIR}
            --proto_path=${CMAKE_SOURCE_DIR}/proto ${PROTO}
            DEPENDS protobuf
    )
endforeach ()
add_library(PROTO_OBJS OBJECT ${PROTO_SRCS} ${PROTO_HDRS})
message("protoc: ${PROTOBUF_PROTOC_EXECUTABLE}, proto srcs : ${PROTO_SRCS}")

F
Fankux 已提交
217 218 219 220 221 222 223 224 225 226

# oblog
if (FIND_LIBOBLOG)
    find_path(LIBOBLOG_INCLUDE_PATH NAMES ${OBCDC_NAME}.h ${OBCDC_NAME}/${OBCDC_NAME}.h)
    find_library(LIBOBLOG_LIBRARIES NAMES ${OBCDC_NAME}.so)
    if ((NOT LIBOBLOG_INCLUDE_PATH) OR (NOT LIBOBLOG_LIBRARIES))
        message(FATAL_ERROR "Fail to find ${OBCDC_NAME}")
    endif ()
endif ()

F
Fankux 已提交
227
option(LOGMSG_BY_LIBOBLOG "use logmsg provide by liboblog" ON)
F
Fankux 已提交
228 229
set(LOGMSG_BY_LIBOBLOG_DEFINE "")
if (LOGMSG_BY_LIBOBLOG)
F
Fankux 已提交
230
    set(LOGMSG_BY_LIBOBLOG_DEFINE "-DLOGMSG_BY_LIBOBLOG=1 -DOB_BUILD_OPENSOURCE=1")
F
Fankux 已提交
231
    SET(OBLOGMSG_MAPPING "${LOGMSG_BY_LIBOBLOG_DEFINE} -DLogMsgLocalInit=\"if((_t_s_lmb=new(std::nothrow)LogMsgBuf())==nullptr){OMS_ERROR<<\\\"Failed to alloc LogMsgBuf\\\";stop();return;}\" -DLogMsgLocalDestroy=\"delete _t_s_lmb\"")
F
Fankux 已提交
232
    SET(OBLOGMSG_INCLUDE_DIR ${LIBOBLOG_INCLUDE_PATH} ${LIBOBLOG_INCLUDE_PATH}/oblogmsg ${LIBOBLOG_INCLUDE_PATH}/../oblogmsg)
233

F
Fankux 已提交
234 235
    SET(OBLOGMSG_LIBRARIES ${LIBOBLOG_LIBRARIES})
    GET_FILENAME_COMPONENT(OBLOGMSG_LIB_DIR ${OBLOGMSG_LIBRARIES} DIRECTORY)
236

F
Fankux 已提交
237 238 239 240 241 242
    ADD_LIBRARY(oblogmsg STATIC IMPORTED GLOBAL)
    SET_PROPERTY(TARGET oblogmsg PROPERTY IMPORTED_LOCATION ${OBLOGMSG_LIBRARIES})

else ()
    include(oblogmsg)
endif ()
F
Fankux 已提交
243

F
Fankux 已提交
244 245 246 247 248
GET_FILENAME_COMPONENT(LIBOBLOG_INCLUDE_PATH_NAME ${LIBOBLOG_INCLUDE_PATH} NAME)
if (${LIBOBLOG_INCLUDE_PATH_NAME} STREQUAL "${OBCDC_NAME}")
    set(LIBOBLOG_INCLUDE_PATH ${LIBOBLOG_INCLUDE_PATH} ${LIBOBLOG_INCLUDE_PATH}/..)
else ()
    set(LIBOBLOG_INCLUDE_PATH ${LIBOBLOG_INCLUDE_PATH} ${LIBOBLOG_INCLUDE_PATH}/${OBCDC_NAME})
W
init  
wangyunlai.wyl 已提交
249
endif ()
F
Fankux 已提交
250 251 252 253

if (WITH_US_TIMESTAMP)
    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DWITH_US_TIMESTAMP")
endif()
F
Fankux 已提交
254

W
init  
wangyunlai.wyl 已提交
255
message("oblogmsg: ${OBLOGMSG_INCLUDE_DIR}, ${OBLOGMSG_LIBRARIES}")
F
Fankux 已提交
256
message("liboblog: ${LIBOBLOG_INCLUDE_PATH}, ${LIBOBLOG_LIBRARIES}, ${LIBOBLOG_DEPS}")
W
init  
wangyunlai.wyl 已提交
257 258 259 260 261 262 263 264

execute_process(
        COMMAND git log -1 --format=%H
        OUTPUT_VARIABLE GIT_VERSION
        OUTPUT_STRIP_TRAILING_WHITESPACE
        WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
)

F
Fankux 已提交
265 266
if (NOT GIT_VERSION)
    message(WARNING "oblogproxy fetch git version empty, use current time as program version")
F
Fankux 已提交
267
    STRING(TIMESTAMP GIT_VERSION "%Y-%m-%d_%H:%M:%S")
F
Fankux 已提交
268 269 270 271 272 273 274 275 276
endif ()

if (NOT GIT_VERSION)
    message(WARNING "oblogproxy fetch current time failed")
    SET(GIT_VERSION "2.0.0")
endif ()

message("oblogproxy version: ${GIT_VERSION}")

W
init  
wangyunlai.wyl 已提交
277 278 279 280 281 282 283 284 285 286 287 288
if (WITH_DEBUG)
    SET(DEBUG_SYMBOL "-ggdb")
else ()
    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNDEBUG")
    SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DNDEBUG")
endif ()

if (WITH_ASAN)
    SET(ASAN_COMPILE_OPTION "-fsanitize=address -fno-omit-frame-pointer")
    SET(ASAN_LINK_OPTION "-fsanitize=address")
endif ()

H
huaqing 已提交
289 290 291 292 293 294 295 296 297 298
######### get arch ###########################################
execute_process(COMMAND uname -m
        OUTPUT_VARIABLE ARCH
        OUTPUT_STRIP_TRAILING_WHITESPACE
        COMMAND_ERROR_IS_FATAL ANY
        )
set(OS_ARCH ${ARCH})
message(STATUS "os arch ${OS_ARCH}") # x86_64 or aarch64


F
Fankux 已提交
299
SET(CMAKE_CXX_STANDARD 17)
W
init  
wangyunlai.wyl 已提交
300
SET(CMAKE_CXX_STANDARD_REQUIRED ON)
H
huaqing 已提交
301 302 303 304 305
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -static-libstdc++ ${DEBUG_SYMBOL} -pipe -Wall -fPIC -Wno-reorder ${ASAN_COMPILE_OPTION} -D__OMS_VERSION__=\\\"${GIT_VERSION}\\\" ${OBLOGMSG_MAPPING} ${OBCDC_NAME_VAR}")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 ${DEBUG_SYMBOL} -pipe -Wall -fPIC ${ASAN_COMPILE_OPTION} -D__STDC_LIMIT_MACROS -D__OMS_VERSION__=\\\"${GIT_VERSION}\\\" ${OBLOGMSG_MAPPING} ${OBCDC_NAME_VAR}")
if(OS_ARCH STREQUAL "x86_64")
    add_compile_options($<$<COMPILE_LANGUAGE:CXX,C>:-m64>)
endif()
W
init  
wangyunlai.wyl 已提交
306 307 308
if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
    SET(PLATFORM_SPEC rt)
    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libgcc")
F
Fankux 已提交
309
    SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static-libgcc")
W
init  
wangyunlai.wyl 已提交
310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336
elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
    SET(PLATFORM_SPEC ${DEP_LIB}
            "-framework CoreFoundation"
            "-framework CoreGraphics"
            "-framework CoreData"
            "-framework CoreText"
            "-framework Security"
            "-framework Foundation"
            "-Wl,-U,_MallocExtension_ReleaseFreeMemory"
            "-Wl,-U,_ProfilerStart"
            "-Wl,-U,_ProfilerStop")
endif ()

########### start define deps #############################################################################################
set(DEP_INC
        ${JAVA_INCLUDE_DIR}
        ${OBLOGMSG_INCLUDE_DIR}
        ${LZ4_INCLUDE_DIR}
        ${JSONCPP_INCLUDE_DIR}
        ${LIBEVENT_INCLUDE_DIR}
        ${GFLAGS_INCLUDE_DIR}
        ${GLOG_INCLUDE_DIR}
        ${PROTOBUF_INCLUDE_DIR}
        ${GTEST_INCLUDE_DIR}
        ${OPENSSL_INCLUDE_DIR}
        )
set(DEP_LIB_PATH
F
Fankux 已提交
337 338
        ${DEP_LIB_PATH}

W
init  
wangyunlai.wyl 已提交
339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359
        ${JAVA_LIB_DIR}
        ${OBLOGMSG_LIB_DIR}
        ${LIBOBLOG_LIB_DIR}
        ${CMAKE_CURRENT_BINARY_DIR}
        )
set(DEP_LIBS
        ${OBLOGMSG_LIBRARIES}
        ${GTEST_LIBRARIES}
        ${GLOG_LIBRARIES}
        ${GFLAGS_LIBRARIES}
        ${PROTOBUF_LIBRARIES}
        ${PROTOBUF_PROTOC_LIBRARY}
        ${LIBEVENT_LIBRARIES}
        ${JSONCPP_LIBRARIES}
        ${LZ4_LIBRARIES}
        ${OPENSSL_LIBRARIES}
        m
        ${PLATFORM_SPEC}
        ${CMAKE_THREAD_LIBS_INIT}
        )
message("DEP_INC: ${DEP_INC}")
F
Fankux 已提交
360
message("DEP_LIB_PATH: ${DEP_LIB_PATH}")
W
init  
wangyunlai.wyl 已提交
361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376
message("DEP_LIBS: ${DEP_LIBS}")
########### end define deps ###############################################################################################

# common
set(COMMON_INC
        ${DEP_INC}
        ${CMAKE_CURRENT_BINARY_DIR}/proto
        ./src
        ./src/common/
        )
file(GLOB COMMON_SRC
        ./src/common/*.cpp
        ./src/common/*.hpp
        ./src/codec/*.cpp
        ./src/communication/*.cpp
        ./src/obaccess/*.cpp
F
Fankux 已提交
377
        ./src/metric/*.cpp
W
init  
wangyunlai.wyl 已提交
378 379 380 381 382 383 384 385
        )
add_library(common STATIC ${COMMON_SRC} $<TARGET_OBJECTS:PROTO_OBJS>)
add_dependencies(common oblogmsg lz4 jsoncpp libevent protobuf)
if (WITH_GLOG)
    add_dependencies(common glog)
endif ()
target_include_directories(common PUBLIC ${COMMON_INC})

H
huaqing 已提交
386
if (USE_OBCDC_NS)
F
Fankux 已提交
387
    set(DEP_OBCDC_LIB obcdc ${LIBOBLOG_DEPS})
F
Fankux 已提交
388
else ()
F
Fankux 已提交
389
    set(DEP_OBCDC_LIB oblog ${LIBOBLOG_DEPS})
H
huaqing 已提交
390
endif ()
W
init  
wangyunlai.wyl 已提交
391 392 393 394 395 396 397 398
# oblogreader
set(OBLOGREADER_INC ${COMMON_INC} ./src/oblogreader/ ${LIBOBLOG_INCLUDE_PATH})
file(GLOB OBLOGREADER_SRC ./src/oblogreader/*.cpp)
add_library(oblogreader_static STATIC ${OBLOGREADER_SRC})
add_dependencies(oblogreader_static common oblogmsg)
set_target_properties(oblogreader_static PROPERTIES OUTPUT_NAME "oblogreader")
target_include_directories(oblogreader_static PUBLIC ${OBLOGREADER_INC})
target_link_directories(oblogreader_static PUBLIC ${DEP_LIB_PATH})
H
huaqing 已提交
399
target_link_libraries(oblogreader_static libcommon.a ${DEP_OBCDC_LIB} ${DEP_LIBS})
W
init  
wangyunlai.wyl 已提交
400 401 402 403 404 405 406 407 408

# oblogreader_jni
if (WITH_JNI_LIB)
    set(OBLOGREADER_JNI_INC ${OBLOGREADER_INC} src/jni)
    file(GLOB OBLOGREADER_JNI_SRC src/jni/*.cpp)
    add_library(oblogreader_jni STATIC ${OBLOGREADER_JNI_SRC})
    add_dependencies(oblogreader_jni oblogreader_static)
    target_include_directories(oblogreader_jni PUBLIC ${OBLOGREADER_JNI_INC})
    target_link_directories(oblogreader_jni PUBLIC ${DEP_LIB_PATH})
H
huaqing 已提交
409
    target_link_libraries(oblogreader_jni liboblogreader.a libcommon.a ${DEP_OBCDC_LIB} ${DEP_LIBS})
W
init  
wangyunlai.wyl 已提交
410 411 412 413 414 415 416 417 418 419 420
endif ()

# logproxy static
set(LOGPROXY_INC ${OBLOGREADER_INC} src/arranger/)
file(GLOB LOGPROXY_SRC ./src/arranger/*.cpp)
message("SRC: ${LOGPROXY_SRC}")
add_library(logproxy_static STATIC ${LOGPROXY_SRC})
add_dependencies(logproxy_static oblogreader_static oblogmsg)
set_target_properties(logproxy_static PROPERTIES OUTPUT_NAME "logproxy")
target_include_directories(logproxy_static PUBLIC ${LOGPROXY_INC})
target_link_directories(logproxy_static PUBLIC ${DEP_LIB_PATH})
H
huaqing 已提交
421
target_link_libraries(logproxy_static liboblogreader.a libcommon.a ${DEP_OBCDC_LIB} ${DEP_LIBS})
W
init  
wangyunlai.wyl 已提交
422 423 424 425 426 427 428 429

SET(BASE_LIBS liblogproxy.a liboblogreader.a libcommon.a)

# logproxy
add_executable(logproxy ./src/entry.cpp)
add_dependencies(logproxy logproxy_static)
target_include_directories(logproxy PUBLIC ${DEP_INC} ${LOGPROXY_INC})
target_link_directories(logproxy PUBLIC ${DEP_LIB_PATH})
H
huaqing 已提交
430
target_link_libraries(logproxy ${BASE_LIBS} ${DEP_OBCDC_LIB} ${DEP_LIBS})
F
Fankux 已提交
431
target_link_options(logproxy PUBLIC -static-libstdc++ ${ASAN_LINK_OPTION})
S
shimengfei.smf 已提交
432
target_link_options(logproxy PRIVATE -pie)
W
init  
wangyunlai.wyl 已提交
433 434 435 436 437 438 439 440 441

if (WITH_DEMO)
    # demo client
    file(GLOB DEMO_CLIENT_SRC ./src/demo/client_demo.cpp)
    add_executable(demo_client ${DEMO_CLIENT_SRC})
    add_dependencies(demo_client common)
    target_include_directories(demo_client PUBLIC ${COMMON_INC})
    target_link_directories(demo_client PUBLIC ${DEP_LIB_PATH})
    target_link_libraries(demo_client libcommon.a ${DEP_LIBS})
F
Fankux 已提交
442
    target_link_options(demo_client PUBLIC -static-libstdc++ ${ASAN_LINK_OPTION})
W
init  
wangyunlai.wyl 已提交
443 444 445 446 447 448
endif ()

if (WITH_TEST)
    # test_base
    file(GLOB TEST_BASE_SRC ./src/test/test_entry.cpp)
    add_executable(test_base ${TEST_BASE_SRC})
F
Fankux 已提交
449
    add_dependencies(test_base common oblogmsg gtest)
W
init  
wangyunlai.wyl 已提交
450 451
    target_include_directories(test_base PUBLIC ${LOGPROXY_INC})
    target_link_directories(test_base PUBLIC ${DEP_LIB_PATH})
F
Fankux 已提交
452
    target_link_libraries(test_base libcommon.a ${DEP_LIBS})
F
Fankux 已提交
453
    target_link_options(test_base PUBLIC -static-libstdc++ ${ASAN_LINK_OPTION})
W
init  
wangyunlai.wyl 已提交
454 455

    # test_oblogreader
F
Fankux 已提交
456 457 458 459 460 461 462
    #    file(GLOB TEST_OBLOGREADER_SRC ./src/test/test_oblogreader.cpp)
    #    add_executable(test_oblogreader ${TEST_OBLOGREADER_SRC})
    #    add_dependencies(test_oblogreader logproxy_static gtest)
    #    target_include_directories(test_oblogreader PUBLIC ${LOGPROXY_INC})
    #    target_link_directories(test_oblogreader PUBLIC ${DEP_LIB_PATH})
    #    target_link_libraries(test_oblogreader ${BASE_LIBS} ${DEP_OBCDC_LIB} ${DEP_LIBS})
    #    target_link_options(test_oblogreader PUBLIC ${ASAN_LINK_OPTION})
W
init  
wangyunlai.wyl 已提交
463
endif ()
F
Fankux 已提交
464 465

include(rpm)