This commit is contained in:
Ye Luo 2020-10-11 02:16:46 -05:00
parent 449fcf0b4a
commit e4beae16fc
2 changed files with 24 additions and 18 deletions

View File

@ -252,27 +252,22 @@ qe_install_targets(qe_elpa)
###########################################################
if(QE_ENABLE_ELPA)
find_package(ELPA REQUIRED)
string(REGEX MATCH "elpa-[0-9][0-9][0-9][0-9]" CMAKE_MATCH_ELPA_VER "${ELPA_INCLUDE_DIRS}")
string(REGEX MATCH "[0-9][0-9][0-9][0-9]" CMAKE_MATCH_ONLY_VER "${CMAKE_MATCH_ELPA_VER}")
# Check if ELPA version is compatible with QE
if(CMAKE_MATCH_ONLY_VER EQUAL "2018" OR
CMAKE_MATCH_ONLY_VER EQUAL "2017" OR
CMAKE_MATCH_ONLY_VER EQUAL "2016")
qe_add_global_compile_definitions(__ELPA_2016)
elseif(CMAKE_MATCH_ONLY_VER EQUAL "2015")
qe_add_global_compile_definitions(__ELPA_2015)
elseif(CMAKE_MATCH_ONLY_VER LESS "2015")
if(ELPA_VERSION_STRING VERSION_GREATER_EQUAL "2018.11")
qe_add_global_compile_definitions(__ELPA)
elseif(ELPA_VERSION_STRING VERSION_GREATER_EQUAL "2016.11")
qe_add_global_compile_definitions(__ELPA_2016)
elseif(ELPA_VERSION_STRING VERSION_GREATER_EQUAL "2015")
qe_add_global_compile_definitions(__ELPA_2015)
else()
message(FATAL_ERROR "ELPA ver. ${CMAKE_MATCH_ONLY_VER} is not supported.")
message(FATAL_ERROR "ELPA verion ${ELPA_VERSION_STRING} is not supported.")
endif()
# Looking for module directory
file(GLOB_RECURSE ELPA_MODS "${ELPA_INCLUDE_DIRS}/*.mod")
list(GET ELPA_MODS 0 ELPA_MOD)
if(EXISTS ${ELPA_MOD})
file(GLOB_RECURSE ELPA_MODS_FILES "${ELPA_INCLUDE_DIRS}/*.mod" "${ELPA_INCLUDE_DIRS}/../modules/*.mod")
if(ELPA_MODS_FILES)
list(GET ELPA_MODS_FILES 0 ELPA_MOD)
get_filename_component(ELPA_MOD_DIR "${ELPA_MOD}" PATH)
set(ELPA_INCLUDE_DIRS "${ELPA_MOD_DIR};${ELPA_INCLUDE_DIRS}")
else()

View File

@ -198,6 +198,10 @@ if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT ELPA_FOUND) OR
NAMES elpa.h
HINTS ${ELPA_DIR}
PATH_SUFFIXES "include" "include/elpa")
if(NOT ELPA_elpa.h_DIRS)
file(GLOB ELPA_elpa.h_PATH "${ELPA_DIR}/include/elpa-20*/elpa/elpa.h")
get_filename_component(ELPA_elpa.h_DIRS "${ELPA_elpa.h_PATH}" PATH)
endif()
else()
set(ELPA_elpa.h_DIRS "ELPA_elpa.h_DIRS-NOTFOUND")
find_path(ELPA_elpa.h_DIRS
@ -210,6 +214,7 @@ if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT ELPA_FOUND) OR
# If found, add path to cmake variable
# ------------------------------------
if (ELPA_elpa.h_DIRS)
message(STATUS "elpa.h found in ${ELPA_elpa.h_DIRS}")
set(ELPA_INCLUDE_DIRS "${ELPA_elpa.h_DIRS}")
else ()
set(ELPA_INCLUDE_DIRS "ELPA_INCLUDE_DIRS-NOTFOUND")
@ -218,6 +223,12 @@ if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT ELPA_FOUND) OR
endif()
endif()
# If not defined, guess the version string
if(NOT ELPA_VERSION_STRING)
string(REGEX MATCH "elpa-20[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9][0-9]" CMAKE_MATCH_ELPA_VER "${ELPA_INCLUDE_DIRS}")
string(REGEX MATCH "20[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9][0-9]" ELPA_VERSION_STRING "${CMAKE_MATCH_ELPA_VER}")
message(status "ELPA version ${ELPA_VERSION_STRING}")
endif()
# Looking for lib
# ---------------
@ -354,7 +365,7 @@ if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT ELPA_FOUND) OR
# test link
unset(ELPA_WORKS CACHE)
include(CheckFunctionExists)
check_function_exists(elpa_dgetrf ELPA_WORKS)
check_function_exists(elpa_init ELPA_WORKS)
mark_as_advanced(ELPA_WORKS)
if(ELPA_WORKS)
@ -368,7 +379,7 @@ if( (NOT PKG_CONFIG_EXECUTABLE) OR (PKG_CONFIG_EXECUTABLE AND NOT ELPA_FOUND) OR
list(REMOVE_DUPLICATES ELPA_LINKER_FLAGS)
else()
if(NOT ELPA_FIND_QUIETLY)
message(STATUS "Looking for elpa : test of elpa_dgetrf with
message(STATUS "Looking for elpa : test of elpa_init with
elpa, cblas, cuda and lapack libraries fails")
message(STATUS "CMAKE_REQUIRED_LIBRARIES: ${CMAKE_REQUIRED_LIBRARIES}")
message(STATUS "CMAKE_REQUIRED_INCLUDES: ${CMAKE_REQUIRED_INCLUDES}")
@ -413,4 +424,4 @@ else()
find_package_handle_standard_args(ELPA DEFAULT_MSG
ELPA_LIBRARIES
ELPA_WORKS)
endif()
endif()