function(CHECK_TBB) check_header(execution) # TBBConfig only sets TBB_FOUND to FALSE if(HAVE_EXECUTION) check_dependency(LIBTBB tbb tbb/task.h) if(HAVE_LIBTBB) cmake_push_check_state(RESET) get_property(LIBTBB_INCLUDEDIR TARGET LIBTBB PROPERTY INTERFACE_INCLUDE_DIRECTORIES) get_property(LIBTBB_LIBRARIES TARGET LIBTBB PROPERTY INTERFACE_LINK_LIBRARIES) set(CMAKE_REQUIRED_INCLUDES "${LIBTBB_INCLUDEDIR}") set(CMAKE_REQUIRED_LIBRARIES "${LIBTBB_LIBRARIES}") set(CMAKE_REQUIRED_FLAGS -std=c++17) check_compiles(HAVE_TBB "std::vector a={1,2,3}; std::all_of(std::execution::par,a.begin(),a.end(),[](char i){return i>0;});" vector algorithm execution) cmake_pop_check_state(RESET) if(HAVE_TBB) set(HAVE_LIBTBB 1 PARENT_SCOPE) endif() endif() endif() endfunction()