[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Build system changes in the python branch
From: |
Jean-Noël Grad |
Subject: |
Build system changes in the python branch |
Date: |
Tue, 06 Dec 2022 11:50:49 +0100 |
User-agent: |
Roundcube Webmail/1.4.13 |
Dear users,
We would like to share with you some important changes to the way the
development version of ESPResSo is configured and built.
As discussed in the community call from October 13, 2022, we are working
on integrating more external libraries into ESPResSo, such as waLBerla
for hydrodynamics and librepa+kdpart for MD load balancing. We opted for
the CMake FetchContent method, which allows us to finely tune the way
these libraries are compiled and integrated within our codebase. In the
process of doing so, we noticed imperfections in our build system that
made it difficult to integrate new libraries [1], or to use ESPResSo as
a library in a parent project. In particular, CMake flags such as
WITH_FFTW were inherited by included projects, which could cause them to
build components that were not needed in ESPResSo. This behavior would
unnecessarily increase the build time, and in a few cases, force users
to install extra dependencies to complete the build. The latter is
problematic for clusters users, who typically have access to a
restricted set of dependencies and cannot easily install new packages.
CMake options name conflicts are commonly resolved by adding a unique,
project-specific prefix on all CMake options. While we worked with
external libraries maintainers to rename their CMake options, we
obviously needed to rename ESPResSo CMake options too. As such, on the
python branch of ESPResSo, a prefix `ESPRESSO_BUILD_` was added to all
options that control compilation, and a prefix `ESPRESSO_` was added to
the other options [2]. The new option names can be found in the user
guide, section 2.4.4. "Options and Variables" [3]. If you accidentally
use the old options when building the development branch of ESPResSo, or
the new options when building older ESPResSo releases, CMake will print
a warning and list which options were not recognized.
We also took this opportunity to modernize the ESPResSo codebase by
requiring C++17 and CUDA 11, as well as enforcing minimal versions for
compilers and MPI libraries. These changes helped us simplify the CMake
logic and the C++ core greatly, and we expect that contributing new
features to ESPResSo will lead to a smoother experience for first-time
contributors.
We will continue supporting C++14 and CUDA 10 in the 4.2 line of
ESPResSo, and a bugfix release is currently in preparation [4].
Best regards,
Jean-Noël Grad
Links:
[1] https://github.com/espressomd/espresso/issues/4618
[2] https://github.com/espressomd/espresso/pull/4612
[3]
https://espressomd.github.io/doc/installation.html#options-and-variables
[4] https://github.com/espressomd/espresso/wiki/es-421-release-notes
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Build system changes in the python branch,
Jean-Noël Grad <=