Portability
^^^^^^^^^^^

Intel classic compiler (icc/icpc) no longer supported
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

We now support the Intel clang-based compiler from oneAPI (icx/icpx)
instead. Please use it, or gcc.

:issue:`3893`

Provisional: Initialize GMX_INSTALL_NBLIB_API and GMXAPI build options from BUILD_SHARED_LIBS
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

CMake options ``GMXAPI`` and ``GMX_INSTALL_NBLIB_API`` produce shared object libraries,
so their default values are now initialized from ``BUILD_SHARED_LIBS``.
Pending movement on :issue:`3605` and related issues, the coupling between these
options is subject to change, but users generally should not need to manually set
``GMXAPI`` and ``GMX_INSTALL_NBLIB_API``.

:issue:`4053`

Updates to pybind11 dependency
""""""""""""""""""""""""""""""

pybind11 is no longer bundled with |Gromacs|.

The gmxapi 0.3 Python package build system relies on PEP 517/518 build requirements to get pybind11 header
dependencies through the Python packaging system. Package managers like ``pip`` will download dependencies
automatically. Package managers that do not automatically fulfill dependencies should still report the missing
dependency to the user.

The ``sample_restraint`` sample project
(bundled in ``python_packaging/sample_restraint``)
still has a primitive CMake-only build procedure.
If you fork a project from this source, you may choose to modernize the build system (similarly to that of
``gmxapi``) or to bundle the pybind11 sources.
Within the |Gromacs| repository, the ``sample_restraint`` option default is now ``GMXAPI_EXTENSION_DOWNLOAD_PYBIND=ON``.

:issue:`4092`

CMake toolchain file replaced with cache file
"""""""""""""""""""""""""""""""""""""""""""""

The ``gromacs-toolchain.cmake`` file
(previously installed to ``$CMAKE_INSTALL_PREFIX/share/cmake/gromacs/``)
is no longer provided.
Instead a partial CMake cache file is installed to
``$CMAKE_INSTALL_PREFIX/share/cmake/gromacs${SUFFIX}/gromacs-hints.cmake``.

Client software may get CMake hints by configuring with ``-C /path/to/gromacs-hints.cmake``,
instead of forcing a cross-compiling CMake configuration with ``-DCMAKE_TOOLCHAIN_FILE`` or ``--toolchain``.

Client software bundled with |Gromacs| (the gmxapi Python package) no longer requires the toolchain file.
See :doc:`/gmxapi/userguide/install` for details.

:issue:`4208`

Bundle muparser
"""""""""""""""

|Gromacs| now bundles MuParser version 2.3. It is also possible
to link to an external provided library.
