From: Richard Purdie Date: Sat, 1 Aug 2026 12:51:16 +0000 (+0100) Subject: kernel-arch: Move ARCH usage into target classes X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=635f85b7b8ffe4bfd5f282a98bdf640aa037cde1;p=thirdparty%2Fopenembedded%2Fopenembedded-core.git kernel-arch: Move ARCH usage into target classes Since ARCH is just a function now we can move it into the target class usages and drop it from the default environment. We still have to export in some cases where the usage is unknown but this does significatly reduce the scope and number of places exported to. Signed-off-by: Richard Purdie --- diff --git a/meta/classes-recipe/devicetree.bbclass b/meta/classes-recipe/devicetree.bbclass index ce9d008aac1..4fe389bed83 100644 --- a/meta/classes-recipe/devicetree.bbclass +++ b/meta/classes-recipe/devicetree.bbclass @@ -29,7 +29,9 @@ LIC_FILES_CHKSUM ?= "file://${COMMON_LICENSE_DIR}/GPL-2.0-only;md5=801f80980d171 INHIBIT_DEFAULT_DEPS = "1" DEPENDS += "dtc-native" -inherit deploy kernel-arch +inherit deploy + +export ARCH = "${@oe.kernel.map_kernel_arch(d)}" COMPATIBLE_MACHINE ?= "^$" diff --git a/meta/classes-recipe/kernel-arch.bbclass b/meta/classes-recipe/kernel-arch.bbclass index db708c35104..eb598d98b6e 100644 --- a/meta/classes-recipe/kernel-arch.bbclass +++ b/meta/classes-recipe/kernel-arch.bbclass @@ -4,11 +4,6 @@ # SPDX-License-Identifier: MIT # -# set the ARCH environment variable for kernel compilation (including -# modules). return value must match one of the architecture directories -# in the kernel source "arch" directory -export ARCH = "${@oe.kernel.map_kernel_arch(d)}" - # Set TARGET_??_KERNEL_ARCH in the machine .conf to set architecture # specific options necessary for building the kernel and modules. TARGET_CC_KERNEL_ARCH ?= "" diff --git a/meta/classes-recipe/kernel.bbclass b/meta/classes-recipe/kernel.bbclass index aeaec8ccbd4..28460ce1cb9 100644 --- a/meta/classes-recipe/kernel.bbclass +++ b/meta/classes-recipe/kernel.bbclass @@ -6,6 +6,8 @@ inherit linux-kernel-base kernel-module-split features_check +ARCH = "${@oe.kernel.map_kernel_arch(d)}" + COMPATIBLE_HOST = ".*-linux" # Linux has a minimum ISA requires on riscv, see arch/riscv/Makefile @@ -245,6 +247,7 @@ UBOOT_LOADADDRESS ?= "${UBOOT_ENTRYPOINT}" # Some Linux kernel configurations need additional parameters on the command line KERNEL_EXTRA_ARGS ?= "" +EXTRA_OEMAKE += ' ARCH="${@oe.kernel.map_kernel_arch(d)}"' EXTRA_OEMAKE += ' CC="${KERNEL_CC}" LD="${KERNEL_LD}" OBJCOPY="${KERNEL_OBJCOPY}" STRIP="${KERNEL_STRIP}"' EXTRA_OEMAKE += ' HOSTCC="${BUILD_CC}" HOSTCFLAGS="${BUILD_CFLAGS}" HOSTLDFLAGS="${BUILD_LDFLAGS}" HOSTCPP="${BUILD_CPP}"' EXTRA_OEMAKE += ' HOSTCXX="${BUILD_CXX}" HOSTCXXFLAGS="${BUILD_CXXFLAGS}"' diff --git a/meta/classes-recipe/module-base.bbclass b/meta/classes-recipe/module-base.bbclass index 2a225881ba4..d52de45f4a5 100644 --- a/meta/classes-recipe/module-base.bbclass +++ b/meta/classes-recipe/module-base.bbclass @@ -10,6 +10,7 @@ inherit kernel-arch # in sstate, so we must force do_compile to run (once). do_configure[depends] += "make-mod-scripts:do_compile" +export ARCH = "${@oe.kernel.map_kernel_arch(d)}" export OS = "${TARGET_OS}" export CROSS_COMPILE = "${TARGET_PREFIX}" diff --git a/meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb b/meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb index ab984f4bcfe..6e64918f5b5 100644 --- a/meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb +++ b/meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb @@ -21,7 +21,8 @@ DEPENDS += "gmp-native" INHIBIT_DEFAULT_DEPS = "1" DEPENDS += "virtual/cross-cc virtual/cross-binutils" -EXTRA_OEMAKE = " HOSTCC="${BUILD_CC}" HOSTCFLAGS="${BUILD_CFLAGS}" HOSTLDFLAGS="${BUILD_LDFLAGS}" HOSTCPP="${BUILD_CPP}"" +EXTRA_OEMAKE = ' ARCH="${@oe.kernel.map_kernel_arch(d)}"' +EXTRA_OEMAKE += " HOSTCC="${BUILD_CC}" HOSTCFLAGS="${BUILD_CFLAGS}" HOSTLDFLAGS="${BUILD_LDFLAGS}" HOSTCPP="${BUILD_CPP}"" EXTRA_OEMAKE += " HOSTCXX="${BUILD_CXX} ${BUILD_CXXFLAGS} ${BUILD_LDFLAGS}" CROSS_COMPILE=${TARGET_PREFIX}" KERNEL_LOCALVERSION = "${@oe.kernel.get_localversion_file("${STAGING_KERNEL_BUILDDIR}")}" diff --git a/meta/recipes-kernel/perf/perf.bb b/meta/recipes-kernel/perf/perf.bb index e3e5d55e396..5fa98a0d94b 100644 --- a/meta/recipes-kernel/perf/perf.bb +++ b/meta/recipes-kernel/perf/perf.bb @@ -58,6 +58,8 @@ PROVIDES = "virtual/perf" inherit linux-kernel-base kernel-arch manpages pkgconfig +ARCH = "${@oe.kernel.map_kernel_arch(d)}" + # needed for building the tools/perf Python bindings inherit_defer ${@bb.utils.contains('PACKAGECONFIG', 'python', 'python3targetconfig', '', d)} inherit python3-dir