summaryrefslogtreecommitdiffstats
path: root/Modules/Internal
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2023-12-06 20:02:29 (GMT)
committerBrad King <brad.king@kitware.com>2024-01-04 16:59:26 (GMT)
commitdd4a6dff9246715b419a8daf4ced2d3c46a529df (patch)
treeb69ef3af6fdae649efa793e8dc00e70829a718b8 /Modules/Internal
parent5f1bbdb3b327ef5ff65ce331bf644d9b08d9c40f (diff)
downloadCMake-dd4a6dff9246715b419a8daf4ced2d3c46a529df.zip
CMake-dd4a6dff9246715b419a8daf4ced2d3c46a529df.tar.gz
CMake-dd4a6dff9246715b419a8daf4ced2d3c46a529df.tar.bz2
Link explicitly to private transitive dependencies on stub libraries
We represent stub libraries, e.g., for CUDA, using imported `SHARED` library targets with only `IMPORTED_IMPLIB`, and no `IMPORTED_LOCATION`, to indicate that the stub file is meant only for linkers and not dynamic loaders. See commit 7351d590ee (cmTarget: Add a way to represent imported shared library stubs, 2023-07-17, v3.28.0-rc1~344^2) and commit fc6508921c (cmComputeLinkInformation: Restore soname lookup for non-imported targets, 2023-12-05, v3.28.0~4^2). If a shared library is linked to a stub, it has a `NEEDED` field populated with the `SONAME` found in the stub. When a dependent target links to such a shared library, some linkers want to find a library file on disk and load it to see what symbols it provides. This is necessary for linkers that enforce `--no-allow-shlib-undefined`. On hosts with only the stub library installed, e.g., with only the CUDA toolkit development package, the real runtime library corresponding to the stub's `SONAME` may not even exist, so no `-rpath-link` flag can help linkers find it. Pass the stub library to linkers explicitly so they can find it without searching.
Diffstat (limited to 'Modules/Internal')
0 files changed, 0 insertions, 0 deletions