---
 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


Reply via email to