diff mbox series

[meta-oe,v3] thin-provisioning-tools: add target and sysroot to bindgen flags

Message ID 20250227183238.1909597-1-skandigraun@gmail.com
State Accepted
Headers show
Series [meta-oe,v3] thin-provisioning-tools: add target and sysroot to bindgen flags | expand

Commit Message

Gyorgy Sarvari Feb. 27, 2025, 6:32 p.m. UTC
BUILD_CFLAGS doesn't contain information about the recipe sysroot nor about the target
system - and in case these are not specified for bindgen, then it builds against
the build system's headers, using the build system's arch.

Instead of BUILD_CFLAGS pass HOST_CC_ARCH and TOOLCHAIN_OPTIONS, which contain the sysroot
and the requred cross-compiling flags, beside passing the target flag also.

Fixes the following do_compile error:

|   /usr/include/linux/types.h:5:10: fatal error: 'asm/types.h' file not found
|   thread 'main' panicked at /yocto/sandbox/build/tmp/work/cortexa72-poky-linux/thin-provisioning-tools/1.1.0/sources-unpack/cargo_home/bitbake/devicemapper-sys-0.3.0/build.rs:24:10:
|   Could not generate dm.h bindings: ClangDiagnostic("/usr/include/linux/types.h:5:10: fatal error: 'asm/types.h' file not found\n")

Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
---
 .../thin-provisioning-tools/thin-provisioning-tools_1.1.0.bb    | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Khem Raj Feb. 27, 2025, 8:02 p.m. UTC | #1
On Thu, Feb 27, 2025 at 10:32 AM Gyorgy Sarvari via
lists.openembedded.org <skandigraun=gmail.com@lists.openembedded.org>
wrote:
>
> BUILD_CFLAGS doesn't contain information about the recipe sysroot nor about the target
> system - and in case these are not specified for bindgen, then it builds against
> the build system's headers, using the build system's arch.
>
> Instead of BUILD_CFLAGS pass HOST_CC_ARCH and TOOLCHAIN_OPTIONS, which contain the sysroot
> and the requred cross-compiling flags, beside passing the target flag also.
>
> Fixes the following do_compile error:
>
> |   /usr/include/linux/types.h:5:10: fatal error: 'asm/types.h' file not found
> |   thread 'main' panicked at /yocto/sandbox/build/tmp/work/cortexa72-poky-linux/thin-provisioning-tools/1.1.0/sources-unpack/cargo_home/bitbake/devicemapper-sys-0.3.0/build.rs:24:10:
> |   Could not generate dm.h bindings: ClangDiagnostic("/usr/include/linux/types.h:5:10: fatal error: 'asm/types.h' file not found\n")
>
> Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
> ---
>  .../thin-provisioning-tools/thin-provisioning-tools_1.1.0.bb    | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools_1.1.0.bb b/meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools_1.1.0.bb
> index bb4b53c28b..d0241c7016 100644
> --- a/meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools_1.1.0.bb
> +++ b/meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools_1.1.0.bb
> @@ -21,7 +21,7 @@ inherit pkgconfig
>  DEPENDS += "udev libdevmapper libdevmapper-native clang-native"
>
>  export LIBCLANG_PATH = "${WORKDIR}/recipe-sysroot-native${libdir}"
> -export BINDGEN_EXTRA_CLANG_ARGS = "${BUILD_CFLAGS}"
> +export BINDGEN_EXTRA_CLANG_ARGS = "${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS} --target=${TARGET_SYS}"
>

we do not need -target anymore its part of HOST_CCARCH

>  require ${BPN}-crates.inc
>  require ${BPN}-git-crates.inc
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#115699): https://lists.openembedded.org/g/openembedded-devel/message/115699
> Mute This Topic: https://lists.openembedded.org/mt/111420486/1997914
> Group Owner: openembedded-devel+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Gyorgy Sarvari Feb. 27, 2025, 8:08 p.m. UTC | #2
On 27.02.25 21:02, Khem Raj wrote:
> On Thu, Feb 27, 2025 at 10:32 AM Gyorgy Sarvari via
> lists.openembedded.org <skandigraun=gmail.com@lists.openembedded.org>
> wrote:
>> BUILD_CFLAGS doesn't contain information about the recipe sysroot nor about the target
>> system - and in case these are not specified for bindgen, then it builds against
>> the build system's headers, using the build system's arch.
>>
>> Instead of BUILD_CFLAGS pass HOST_CC_ARCH and TOOLCHAIN_OPTIONS, which contain the sysroot
>> and the requred cross-compiling flags, beside passing the target flag also.
>>
>> Fixes the following do_compile error:
>>
>> |   /usr/include/linux/types.h:5:10: fatal error: 'asm/types.h' file not found
>> |   thread 'main' panicked at /yocto/sandbox/build/tmp/work/cortexa72-poky-linux/thin-provisioning-tools/1.1.0/sources-unpack/cargo_home/bitbake/devicemapper-sys-0.3.0/build.rs:24:10:
>> |   Could not generate dm.h bindings: ClangDiagnostic("/usr/include/linux/types.h:5:10: fatal error: 'asm/types.h' file not found\n")
>>
>> Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
>> ---
>>  .../thin-provisioning-tools/thin-provisioning-tools_1.1.0.bb    | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools_1.1.0.bb b/meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools_1.1.0.bb
>> index bb4b53c28b..d0241c7016 100644
>> --- a/meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools_1.1.0.bb
>> +++ b/meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools_1.1.0.bb
>> @@ -21,7 +21,7 @@ inherit pkgconfig
>>  DEPENDS += "udev libdevmapper libdevmapper-native clang-native"
>>
>>  export LIBCLANG_PATH = "${WORKDIR}/recipe-sysroot-native${libdir}"
>> -export BINDGEN_EXTRA_CLANG_ARGS = "${BUILD_CFLAGS}"
>> +export BINDGEN_EXTRA_CLANG_ARGS = "${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS} --target=${TARGET_SYS}"
>>
> we do not need -target anymore its part of HOST_CCARCH

It is not:

$ bitbake -e thin-provisioning-tools | grep ^HOST_CC_ARCH
HOST_CC_ARCH=" -mcpu=cortex-a72+crc -mbranch-protection=standard
-fstack-protector-strong  -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-
security -Werror=format-security"

If I remove it, it gets unhappy:

|   error: unsupported option '-mcpu=' for target 'x86_64-unknown-linux-gnu'
|   error: unsupported option '-mbranch-protection=' for target
'x86_64-unknown-linux-gnu'
(etc..)


>
>>  require ${BPN}-crates.inc
>>  require ${BPN}-git-crates.inc
>>
>> -=-=-=-=-=-=-=-=-=-=-=-
>> Links: You receive all messages sent to this group.
>> View/Reply Online (#115699): https://lists.openembedded.org/g/openembedded-devel/message/115699
>> Mute This Topic: https://lists.openembedded.org/mt/111420486/1997914
>> Group Owner: openembedded-devel+owner@lists.openembedded.org
>> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [raj.khem@gmail.com]
>> -=-=-=-=-=-=-=-=-=-=-=-
>>
Khem Raj Feb. 27, 2025, 8:15 p.m. UTC | #3
On Thu, Feb 27, 2025 at 12:08 PM Gyorgy Sarvari <skandigraun@gmail.com> wrote:
>
>
> On 27.02.25 21:02, Khem Raj wrote:
> > On Thu, Feb 27, 2025 at 10:32 AM Gyorgy Sarvari via
> > lists.openembedded.org <skandigraun=gmail.com@lists.openembedded.org>
> > wrote:
> >> BUILD_CFLAGS doesn't contain information about the recipe sysroot nor about the target
> >> system - and in case these are not specified for bindgen, then it builds against
> >> the build system's headers, using the build system's arch.
> >>
> >> Instead of BUILD_CFLAGS pass HOST_CC_ARCH and TOOLCHAIN_OPTIONS, which contain the sysroot
> >> and the requred cross-compiling flags, beside passing the target flag also.
> >>
> >> Fixes the following do_compile error:
> >>
> >> |   /usr/include/linux/types.h:5:10: fatal error: 'asm/types.h' file not found
> >> |   thread 'main' panicked at /yocto/sandbox/build/tmp/work/cortexa72-poky-linux/thin-provisioning-tools/1.1.0/sources-unpack/cargo_home/bitbake/devicemapper-sys-0.3.0/build.rs:24:10:
> >> |   Could not generate dm.h bindings: ClangDiagnostic("/usr/include/linux/types.h:5:10: fatal error: 'asm/types.h' file not found\n")
> >>
> >> Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
> >> ---
> >>  .../thin-provisioning-tools/thin-provisioning-tools_1.1.0.bb    | 2 +-
> >>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools_1.1.0.bb b/meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools_1.1.0.bb
> >> index bb4b53c28b..d0241c7016 100644
> >> --- a/meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools_1.1.0.bb
> >> +++ b/meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools_1.1.0.bb
> >> @@ -21,7 +21,7 @@ inherit pkgconfig
> >>  DEPENDS += "udev libdevmapper libdevmapper-native clang-native"
> >>
> >>  export LIBCLANG_PATH = "${WORKDIR}/recipe-sysroot-native${libdir}"
> >> -export BINDGEN_EXTRA_CLANG_ARGS = "${BUILD_CFLAGS}"
> >> +export BINDGEN_EXTRA_CLANG_ARGS = "${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS} --target=${TARGET_SYS}"
> >>
> > we do not need -target anymore its part of HOST_CCARCH
>
> It is not:
>
> $ bitbake -e thin-provisioning-tools | grep ^HOST_CC_ARCH
> HOST_CC_ARCH=" -mcpu=cortex-a72+crc -mbranch-protection=standard
> -fstack-protector-strong  -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-
> security -Werror=format-security"
>
> If I remove it, it gets unhappy:
>
> |   error: unsupported option '-mcpu=' for target 'x86_64-unknown-linux-gnu'
> |   error: unsupported option '-mbranch-protection=' for target
> 'x86_64-unknown-linux-gnu'
> (etc..)
>

Yeah, I see when clang is used at default compiler then its added but
for gcc defaults it is not. I will take v3

>
> >
> >>  require ${BPN}-crates.inc
> >>  require ${BPN}-git-crates.inc
> >>
> >> -=-=-=-=-=-=-=-=-=-=-=-
> >> Links: You receive all messages sent to this group.
> >> View/Reply Online (#115699): https://lists.openembedded.org/g/openembedded-devel/message/115699
> >> Mute This Topic: https://lists.openembedded.org/mt/111420486/1997914
> >> Group Owner: openembedded-devel+owner@lists.openembedded.org
> >> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [raj.khem@gmail.com]
> >> -=-=-=-=-=-=-=-=-=-=-=-
> >>
diff mbox series

Patch

diff --git a/meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools_1.1.0.bb b/meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools_1.1.0.bb
index bb4b53c28b..d0241c7016 100644
--- a/meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools_1.1.0.bb
+++ b/meta-oe/dynamic-layers/clang-layer/recipes-support/thin-provisioning-tools/thin-provisioning-tools_1.1.0.bb
@@ -21,7 +21,7 @@  inherit pkgconfig
 DEPENDS += "udev libdevmapper libdevmapper-native clang-native"
 
 export LIBCLANG_PATH = "${WORKDIR}/recipe-sysroot-native${libdir}"
-export BINDGEN_EXTRA_CLANG_ARGS = "${BUILD_CFLAGS}"
+export BINDGEN_EXTRA_CLANG_ARGS = "${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS} --target=${TARGET_SYS}"
 
 require ${BPN}-crates.inc
 require ${BPN}-git-crates.inc