Fix rpath for private libraries on Linux
authorBenjamin Drung <benjamin.drung@canonical.com>
Thu, 22 Sep 2022 17:52:43 +0000 (19:52 +0200)
committerDennis Braun <snd@debian.org>
Mon, 17 Mar 2025 21:54:47 +0000 (22:54 +0100)
commit2c64d077b87f4c18ee99c43563383c4f94246a8d
tree6ce954a25699d75f8aca36bbced15023b00a279c
parenta20da65b47c1ae280a0fe13deed9f187b00ca0ba
Fix rpath for private libraries on Linux

Installing audacity on Linux will produce private libraries that have
`RUNPATH` set to the build directory instead of the installation
directory.

The root cause is that the library directory is copied to the
installation directory without touching the libraries. The cmake wiki
says in RPATH handling caveats [1]: "Since install-side RPATH tweaking
is an operation that is done by target-specific installation handling,
any target that should have its install RPATH changed (e.g. to
`CMAKE_INSTALL_RPATH`) needs to end up in the installation via an
`install(TARGETS ...)` signature and not via directory-based copying."

So replace `install(DIRECTORY ...)` by individual `install(TARGETS ...)`
for the libraries and modules. Then cmake will replace the `RUNPATH` to
`$ORIGIN/../lib/audacity`, which is still incorrect. Therefore set
`INSTALL_RPATH` explicitly.

Fixes: https://github.com/audacity/audacity/issues/3289
Forwarded: https://github.com/audacity/audacity/pull/3671
[1] https://gitlab.kitware.com/cmake/community/-/wikis/doc/cmake/RPATH-handling#caveats
Signed-off-by: Benjamin Drung <benjamin.drung@canonical.com>
Gbp-Pq: Name Fix-rpath-for-private-libraries-on-Linux.patch
CMakeLists.txt
cmake-proxies/cmake-modules/AudacityFunctions.cmake
modules/scripting/mod-script-pipe/CMakeLists.txt
src/CMakeLists.txt