---
eclass/autotools-utils.eclass | 11 +++++++++++
1 files changed, 11 insertions(+), 0 deletions(-)
diff --git a/eclass/autotools-utils.eclass b/eclass/autotools-utils.eclass
index 9d7e134..2e01dcc 100644
--- a/eclass/autotools-utils.eclass
+++ b/eclass/autotools-utils.eclass
@@ -156,6 +156,15 @@ remove_libtool_files() {
esac
fi
+ local pc_libs=()
+ if [[ ! ${removing_all} ]]; then
+ local arg
+ for arg in $(find "${D}" -name '*.pc' -exec \
+ sed -n -e 's;^Libs:;;p' {} +); do
+ [[ ${arg} == -l* ]] && pc_libs+=(lib${arg#-l}.la)
+ done
+ fi
+
local f
find "${D}" -type f -name '*.la' -print0 | while read -r -d '' f; do
local shouldnotlink=$(sed -ne '/^shouldnotlink=yes$/p' "${f}")
@@ -174,10 +183,12 @@ remove_libtool_files() {
# Remove .la files when:
# - user explicitly wants us to remove all .la files,
# - respective static archive doesn't exist,
+ # - they are covered by a .pc file already,
# - 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 has "$(basename "${f}")" "${pc_libs[@]}"; then removing=1
elif [[ ! $(sed -n -e \
"s/^\(dependency_libs\|inherited_linker_flags\)='\(.*\)'$/\2/p" \
"${f}") ]]; then removing=1
--
1.7.6.1