toolchain-common.in 12.3 KB
Newer Older
1
2
3
4
5
# Generic toolchain options

# we want gdb config in the middle of both source and external
# toolchains, but mconf won't let us source the same file twice,
# so put it here instead
6
source "package/gdb/Config.in.host"
7

8
9
comment "Toolchain Generic Options"

10
11
12
13
# https://sourceware.org/bugzilla/show_bug.cgi?id=19405
config BR2_TOOLCHAIN_HAS_BINUTILS_BUG_19405
	bool

14
config BR2_TOOLCHAIN_HAS_NATIVE_RPC
15
16
17
18
	bool

config BR2_USE_WCHAR
	bool
19
20

config BR2_ENABLE_LOCALE
21
22
	bool

23
24
25
config BR2_INSTALL_LIBSTDCPP
	bool

26
27
28
config BR2_TOOLCHAIN_HAS_FORTRAN
	bool

29
30
31
config BR2_TOOLCHAIN_HAS_THREADS
	bool

32
33
34
config BR2_TOOLCHAIN_HAS_THREADS_DEBUG
	bool

35
36
37
config BR2_TOOLCHAIN_HAS_THREADS_NPTL
	bool

38
39
40
config BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS
	bool

41
42
43
config BR2_TOOLCHAIN_HAS_SSP
	bool

44
45
46
config BR2_TOOLCHAIN_SUPPORTS_PIE
	bool

47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
config BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY
	bool "Copy gconv libraries"
	depends on BR2_TOOLCHAIN_USES_GLIBC
	help
	  The gconv libraries are used to convert between different
	  character sets (charsets).

	  Say 'y' if you need to store and/or display different charsets.

config BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_LIST
	string "Gconv libraries to copy"
	depends on BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY
	help
	  Set to the list of gconv libraries to copy.
	  Leave empty to copy all gconv libraries.

	  Specify only the basename of the libraries, leave
	  out the .so extension. Eg.:
	    IBM850 ISO8859-15 UNICODE

	  Note: the full set of gconv libs are ~8MiB (on ARM).

Thomas Petazzoni's avatar
Thomas Petazzoni committed
69
70
71
72
73
74
# glibc and eglibc directly include gettext, so a separatly compiled
# gettext isn't needed and shouldn't be built to avoid conflicts. Some
# packages always need gettext, other packages only need gettext when
# locale support is enabled. See the documentation for how packages
# should rely on the following two options.

75
76
config BR2_NEEDS_GETTEXT
	bool
77
	default y if BR2_TOOLCHAIN_USES_UCLIBC
Thomas Petazzoni's avatar
Thomas Petazzoni committed
78
79
80
81

config BR2_NEEDS_GETTEXT_IF_LOCALE
	bool
	default y if (BR2_NEEDS_GETTEXT && BR2_ENABLE_LOCALE)
82

83
config BR2_USE_MMU
Guido Martínez's avatar
Guido Martínez committed
84
85
	bool "Enable MMU support" if BR2_ARCH_HAS_MMU_OPTIONAL
	default y if BR2_ARCH_HAS_MMU_OPTIONAL || BR2_ARCH_HAS_MMU_MANDATORY
86
87
88
89
	help
	  If your target has a MMU, you should say Y here.  If you
	  are unsure, just say Y.

90
91
config BR2_TARGET_OPTIMIZATION
	string "Target Optimizations"
92
	default ""
93
94
	help
	  Optimizations to use when building for the target host.
95
	  NOTE: gcc optimization level is defined in build options.
96
97
98
99

config BR2_TARGET_LDFLAGS
	string "Target linker options"
	help
100
	  Extra options to pass to the linker when building for the target.
101

102
103
104
	  Note that options with a '$' sign (eg. -Wl,-rpath='$ORIGIN/../lib')
	  are not supported.

105
106
107
108
109
110
config BR2_ECLIPSE_REGISTER
	bool "Register toolchain within Eclipse Buildroot plug-in"
	help
	  This options tells Buildroot to generate the necessary
	  configuration files to make your toolchain appear within
	  Eclipse, through the Eclipse Buildroot plugin.
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

# Options for packages to depend on, if they require at least a
# specific version of the kernel headers.
# Toolchains should choose the adequate option (ie. the highest
# version, not all of them).
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
	bool

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12
170

171
172
173
174
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13

175
176
177
178
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14

179
180
181
182
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15

183
184
185
186
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16

187
188
189
190
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17

191
192
193
194
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18

195
196
197
198
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19

199
200
201
202
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0

203
204
205
206
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1

207
208
209
210
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2

211
212
213
214
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3

215
216
217
218
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4

219
220
221
222
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5

223
224
225
226
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6

227
228
229
230
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7

231
232
233
234
# This order guarantees that the highest version is set, as kconfig
# stops affecting a value on the first matching default.
config BR2_TOOLCHAIN_HEADERS_AT_LEAST
	string
235
	default "4.8"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8
236
	default "4.7"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7
237
	default "4.6"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6
238
	default "4.5"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5
239
	default "4.4"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
240
	default "4.3"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3
241
	default "4.2"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2
242
	default "4.1"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1
243
	default "4.0"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
244
	default "3.19" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19
245
	default "3.18" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18
246
	default "3.17" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17
247
	default "3.16" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16
248
	default "3.15" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15
249
	default "3.14" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
	default "3.13" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13
	default "3.12" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12
	default "3.11" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11
	default "3.10" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
	default "3.9"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9
	default "3.8"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8
	default "3.7"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7
	default "3.6"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6
	default "3.5"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5
	default "3.4"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4
	default "3.3"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3
	default "3.2"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2
	default "3.1"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1
	default "3.0"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
	default "2.6"
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

config BR2_TOOLCHAIN_GCC_AT_LEAST_4_3
	bool

config BR2_TOOLCHAIN_GCC_AT_LEAST_4_4
	bool
	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_3

config BR2_TOOLCHAIN_GCC_AT_LEAST_4_5
	bool
	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_4

config BR2_TOOLCHAIN_GCC_AT_LEAST_4_6
	bool
	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_5

config BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
	bool
	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_6

config BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
	bool
	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7

config BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
	bool
	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8

config BR2_TOOLCHAIN_GCC_AT_LEAST_5
	bool
	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

Thomas Petazzoni's avatar
Thomas Petazzoni committed
297
298
299
300
config BR2_TOOLCHAIN_GCC_AT_LEAST_6
	bool
	select BR2_TOOLCHAIN_GCC_AT_LEAST_5

301
302
303
304
# This order guarantees that the highest version is set, as kconfig
# stops affecting a value on the first matching default.
config BR2_TOOLCHAIN_GCC_AT_LEAST
	string
Thomas Petazzoni's avatar
Thomas Petazzoni committed
305
	default "6"	if BR2_TOOLCHAIN_GCC_AT_LEAST_6
306
307
308
309
310
311
312
313
	default "5"	if BR2_TOOLCHAIN_GCC_AT_LEAST_5
	default "4.9"	if BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
	default "4.8"	if BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
	default "4.7"	if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
	default "4.6"	if BR2_TOOLCHAIN_GCC_AT_LEAST_4_6
	default "4.5"	if BR2_TOOLCHAIN_GCC_AT_LEAST_4_5
	default "4.4"	if BR2_TOOLCHAIN_GCC_AT_LEAST_4_4
	default "4.3"	if BR2_TOOLCHAIN_GCC_AT_LEAST_4_3
314
315
316
317
318

config BR2_TOOLCHAIN_HAS_SYNC_1
	bool
	default y
	depends on !BR2_bfin
319
	depends on !BR2_m68k_cf
320
321
322
323
324
325
326
327
328
329
330
	depends on !BR2_microblaze
	depends on !BR2_sparc
	depends on !(BR2_arc && !BR2_ARC_ATOMIC_EXT)

config BR2_TOOLCHAIN_HAS_SYNC_2
	bool
	default y if BR2_TOOLCHAIN_HAS_SYNC_1

config BR2_TOOLCHAIN_HAS_SYNC_4
	bool
	default y
331
	depends on !BR2_m68k_cf
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
	depends on !BR2_sparc
	depends on !(BR2_arc && !BR2_ARC_ATOMIC_EXT)

# The availability of __sync for 8-byte types on ARM is somewhat
# complicated:
#
#  - It appeared in gcc starting with gcc 4.7.
#
#  - On ARMv7, there is no problem, it can be directly implemented in
#    userspace.
#
#  - On < ARMv7, it requires help from the kernel. Unfortunately, the
#    libgcc code implementing 8-byte __sync with the help from the
#    kernel calls __write() when a failure occurs, which is a function
#    internal to glibc, not available in uClibc and musl. This means
#    that the 8-byte __sync operations are not available on < ARMv7
#    with uClibc and musl. This problem was fixed as part of gcc
#    PR68059, which was backported to the gcc 5 branch, but isn't yet
#    part of any gcc 5.x release.
#
config BR2_TOOLCHAIN_ARM_HAS_SYNC_8
	bool
	default y
	depends on BR2_arm || BR2_armeb
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
	depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_ARM_CPU_ARMV7A

# 8-byte intrinsics available on most x86 CPUs, except a few old ones
config BR2_TOOLCHAIN_X86_HAS_SYNC_8
	bool
	default y
	depends on BR2_i386
	depends on !BR2_x86_i486
	depends on !BR2_x86_c3
	depends on !BR2_x86_winchip_c6
	depends on !BR2_x86_winchip2

# 8-byte intrinsics available:
#  - On all 64 bits architecture
#  - On a certain combinations of ARM platforms
#  - On certain x86 32 bits CPUs
config BR2_TOOLCHAIN_HAS_SYNC_8
	bool
	default y if BR2_ARCH_IS_64
	default y if BR2_TOOLCHAIN_ARM_HAS_SYNC_8
	default y if BR2_TOOLCHAIN_X86_HAS_SYNC_8

379
# libatomic is available since gcc 4.8, when thread support is
380
381
382
# enabled. Also, libatomic doesn't recognize "uclinux" as a valid OS
# part of the tuple, and is therefore not build on uclinux targets,
# which is why BR2_BINFMT_FLAT configurations are excluded.
383
384
385
config BR2_TOOLCHAIN_HAS_LIBATOMIC
	bool
	default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 && \
386
387
		BR2_TOOLCHAIN_HAS_THREADS && \
		!BR2_BINFMT_FLAT
388

389
390
# __atomic intrinsics are available:
# - with gcc 4.8, either through built-ins or libatomic, on all
391
392
393
394
395
396
397
398
399
#   architectures. Since we don't want to separate the cases where
#   libatomic is needed vs. not needed, we simplify thing and only
#   support situations where libatomic is available, even if on some
#   architectures libatomic is not strictly needed as all __atomic
#   intrinsics might be built-in. The only case where libatomic is
#   missing entirely is when the toolchain does not have support for
#   threads. However, a package that does not need threads but still
#   uses atomics is quite a corner case, which does not warrant the
#   added complexity.
400
401
402
403
404
# - with gcc 4.7, libatomic did not exist, so only built-ins are
#   available. This means that __atomic can only be used in a subset
#   of the architectures
config BR2_TOOLCHAIN_HAS_ATOMIC
	bool
405
	default y if BR2_TOOLCHAIN_HAS_LIBATOMIC
406
407
408
409
	default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_arm
	default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_armeb
	default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_xtensa
	default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_ARCH_IS_64
410
411
412
413
414
415
416
417
418
419

# - libquadmath is not needed/available on all architectures (but gcc
#   correctly handles this already).
# - At least, libquadmath is available on:
#   - i*86
#   - x86_64
# - When available, libquadmath requires wchar support.
config BR2_TOOLCHAIN_HAS_LIBQUADMATH
	bool
	default y if BR2_i386 || BR2_x86_64