cmake_minimum_required(VERSION 3.20)
# Automatisch Projektname aus Parent-Ordner

set(PROJECT_NAME "ConformalLabpp")

project(${PROJECT_NAME} LANGUAGES CXX)

message(STATUS "Configuring ${PROJECT_NAME}...")

# Build-Setup
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

if(NOT CMAKE_BUILD_TYPE)
  set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build type" FORCE)
endif()

# Compiler-Warnings & Optimierungen
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU")
  add_compile_options(-Wall -Wextra -Wpedantic)
  
  # AddressSanitizer nur im Debug
  if(CMAKE_BUILD_TYPE STREQUAL "Debug")
    add_compile_options(-fsanitize=address -fno-omit-frame-pointer)
    add_link_options(-fsanitize=address)
  endif() 
endif()


add_subdirectory(deps)

# --------- Executable ---------
add_executable(${PROJECT_NAME} src/main.cpp)

target_include_directories(${PROJECT_NAME} PRIVATE
  ${CMAKE_CURRENT_SOURCE_DIR}/include
  ${CMAKE_CURRENT_SOURCE_DIR}/deps/single_includes
  ${CMAKE_CURRENT_SOURCE_DIR}/deps/eigen-3.4.0/
  ${CMAKE_CURRENT_SOURCE_DIR}/deps/CGAL-6.1.1/include
  ${CMAKE_CURRENT_SOURCE_DIR}/deps/boost_1_90_0/
)

# Output-Ordner
set_target_properties(${PROJECT_NAME} PROPERTIES
  RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
)
