cmake_minimum_required(VERSION 3.16)
project(asitus_probe LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(REPO_ROOT "${CMAKE_CURRENT_LIST_DIR}/../..")
set(ASITUS_ROOT "${REPO_ROOT}/third_party/AnalysisSitus")
set(ASITUS_BUILD "${REPO_ROOT}/third_party/AnalysisSitus_build_algo_occt77")
set(THIRD_PARTY_ROOT "${REPO_ROOT}/third_party/3rdparty")
set(OCCT_ROOT "${THIRD_PARTY_ROOT}/OCCT")

file(GLOB_RECURSE ASITUS_PUBLIC_HEADERS CONFIGURE_DEPENDS
  "${ASITUS_ROOT}/src/asiAlgo/*.h"
  "${ASITUS_ROOT}/src/asiAlgo/*.hpp"
  "${ASITUS_ROOT}/src/asiActiveData/*.h"
  "${ASITUS_ROOT}/src/asiActiveData/*.hpp"
)

set(ASITUS_INCLUDE_DIRS)
foreach(header ${ASITUS_PUBLIC_HEADERS})
  get_filename_component(header_dir "${header}" DIRECTORY)
  list(APPEND ASITUS_INCLUDE_DIRS "${header_dir}")
endforeach()
list(REMOVE_DUPLICATES ASITUS_INCLUDE_DIRS)

file(GLOB OCCT_LIBS CONFIGURE_DEPENDS "${OCCT_ROOT}/win64/vc14/lib/*.lib")

add_executable(recognize_holes recognize_holes.cpp)

target_include_directories(recognize_holes PRIVATE
  ${ASITUS_INCLUDE_DIRS}
  "${OCCT_ROOT}/inc"
  "${THIRD_PARTY_ROOT}/eigen-3.4.0"
  "${THIRD_PARTY_ROOT}/rapidjson-1.1.0/include"
)

target_link_directories(recognize_holes PRIVATE
  "${ASITUS_BUILD}/win64/vc14/lib"
  "${OCCT_ROOT}/win64/vc14/lib"
)

target_link_libraries(recognize_holes PRIVATE
  asiAlgo
  asiActiveData
  ${OCCT_LIBS}
)
