spack/lib/spack
Harmen Stoppels 9516fa9447
cmake: use CMAKE_INSTALL_RPATH_USE_LINK_PATH (#29703)
* cmake: use CMAKE_INSTALL_RPATH_USE_LINK_PATH

Spack has a heuristic to add rpaths for packages it knows are required,
but it's really a heuristic, and it does not work when the dependencies
put their libraries in a different folder than `<prefix>/lib{64,}`.

CMake patches binaries after install with the "install rpaths", which by
default are provided by Spack and its heuristic through
`CMAKE_INSTALL_RPATH`.

CMake however knows better what libraries are effectively being linked
to, and has an option to include those in the install rpath too, through
`CMAKE_INSTALL_RPATH_USE_LINK_PATH`.

These two CMake options are complementary, repeated rpaths seem to be
filtered, and the "use link path" paths are appended to Spack's
heuristic "install rpath".

So, it seems like a good idea to enable "use link path" by default, so
that:
- `dlopen` by library name uses Spack's heuristic search paths
- linked libraries in non-standard locations within a prefix get an
rpath thanks to CMake.

* docs
2022-03-29 12:24:10 -04:00
..
docs cmake: use CMAKE_INSTALL_RPATH_USE_LINK_PATH (#29703) 2022-03-29 12:24:10 -04:00
env Adding basic Windows features (#21259) 2022-03-17 09:01:01 -07:00
external Windows Support: Testing Suite integration 2022-03-17 09:01:01 -07:00
llnl Use the appropriate function to remove files in the stage directory (#29690) 2022-03-25 08:39:09 +01:00
spack cmake: use CMAKE_INSTALL_RPATH_USE_LINK_PATH (#29703) 2022-03-29 12:24:10 -04:00