]> pilppa.org Git - familiar-h63xx-build.git/blob - org.handhelds.familiar/conf/machine/nslu2.conf
OE tree imported from monotone branch org.openembedded.oz354fam083 at revision 8b12e3...
[familiar-h63xx-build.git] / org.handhelds.familiar / conf / machine / nslu2.conf
1 #@TYPE: Machine
2 #@NAME: Linksys NSLU2
3 #@DESCRIPTION: Machine configuration for the Linksys NSLU2 product
4
5 # NOTE: conf/${DISTRO}.conf is included after this file and may be
6 # used to modify variables set here.
7
8 #-------------------------------------------------------------------------------
9 # Processor and compilation options
10 #-------------------------------------------------------------------------------
11 #OVERRIDES
12 # ARM processors support both 32('arm') and 16('thumb') bit instruction sets,
13 # The procedure call standard has special provision for inter-calling without
14 # the need to know whether the instruction set of the target procedure
15 # ('interwork').  These options control the instruction set and whether or not
16 # interworking is supported.
17 #
18 # ARM_INTERWORK may be set to :thumb-interwork if required, empty otherwise.
19 # ARM_THUMB may be set to ":thumb" (exactly that, with the leading :) if thumb
20 #  instructions are required, empty otherwise.
21 #
22 # These two variables define the instruction set used for compilation and
23 # whether the other (16 or 32 bit) instruction set is supported by the distro.
24 # These options may be changed on a per-package basis, however interwork is
25 # required if the package instruction set does not match the distro option.
26 # To set these in a package simply set the relevant variable to the correct
27 # value, in each case *non-empty* means 'true' - -mthumb-interwork or -mthumb
28 # in the compilation options.
29 #ARM_INTERWORK = ":thumb-interwork"
30 ARM_INTERWORK = ""
31 #ARM_INSTRUCTION_SET = ":thumb"
32 ARM_INSTRUCTION_SET = ""
33
34 # The OVERRIDES are modified here so that 'NSLU2_BASE_DISTRO' overrides are
35 # picked up if present (${DISTRO} overrides take precedence), ARM_INTERWORK
36 # and ARM_INSTRUCTION_SET overrides are for handling bugs in packages which
37 # cannot deal with the -mthumb-interwork or -mthumb settings.
38 #NSLU2_BASE_DISTRO = ":openslug"
39 NSLU2_BASE_DISTRO = ""
40 OVERRIDES = "local:${MACHINE}:${DISTRO}${NSLU2_BASE_DISTRO}:${TARGET_OS}:${TARGET_ARCH}${ARM_INSTRUCTION_SET}${ARM_INTERWORK}:build-${BUILD_OS}"
41
42 #COMPILER
43 # Compiler options - passed to TARGET_CC_ARCH
44 ARM_INTERWORK_M_OPT = "${@['-mthumb-interwork', '-mno-thumb-interwork'][bb.data.getVar('ARM_INTERWORK', d, 1) == '']}"
45 ARM_THUMB_M_OPT = "${@['-mthumb', '-mno-thumb'][bb.data.getVar('ARM_INSTRUCTION_SET', d, 1) == '']}"
46
47 # This was 'include tune-xscale.conf' but that doesn't work
48 # (it would need to be conf/machine/tune-xscale.conf) and
49 # anyway it sets the package architecture to armeb.
50 TARGET_CC_ARCH = "-march=armv5te -mtune=xscale ${ARM_INTERWORK_M_OPT} ${ARM_THUMB_M_OPT}"
51 TARGET_CC_KERNEL_ARCH = "-march=armv5te -mtune=xscale -mno-thumb-interwork -mno-thumb"
52 TARGET_LD_ARCH = ""
53 TARGET_LD_KERNEL_ARCH = ""
54
55 # Optimization settings.  Os works fine and is significantly
56 # better than O2.  The other settings are somewhat arbitrary.
57 # The optimisations chosen here include the ones which 'break'
58 # symbolic debugging (because the compiler does not include
59 # enough information to allow the debugger to know where given
60 # values are.)  The -fno options are an attempt to cancel explicit
61 # use of space consuming options found in some packages (this isn't
62 # a complete list, this is just the ones which package writers seem
63 # to know about and abuse).
64 FULL_OPTIMIZATION = "-Os -fomit-frame-pointer -frename-registers \
65         -fno-unroll-loops -fno-inline-functions \
66         -fweb -funit-at-a-time"
67
68 # uClibc does not include sinf or cosf, so the gcc auto-use of 
69 # these functions must be disabled (this only occurs with -O)
70 FULL_OPTIMIZATION_append_linux-uclibc = " -fno-builtin-sin -fno-builtin-cos"
71
72 #-------------------------------------------------------------------------------
73 # 'ARCH' options - package architecture and the 'target' architecture
74 #-------------------------------------------------------------------------------
75 # Historically the 'arch' is armeb, but this causes problems because it is
76 # generic ('armeb' should really only use instructions present on all ARM
77 # processors).  Correcting it is difficult, however, because it is written in
78 # to so many places.
79 #
80 # TARGET_ARCH is *wrong* it should be armv5teb or, maybe, thumbv5teb
81 # however many packages have been modified to recognised 'armeb' inside
82 # configure scripts, fixing this up to handle arm*eb or thumb*eb is a
83 # lot of work, so has not yet been done.
84 #NOTE: do *not* change this is a distro.conf, a lot of work is required
85 # to get this fixed.
86 TARGET_ARCH = "armeb"
87
88 # The list of valid architectures for thumb or arm on NSLU2.  The arm list is
89 # derived from the architecture settings known to gcc, the thumb list is then
90 # derived from that (only the 't' architectures of course).  Note: NSLU2 is
91 # assumed to imply 'big-endian', though in fact this need not be the case.
92 NSLU2_ARM_ARCHITECTURES = "armeb armv2b armv2ab armv3b armv3mb armv4b armv4tb armv5b armv5tb armv5eb armv5teb xscaleb"
93 NSLU2_THUMB_ARCHITECTURES = "thumbeb thumbv4tb thumbv5tb"
94
95 # NOTE: this list contains just the things which rootfs_ipk.bbclass does not
96 # add, rootfs_ipk.bbclass evaluates:
97 #
98 # ipkgarchs="all any noarch ${TARGET_ARCH} ${IPKG_ARCHS} ${MACHINE}"
99 #
100 # This is a priority ordered list - most desireable architecture at the end, so
101 # put NSLU2_(ARM_INSTRUCTION_SET)_ARCHITECTURES at the end and, if ARM_INTERWORK
102 # precede this with the other architectures.
103 IPKG_ARCHS = "${@(lambda arch_thumb, arch_arm, is_arm, interwork: \
104                 (interwork and (is_arm and arch_thumb or arch_arm) + ' ' or '') \
105                 + (is_arm and arch_arm or arch_thumb)) \
106                (bb.data.getVar('NSLU2_THUMB_ARCHITECTURES', d, 1), \
107                 bb.data.getVar('NSLU2_ARM_ARCHITECTURES', d, 1), \
108                 bb.data.getVar('ARM_INSTRUCTION_SET', d, 1) == '', \
109                 bb.data.getVar('ARM_INTERWORK', d, 1) != '')}"
110
111 # The package architecture is 'wrong' - it should be armv5teb or thumbv5teb -
112 # however this setting is retained for backward compatibility as changing it
113 # would mean that old systems would not accept new packages!  (armv5teb is not
114 # in the old system list).
115 #NOTE: new distros with independent feeds are encouraged to fix this, the
116 # variable NSLU2_PACKAGE_ARCH is provided for this purpose.
117 PACKAGE_ARCH = "armeb"
118 NSLU2_PACKAGE_ARCH = "${@['thumbv5tb', 'armv5teb'][bb.data.getVar('ARM_INSTRUCTION_SET', d, 1) == '']}"
119
120 #-------------------------------------------------------------------------------
121 # Miscellany
122 #-------------------------------------------------------------------------------
123 SERIAL_CONSOLE = "115200 ttyS0"
124 KERNEL_CONSOLE = "ttyS0,115200n8"
125 USE_VT = "0"
126
127 #-------------------------------------------------------------------------------
128 # Package versions
129 #-------------------------------------------------------------------------------
130 CVSDATE_gnu-config ?= "20050713"
131 CVSDATE_gnu-config-native ?= "20050713"
132 CVSDATE_ipkg-utils ?= "20050713"
133 CVSDATE_ipkg-utils-native ?= "20050713"
134 CVSDATE_ipkg-link ?= "20050713"
135
136 CVS_TARBALL_STASH = "http://sources.nslu2-linux.org/sources/"
137 INHERIT += "nslu2-mirrors"
138
139 PREFERRED_VERSION_ipkg ?= "0.99.152"
140 PREFERRED_VERSION_ipkg-native ?= "0.99.152"