# Created by the script cgal_create_CMakeLists
# This is the CMake script for compiling a set of CGAL applications.

cmake_minimum_required(VERSION 3.12...3.31)
project(Polygon_mesh_processing_Tests)

# CGAL and its components
find_package(CGAL REQUIRED)

create_single_source_cgal_program("connected_component_polyhedron.cpp")
create_single_source_cgal_program("connected_component_surface_mesh.cpp")
create_single_source_cgal_program("measures_test.cpp")
create_single_source_cgal_program("point_inside_polyhedron_boundary_test.cpp")
create_single_source_cgal_program("point_inside_surface_mesh_test.cpp")
create_single_source_cgal_program("pmp_compute_normals_test.cpp")
create_single_source_cgal_program("pmp_do_intersect_test.cpp")
create_single_source_cgal_program("self_intersection_polyhedron_test.cpp")
create_single_source_cgal_program("self_intersection_surface_mesh_test.cpp")
create_single_source_cgal_program("self_intersection_triangle_soup_test.cpp")
create_single_source_cgal_program("slow_compute_normal.cpp")
create_single_source_cgal_program("test_pmp_triangle.cpp")
create_single_source_cgal_program("test_hausdorff_bounded_error_distance.cpp")
create_single_source_cgal_program("test_detect_features.cpp")
create_single_source_cgal_program("test_deprecated_border.cpp")
create_single_source_cgal_program("test_discrete_curvatures.cpp")
create_single_source_cgal_program("test_pmp_distance.cpp")
create_single_source_cgal_program("test_pmp_transform.cpp")
create_single_source_cgal_program("test_pmp_collision_detection.cpp")
create_single_source_cgal_program("test_pmp_locate.cpp")
create_single_source_cgal_program("test_pmp_polyhedral_envelope.cpp")
create_single_source_cgal_program("test_pmp_np_function.cpp")
create_single_source_cgal_program("test_shape_predicates.cpp")
create_single_source_cgal_program("issue_8730.cpp")
create_single_source_cgal_program("issue_7164.cpp")

find_package(Eigen3 QUIET)
include(CGAL_Eigen3_support)

if(TARGET CGAL::Eigen3_support)
  create_single_source_cgal_program("test_interpolated_corrected_curvatures.cpp")
  target_link_libraries(test_interpolated_corrected_curvatures PRIVATE CGAL::Eigen3_support)
else()
  message(STATUS "NOTICE: Tests that use the Eigen library will not be compiled.")
endif()

find_package(METIS QUIET)
include(CGAL_METIS_support)
if(TARGET CGAL::METIS_support)
  target_link_libraries(test_hausdorff_bounded_error_distance PRIVATE CGAL::METIS_support)
else()
  message(STATUS "NOTICE: Tests are not using METIS.")
endif()

find_package(TBB QUIET)
include(CGAL_TBB_support)
if(TARGET CGAL::TBB_support)
  target_link_libraries(test_hausdorff_bounded_error_distance PRIVATE CGAL::TBB_support)
  target_link_libraries(test_pmp_distance PRIVATE CGAL::TBB_support)
  target_link_libraries(self_intersection_surface_mesh_test PRIVATE CGAL::TBB_support)
else()
  message(STATUS "NOTICE: Intel TBB was not found. Tests will use sequential code.")
endif()
