lirc-tools: fix build with kernel headers v4.8+
[buildroot-gz.git] / toolchain / toolchain-common.in
blobb682e4d7014cd8bb78bf7ed6f55b8ea3f76de062
1 # Generic toolchain options
3 # we want gdb config in the middle of both source and external
4 # toolchains, but mconf won't let us source the same file twice,
5 # so put it here instead
6 source "package/gdb/Config.in.host"
8 # https://sourceware.org/bugzilla/show_bug.cgi?id=19405
9 config BR2_TOOLCHAIN_HAS_BINUTILS_BUG_19405
10         bool
12 config BR2_TOOLCHAIN_HAS_NATIVE_RPC
13         bool
15 config BR2_USE_WCHAR
16         bool
18 config BR2_ENABLE_LOCALE
19         bool
21 config BR2_INSTALL_LIBSTDCPP
22         bool
24 config BR2_TOOLCHAIN_HAS_FORTRAN
25         bool
27 config BR2_TOOLCHAIN_HAS_THREADS
28         bool
30 config BR2_TOOLCHAIN_HAS_THREADS_DEBUG
31         bool
33 config BR2_TOOLCHAIN_HAS_THREADS_NPTL
34         bool
36 config BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS
37         bool
39 config BR2_TOOLCHAIN_HAS_SSP
40         bool
42 config BR2_TOOLCHAIN_SUPPORTS_PIE
43         bool
45 config BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY
46         bool "Copy gconv libraries"
47         depends on BR2_TOOLCHAIN_USES_GLIBC
48         help
49           The gconv libraries are used to convert between different
50           character sets (charsets).
52           Say 'y' if you need to store and/or display different charsets.
54 config BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_LIST
55         string "Gconv libraries to copy"
56         depends on BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY
57         help
58           Set to the list of gconv libraries to copy.
59           Leave empty to copy all gconv libraries.
61           Specify only the basename of the libraries, leave
62           out the .so extension. Eg.:
63             IBM850 ISO8859-15 UNICODE
65           Note: the full set of gconv libs are ~8MiB (on ARM).
67 # glibc and eglibc directly include gettext, so a separatly compiled
68 # gettext isn't needed and shouldn't be built to avoid conflicts. Some
69 # packages always need gettext, other packages only need gettext when
70 # locale support is enabled. See the documentation for how packages
71 # should rely on the following two options.
73 config BR2_NEEDS_GETTEXT
74         bool
75         default y if BR2_TOOLCHAIN_USES_UCLIBC
77 config BR2_NEEDS_GETTEXT_IF_LOCALE
78         bool
79         default y if (BR2_NEEDS_GETTEXT && BR2_ENABLE_LOCALE)
81 config BR2_USE_MMU
82         bool "Enable MMU support" if BR2_ARCH_HAS_MMU_OPTIONAL
83         default y if BR2_ARCH_HAS_MMU_OPTIONAL || BR2_ARCH_HAS_MMU_MANDATORY
84         help
85           If your target has a MMU, you should say Y here.  If you
86           are unsure, just say Y.
88 config BR2_TARGET_OPTIMIZATION
89         string "Target Optimizations"
90         default ""
91         help
92           Optimizations to use when building for the target host.
93           NOTE: gcc optimization level is defined in build options.
95 config BR2_TARGET_LDFLAGS
96         string "Target linker options"
97         help
98           Extra options to pass to the linker when building for the target.
100           Note that options with a '$' sign (eg. -Wl,-rpath='$ORIGIN/../lib')
101           are not supported.
103 config BR2_ECLIPSE_REGISTER
104         bool "Register toolchain within Eclipse Buildroot plug-in"
105         help
106           This options tells Buildroot to generate the necessary
107           configuration files to make your toolchain appear within
108           Eclipse, through the Eclipse Buildroot plugin.
110 # Options for packages to depend on, if they require at least a
111 # specific version of the kernel headers.
112 # Toolchains should choose the adequate option (ie. the highest
113 # version, not all of them).
114 config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
115         bool
117 config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1
118         bool
119         select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
121 config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2
122         bool
123         select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1
125 config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3
126         bool
127         select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2
129 config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4
130         bool
131         select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3
133 config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5
134         bool
135         select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4
137 config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6
138         bool
139         select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5
141 config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7
142         bool
143         select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6
145 config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8
146         bool
147         select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7
149 config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9
150         bool
151         select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8
153 config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
154         bool
155         select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9
157 config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11
158         bool
159         select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
161 config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12
162         bool
163         select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11
165 config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13
166         bool
167         select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12
169 config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14
170         bool
171         select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13
173 config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15
174         bool
175         select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14
177 config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16
178         bool
179         select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15
181 config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17
182         bool
183         select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16
185 config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18
186         bool
187         select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17
189 config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19
190         bool
191         select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18
193 config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
194         bool
195         select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19
197 config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1
198         bool
199         select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
201 config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2
202         bool
203         select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1
205 config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3
206         bool
207         select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2
209 config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
210         bool
211         select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3
213 config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5
214         bool
215         select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
217 config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6
218         bool
219         select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5
221 config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7
222         bool
223         select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6
225 config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8
226         bool
227         select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7
229 # This order guarantees that the highest version is set, as kconfig
230 # stops affecting a value on the first matching default.
231 config BR2_TOOLCHAIN_HEADERS_AT_LEAST
232         string
233         default "4.8"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8
234         default "4.7"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7
235         default "4.6"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6
236         default "4.5"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5
237         default "4.4"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
238         default "4.3"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3
239         default "4.2"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2
240         default "4.1"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1
241         default "4.0"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
242         default "3.19" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19
243         default "3.18" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18
244         default "3.17" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17
245         default "3.16" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16
246         default "3.15" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15
247         default "3.14" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14
248         default "3.13" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13
249         default "3.12" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12
250         default "3.11" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11
251         default "3.10" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
252         default "3.9"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9
253         default "3.8"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8
254         default "3.7"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7
255         default "3.6"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6
256         default "3.5"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5
257         default "3.4"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4
258         default "3.3"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3
259         default "3.2"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2
260         default "3.1"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1
261         default "3.0"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
262         default "2.6"
264 config BR2_TOOLCHAIN_GCC_AT_LEAST_4_3
265         bool
267 config BR2_TOOLCHAIN_GCC_AT_LEAST_4_4
268         bool
269         select BR2_TOOLCHAIN_GCC_AT_LEAST_4_3
271 config BR2_TOOLCHAIN_GCC_AT_LEAST_4_5
272         bool
273         select BR2_TOOLCHAIN_GCC_AT_LEAST_4_4
275 config BR2_TOOLCHAIN_GCC_AT_LEAST_4_6
276         bool
277         select BR2_TOOLCHAIN_GCC_AT_LEAST_4_5
279 config BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
280         bool
281         select BR2_TOOLCHAIN_GCC_AT_LEAST_4_6
283 config BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
284         bool
285         select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
287 config BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
288         bool
289         select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
291 config BR2_TOOLCHAIN_GCC_AT_LEAST_5
292         bool
293         select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
295 config BR2_TOOLCHAIN_GCC_AT_LEAST_6
296         bool
297         select BR2_TOOLCHAIN_GCC_AT_LEAST_5
299 # This order guarantees that the highest version is set, as kconfig
300 # stops affecting a value on the first matching default.
301 config BR2_TOOLCHAIN_GCC_AT_LEAST
302         string
303         default "6"     if BR2_TOOLCHAIN_GCC_AT_LEAST_6
304         default "5"     if BR2_TOOLCHAIN_GCC_AT_LEAST_5
305         default "4.9"   if BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
306         default "4.8"   if BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
307         default "4.7"   if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
308         default "4.6"   if BR2_TOOLCHAIN_GCC_AT_LEAST_4_6
309         default "4.5"   if BR2_TOOLCHAIN_GCC_AT_LEAST_4_5
310         default "4.4"   if BR2_TOOLCHAIN_GCC_AT_LEAST_4_4
311         default "4.3"   if BR2_TOOLCHAIN_GCC_AT_LEAST_4_3
313 config BR2_TOOLCHAIN_HAS_SYNC_1
314         bool
315         default y
316         depends on !BR2_bfin
317         depends on !BR2_m68k_cf
318         depends on !BR2_microblaze
319         depends on !BR2_sparc
320         depends on !(BR2_arc && !BR2_ARC_ATOMIC_EXT)
322 config BR2_TOOLCHAIN_HAS_SYNC_2
323         bool
324         default y if BR2_TOOLCHAIN_HAS_SYNC_1
326 config BR2_TOOLCHAIN_HAS_SYNC_4
327         bool
328         default y
329         depends on !BR2_m68k_cf
330         depends on !BR2_sparc
331         depends on !(BR2_arc && !BR2_ARC_ATOMIC_EXT)
333 # The availability of __sync for 8-byte types on ARM is somewhat
334 # complicated:
336 #  - It appeared in gcc starting with gcc 4.7.
338 #  - On ARMv7, there is no problem, it can be directly implemented in
339 #    userspace.
341 #  - On < ARMv7, it requires help from the kernel. Unfortunately, the
342 #    libgcc code implementing 8-byte __sync with the help from the
343 #    kernel calls __write() when a failure occurs, which is a function
344 #    internal to glibc, not available in uClibc and musl. This means
345 #    that the 8-byte __sync operations are not available on < ARMv7
346 #    with uClibc and musl. This problem was fixed as part of gcc
347 #    PR68059, which was backported to the gcc 5 branch, but isn't yet
348 #    part of any gcc 5.x release.
350 config BR2_TOOLCHAIN_ARM_HAS_SYNC_8
351         bool
352         default y
353         depends on BR2_arm || BR2_armeb
354         depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
355         depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_ARM_CPU_ARMV7A
357 # 8-byte intrinsics available on most x86 CPUs, except a few old ones
358 config BR2_TOOLCHAIN_X86_HAS_SYNC_8
359         bool
360         default y
361         depends on BR2_i386
362         depends on !BR2_x86_i486
363         depends on !BR2_x86_c3
364         depends on !BR2_x86_winchip_c6
365         depends on !BR2_x86_winchip2
367 # 8-byte intrinsics available:
368 #  - On all 64 bits architecture
369 #  - On a certain combinations of ARM platforms
370 #  - On certain x86 32 bits CPUs
371 config BR2_TOOLCHAIN_HAS_SYNC_8
372         bool
373         default y if BR2_ARCH_IS_64
374         default y if BR2_TOOLCHAIN_ARM_HAS_SYNC_8
375         default y if BR2_TOOLCHAIN_X86_HAS_SYNC_8
377 # libatomic is available since gcc 4.8, when thread support is
378 # enabled. Also, libatomic doesn't recognize "uclinux" as a valid OS
379 # part of the tuple, and is therefore not build on uclinux targets,
380 # which is why BR2_BINFMT_FLAT configurations are excluded.
381 config BR2_TOOLCHAIN_HAS_LIBATOMIC
382         bool
383         default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 && \
384                 BR2_TOOLCHAIN_HAS_THREADS && \
385                 !BR2_BINFMT_FLAT
387 # __atomic intrinsics are available:
388 # - with gcc 4.8, either through built-ins or libatomic, on all
389 #   architectures. Since we don't want to separate the cases where
390 #   libatomic is needed vs. not needed, we simplify thing and only
391 #   support situations where libatomic is available, even if on some
392 #   architectures libatomic is not strictly needed as all __atomic
393 #   intrinsics might be built-in. The only case where libatomic is
394 #   missing entirely is when the toolchain does not have support for
395 #   threads. However, a package that does not need threads but still
396 #   uses atomics is quite a corner case, which does not warrant the
397 #   added complexity.
398 # - with gcc 4.7, libatomic did not exist, so only built-ins are
399 #   available. This means that __atomic can only be used in a subset
400 #   of the architectures
401 config BR2_TOOLCHAIN_HAS_ATOMIC
402         bool
403         default y if BR2_TOOLCHAIN_HAS_LIBATOMIC
404         default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_arm
405         default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_armeb
406         default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_xtensa
407         default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_ARCH_IS_64
409 # - libquadmath is not needed/available on all architectures (but gcc
410 #   correctly handles this already).
411 # - At least, libquadmath is available on:
412 #   - i*86
413 #   - x86_64
414 # - When available, libquadmath requires wchar support.
415 config BR2_TOOLCHAIN_HAS_LIBQUADMATH
416         bool
417         default y if BR2_i386 || BR2_x86_64