mirror of
https://code.it4i.cz/sccs/easyconfigs-it4i.git
synced 2025-04-07 23:42:12 +01:00
134 lines
6.6 KiB
Diff
134 lines
6.6 KiB
Diff
#
|
|
# Global architecture independent build settings
|
|
#
|
|
|
|
#set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Build type (Release|RelWithDebInfo|Debug|MinSizeRel)")
|
|
# CMAKE_BUILD_TYPE is commented out in order to allow for multi-configuration builds. It will
|
|
# automatically default to RelWithDebInfo if used in a single configuration build. Uncomment or
|
|
# override it only if you want a non-default single configuration build.
|
|
|
|
option(WITH_OMP "Whether OpenMP thread parallisation should be enabled" TRUE)
|
|
|
|
option(WITH_MPI "Whether DFTB+ should support MPI-parallelism" FALSE)
|
|
# If you build an MPI-parallised binary, consider to set WITH_OMP (OpenMP thread parallelisaton) to
|
|
# FALSE unless you want hybrid parallelisation (for experts only).
|
|
|
|
option(WITH_ELSI "Whether DFTB+ with MPI-parallelism should use the ELSI libraries" FALSE)
|
|
# Works only with MPI-parallel build.
|
|
|
|
option(WITH_GPU "Whether DFTB+ should support GPU-acceleration via the MAGMA-library" FALSE)
|
|
|
|
option(WITH_TRANSPORT "Whether transport via libNEGF should be included." TRUE)
|
|
# Works only when building static libraries (see option BUILD_SHARED_LIBS)
|
|
|
|
option(WITH_POISSON "Whether the Poisson-solver should be included" ${WITH_TRANSPORT})
|
|
# The Poisson-solver is mostly used in transport calculations only. Enable this option
|
|
# if you want to use it in a non-transport build. Note, the Poisson-solver is not
|
|
# multi-instance safe and is therefore not allowed, if WITH_API (see below) is on.
|
|
|
|
option(WITH_SOCKETS "Whether socket communication should be allowed for" FALSE)
|
|
|
|
option(WITH_ARPACK "Whether the ARPACK library should be included (needed for TD-DFTB)" TRUE)
|
|
# Works only with non-MPI (serial) build, needed for Casida linear response
|
|
|
|
option(WITH_DFTD3 "Whether the DFTD3 library should be included" TRUE)
|
|
# NOTE: Due to the license of the DFTD3 library, the combined code must be distributed under the
|
|
# GPLv3 license (as opposed to the LGPLv3 license of the DFTB+ package)
|
|
|
|
option(WITH_MBD "Whether DFTB+ should be built with many-body-dispersion support" FALSE)
|
|
|
|
option(WITH_PLUMED "Whether metadynamics via the PLUMED2 library should be allowed for" FALSE)
|
|
|
|
option(WITH_API "Whether public API should be included and the DFTB+ library installed" FALSE)
|
|
# Turn this on, if you want to use the DFTB+ library to integrate DFTB+ into other software
|
|
# packages. (Otherwise only a stripped down version of the library without the public API is built.)
|
|
# This will also install necessary include and module files and further libraries needed to link the
|
|
# DFTB+ library.
|
|
|
|
option(INSTANCE_SAFE_BUILD "Whether build should support concurrent DFTB+ instances" FALSE)
|
|
# Turn this on, if you want to create multiple concurrent DFTB+ instances **within one process** via
|
|
# the API. This option will ensure that only components without writable global variables are
|
|
# included in the build, so that multiple instances can safely coexist. There are components
|
|
# (e.g. Poisson, DFTD-D3, ARPACK) which can not be included if this option is on. Note, this option
|
|
# is not relevant for the standalone DFTB+ binary, only for the API (if WITH_API had been turned
|
|
# on).
|
|
|
|
option(WITH_PYTHON "Whether the Python components of DFTB+ should be tested and installed" TRUE)
|
|
|
|
option(BUILD_SHARED_LIBS "Whether the libraries built should be shared" FALSE)
|
|
# Turn this on, if the DFTB+ library (and other compiled libraries) should be shared libraries and
|
|
# dynamically linked to their applications. This results in smaller applications, but the libraries
|
|
# must be present at run-time (and the correct LD_LIBRARY_PATH environment variable must be set, so
|
|
# that they can be found by the operating system). If you want use the DFTB+ library from other
|
|
# software packages (see WITH_API option above), they may also require a shared library (e.g.
|
|
# calling DFTB+ functions from Python or Julia).
|
|
|
|
|
|
#
|
|
# Test environment settings
|
|
#
|
|
set(TEST_MPI_PROCS "1" CACHE STRING "Nr. of MPI processes used for testing")
|
|
|
|
set(TEST_OMP_THREADS "1" CACHE STRING "Nr. of OpenMP-threads used for testing")
|
|
|
|
# Command line used to launch the test code.
|
|
# The escaped variables (\${VARIABLE}) will be substituted by the corresponding CMake variables.
|
|
if(WITH_MPI)
|
|
set(TEST_RUNNER_TEMPLATE "env OMP_NUM_THREADS=\${TEST_OMP_THREADS} mpiexec -n \${TEST_MPI_PROCS}"
|
|
CACHE STRING "How to run the tests")
|
|
else()
|
|
set(TEST_RUNNER_TEMPLATE "env OMP_NUM_THREADS=\${TEST_OMP_THREADS}" CACHE STRING
|
|
"How to run the tests")
|
|
set(MODES_RUNNER_TEMPLATE "env OMP_NUM_THREADS=\${TEST_OMP_THREADS}" CACHE STRING
|
|
"How to run the modes code for tests")
|
|
endif()
|
|
|
|
# Turn it on to include the unit tests (needes FyTest)
|
|
option(WITH_UNIT_TESTS "Whether the unit tests should be built" FALSE)
|
|
|
|
|
|
#
|
|
# Installation options
|
|
#
|
|
set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/_install" CACHE STRING
|
|
"Directory to install the compiled code into")
|
|
|
|
set(INSTALL_INCLUDEDIR "dftbplus" CACHE PATH
|
|
"Name of the project specific sub-folder within the install folder for include files")
|
|
|
|
set(INSTALL_MODULEDIR "${INSTALL_INCLUDEDIR}/modfiles" CACHE PATH
|
|
"Installation directory for Fortran module files (within the install folder for include files)")
|
|
|
|
set(PKGCONFIG_LANGUAGE "Fortran" CACHE STRING
|
|
"Compiler and Linker language to assume when creating the pkg-config export file (C or Fortran)")
|
|
# The pkg-config export file (lib/pkgconfig/dftbplus.pc) contains the compiler and linker options
|
|
# needed to link the DFTB+ library to an application. (It can be queried with the pkg-config tool.)
|
|
# Depending on the language setting ("C" or "Fortran") you would get the flags for the case of using
|
|
# that compiler for the linking.
|
|
|
|
|
|
#
|
|
# Advanced options (e.g. for developers and packagers)
|
|
#
|
|
|
|
#set(TOOLCHAIN "gnu" CACHE STRING "Prefix of the toolchain file to be read from the sys/ folder")
|
|
# Uncomment and set it if you want to override the automatic, compiler based toolchain file
|
|
# selection.
|
|
|
|
|
|
set(HYBRID_CONFIG_METHODS "Submodule;Find;Fetch" CACHE STRING
|
|
"Configuration methods to try in order to satisfy hybrid dependencies")
|
|
#
|
|
# This list can be used to control how hybrid dependencies (external dependencies which can
|
|
# optionally be built during the build process) are configured. The listed methods are applied in
|
|
# the specified order. Following methods are available:
|
|
#
|
|
# Submodule: Use the source in external/*/origin and build the dependency as part of the build
|
|
# process. If the source is not present, try to retrieve it via the 'git submodule' command
|
|
# (provided the source tree is a git repository and git is available)
|
|
#
|
|
# Find: Find the dependency as an already installed package in the system.
|
|
#
|
|
# Fetch: Fetch the source into the build folder and build the dependency as part of the build
|
|
# process (works also in cases where the source tree is not a Git repository)
|