From af38caef16eca454cc90eb5d6f83b4981ce16af6 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Thu, 15 Sep 2016 12:27:35 +0200 Subject: [PATCH] Better CMake API for TBB - new CMake module `CGAL_target_use_TBB` that defines a function, that enables TBB per target. - `UseTBB.cmake` is deprecated. --- .../cmake/modules/CGAL_target_use_TBB.cmake | 12 ++++++ Installation/cmake/modules/UseTBB.cmake | 2 + Mesh_2/examples/Mesh_2/CMakeLists.txt | 6 +-- .../examples/Triangulation_3/CMakeLists.txt | 37 ++++++++----------- 4 files changed, 31 insertions(+), 26 deletions(-) create mode 100644 Installation/cmake/modules/CGAL_target_use_TBB.cmake diff --git a/Installation/cmake/modules/CGAL_target_use_TBB.cmake b/Installation/cmake/modules/CGAL_target_use_TBB.cmake new file mode 100644 index 00000000000..0e3e3f8c803 --- /dev/null +++ b/Installation/cmake/modules/CGAL_target_use_TBB.cmake @@ -0,0 +1,12 @@ +if (CGAL_target_use_TBB_included) + return() +endif() +set(CGAL_target_use_TBB_included TRUE) + +function(CGAL_target_use_TBB target) + set(keyword PUBLIC) + + target_include_directories ( ${target} SYSTEM ${keyword} ${TBB_INCLUDE_DIRS} ) + target_link_libraries( ${target} ${keyword} ${TBB_LIBRARIES} ) + target_compile_options( ${target} ${keyword} -DNOMINMAX -DCGAL_LINKED_WITH_TBB ) +endfunction() diff --git a/Installation/cmake/modules/UseTBB.cmake b/Installation/cmake/modules/UseTBB.cmake index 25122e25825..5a22f6f079a 100644 --- a/Installation/cmake/modules/UseTBB.cmake +++ b/Installation/cmake/modules/UseTBB.cmake @@ -4,3 +4,5 @@ include_directories ( ${TBB_INCLUDE_DIRS} ) link_directories( ${TBB_LIBRARY_DIRS} ) add_definitions( -DNOMINMAX -DCGAL_LINKED_WITH_TBB ) + +message(DEPRECATION "This file UseTBB.cmake is deprecated, and the function `CGAL_target_use_TBB` from CGAL_target_use_TBB.cmake should be used instead.") diff --git a/Mesh_2/examples/Mesh_2/CMakeLists.txt b/Mesh_2/examples/Mesh_2/CMakeLists.txt index fc27a1170bd..43eaf6b585d 100644 --- a/Mesh_2/examples/Mesh_2/CMakeLists.txt +++ b/Mesh_2/examples/Mesh_2/CMakeLists.txt @@ -1,10 +1,6 @@ -# Created by the script cgal_create_cmake_script -# This is the CMake script for compiling a CGAL application. - - project( Mesh_2_Examples ) -cmake_minimum_required(VERSION 2.8.10) +cmake_minimum_required(VERSION 2.8.12) find_package(CGAL QUIET) diff --git a/Triangulation_3/examples/Triangulation_3/CMakeLists.txt b/Triangulation_3/examples/Triangulation_3/CMakeLists.txt index 32eebdcbae2..596bd423bd4 100644 --- a/Triangulation_3/examples/Triangulation_3/CMakeLists.txt +++ b/Triangulation_3/examples/Triangulation_3/CMakeLists.txt @@ -1,29 +1,11 @@ -# Created by the script cgal_create_cmake_script -# This is the CMake script for compiling a CGAL application. - - project( Triangulation_3_Examples ) -cmake_minimum_required(VERSION 2.8.11) +cmake_minimum_required(VERSION 2.8.12) find_package(CGAL QUIET) if ( CGAL_FOUND ) - - include( ${CGAL_USE_FILE} ) - - find_package( TBB QUIET ) - - if( TBB_FOUND ) - include(${TBB_USE_FILE}) - list(APPEND CGAL_3RD_PARTY_LIBRARIES ${TBB_LIBRARIES}) - endif() - - include( CGAL_CreateSingleSourceCGALProgram ) - - include_directories (BEFORE "../../include") - create_single_source_cgal_program( "adding_handles_3.cpp" ) create_single_source_cgal_program( "color.cpp" ) create_single_source_cgal_program( "copy_triangulation_3.cpp" ) @@ -33,14 +15,27 @@ if ( CGAL_FOUND ) create_single_source_cgal_program( "info_insert_with_pair_iterator_regular.cpp" ) create_single_source_cgal_program( "info_insert_with_transform_iterator.cpp" ) create_single_source_cgal_program( "info_insert_with_zip_iterator.cpp" ) - create_single_source_cgal_program( "parallel_insertion_and_removal_in_regular_3.cpp" ) - create_single_source_cgal_program( "parallel_insertion_in_delaunay_3.cpp" ) create_single_source_cgal_program( "regular_3.cpp" ) create_single_source_cgal_program( "regular_with_info_3.cpp" ) create_single_source_cgal_program( "sequential_parallel.cpp" ) create_single_source_cgal_program( "simple_triangulation_3.cpp" ) create_single_source_cgal_program( "simplex.cpp" ) + find_package( TBB QUIET ) + + if( TBB_FOUND ) + include( CGAL_target_use_TBB ) + + create_single_source_cgal_program( "parallel_insertion_and_removal_in_regular_3.cpp" ) + create_single_source_cgal_program( "parallel_insertion_in_delaunay_3.cpp" ) + create_single_source_cgal_program( "sequential_parallel.cpp" ) + CGAL_target_use_TBB( parallel_insertion_and_removal_in_regular_3 ) + CGAL_target_use_TBB( parallel_insertion_in_delaunay_3 ) + CGAL_target_use_TBB( sequential_parallel ) + else() + message(STATUS "NOTICE: a few examples require TBB and will not be compiled.") + endif() + else() message(STATUS "This program requires the CGAL library, and will not be compiled.")