################### BASE SOURCES
file(
  GLOB_RECURSE C_SPECX_SOURCES  
  CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/*.c"
)
file(
  GLOB_RECURSE POSIX_SOURCES 
  CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/posix/*.c"
)
file(
  GLOB_RECURSE WINDOWS_SOURCES 
  CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/windows/*.c"
)

################### PLATFORM SPECIFIC
list(REMOVE_ITEM C_SPECX_SOURCES ${POSIX_SOURCES})
list(REMOVE_ITEM C_SPECX_SOURCES ${WINDOWS_SOURCES})

if(WIN32)
    list(APPEND C_SPECX_SOURCES ${WINDOWS_SOURCES})
    set(PLATFORM_DEPENDENCIES ws2_32)
else()
    list(APPEND C_SPECX_SOURCES ${POSIX_SOURCES})
    set(PLATFORM_DEPENDENCIES pthread)
endif()

################### THE MAIN LIBRARY
add_library(c_specx STATIC ${C_SPECX_SOURCES})
target_include_directories(c_specx
  PUBLIC  "${CMAKE_CURRENT_SOURCE_DIR}/include"
  PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src"
)
target_link_libraries(c_specx PUBLIC ${PLATFORM_DEPENDENCIES})
