---
eclass/autotools-utils.eclass | 22 ++++++++++++++++------
1 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/eclass/autotools-utils.eclass b/eclass/autotools-utils.eclass
index 48b39cb..9d7e134 100644
--- a/eclass/autotools-utils.eclass
+++ b/eclass/autotools-utils.eclass
@@ -162,18 +162,28 @@ remove_libtool_files() {
local archivefile=${f/%.la/.a}
[[ "${f}" != "${archivefile}" ]] || die 'regex sanity check
failed'
- # Remove static libs we're not supposed to link against
+ # Remove static libs we're not supposed to link against.
if [[ ${shouldnotlink} ]]; then
einfo "Removing unnecessary ${archivefile#${D%/}}"
rm -f "${archivefile}" || die
- # We're never going to remove the .la file.
+ # The .la file may be used by a module loader, so avoid
removing it
+ # unless explicitly requested.
[[ ${removing_all} ]] || continue
fi
- # Keep .la files when:
- # - they have shouldnotlink=yes - likely plugins (handled
above),
- # - respective static archive exists.
- if [[ ${removing_all} || ! -f ${archivefile} ]]; then
+ # Remove .la files when:
+ # - user explicitly wants us to remove all .la files,
+ # - respective static archive doesn't exist,
+ # - they don't provide any new information (no libs & no flags).
+ local removing
+ if [[ ${removing_all} ]]; then removing=1
+ elif [[ ! -f ${archivefile} ]]; then removing=1
+ elif [[ ! $(sed -n -e \
+
"s/^\(dependency_libs\|inherited_linker_flags\)='\(.*\)'$/\2/p" \
+ "${f}") ]]; then removing=1
+ fi
+
+ if [[ ${removing} ]]; then
einfo "Removing unnecessary ${f#${D%/}}"
rm -f "${f}" || die
fi
--
1.7.6.1