project(earthworm)

# add external package
include(ExternalProject)

set(EXTERNAL_INSTALL_LOCATION ${CMAKE_BINARY_DIR}/extern)

ExternalProject_Add(expkg_cpp_redis
    GIT_REPOSITORY https://github.com/cpp-redis/cpp_redis.git
    CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTERNAL_INSTALL_LOCATION}
    UPDATE_COMMAND ""
)

#include_directories(${EXTERNAL_INSTALL_LOCATION}/include)
#link_directories(${EXTERNAL_INSTALL_LOCATION}/lib)

#add source
file(GLOB PSR_SRC "${PROJECT_SOURCE_DIR}/Parser/libsrc/*.cc")
file(GLOB HIS_SRC "${PROJECT_SOURCE_DIR}/Hist/libsrc/*.cc")
file(GLOB UTL_SRC "${PROJECT_SOURCE_DIR}/Utils/libsrc/*.cc")
file(GLOB DIM_SRC "${PROJECT_SOURCE_DIR}/DimRecv/libsrc/*.cc")
file(GLOB PRO_SRC "${PROJECT_SOURCE_DIR}/cpythonprototype/libsrc/*.cc")
file(GLOB RIS_SRC "${PROJECT_SOURCE_DIR}/RedisIO/libsrc/*.cc")

#add_executable(FirstTest test_redis.cpp)
#add_dependencies(FirstTest cpp_redis)
#target_link_libraries(FirstTest -lpthread ${CMAKE_SOURCE_DIR}/extern/dim/linux/libdim.a)

ADD_LIBRARY(${PROJECT_NAME} SHARED ${PSR_SRC} ${HIS_SRC} ${UTL_SRC}  ${PRO_SRC} ${DIM_SRC} ${RIS_SRC})
target_link_libraries(${PROJECT_NAME} pthread  ${CMAKE_SOURCE_DIR}/extern/dim/linux/libdim.a
                      ${EXTERNAL_INSTALL_LOCATION}/lib/libcpp_redis.a
                      ${EXTERNAL_INSTALL_LOCATION}/lib/libtacopie.a)

target_include_directories( ${PROJECT_NAME}
    PUBLIC
    ${PROJECT_SOURCE_DIR}/Utils/libinc
    ${PROJECT_SOURCE_DIR}/Hist/libinc
    ${PROJECT_SOURCE_DIR}/Parser/libinc
    ${PROJECT_SOURCE_DIR}/cpythonprototype/libinc
    ${PROJECT_SOURCE_DIR}/RedisIO/libinc
    ${PROJECT_SOURCE_DIR}/DimRecv/libinc
    ${CMAKE_SOURCE_DIR}/extern/dim/inc
    ${CMAKE_SOURCE_DIR}/extern
    ${EXTERNAL_INSTALL_LOCATION}/include

)
