From patchwork Thu Jun 12 13:59:51 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Purdie X-Patchwork-Id: 64839 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4144CC71136 for ; Thu, 12 Jun 2025 14:00:05 +0000 (UTC) Received: from mail-wr1-f43.google.com (mail-wr1-f43.google.com [209.85.221.43]) by mx.groups.io with SMTP id smtpd.web11.13685.1749736799724006701 for ; Thu, 12 Jun 2025 07:00:00 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@linuxfoundation.org header.s=google header.b=NjjUBssH; spf=pass (domain: linuxfoundation.org, ip: 209.85.221.43, mailfrom: richard.purdie@linuxfoundation.org) Received: by mail-wr1-f43.google.com with SMTP id ffacd0b85a97d-3a5123c1533so696859f8f.2 for ; Thu, 12 Jun 2025 06:59:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=google; t=1749736797; x=1750341597; darn=lists.openembedded.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=9EaqlSmq+vnm9BxtzSrnK+T7+GZbt1tShBv+mPbcfBg=; b=NjjUBssHLhPhPzJrp+PQ+cSw4U1Q+5kx6X/0eof04Bvj+JJHvoHNPd09foK1RxVbkK 5kNRCkVoGTYf67IrnZbtluFIndTT+ty1uJ4JSvXhMQuN6JzckUT2GqcWGTH2AwSjMwMX EbbXhvJYF+FZX5cDKiZRRC+wU3n38PPwmRNNA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749736797; x=1750341597; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=9EaqlSmq+vnm9BxtzSrnK+T7+GZbt1tShBv+mPbcfBg=; b=gkhs54lFx3w7tH+1qGByIrCIyouKY1ql1hc4tPNWJ/4E9fJbaVTsCVLOQ1giRoL6C+ vfRlQ8uJd2WFnO9Ox5SKaOzyLfeduhWEW16sYQMLWq4lhEYmFjTh63+ZF8SuD2IigJeT 5IPwBtkizH6KgMi/ZESbj2YzPiN7ATB/88oIMRzwZ9MIMMXVkSi2ezV1Njo3LTAuW9fl c2iooIyP0yAtewtzIJkP0tw3coJAyxYYxnTFQr22XM3h/1cH9TFnzxMdxJ3mwoU8JkTm vzDUMUCONJimm2Q/DHpAVCQ1qDJ8rHr7GGCcSfAAGRD8TTB5Sa1s/D5lni6HX1073ZML vtBQ== X-Gm-Message-State: AOJu0YyL6XWqXepSNDtyTo3hPspthBQvFLhjZyQBmpO1K39J4cnOM5JY vQLXpCDarmGEUT9dgdqfU6EFEGSkpeI8lWAGf4loYxWjUIJ+8WalA4lyqIkPqkMOXm74lVYOXbW KT0Wa2tQ= X-Gm-Gg: ASbGncvdg9Qgd1WQVOtvEMhUwyUzGYpLS5oMxIe44zoZzMKeF2UWvV96wkfN4NPEqbq JupPE76TndkPqAgHvdncrCadWHutITdFCLv6NOcrRUNAcO08srQJLVsAvYCdrU6oPYHw1l2aQp9 FmkXXFYTIQCHaazIoDrEPhtY9tQtfrV0WDJTU99zcgcK1hdrl1lkUGBUd0ZafvQZ953IztvOM0L u4bpN5gTYdWMhJNT+HoabNfk79EMvEGRr8UuxgjHAVJmDxiVFGwqLCZf2N44PgBCnXgNbZKITOE Pqo+5QQ1FyurkA3aR+5/QTyi6WNV4lrx/r4gtgdufKEtxNwxa7mhFxvjfxUqAP4laBzMRi3nOxh LekBbNmtG7c50Mhc= X-Google-Smtp-Source: AGHT+IG5fnlzp1l2kKRWKnzlpJ3Xfa76pYooR/IJ5BeDmyjxVNYzgMPfI9zJ6ya91x07h3jZ5DUdqA== X-Received: by 2002:a05:6000:3108:b0:3a5:2182:bce2 with SMTP id ffacd0b85a97d-3a5606b5088mr2861918f8f.17.1749736797434; Thu, 12 Jun 2025 06:59:57 -0700 (PDT) Received: from max.int.rpsys.net ([2001:8b0:aba:5f3c:9e93:4c2d:3b22:8e08]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a561976f13sm2089474f8f.4.2025.06.12.06.59.56 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Jun 2025 06:59:56 -0700 (PDT) From: Richard Purdie To: openembedded-core@lists.openembedded.org Subject: [PATCH 1/5] base: Add deferred class event handler Date: Thu, 12 Jun 2025 14:59:51 +0100 Message-ID: <20250612135955.1413300-1-richard.purdie@linuxfoundation.org> X-Mailer: git-send-email 2.48.1 MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Thu, 12 Jun 2025 14:00:05 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/218521 Use the new deferred class event to set the class overrides earlier. This improves interaction of the override with PACKAGECONFIG values that control conditional inherits (such as python support). This also allows toolchain configuration in an easier and more user friendly way. Signed-off-by: Richard Purdie --- meta/classes-global/base.bbclass | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/meta/classes-global/base.bbclass b/meta/classes-global/base.bbclass index 8215969c7bb..4ac3b83eb5c 100644 --- a/meta/classes-global/base.bbclass +++ b/meta/classes-global/base.bbclass @@ -267,10 +267,19 @@ def buildcfg_neededvars(d): bb.fatal('The following variable(s) were not set: %s\nPlease set them directly, or choose a MACHINE or DISTRO that sets them.' % ', '.join(pesteruser)) addhandler base_eventhandler -base_eventhandler[eventmask] = "bb.event.ConfigParsed bb.event.MultiConfigParsed bb.event.BuildStarted bb.event.RecipePreFinalise bb.event.RecipeParsed" +base_eventhandler[eventmask] = "bb.event.ConfigParsed bb.event.MultiConfigParsed bb.event.BuildStarted bb.event.RecipePreFinalise bb.event.RecipeParsed bb.event.RecipePreDeferredInherits" python base_eventhandler() { import bb.runqueue + if isinstance(e, bb.event.RecipePreDeferredInherits): + # Use this to snoop on class extensions and set these up before the deferred inherits + # are processed which allows overrides on conditional variables. + for c in ['native', 'nativesdk', 'crosssdk', 'cross']: + if c in e.inherits: + d.setVar('CLASSOVERRIDE', 'class-' + c) + break + return + if isinstance(e, bb.event.ConfigParsed): if not d.getVar("NATIVELSBSTRING", False): d.setVar("NATIVELSBSTRING", lsb_distro_identifier(d)) From patchwork Thu Jun 12 13:59:52 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Purdie X-Patchwork-Id: 64840 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 41EB7C71141 for ; Thu, 12 Jun 2025 14:00:05 +0000 (UTC) Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) by mx.groups.io with SMTP id smtpd.web10.14015.1749736800331058075 for ; Thu, 12 Jun 2025 07:00:00 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@linuxfoundation.org header.s=google header.b=axkt9jkj; spf=pass (domain: linuxfoundation.org, ip: 209.85.221.53, mailfrom: richard.purdie@linuxfoundation.org) Received: by mail-wr1-f53.google.com with SMTP id ffacd0b85a97d-3a376ba6f08so615086f8f.1 for ; Thu, 12 Jun 2025 07:00:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=google; t=1749736798; x=1750341598; darn=lists.openembedded.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=iKwEp/GUuU5IZihmYjeD/yJvRAS/jZ8FZBS41TGJ8pY=; b=axkt9jkjKJreIDVXiO1WYLdDedFC9Ux0JR6um1J1k4M+Hxkmy5HLuYG6Sv4qyS6yJU USkAHioAlxS+WAw7YL3I+vHxbmh7hkHytYKRGkOMbr6iVMoSKTnd1CpygYS8EjM3b7XU GORcc3BxQxx1O5cYjDnMBHPYRp0TNtJ0nVPDM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749736798; x=1750341598; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=iKwEp/GUuU5IZihmYjeD/yJvRAS/jZ8FZBS41TGJ8pY=; b=KQ7NabA1+at5qLerfuIlb3sfoBX8ALuTe4HyCVdcqUBILIZ8z+7Mu3qytTjgXDWN9v 71lHUBhr0UVULpXQyTHsGC9MMaYgSxZI3txGVgv+MWr5BcD7Fh9iemCmypD40hHdBfCc JvzT3P496ONLfNa5w6OXefivOwbCYWaFCYi54JaMYvpuBGIxISxtk5z1maQ/Z9HqBPP1 YgeDNrHKe77zVlFdNzmHcoyZ+x4DPMSwE3kmHOPOyDlBXqgBvs6bOicdgvbXbI9lle2q FiWmYFHdEQEwFOd0eeep2DpZLoZ9XWssN9lgnKudhUBfHRFCT+QqOdNVd4dnba5AO91c IG0w== X-Gm-Message-State: AOJu0YxjYAWCmza8kQZfEM55s6hyVEeX4oo3BT5W8JnMPYgAlWqbKyTX odotmxpDYpuGQ3ZXb3C2NZgz7NEgRCBLwnHRijrc3T4BE5DXzKthkEQ1wgobY/7ZvS8QRza0u8M fF03Na5c= X-Gm-Gg: ASbGncugrRY00kXLOB/O/X2VkB1OFpped6+VkIDYLa5BPWA+iy7ipMC5u7IgGNM52Bs a2MSIYXcz2tG+JYmjEF9DI46NwEtVtxFJDngI2UErBXuUZVCWDROJ0slo9ROfiAX6Q+//1TGpyL ZtRdykuy7ShXg8E3qJ1hznXURDS8l+rmQlQUP3EOhsWSZfFXsGsGG7HipPUYYvrQ+dGyjQSCFVf MjxQyAAvkRzHPgKQ9HfMdVby4Yusx9KN4yIoTNit/CuHeRaherp0I0pwh1wyU3Hnc3/PG50t+RX uEN0G/9BQYju8ngZ6w0GWHyS3LV0nnzVdMH99cPcolN8jw8X6Mo/aEBmiKL+1YHo6V8JNCveu04 U0nm/DSMuBCIDtj+ea8/8Yi3KnA== X-Google-Smtp-Source: AGHT+IGQFblq1fMMFKNLo2GCkhRZKmNK61SOpQ/plzZdAR+V2xZHK4253edMAPiOJT15X5EyRwaZCw== X-Received: by 2002:a05:6000:240b:b0:3a3:7387:3078 with SMTP id ffacd0b85a97d-3a56797ecd5mr5993f8f.4.1749736798259; Thu, 12 Jun 2025 06:59:58 -0700 (PDT) Received: from max.int.rpsys.net ([2001:8b0:aba:5f3c:9e93:4c2d:3b22:8e08]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a561976f13sm2089474f8f.4.2025.06.12.06.59.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Jun 2025 06:59:57 -0700 (PDT) From: Richard Purdie To: openembedded-core@lists.openembedded.org Subject: [PATCH 2/5] toolchain: Provide abstraction for recipe specific toolchain selection Date: Thu, 12 Jun 2025 14:59:52 +0100 Message-ID: <20250612135955.1413300-2-richard.purdie@linuxfoundation.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250612135955.1413300-1-richard.purdie@linuxfoundation.org> References: <20250612135955.1413300-1-richard.purdie@linuxfoundation.org> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Thu, 12 Jun 2025 14:00:05 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/218522 This implements a toolchain selection mechanism, defaulting to gcc as per the existing defaults. Introduce a variable called TOOLCHAIN, which denotes the familiar name for toolchain e.g. "gcc" which selects GNU compiler + binutils as default C/C++ toolchain or "clang" which will use LLVM/Clang Compiler TOOLCHAIN variable has a global fallback to "gcc" in configuration metadata. A distro can switch to using say "clang" as default system compiler by defining TOOLCHAIN ?= "clang" In local.conf or other distro specific global configuration metadata It is also selectable at recipe scope, since not all packages are buildable with either clang or gcc, a recipe can explicitly demand a given toolchain e.g. glibc can not be built with clang therefore glibc recipe sets. TOOLCHAIN = "gcc" Based on ideas/work by Khem Raj Signed-off-by: Richard Purdie --- meta/classes-global/base.bbclass | 9 +++++++++ .../clang.inc => classes/toolchain/clang.bbclass} | 0 .../toolchain/gcc-native.bbclass} | 0 .../toolchain/gcc.inc => classes/toolchain/gcc.bbclass} | 0 meta/conf/bitbake.conf | 3 --- meta/recipes-devtools/binutils/binutils-cross.inc | 2 ++ meta/recipes-devtools/clang/clang-cross_git.bb | 1 + meta/recipes-devtools/clang/clang-crosssdk_git.bb | 1 + 8 files changed, 13 insertions(+), 3 deletions(-) rename meta/{conf/toolchain/clang.inc => classes/toolchain/clang.bbclass} (100%) rename meta/{conf/toolchain/build-gcc.inc => classes/toolchain/gcc-native.bbclass} (100%) rename meta/{conf/toolchain/gcc.inc => classes/toolchain/gcc.bbclass} (100%) diff --git a/meta/classes-global/base.bbclass b/meta/classes-global/base.bbclass index 4ac3b83eb5c..4809cca27de 100644 --- a/meta/classes-global/base.bbclass +++ b/meta/classes-global/base.bbclass @@ -19,6 +19,15 @@ PACKAGECONFIG_CONFARGS ??= "" inherit metadata_scm +TOOLCHAIN ??= "gcc" +TOOLCHAIN:class-native ??= "gcc" +TOOLCHAIN:class-cross ??= "gcc" +TOOLCHAIN:class-crosssdk ??= "gcc" +TOOLCHAIN:class-nativesdk ??= "gcc" + +inherit toolchain/gcc-native +inherit_defer toolchain/${TOOLCHAIN} + def lsb_distro_identifier(d): adjust = d.getVar('LSB_DISTRO_ADJUST') adjust_func = None diff --git a/meta/conf/toolchain/clang.inc b/meta/classes/toolchain/clang.bbclass similarity index 100% rename from meta/conf/toolchain/clang.inc rename to meta/classes/toolchain/clang.bbclass diff --git a/meta/conf/toolchain/build-gcc.inc b/meta/classes/toolchain/gcc-native.bbclass similarity index 100% rename from meta/conf/toolchain/build-gcc.inc rename to meta/classes/toolchain/gcc-native.bbclass diff --git a/meta/conf/toolchain/gcc.inc b/meta/classes/toolchain/gcc.bbclass similarity index 100% rename from meta/conf/toolchain/gcc.inc rename to meta/classes/toolchain/gcc.bbclass diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf index e600d9d774a..9a91d6aa6a4 100644 --- a/meta/conf/bitbake.conf +++ b/meta/conf/bitbake.conf @@ -834,9 +834,6 @@ include conf/licenses.conf require conf/sanity.conf include conf/bblock.conf -require toolchain/gcc.inc -require toolchain/build-gcc.inc - ################################################################## # Weak variables (usually to retain backwards compatibility) ################################################################## diff --git a/meta/recipes-devtools/binutils/binutils-cross.inc b/meta/recipes-devtools/binutils/binutils-cross.inc index 9c371e7e137..c545ea2ad97 100644 --- a/meta/recipes-devtools/binutils/binutils-cross.inc +++ b/meta/recipes-devtools/binutils/binutils-cross.inc @@ -9,6 +9,8 @@ TARGET_ARCH[vardepvalue] = "${TARGET_ARCH}" INHIBIT_DEFAULT_DEPS = "1" INHIBIT_AUTOTOOLS_DEPS = "1" +TOOLCHAIN = "gcc" + SRC_URI += "file://0002-binutils-cross-Do-not-generate-linker-script-directo.patch" # Specify lib-path else we use a load of search dirs which we don't use diff --git a/meta/recipes-devtools/clang/clang-cross_git.bb b/meta/recipes-devtools/clang/clang-cross_git.bb index 9b9b120a3d7..323cc0d8809 100644 --- a/meta/recipes-devtools/clang/clang-cross_git.bb +++ b/meta/recipes-devtools/clang/clang-cross_git.bb @@ -11,6 +11,7 @@ PN = "clang-cross-${TARGET_ARCH}" require common-clang.inc require common-source.inc inherit cross +TOOLCHAIN = "clang" DEPENDS += "clang-native virtual/cross-binutils" #INHIBIT_PACKAGE_STRIP = "1" diff --git a/meta/recipes-devtools/clang/clang-crosssdk_git.bb b/meta/recipes-devtools/clang/clang-crosssdk_git.bb index 47ac96f4f93..ef162ef153f 100644 --- a/meta/recipes-devtools/clang/clang-crosssdk_git.bb +++ b/meta/recipes-devtools/clang/clang-crosssdk_git.bb @@ -11,6 +11,7 @@ PN = "clang-crosssdk-${SDK_SYS}" require common-clang.inc require common-source.inc inherit crosssdk +TOOLCHAIN = "clang" DEPENDS += "clang-native nativesdk-clang-glue virtual/nativesdk-cross-binutils virtual/nativesdk-libc" do_install() { From patchwork Thu Jun 12 13:59:53 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Purdie X-Patchwork-Id: 64843 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6AA78C71143 for ; Thu, 12 Jun 2025 14:00:05 +0000 (UTC) Received: from mail-wm1-f49.google.com (mail-wm1-f49.google.com [209.85.128.49]) by mx.groups.io with SMTP id smtpd.web10.14016.1749736801585265845 for ; Thu, 12 Jun 2025 07:00:01 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@linuxfoundation.org header.s=google header.b=CPhg19uO; spf=pass (domain: linuxfoundation.org, ip: 209.85.128.49, mailfrom: richard.purdie@linuxfoundation.org) Received: by mail-wm1-f49.google.com with SMTP id 5b1f17b1804b1-4531e146a24so6699985e9.0 for ; Thu, 12 Jun 2025 07:00:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=google; t=1749736799; x=1750341599; darn=lists.openembedded.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=/XNY8kOK7YPjSvD9xMMolu5NvYia8wEw10XBXajqs0Y=; b=CPhg19uOJAlncWgVokhEKzSVZdh33c3A7pQNaEpMYBHW1R5ZptZPLTFNNs8QDHJtR9 XAbadFe9R+efm5D0X9qzB3KgQJJ9IyVNYPzDX5YFU65T9fTkXtQw82Qn8twgZ9ahTa8c k0Ju60pa8tR6A9TbHe4mExPtaS23+4qpZFgAo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749736799; x=1750341599; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/XNY8kOK7YPjSvD9xMMolu5NvYia8wEw10XBXajqs0Y=; b=QREpzPk/YzxE5om1EcrGJ6J4JBCCA/6tOncNAC63oAbmwIr1nLDQj9pMV6PrUJyD1X b/4VcNsCr2JCC+3b4zB11pyOpGXPedFTubb+IbmiGyBsUJ1aE6dO4nbZuikPWeSYLR2l X4pVAJMEHQwMTA0wL7lklZW5gZMVBKpxd70MS/wMx4sLouM+OsYJmfmvyM9YpPIEU5Ke p+sBmtir66Zs2Yu+w62RqkVlbJFotwxkgkoPFQH7l0W/2b/ywrbXC2v60iauhtvkK8Vj wG+AKhBkJbO4BiRJLqB2STzUYfEzfcN3QI/gjXWLlpnFHmdp0RfemYAORBT452n49Dqs T0eQ== X-Gm-Message-State: AOJu0YxCY3PFWLn/sziTR6JEOZQV1yUnIp6pZtamGa8ucLSRMwh1fjjw M9oGTpAa/fEnwYp7CHndzlqoukhYH4Ca+1hDNB6Nq064G7j1HCYAe7Rx443jJnQvL+jbnptwHZQ nR7F8ayg= X-Gm-Gg: ASbGnctKwa9Up1HoqYuRIKVf4lSHZe4/vLa2iTLl6cq/XT9TatkJgOH9Yj7g6ZP4Zsu IsSUiYG5xtLgx0y1/4121kwd5K2XgviZyT0Ai3+xrRQIKpUl6v9qpspQAbcDNyuLYX3H9R23XWu eTdvEqLyEHN2ojQDZ5e17HEOgBJixJKZuh6ytL3Qok2p+jUu9a75cbD22SOqulFWP8VJjUKn/JM 8xe9hA/p6HqIWSHlFl5CVVuCt9MXsBgeYAUa29LBKO90U5BtWdodeYadVtm3qMLWJFtPvwfMANK bZzG1CydIq5l1KImdaBljTWh4DdIkbnG9U2YAAGE+OvIaPbA3kBxLk1WYGeH5HLMRG5taOyJT4w hqiJDbIu+zHmYQ9c= X-Google-Smtp-Source: AGHT+IHVcyptm3jXtGN3xNnB8jqijbQg4f5TYQXqDdPgZEMKckJfegZCwNs8X2MzVc1RL6IqG9prmw== X-Received: by 2002:a05:6000:310d:b0:3a5:52b2:fa65 with SMTP id ffacd0b85a97d-3a558688d7dmr6695153f8f.5.1749736799417; Thu, 12 Jun 2025 06:59:59 -0700 (PDT) Received: from max.int.rpsys.net ([2001:8b0:aba:5f3c:9e93:4c2d:3b22:8e08]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a561976f13sm2089474f8f.4.2025.06.12.06.59.58 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Jun 2025 06:59:58 -0700 (PDT) From: Richard Purdie To: openembedded-core@lists.openembedded.org Subject: [PATCH 3/5] toolchain/gcc/clang: Update PREFERRED_PROVIDER to work with multilibs Date: Thu, 12 Jun 2025 14:59:53 +0100 Message-ID: <20250612135955.1413300-3-richard.purdie@linuxfoundation.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250612135955.1413300-1-richard.purdie@linuxfoundation.org> References: <20250612135955.1413300-1-richard.purdie@linuxfoundation.org> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Thu, 12 Jun 2025 14:00:05 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/218523 As currently written, the PREFERRED_PROVIDER entries don't work with multilib since they are added after the manipulations by multilib_global at ConfigParsed time. We therefore need to spell out the configs correctly for multilib. To avoid variable overwritten warnings from the expansion, we then have to expand out the nativesdk providers usng class overrides. Signed-off-by: Richard Purdie --- meta/classes/toolchain/clang.bbclass | 21 ++++++++++++--------- meta/classes/toolchain/gcc.bbclass | 22 ++++++++++++++-------- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/meta/classes/toolchain/clang.bbclass b/meta/classes/toolchain/clang.bbclass index 8a0a2c315a2..d7b8a3657c6 100644 --- a/meta/classes/toolchain/clang.bbclass +++ b/meta/classes/toolchain/clang.bbclass @@ -14,15 +14,18 @@ STRINGS = "${HOST_PREFIX}llvm-strings" NM = "${HOST_PREFIX}llvm-nm" READELF = "${HOST_PREFIX}llvm-readelf" -PREFERRED_PROVIDER_virtual/cross-cc = "${MLPREFIX}clang-cross-${TARGET_ARCH}" -PREFERRED_PROVIDER_virtual/cross-c++ = "${MLPREFIX}clang-cross-${TARGET_ARCH}" -PREFERRED_PROVIDER_virtual/compilerlibs = "gcc-runtime" -PREFERRED_PROVIDER_virtual/cross-cc:class-nativesdk = "clang-crosssdk-${SDK_SYS}" -PREFERRED_PROVIDER_virtual/cross-c++:class-nativesdk = "clang-crosssdk-${SDK_SYS}" - -PREFERRED_PROVIDER_virtual/nativesdk-cross-cc = "clang-crosssdk-${SDK_SYS}" -PREFERRED_PROVIDER_virtual/nativesdk-cross-c++ = "clang-crosssdk-${SDK_SYS}" -PREFERRED_PROVIDER_virtual/nativesdk-compilerlibs = "nativesdk-gcc-runtime" +PREFERRED_PROVIDER_virtual/${MLPREFIX}cross-cc = "${MLPREFIX}clang-cross-${TARGET_ARCH}" +PREFERRED_PROVIDER_virtual/${MLPREFIX}cross-c++ = "${MLPREFIX}clang-cross-${TARGET_ARCH}" +PREFERRED_PROVIDER_virtual/${MLPREFIX}compilerlibs = "${MLPREFIX}gcc-runtime" +PREFERRED_PROVIDER_virtual/${MLPREFIX}cross-cc:class-nativesdk = "clang-crosssdk-${SDK_SYS}" +PREFERRED_PROVIDER_virtual/${MLPREFIX}cross-c++:class-nativesdk = "clang-crosssdk-${SDK_SYS}" + +PREFERRED_PROVIDER_virtual/nativesdk-cross-cc:class-crosssdk = "clang-crosssdk-${SDK_SYS}" +PREFERRED_PROVIDER_virtual/nativesdk-cross-c++:class-crosssdk = "clang-crosssdk-${SDK_SYS}" + +PREFERRED_PROVIDER_virtual/nativesdk-cross-cc:class-cross-canadian = "clang-crosssdk-${SDK_SYS}" +PREFERRED_PROVIDER_virtual/nativesdk-cross-c++:class-cross-canadian = "clang-crosssdk-${SDK_SYS}" + BASE_DEFAULT_DEPS:append:class-target = " compiler-rt" diff --git a/meta/classes/toolchain/gcc.bbclass b/meta/classes/toolchain/gcc.bbclass index 75f9abe999a..a5adb5ca372 100644 --- a/meta/classes/toolchain/gcc.bbclass +++ b/meta/classes/toolchain/gcc.bbclass @@ -14,14 +14,20 @@ STRINGS = "${HOST_PREFIX}strings" NM = "${HOST_PREFIX}gcc-nm" READELF = "${HOST_PREFIX}readelf" -PREFERRED_PROVIDER_virtual/cross-cc = "${MLPREFIX}gcc-cross-${TARGET_ARCH}" -PREFERRED_PROVIDER_virtual/cross-c++ = "${MLPREFIX}gcc-cross-${TARGET_ARCH}" -PREFERRED_PROVIDER_virtual/compilerlibs = "gcc-runtime" -PREFERRED_PROVIDER_virtual/cross-cc:class-nativesdk = "gcc-crosssdk-${SDK_SYS}" -PREFERRED_PROVIDER_virtual/cross-c++:class-nativesdk = "gcc-crosssdk-${SDK_SYS}" +PREFERRED_PROVIDER_virtual/${MLPREFIX}cross-cc = "${MLPREFIX}gcc-cross-${TARGET_ARCH}" +PREFERRED_PROVIDER_virtual/${MLPREFIX}cross-c++ = "${MLPREFIX}gcc-cross-${TARGET_ARCH}" +PREFERRED_PROVIDER_virtual/${MLPREFIX}compilerlibs = "${MLPREFIX}gcc-runtime" -PREFERRED_PROVIDER_virtual/nativesdk-cross-cc = "gcc-crosssdk-${SDK_SYS}" -PREFERRED_PROVIDER_virtual/nativesdk-cross-c++ = "gcc-crosssdk-${SDK_SYS}" -PREFERRED_PROVIDER_virtual/nativesdk-compilerlibs = "nativesdk-gcc-runtime" +PREFERRED_PROVIDER_virtual/${MLPREFIX}cross-cc:class-nativesdk = "gcc-crosssdk-${SDK_SYS}" +PREFERRED_PROVIDER_virtual/${MLPREFIX}cross-c++:class-nativesdk = "gcc-crosssdk-${SDK_SYS}" +PREFERRED_PROVIDER_virtual/${MLPREFIX}compilerlibs:class-nativesdk = "nativesdk-gcc-runtime" + +PREFERRED_PROVIDER_virtual/nativesdk-cross-cc:class-crosssdk = "gcc-crosssdk-${SDK_SYS}" +PREFERRED_PROVIDER_virtual/nativesdk-cross-c++:class-crosssdk = "gcc-crosssdk-${SDK_SYS}" +PREFERRED_PROVIDER_virtual/nativesdk-compilerlibs:class-crosssdk = "nativesdk-gcc-runtime" + +PREFERRED_PROVIDER_virtual/nativesdk-cross-cc:class-cross-canadian = "gcc-crosssdk-${SDK_SYS}" +PREFERRED_PROVIDER_virtual/nativesdk-cross-c++:class-cross-canadian = "gcc-crosssdk-${SDK_SYS}" +PREFERRED_PROVIDER_virtual/nativesdk-compilerlibs:class-cross-canadian = "nativesdk-gcc-runtime" TCOVERRIDE = "toolchain-gcc" From patchwork Thu Jun 12 13:59:54 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Purdie X-Patchwork-Id: 64841 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 69B57C61CE8 for ; Thu, 12 Jun 2025 14:00:05 +0000 (UTC) Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) by mx.groups.io with SMTP id smtpd.web10.14017.1749736802567298340 for ; Thu, 12 Jun 2025 07:00:02 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@linuxfoundation.org header.s=google header.b=KNnFtkm0; spf=pass (domain: linuxfoundation.org, ip: 209.85.221.54, mailfrom: richard.purdie@linuxfoundation.org) Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-3a503d9ef59so897533f8f.3 for ; Thu, 12 Jun 2025 07:00:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=google; t=1749736800; x=1750341600; darn=lists.openembedded.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=GioE57BBY8UyN2SZBI1lXeVktD18H4WP/qfdGUAYbOs=; b=KNnFtkm06EcqHMKLg3cjmEF1KUNbsu9rdLTHqAKQ2wHrl1u8b03RQxuunECYz3pjXp O+CVa2ySAG0/qWOarOlpqYxyFRsC9bKnvUsJuMinEagi9gXQEkmOP1bSo8tlz8d408v5 mkoaj8Q4E8RNmqy3TXwkb+EzpjxCd16kOPY5M= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749736800; x=1750341600; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GioE57BBY8UyN2SZBI1lXeVktD18H4WP/qfdGUAYbOs=; b=EHRHMHD5AV78krNV4p7vg/zzWTZfrJ6uhul266ICIv0K2mB5yhEoWYb/yKt4a2R9pG wPY1dY1/K3MXOGRdSuMaEkFQGutN1WZQhj5Qcv00MWseGieTyCakgoOFTJYCn5QZI7We KpQvR20zGBb0osmXLyoJRW07S2KWHeeGLFkH1MA/mX3JSuKAxwZSTAJzaFrxOtMvZBfa ODn+XAkKVtmMKOVRlLbXpwDf8H6eclPsB9NSl0mvSfRdpNZZBoYQ1jUNxZQ3AtoHs6mA x1gMYByD/xdc4ba0a3IwLFi22frqHweAN7ji56/9ycRCIR+/IRBKxxl23wQA5mZd1nAh ZurA== X-Gm-Message-State: AOJu0Yxw85LLMai4wblcSdB/2XWuOGOhpjrxpaJNuuZkdOzNGo7sfJP1 i8YeXPeVcyRN2XhIV6a4E8zTjgaWnBrkWpogRfd/3eUkECzmj7/lANcBZ/txw1ZTtCZMhOuCA+U akxZtZ5g= X-Gm-Gg: ASbGncu4i1CzM+I/s98UVMOVqU6/HxFORcGFpcZAy3bnzDZx6o9b2c/Fk0X9XvykU+k XaJyCPWYGy3PFeK6ogqUTCIeTmDW59jxpXodWC75mnjPxzilhv3UQrsAkIYOhkoOzrHu8IHA1Tn aAJlml84GsE4qtMpTl/WD1/KOTPjW5Ge20s4N7GdLzaEPaFRHbQXj3v52kDCb+uL1YDPMNrpYLx iBM1jp9xbmJdYPIM+FNGoK4Bw7ZxKvw1JoSZHKoQCf7cKAI7KCmip2A9qJWmFAUbVDZi9mxypVn lY+na5ha4+BELNmDvZNMmFVifalQLgy0ppKYb7S04dBgod0duYfdyU4wLYqnhwCuBkgJJD7lP+f t/FdXfbgOxjdZxPw= X-Google-Smtp-Source: AGHT+IE6R8O0cRUOE///ZifmIVqckerAWN9k1UbTEpgLokDI+4xU/VjVYKhCzmX68mnTtfOxTs/eDg== X-Received: by 2002:a05:6000:2c0d:b0:3a5:2e9c:edb with SMTP id ffacd0b85a97d-3a561309c8amr2826227f8f.47.1749736800521; Thu, 12 Jun 2025 07:00:00 -0700 (PDT) Received: from max.int.rpsys.net ([2001:8b0:aba:5f3c:9e93:4c2d:3b22:8e08]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a561976f13sm2089474f8f.4.2025.06.12.06.59.59 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Jun 2025 06:59:59 -0700 (PDT) From: Richard Purdie To: openembedded-core@lists.openembedded.org Subject: [PATCH 4/5] bitbake.conf: Automatically defer native and nativesdk inherits Date: Thu, 12 Jun 2025 14:59:54 +0100 Message-ID: <20250612135955.1413300-4-richard.purdie@linuxfoundation.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250612135955.1413300-1-richard.purdie@linuxfoundation.org> References: <20250612135955.1413300-1-richard.purdie@linuxfoundation.org> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Thu, 12 Jun 2025 14:00:05 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/218524 Signed-off-by: Richard Purdie --- meta/conf/bitbake.conf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf index 9a91d6aa6a4..af3465b5b1f 100644 --- a/meta/conf/bitbake.conf +++ b/meta/conf/bitbake.conf @@ -947,6 +947,8 @@ BB_DEFAULT_UMASK ??= "022" BB_CONSOLELOG ?= "${LOG_DIR}/cooker/${MACHINE}/${DATETIME}.log" BB_DEFAULT_EVENTLOG ?= "${LOG_DIR}/eventlog/${DATETIME}.json" +BB_DEFER_BBCLASSES = "native nativesdk" + # Setup our default hash policy BB_SIGNATURE_HANDLER ?= "OEBasicHash" BB_HASHEXCLUDE_COMMON ?= "TMPDIR FILE PATH PWD BB_TASKHASH BBPATH BBSERVER DL_DIR \ From patchwork Thu Jun 12 13:59:55 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Purdie X-Patchwork-Id: 64842 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 69C2DC71148 for ; Thu, 12 Jun 2025 14:00:05 +0000 (UTC) Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) by mx.groups.io with SMTP id smtpd.web10.14020.1749736803621089633 for ; Thu, 12 Jun 2025 07:00:03 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@linuxfoundation.org header.s=google header.b=AMD1aBDQ; spf=pass (domain: linuxfoundation.org, ip: 209.85.128.41, mailfrom: richard.purdie@linuxfoundation.org) Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-4530921461aso8803475e9.0 for ; Thu, 12 Jun 2025 07:00:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=google; t=1749736802; x=1750341602; darn=lists.openembedded.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=1esL3ed/r/GNubkaHgXL1/tdMMEZUUMXaF8KZ70WKL4=; b=AMD1aBDQfjclaXq8YmpKIomGs+rCxb4/4rWhlIQfTdbjzYylszAURwOxk99VB8EJS4 V8nk1Z7Q8yrvL+RBXPFqzuL4I8JByArVmJE9iBTdFWcqsWKKFCfKPRaLPJ6ymvMcxtUu qR6jL8bhKF4XdiWaYCx/A1RhaLYI5BdxPnPyA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749736802; x=1750341602; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1esL3ed/r/GNubkaHgXL1/tdMMEZUUMXaF8KZ70WKL4=; b=FP73YtEujgb0evr1NVigj6XiJw06ELkXKkY/LFuGD48js17SlYbl2nTPJUh8EaZwe1 TXyrjUghsqohECduRgcKeI7L4irmqJ3ivEB7Z5K1P1CNvbvOCW6f2z7Jk/6LRwpYOS3m bzWt5RPQamsAXOaL6k7h4NFrqjad2jXB6P9GkyDK4SCtYLfp1PZUVXUuzhYLnWaDWP6m OLRDCa3Lx6Q8Yb0Y46CrklrDhxQRXA/iiF2Y4K+v3VZVpk2hnaVwwMcxKdPEWjBhwO+b urwWzYsGcUnhQkoXR6TArSpjjUWe1RDMyQcCXqgDSbhVMuGtLxpnehxikYH4V5jpVC4c 7XIQ== X-Gm-Message-State: AOJu0Yx8Zm2WNCsANViSnXfaOahlUJQ+hrH/HB0tYiNw6kzFQwQQPXIP H62AGzVbp23Lyf4ii71j/BsS/4fLNDGEQVtGHGQLk+heg1NIItWi/sdaHPixmMz+R4EgzXZWwzK Dk7O+mjo= X-Gm-Gg: ASbGncseVHffA7QWNm/L0kUoPkW7QgMUdoK9hSo1XBxmv3Lrb7119/fzEGWtxNEByF4 k2ZAElmdqw12rHndcI98XWr90UToSrs9XdjkIBq5USUCQ/j3p00I5zUI2lxPaiwUZI6bb70qvmx G0xyokxiNoAimBSf2wrrxQKD7r5icHrW/TvdiTO0rI8zV57JCUHrdZ4Jj5Yc2VrNLb2kbmmL75T fieeRM7DAv0JT3Q5/W4+z95+L6ggh4s39hwLGNwFnuJA+62VLGOnpxZ9hRM7upXzSFESX/FG+9W 22nqkBmDhs0jTrjDCQpiOptEbemFoY/o5Htw1/vi4SdnDRAmH5YfaoBEOPr0aU3AiDFrHsZj2ox cXlR7D5MmXBxVem8= X-Google-Smtp-Source: AGHT+IEsfmaB816xs9jbpRmxmClFvgMdLK+vgj9+VfH2iBig2nbWxyiYfTaoKg5dwvw/yW94Ekfv7A== X-Received: by 2002:a05:6000:2c0f:b0:3a4:ed10:c14 with SMTP id ffacd0b85a97d-3a55869b2b9mr6222703f8f.14.1749736801596; Thu, 12 Jun 2025 07:00:01 -0700 (PDT) Received: from max.int.rpsys.net ([2001:8b0:aba:5f3c:9e93:4c2d:3b22:8e08]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a561976f13sm2089474f8f.4.2025.06.12.07.00.00 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Jun 2025 07:00:00 -0700 (PDT) From: Richard Purdie To: openembedded-core@lists.openembedded.org Subject: [PATCH 5/5] cross/crosssdk: Allow deferring of these classes too Date: Thu, 12 Jun 2025 14:59:55 +0100 Message-ID: <20250612135955.1413300-5-richard.purdie@linuxfoundation.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250612135955.1413300-1-richard.purdie@linuxfoundation.org> References: <20250612135955.1413300-1-richard.purdie@linuxfoundation.org> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Thu, 12 Jun 2025 14:00:05 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/218525 Signed-off-by: Richard Purdie --- meta/classes-recipe/crosssdk.bbclass | 1 + meta/conf/bitbake.conf | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/meta/classes-recipe/crosssdk.bbclass b/meta/classes-recipe/crosssdk.bbclass index 824b1bcff47..3541c2c393d 100644 --- a/meta/classes-recipe/crosssdk.bbclass +++ b/meta/classes-recipe/crosssdk.bbclass @@ -4,6 +4,7 @@ # SPDX-License-Identifier: MIT # +BB_DEFER_BBCLASSES:remove = "cross" inherit cross CLASSOVERRIDE = "class-crosssdk" diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf index af3465b5b1f..f085a0f7475 100644 --- a/meta/conf/bitbake.conf +++ b/meta/conf/bitbake.conf @@ -947,7 +947,7 @@ BB_DEFAULT_UMASK ??= "022" BB_CONSOLELOG ?= "${LOG_DIR}/cooker/${MACHINE}/${DATETIME}.log" BB_DEFAULT_EVENTLOG ?= "${LOG_DIR}/eventlog/${DATETIME}.json" -BB_DEFER_BBCLASSES = "native nativesdk" +BB_DEFER_BBCLASSES = "native nativesdk cross crosssdk" # Setup our default hash policy BB_SIGNATURE_HANDLER ?= "OEBasicHash"