summaryrefslogtreecommitdiff
path: root/meta/classes/kernel-arch.bbclass
blob: e1864223efadea1d335743cfb6d3414bddfff2db (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
33
34
35
36
37
38
39
40
41
42
43
44
45
#
# 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  arm26 \
               m32r mips \
	       sh sh64 um h8300   \
	       parisc s390  v850 \
	       avr32 blackfin \
              microblaze"

def map_kernel_arch(a, d):
	import re

	valid_archs = d.getVar('valid_archs', True).split()

	if   re.match('(i.86|athlon|x86.64)$', a):	return 'x86'
	elif re.match('arm26$', a):		        return 'arm26'
	elif re.match('armeb$', a):		        return 'arm'
	elif re.match('mips(el|64|64el)$', a):	        return 'mips'
	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('microblazeel', a):               return 'microblaze'
        elif a in valid_archs:			        return a
	else:
		bb.error("cannot map '%s' to a linux kernel architecture" % a)

export ARCH = "${@map_kernel_arch(d.getVar('TARGET_ARCH', True), 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', True), d)}"