On Fri, May 07, 2021 at 01:14:02PM +0200, Christian Melki wrote: > On 5/7/21 9:15 AM, Michael Olbrich wrote: > > Signed-off-by: Michael Olbrich <m.olbr...@pengutronix.de> > > --- > > > > Would this work? Or do we need to exclude /usr/lib explicitly as well? > > > > Michael > > > > scripts/pkg-config-wrapper | 8 +++++--- > > 1 file changed, 5 insertions(+), 3 deletions(-) > > > > diff --git a/scripts/pkg-config-wrapper b/scripts/pkg-config-wrapper > > index d86fa7c683b5..dd786e47b212 100755 > > --- a/scripts/pkg-config-wrapper > > +++ b/scripts/pkg-config-wrapper > > @@ -17,9 +17,11 @@ else > > fi > > > > declare -a libdir system_path system_incpath > > -libdir=( $(find ${prefix} -maxdepth 3 -type d -name pkgconfig) > > > -system_libpath=( "${libdir[@]/%//../../lib}" "${libdir[@]/%//../lib}" > "/usr/lib" "/lib" ) > > -system_incpath=( "${libdir[@]/%//../../include}" > > "${libdir[@]/%//../include}" "/usr/include" "/include" ) > > +libdir=( $(find ${prefix} -maxdepth 3 -type d -path */lib*/pkgconfig) ) > > +lib="$(basename $(dirname ${libdir[0]}))" > > Only one libdir? Lost lib64 in translation? Not sure I understand this.
My expectation was that ${libdir[0]} is .../sysroot-target/usr/lib64/pkgconfig in your case. I want to use it to find out if lib or lib64 is correct. What's the result of the 'find' above? > > +libdir+=( "${prefix/%//share/pkgconfig}" ) > > +system_libpath=( "${libdir[@]/%//../../${lib}}" "/usr/${lib}" "/${lib}" ) > > This looks strange to me. libdir contains lib64, but $lib is only "lib". > > Doesn't this assume that system libpath is the same as the target? > I'm a bit confused what the filtering needs to filter. > Removing host directories, whatever they may be or removing directories > that are similar to those we are including? The .pc files usually generate search paths like this: 1. Relative to the .pc file itself. This results in something like this: -L[....]/sysroot-target/usr/lib64/pkgconfig/../../lib64 2. Absolute based on the prefix/libdir specified during configure etc.: -L/usr/lib64 So note that the second on is not really a host path but a target path without the sysroot prefix. > Couldn't host path filtering be of similar construction as the cross libdir? > > > +system_incpath=( "${libdir[@]/%//../../include}" "/usr/include" "/include" They are not really host paths. See above. > Not sure i understand libdir to include path filtering either. :) > This becomes sysroot-target/usr/lib{64}/pkgconfig/../../include, > /usr/include. /include? Correct. Those paths will be removed from the pkg-config output. Michael -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ ptxdist mailing list ptxdist@pengutronix.de To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-requ...@pengutronix.de