From 8b3c6e586fffed7263c7ae9f597dc3fa1a12f330 Mon Sep 17 00:00:00 2001
From: Andre Sailer <andre.philippe.sailer@cern.ch>
Date: Wed, 1 Jul 2020 10:07:10 +0200
Subject: [PATCH] Add DD4HEP_USE_TBB cmake variable and require TBB if ON,
 declare dependency

---
 CMakeLists.txt              | 1 +
 DDDigi/CMakeLists.txt       | 7 +++----
 cmake/DD4hepConfig.cmake.in | 6 ++++++
 3 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 839feb0c9..15a9d9dac 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -72,6 +72,7 @@ option(DD4HEP_IGNORE_GEANT4_TLS "Ignore the tls flag Geant4 was compiled with" O
 option(DD4HEP_USE_GEAR    "Build gear wrapper for backward compatibility" OFF)
 option(DD4HEP_USE_LCIO    "Build lcio extensions"                         OFF)
 option(DD4HEP_USE_HEPMC3  "Build hepmc3 extensions"                       OFF)
+option(DD4HEP_USE_TBB     "Build features that require TBB"               OFF)
 option(DD4HEP_LOAD_ASSIMP "Download and build ASSIMP from github"         OFF)
 option(BUILD_TESTING      "Enable and build tests"                        ON)
 option(BUILD_SHARED_LIBS  "If OFF build STATIC Libraries"                 ON)
diff --git a/DDDigi/CMakeLists.txt b/DDDigi/CMakeLists.txt
index 88eb5c926..1aa31fbc5 100644
--- a/DDDigi/CMakeLists.txt
+++ b/DDDigi/CMakeLists.txt
@@ -31,15 +31,14 @@ target_include_directories(DDDigi
   $<INSTALL_INTERFACE:include>
   )
 
-
-FIND_PACKAGE(TBB QUIET)
-if(TBB_FOUND)
+if(DD4HEP_USE_TBB)
+  find_package(TBB REQUIRED)
   dd4hep_print( "|++> TBB_IMPORTED_TARGETS -->  ${TBB_IMPORTED_TARGETS}")
   dd4hep_print( "|++> TBB found. DDDigi will run multi threaded.")
   target_compile_definitions(DDDigi PUBLIC DD4HEP_USE_TBB)
   target_link_libraries(DDDigi PUBLIC ${TBB_IMPORTED_TARGETS})
 else()
-  dd4hep_print( "|++> TBB not found. DDDigi will only work single threaded.")
+  dd4hep_print( "|++> TBB not used. DDDigi will only work single threaded.")
 endif()
 
 #---------------------------  Legacy libraries -------------------------------------
diff --git a/cmake/DD4hepConfig.cmake.in b/cmake/DD4hepConfig.cmake.in
index ed777aa8c..5b6d798db 100644
--- a/cmake/DD4hepConfig.cmake.in
+++ b/cmake/DD4hepConfig.cmake.in
@@ -29,6 +29,7 @@ set ( DD4HEP_USE_GEANT4         @DD4HEP_USE_GEANT4@ )
 set ( DD4HEP_USE_CLHEP          @DD4HEP_USE_CLHEP@ )
 set ( DD4HEP_USE_LCIO           @DD4HEP_USE_LCIO@ )
 set ( DD4HEP_USE_XERCESC        @DD4HEP_USE_XERCESC@ )
+set ( DD4HEP_USE_TBB            @DD4HEP_USE_TBB@ )
 set ( @CMAKE_PROJECT_NAME@_BUILD_CXX_STANDARD @CMAKE_CXX_STANDARD@ )
 
 include ( ${@CMAKE_PROJECT_NAME@_DIR}/cmake/DD4hep.cmake )
@@ -70,6 +71,11 @@ if(DD4HEP_USE_LCIO)
   DD4HEP_SETUP_LCIO_TARGETS()
 endif()
 
+if(DD4HEP_USE_TBB)
+  MESSAGE(STATUS "@CMAKE_PROJECT_NAME@ uses TBB")
+  find_dependency(TBB REQUIRED)
+endif()
+
 if(NOT CMAKE_PROJECT_NAME STREQUAL @CMAKE_PROJECT_NAME@)
   include("${@CMAKE_PROJECT_NAME@_ROOT}/cmake/@CMAKE_PROJECT_NAME@Config-targets.cmake")
 endif()
-- 
GitLab