libtool-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v2 04/12] ltmain.in: Don't encode RATHS which match default linke


From: Sam James
Subject: [PATCH v2 04/12] ltmain.in: Don't encode RATHS which match default linker paths
Date: Sat, 16 Apr 2022 18:58:17 +0100

From: Richard Purdie <richard.purdie@linuxfoundation.org>

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>
---
 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 bc0a3950..a4175d99 100644
--- a/build-aux/ltmain.in
+++ b/build-aux/ltmain.in
@@ -7700,8 +7700,16 @@ EOF
                  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
@@ -8434,8 +8442,16 @@ EOF
              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
@@ -8489,8 +8505,14 @@ EOF
              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.35.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]