Also all of the above requires this change:
https://github.com/KhronosGroup/Vulkan-Loader/pull/756


On Tue, Nov 30, 2021 at 12:00 PM Joel Winarske <[email protected]>
wrote:

> Yes, if the sys_root key value in meson.cross is present
> PKG_CONFIG_SYSROOT_DIR gets set.  Honister patch I confirmed with:
>
> https://github.com/jwinarske/manifests/blob/honister/rpi64/0001-Add-sys_root-to-properties-section.patch
>
> The issue is that meson doesn't pass PKG_CONFIG_SYSROOT_DIR to the shell
> environment that runs pkg-config, as with the pkg-config sandbox test it
> does work.
>
>
> On Tue, Nov 30, 2021 at 11:40 AM Alexander Kanavin <[email protected]>
> wrote:
>
>> I am seeing in mesonbuild/dependencies/pkgconfig.py
>>
>>         sysroot = environment.properties[for_machine].get_sys_root()
>>         if sysroot:
>>             env['PKG_CONFIG_SYSROOT_DIR'] = sysroo
>>
>> So we probably need to ensure this 'sys_root' is correctly set, and then
>> things will simply work?
>>
>> Alex
>>
>> On Tue, 30 Nov 2021 at 20:15, Joel Winarske <[email protected]>
>> wrote:
>>
>>> https://github.com/vkmark/vkmark/blob/master/src/meson.build#L9
>>>
>>> On Tue, Nov 30, 2021 at 10:53 AM Alexander Kanavin <
>>> [email protected]> wrote:
>>>
>>>> I do not quite understand the use case. What is being done with the
>>>> full path to the header?
>>>>
>>>> Alex
>>>>
>>>> On Tue, 30 Nov 2021 at 19:26, Joel Winarske <[email protected]>
>>>> wrote:
>>>>
>>>>> 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 (#158992): 
https://lists.openembedded.org/g/openembedded-core/message/158992
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