X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=CMake%2FCheckTbb.cmake;h=b3ea50f4501fb66d150a68bda73fe1775be74867;hb=01c5e0ed8d3d9c72ea192792d1c49a50e756d635;hp=31a0de1ddbc7b5ccf6f2bea0b2902d0a0ec5603c;hpb=808f81dba2553a1e552e8f3cea3ee376ad7d3558;p=awesomized%2Flibmemcached diff --git a/CMake/CheckTbb.cmake b/CMake/CheckTbb.cmake index 31a0de1d..b3ea50f4 100644 --- a/CMake/CheckTbb.cmake +++ b/CMake/CheckTbb.cmake @@ -1,17 +1,33 @@ -macro(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) - 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() -endmacro() + cmake_pop_check_state() +endif()