cmake_minimum_required(VERSION 3.18)
set(OG_INSTALL_INCLUDE OFF CACHE BOOL "disable include dir installation")
list(APPEND CMAKE_PREFIX_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake)
set(OG_PNAME pricinglib)
set(OG_PVER 0.0.2)
find_package(ogbk REQUIRED)
project(${OG_PNAME} VERSION ${OG_PVER})
og_project_start()

include_directories(${PROJECT_SOURCE_DIR}/3rd/include)
include_directories(${PROJECT_SOURCE_DIR}/include/lets_be_rational)
set(lbr_src
  ${PROJECT_SOURCE_DIR}/src/lets_be_rational.cpp
  ${PROJECT_SOURCE_DIR}/src/erf_cody.cpp
  ${PROJECT_SOURCE_DIR}/src/rationalcubic.cpp
  ${PROJECT_SOURCE_DIR}/src/normaldistribution.cpp
)
add_library(lbr STATIC ${lbr_src})
og_add_target(lbr)

enable_language(Fortran)
add_library(slsqpf ${PROJECT_SOURCE_DIR}/src/optmz/slsqpf/slsqp_optmz.f)
add_library(optmz ${PROJECT_SOURCE_DIR}/src/optmz/minmz.cpp)
add_library(modfit ${PROJECT_SOURCE_DIR}/src/fit/crs.cpp)
target_link_libraries(optmz PUBLIC slsqpf)
target_include_directories(optmz PRIVATE 
  ${PROJECT_SOURCE_DIR}/src/optmz
  ${PROJECT_SOURCE_DIR}/src/optmz/slsqpf
  )
find_package(Python COMPONENTS Interpreter Development)
find_package(pybind11 CONFIG REQUIRED HINTS ${PROJECT_SOURCE_DIR}/3rd)
pybind11_add_module(pyfit ${PROJECT_SOURCE_DIR}/src/pyfit.cpp)
target_link_libraries(pyfit PUBLIC optmz modfit slsqpf)
target_compile_definitions(optmz PUBLIC USE_OG_EXCEPTION)
target_compile_definitions(modfit PUBLIC USE_OG_EXCEPTION)
target_compile_definitions(pyfit PUBLIC USE_OG_EXCEPTION)

og_enable_testing()
add_subdirectory(test)
og_project_end()
