set(TUNNELS_INCS
    ""
    CACHE PATH
    "path to the components include directory"
)

set(TUNNELS_SRCS
    ""
    CACHE FILEPATH
    "path to the components srouce directory"
)

include(${CMAKE_CURRENT_LIST_DIR}/can_master.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/tcp_master.cmake)

list(APPEND TUNNELS_INCS ${CAN_M_INC_DIR_PATH_LIST} ${TCP_M_INC_DIR_PATH_LIST})
list(APPEND TUNNELS_SRCS ${CAN_M_SRC_PATH_LIST} ${TCP_M_SRC_PATH_LIST})

set(ID_TRANS_SRCS
    ${CMAKE_CURRENT_SOURCE_DIR}/src/components/id_transform/id_transform.c
    CACHE FILEPATH "source files for utils"
)

set(ID_TRANS_INCS
    ${CMAKE_CURRENT_SOURCE_DIR}/src/components/id_transform/
    CACHE PATH "include dirs for utils"
)

set(UTILS_SRCS
    ${CMAKE_CURRENT_SOURCE_DIR}/src/components/utils/dynamic_array/dynamic_array.c
    CACHE FILEPATH "source files for utils"
)

set(UTILS_INCS
    ${CMAKE_CURRENT_SOURCE_DIR}/src/components/utils/dynamic_array/
    ${CMAKE_CURRENT_SOURCE_DIR}/src/components/utils/log/
    CACHE PATH "include dirs for utils"
)

set(TUNNEL_MANAGER_SRCS
    ${CMAKE_CURRENT_SOURCE_DIR}/src/components/tunnel_manager/tunnel_manager.c
    ${CMAKE_CURRENT_SOURCE_DIR}/src/components/tunnel_manager/tunnel_template.c
    CACHE FILEPATH "source files for tunnel_manager"
)

set(TUNNEL_MANAGER_INCS
    ${CMAKE_CURRENT_SOURCE_DIR}/src/components/tunnel_manager/
    CACHE PATH "include dirs for tunnel_manager"
)

set(COMM_TUNNELS_UTILS_SRCS
    ${CMAKE_CURRENT_SOURCE_DIR}/src/components/comm_tunnels/utils/tcp_common.c
    CACHE FILEPATH "source files for tunnel_manager"
)

set(COMM_TUNNELS_UTILS_INCS
    ${CMAKE_CURRENT_SOURCE_DIR}/src/components/comm_tunnels/utils
    CACHE PATH "include dirs for tunnel_manager"
)

set(PARSE_CFG_SRCS
    ${CMAKE_CURRENT_SOURCE_DIR}/src/components/parse_cfg/parse_cfg.c
    ${CMAKE_CURRENT_SOURCE_DIR}/src/components/parse_cfg/parse_db_poll_cfg.c
    ${CMAKE_CURRENT_SOURCE_DIR}/src/components/parse_cfg/parse_tunnels_cfg.c
    ${CMAKE_CURRENT_SOURCE_DIR}/src/components/parse_cfg/parse_db_sync_cfg.c
    CACHE FILEPATH "source files for parse config file"
)

set(PARSE_CFG_INCS
    ${CMAKE_CURRENT_SOURCE_DIR}/src/components/parse_cfg
    CACHE PATH "include dirs for parse config file"
)

set(JUDGER_SRCS
    ${CMAKE_CURRENT_SOURCE_DIR}/src/components/judger/judger.c
    ${CMAKE_CURRENT_SOURCE_DIR}/src/components/judger/mqtt_msg_proc/mqtt_msg_proc.c
    CACHE FILEPATH "source files for judger"
)

set(JUDGER_INCS
    ${CMAKE_CURRENT_SOURCE_DIR}/src/components/judger
    ${CMAKE_CURRENT_SOURCE_DIR}/src/components/judger/mqtt_msg_proc/
    CACHE PATH "include dirs for judger"
)

set(COMPONENTS_SRCS
    ${TUNNELS_SRCS}
    ${UTILS_SRCS}
    ${TUNNEL_MANAGER_SRCS}
    # ${COMM_TUNNELS_UTILS_SRCS}
    ${JUDGER_SRCS}
    ${PARSE_CFG_SRCS}
    ${ID_TRANS_SRCS}
)

set(COMPONENTS_INCS
    ${TUNNELS_INCS}
    ${UTILS_INCS}
    ${TUNNEL_MANAGER_INCS}
    # ${COMM_TUNNELS_UTILS_INCS}
    ${JUDGER_INCS}
    ${PARSE_CFG_INCS}
    ${ID_TRANS_INCS}
)