espressomd-users
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]