From cd77f71e99aefa5bd57ffc91bc36de26f390af6b Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Thu, 15 Aug 2019 12:56:15 -0600 Subject: [PATCH 1/6] cmake: add version check for kim-api --- cmake/Modules/FindKIM-API.cmake | 28 +++++++++++++++++++++++++++- cmake/Modules/Packages/KIM.cmake | 4 ++-- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/cmake/Modules/FindKIM-API.cmake b/cmake/Modules/FindKIM-API.cmake index 5108b0f98c..4185d1ac5a 100644 --- a/cmake/Modules/FindKIM-API.cmake +++ b/cmake/Modules/FindKIM-API.cmake @@ -37,6 +37,26 @@ # KIM-API-CMAKE_Fortran_COMPILER # +function(_KIMAPI_GET_VERSION _OUT_ver _version_hdr) + if(NOT EXISTS ${_version_hdr}) + message(FATAL_ERROR "Header file ${_version_hdr} not found (check value of KIM-API_INCLUDE_DIR)") + endif() + foreach(_var KIM_VERSION_MAJOR KIM_VERSION_MINOR KIM_VERSION_PATCH) + file(STRINGS ${_version_hdr} _contents REGEX "#define ${_var}[ \t]+") + if(_contents) + string(REGEX REPLACE ".*#define ${_var}[ \t]+([0-9.]+).*" "\\1" _${_var} "${_contents}") + if(NOT ${_${_var}}) + message(FATAL_ERROR "Version parsing failed for ${_var} in ${_version_hdr}, got empty return!") + elseif(NOT ${_${_var}} MATCHES "^[0-9]+$") + message(FATAL_ERROR "Version parsing failed for ${_var} in ${_version_hdr}, excepted a number but got ${_${_var}}!") + endif() + else() + message(FATAL_ERROR "No ${_var} line found in include file ${_version_hdr}") + endif() + endforeach() + set(${_OUT_ver} ${_KIM_VERSION_MAJOR}.${_KIM_VERSION_MINOR}.${_KIM_VERSION_PATCH} PARENT_SCOPE) +endfunction() + if(KIM-API_FIND_QUIETLY) set(REQ_OR_QUI "QUIET") else() @@ -54,6 +74,12 @@ if(KIM-API_FOUND) pkg_get_variable(KIM-API_CMAKE_Fortran_COMPILER libkim-api CMAKE_Fortran_COMPILER) endif() +if(KIM-API_INCLUDEDIR) + _KIMAPI_GET_VERSION(KIM-API_VERSION ${KIM-API_INCLUDEDIR}/KIM_Version.h) +else() + set(KIM-API_VERSION 0) +endif() + # handle the QUIETLY and REQUIRED arguments and set KIM-API_FOUND to TRUE # if all listed variables are TRUE -find_package_handle_standard_args(KIM-API REQUIRED_VARS KIM-API_LIBRARIES) +find_package_handle_standard_args(KIM-API REQUIRED_VARS KIM-API_LIBRARIES VERSION_VAR KIM-API_VERSION) diff --git a/cmake/Modules/Packages/KIM.cmake b/cmake/Modules/Packages/KIM.cmake index 31586bfbe0..259d8f057c 100644 --- a/cmake/Modules/Packages/KIM.cmake +++ b/cmake/Modules/Packages/KIM.cmake @@ -5,7 +5,7 @@ if(PKG_KIM) list(APPEND LAMMPS_LINK_LIBS ${CURL_LIBRARIES}) add_definitions(-DLMP_KIM_CURL) endif() - find_package(KIM-API QUIET) + find_package(KIM-API 2.1 QUIET) if(KIM-API_FOUND) set(DOWNLOAD_KIM_DEFAULT OFF) else() @@ -42,7 +42,7 @@ if(PKG_KIM) set(KIM-API_LDFLAGS ${INSTALL_DIR}/${CMAKE_INSTALL_LIBDIR}/libkim-api${CMAKE_SHARED_LIBRARY_SUFFIX}) list(APPEND LAMMPS_DEPS kim_build) else() - find_package(KIM-API REQUIRED) + find_package(KIM-API 2.1 REQUIRED) endif() list(APPEND LAMMPS_LINK_LIBS "${KIM-API_LDFLAGS}") include_directories(${KIM-API_INCLUDE_DIRS}) From 379fa2214711cff4f0531dcf2b8d61c34109aee5 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Fri, 16 Aug 2019 10:30:09 -0600 Subject: [PATCH 2/6] FindKIM-API.cmake: address Ryan's comments --- cmake/Modules/FindKIM-API.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/Modules/FindKIM-API.cmake b/cmake/Modules/FindKIM-API.cmake index 4185d1ac5a..17c195e62f 100644 --- a/cmake/Modules/FindKIM-API.cmake +++ b/cmake/Modules/FindKIM-API.cmake @@ -44,8 +44,8 @@ function(_KIMAPI_GET_VERSION _OUT_ver _version_hdr) foreach(_var KIM_VERSION_MAJOR KIM_VERSION_MINOR KIM_VERSION_PATCH) file(STRINGS ${_version_hdr} _contents REGEX "#define ${_var}[ \t]+") if(_contents) - string(REGEX REPLACE ".*#define ${_var}[ \t]+([0-9.]+).*" "\\1" _${_var} "${_contents}") - if(NOT ${_${_var}}) + string(REGEX REPLACE ".*#define ${_var}[ \t]+([0-9]+).*" "\\1" _${_var} "${_contents}") + if(${_${_var}} STREQUAL "") message(FATAL_ERROR "Version parsing failed for ${_var} in ${_version_hdr}, got empty return!") elseif(NOT ${_${_var}} MATCHES "^[0-9]+$") message(FATAL_ERROR "Version parsing failed for ${_var} in ${_version_hdr}, excepted a number but got ${_${_var}}!") From 2f531d0dab7d3bf373a79f3d7fa0197ceb1bfaa2 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Fri, 16 Aug 2019 12:05:20 -0600 Subject: [PATCH 3/6] Update FindKIM-API.cmake --- cmake/Modules/FindKIM-API.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Modules/FindKIM-API.cmake b/cmake/Modules/FindKIM-API.cmake index 17c195e62f..ac25e9ca64 100644 --- a/cmake/Modules/FindKIM-API.cmake +++ b/cmake/Modules/FindKIM-API.cmake @@ -77,7 +77,7 @@ endif() if(KIM-API_INCLUDEDIR) _KIMAPI_GET_VERSION(KIM-API_VERSION ${KIM-API_INCLUDEDIR}/KIM_Version.h) else() - set(KIM-API_VERSION 0) + message(FATAL_ERROR "KIM-API_INCLUDEDIR not defined") endif() # handle the QUIETLY and REQUIRED arguments and set KIM-API_FOUND to TRUE From 3a4e6c0dfda17e3d7e02fefffb738a0d405b704d Mon Sep 17 00:00:00 2001 From: "Ryan S. Elliott" Date: Sat, 17 Aug 2019 11:40:13 -0500 Subject: [PATCH 4/6] Revert "Update FindKIM-API.cmake" This reverts commit 2f531d0dab7d3bf373a79f3d7fa0197ceb1bfaa2. --- cmake/Modules/FindKIM-API.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Modules/FindKIM-API.cmake b/cmake/Modules/FindKIM-API.cmake index ac25e9ca64..17c195e62f 100644 --- a/cmake/Modules/FindKIM-API.cmake +++ b/cmake/Modules/FindKIM-API.cmake @@ -77,7 +77,7 @@ endif() if(KIM-API_INCLUDEDIR) _KIMAPI_GET_VERSION(KIM-API_VERSION ${KIM-API_INCLUDEDIR}/KIM_Version.h) else() - message(FATAL_ERROR "KIM-API_INCLUDEDIR not defined") + set(KIM-API_VERSION 0) endif() # handle the QUIETLY and REQUIRED arguments and set KIM-API_FOUND to TRUE From 5cee51204ccbf6eb79ec976cebf60e0db175f325 Mon Sep 17 00:00:00 2001 From: "Ryan S. Elliott" Date: Sat, 17 Aug 2019 12:04:00 -0500 Subject: [PATCH 5/6] Adjust warnings for default kim download behavior settings --- cmake/Modules/Packages/KIM.cmake | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/cmake/Modules/Packages/KIM.cmake b/cmake/Modules/Packages/KIM.cmake index 259d8f057c..40811c610d 100644 --- a/cmake/Modules/Packages/KIM.cmake +++ b/cmake/Modules/Packages/KIM.cmake @@ -1,16 +1,24 @@ if(PKG_KIM) + set(KIM-API_MIN_VERSION 2.1) find_package(CURL) if(CURL_FOUND) include_directories(${CURL_INCLUDE_DIRS}) list(APPEND LAMMPS_LINK_LIBS ${CURL_LIBRARIES}) add_definitions(-DLMP_KIM_CURL) endif() - find_package(KIM-API 2.1 QUIET) + find_package(KIM-API QUIET) if(KIM-API_FOUND) - set(DOWNLOAD_KIM_DEFAULT OFF) + if (KIM-API_VERSION VERSION_LESS ${KIM-API_MIN_VERSION}) + if ("${DOWNLOAD_KIM}" STREQUAL "") + message(WARNING "Unsuitable KIM-API version \"${KIM-API_VERSION}\" found, but required is at least \"${KIM-API_MIN_VERSION}\". Default behavior set to download and build our own.") + endif() + set(DOWNLOAD_KIM_DEFAULT ON) + else() + set(DOWNLOAD_KIM_DEFAULT OFF) + endif() else() - if (NOT DOWNLOAD_KIM) - message(WARNING "KIM-API package not found. We will download and build our own") + if ("${DOWNLOAD_KIM}" STREQUAL "") + message(WARNING "KIM-API package not found. Default behaivor set to download and build our own") endif() set(DOWNLOAD_KIM_DEFAULT ON) endif() @@ -42,7 +50,7 @@ if(PKG_KIM) set(KIM-API_LDFLAGS ${INSTALL_DIR}/${CMAKE_INSTALL_LIBDIR}/libkim-api${CMAKE_SHARED_LIBRARY_SUFFIX}) list(APPEND LAMMPS_DEPS kim_build) else() - find_package(KIM-API 2.1 REQUIRED) + find_package(KIM-API ${KIM-API_MIN_VERSION} REQUIRED) endif() list(APPEND LAMMPS_LINK_LIBS "${KIM-API_LDFLAGS}") include_directories(${KIM-API_INCLUDE_DIRS}) From 364ccf6361fe4b137434c9058567aebf27d672bc Mon Sep 17 00:00:00 2001 From: Richard Berger Date: Wed, 4 Sep 2019 16:26:03 -0400 Subject: [PATCH 6/6] Fix typo --- cmake/Modules/Packages/KIM.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Modules/Packages/KIM.cmake b/cmake/Modules/Packages/KIM.cmake index 40811c610d..9305ccd6da 100644 --- a/cmake/Modules/Packages/KIM.cmake +++ b/cmake/Modules/Packages/KIM.cmake @@ -18,7 +18,7 @@ if(PKG_KIM) endif() else() if ("${DOWNLOAD_KIM}" STREQUAL "") - message(WARNING "KIM-API package not found. Default behaivor set to download and build our own") + message(WARNING "KIM-API package not found. Default behavior set to download and build our own") endif() set(DOWNLOAD_KIM_DEFAULT ON) endif()