summaryrefslogtreecommitdiff
path: root/config/target.in
blob: 1c87ff1071de218930ecf1a22a05387aeec2f20d (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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
# Target definition: architecture, optimisations, etc...

menu "Target options"

comment "General target options"

choice
    bool
    prompt "Target architecture:"
    default ARCH_x86

config ARCH_ARM
    bool
    prompt "arm"
    select ARCH_SUPPORTS_BE
    select ARCH_SUPPORTS_LE

config ARCH_MIPS
    bool
    prompt "mips"
    select ARCH_SUPPORTS_BE
    select ARCH_SUPPORTS_LE

config ARCH_x86
    bool
    prompt "x86"
    select ARCH_SUPPORTS_LE

config ARCH_x86_64
    bool
    prompt "x86_64"
    select ARCH_SUPPORTS_LE

endchoice

config ARCH_SUPPORTS_BE
    bool
    default n

config ARCH_SUPPORTS_LE
    bool
    default n

choice
    bool
    prompt "Endianness:"

config ARCH_BE
    bool
    prompt "Big endian"
    depends on ARCH_SUPPORTS_BE

config ARCH_LE
    bool
    prompt "Little endian"
    depends on ARCH_SUPPORTS_LE

endchoice

comment "Target optimisations"

config ARCH_CPU
    string
    prompt "Emit assembly for CPU"
    default ""
    help
      This specifies the name of the target ARM processor. GCC uses this name
      to determine what kind of instructions it can emit when generating
      assembly code.
      
      Pick a value from the gcc manual for your choosen gcc version and your
      target CPU.
      
      Leave blank if you don't know, or if your target architecture does not
      offer this option.

config ARCH_TUNE
    string
    prompt "Tune for CPU"
    default ""
    help
      This option is very similar to the ARCH_CPU option (above), except
      that instead of specifying the actual target processor type, and hence
      restricting which instructions can be used, it specifies that GCC should
      tune the performance of the code as if the target were of the type
      specified in this option, but still choosing the instructions that it
      will generate based on the cpu specified by the ARCH_CPU option
      (above), or a (command-line) -mcpu= option.
      
      Pick a value from the gcc manual for your choosen gcc version and your
      target CPU.
      
      Leave blank if you don't know, or if your target architecture does not
      offer this option.

config ARCH_ARCH
    string
    prompt "Achitecture level"
    default ""
    help
      GCC uses this name to determine what kind of instructions it can emit
      when generating assembly code. This option can be used in conjunction
      with or instead of the ARCH_CPU option (above), or a (command-line)
      -mcpu= option.
      
      Pick a value from the gcc manual for your choosen gcc version and your
      target CPU.
      
      Leave blank if you don't know, or if your target architecture does not
      offer this option.

config ARCH_FPU
    string
    prompt "Use FPU"
    default ""
    help
      On some targets (eg. ARM), you can specify the kind of FPU to emit
      code for.
      
      See below wether to actually emit FP opcodes, or to emulate them.
      
      Pick a value from the gcc manual for your choosen gcc version and your
      target CPU.
      
      Leave blank if you don't know, or if your target architecture does not
      offer this option.

choice
    bool
    prompt "Floating point:"

config ARCH_FLOAT_HW
    bool
    prompt "hardware (FPU)"
    help
      Emit hardware floating point opcodes.
      
      If you've got a processor with a FPU, then you want that.
      If your hardware has no FPU, you still can use HW floating point, but
      need to compile support for FPU emulation in your kernel. Needless to
      say that emulating the FPU is /slooowwwww/...
      
      One situation you'd want HW floating point without a FPU is if you get
      binary blobs from different vendors that are compiling this way and
      can't (don't wan't to) change.

config ARCH_FLOAT_SW
    bool
    prompt "software"
    help
      Do not emit any hardware floating point opcode.
      
      If your processor has no FPU, then you most probably want this, as it
      is faster than emulating the FPU in the kernel.

endchoice

config ARCH_FLOAT_SW_LIBFLOAT
    bool
    prompt "Use libfloat"
    default n
    depends on ARCH_FLOAT_SW
    help
      For those targets upporting it, you can use libfloat for the software
      floating point emulation.
      
      Note that some versions of gcc have support code that supersedes libfloat,
      while others don't. Known version of gcc that don't have support code are
      versions prior to 3.0, and version above 4.0.
      
      You should check gcc before deciding to use libfloat.

config TARGET_CFLAGS
    string
    prompt "Default target CFLAGS"
    default ""
    help
      Used to add specific options when compiling libraries of the toolchain,
      that will run on the target (eg. libc.so).
      
      Note that the options above for CPU, tune, arch and FPU will be
      automaticaly used. You don't need to specify them here.
      
      Leave blank if you don't know better.

comment "Toolchain options"

config USE_SYSROOT
    bool
    prompt "Use sysroot'ed toolchain"
    default y
    help
      Use the 'shinny new' sysroot feature of gcc: libraries split between
      prefix/target/sys-root/lib and prefix/target/sys-root/usr/lib
      
      You definitely want to say 'Y' here. Yes you do. I know you do. Say 'Y'.

config SHARED_LIBS
    bool
    prompt "Build shared libraries"
    default y
    help
      Say 'y' here, unless you don't want shared libraries.
      
      You might not want shared librries if you're building for a target that
      don't support it (maybe some nommu targets, for example, or bare metal).

config TARGET_MULTILIB
    bool
#    prompt "Enable 'multilib' support (EXPERIMENTAL)"
    default n
    help
      Enable the so-called 'multilib' support.
      
      With the same toolchain, and on some architectures, you will be able to
      build big and little endian binaries, soft- and hard-float, etc...
      
      See the gcc configure manual at http://gcc.gnu.org/install/configure.html
      to see what multilib your target supports.
      
      It's preferable for now to build two (or more) toolchains, one for each
      configuration you need to support (eg. one for thumb and one for ARM,
      etc...). You can use the vendor string to diferentiate those toolchains.

config TARGET_VENDOR
    string
    prompt "Vendor string"
    default "unknown"
    help
      Vendor part of the machine triplet.
      
      A triplet is of the form arch-vendor-kernel-system.
      You can set the second part, vendor, to whatever you see fit.
      Use a single word, or use underscores "_" to separate words.
      
      Keep the default (unkown) if you don't know better.

config TARGET_ALIAS
    string
    prompt "Target alias"
    default ""
    help
      Normaly, you'd call your toolchain component (especially gcc) by
      prefixing the target triplet followed by a dash and the component name
      (eg. armeb-unknown-linux-uclibc-gcc).
      
      You can enter a shortcut here. This string will be used to create
      symbolic links to the toolchain tools (eg. if you enter "foo-bar" here,
      then gcc for your toolchain will also be available as "foo-bar-gcc" along
      with the original name).
      
      You shouldn't need to enter anything here, unless you plan to manually
      call the tools (autotools-based ./configure will use the standard name).

config ARCH
    string
    default "arm"     if ARCH_ARM
    default "mips"    if ARCH_MIPS
    default "x86"     if ARCH_x86
    default "x86_64"  if ARCH_x86_64

config BUILD 
    string
    prompt "Build system triplet"
    default ""
    help
      Canonical name of the machine building the toolchain.
      You should leave empty, unless you really now what you're doing.

config CC_NATIVE
    string
    prompt "Native gcc"
    default "gcc"
    help
      The native C compiler.
      
      You can set this to an alternative compiler if you have more than one
      installed (eg. gcc is gcc-4.1.1 and you want to use gcc-3.4.6).
      
      You can leave this empty as well, in which case gcc will be used.

config CANADIAN
    bool
    prompt "Canadian build (EXPERIMENTAL)"
    default n
    help
      A canadian build allows to build a compiler on a first machine
      (build system), that will run on second machine (host system),
      targetting a third machine (target system).
      
      An example where you'd want a candian cross-compiler is to create
      a native compiler for your target. In this case host and target
      are the same.

config HOST
    string
    prompt "Host system triplet"
    default ""
    depends on CANADIAN
    help
      Canonical name of the machine serving as host.

config HOST_CC
    string
    prompt "Host system compiler"
    default "${CT_HOST}-"
    depends on CANADIAN
    help
      C compiler targeting the host system.
      If HOST_CC ends with a dash (-), then it is considered to be the
      prefix to gcc (eg. x86-pc-linuc-gnu-).
      If it is empty, it is formed by appending '-gcc' to HOST.
      Else it is considered to be the complete name of the compiler, with
      full path, or without path (provided that it can be found in PATH).

endmenu