summaryrefslogtreecommitdiff
path: root/classes/kernel-arch.bbclass
blob: 5e5d9a94a8cff04f5a779788a376f178a8913795 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#
# 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 \
               x86_64 i386 x86 \
               m68knommu m68k ppc powerpc ppc64  \
	       sparc sparc64 \
               arm  arm26 \
               m32r mips \
	       sh sh64 um h8300   \
	       parisc s390  v850 \
	       avr32 blackfin"

def map_kernel_arch(a, d):
	import bb, re

	valid_archs = bb.data.getVar('valid_archs', d, 1).split()

	if   re.match('(i.86|athlon)$', a):	return 'i386'
	elif re.match('arm26$', a):		return 'arm26'
	elif re.match('armeb$', a):		return 'arm'
	elif re.match('mipsel$', a):		return 'mips'
	elif re.match('sh(3|4)$', a):		return 'sh'
	elif re.match('bfin', a):               return 'blackfin'
        elif a in valid_archs:			return a
	else:
		bb.error("cannot map '%s' to a linux kernel architecture" % a)

export ARCH = "${@map_kernel_arch(bb.data.getVar('TARGET_ARCH', d, 1), d)}"