From 52ff15de0e1bd2366fd1346d75e76c6c083c04d7 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Mon, 26 Apr 2021 11:26:11 +0800 Subject: [PATCH] cmake/modules/Findpmem: always set pmem_VERSION_STRING before this change, `pmem_VERSION_STRING` is not set if it is not able to fulfill the specified version requirement. the intention was to check if the version is able to satisfy the requirement. but actually, passing an empty `pmem_VERSION_STRING` to `find_package_handle_standard_args()` as the option of `VERSION_VAR` does not fail this check. on the contrary, it prints -- Found pmem: pmem_pmemobj_INCLUDE_DIR;pmem_pmem_INCLUDE_DIR (Required is at least version "1.17") if we requires pmem 1.17, while the found version is, for instance, 1.10. if the required version is 1.7, and the found version is 1.10, the output from cmake is: -- Found pmem: pmem_pmemobj_INCLUDE_DIR;pmem_pmem_INCLUDE_DIR (found suitable version "1.10", minimum required is "1.7") in this change, the version spec is not specified when calling `pkg_check_modules()`. so, `PKG_${component}_VERSION` is always set. and we can always delegate the version checking to `find_package_handle_standard_args()`. please note, we use the lower version returned by pkg-config if multiple components are required and both pkg-config settings return their versions. Signed-off-by: Kefu Chai (cherry picked from commit ad85af2ef8b76481adc0d1500033cd5094b8f21e) Conflicts: cmake/modules/Findpmem.cmake <<<<<<< HEAD ======= pkg_check_modules(PKG_${component} QUIET "lib${component}") if(NOT pmem_VERSION_STRING OR PKG_${component}_VERSION VERSION_LESS pmem_VERSION_STRING) set(pmem_VERSION_STRING ${PKG_${component}_VERSION}) endif() find_path(pmem_${component}_INCLUDE_DIR NAMES lib${component}.h HINTS ${PKG_${component}_INCLUDE_DIRS}) find_library(pmem_${component}_LIBRARY NAMES ${component} HINTS ${PKG_${component}_LIBRARY_DIRS}) >>>>>>> ad85af2ef8b (cmake/modules/Findpmem: always set pmem_VERSION_STRING) --- cmake/modules/Findpmem.cmake | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/cmake/modules/Findpmem.cmake b/cmake/modules/Findpmem.cmake index b30d9ae6bbbb..9c8e21b91887 100644 --- a/cmake/modules/Findpmem.cmake +++ b/cmake/modules/Findpmem.cmake @@ -14,6 +14,16 @@ foreach(component pmem ${pmem_FIND_COMPONENTS}) else() message(FATAL_ERROR "unknown libpmem component: ${component}") endif() + pkg_check_modules(PKG_${component} QUIET "lib${component}") + if(NOT pmem_VERSION_STRING OR PKG_${component}_VERSION VERSION_LESS pmem_VERSION_STRING) + set(pmem_VERSION_STRING ${PKG_${component}_VERSION}) + endif() + find_path(pmem_${component}_INCLUDE_DIR + NAMES lib${component}.h + HINTS ${PKG_${component}_INCLUDE_DIRS}) + find_library(pmem_${component}_LIBRARY + NAMES ${component} + HINTS ${PKG_${component}_LIBRARY_DIRS}) mark_as_advanced( pmem_${component}_INCLUDE_DIR pmem_${component}_LIBRARY) -- 2.47.3