toolchain-common.in 13.5 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
14
# https://sourceware.org/bugzilla/show_bug.cgi?id=19615
# Affect toolchains built with binutils 2.26 (fixed in binutils 2.26.1).
config BR2_TOOLCHAIN_HAS_BINUTILS_BUG_19615
	bool

15
16
17
18
19
20
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64735
# exception_ptr, nested_exception, and future from libstdc++ are not
# available for architectures not supporting always lock-free atomic
# ints before GCC 7
config BR2_TOOLCHAIN_HAS_GCC_BUG_64735
	bool
21
22
23
24
	default y if BR2_nios2
	default y if BR2_ARM_CPU_ARMV4
	default y if BR2_ARM_CPU_ARMV5
	default y if BR2_sparc_v8
25
	default y if BR2_m68k_cf5208
26
	depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_7
27

28
config BR2_TOOLCHAIN_HAS_NATIVE_RPC
29
30
31
32
	bool

config BR2_USE_WCHAR
	bool
33
34

config BR2_ENABLE_LOCALE
35
36
	bool

37
38
39
config BR2_INSTALL_LIBSTDCPP
	bool

40
41
42
config BR2_TOOLCHAIN_HAS_FORTRAN
	bool

43
44
45
config BR2_TOOLCHAIN_HAS_THREADS
	bool

46
47
48
config BR2_TOOLCHAIN_HAS_THREADS_DEBUG
	bool

49
50
51
config BR2_TOOLCHAIN_HAS_THREADS_NPTL
	bool

52
53
54
config BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS
	bool

55
56
57
config BR2_TOOLCHAIN_HAS_SSP
	bool

58
59
60
config BR2_TOOLCHAIN_SUPPORTS_PIE
	bool

61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
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).

83
84
85
86
87
88
# This boolean is true if the toolchain provides a built-in full
# featured gettext implementation (glibc), and false if only a stub
# gettext implementation is provided (uclibc, musl)
config BR2_TOOLCHAIN_HAS_FULL_GETTEXT
	bool

89
config BR2_USE_MMU
Guido Martínez's avatar
Guido Martínez committed
90
91
	bool "Enable MMU support" if BR2_ARCH_HAS_MMU_OPTIONAL
	default y if BR2_ARCH_HAS_MMU_OPTIONAL || BR2_ARCH_HAS_MMU_MANDATORY
92
93
94
95
	help
	  If your target has a MMU, you should say Y here.  If you
	  are unsure, just say Y.

96
97
config BR2_TARGET_OPTIMIZATION
	string "Target Optimizations"
98
	default ""
99
100
	help
	  Optimizations to use when building for the target host.
101
	  NOTE: gcc optimization level is defined in build options.
102
103
104
105

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

108
109
110
	  Note that options with a '$' sign (eg. -Wl,-rpath='$ORIGIN/../lib')
	  are not supported.

111
112
113
114
115
116
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.
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

# 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
176

177
178
179
180
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13

181
182
183
184
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14

185
186
187
188
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15

189
190
191
192
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16

193
194
195
196
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17

197
198
199
200
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18

201
202
203
204
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19

205
206
207
208
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0

209
210
211
212
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1

213
214
215
216
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2

217
218
219
220
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3

221
222
223
224
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4

225
226
227
228
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5

229
230
231
232
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6

233
234
235
236
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7

237
238
239
240
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8

241
242
243
244
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9

245
246
247
248
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10

249
250
251
252
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11

253
254
255
256
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12

257
258
259
260
# 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
261
	default "4.13" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13
262
	default "4.12" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12
263
	default "4.11" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11
264
	default "4.10" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10
265
	default "4.9"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9
266
	default "4.8"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8
267
	default "4.7"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7
268
	default "4.6"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6
269
	default "4.5"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5
270
	default "4.4"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
271
	default "4.3"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3
272
	default "4.2"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2
273
	default "4.1"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1
274
	default "4.0"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
275
	default "3.19" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19
276
	default "3.18" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18
277
	default "3.17" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17
278
	default "3.16" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16
279
	default "3.15" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15
280
	default "3.14" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
	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"
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327

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
328
329
330
331
config BR2_TOOLCHAIN_GCC_AT_LEAST_6
	bool
	select BR2_TOOLCHAIN_GCC_AT_LEAST_5

332
333
334
335
config BR2_TOOLCHAIN_GCC_AT_LEAST_7
	bool
	select BR2_TOOLCHAIN_GCC_AT_LEAST_6

336
337
338
339
# 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
340
	default "7"	if BR2_TOOLCHAIN_GCC_AT_LEAST_7
Thomas Petazzoni's avatar
Thomas Petazzoni committed
341
	default "6"	if BR2_TOOLCHAIN_GCC_AT_LEAST_6
342
343
344
345
346
347
348
349
	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
350

351
352
353
354
config BR2_TOOLCHAIN_HAS_MNAN_OPTION
	bool
	default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

355
356
357
358
config BR2_TOOLCHAIN_HAS_MFPXX_OPTION
	bool
	default y if BR2_TOOLCHAIN_GCC_AT_LEAST_5

359
360
361
362
config BR2_TOOLCHAIN_HAS_SYNC_1
	bool
	default y
	depends on !BR2_bfin
363
	depends on !BR2_m68k_cf
364
365
366
367
368
369
370
371
372
373
374
	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
375
	depends on !BR2_m68k_cf
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
	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

423
# libatomic is available since gcc 4.8, when thread support is
424
425
426
# 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.
427
428
429
config BR2_TOOLCHAIN_HAS_LIBATOMIC
	bool
	default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 && \
430
431
		BR2_TOOLCHAIN_HAS_THREADS && \
		!BR2_BINFMT_FLAT
432

433
434
# __atomic intrinsics are available:
# - with gcc 4.8, either through built-ins or libatomic, on all
435
436
437
438
439
440
441
442
443
#   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.
444
445
446
447
448
# - 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
449
	default y if BR2_TOOLCHAIN_HAS_LIBATOMIC
450
451
452
453
	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
454
455
456
457
458
459
460
461
462
463

# - 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