cmake_minimum_required(VERSION 3.14)
project(utah_teapot LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

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

if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
    add_compile_options(-O3 -march=native -ffast-math)
endif()

add_executable(teapot main.cpp)

# Enable OpenMP if available so the Batch4D path can dispatch patches in parallel
find_package(OpenMP)
if(OpenMP_CXX_FOUND)
    target_link_libraries(teapot OpenMP::OpenMP_CXX)
endif()

# X11 for the real-time preview window
find_package(X11)
if(X11_FOUND)
    target_link_libraries(teapot X11::X11)
    target_compile_definitions(teapot PRIVATE HAS_X11=1)
endif()

# Copy the data file next to the executable so it can be read with a relative path
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/teapot.bpt
               ${CMAKE_CURRENT_BINARY_DIR}/teapot.bpt COPYONLY)
