X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=CMake%2FCheckDependency.cmake;h=eec8d9b3a80fede9735a02ba618df9f4ae83bd56;hb=01c5e0ed8d3d9c72ea192792d1c49a50e756d635;hp=f78390b4044fd8b6b9114a9e0bac501f82fc62e4;hpb=a08ebebc7f7f2d86eb13151fb230cbfcd17dc090;p=m6w6%2Flibmemcached diff --git a/CMake/CheckDependency.cmake b/CMake/CheckDependency.cmake index f78390b4..eec8d9b3 100644 --- a/CMake/CheckDependency.cmake +++ b/CMake/CheckDependency.cmake @@ -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()