X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=CMake%2FCheckTbb.cmake;h=cd76ab3e4761980753c553917cd8d3e100951947;hb=f875d401486e0e12d30b28e9d62220fdf6cd8561;hp=11abb4ab0928602f19da00ba1f3281e404dbc066;hpb=30c51379a982cb3e7682a90cdb2469c5e72a6045;p=m6w6%2Flibmemcached diff --git a/CMake/CheckTbb.cmake b/CMake/CheckTbb.cmake index 11abb4ab..cd76ab3e 100644 --- a/CMake/CheckTbb.cmake +++ b/CMake/CheckTbb.cmake @@ -1,20 +1,34 @@ -function(CHECK_TBB) - check_header(execution) - # TBBConfig only sets TBB_FOUND to FALSE + +configure_define(HAVE_TBB) + +# TBBConfig only sets TBB_FOUND to FALSE +check_dependency(LIBTBB tbb) + +if(HAVE_LIBTBB) + + cmake_push_check_state() + 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_cxx_include(execution -std=c++17) 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() + check_cxx_source_compiles(" + #include + #include + #include + int main() { + std::vector a = {1,2,3}; + std::all_of(std::execution::par, a.begin(), a.end(), [](char i) { + return i>0; + }); + } + " + HAVE_TBB + ) + endif() -endfunction() + cmake_pop_check_state() +endif()