# CMakeLists.txt for hev-socks5-tunnel
# Add this to your existing CMakeLists.txt with: include(hev-socks5-tunnel/CMakeLists.txt)
# Or add these variables to your main CMakeLists.txt

set(HEV_DIR ${CMAKE_CURRENT_SOURCE_DIR}/hev-socks5-tunnel)
set(HEV_TASK_DIR ${HEV_DIR}/third-part/hev-task-system)
set(LWIP_DIR ${HEV_DIR}/third-part/lwip)
set(YAML_DIR ${HEV_DIR}/third-part/yaml)

# ===== hev-socks5-tunnel core sources =====
file(GLOB_RECURSE HEV_CORE_SOURCES
    ${HEV_DIR}/src/*.c
)

# Remove platform-specific files we don't need
list(FILTER HEV_CORE_SOURCES EXCLUDE REGEX ".*tunnel-freebsd\\.c$")
list(FILTER HEV_CORE_SOURCES EXCLUDE REGEX ".*tunnel-macos\\.c$")
list(FILTER HEV_CORE_SOURCES EXCLUDE REGEX ".*tunnel-netbsd\\.c$")
list(FILTER HEV_CORE_SOURCES EXCLUDE REGEX ".*tunnel-windows\\.c$")
list(FILTER HEV_CORE_SOURCES EXCLUDE REGEX ".*wintun\\.c$")

# ===== hev-task-system =====
file(GLOB HEV_TASK_SOURCES
    ${HEV_TASK_DIR}/src/*.c
    ${HEV_TASK_DIR}/src/*.S
)

# ===== lwip =====
file(GLOB_RECURSE LWIP_SOURCES
    ${LWIP_DIR}/src/core/*.c
    ${LWIP_DIR}/src/api/*.c
    ${LWIP_DIR}/src/netif/*.c
)
# lwip port sources
file(GLOB_RECURSE LWIP_PORT_SOURCES
    ${LWIP_DIR}/src/ports/*.c
)

# ===== yaml =====
file(GLOB YAML_SOURCES
    ${YAML_DIR}/src/*.c
)

# ===== Include directories =====
set(HEV_INCLUDE_DIRS
    ${HEV_DIR}/include
    ${HEV_DIR}/src
    ${HEV_DIR}/src/misc
    ${HEV_DIR}/src/core/include
    ${HEV_DIR}/src/core/src
    ${HEV_TASK_DIR}/include
    ${LWIP_DIR}/src/include
    ${LWIP_DIR}/src/include/lwip
    ${LWIP_DIR}/src/ports/include
    ${YAML_DIR}/include
)

# ===== Compiler flags =====
add_definitions(-DFD_SET_DEFINED)
add_definitions(-DSOCKLEN_T_DEFINED)
add_definitions(-DENABLE_LIBRARY)
add_definitions(-DCOMMIT_ID=\"unknown\")

# ===== Add to your existing library =====
# Uncomment and modify these lines to add to your build:
#
# target_sources(native-lib PRIVATE
#     ${HEV_CORE_SOURCES}
#     ${HEV_TASK_SOURCES}
#     ${LWIP_SOURCES}
#     ${LWIP_PORT_SOURCES}
#     ${YAML_SOURCES}
# )
#
# target_include_directories(native-lib PRIVATE
#     ${HEV_INCLUDE_DIRS}
# )
