more cleanup
[m6w6/libmemcached] / CMake / CheckTbb.cmake
index 31a0de1ddbc7b5ccf6f2bea0b2902d0a0ec5603c..b3ea50f4501fb66d150a68bda73fe1775be74867 100644 (file)
@@ -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<char> 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 <vector>
+                #include <algorithm>
+                #include <execution>
+                int main() {
+                    std::vector<char> 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()