toolchain-common.in 12.8 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
15
16
17
18
19
20
21
# 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
	default y
	depends on !BR2_nios2
	depends on !BR2_ARM_CPU_ARMV4
	depends on !BR2_ARM_CPU_ARMV5
	depends on !BR2_sparc_v8

22
23
24
25
# https://sourceware.org/bugzilla/show_bug.cgi?id=19405
config BR2_TOOLCHAIN_HAS_BINUTILS_BUG_19405
	bool

26
config BR2_TOOLCHAIN_HAS_NATIVE_RPC
27
28
29
30
	bool

config BR2_USE_WCHAR
	bool
31
32

config BR2_ENABLE_LOCALE
33
34
	bool

35
36
37
config BR2_INSTALL_LIBSTDCPP
	bool

38
39
40
config BR2_TOOLCHAIN_HAS_FORTRAN
	bool

41
42
43
config BR2_TOOLCHAIN_HAS_THREADS
	bool

44
45
46
config BR2_TOOLCHAIN_HAS_THREADS_DEBUG
	bool

47
48
49
config BR2_TOOLCHAIN_HAS_THREADS_NPTL
	bool

50
51
52
config BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS
	bool

53
54
55
config BR2_TOOLCHAIN_HAS_SSP
	bool

56
57
58
config BR2_TOOLCHAIN_SUPPORTS_PIE
	bool

59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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
81
82
83
84
85
86
# 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.

87
88
config BR2_NEEDS_GETTEXT
	bool
89
	default y if BR2_TOOLCHAIN_USES_UCLIBC
Thomas Petazzoni's avatar
Thomas Petazzoni committed
90
91
92
93

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

95
config BR2_USE_MMU
Guido Martínez's avatar
Guido Martínez committed
96
97
	bool "Enable MMU support" if BR2_ARCH_HAS_MMU_OPTIONAL
	default y if BR2_ARCH_HAS_MMU_OPTIONAL || BR2_ARCH_HAS_MMU_MANDATORY
98
99
100
101
	help
	  If your target has a MMU, you should say Y here.  If you
	  are unsure, just say Y.

102
103
config BR2_TARGET_OPTIMIZATION
	string "Target Optimizations"
104
	default ""
105
106
	help
	  Optimizations to use when building for the target host.
107
	  NOTE: gcc optimization level is defined in build options.
108
109
110
111

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

114
115
116
	  Note that options with a '$' sign (eg. -Wl,-rpath='$ORIGIN/../lib')
	  are not supported.

117
118
119
120
121
122
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.
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

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

183
184
185
186
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13

187
188
189
190
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14

191
192
193
194
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15

195
196
197
198
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16

199
200
201
202
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17

203
204
205
206
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18

207
208
209
210
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19

211
212
213
214
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0

215
216
217
218
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1

219
220
221
222
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2

223
224
225
226
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3

227
228
229
230
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4

231
232
233
234
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5

235
236
237
238
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6

239
240
241
242
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7

243
244
245
246
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8

247
248
249
250
# 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
251
	default "4.9"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9
252
	default "4.8"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8
253
	default "4.7"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7
254
	default "4.6"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6
255
	default "4.5"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5
256
	default "4.4"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
257
	default "4.3"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3
258
	default "4.2"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2
259
	default "4.1"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1
260
	default "4.0"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
261
	default "3.19" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19
262
	default "3.18" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18
263
	default "3.17" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17
264
	default "3.16" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16
265
	default "3.15" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15
266
	default "3.14" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
	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"
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

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
314
315
316
317
config BR2_TOOLCHAIN_GCC_AT_LEAST_6
	bool
	select BR2_TOOLCHAIN_GCC_AT_LEAST_5

318
319
320
321
# 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
322
	default "6"	if BR2_TOOLCHAIN_GCC_AT_LEAST_6
323
324
325
326
327
328
329
330
	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
331
332
333
334
335

config BR2_TOOLCHAIN_HAS_SYNC_1
	bool
	default y
	depends on !BR2_bfin
336
	depends on !BR2_m68k_cf
337
338
339
340
341
342
343
344
345
346
347
	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
348
	depends on !BR2_m68k_cf
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
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
	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

396
# libatomic is available since gcc 4.8, when thread support is
397
398
399
# 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.
400
401
402
config BR2_TOOLCHAIN_HAS_LIBATOMIC
	bool
	default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 && \
403
404
		BR2_TOOLCHAIN_HAS_THREADS && \
		!BR2_BINFMT_FLAT
405

406
407
# __atomic intrinsics are available:
# - with gcc 4.8, either through built-ins or libatomic, on all
408
409
410
411
412
413
414
415
416
#   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.
417
418
419
420
421
# - 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
422
	default y if BR2_TOOLCHAIN_HAS_LIBATOMIC
423
424
425
426
	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
427
428
429
430
431
432
433
434
435
436

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