diff options
author | Jonathon Anderson <anderson.jonathonm@gmail.com> | 2023-10-06 18:06:41 -0500 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2024-01-17 08:42:09 -0800 |
commit | 76ad5fe8d387638d21258177328763f05a0e95ae (patch) | |
tree | 561311f345ac0235fd55554a28b53a74b5cd5385 | |
parent | 57b7fbb29d456b1a607adc8ab3ae3d5c9eeb7341 (diff) | |
download | meson-76ad5fe8d387638d21258177328763f05a0e95ae.zip meson-76ad5fe8d387638d21258177328763f05a0e95ae.tar.gz meson-76ad5fe8d387638d21258177328763f05a0e95ae.tar.bz2 |
backend: Add rpath for external versioned .so's
On Linux many .so's are augmented with version information,
e.g. libxyz.so.1.2.3. CMake will happily refer to these versioned .so's
in its dependencies instead of libxyz.so (typically a symlink).
Unfortunately these versioned .so's aren't recognized as libraries by
the Backend's logic to produce build rpaths from library paths.
Fix this by recognizing any .so extension as sufficient reason to
produce a build rpath, not just if .so is the last extension.
-rw-r--r-- | mesonbuild/backend/backends.py | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py index 85f6896..cb730de 100644 --- a/mesonbuild/backend/backends.py +++ b/mesonbuild/backend/backends.py @@ -780,7 +780,11 @@ class Backend: # Windows doesn't support rpaths, but we use this function to # emulate rpaths by setting PATH # .dll is there for mingw gcc - if os.path.splitext(libpath)[1] not in {'.dll', '.lib', '.so', '.dylib'}: + # .so's may be extended with version information, e.g. libxyz.so.1.2.3 + if not ( + os.path.splitext(libpath)[1] in {'.dll', '.lib', '.so', '.dylib'} + or re.match(r'.+\.so(\.|$)', os.path.basename(libpath)) + ): continue try: |