message("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&")
message("                       Cmake RDC Lib-Client                        ")
message("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&")

set(SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src")
set(INC_DIR "${RDC_LIB_INC_DIR}")

file(GLOB PROTOBUF_GENERATED_INCLUDES "${PROTOB_OUT_DIR}/*.h")
file(GLOB PROTOBUF_GENERATED_SRCS "${PROTOB_OUT_DIR}/*.cc")

set(RDCCLIENT_LIB_COMPONENT "lib${RDCCLIENT_LIB}")
set(RDCCLIENT_LIB_SRC_LIST
    "${SRC_DIR}/RdcStandaloneHandler.cc"
    "${PROTOBUF_GENERATED_SRCS}")

set(RDCCLIENT_LIB_INC_LIST "${PROJECT_SOURCE_DIR}/include/rdc/rdc.h"
    "${INC_DIR}/rdc_common.h"
    "${INC_DIR}/RdcHandler.h"
    "${INC_DIR}/impl/RdcStandaloneHandler.h")

message("RDCCLIENT_LIB_INC_LIST=${RDCCLIENT_LIB_INC_LIST}")

add_library(${RDCCLIENT_LIB} SHARED ${RDCCLIENT_LIB_SRC_LIST} ${RDCCLIENT_LIB_INC_LIST})
target_link_libraries(${RDCCLIENT_LIB} ${BOOTSTRAP_LIB} pthread rt gRPC::grpc++ dl)
target_include_directories(${RDCCLIENT_LIB} PRIVATE
    "${GRPC_ROOT}/include"
    "${PROJECT_SOURCE_DIR}"
    "${PROJECT_SOURCE_DIR}/include"
    "${PROTOB_OUT_DIR}")

# Set the VERSION and SOVERSION values
set_property(TARGET ${RDCCLIENT_LIB} PROPERTY
    SOVERSION "${VERSION_MAJOR}")
set_property(TARGET ${RDCCLIENT_LIB} PROPERTY
    VERSION "${SO_VERSION_STRING}")

if("${CMAKE_BUILD_TYPE}" STREQUAL Release)
    add_custom_command(
        TARGET ${RDCCLIENT_LIB}
        POST_BUILD COMMAND ${CMAKE_STRIP} ${RDCCLIENT_LIB_COMPONENT}.so)
endif()
