File: tbb.cmake

package info (click to toggle)
madness 0.10.1%2Bgit20200818.eee5fd9f-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, sid, trixie
  • size: 34,980 kB
  • sloc: cpp: 280,841; ansic: 12,626; python: 4,961; fortran: 4,245; xml: 1,053; makefile: 714; sh: 276; perl: 244; yacc: 227; lex: 188; asm: 141; csh: 55
file content (47 lines) | stat: -rw-r--r-- 1,915 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
if (ENABLE_TBB)
  find_package(TBB 4.3)

  if (TBB_FOUND)
    set(HAVE_INTEL_TBB 1)
    message(STATUS "Found TBB: ${TBB_LIBRARIES}")
  endif ()

  # if user set MADNESS_EXPLOIT_TBB_PRIORITY to ON:
  # check if task priorities are supported (albeit deprecated) and whether they need macro __TBB_TASK_PRIORITY to be defined
  if (MADNESS_EXPLOIT_TBB_PRIORITY)
    cmake_push_check_state()
    set(CMAKE_REQUIRED_INCLUDES ${TBB_INCLUDE_DIRS})
    if (TBB_USE_DEBUG AND TBB_LIBRARIES_DEBUG)
      list(APPEND CMAKE_REQUIRED_DEFINITIONS "${TBB_COMPILE_FLAGS_DEBUG}")
      set(CMAKE_REQUIRED_LIBRARIES ${TBB_LIBRARIES_DEBUG})
    else ()
      set(CMAKE_REQUIRED_LIBRARIES ${TBB_LIBRARIES_RELEASE})
    endif ()
    set(_tbb_task_priority_compile_check_source "
#include <tbb/task.h>
int main(int argc, char** argv) {
tbb::task* t;
tbb::task::enqueue(*t, tbb::priority_high);
}
")

    check_cxx_source_compiles("${_tbb_task_priority_compile_check_source}" MADNESS_CAN_USE_TBB_PRIORITY)
    if (MADNESS_CAN_USE_TBB_PRIORITY)
      set(MADNESS_CAN_USE_TBB_PRIORITY TRUE CACHE BOOL "Whether MADNESS can control TBB task priorities" FORCE)
    else (MADNESS_CAN_USE_TBB_PRIORITY)
      list(APPEND CMAKE_REQUIRED_DEFINITIONS "-D__TBB_TASK_PRIORITY=1")
      check_cxx_source_compiles("${_tbb_task_priority_compile_check_source}" MADNESS_CAN_USE_TBB_PRIORITY_IF_MACROED_ON)
      if (MADNESS_CAN_USE_TBB_PRIORITY_IF_MACROED_ON)
        set(MADNESS_CAN_USE_TBB_PRIORITY TRUE CACHE BOOL "Whether MADNESS can control TBB task priorities" FORCE)
        list(APPEND TBB_COMPILE_FLAGS "-D__TBB_TASK_PRIORITY=1")
      endif (MADNESS_CAN_USE_TBB_PRIORITY_IF_MACROED_ON)
    endif (MADNESS_CAN_USE_TBB_PRIORITY)
    if (MADNESS_CAN_USE_TBB_PRIORITY)
      message(STATUS "TBB task priorities will be enabled")
    endif (MADNESS_CAN_USE_TBB_PRIORITY)

    cmake_pop_check_state()
  endif (MADNESS_EXPLOIT_TBB_PRIORITY)


endif ()