more cleanup
[m6w6/libmemcached] / CMake / CheckDependency.cmake
index f78390b4044fd8b6b9114a9e0bac501f82fc62e4..eec8d9b3a80fede9735a02ba618df9f4ae83bd56 100644 (file)
@@ -1,54 +1,44 @@
 find_package(PkgConfig)
 
-include(SafeString)
-include(CheckHeader)
+function(check_dependency NAME LIB)
+    make_have_identifier(${NAME} HAVE)
+    configure_define(${HAVE})
 
-function(check_dependency NAME LIB HEADER)
     if(PKG_CONFIG_FOUND)
         pkg_check_modules(${NAME} lib${LIB}${ARGN} IMPORTED_TARGET)
         if(NOT ${NAME}_FOUND)
             pkg_check_modules(${NAME} ${LIB}${ARGN} IMPORTED_TARGET)
         endif()
         if(${NAME}_FOUND)
-            set(${NAME} PkgConfig::${NAME} PARENT_SCOPE)
+            set(${NAME} PkgConfig::${NAME} CACHE INTERNAL "${NAME} import target")
+            set(${HAVE} 1 CACHE INTERNAL "${HAVE}")
+            return()
         endif()
     endif()
-    if(NOT ${NAME}_FOUND)
-        set(FOUND 1)
-        message(STATUS "Checking for library '${LIB}' with header '${HEADER}' ...")
-        find_library(LIB${LIB} NAMES ${LIB})
-        if(NOT LIB${LIB})
-            set(FOUND 0)
-        endif()
-        if(HEADER)
-            safe_string(${HEADER} HEADER_CONST)
-            check_header(${HEADER})
-            if(NOT HAVE_${HEADER_CONST})
-                set(FOUND 0)
-            else()
-                find_path(${HEADER_CONST}_ROOT ${HEADER})
-                if(NOT ${HEADER_CONST}_ROOT)
-                    set(FOUND 0)
-                endif()
-            endif()
-        endif()
-        if(FOUND)
-            message(STATUS "  Found library '${LIB${LIB}}'")
-            message(STATUS "  Found include '${${HEADER_CONST}_ROOT}'")
-            set(${NAME} Imported::${NAME} PARENT_SCOPE)
-            add_library(Imported::${NAME} INTERFACE IMPORTED)
-            set_target_properties(Imported::${NAME} PROPERTIES
-                    INTERFACE_INCLUDE_DIRECTORIES ${${HEADER_CONST}_ROOT}
-                    INTERFACE_LINK_LIBRARIES ${LIB${LIB}})
-        else()
-            message("--   No library '${LIB}' found")
-        endif()
-        set(${NAME}_FOUND ${FOUND})
-    endif()
 
-    set(HAVE_${NAME} ${${NAME}_FOUND} PARENT_SCOPE)
+    message(STATUS "Checking for library '${LIB}' ...")
+    find_library(${NAME}_FOUND NAMES ${LIB} ${ARGN})
     if(${NAME}_FOUND)
-        safe_string(${HEADER} HEADER_CONST)
-        find_path(HAVE_${HEADER_CONST} ${HEADER} PATHS ${${NAME}_INCLUDEDIR})
+        mark_as_advanced(${NAME}_FOUND)
+        message(STATUS "  Found '${${NAME}_FOUND}'")
+
+        set(${NAME}_INCLUDES "")
+        foreach(PATH IN_LIST CMAKE_PREFIX_PATHS)
+            if(LIB${LIB} MATCHES "^${PATH}")
+                set(${NAME}_INCLUDES "${PATH}/include")
+                break()
+            endif()
+        endforeach()
+
+        add_library(Imported::${NAME} INTERFACE IMPORTED)
+        set_target_properties(Imported::${NAME} PROPERTIES
+                INTERFACE_INCLUDE_DIRECTORIES "${${NAME}_INCLUDES}"
+                INTERFACE_LINK_LIBRARIES ${${NAME}_FOUND})
+
+        set(${NAME} Imported::${NAME} CACHE INTERNAL "${NAME} import target")
+        set(${HAVE} 1 CACHE INTERNAL "${HAVE}")
+        return()
     endif()
+
+    message(STATUS "  Not found")
 endfunction()