f78390b4044fd8b6b9114a9e0bac501f82fc62e4
[m6w6/libmemcached] / CMake / CheckDependency.cmake
1 find_package(PkgConfig)
2
3 include(SafeString)
4 include(CheckHeader)
5
6 function(check_dependency NAME LIB HEADER)
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} PARENT_SCOPE)
14 endif()
15 endif()
16 if(NOT ${NAME}_FOUND)
17 set(FOUND 1)
18 message(STATUS "Checking for library '${LIB}' with header '${HEADER}' ...")
19 find_library(LIB${LIB} NAMES ${LIB})
20 if(NOT LIB${LIB})
21 set(FOUND 0)
22 endif()
23 if(HEADER)
24 safe_string(${HEADER} HEADER_CONST)
25 check_header(${HEADER})
26 if(NOT HAVE_${HEADER_CONST})
27 set(FOUND 0)
28 else()
29 find_path(${HEADER_CONST}_ROOT ${HEADER})
30 if(NOT ${HEADER_CONST}_ROOT)
31 set(FOUND 0)
32 endif()
33 endif()
34 endif()
35 if(FOUND)
36 message(STATUS " Found library '${LIB${LIB}}'")
37 message(STATUS " Found include '${${HEADER_CONST}_ROOT}'")
38 set(${NAME} Imported::${NAME} PARENT_SCOPE)
39 add_library(Imported::${NAME} INTERFACE IMPORTED)
40 set_target_properties(Imported::${NAME} PROPERTIES
41 INTERFACE_INCLUDE_DIRECTORIES ${${HEADER_CONST}_ROOT}
42 INTERFACE_LINK_LIBRARIES ${LIB${LIB}})
43 else()
44 message("-- No library '${LIB}' found")
45 endif()
46 set(${NAME}_FOUND ${FOUND})
47 endif()
48
49 set(HAVE_${NAME} ${${NAME}_FOUND} PARENT_SCOPE)
50 if(${NAME}_FOUND)
51 safe_string(${HEADER} HEADER_CONST)
52 find_path(HAVE_${HEADER_CONST} ${HEADER} PATHS ${${NAME}_INCLUDEDIR})
53 endif()
54 endfunction()