# examples/CMakeLists.txt
#
# Example programs for conformallab++.
# All examples require -DWITH_CGAL=ON.
# example_viewer additionally requires -DWITH_VIEWER=ON.
#
# Run after building:
#   ./build/examples/example_euclidean   [input.off] [output.off]
#   ./build/examples/example_hyper_ideal [input.off] [output.off]
#   ./build/examples/example_viewer      [input.off]         (requires WITH_VIEWER)

# ── Shared include paths for all examples ─────────────────────────────────────
set(EXAMPLE_INCLUDES
    ${CMAKE_SOURCE_DIR}/deps/eigen-3.4.0
    ${CMAKE_SOURCE_DIR}/deps/CGAL-6.1.1/include
    ${CMAKE_SOURCE_DIR}/deps/single_includes
    ${Boost_INCLUDE_DIRS}
)
set(EXAMPLE_PRIVATE_INCLUDES
    ${CMAKE_SOURCE_DIR}/include
)
set(EXAMPLE_DEFS
    CGAL_DISABLE_GMP
    CGAL_DISABLE_MPFR
)

# ── example_euclidean ─────────────────────────────────────────────────────────
add_executable(example_euclidean example_euclidean.cpp)
target_include_directories(example_euclidean SYSTEM PRIVATE ${EXAMPLE_INCLUDES})
target_include_directories(example_euclidean PRIVATE        ${EXAMPLE_PRIVATE_INCLUDES})
target_compile_definitions(example_euclidean PRIVATE        ${EXAMPLE_DEFS})

# ── example_hyper_ideal ───────────────────────────────────────────────────────
add_executable(example_hyper_ideal example_hyper_ideal.cpp)
target_include_directories(example_hyper_ideal SYSTEM PRIVATE ${EXAMPLE_INCLUDES})
target_include_directories(example_hyper_ideal PRIVATE        ${EXAMPLE_PRIVATE_INCLUDES})
target_compile_definitions(example_hyper_ideal PRIVATE        ${EXAMPLE_DEFS})

# ── example_layout ───────────────────────────────────────────────────────────
add_executable(example_layout example_layout.cpp)
target_include_directories(example_layout SYSTEM PRIVATE ${EXAMPLE_INCLUDES})
target_include_directories(example_layout PRIVATE        ${EXAMPLE_PRIVATE_INCLUDES})
target_compile_definitions(example_layout PRIVATE        ${EXAMPLE_DEFS})

# ── example_viewer (requires WITH_VIEWER) ─────────────────────────────────────
if(WITH_VIEWER)
    add_executable(example_viewer example_viewer.cpp)
    target_include_directories(example_viewer SYSTEM PRIVATE
        ${EXAMPLE_INCLUDES}
        ${CMAKE_SOURCE_DIR}/deps/libigl-2.6.0/include
        ${CMAKE_SOURCE_DIR}/deps/libigl-glad/include
    )
    target_include_directories(example_viewer PRIVATE ${EXAMPLE_PRIVATE_INCLUDES})
    target_compile_definitions(example_viewer PRIVATE ${EXAMPLE_DEFS})
    target_link_libraries(example_viewer PRIVATE viewer)
endif()
