From patchwork Mon Jun 9 09:59:30 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Purdie X-Patchwork-Id: 64552 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 04C8BC61CE8 for ; Mon, 9 Jun 2025 09:59:45 +0000 (UTC) Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) by mx.groups.io with SMTP id smtpd.web10.56095.1749463177767398612 for ; Mon, 09 Jun 2025 02:59:38 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@linuxfoundation.org header.s=google header.b=ZFEMyghz; spf=pass (domain: linuxfoundation.org, ip: 209.85.221.49, mailfrom: richard.purdie@linuxfoundation.org) Received: by mail-wr1-f49.google.com with SMTP id ffacd0b85a97d-3a375e72473so1986662f8f.0 for ; Mon, 09 Jun 2025 02:59:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=google; t=1749463176; x=1750067976; 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=pkH1XSB4h2RpUKR4pDQRf5i5KhpV6rTWtiUrF4KzLmY=; b=ZFEMyghzpAR7MsACtHtcavzF5Sz1WPiLDMduHFGKuibhGzoQPN/vv6qpK0Yc7E08ME K8XBrvjHNgMCnO2B1HQ7a9/v8kDCE+zh8QmVmrvmlvUYcizPrTmQCW95jcP0vUrLHTDm 3CwHMMi6gxzZ9h7XOC2a6yKLGYTfUz6+sb77E= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749463176; x=1750067976; 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=pkH1XSB4h2RpUKR4pDQRf5i5KhpV6rTWtiUrF4KzLmY=; b=c1JVK8X/1t8CkrxKuQdwro/uEVOEvgdQiAKngmUhSPn/xnkft7dlDFkNiH6XbtvNzk 3lJxzxkQ+ti6zolJrD5h4tTQa2yGtLQ0aUPDKNB3NhxpMmLH8INsKgmAsk7f5MFBV9/o rr3svP6r0wQ2LwyPlo97MPV3o4Yod6hkuVQWvmL9eAkrQdc4wWWuVm6yff4oYG25ynSZ r5V+uqeHfkDSqEE2dB27wLEDYJ5C3LrWLRVUh2coyttdnGCZpEI/6gX30F3M96xOR3h2 4Es2GCGInG0V0mFkDuT8BOdn40aGSRQDEYKAfN05QMr70NgMVLBSREF6i4GNVyuLiEW3 c7PA== X-Gm-Message-State: AOJu0YxRL2809/h+GFKkdHBJ0ckui34nqyROSk2tQPLFJQQOXR423M2f YtAxgAnf18MRAv1F0BPuG128w18/6a3TWqAL+bJsOWLUOj8Ct6n5PG/MHXy4J6ua1Xy+OeZfdfE YCjnPTgo= X-Gm-Gg: ASbGncvXqt4iFxIA0Crd2nxNacICYzyj5w0vo3cGMR2PbSuzJ4IhGnUasXJNJBMHT8/ YFAgAOfWBkN/BtEsybnJIeQz6283GjAjv+IdDzVEpOMeepY1BRxqjZFz4dx+GXGGopnY7Wf+SaK L4219YwkhEhQLf34ofvpRoVDmU8M92Ix+DMtXE3tSc6uuuzJCRGvBEYBn2SZGJ4nGq0+aOahIzj fm+lGATw6Na8LUN8TOenzPDM45dXG2qEn/eQnrwAfOpEd7O+j+zMQGmHjQLiUEpBHT6BOL795WT 4SGM3/96q2ipBgCgxoJipieNK41lMQSl/AX7novGud9dXn/AKFPV37Fee5UA3zYTV58DkpG1t1V PET/y X-Google-Smtp-Source: AGHT+IHo3JhozQ7F2xqXAE3rY1etes+JoVS0i3oCDJwTfVve1VjzZFtcFhHW64HwjeW1v7RWeGkMYQ== X-Received: by 2002:a05:6000:2504:b0:3a5:2653:7322 with SMTP id ffacd0b85a97d-3a53188a710mr10401520f8f.3.1749463175753; Mon, 09 Jun 2025 02:59:35 -0700 (PDT) Received: from max.int.rpsys.net ([2001:8b0:aba:5f3c:fa9f:168d:c475:ba8f]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45209bc6d6dsm106289785e9.3.2025.06.09.02.59.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Jun 2025 02:59:35 -0700 (PDT) From: Richard Purdie To: openembedded-core@lists.openembedded.org Subject: [PATCH 1/5] base: Add deferred class event handler Date: Mon, 9 Jun 2025 10:59:30 +0100 Message-ID: <20250609095934.937987-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 ; Mon, 09 Jun 2025 09:59:45 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/218256 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..a9b0fdd1f10 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. + if "native" in e.inherits: + d.setVar('CLASSOVERRIDE', 'class-native') + elif "nativesdk" in e.inherits: + d.setVar('CLASSOVERRIDE', 'class-nativesdk') + return + if isinstance(e, bb.event.ConfigParsed): if not d.getVar("NATIVELSBSTRING", False): d.setVar("NATIVELSBSTRING", lsb_distro_identifier(d)) From patchwork Mon Jun 9 09:59:31 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Purdie X-Patchwork-Id: 64553 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 0F720C61DB2 for ; Mon, 9 Jun 2025 09:59:45 +0000 (UTC) Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) by mx.groups.io with SMTP id smtpd.web11.55669.1749463178951348091 for ; Mon, 09 Jun 2025 02:59:39 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@linuxfoundation.org header.s=google header.b=HjL/Xi4e; spf=pass (domain: linuxfoundation.org, ip: 209.85.221.41, mailfrom: richard.purdie@linuxfoundation.org) Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-3a525eee2e3so3028479f8f.2 for ; Mon, 09 Jun 2025 02:59:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=google; t=1749463177; x=1750067977; 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=Lkm3LIzKDjhR8UV0RQbk+g3MTkgVthoK3TPv0iWIIU0=; b=HjL/Xi4exF7d9NZxBkuojWC+77ZXjk9B2tBBEglbm9AjE6GCE3Sx498iCVtsm16Cb6 aZFDyGhxDqJvDDpGE6D5aDlQVhsjlPw68awFEC9+Q2QhFB3HlIEvQkSmNLzIiXLXtNpj U6egkfD17ryGW7nxGY08yEfIGXOX/dsTP0KLw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749463177; x=1750067977; 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=Lkm3LIzKDjhR8UV0RQbk+g3MTkgVthoK3TPv0iWIIU0=; b=bQawOnUcwiQ1zYjRX2o3AWr7FilEKtk/CwTjON2AeOckORyGqHaWYLRYRYFGEfDQFq RwRcvhBn1IdDuav2xTeNXlQGa+EH989juGcWI5UJ2665Yk7AH2fKlqU9yhyvDo5AJHqo EiUY5be/mnIxPEhe8X4YSW02zHigsYWQqaus1wmQ8AXNLBqNUw0CsZ6ooTNXkLEzBJUE UclAVZnrt/YN58MWGbQczcZhBQPlM9GB21MWZ4uZS1XWm+xMr3PDg1TtKsOhFPtIYj7v JlzKQCI6cxm+FwCDylj3H22T2c8cLdd9ZtvUJsEtAvMltfPiG1ddPY1cuAUtq/WL5PdA aU4w== X-Gm-Message-State: AOJu0YyOaN8IGt5I0lv9McQIi1C0tjwiO6aPCX9scsvY4Uy3B7J7itHw TN84KOKuGeyOaMMoHWpN0w+TpUwLHM7cPuCIZTB1cWUJxUfL4qB8GTYRZNrYgk+dmjfj+1iQejy 0xj6KRXA= X-Gm-Gg: ASbGncscAz3agOJgSU1naUk24vWVWABKYuxxvkqtFLLu0Ye0ozAkPfgSe6J/rMRGnfh x48y/kDPhgI/vwpD2PkvtdDc5rfeSgP+WRv8FFxbR1bqdYlLX4i0NsDI4xquD0WpJfVCWoZnZzi zgld5g7aAgsuKI7haqU7CrmOtxFJTzh6MBfUk4Hejv9jOe42CnQ3mMzEeEnKx0MXTL9BZiJ0rhO /RxDKuzaFNVsz1xZ/W8dHr54+jCQZD5gb0M+dri3a6dTrHEfo7u+jfWzhAVFVDbh6Qf+6psAhO1 t/jr+CuO2HGAckyge/qyxKhcl5ps26Q6rgPuaxxc/TafoNZCzUOBHwmoEKsU+AUq/WXsJLBmuNe x6TqeCxyPSpHgiLMPVJ8iejsteg== X-Google-Smtp-Source: AGHT+IGCbBYgWsGyT8fssN4j3bwqPvFxFb81FpRvEbdEWP3AKMt1x1PmRozgEpx2AkgYRqYxyNL01Q== X-Received: by 2002:a05:6000:3108:b0:3a4:f7e6:284b with SMTP id ffacd0b85a97d-3a53178422amr10250058f8f.10.1749463176882; Mon, 09 Jun 2025 02:59:36 -0700 (PDT) Received: from max.int.rpsys.net ([2001:8b0:aba:5f3c:fa9f:168d:c475:ba8f]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45209bc6d6dsm106289785e9.3.2025.06.09.02.59.35 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Jun 2025 02:59:36 -0700 (PDT) From: Richard Purdie To: openembedded-core@lists.openembedded.org Subject: [PATCH 2/5] toolchain: Provide abstraction for recipe specific toolchain selection Date: Mon, 9 Jun 2025 10:59:31 +0100 Message-ID: <20250609095934.937987-2-richard.purdie@linuxfoundation.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250609095934.937987-1-richard.purdie@linuxfoundation.org> References: <20250609095934.937987-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 ; Mon, 09 Jun 2025 09:59:45 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/218257 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 | 6 ++++++ .../toolchain/clang.inc => classes/toolchain/clang.bbclass} | 0 .../build-gcc.inc => classes/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, 10 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 a9b0fdd1f10..f449d7dcabb 100644 --- a/meta/classes-global/base.bbclass +++ b/meta/classes-global/base.bbclass @@ -19,6 +19,12 @@ PACKAGECONFIG_CONFARGS ??= "" inherit metadata_scm +TOOLCHAIN ??= "gcc" +TOOLCHAIN:class-native ??= "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 61c6a492bcb..c011c943d42 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 Mon Jun 9 09:59:32 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Purdie X-Patchwork-Id: 64555 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 13CA4C678DF for ; Mon, 9 Jun 2025 09:59:45 +0000 (UTC) Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) by mx.groups.io with SMTP id smtpd.web11.55670.1749463180116016557 for ; Mon, 09 Jun 2025 02:59:40 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@linuxfoundation.org header.s=google header.b=PGcMEnBq; spf=pass (domain: linuxfoundation.org, ip: 209.85.128.50, mailfrom: richard.purdie@linuxfoundation.org) Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-43ea40a6e98so53244005e9.1 for ; Mon, 09 Jun 2025 02:59:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=google; t=1749463178; x=1750067978; 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=PGcMEnBqzvkxoOQYJUlzeA06bICv8d9JLdRzskQ/k0chdU8V/h5kPKbQplRQptQ6KI v0hmBwPQSF1p/ZD2maNVMcVadActeRZ2OX4rN43CKIthjJCFOdGWfe3b/m3LVNngxvVl RNPVlmIHcCl/9RYbU5GG+XQ/f9z9trJbZ5Lh8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749463178; x=1750067978; 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=nudAAysXbIKhAVejEI/qughXxB/PS+QXDKXnxkHdwUaiT9dIjWM0pCTI2itfCC0D50 DWfGXDBruNhnVcJMtLL5iyCiG2XjaTPGOqj30mg+wYAJz5TnnMMxnRhYdszK1oXkDt5a VgYX7uODoCRn0oAU4tKti6WntOWhoXLJusOD+nQuzUBkYt5bR4BjpdhN7BWs33sJOGtO rDcbjNe5QXd0B+tXdipzyoe24dYhiNJNuPp7pWvpsMdV/rDloH3x1Vm6jMaoM3FxjUMe A6rrmCc8fm82Alb5aWI0Vf05t2lRmXmGWzqrZLOecYjMbhDkiM5kRAz3JC8iRDV8b1Md BKHQ== X-Gm-Message-State: AOJu0YwtBBl6xy0t7DYxYhUcpcfZ+8oDpHD9wjj45O6LP0TKq7m4b8DL t4w1YXdiOq6gyFQ/PxLOg6Pf0x2Ru3cJDB3QRLcc8N3ebZE2EluewuQbSZunHtw7/cSGjeVpl3v CDOsJD/c= X-Gm-Gg: ASbGncv5YXt2RPxSJtpQ9N7IYwLA0YToeecwM8nmJTA4a4ZL0XXlobu3gpmosPoviaX VHCrKGlF8TyCT+vyNYJ0BSiVGns/SLKlM2zZeShFiSfT4VmaFH7OvnadwPV/lzcG14ABwTwWl0C i9AvpeNCL/gaPBpBrJmrPx2nRwsr4rsCT24NvmCZzn30KMcJ1USCyBCX6n/62hU5tLZRQvLaHCv bfUtfrkxx8Yj53Vk4XLwxg7WOasmMlrktMd8Nbda/EAz7bXKgBi6YjrMftGvrPhLNisOmyQmZ0v rfVGjg4asScb2AyM5IHfeRt4z+IH94Zv4Vstc1eXvTM0vIj1tKbkilwrnfq087hoXacB6xeunsx SJNtjdcuiEsHSyFiTWWBy+9KXfg== X-Google-Smtp-Source: AGHT+IHM1Z3ER68BaB4jGupIrPDWQ0rZftbcsoWotT8oPtO3dkU4LalynuVkxk7q5b2A0YxErlsAHw== X-Received: by 2002:a05:600c:8b43:b0:43d:fa59:af97 with SMTP id 5b1f17b1804b1-45201427c5amr100648455e9.32.1749463178063; Mon, 09 Jun 2025 02:59:38 -0700 (PDT) Received: from max.int.rpsys.net ([2001:8b0:aba:5f3c:fa9f:168d:c475:ba8f]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45209bc6d6dsm106289785e9.3.2025.06.09.02.59.36 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Jun 2025 02:59:37 -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: Mon, 9 Jun 2025 10:59:32 +0100 Message-ID: <20250609095934.937987-3-richard.purdie@linuxfoundation.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250609095934.937987-1-richard.purdie@linuxfoundation.org> References: <20250609095934.937987-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 ; Mon, 09 Jun 2025 09:59:45 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/218258 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 Mon Jun 9 09:59:33 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Purdie X-Patchwork-Id: 64554 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 206C3C677C4 for ; Mon, 9 Jun 2025 09:59:45 +0000 (UTC) Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) by mx.groups.io with SMTP id smtpd.web10.56096.1749463181183860339 for ; Mon, 09 Jun 2025 02:59:41 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@linuxfoundation.org header.s=google header.b=Cb/V0hDR; spf=pass (domain: linuxfoundation.org, ip: 209.85.128.53, mailfrom: richard.purdie@linuxfoundation.org) Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-45305c280a3so3509895e9.3 for ; Mon, 09 Jun 2025 02:59:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=google; t=1749463179; x=1750067979; 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=pZ4eZNRINUFTEv6D5Lu8yzKd6+2EHQArhNenUnM5i/I=; b=Cb/V0hDRBTR7YvM0xyaUQMDfYFl8x1ENCf4xAYeMjwhLRDxtgDSpnIrOOdEHA3RZ5y CupnGvRZlUpCyCaatTk2y7/XMi8IL1bxop6NMcET73i4Yx2gjwJCtGmWWQ/KI5bNOXui /i/ZUqOdnwJIUYnKwL6TazhQPcoR2BnJpHAt8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749463179; x=1750067979; 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=pZ4eZNRINUFTEv6D5Lu8yzKd6+2EHQArhNenUnM5i/I=; b=Q1ZPNYJI9xLqxChscJDxKFBi69b9P9Mnl88vEyK3lZA2BhzGXiS3t/CG03tK3fmcbt k6AH8IxZGgajjzyZ/uwxWLhau5sQ59u6+IiD6orNAARM90a+ssolicvOS8RmUP/TjqxU YBPeIbu7RMlp/GWi31zkiKvL7OuTKLFLXCP18MenC8j1bv02ACc20nNuQwg2u6iYg6bS 6OO85K/u1OdXtIP65wH2HfzvcuppWK5lnGqK47OdqeuktK5DzOSaOs7UqLC7uIurPdHm CrFuwr3UweSf8lB92d0xasTlzUSveNhTU7CIOWLW6e5piE3hkgdEei0U2W9MCKtYMjbU 3EGA== X-Gm-Message-State: AOJu0YwzQGC8N+D8uWZt4AKPCx34UMYg+iK+ml78V+ZrSj/EO4i5pHI9 5sCP3cTL8LNhyqourEyBahvVHelRK/xZR1M3QrY1U9MEXIFpV8TxvFVrZdEirDsE/ctHnGliF/X ntyHBvjw= X-Gm-Gg: ASbGnctjE4Ax1ikXMlHSag2rv/GRSh7LEEvnx5I7Z5N4Jbr8OU2wYRzA0rZOJXcbDVN GQnXZgtmTTzrxujC2VujIwtZpXM/uCJDRv9IsIxQLtTW4Mi0xmdlnyQLulOhaz1a8rwi0Yc0BHK hql5xbRd+Xh2gBh+pVM4hh4aPk9qJQERpo5QKPgjh2P2BTCbZB3IxzJTGVFAE9M41wTYDRC3mWK yypZrCoT/M8tsWruYVAxo+ta01KpeCBmBF56Rq2BuSHuO7YWDTqfaeVFraWEi3AjaRvbX4t8Qdd 4j0J5rl1wMdHpC8S+qjlWzeH7t4R7h4MS5wtCqW79mwIdd40lmsncrt3j8a3hh9dYDVOc5mRZAf HF3O8 X-Google-Smtp-Source: AGHT+IF2C6YgHpSw6LmDUAYlpNzh8rh7sV/3G4i2KN4lcbFpQ6REUhAPnz+/UlHaR84j/oSKCElqaw== X-Received: by 2002:a05:600c:1e1d:b0:442:ff8e:11ac with SMTP id 5b1f17b1804b1-452013898cdmr125175105e9.12.1749463179206; Mon, 09 Jun 2025 02:59:39 -0700 (PDT) Received: from max.int.rpsys.net ([2001:8b0:aba:5f3c:fa9f:168d:c475:ba8f]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45209bc6d6dsm106289785e9.3.2025.06.09.02.59.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Jun 2025 02:59:38 -0700 (PDT) From: Richard Purdie To: openembedded-core@lists.openembedded.org Subject: [PATCH 4/5] bitbake.conf: Automatically defer native and nativesdk inherits Date: Mon, 9 Jun 2025 10:59:33 +0100 Message-ID: <20250609095934.937987-4-richard.purdie@linuxfoundation.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250609095934.937987-1-richard.purdie@linuxfoundation.org> References: <20250609095934.937987-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 ; Mon, 09 Jun 2025 09:59:45 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/218259 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 c011c943d42..5cda0e474ab 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 Mon Jun 9 09:59:34 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Purdie X-Patchwork-Id: 64556 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 064ECC5B552 for ; Mon, 9 Jun 2025 09:59:45 +0000 (UTC) Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) by mx.groups.io with SMTP id smtpd.web10.56097.1749463182305611214 for ; Mon, 09 Jun 2025 02:59:42 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@linuxfoundation.org header.s=google header.b=eMghwXC0; spf=pass (domain: linuxfoundation.org, ip: 209.85.221.45, mailfrom: richard.purdie@linuxfoundation.org) Received: by mail-wr1-f45.google.com with SMTP id ffacd0b85a97d-3a503d9ef59so3422211f8f.3 for ; Mon, 09 Jun 2025 02:59:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=google; t=1749463180; x=1750067980; 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=l/HdiM27TpldNt9iXnG9Yfmfb7pGoxEUyhlx7tTSLlY=; b=eMghwXC0WYV4uwGPDk2kaopLphXG3ag8I3XDYyXUnTA8kRd2W+/6oDtr8maqCzhndJ 6arvfl5PAgRhG8eIiJovxp8AJBdIgpD9vJEfjsXtlBXuaFauQ/RvupmZ8OWdo+s1ITjT Sv9sSOQS2BTQj34xZwMhr/ffXCLpQf2x0HorA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749463180; x=1750067980; 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=l/HdiM27TpldNt9iXnG9Yfmfb7pGoxEUyhlx7tTSLlY=; b=e8CFx/WDaMieYkeX2kGjFpMox1m2zpxwMPPkZzAxSfTBkGNzTiE0KylyxPR3XGEcf1 1uCYy60eDRlEckF7s4DpbJ/bmoZrWT1+r8INaCI+buVQUwzZU44nrXQjSS/USPCT+4Bh vE1vLMj6IuLYe48V5Mj6n8rmtl8q215ynCaH6PJEoqjrnC0w9XXTfKd80jeTt6KrhqFk JxAIQhbYuriQ6eLJqwx1LvS5o8PXKdtQHtrMhfJMKr0561cjnv5omokUj7GJrs7E4dgZ UdOREdcrR4lAsoeZ+aSiDbFVGFOnKnQq7sgfQemcJQBWEgqNGLHq7rYnG4sEiTX2j62F DAMQ== X-Gm-Message-State: AOJu0Yxy/wLfAycoC/EgBt2SWoi7TBAro9ePiYXbM4FEDH+GCBiLm6Co 4HQvBX9j8D26D8lM7sqKuxzPL/bDwTjaxKoE2jqVYl5V5tf/UTIC9QbxkbWkzUeMccVt5soPSHT MvTl0yzE= X-Gm-Gg: ASbGnctB6oKZUykAbbs9bVSSV35MiWOymtYgfFEd0w14ukGd69S67azyaNxhQu7iSc4 sOhpe3t7LLsD7wkYWgCfU75u4FXODHJKTWrmL2ZlCU1QK+vJluhZaVbaB7mGGGIno6jHI+2qqRd FCXtrD6433UMrEs2eGgvJRtAMFlP6/7TKLxcHG5+j8Ferm1d4HuAoeHDWsYnv50IFLlR9ZLXNVt 1JPPG03JOpF/HXJFS02zPHO9KIMInJgeUlnEFeyUFYnZJYq8StXx1BjpeAvxWxqZCIH4DrMMadh jotWy2/+OKs9KWWR5w342tomQtH3Bg4AB9mwRl5lqxJk+P+clY2Pzj/sWfgxLbMs61YwW9iXaj+ hE2Y6uJFJ2x7gDEk= X-Google-Smtp-Source: AGHT+IFyRwLS6bvq4IHzkLv6Jk2MbH7Z7YMTRFoWXfXGyBz5N2XwbSxiNeXe0OWrHVXWKMizrF1wvg== X-Received: by 2002:a5d:5189:0:b0:3a5:4b67:5a70 with SMTP id ffacd0b85a97d-3a54b675b04mr1472471f8f.18.1749463180331; Mon, 09 Jun 2025 02:59:40 -0700 (PDT) Received: from max.int.rpsys.net ([2001:8b0:aba:5f3c:fa9f:168d:c475:ba8f]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45209bc6d6dsm106289785e9.3.2025.06.09.02.59.39 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Jun 2025 02:59:39 -0700 (PDT) From: Richard Purdie To: openembedded-core@lists.openembedded.org Subject: [PATCH 5/5] cross/crosssdk: Allow deferring of these classes too Date: Mon, 9 Jun 2025 10:59:34 +0100 Message-ID: <20250609095934.937987-5-richard.purdie@linuxfoundation.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250609095934.937987-1-richard.purdie@linuxfoundation.org> References: <20250609095934.937987-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 ; Mon, 09 Jun 2025 09:59:45 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/218260 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 5cda0e474ab..14484f17532 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"