cmake_minimum_required(VERSION 3.14)

project(CSG-EB
  DESCRIPTION  "Parser for CSG files to define Embedded Boundaries"
  HOMEPAGE_URL "https://mfix.netl.doe.gov/gitlab/exa/csg-eb"
  LANGUAGES    CXX
  )

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

find_program(CCACHE_FOUND ccache)
if(CCACHE_FOUND)
  set( CMAKE_CXX_COMPILER_LAUNCHER ccache )
endif()

find_program(CONAN_FOUND conan)
if(CONAN_FOUND)
  message(STATUS "Using conan found at: ${CONAN_FOUND}")
  include(conan.cmake)
  conan_cmake_run(CONANFILE conanfile.py
    BASIC_SETUP CMAKE_TARGETS)
else()
  message(WARNING "Did not find conan in PATH. Will try download it with PMM <https://github.com/vector-of-bool/pmm>")
  message(WARNING "Recommend installing Conan with 'pip install conan' <https://conan.io/downloads.html> for faster builds")
  include(pmm.cmake)
  pmm(CONAN)
  conan_basic_setup()
  include(${CMAKE_CURRENT_BINARY_DIR}/conanbuildinfo.cmake)
endif()

include(CTest)
include(Catch)

if(NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
  set(MFIXPARSER_CATCH2_DIR ${CONAN_BUILD_DIRS_CATCH2} PARENT_SCOPE)
  set(MFIXPARSER_CATCH2_INC ${CONAN_INCLUDE_DIRS_CATCH2} PARENT_SCOPE)
endif()

add_subdirectory(src/csg)

target_include_directories(csg
  PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include
  PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
  )

target_compile_features(csg PRIVATE cxx_std_17)
