From 59b6032698d10306ffb3be3cbf76690409d7f9a6 Mon Sep 17 00:00:00 2001
From: Richard Purdie <richard.purdie@linuxfoundation.org>
Date: Tue, 26 Nov 2024 09:57:36 +0000
Subject: [PATCH 2/7] ltmain.in: Don't encode RATHS which match default linker
 paths

We don't want to add RPATHS which match default linker search paths, they're
a waste of space. This patch filters libtools list of paths to encoode and
removes the ones we don't need.

Libtool may be passed link paths of the form "/usr/lib/../lib" so normalize
the paths before comparision.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

Upstream-Status: Submitted [https://lists.gnu.org/archive/html/libtool-patches/2021-10/msg00013.html]
---
 build-aux/ltmain.in | 34 ++++++++++++++++++++++++++++------
 1 file changed, 28 insertions(+), 6 deletions(-)

diff --git a/build-aux/ltmain.in b/build-aux/ltmain.in
index c31faebd..44c7d81e 100644
--- a/build-aux/ltmain.in
+++ b/build-aux/ltmain.in
@@ -7782,8 +7782,16 @@ func_mode_link ()
 		  esac
 		fi
 	      else
-		eval flag=\"$hardcode_libdir_flag_spec\"
-		func_append dep_rpath " $flag"
+                # We only want to hardcode in an rpath if it isn't in the
+                # default dlsearch path.
+                func_normal_abspath "$libdir"
+                libdir_norm=$func_normal_abspath_result
+	        case " $sys_lib_dlsearch_path " in
+	        *" $libdir_norm "*) ;;
+	        *) eval flag=\"$hardcode_libdir_flag_spec\"
+                   func_append dep_rpath " $flag"
+                   ;;
+	        esac
 	      fi
 	    elif test -n "$runpath_var"; then
 	      case "$perm_rpath " in
@@ -8516,8 +8524,16 @@ func_mode_link ()
 	      esac
 	    fi
 	  else
-	    eval flag=\"$hardcode_libdir_flag_spec\"
-	    func_append rpath " $flag"
+            # We only want to hardcode in an rpath if it isn't in the
+            # default dlsearch path.
+            func_normal_abspath "$libdir"
+            libdir_norm=$func_normal_abspath_result
+	    case " $sys_lib_dlsearch_path " in
+	    *" $libdir_norm "*) ;;
+	    *) eval flag=\"$hardcode_libdir_flag_spec\"
+               rpath+=" $flag"
+               ;;
+	    esac
 	  fi
 	elif test -n "$runpath_var"; then
 	  case "$perm_rpath " in
@@ -8571,8 +8587,14 @@ func_mode_link ()
 	      esac
 	    fi
 	  else
-	    eval flag=\"$hardcode_libdir_flag_spec\"
-	    func_append rpath " $flag"
+            # We only want to hardcode in an rpath if it isn't in the
+            # default dlsearch path.
+	    case " $sys_lib_dlsearch_path " in
+	    *" $libdir "*) ;;
+	    *) eval flag=\"$hardcode_libdir_flag_spec\"
+               func_append rpath " $flag"
+               ;;
+	    esac    
 	  fi
 	elif test -n "$runpath_var"; then
 	  case "$finalize_perm_rpath " in
-- 
2.39.5

