cmake_minimum_required(VERSION 3.20)
project(cogniflow_pipeline_sdk LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

get_filename_component(_CF_REPO_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/../../.." ABSOLUTE)
include("${_CF_REPO_ROOT}/tools/cmake/cf_contracts_include.cmake")

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

add_custom_target(sdk_assets ALL
  DEPENDS cf_step_runtime_provider
)

add_library(cf_step_runtime_provider SHARED
  ${CMAKE_CURRENT_SOURCE_DIR}/src/cogniflow_pipeline_sdk/native/step_runtime_contract_provider.cpp
)
target_include_directories(cf_step_runtime_provider PRIVATE
  ${CF_CONTRACTS_INCLUDE}
)
target_compile_definitions(cf_step_runtime_provider PRIVATE CF_STEP_ABI_EXPORTS)
set_target_properties(cf_step_runtime_provider PROPERTIES
  PREFIX ""
)

add_custom_command(TARGET sdk_assets POST_BUILD
  COMMAND ${CMAKE_COMMAND} -E make_directory ${SDK_BIN_DIR}
  COMMAND ${CMAKE_COMMAND} -E remove_directory ${SDK_PKG_DIR}/native
  COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/src/cogniflow_pipeline_sdk/provider_descriptor.v1.json ${SDK_PKG_DIR}
  COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:cf_step_runtime_provider> ${SDK_BIN_DIR}
)
