more cleanup
[m6w6/libmemcached] / CMake / CheckDependency.cmake
1 find_package(PkgConfig)
2
3 function(check_dependency NAME LIB)
4 make_have_identifier(${NAME} HAVE)
5 configure_define(${HAVE})
6
7 if(PKG_CONFIG_FOUND)
8 pkg_check_modules(${NAME} lib${LIB}${ARGN} IMPORTED_TARGET)
9 if(NOT ${NAME}_FOUND)
10 pkg_check_modules(${NAME} ${LIB}${ARGN} IMPORTED_TARGET)
11 endif()
12 if(${NAME}_FOUND)
13 set(${NAME} PkgConfig::${NAME} CACHE INTERNAL "${NAME} import target")
14 set(${HAVE} 1 CACHE INTERNAL "${HAVE}")
15 return()
16 endif()
17 endif()
18
19 message(STATUS "Checking for library '${LIB}' ...")
20 find_library(${NAME}_FOUND NAMES ${LIB} ${ARGN})
21 if(${NAME}_FOUND)
22 mark_as_advanced(${NAME}_FOUND)
23 message(STATUS " Found '${${NAME}_FOUND}'")
24
25 set(${NAME}_INCLUDES "")
26 foreach(PATH IN_LIST CMAKE_PREFIX_PATHS)
27 if(LIB${LIB} MATCHES "^${PATH}")
28 set(${NAME}_INCLUDES "${PATH}/include")
29 break()
30 endif()
31 endforeach()
32
33 add_library(Imported::${NAME} INTERFACE IMPORTED)
34 set_target_properties(Imported::${NAME} PROPERTIES
35 INTERFACE_INCLUDE_DIRECTORIES "${${NAME}_INCLUDES}"
36 INTERFACE_LINK_LIBRARIES ${${NAME}_FOUND})
37
38 set(${NAME} Imported::${NAME} CACHE INTERNAL "${NAME} import target")
39 set(${HAVE} 1 CACHE INTERNAL "${HAVE}")
40 return()
41 endif()
42
43 message(STATUS " Not found")
44 endfunction()