This pattern works to get the absolute path of the header:

Yocto

    EXTRA_OEMESON += "--prefix ${STAGING_DIR_TARGET}/usr"

Meson

    vulkan_dep = dependency('vulkan')
    vulkan_hpp = join_paths([
        vulkan_dep.get_pkgconfig_variable('includedir', define_variable:
['prefix', get_option('prefix')]),
        'vulkan',
        'vulkan.hpp'
        ])

Implementation in build/meson-log.txt

Called
`/b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/rpi4/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot-native/usr/bin/pkg-config
--define-variable=prefix=/b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/rpi4/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot/usr
--variable=includedir vulkan` -> 0


One would expect the following meson to work if STAGING_DIR_TARGET were
set, as that's how pkg-config works:

    vulkan_dep = dependency('vulkan')
    vulkan_hpp = join_paths([
        vulkan_dep.get_pkgconfig_variable('includedir'),
        'vulkan',
        'vulkan.hpp'
        ])

This will always return /usr/include/vulkan/vulkan.hpp regardless of
PKG_CONFIG_SYSROOT_DIR value.  With PKG_CONFIG_SYSROOT_DIR set, it should
be /usr/include/vulkan/vulkan.hpp with prepend of PKG_CONFIG_SYSROOT_DIR
value.


Sandbox testing of pkg-config

    $ export
STAGING_DIR_TARGET=/b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/raspberrypi4-64/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot
    $ PKG_CONFIG_SYSROOT_DIR=$STAGING_DIR_TARGET pkg-config
--define-variable=prefix=/opt --variable=includedir vulkan
/b/github-ci/_work/meta-flutter/rpi4-drm-honister-latest/raspberrypi4-64/tmp/work/cortexa72-poky-linux/vkmark/git-r0/recipe-sysroot/opt/include


meson.cross

Setting sys_root in the properties section of meson.cross (patching
meson.bbclass) indirectly sets PKG_CONFIG_SYSROOT_DIR.  The setting of
sys_root is present in nativesdk_meson*.bb, not meson*.bb.

The issue for meson is that they are not passing the PKG_CONFIG_SYSROOT_DIR
variable to the shell that launches pkg-config.

My proposed work around (this email thread) would fix the behavior.  I
believe the proper fix is for meson to address upstream.  Still waiting on
a response from them: https://github.com/mesonbuild/meson/issues/9674


Joel

On Tue, Nov 30, 2021 at 9:49 AM Alexander Kanavin <[email protected]>
wrote:

> On Tue, 30 Nov 2021 at 18:20, Joel Winarske <[email protected]>
> wrote:
>
>> Meson does not expose PKG_CONFIG_SYSROOT_DIR to the pkg-config process.
>>
>> Currently meson.cross as generated in meson.bbclass points directly to
>> the pkg-config executable (no wrapper script).
>>
>> PKG_CONFIG_SYSROOT_DIR behaves like a simple string prepend to all
>> package config variable queries.  So if you want to determine the absolute
>> path of a variable in .pc you set PKG_CONFIG_SYSROOT_DIR and make your
>> query.  Currently this is not possible with Yocto+Meson.
>>
>> I think a simple wrapper script would resolve this.  This is from
>> https://autotools.io/pkgconfig/cross-compiling.html:
>>
>> #!/bin/sh
>>
>> SYSROOT=/build/root
>>
>> export PKG_CONFIG_PATH=
>> export 
>> PKG_CONFIG_LIBDIR=${SYSROOT}/usr/lib/pkgconfig:${SYSROOT}/usr/share/pkgconfig
>> export PKG_CONFIG_SYSROOT_DIR=${SYSROOT}
>>
>> exec pkg-config "$@"
>>
>>
>> The wrapper script would be generated per recipe via meson.bbclass,
>> meson.cross would then reference this wrapper instead of the pkg-config
>> executable.
>>
>> Thoughts?
>>
>
> I don't think this is correct. Meson's way of doing things is that you are
> not supposed to get the include/library paths directly from pkg-config, but
> rather use
> https://mesonbuild.com/Reference-manual_functions.html#dependency and
> meson will take care of any needed prefixes to the paths.
>
> For the custom variables defined in .pc that happen to contain paths,
> PKG_CONFIG_SYSROOT_DIR has no effect at all, so you need to manually
> prepend it anyway everywhere where they're used. pkg-config does not know
> what variable is a path and what isn't.
>
> Alex
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#158986): 
https://lists.openembedded.org/g/openembedded-core/message/158986
Mute This Topic: https://lists.openembedded.org/mt/87407703/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to