| From: Richard Purdie <richard.purdie@linuxfoundation.org> |
| Subject: [PATCH 05/12] 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] |
| |
| diff -u b/build-aux/ltmain.in b/build-aux/ltmain.in |
| --- b/build-aux/ltmain.in |
| +++ b/build-aux/ltmain.in 2012-08-22 11:01:34.191345989 -0700 |
| @@ -7286,8 +7286,16 @@ |
| 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 |
| @@ -8019,8 +8027,16 @@ |
| 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 |
| @@ -8070,8 +8086,14 @@ |
| 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 |