xref: /OK3568_Linux_fs/buildroot/toolchain/Config.in (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyunmenu "Toolchain"
2*4882a593Smuzhiyun
3*4882a593Smuzhiyun# Invisible option that makes sure the toolchain package always gets
4*4882a593Smuzhiyun# built
5*4882a593Smuzhiyunconfig BR2_TOOLCHAIN
6*4882a593Smuzhiyun	bool
7*4882a593Smuzhiyun	default y
8*4882a593Smuzhiyun
9*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_PREFER_CLANG
10*4882a593Smuzhiyun	bool "Prefer to use clang"
11*4882a593Smuzhiyun	default n
12*4882a593Smuzhiyun	help
13*4882a593Smuzhiyun	  Prefer to use clang when available.
14*4882a593Smuzhiyun
15*4882a593Smuzhiyun# Should be selected for glibc or eglibc
16*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_USES_GLIBC
17*4882a593Smuzhiyun	bool
18*4882a593Smuzhiyun	select BR2_USE_WCHAR
19*4882a593Smuzhiyun	select BR2_ENABLE_LOCALE
20*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HAS_FULL_GETTEXT
21*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HAS_THREADS
22*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
23*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HAS_THREADS_NPTL
24*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HAS_UCONTEXT
25*4882a593Smuzhiyun	select BR2_TOOLCHAIN_SUPPORTS_PIE
26*4882a593Smuzhiyun
27*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_USES_UCLIBC
28*4882a593Smuzhiyun	bool
29*4882a593Smuzhiyun	# ucontext is only available for a subset of the supported
30*4882a593Smuzhiyun	# architectures
31*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HAS_UCONTEXT if BR2_ARM_CPU_HAS_ARM || BR2_i386 \
32*4882a593Smuzhiyun		|| BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el \
33*4882a593Smuzhiyun		|| BR2_sparc || BR2_x86_64
34*4882a593Smuzhiyun	select BR2_TOOLCHAIN_SUPPORTS_PIE if !BR2_m68k && !BR2_microblaze && !BR2_STATIC_LIBS
35*4882a593Smuzhiyun
36*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_USES_MUSL
37*4882a593Smuzhiyun	bool
38*4882a593Smuzhiyun	select BR2_USE_WCHAR
39*4882a593Smuzhiyun	select BR2_ENABLE_LOCALE
40*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HAS_THREADS
41*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
42*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HAS_THREADS_NPTL
43*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HAS_UCONTEXT
44*4882a593Smuzhiyun	select BR2_TOOLCHAIN_SUPPORTS_PIE if !BR2_STATIC_LIBS
45*4882a593Smuzhiyun
46*4882a593Smuzhiyunchoice
47*4882a593Smuzhiyun	prompt "Toolchain type"
48*4882a593Smuzhiyun	help
49*4882a593Smuzhiyun	  Select whether to use the toolchain provided by buildroot
50*4882a593Smuzhiyun	  or an external toolchain.
51*4882a593Smuzhiyun
52*4882a593Smuzhiyun	  Some vendors provide toolchains in binary form, some in
53*4882a593Smuzhiyun	  source form.
54*4882a593Smuzhiyun
55*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_BUILDROOT
56*4882a593Smuzhiyun	bool "Buildroot toolchain"
57*4882a593Smuzhiyun	depends on BR2_ARCH_HAS_TOOLCHAIN_BUILDROOT
58*4882a593Smuzhiyun
59*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_EXTERNAL
60*4882a593Smuzhiyun	bool "External toolchain"
61*4882a593Smuzhiyun	help
62*4882a593Smuzhiyun	  Select if you want to use an existing cross-compiling
63*4882a593Smuzhiyun	  toolchain. Buildroot can either download automatically a
64*4882a593Smuzhiyun	  toolchain, or use an already installed toolchain.
65*4882a593Smuzhiyun
66*4882a593Smuzhiyunendchoice
67*4882a593Smuzhiyun
68*4882a593Smuzhiyunsource "toolchain/toolchain-buildroot/Config.in"
69*4882a593Smuzhiyunsource "toolchain/toolchain-external/Config.in"
70*4882a593Smuzhiyun
71*4882a593Smuzhiyun# Generic toolchain options
72*4882a593Smuzhiyun
73*4882a593Smuzhiyun# we want gdb config in the middle of both source and external
74*4882a593Smuzhiyun# toolchains, but mconf won't let us source the same file twice,
75*4882a593Smuzhiyun# so put it here instead
76*4882a593Smuzhiyunsource "package/gdb/Config.in.host"
77*4882a593Smuzhiyun
78*4882a593Smuzhiyuncomment "Toolchain Generic Options"
79*4882a593Smuzhiyun
80*4882a593Smuzhiyun# https://sourceware.org/bugzilla/show_bug.cgi?id=21464
81*4882a593Smuzhiyun# Affect toolchains built with binutils 2.31.1, still not fixed.
82*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_BINUTILS_BUG_21464
83*4882a593Smuzhiyun	bool
84*4882a593Smuzhiyun	default y if BR2_or1k
85*4882a593Smuzhiyun
86*4882a593Smuzhiyun# https://sourceware.org/bugzilla/show_bug.cgi?id=27597
87*4882a593Smuzhiyun# Affect toolchains built with binutils 2.36.1, still not fixed.
88*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597
89*4882a593Smuzhiyun	bool
90*4882a593Smuzhiyun	default y if BR2_nios2
91*4882a593Smuzhiyun
92*4882a593Smuzhiyun# Atomic types can be:
93*4882a593Smuzhiyun#  - never lock-free
94*4882a593Smuzhiyun#  - sometimes lock-free
95*4882a593Smuzhiyun#  - always lock-free
96*4882a593Smuzhiyun# see https://en.cppreference.com/w/c/atomic/ATOMIC_LOCK_FREE_consts
97*4882a593Smuzhiyun#
98*4882a593Smuzhiyun# On most architectures, gcc provides "always lock-free" atomic types,
99*4882a593Smuzhiyun# but a few architectures are limited to "sometimes lock-free"
100*4882a593Smuzhiyun# types. This hidden option allows to know if the architecture
101*4882a593Smuzhiyun# provides "always lock-free" atomic types.
102*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS
103*4882a593Smuzhiyun	bool
104*4882a593Smuzhiyun	default y
105*4882a593Smuzhiyun	depends on !BR2_nios2
106*4882a593Smuzhiyun	depends on !BR2_ARM_CPU_ARMV4
107*4882a593Smuzhiyun	depends on !BR2_ARM_CPU_ARMV5
108*4882a593Smuzhiyun	depends on !BR2_sparc_v8
109*4882a593Smuzhiyun	depends on !BR2_m68k_cf5208
110*4882a593Smuzhiyun
111*4882a593Smuzhiyun# GCC uses thunk functions to adjust the 'this' pointer when calling
112*4882a593Smuzhiyun# C++ member functions in classes derived with multiple inheritance.
113*4882a593Smuzhiyun# Generation of thunk functions requires support from the compiler
114*4882a593Smuzhiyun# back end. In the absence of that support target-independent code
115*4882a593Smuzhiyun# in the C++ front end is used to generate thunk functions, but it
116*4882a593Smuzhiyun# does not support vararg functions.
117*4882a593Smuzhiyun# or1k will support it in the gcc mainline starting with gcc-9.
118*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_SUPPORTS_VARIADIC_MI_THUNK
119*4882a593Smuzhiyun	bool
120*4882a593Smuzhiyun	default y
121*4882a593Smuzhiyun	depends on !BR2_or1k
122*4882a593Smuzhiyun	depends on !BR2_xtensa
123*4882a593Smuzhiyun
124*4882a593Smuzhiyun# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43744. This bug no
125*4882a593Smuzhiyun# reappeared on gcc 9.x and is still not fixed on gcc 11.x
126*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_GCC_BUG_43744
127*4882a593Smuzhiyun	bool
128*4882a593Smuzhiyun	default y if BR2_sh4
129*4882a593Smuzhiyun	depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_8 || \
130*4882a593Smuzhiyun		BR2_TOOLCHAIN_GCC_AT_LEAST_9 || \
131*4882a593Smuzhiyun		BR2_TOOLCHAIN_GCC_AT_LEAST_10 || \
132*4882a593Smuzhiyun		BR2_TOOLCHAIN_GCC_AT_LEAST_11
133*4882a593Smuzhiyun
134*4882a593Smuzhiyun# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63261. This bug no
135*4882a593Smuzhiyun# longer exists in gcc 8.x.
136*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_GCC_BUG_63261
137*4882a593Smuzhiyun	bool
138*4882a593Smuzhiyun	default y if BR2_microblaze
139*4882a593Smuzhiyun	depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_8
140*4882a593Smuzhiyun
141*4882a593Smuzhiyun# Prior to gcc 7.x, exception_ptr, nested_exception and future from
142*4882a593Smuzhiyun# libstdc++ would only be provided on architectures that support
143*4882a593Smuzhiyun# always lock-free atomic ints. See
144*4882a593Smuzhiyun# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64735. This issue has
145*4882a593Smuzhiyun# been removed in GCC 7.x, where exception propagation is now
146*4882a593Smuzhiyun# supported without lock-free atomic int.
147*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_GCC_BUG_64735
148*4882a593Smuzhiyun	bool
149*4882a593Smuzhiyun	default y if !BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS && \
150*4882a593Smuzhiyun		!BR2_TOOLCHAIN_GCC_AT_LEAST_7
151*4882a593Smuzhiyun
152*4882a593Smuzhiyun# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68485. This bug still
153*4882a593Smuzhiyun# exists in gcc 9.x
154*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_GCC_BUG_68485
155*4882a593Smuzhiyun	bool
156*4882a593Smuzhiyun	default y if BR2_microblaze
157*4882a593Smuzhiyun
158*4882a593Smuzhiyun# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83143
159*4882a593Smuzhiyun# Error: invalid operands (*UND* and .text sections) for `-' on sh4.
160*4882a593Smuzhiyun# This bug no longer exists in gcc 10.x but reappeared on gcc 11.x and
161*4882a593Smuzhiyun# it still not been fixed yet.
162*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_GCC_BUG_83143
163*4882a593Smuzhiyun	bool
164*4882a593Smuzhiyun	default y if BR2_sh
165*4882a593Smuzhiyun	depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_10 || BR2_TOOLCHAIN_GCC_AT_LEAST_11
166*4882a593Smuzhiyun
167*4882a593Smuzhiyun# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85180. This bug no
168*4882a593Smuzhiyun# longer exists in gcc 8.x.
169*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_GCC_BUG_85180
170*4882a593Smuzhiyun	bool
171*4882a593Smuzhiyun	default y if BR2_microblaze
172*4882a593Smuzhiyun	depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_8
173*4882a593Smuzhiyun
174*4882a593Smuzhiyun# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85862
175*4882a593Smuzhiyun# An infinite loop exists in the find_base_term() logic of 6.x
176*4882a593Smuzhiyun# on microblaze.  http://autobuild.buildroot.net/results/158e8ebb39713e1b436a5cc1a1916f46c30694df/
177*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_GCC_BUG_85862
178*4882a593Smuzhiyun	bool
179*4882a593Smuzhiyun	default y if BR2_microblaze
180*4882a593Smuzhiyun	depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_7
181*4882a593Smuzhiyun
182*4882a593Smuzhiyun# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90620
183*4882a593Smuzhiyun# ICE: in do_output_reload, at reload1.c:7978 on microblaze.
184*4882a593Smuzhiyun# This bug no longer exists in gcc 10.x
185*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_GCC_BUG_90620
186*4882a593Smuzhiyun	bool
187*4882a593Smuzhiyun	default y if BR2_microblaze
188*4882a593Smuzhiyun	depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_10
189*4882a593Smuzhiyun
190*4882a593Smuzhiyun# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93847
191*4882a593Smuzhiyun# ICE: compiler error: Segmentation fault on Nios II. This bug
192*4882a593Smuzhiyun# no longer exists in gcc 9.x.
193*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_GCC_BUG_93847
194*4882a593Smuzhiyun	bool
195*4882a593Smuzhiyun	default y if BR2_nios2 && !BR2_TOOLCHAIN_GCC_AT_LEAST_9
196*4882a593Smuzhiyun
197*4882a593Smuzhiyun# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99410
198*4882a593Smuzhiyun# Error: branch offset out of range on Nios II. This bug
199*4882a593Smuzhiyun# no longer exists in gcc 8.x but reappeared on gcc 9.x and has been
200*4882a593Smuzhiyun# fixed on gcc 10.x.
201*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_GCC_BUG_99140
202*4882a593Smuzhiyun	bool
203*4882a593Smuzhiyun	default y if !BR2_TOOLCHAIN_GCC_AT_LEAST_8
204*4882a593Smuzhiyun	default y if BR2_TOOLCHAIN_GCC_AT_LEAST_9 && !BR2_TOOLCHAIN_GCC_AT_LEAST_10
205*4882a593Smuzhiyun	depends on BR2_nios2
206*4882a593Smuzhiyun
207*4882a593Smuzhiyun# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101737
208*4882a593Smuzhiyun# ICE: SH4 -Os causes internal compiler error. This bug
209*4882a593Smuzhiyun# still exists in gcc = 11.1.0
210*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_GCC_BUG_101737
211*4882a593Smuzhiyun	bool
212*4882a593Smuzhiyun	default y if BR2_sh4
213*4882a593Smuzhiyun
214*4882a593Smuzhiyun# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101915
215*4882a593Smuzhiyun# ICE: in extract_insn, at recog.c:2294 on microblaze.
216*4882a593Smuzhiyun# This bug still exists in gcc = 11.1.0
217*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_GCC_BUG_101915
218*4882a593Smuzhiyun	bool
219*4882a593Smuzhiyun	default y if BR2_microblaze
220*4882a593Smuzhiyun
221*4882a593Smuzhiyun# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101916
222*4882a593Smuzhiyun# ICE: on SH4: Segmentation fault signal terminated program cc1.
223*4882a593Smuzhiyun# This bug still exists in gcc = 11.1.0
224*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_GCC_BUG_101916
225*4882a593Smuzhiyun	bool
226*4882a593Smuzhiyun	default y if BR2_sh4
227*4882a593Smuzhiyun
228*4882a593Smuzhiyun# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101952
229*4882a593Smuzhiyun# ICE: on SH4: unaligned opcodes detected in executable segment.
230*4882a593Smuzhiyun# This bug still exists in gcc = 11.1.0
231*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_GCC_BUG_101952
232*4882a593Smuzhiyun	bool
233*4882a593Smuzhiyun	default y if BR2_sh4
234*4882a593Smuzhiyun
235*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_NATIVE_RPC
236*4882a593Smuzhiyun	bool
237*4882a593Smuzhiyun
238*4882a593Smuzhiyunconfig BR2_USE_WCHAR
239*4882a593Smuzhiyun	bool
240*4882a593Smuzhiyun
241*4882a593Smuzhiyunconfig BR2_ENABLE_LOCALE
242*4882a593Smuzhiyun	bool
243*4882a593Smuzhiyun
244*4882a593Smuzhiyunconfig BR2_INSTALL_LIBSTDCPP
245*4882a593Smuzhiyun	bool
246*4882a593Smuzhiyun
247*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_DLANG
248*4882a593Smuzhiyun	bool
249*4882a593Smuzhiyun
250*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_FORTRAN
251*4882a593Smuzhiyun	bool
252*4882a593Smuzhiyun
253*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_THREADS
254*4882a593Smuzhiyun	bool
255*4882a593Smuzhiyun
256*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_THREADS_DEBUG
257*4882a593Smuzhiyun	bool
258*4882a593Smuzhiyun
259*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_THREADS_NPTL
260*4882a593Smuzhiyun	bool
261*4882a593Smuzhiyun
262*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_SSP
263*4882a593Smuzhiyun	bool
264*4882a593Smuzhiyun
265*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_SSP_STRONG
266*4882a593Smuzhiyun	bool
267*4882a593Smuzhiyun	default y if BR2_TOOLCHAIN_HAS_SSP && BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
268*4882a593Smuzhiyun
269*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_UCONTEXT
270*4882a593Smuzhiyun	bool
271*4882a593Smuzhiyun
272*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_OPENMP
273*4882a593Smuzhiyun	bool
274*4882a593Smuzhiyun
275*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_SUPPORTS_PIE
276*4882a593Smuzhiyun	bool
277*4882a593Smuzhiyun
278*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY
279*4882a593Smuzhiyun	bool "Copy gconv libraries"
280*4882a593Smuzhiyun	depends on BR2_TOOLCHAIN_USES_GLIBC
281*4882a593Smuzhiyun	help
282*4882a593Smuzhiyun	  The gconv libraries are used to convert between different
283*4882a593Smuzhiyun	  character sets (charsets).
284*4882a593Smuzhiyun
285*4882a593Smuzhiyun	  Say 'y' if you need to store and/or display different
286*4882a593Smuzhiyun	  charsets.
287*4882a593Smuzhiyun
288*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_LIST
289*4882a593Smuzhiyun	string "Gconv libraries to copy"
290*4882a593Smuzhiyun	depends on BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY
291*4882a593Smuzhiyun	help
292*4882a593Smuzhiyun	  Set to the list of gconv libraries to copy.
293*4882a593Smuzhiyun	  Leave empty to copy all gconv libraries.
294*4882a593Smuzhiyun
295*4882a593Smuzhiyun	  Specify only the basename of the libraries, leave
296*4882a593Smuzhiyun	  out the .so extension. Eg.:
297*4882a593Smuzhiyun	    IBM850 ISO8859-15 UNICODE
298*4882a593Smuzhiyun
299*4882a593Smuzhiyun	  Note: the full set of gconv libs are ~8MiB (on ARM).
300*4882a593Smuzhiyun
301*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_EXTRA_LIBS
302*4882a593Smuzhiyun	string "Extra toolchain libraries to be copied to target"
303*4882a593Smuzhiyun	default BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS if BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS != "" # legacy
304*4882a593Smuzhiyun	depends on !BR2_STATIC_LIBS
305*4882a593Smuzhiyun	help
306*4882a593Smuzhiyun	  If your toolchain provides extra libraries that need to be
307*4882a593Smuzhiyun	  copied to the target filesystem, enter them here, separated
308*4882a593Smuzhiyun	  by spaces. The library should not include a suffix or any
309*4882a593Smuzhiyun	  type of pre/post wildcard.
310*4882a593Smuzhiyun
311*4882a593Smuzhiyun	  Examples where this can be useful is for adding debug
312*4882a593Smuzhiyun	  libraries to the target like the GCC libsanitizer.
313*4882a593Smuzhiyun	  e.g. "libasan liblsan libtsan libubsan"
314*4882a593Smuzhiyun
315*4882a593Smuzhiyun# This boolean is true if the toolchain provides a built-in full
316*4882a593Smuzhiyun# featured gettext implementation (glibc), and false if only a stub
317*4882a593Smuzhiyun# gettext implementation is provided (uclibc, musl)
318*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_FULL_GETTEXT
319*4882a593Smuzhiyun	bool
320*4882a593Smuzhiyun
321*4882a593Smuzhiyunconfig BR2_USE_MMU
322*4882a593Smuzhiyun	bool "Enable MMU support" if BR2_ARCH_HAS_MMU_OPTIONAL
323*4882a593Smuzhiyun	default y if BR2_ARCH_HAS_MMU_OPTIONAL || BR2_ARCH_HAS_MMU_MANDATORY
324*4882a593Smuzhiyun	help
325*4882a593Smuzhiyun	  If your target has a MMU, you should say Y here.  If you
326*4882a593Smuzhiyun	  are unsure, just say Y.
327*4882a593Smuzhiyun
328*4882a593Smuzhiyunconfig BR2_TARGET_OPTIMIZATION
329*4882a593Smuzhiyun	string "Target Optimizations"
330*4882a593Smuzhiyun	default ""
331*4882a593Smuzhiyun	help
332*4882a593Smuzhiyun	  Optimizations to use when building for the target host.
333*4882a593Smuzhiyun	  NOTE: gcc optimization level is defined in build options.
334*4882a593Smuzhiyun
335*4882a593Smuzhiyunconfig BR2_TARGET_LDFLAGS
336*4882a593Smuzhiyun	string "Target linker options"
337*4882a593Smuzhiyun	help
338*4882a593Smuzhiyun	  Extra options to pass to the linker when building for the
339*4882a593Smuzhiyun	  target.
340*4882a593Smuzhiyun
341*4882a593Smuzhiyun	  Note that options with a '$' sign (eg.
342*4882a593Smuzhiyun	  -Wl,-rpath='$ORIGIN/../lib') are not supported.
343*4882a593Smuzhiyun
344*4882a593Smuzhiyunconfig BR2_ECLIPSE_REGISTER
345*4882a593Smuzhiyun	bool "Register toolchain within Eclipse Buildroot plug-in"
346*4882a593Smuzhiyun	help
347*4882a593Smuzhiyun	  This options tells Buildroot to generate the necessary
348*4882a593Smuzhiyun	  configuration files to make your toolchain appear within
349*4882a593Smuzhiyun	  Eclipse, through the Eclipse Buildroot plugin.
350*4882a593Smuzhiyun
351*4882a593Smuzhiyun# Options for packages to depend on, if they require at least a
352*4882a593Smuzhiyun# specific version of the kernel headers.
353*4882a593Smuzhiyun# Toolchains should choose the adequate option (ie. the highest
354*4882a593Smuzhiyun# version, not all of them).
355*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
356*4882a593Smuzhiyun	bool
357*4882a593Smuzhiyun
358*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1
359*4882a593Smuzhiyun	bool
360*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
361*4882a593Smuzhiyun
362*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2
363*4882a593Smuzhiyun	bool
364*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1
365*4882a593Smuzhiyun
366*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3
367*4882a593Smuzhiyun	bool
368*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2
369*4882a593Smuzhiyun
370*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4
371*4882a593Smuzhiyun	bool
372*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3
373*4882a593Smuzhiyun
374*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5
375*4882a593Smuzhiyun	bool
376*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4
377*4882a593Smuzhiyun
378*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6
379*4882a593Smuzhiyun	bool
380*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5
381*4882a593Smuzhiyun
382*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7
383*4882a593Smuzhiyun	bool
384*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6
385*4882a593Smuzhiyun
386*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8
387*4882a593Smuzhiyun	bool
388*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7
389*4882a593Smuzhiyun
390*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9
391*4882a593Smuzhiyun	bool
392*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8
393*4882a593Smuzhiyun
394*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
395*4882a593Smuzhiyun	bool
396*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9
397*4882a593Smuzhiyun
398*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11
399*4882a593Smuzhiyun	bool
400*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
401*4882a593Smuzhiyun
402*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12
403*4882a593Smuzhiyun	bool
404*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11
405*4882a593Smuzhiyun
406*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13
407*4882a593Smuzhiyun	bool
408*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12
409*4882a593Smuzhiyun
410*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14
411*4882a593Smuzhiyun	bool
412*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13
413*4882a593Smuzhiyun
414*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15
415*4882a593Smuzhiyun	bool
416*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14
417*4882a593Smuzhiyun
418*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16
419*4882a593Smuzhiyun	bool
420*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15
421*4882a593Smuzhiyun
422*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17
423*4882a593Smuzhiyun	bool
424*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16
425*4882a593Smuzhiyun
426*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18
427*4882a593Smuzhiyun	bool
428*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17
429*4882a593Smuzhiyun
430*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19
431*4882a593Smuzhiyun	bool
432*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18
433*4882a593Smuzhiyun
434*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
435*4882a593Smuzhiyun	bool
436*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19
437*4882a593Smuzhiyun
438*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1
439*4882a593Smuzhiyun	bool
440*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
441*4882a593Smuzhiyun
442*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2
443*4882a593Smuzhiyun	bool
444*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1
445*4882a593Smuzhiyun
446*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3
447*4882a593Smuzhiyun	bool
448*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2
449*4882a593Smuzhiyun
450*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
451*4882a593Smuzhiyun	bool
452*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3
453*4882a593Smuzhiyun
454*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5
455*4882a593Smuzhiyun	bool
456*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
457*4882a593Smuzhiyun
458*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6
459*4882a593Smuzhiyun	bool
460*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5
461*4882a593Smuzhiyun
462*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7
463*4882a593Smuzhiyun	bool
464*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6
465*4882a593Smuzhiyun
466*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8
467*4882a593Smuzhiyun	bool
468*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7
469*4882a593Smuzhiyun
470*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9
471*4882a593Smuzhiyun	bool
472*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8
473*4882a593Smuzhiyun
474*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10
475*4882a593Smuzhiyun	bool
476*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9
477*4882a593Smuzhiyun
478*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11
479*4882a593Smuzhiyun	bool
480*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10
481*4882a593Smuzhiyun
482*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12
483*4882a593Smuzhiyun	bool
484*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11
485*4882a593Smuzhiyun
486*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13
487*4882a593Smuzhiyun	bool
488*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12
489*4882a593Smuzhiyun
490*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14
491*4882a593Smuzhiyun	bool
492*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13
493*4882a593Smuzhiyun
494*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15
495*4882a593Smuzhiyun	bool
496*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14
497*4882a593Smuzhiyun
498*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16
499*4882a593Smuzhiyun	bool
500*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15
501*4882a593Smuzhiyun
502*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17
503*4882a593Smuzhiyun	bool
504*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16
505*4882a593Smuzhiyun
506*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18
507*4882a593Smuzhiyun	bool
508*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17
509*4882a593Smuzhiyun
510*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19
511*4882a593Smuzhiyun	bool
512*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18
513*4882a593Smuzhiyun
514*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20
515*4882a593Smuzhiyun	bool
516*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19
517*4882a593Smuzhiyun
518*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0
519*4882a593Smuzhiyun	bool
520*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20
521*4882a593Smuzhiyun
522*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1
523*4882a593Smuzhiyun	bool
524*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0
525*4882a593Smuzhiyun
526*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2
527*4882a593Smuzhiyun	bool
528*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1
529*4882a593Smuzhiyun
530*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3
531*4882a593Smuzhiyun	bool
532*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2
533*4882a593Smuzhiyun
534*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4
535*4882a593Smuzhiyun	bool
536*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3
537*4882a593Smuzhiyun
538*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5
539*4882a593Smuzhiyun	bool
540*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4
541*4882a593Smuzhiyun
542*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_6
543*4882a593Smuzhiyun	bool
544*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5
545*4882a593Smuzhiyun
546*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_7
547*4882a593Smuzhiyun	bool
548*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_6
549*4882a593Smuzhiyun
550*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8
551*4882a593Smuzhiyun	bool
552*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_7
553*4882a593Smuzhiyun
554*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9
555*4882a593Smuzhiyun	bool
556*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8
557*4882a593Smuzhiyun
558*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10
559*4882a593Smuzhiyun	bool
560*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9
561*4882a593Smuzhiyun
562*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_11
563*4882a593Smuzhiyun	bool
564*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10
565*4882a593Smuzhiyun
566*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_12
567*4882a593Smuzhiyun	bool
568*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_11
569*4882a593Smuzhiyun
570*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_13
571*4882a593Smuzhiyun	bool
572*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_12
573*4882a593Smuzhiyun
574*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14
575*4882a593Smuzhiyun	bool
576*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_13
577*4882a593Smuzhiyun
578*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15
579*4882a593Smuzhiyun	bool
580*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14
581*4882a593Smuzhiyun
582*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_16
583*4882a593Smuzhiyun	bool
584*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15
585*4882a593Smuzhiyun
586*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_17
587*4882a593Smuzhiyun	bool
588*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_16
589*4882a593Smuzhiyun
590*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_18
591*4882a593Smuzhiyun	bool
592*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_17
593*4882a593Smuzhiyun
594*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_19
595*4882a593Smuzhiyun	bool
596*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_18
597*4882a593Smuzhiyun
598*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_0
599*4882a593Smuzhiyun	bool
600*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_19
601*4882a593Smuzhiyun
602*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_1
603*4882a593Smuzhiyun	bool
604*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_0
605*4882a593Smuzhiyun	select BR2_TOOLCHAIN_HEADERS_LATEST
606*4882a593Smuzhiyun
607*4882a593Smuzhiyun# This should be selected by the latest version, above, to indicate that
608*4882a593Smuzhiyun# Buildroot does not know of more recent headers than the ones selected.
609*4882a593Smuzhiyun# This allows using toolchains with headers more recent than Buildroot
610*4882a593Smuzhiyun# knows about, while still enforcing strict check for older headers.
611*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_LATEST
612*4882a593Smuzhiyun	bool
613*4882a593Smuzhiyun
614*4882a593Smuzhiyun# This order guarantees that the highest version is set, as kconfig
615*4882a593Smuzhiyun# stops affecting a value on the first matching default.
616*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HEADERS_AT_LEAST
617*4882a593Smuzhiyun	string
618*4882a593Smuzhiyun	default "6.1"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_1
619*4882a593Smuzhiyun	default "6.0"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_0
620*4882a593Smuzhiyun	default "5.19" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_19
621*4882a593Smuzhiyun	default "5.18" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_18
622*4882a593Smuzhiyun	default "5.17" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_17
623*4882a593Smuzhiyun	default "5.16" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_16
624*4882a593Smuzhiyun	default "5.15" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15
625*4882a593Smuzhiyun	default "5.14" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14
626*4882a593Smuzhiyun	default "5.13" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_13
627*4882a593Smuzhiyun	default "5.12" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_12
628*4882a593Smuzhiyun	default "5.11" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_11
629*4882a593Smuzhiyun	default "5.10" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10
630*4882a593Smuzhiyun	default "5.9"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9
631*4882a593Smuzhiyun	default "5.8"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8
632*4882a593Smuzhiyun	default "5.7"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_7
633*4882a593Smuzhiyun	default "5.6"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_6
634*4882a593Smuzhiyun	default "5.5"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5
635*4882a593Smuzhiyun	default "5.4"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4
636*4882a593Smuzhiyun	default "5.3"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3
637*4882a593Smuzhiyun	default "5.2"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2
638*4882a593Smuzhiyun	default "5.1"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1
639*4882a593Smuzhiyun	default "5.0"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0
640*4882a593Smuzhiyun	default "4.20" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20
641*4882a593Smuzhiyun	default "4.19" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19
642*4882a593Smuzhiyun	default "4.18" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18
643*4882a593Smuzhiyun	default "4.17" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17
644*4882a593Smuzhiyun	default "4.16" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16
645*4882a593Smuzhiyun	default "4.15" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15
646*4882a593Smuzhiyun	default "4.14" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14
647*4882a593Smuzhiyun	default "4.13" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13
648*4882a593Smuzhiyun	default "4.12" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12
649*4882a593Smuzhiyun	default "4.11" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11
650*4882a593Smuzhiyun	default "4.10" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10
651*4882a593Smuzhiyun	default "4.9"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9
652*4882a593Smuzhiyun	default "4.8"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8
653*4882a593Smuzhiyun	default "4.7"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7
654*4882a593Smuzhiyun	default "4.6"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6
655*4882a593Smuzhiyun	default "4.5"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5
656*4882a593Smuzhiyun	default "4.4"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
657*4882a593Smuzhiyun	default "4.3"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3
658*4882a593Smuzhiyun	default "4.2"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2
659*4882a593Smuzhiyun	default "4.1"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1
660*4882a593Smuzhiyun	default "4.0"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
661*4882a593Smuzhiyun	default "3.19" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19
662*4882a593Smuzhiyun	default "3.18" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18
663*4882a593Smuzhiyun	default "3.17" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17
664*4882a593Smuzhiyun	default "3.16" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16
665*4882a593Smuzhiyun	default "3.15" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15
666*4882a593Smuzhiyun	default "3.14" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14
667*4882a593Smuzhiyun	default "3.13" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13
668*4882a593Smuzhiyun	default "3.12" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12
669*4882a593Smuzhiyun	default "3.11" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11
670*4882a593Smuzhiyun	default "3.10" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
671*4882a593Smuzhiyun	default "3.9"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9
672*4882a593Smuzhiyun	default "3.8"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8
673*4882a593Smuzhiyun	default "3.7"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7
674*4882a593Smuzhiyun	default "3.6"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6
675*4882a593Smuzhiyun	default "3.5"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5
676*4882a593Smuzhiyun	default "3.4"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4
677*4882a593Smuzhiyun	default "3.3"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3
678*4882a593Smuzhiyun	default "3.2"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2
679*4882a593Smuzhiyun	default "3.1"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1
680*4882a593Smuzhiyun	default "3.0"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
681*4882a593Smuzhiyun	default "2.6"
682*4882a593Smuzhiyun
683*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_GCC_AT_LEAST_4_3
684*4882a593Smuzhiyun	bool
685*4882a593Smuzhiyun
686*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_GCC_AT_LEAST_4_4
687*4882a593Smuzhiyun	bool
688*4882a593Smuzhiyun	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_3
689*4882a593Smuzhiyun
690*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_GCC_AT_LEAST_4_5
691*4882a593Smuzhiyun	bool
692*4882a593Smuzhiyun	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_4
693*4882a593Smuzhiyun
694*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_GCC_AT_LEAST_4_6
695*4882a593Smuzhiyun	bool
696*4882a593Smuzhiyun	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_5
697*4882a593Smuzhiyun
698*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
699*4882a593Smuzhiyun	bool
700*4882a593Smuzhiyun	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_6
701*4882a593Smuzhiyun
702*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
703*4882a593Smuzhiyun	bool
704*4882a593Smuzhiyun	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
705*4882a593Smuzhiyun
706*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
707*4882a593Smuzhiyun	bool
708*4882a593Smuzhiyun	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
709*4882a593Smuzhiyun
710*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_GCC_AT_LEAST_5
711*4882a593Smuzhiyun	bool
712*4882a593Smuzhiyun	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
713*4882a593Smuzhiyun
714*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_GCC_AT_LEAST_6
715*4882a593Smuzhiyun	bool
716*4882a593Smuzhiyun	select BR2_TOOLCHAIN_GCC_AT_LEAST_5
717*4882a593Smuzhiyun
718*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_GCC_AT_LEAST_7
719*4882a593Smuzhiyun	bool
720*4882a593Smuzhiyun	select BR2_TOOLCHAIN_GCC_AT_LEAST_6
721*4882a593Smuzhiyun
722*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_GCC_AT_LEAST_8
723*4882a593Smuzhiyun	bool
724*4882a593Smuzhiyun	select BR2_TOOLCHAIN_GCC_AT_LEAST_7
725*4882a593Smuzhiyun
726*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_GCC_AT_LEAST_9
727*4882a593Smuzhiyun	bool
728*4882a593Smuzhiyun	select BR2_TOOLCHAIN_GCC_AT_LEAST_8
729*4882a593Smuzhiyun
730*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_GCC_AT_LEAST_10
731*4882a593Smuzhiyun	bool
732*4882a593Smuzhiyun	select BR2_TOOLCHAIN_GCC_AT_LEAST_9
733*4882a593Smuzhiyun
734*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_GCC_AT_LEAST_11
735*4882a593Smuzhiyun	bool
736*4882a593Smuzhiyun	select BR2_TOOLCHAIN_GCC_AT_LEAST_10
737*4882a593Smuzhiyun
738*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_GCC_AT_LEAST_12
739*4882a593Smuzhiyun	bool
740*4882a593Smuzhiyun	select BR2_TOOLCHAIN_GCC_AT_LEAST_11
741*4882a593Smuzhiyun
742*4882a593Smuzhiyun# This order guarantees that the highest version is set, as kconfig
743*4882a593Smuzhiyun# stops affecting a value on the first matching default.
744*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_GCC_AT_LEAST
745*4882a593Smuzhiyun	string
746*4882a593Smuzhiyun	default "12"	if BR2_TOOLCHAIN_GCC_AT_LEAST_12
747*4882a593Smuzhiyun	default "11"	if BR2_TOOLCHAIN_GCC_AT_LEAST_11
748*4882a593Smuzhiyun	default "10"	if BR2_TOOLCHAIN_GCC_AT_LEAST_10
749*4882a593Smuzhiyun	default "9"	if BR2_TOOLCHAIN_GCC_AT_LEAST_9
750*4882a593Smuzhiyun	default "8"	if BR2_TOOLCHAIN_GCC_AT_LEAST_8
751*4882a593Smuzhiyun	default "7"	if BR2_TOOLCHAIN_GCC_AT_LEAST_7
752*4882a593Smuzhiyun	default "6"	if BR2_TOOLCHAIN_GCC_AT_LEAST_6
753*4882a593Smuzhiyun	default "5"	if BR2_TOOLCHAIN_GCC_AT_LEAST_5
754*4882a593Smuzhiyun	default "4.9"	if BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
755*4882a593Smuzhiyun	default "4.8"	if BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
756*4882a593Smuzhiyun	default "4.7"	if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
757*4882a593Smuzhiyun	default "4.6"	if BR2_TOOLCHAIN_GCC_AT_LEAST_4_6
758*4882a593Smuzhiyun	default "4.5"	if BR2_TOOLCHAIN_GCC_AT_LEAST_4_5
759*4882a593Smuzhiyun	default "4.4"	if BR2_TOOLCHAIN_GCC_AT_LEAST_4_4
760*4882a593Smuzhiyun	default "4.3"	if BR2_TOOLCHAIN_GCC_AT_LEAST_4_3
761*4882a593Smuzhiyun
762*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_MNAN_OPTION
763*4882a593Smuzhiyun	bool
764*4882a593Smuzhiyun	default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
765*4882a593Smuzhiyun
766*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_SYNC_1
767*4882a593Smuzhiyun	bool
768*4882a593Smuzhiyun	default y
769*4882a593Smuzhiyun	depends on !BR2_m68k_cf
770*4882a593Smuzhiyun	depends on !BR2_microblaze
771*4882a593Smuzhiyun	depends on !BR2_sparc
772*4882a593Smuzhiyun	depends on !(BR2_arc && !BR2_ARC_ATOMIC_EXT)
773*4882a593Smuzhiyun
774*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_SYNC_2
775*4882a593Smuzhiyun	bool
776*4882a593Smuzhiyun	default y if BR2_TOOLCHAIN_HAS_SYNC_1
777*4882a593Smuzhiyun
778*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_SYNC_4
779*4882a593Smuzhiyun	bool
780*4882a593Smuzhiyun	default y
781*4882a593Smuzhiyun	depends on !BR2_m68k_cf
782*4882a593Smuzhiyun	depends on !BR2_sparc
783*4882a593Smuzhiyun	depends on !(BR2_arc && !BR2_ARC_ATOMIC_EXT)
784*4882a593Smuzhiyun
785*4882a593Smuzhiyun# The availability of __sync for 8-byte types on ARM is somewhat
786*4882a593Smuzhiyun# complicated:
787*4882a593Smuzhiyun#
788*4882a593Smuzhiyun#  - It appeared in gcc starting with gcc 4.7.
789*4882a593Smuzhiyun#
790*4882a593Smuzhiyun#  - On ARMv7, there is no problem, it can be directly implemented in
791*4882a593Smuzhiyun#    userspace.
792*4882a593Smuzhiyun#
793*4882a593Smuzhiyun#  - On < ARMv7, it requires help from the kernel. Unfortunately, the
794*4882a593Smuzhiyun#    libgcc code implementing 8-byte __sync with the help from the
795*4882a593Smuzhiyun#    kernel calls __write() when a failure occurs, which is a function
796*4882a593Smuzhiyun#    internal to glibc, not available in uClibc and musl. This means
797*4882a593Smuzhiyun#    that the 8-byte __sync operations are not available on < ARMv7
798*4882a593Smuzhiyun#    with uClibc and musl. This problem was fixed as part of gcc
799*4882a593Smuzhiyun#    PR68059, which was backported to the gcc 5 branch, but isn't yet
800*4882a593Smuzhiyun#    part of any gcc 5.x release.
801*4882a593Smuzhiyun#
802*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_ARM_HAS_SYNC_8
803*4882a593Smuzhiyun	bool
804*4882a593Smuzhiyun	default y
805*4882a593Smuzhiyun	depends on BR2_arm || BR2_armeb
806*4882a593Smuzhiyun	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
807*4882a593Smuzhiyun	depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_ARM_CPU_ARMV7A
808*4882a593Smuzhiyun
809*4882a593Smuzhiyun# 8-byte intrinsics available on most x86 CPUs, except a few old ones
810*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_X86_HAS_SYNC_8
811*4882a593Smuzhiyun	bool
812*4882a593Smuzhiyun	default y
813*4882a593Smuzhiyun	depends on BR2_i386
814*4882a593Smuzhiyun	depends on !BR2_x86_i486
815*4882a593Smuzhiyun	depends on !BR2_x86_c3
816*4882a593Smuzhiyun	depends on !BR2_x86_winchip_c6
817*4882a593Smuzhiyun	depends on !BR2_x86_winchip2
818*4882a593Smuzhiyun
819*4882a593Smuzhiyun# 8-byte intrinsics available:
820*4882a593Smuzhiyun#  - On all 64 bits architecture
821*4882a593Smuzhiyun#  - On a certain combinations of ARM platforms
822*4882a593Smuzhiyun#  - On certain x86 32 bits CPUs
823*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_SYNC_8
824*4882a593Smuzhiyun	bool
825*4882a593Smuzhiyun	default y if BR2_ARCH_IS_64
826*4882a593Smuzhiyun	default y if BR2_TOOLCHAIN_ARM_HAS_SYNC_8
827*4882a593Smuzhiyun	default y if BR2_TOOLCHAIN_X86_HAS_SYNC_8
828*4882a593Smuzhiyun
829*4882a593Smuzhiyun# libatomic is available since gcc 4.8, when thread support is
830*4882a593Smuzhiyun# enabled. Also, libatomic doesn't recognize "uclinux" as a valid OS
831*4882a593Smuzhiyun# part of the tuple, and is therefore not build on uclinux targets,
832*4882a593Smuzhiyun# which is why BR2_BINFMT_FLAT configurations are excluded.
833*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_LIBATOMIC
834*4882a593Smuzhiyun	bool
835*4882a593Smuzhiyun	default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 && \
836*4882a593Smuzhiyun		!BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AARCH64 && \
837*4882a593Smuzhiyun		BR2_TOOLCHAIN_HAS_THREADS && \
838*4882a593Smuzhiyun		!BR2_BINFMT_FLAT
839*4882a593Smuzhiyun
840*4882a593Smuzhiyun# __atomic intrinsics are available:
841*4882a593Smuzhiyun# - with gcc 4.8, either through built-ins or libatomic, on all
842*4882a593Smuzhiyun#   architectures. Since we don't want to separate the cases where
843*4882a593Smuzhiyun#   libatomic is needed vs. not needed, we simplify thing and only
844*4882a593Smuzhiyun#   support situations where libatomic is available, even if on some
845*4882a593Smuzhiyun#   architectures libatomic is not strictly needed as all __atomic
846*4882a593Smuzhiyun#   intrinsics might be built-in. The only case where libatomic is
847*4882a593Smuzhiyun#   missing entirely is when the toolchain does not have support for
848*4882a593Smuzhiyun#   threads. However, a package that does not need threads but still
849*4882a593Smuzhiyun#   uses atomics is quite a corner case, which does not warrant the
850*4882a593Smuzhiyun#   added complexity.
851*4882a593Smuzhiyun# - with gcc 4.7, libatomic did not exist, so only built-ins are
852*4882a593Smuzhiyun#   available. This means that __atomic can only be used in a subset
853*4882a593Smuzhiyun#   of the architectures
854*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_ATOMIC
855*4882a593Smuzhiyun	bool
856*4882a593Smuzhiyun	default y if BR2_TOOLCHAIN_HAS_LIBATOMIC
857*4882a593Smuzhiyun	default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_arm
858*4882a593Smuzhiyun	default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_armeb
859*4882a593Smuzhiyun	default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_xtensa
860*4882a593Smuzhiyun	default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_ARCH_IS_64
861*4882a593Smuzhiyun
862*4882a593Smuzhiyun# - libquadmath is not needed/available on all architectures (but gcc
863*4882a593Smuzhiyun#   correctly handles this already).
864*4882a593Smuzhiyun# - At least, libquadmath is available on:
865*4882a593Smuzhiyun#   - i*86
866*4882a593Smuzhiyun#   - x86_64
867*4882a593Smuzhiyun# - When available, libquadmath requires wchar support.
868*4882a593Smuzhiyunconfig BR2_TOOLCHAIN_HAS_LIBQUADMATH
869*4882a593Smuzhiyun	bool
870*4882a593Smuzhiyun	default y if BR2_i386 || BR2_x86_64
871*4882a593Smuzhiyun
872*4882a593Smuzhiyunendmenu
873