# csilk cmake helper
# Include this file from a consuming project BEFORE calling add_subdirectory(csilk).
# It pre-configures FetchContent variables so csilk uses its pre-fetched
# dependencies instead of re-downloading.
#
# Usage:
#   list(APPEND CMAKE_MODULE_PATH /path/to/csilk/cmake)
#   include(csilk)
#   add_subdirectory(/path/to/csilk ${CMAKE_BINARY_DIR}/csilk)
#   target_link_libraries(myapp PRIVATE csilk)

if(NOT CSILK_SOURCE_DIR)
  message(FATAL_ERROR "csilk.cmake: CSILK_SOURCE_DIR must be set to the csilk source root")
endif()

set(CSILK_DEPS_DIR "${CSILK_SOURCE_DIR}/build/_deps")

# Pre-set FetchContent source directories so dependencies aren't re-downloaded
if(EXISTS "${CSILK_DEPS_DIR}/libuv-src/CMakeLists.txt")
  set(libuv_SOURCE_DIR "${CSILK_DEPS_DIR}/libuv-src" CACHE PATH "Pre-fetched libuv source")
  message(STATUS "csilk: using pre-fetched libuv at ${libuv_SOURCE_DIR}")
endif()

if(EXISTS "${CSILK_DEPS_DIR}/cjson-src/CMakeLists.txt")
  set(cjson_SOURCE_DIR "${CSILK_DEPS_DIR}/cjson-src" CACHE PATH "Pre-fetched cJSON source")
  message(STATUS "csilk: using pre-fetched cJSON at ${cjson_SOURCE_DIR}")
endif()

if(EXISTS "${CSILK_DEPS_DIR}/llhttp-src/CMakeLists.txt")
  set(llhttp_SOURCE_DIR "${CSILK_DEPS_DIR}/llhttp-src" CACHE PATH "Pre-fetched llhttp source")
  message(STATUS "csilk: using pre-fetched llhttp at ${llhttp_SOURCE_DIR}")
endif()