message(STATUS "===============================third party cmake begin==============================")

set(THIRD_PARTY_DIR ${HOME_DIR}/third_party)

message(STATUS "THIRD_PARTY_DIR: ${THIRD_PARTY_DIR}")

# googletest
set(GTEST_INCLUDE_DIR ${THIRD_PARTY_DIR}/googletest/googletest/include)
message(STATUS "GTEST_INCLUDE_DIR: ${GTEST_INCLUDE_DIR}")

# googlemock
set(GMOCK_INCLUDE_DIR ${THIRD_PARTY_DIR}/googletest/googlemock/include)
message(STATUS "GMOCK_INCLUDE_DIR: ${GMOCK_INCLUDE_DIR}")

# sqlite
set(SQLITE_INCLUDE_DIR ${THIRD_PARTY_DIR}/sqlite/include)
message(STATUS "SQLITE_INCLUDE_DIR: ${SQLITE_INCLUDE_DIR}")

# libuv
set(LIBUV_INCLUDE_DIR ${THIRD_PARTY_DIR}/libuv/include)
message(STATUS "LIBUV_INCLUDE_DIR: ${LIBUV_INCLUDE_DIR}")

# rapidjson
set(RAPIDJSON_INCLUDE_DIR ${THIRD_PARTY_DIR}/rapidjson/include/rapidjson)
message(STATUS "RAPIDJSON_INCLUDE_DIR: ${RAPIDJSON_INCLUDE_DIR}")

# uSockets
set(U_SOCKETS_INCLUDE_DIR ${THIRD_PARTY_DIR}/uSockets/src)
message(STATUS "U_SOCKETS_INCLUDE_DIR: ${U_SOCKETS_INCLUDE_DIR}")

# uSockets source code
set(U_SOCKETS_SRC_DIR ${THIRD_PARTY_DIR}/uSockets/src)
message(STATUS "U_SOCKETS_SRC_DIR: ${U_SOCKETS_SRC_DIR}")

# uWebSockets
set(U_WEBSOCKETS_INCLUDE_DIR ${THIRD_PARTY_DIR}/uWebSockets/src)
message(STATUS "U_WEBSOCKETS_INCLUDE_DIR: ${U_WEBSOCKETS_INCLUDE_DIR}")

# third party include source
include_directories(${RAPIDJSON_INCLUDE_DIR})
include_directories(${LIBUV_INCLUDE_DIR})
include_directories(${U_SOCKETS_INCLUDE_DIR})
include_directories(${U_WEBSOCKETS_INCLUDE_DIR})
include_directories(${SQLITE_INCLUDE_DIR})

# uWebSockets & uSockets source
aux_source_directory(${U_SOCKETS_SRC_DIR} U_SOCKETS_SRC)
aux_source_directory(${U_SOCKETS_SRC_DIR}/crypto U_SOCKETS_SRC_CRYPTO)
aux_source_directory(${U_SOCKETS_SRC_DIR}/eventing U_SOCKETS_SRC_EVENTING)
aux_source_directory(${U_SOCKETS_SRC_DIR}/internal U_SOCKETS_SRC_INTERNAL)

list(APPEND U_SOCKETS_SRC_LIST
        ${U_SOCKETS_SRC}
        ${U_SOCKETS_SRC_CRYPTO}
        ${U_SOCKETS_SRC_EVENTING}
        ${U_SOCKETS_SRC_INTERNAL})

add_subdirectory(${THIRD_PARTY_DIR})

message(STATUS "===============================third party cmake end==============================")