# 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
-#
-
-valid_archs = "alpha cris ia64 \
- i386 x86 \
- m68knommu m68k ppc powerpc powerpc64 ppc64 \
- sparc sparc64 \
- arm aarch64 \
- m32r mips \
- sh sh64 um h8300 \
- parisc s390 v850 \
- avr32 blackfin \
- loongarch64 \
- microblaze \
- nios2 arc riscv xtensa"
-
-def map_kernel_arch(a, d):
- import re
-
- valid_archs = d.getVar('valid_archs').split()
-
- if re.match('(i.86|athlon|x86.64)$', a): return 'x86'
- elif re.match('arceb$', a): return 'arc'
- elif re.match('armeb$', a): return 'arm'
- elif re.match('aarch64$', a): return 'arm64'
- elif re.match('aarch64_be$', a): return 'arm64'
- elif re.match('aarch64_ilp32$', a): return 'arm64'
- elif re.match('aarch64_be_ilp32$', a): return 'arm64'
- elif re.match('loongarch(32|64|)$', a): return 'loongarch'
- elif re.match('mips(isa|)(32|64|)(r6|)(el|)$', a): return 'mips'
- elif re.match('mcf', a): return 'm68k'
- elif re.match('riscv(32|64|)(eb|)$', a): return 'riscv'
- elif re.match('p(pc|owerpc)(|64)', a): return 'powerpc'
- elif re.match('sh(3|4)$', a): return 'sh'
- elif re.match('bfin', a): return 'blackfin'
- elif re.match('microblazee[bl]', a): return 'microblaze'
- elif a in valid_archs: return a
- else:
- if not d.getVar("TARGET_OS").startswith("linux"):
- return a
- bb.error("cannot map '%s' to a linux kernel architecture" % a)
-
-export ARCH = "${@map_kernel_arch(d.getVar('TARGET_ARCH'), d)}"
-
-def map_uboot_arch(a, d):
- import re
-
- if re.match('p(pc|owerpc)(|64)', a): return 'ppc'
- elif re.match('i.86$', a): return 'x86'
- return a
-
-export UBOOT_ARCH = "${@map_uboot_arch(d.getVar('ARCH'), d)}"
+export ARCH = "${@oe.kernel.map_kernel_arch(d)}"
+export UBOOT_ARCH = "${@oe.kernel.map_uboot_arch(d)}"
# Set TARGET_??_KERNEL_ARCH in the machine .conf to set architecture
# specific options necessary for building the kernel and modules.
import re
+# Return a value for the ARCH environment variable for kernel compilation (including
+# modules). return value must match one of the architecture directories
+# in the kernel source "arch" directory
+def map_kernel_arch(d):
+ a = d.getVar('TARGET_ARCH')
+
+ valid_archs = ["alpha", "cris", "ia64", "i386", "x86", "m68knommu", "m68k", "ppc", "powerpc",
+ "powerpc64", "ppc64", "sparc", "sparc64", "arm", "aarch64", "m32r", "mips",
+ "sh", "sh64", "um", "h8300", "parisc", "s390", "v850", "avr32", "blackfin",
+ "loongarch64", "microblaze", "nios2", "arc", "riscv", "xtensa"]
+
+ if re.match('(i.86|athlon|x86.64)$', a): return 'x86'
+ elif re.match('arceb$', a): return 'arc'
+ elif re.match('armeb$', a): return 'arm'
+ elif re.match('aarch64$', a): return 'arm64'
+ elif re.match('aarch64_be$', a): return 'arm64'
+ elif re.match('aarch64_ilp32$', a): return 'arm64'
+ elif re.match('aarch64_be_ilp32$', a): return 'arm64'
+ elif re.match('loongarch(32|64|)$', a): return 'loongarch'
+ elif re.match('mips(isa|)(32|64|)(r6|)(el|)$', a): return 'mips'
+ elif re.match('mcf', a): return 'm68k'
+ elif re.match('riscv(32|64|)(eb|)$', a): return 'riscv'
+ elif re.match('p(pc|owerpc)(|64)', a): return 'powerpc'
+ elif re.match('sh(3|4)$', a): return 'sh'
+ elif re.match('bfin', a): return 'blackfin'
+ elif re.match('microblazee[bl]', a): return 'microblaze'
+ elif a in valid_archs: return a
+ else:
+ if not d.getVar("TARGET_OS").startswith("linux"):
+ return a
+ bb.error("cannot map '%s' to a linux kernel architecture" % a)
+
+def map_uboot_arch(d):
+ a = map_kernel_arch(d)
+
+ if re.match('p(pc|owerpc)(|64)', a): return 'ppc'
+ elif re.match('i.86$', a): return 'x86'
+ return a
+
# parse kernel ABI version out of <linux/version.h>
def get_version_headers(p):
fn = p + '/include/linux/utsrelease.h'