cmake_minimum_required(VERSION 3.20)
project(HopeFlowAIP LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

option(HOPEFLOW_BUILD_AIP "Build the Illustrator AIP host plugin" OFF)
set(ILLUSTRATOR_SDK_ROOT "" CACHE PATH "Path to the Adobe Illustrator SDK")

if(NOT ILLUSTRATOR_SDK_ROOT)
  set(_HOPEFLOW_SDK_CANDIDATES
    "${CMAKE_CURRENT_LIST_DIR}/sdk/AdobeIllustratorSDK"
    "${CMAKE_CURRENT_LIST_DIR}/sdk/mac_Adobe Illustrator 2026 SDK"
    "${CMAKE_CURRENT_LIST_DIR}/sdk/mac_Adobe Illustrator 2025 SDK"
    "${CMAKE_CURRENT_LIST_DIR}/sdk/mac_Adobe Illustrator 2024 SDK"
    "${CMAKE_CURRENT_LIST_DIR}/sdk/mac_Adobe Illustrator 2023 SDK"
    "${CMAKE_CURRENT_LIST_DIR}/sdk/mac_Adobe Illustrator 2022 SDK"
    "${CMAKE_CURRENT_LIST_DIR}/sdk/mac_Adobe Illustrator 2021 SDK"
    "${CMAKE_CURRENT_LIST_DIR}/sdk/mac_Adobe Illustrator 2020 SDK"
  )

  foreach(_HOPEFLOW_LOCAL_SDK IN LISTS _HOPEFLOW_SDK_CANDIDATES)
    if(EXISTS "${_HOPEFLOW_LOCAL_SDK}/illustratorapi/illustrator/AIPlugin.h")
      set(ILLUSTRATOR_SDK_ROOT "${_HOPEFLOW_LOCAL_SDK}" CACHE PATH "Path to the Adobe Illustrator SDK" FORCE)
      break()
    endif()
  endforeach()
endif()

add_library(hopeflow_smart_group_core STATIC
  src/core/smart_group_core.cpp
)
target_include_directories(hopeflow_smart_group_core PUBLIC
  ${CMAKE_CURRENT_SOURCE_DIR}/src/core
)

add_library(hopeflow_data_merge_core STATIC
  src/core/data_merge_core.cpp
)
target_include_directories(hopeflow_data_merge_core PUBLIC
  ${CMAKE_CURRENT_SOURCE_DIR}/src/core
)

enable_testing()
add_executable(smart_group_core_test
  tests/smart_group_core_test.cpp
)
target_link_libraries(smart_group_core_test PRIVATE hopeflow_smart_group_core)
add_test(NAME smart_group_core_test COMMAND $<TARGET_FILE:smart_group_core_test>)

add_executable(data_merge_core_test
  tests/data_merge_core_test.cpp
)
target_link_libraries(data_merge_core_test PRIVATE hopeflow_data_merge_core)
add_test(NAME data_merge_core_test COMMAND $<TARGET_FILE:data_merge_core_test>)

if(HOPEFLOW_BUILD_AIP)
  if(NOT ILLUSTRATOR_SDK_ROOT OR NOT EXISTS "${ILLUSTRATOR_SDK_ROOT}")
    message(FATAL_ERROR
      "Illustrator SDK not found. Put it at "
      "tools/illustrator-aip/sdk/AdobeIllustratorSDK, "
      "tools/illustrator-aip/sdk/win_Adobe Illustrator YYYY SDK "
      "(YYYY = 2020-2026), or set "
      "-DILLUSTRATOR_SDK_ROOT=/path/to/AdobeIllustratorSDK."
    )
  endif()

  message(STATUS "Using Illustrator SDK: ${ILLUSTRATOR_SDK_ROOT}")

  message(FATAL_ERROR
    "Windows AIP builds are driven by tools/illustrator-aip/build-windows-aip.ps1. "
    "Use that script to compile the SDK sample wrapper."
  )
endif()
