about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/tools/build-managers/meson/0.57/fix-rpath.patch
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/tools/build-managers/meson/0.57/fix-rpath.patch')
-rw-r--r--nixpkgs/pkgs/development/tools/build-managers/meson/0.57/fix-rpath.patch24
1 files changed, 24 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/tools/build-managers/meson/0.57/fix-rpath.patch b/nixpkgs/pkgs/development/tools/build-managers/meson/0.57/fix-rpath.patch
new file mode 100644
index 000000000000..d34b6c4c4345
--- /dev/null
+++ b/nixpkgs/pkgs/development/tools/build-managers/meson/0.57/fix-rpath.patch
@@ -0,0 +1,24 @@
+--- a/mesonbuild/backend/backends.py
++++ b/mesonbuild/backend/backends.py
+@@ -456,6 +456,21 @@ class Backend:
+                 args.extend(self.environment.coredata.get_external_link_args(target.for_machine, lang))
+             except Exception:
+                 pass
++
++        nix_ldflags = os.environ.get('NIX_LDFLAGS', '').split()
++        next_is_path = False
++        # Try to add rpaths set by user or ld-wrapper so that they are not removed.
++        # Based on https://github.com/NixOS/nixpkgs/blob/69711a2f5ffe8cda208163be5258266172ff527f/pkgs/build-support/bintools-wrapper/ld-wrapper.sh#L148-L177
++        for flag in nix_ldflags:
++            if flag == '-rpath' or flag == '-L':
++                next_is_path = True
++            elif next_is_path or flag.startswith('-L/'):
++                if flag.startswith('-L/'):
++                    flag = flag[2:]
++                if flag.startswith('@storeDir@'):
++                    dirs.add(flag)
++                next_is_path = False
++
+         # Match rpath formats:
+         # -Wl,-rpath=
+         # -Wl,-rpath,