cmake_minimum_required(VERSION 3.20)
project(cogniflow_pipeline_sdk LANGUAGES CXX)

# SDK vendors cf_pipeline_engine sources into vendor/ to keep sdist build self-contained.

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(TYPE_REGISTRY_V0_FILENAME "type_registry.v0.json")
set(TYPE_REGISTRY_V0_SOURCE_PATH
  "${CMAKE_CURRENT_SOURCE_DIR}/vendor/cf_pipeline_engine/resources/type_registry.v0.json"
)

add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/vendor/cf_pipeline_engine cf_pipeline_build EXCLUDE_FROM_ALL)

set(SDK_PKG_DIR ${SKBUILD_PLATLIB_DIR}/cogniflow_pipeline_sdk)
set(SDK_BIN_DIR ${SDK_PKG_DIR}/bin)
set(SDK_INCLUDE_DIR ${SDK_PKG_DIR}/include)

add_custom_target(sdk_assets ALL
  DEPENDS cf_siggen
)

add_custom_command(TARGET sdk_assets POST_BUILD
  COMMAND ${CMAKE_COMMAND} -E make_directory ${SDK_BIN_DIR}
  COMMAND ${CMAKE_COMMAND} -E make_directory ${SDK_INCLUDE_DIR}
  COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:cf_siggen> ${SDK_BIN_DIR}
  COMMAND ${CMAKE_COMMAND} -E copy_if_different ${TYPE_REGISTRY_V0_SOURCE_PATH} ${SDK_BIN_DIR}/${TYPE_REGISTRY_V0_FILENAME}
  COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/vendor/cf_pipeline_engine/include ${SDK_INCLUDE_DIR}
)
