mirror of https://gitlab.com/QEF/q-e.git
Added CMake finder for external libraries
This commit is contained in:
parent
a7abbe586e
commit
ed144104cf
|
@ -112,6 +112,14 @@ set(QE_FFTW_VENDOR "AUTO" CACHE
|
|||
STRING "select a specific FFTW library [Intel_DFTI, Intel_FFTW3, ArmPL, IBMESSL, FFTW3, Internal]")
|
||||
set(QE_ENABLE_SANITIZER "none" CACHE STRING "none,asan,ubsan,tsan,msan")
|
||||
set(QE_ENABLE_PLUGINS "" CACHE STRING "Semicolon-separated list of plugins")
|
||||
option(QE_FOX_VENDOR
|
||||
"enable FoX vendoring" ON)
|
||||
option(QE_WANNIER90_VENDOR
|
||||
"enable Wannier90 vendoring" ON)
|
||||
option(QE_MBD_VENDOR
|
||||
"enable LibMBD vendoring" ON)
|
||||
option(QE_DEVICEXLIB_VENDOR
|
||||
"enable DeviceXlib vendoring" ON)
|
||||
|
||||
# TODO change all ifdefs throughout code base to match
|
||||
# cmake options
|
||||
|
|
|
@ -0,0 +1,69 @@
|
|||
#[=======================================================================[.rst:
|
||||
FindDEVICEXLIB
|
||||
----------
|
||||
|
||||
Find DEVICEXLIB library
|
||||
|
||||
This module finds an installed DeviceXlib library.
|
||||
|
||||
Input Variables
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
The following variables may be set to influence this module's behavior:
|
||||
|
||||
``DEVICEXLIB_ROOT``
|
||||
The path to the installation folder of DeviceXlib library
|
||||
|
||||
Imported targets
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
This module defines the following :prop_tgt:`IMPORTED` targets:
|
||||
|
||||
``DeviceXlib::DeviceXlib``
|
||||
|
||||
Result Variables
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
This module will set the following variables in your project:
|
||||
|
||||
``DEVICEXLIB_FOUND``
|
||||
DeviceXlib is found
|
||||
``DEVICEXLIB_LIBRARIES``
|
||||
the libraries needed to use DeviceXlib.
|
||||
``DEVICEXLIB_INCLUDE_DIRS``
|
||||
where to find modules and headers for DeviceXlib
|
||||
|
||||
#]=======================================================================]
|
||||
|
||||
find_library(
|
||||
DEVICEXLIB_LIBRARIES
|
||||
NAMES "devXlib"
|
||||
HINTS ${DEVICEXLIB_ROOT}
|
||||
PATH_SUFFIXES
|
||||
"lib"
|
||||
"src")
|
||||
|
||||
find_path(
|
||||
DEVICEXLIB_INCLUDE_DIRS
|
||||
NAMES "device_fbuff_m.mod"
|
||||
HINTS ${DEVICEXLIB_ROOT}
|
||||
PATH_SUFFIXES
|
||||
"include"
|
||||
"finclude"
|
||||
"mod"
|
||||
"module"
|
||||
"modules"
|
||||
"src")
|
||||
|
||||
find_package_handle_standard_args(DEVICEXLIB
|
||||
REQUIRED_VARS
|
||||
DEVICEXLIB_LIBRARIES
|
||||
DEVICEXLIB_INCLUDE_DIRS)
|
||||
|
||||
if(DEVICEXLIB_FOUND)
|
||||
add_library(DeviceXlib::DeviceXlib INTERFACE IMPORTED)
|
||||
target_link_libraries(DeviceXlib::DeviceXlib
|
||||
INTERFACE ${DEVICEXLIB_LIBRARIES})
|
||||
target_include_directories(DeviceXlib::DeviceXlib
|
||||
INTERFACE ${DEVICEXLIB_INCLUDE_DIRS})
|
||||
endif()
|
|
@ -0,0 +1,153 @@
|
|||
#[=======================================================================[.rst:
|
||||
FindFoX
|
||||
----------
|
||||
|
||||
Find FoX library
|
||||
|
||||
This module finds an installed FoX library.
|
||||
|
||||
Input Variables
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
The following variables may be set to influence this module's behavior:
|
||||
|
||||
``FOX_ROOT``
|
||||
The path to the installation folder of FoX library
|
||||
|
||||
Imported targets
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
This module defines the following :prop_tgt:`IMPORTED` targets:
|
||||
|
||||
``FoX::FoX``
|
||||
``FoX::DOM``
|
||||
``FoX::SAX``
|
||||
``FoX::WXML``
|
||||
``FoX::Common``
|
||||
``FoX::Utils``
|
||||
``FoX::FSys``
|
||||
|
||||
Result Variables
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
This module will set the following variables in your project:
|
||||
|
||||
``FOX_FOUND``
|
||||
FoX is found
|
||||
``FOX_LIBRARIES``
|
||||
the libraries needed to use FoX.
|
||||
``FOX_INCLUDE_DIRS``
|
||||
where to find modules and headers for FoX
|
||||
``FOX_DOM_LIB``
|
||||
DOM interface of FoX
|
||||
``FOX_SAX_LIB``
|
||||
SAX interface of FoX
|
||||
``FOX_WXML_LIB``
|
||||
VoiceXML interface of FoX
|
||||
``FOX_COMMON_LIB``
|
||||
Interface for common functions of FoX
|
||||
``FOX_UTILS_LIB``
|
||||
Interface for util functions of FoX
|
||||
``FOX_FSYS_LIB``
|
||||
Interface for file system functions of FoX
|
||||
|
||||
#]=======================================================================]
|
||||
|
||||
find_library(
|
||||
FOX_DOM_LIB
|
||||
NAMES "FoX_dom"
|
||||
HINTS ${FOX_ROOT}
|
||||
PATH_SUFFIXES "lib")
|
||||
|
||||
find_library(
|
||||
FOX_SAX_LIB
|
||||
NAMES "FoX_sax"
|
||||
HINTS ${FOX_ROOT}
|
||||
PATH_SUFFIXES "lib")
|
||||
|
||||
find_library(
|
||||
FOX_WXML_LIB
|
||||
NAMES "FoX_wxml"
|
||||
HINTS ${FOX_ROOT}
|
||||
PATH_SUFFIXES "lib")
|
||||
|
||||
find_library(
|
||||
FOX_COMMON_LIB
|
||||
NAMES "FoX_common"
|
||||
HINTS ${FOX_ROOT}
|
||||
PATH_SUFFIXES "lib")
|
||||
|
||||
find_library(
|
||||
FOX_UTILS_LIB
|
||||
NAMES "FoX_utils"
|
||||
HINTS ${FOX_ROOT}
|
||||
PATH_SUFFIXES "lib")
|
||||
|
||||
find_library(
|
||||
FOX_FSYS_LIB
|
||||
NAMES "FoX_fsys"
|
||||
HINTS ${FOX_ROOT}
|
||||
PATH_SUFFIXES "lib")
|
||||
|
||||
set(FOX_LIBRARIES
|
||||
${FOX_DOM_LIB}
|
||||
${FOX_SAX_LIB}
|
||||
${FOX_WXML_LIB}
|
||||
${FOX_COMMON_LIB}
|
||||
${FOX_UTILS_LIB}
|
||||
${FOX_FSYS_LIB})
|
||||
|
||||
find_path(
|
||||
FOX_INCLUDE_DIRS
|
||||
NAMES "m_common_io.mod"
|
||||
HINTS ${FOX_ROOT}
|
||||
PATH_SUFFIXES
|
||||
"include"
|
||||
"finclude"
|
||||
"mod"
|
||||
"module"
|
||||
"modules")
|
||||
|
||||
find_package_handle_standard_args(FOX
|
||||
REQUIRED_VARS
|
||||
FOX_LIBRARIES
|
||||
FOX_DOM_LIB
|
||||
FOX_SAX_LIB
|
||||
FOX_WXML_LIB
|
||||
FOX_COMMON_LIB
|
||||
FOX_UTILS_LIB
|
||||
FOX_FSYS_LIB
|
||||
FOX_INCLUDE_DIRS)
|
||||
|
||||
if(FOX_FOUND)
|
||||
add_library(FoX::FoX INTERFACE IMPORTED)
|
||||
add_library(FoX::DOM INTERFACE IMPORTED)
|
||||
add_library(FoX::SAX INTERFACE IMPORTED)
|
||||
add_library(FoX::WXML INTERFACE IMPORTED)
|
||||
add_library(FoX::Common INTERFACE IMPORTED)
|
||||
add_library(FoX::Utils INTERFACE IMPORTED)
|
||||
add_library(FoX::FSys INTERFACE IMPORTED)
|
||||
|
||||
target_link_libraries(FoX::FoX
|
||||
INTERFACE
|
||||
FoX::DOM
|
||||
FoX::SAX
|
||||
FoX::WXML
|
||||
FoX::Common
|
||||
FoX::Utils
|
||||
FoX::FSys)
|
||||
|
||||
target_link_libraries(FoX::DOM INTERFACE ${FOX_DOM_LIB})
|
||||
target_link_libraries(FoX::SAX INTERFACE ${FOX_SAX_LIB})
|
||||
target_link_libraries(FoX::WXML INTERFACE ${FOX_WXML_LIB})
|
||||
target_link_libraries(FoX::Common INTERFACE ${FOX_COMMON_LIB})
|
||||
target_link_libraries(FoX::Utils INTERFACE ${FOX_UTILS_LIB})
|
||||
target_link_libraries(FoX::FSys INTERFACE ${FOX_FSYS_LIB})
|
||||
|
||||
target_include_directories(FoX::DOM INTERFACE ${FOX_INCLUDE_DIRS})
|
||||
target_include_directories(FoX::SAX INTERFACE ${FOX_INCLUDE_DIRS})
|
||||
target_include_directories(FoX::WXML INTERFACE ${FOX_INCLUDE_DIRS})
|
||||
target_include_directories(FoX::Common INTERFACE ${FOX_INCLUDE_DIRS})
|
||||
target_include_directories(FoX::Utils INTERFACE ${FOX_INCLUDE_DIRS})
|
||||
target_include_directories(FoX::FSys INTERFACE ${FOX_INCLUDE_DIRS})
|
||||
endif()
|
|
@ -0,0 +1,67 @@
|
|||
#[=======================================================================[.rst:
|
||||
FindMBD
|
||||
----------
|
||||
|
||||
Find MBD library
|
||||
|
||||
This module finds an installed MBD library.
|
||||
|
||||
Input Variables
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
The following variables may be set to influence this module's behavior:
|
||||
|
||||
``MBD_ROOT``
|
||||
The path to the installation folder of MBD library
|
||||
|
||||
Imported targets
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
This module defines the following :prop_tgt:`IMPORTED` targets:
|
||||
|
||||
``MBD::MBD``
|
||||
|
||||
Result Variables
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
This module will set the following variables in your project:
|
||||
|
||||
``MBD_FOUND``
|
||||
MBD is found
|
||||
``MBD_LIBRARIES``
|
||||
the libraries needed to use MBD.
|
||||
``MBD_INCLUDE_DIRS``
|
||||
where to find modules and headers for MBD
|
||||
|
||||
#]=======================================================================]
|
||||
|
||||
find_library(
|
||||
MBD_LIBRARIES
|
||||
NAMES "mbd"
|
||||
HINTS ${MBD_ROOT}
|
||||
PATH_SUFFIXES "lib")
|
||||
|
||||
find_path(
|
||||
MBD_INCLUDE_DIRS
|
||||
NAMES "mbd.mod"
|
||||
HINTS ${MBD_ROOT}
|
||||
PATH_SUFFIXES
|
||||
"mbd"
|
||||
"include"
|
||||
"finclude"
|
||||
"mod"
|
||||
"module"
|
||||
"modules")
|
||||
|
||||
find_package_handle_standard_args(MBD
|
||||
REQUIRED_VARS
|
||||
MBD_LIBRARIES
|
||||
MBD_INCLUDE_DIRS)
|
||||
|
||||
if(MBD_FOUND)
|
||||
add_library(MBD::MBD INTERFACE IMPORTED)
|
||||
target_link_libraries(MBD::MBD
|
||||
INTERFACE ${MBD_LIBRARIES})
|
||||
target_include_directories(MBD::MBD
|
||||
INTERFACE ${MBD_INCLUDE_DIRS})
|
||||
endif()
|
|
@ -0,0 +1,67 @@
|
|||
#[=======================================================================[.rst:
|
||||
FindWannier90
|
||||
----------
|
||||
|
||||
Find Wannier90 library
|
||||
|
||||
This module finds an installed Wannier90 library.
|
||||
|
||||
Input Variables
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
The following variables may be set to influence this module's behavior:
|
||||
|
||||
``WANNIER90_ROOT``
|
||||
The path to the installation folder of Wannier90 library
|
||||
|
||||
Imported targets
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
This module defines the following :prop_tgt:`IMPORTED` targets:
|
||||
|
||||
``Wannier90::Wannier90``
|
||||
|
||||
Result Variables
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
This module will set the following variables in your project:
|
||||
|
||||
``WANNIER90_FOUND``
|
||||
Wannier90 is found
|
||||
``WANNIER90_LIBRARIES``
|
||||
the libraries needed to use Wannier90.
|
||||
``WANNIER90_INCLUDE_DIRS``
|
||||
where to find modules and headers for Wannier90
|
||||
|
||||
#]=======================================================================]
|
||||
|
||||
find_library(
|
||||
WANNIER90_LIBRARIES
|
||||
NAMES "wannier"
|
||||
HINTS ${WANNIER90_ROOT}
|
||||
PATH_SUFFIXES "lib")
|
||||
|
||||
find_path(
|
||||
WANNIER90_INCLUDE_DIRS
|
||||
NAMES "w90_io.mod"
|
||||
HINTS ${WANNIER90_ROOT}
|
||||
PATH_SUFFIXES
|
||||
"wannier90"
|
||||
"include"
|
||||
"finclude"
|
||||
"mod"
|
||||
"module"
|
||||
"modules")
|
||||
|
||||
find_package_handle_standard_args(WANNIER90
|
||||
REQUIRED_VARS
|
||||
WANNIER90_LIBRARIES
|
||||
WANNIER90_INCLUDE_DIRS)
|
||||
|
||||
if(WANNIER90_FOUND)
|
||||
add_library(Wannier90::Wannier90 INTERFACE IMPORTED)
|
||||
target_link_libraries(Wannier90::Wannier90
|
||||
INTERFACE ${WANNIER90_LIBRARIES})
|
||||
target_include_directories(Wannier90::Wannier90
|
||||
INTERFACE ${WANNIER90_INCLUDE_DIRS})
|
||||
endif()
|
|
@ -1,34 +1,7 @@
|
|||
###########################################################
|
||||
# DeviceXlib
|
||||
###########################################################
|
||||
if(DEVXLIB_ROOT)
|
||||
add_library(qe_devxlib INTERFACE)
|
||||
|
||||
find_library(
|
||||
DEVXLIB_LIB
|
||||
NAMES "devXlib"
|
||||
HINTS ${DEVXLIB_ROOT}
|
||||
PATH_SUFFIXES
|
||||
"lib"
|
||||
"src"
|
||||
REQUIRED)
|
||||
|
||||
find_path(
|
||||
DEVXLIB_INC
|
||||
NAMES "device_fbuff_m.mod"
|
||||
HINTS ${DEVXLIB_ROOT}
|
||||
PATH_SUFFIXES
|
||||
"include"
|
||||
"finclude"
|
||||
"mod"
|
||||
"module"
|
||||
"modules"
|
||||
"src"
|
||||
REQUIRED)
|
||||
|
||||
target_link_libraries(qe_devxlib INTERFACE ${DEVXLIB_LIB})
|
||||
target_include_directories(qe_devxlib INTERFACE ${DEVXLIB_INC})
|
||||
else()
|
||||
if(QE_DEVICEXLIB_VENDOR)
|
||||
qe_git_submodule_update(external/devxlib)
|
||||
|
||||
set(src_devxlib
|
||||
|
@ -46,6 +19,10 @@ else()
|
|||
qe_add_library(qe_devxlib ${src_devxlib})
|
||||
|
||||
target_include_directories(qe_devxlib PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/devxlib/src")
|
||||
target_include_directories(qe_devxlib PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/devxlib/include")
|
||||
target_include_directories(qe_devxlib PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/devxlib/include")
|
||||
else()
|
||||
add_library(qe_devxlib INTERFACE)
|
||||
find_package(DeviceXlib REQUIRED)
|
||||
target_link_libraries(qe_devxlib INTERFACE DeviceXlib::DeviceXlib)
|
||||
endif()
|
||||
qe_install_targets(qe_devxlib)
|
||||
|
|
|
@ -3,71 +3,7 @@
|
|||
###########################################################
|
||||
add_library(qe_fox INTERFACE)
|
||||
qe_install_targets(qe_fox)
|
||||
if(FOX_ROOT)
|
||||
find_library(
|
||||
FOX_DOM_LIB
|
||||
NAMES "FoX_dom"
|
||||
HINTS ${FOX_ROOT}
|
||||
PATH_SUFFIXES "lib"
|
||||
REQUIRED)
|
||||
|
||||
find_library(
|
||||
FOX_SAX_LIB
|
||||
NAMES "FoX_sax"
|
||||
HINTS ${FOX_ROOT}
|
||||
PATH_SUFFIXES "lib"
|
||||
REQUIRED)
|
||||
|
||||
find_library(
|
||||
FOX_WXML_LIB
|
||||
NAMES "FoX_wxml"
|
||||
HINTS ${FOX_ROOT}
|
||||
PATH_SUFFIXES "lib"
|
||||
REQUIRED)
|
||||
|
||||
find_library(
|
||||
FOX_COMMON_LIB
|
||||
NAMES "FoX_common"
|
||||
HINTS ${FOX_ROOT}
|
||||
PATH_SUFFIXES "lib"
|
||||
REQUIRED)
|
||||
|
||||
find_library(
|
||||
FOX_UTILS_LIB
|
||||
NAMES "FoX_utils"
|
||||
HINTS ${FOX_ROOT}
|
||||
PATH_SUFFIXES "lib"
|
||||
REQUIRED)
|
||||
|
||||
find_library(
|
||||
FOX_FSYS_LIB
|
||||
NAMES "FoX_fsys"
|
||||
HINTS ${FOX_ROOT}
|
||||
PATH_SUFFIXES "lib"
|
||||
REQUIRED)
|
||||
|
||||
find_path(
|
||||
FOX_INC
|
||||
NAMES "m_common_io.mod"
|
||||
HINTS ${FOX_ROOT}
|
||||
PATH_SUFFIXES
|
||||
"include"
|
||||
"finclude"
|
||||
"mod"
|
||||
"module"
|
||||
"modules"
|
||||
REQUIRED)
|
||||
|
||||
target_link_libraries(qe_fox
|
||||
INTERFACE
|
||||
${FOX_DOM_LIB}
|
||||
${FOX_SAX_LIB}
|
||||
${FOX_WXML_LIB}
|
||||
${FOX_COMMON_LIB}
|
||||
${FOX_UTILS_LIB}
|
||||
${FOX_FSYS_LIB})
|
||||
target_include_directories(qe_fox INTERFACE ${FOX_INC})
|
||||
else()
|
||||
if(QE_FOX_VENDOR)
|
||||
message(STATUS "Installing FoX via submodule")
|
||||
set(fox_targets FoX_fsys FoX_utils FoX_common FoX_dom FoX_sax FoX_wxml)
|
||||
set(FoX_ENABLE_EXAMPLES
|
||||
|
@ -78,4 +14,7 @@ else()
|
|||
target_link_libraries(qe_fox INTERFACE ${fox_targets})
|
||||
qe_fix_fortran_modules(${fox_targets})
|
||||
qe_install_targets(${fox_targets})
|
||||
else()
|
||||
find_package(FoX REQUIRED)
|
||||
target_link_libraries(qe_fox INTERFACE FoX::FoX)
|
||||
endif()
|
||||
|
|
|
@ -3,30 +3,7 @@
|
|||
###########################################################
|
||||
add_library(qe_mbd INTERFACE)
|
||||
qe_install_targets(qe_mbd)
|
||||
if(MBD_ROOT)
|
||||
find_library(
|
||||
MBD_LIB
|
||||
NAMES "mbd"
|
||||
HINTS ${MBD_ROOT}
|
||||
PATH_SUFFIXES "lib"
|
||||
REQUIRED)
|
||||
|
||||
find_path(
|
||||
MBD_INC
|
||||
NAMES "mbd.mod"
|
||||
HINTS ${MBD_ROOT}
|
||||
PATH_SUFFIXES
|
||||
"mbd"
|
||||
"include"
|
||||
"finclude"
|
||||
"mod"
|
||||
"module"
|
||||
"modules"
|
||||
REQUIRED)
|
||||
|
||||
target_link_libraries(qe_mbd INTERFACE "${MBD_LIB}")
|
||||
target_include_directories(qe_mbd INTERFACE "${MBD_INC}")
|
||||
else()
|
||||
if(QE_MBD_VENDOR)
|
||||
message(STATUS "Installing MBD via submodule")
|
||||
qe_git_submodule_update(external/mbd)
|
||||
if(NOT BUILD_SHARED_LIBS)
|
||||
|
@ -40,4 +17,7 @@ else()
|
|||
unset(BUILD_SHARED_LIBS)
|
||||
endif()
|
||||
target_link_libraries(qe_mbd INTERFACE Mbd)
|
||||
else()
|
||||
find_package(MBD REQUIRED)
|
||||
target_link_libraries(qe_mbd INTERFACE MBD::MBD)
|
||||
endif()
|
||||
|
|
|
@ -1,34 +1,7 @@
|
|||
###########################################################
|
||||
# WANNIER90
|
||||
###########################################################
|
||||
if(WANNIER90_ROOT)
|
||||
add_library(qe_wannier90 INTERFACE)
|
||||
qe_install_targets(qe_wannier90)
|
||||
|
||||
find_library(
|
||||
WANNIER90_LIB
|
||||
NAMES "wannier"
|
||||
HINTS ${WANNIER90_ROOT}
|
||||
PATH_SUFFIXES "lib"
|
||||
REQUIRED)
|
||||
|
||||
find_path(
|
||||
WANNIER90_INC
|
||||
NAMES "w90_io.mod"
|
||||
HINTS ${WANNIER90_ROOT}
|
||||
PATH_SUFFIXES
|
||||
"wannier90"
|
||||
"include"
|
||||
"finclude"
|
||||
"mod"
|
||||
"module"
|
||||
"modules"
|
||||
REQUIRED)
|
||||
|
||||
target_link_libraries(qe_wannier90 INTERFACE "${WANNIER90_LIB}")
|
||||
target_include_directories(qe_wannier90 INTERFACE "${WANNIER90_INC}")
|
||||
else()
|
||||
|
||||
if(QE_WANNIER90_VENDOR)
|
||||
qe_git_submodule_update(external/wannier90)
|
||||
|
||||
set(sources
|
||||
|
@ -93,5 +66,9 @@ else()
|
|||
qe_wannier90
|
||||
# Executables
|
||||
qe_wannierprog_exe qe_w90chk2chk_exe qe_wannier90_postw90_exe)
|
||||
|
||||
else()
|
||||
add_library(qe_wannier90 INTERFACE)
|
||||
qe_install_targets(qe_wannier90)
|
||||
find_package(Wannier90 REQUIRED)
|
||||
target_link_libraries(qe_wannier90 INTERFACE Wannier90::Wannier90)
|
||||
endif()
|
||||
|
|
Loading…
Reference in New Issue