ipq40xx: only include ath10k-board-qca4019 for the generic subtarget
[openwrt/staging/chunkeey.git] / toolchain / Config.in
1 # Copyright (C) 2006-2013 OpenWrt.org
2 #
3 # This is free software, licensed under the GNU General Public License v2.
4 # See /LICENSE for more information.
5 #
6
7 menuconfig TARGET_OPTIONS
8 bool "Target Options" if DEVEL
9
10 config TARGET_OPTIMIZATION
11 string "Target Optimizations" if TARGET_OPTIONS
12 default DEFAULT_TARGET_OPTIMIZATION
13 help
14 Optimizations to use when building for the target host.
15
16 config SOFT_FLOAT
17 bool "Use software floating point by default" if TARGET_OPTIONS
18 default y if !HAS_FPU
19 depends on arm || armeb || powerpc || mipsel || mips || mips64el || mips64
20 help
21 If your target CPU does not have a Floating Point Unit (FPU) or a
22 kernel FPU emulator, but you still wish to support floating point
23 functions, then everything will need to be compiled with soft floating
24 point support (-msoft-float).
25
26 Most people will answer N.
27
28 config USE_MIPS16
29 bool "Build packages with MIPS16 instructions" if TARGET_OPTIONS
30 depends on HAS_MIPS16
31 default y
32 help
33 If your target CPU does support the MIPS16 instruction set
34 and you want to use it for packages, enable this option.
35 MIPS16 produces smaller binaries thus reducing pressure on
36 caches and TLB.
37
38 Most people will answer N.
39
40
41 choice BPF_TOOLCHAIN
42 prompt "BPF toolchain" if DEVEL
43 default BPF_TOOLCHAIN_BUILD_LLVM if BUILDBOT
44 default BPF_TOOLCHAIN_PREBUILT if HAS_PREBUILT_LLVM_TOOLCHAIN
45 default BPF_TOOLCHAIN_NONE
46
47 config BPF_TOOLCHAIN_NONE
48 bool "None"
49
50 config BPF_TOOLCHAIN_PREBUILT
51 bool "Use prebuilt LLVM toolchain"
52 depends on HAS_PREBUILT_LLVM_TOOLCHAIN
53 select USE_LLVM_PREBUILT
54
55 config BPF_TOOLCHAIN_HOST
56 select USE_LLVM_HOST
57 bool "Use host LLVM toolchain"
58
59 config BPF_TOOLCHAIN_BUILD_LLVM
60 select USE_LLVM_BUILD
61 bool "Build LLVM toolchain for eBPF"
62 help
63 If enabled, a LLVM toolchain for building eBPF binaries will be built.
64 If this is not enabled, eBPF packages can only be built if the host
65 has a suitable toolchain
66 endchoice
67
68 config BPF_TOOLCHAIN_HOST_PATH
69 string
70 depends on BPF_TOOLCHAIN_HOST
71 prompt "Host LLVM toolchain path (prefix)" if DEVEL
72 default "/usr/local/opt/llvm" if HOST_OS_MACOS
73 default ""
74
75 menuconfig EXTERNAL_TOOLCHAIN
76 bool
77 prompt "Use external toolchain" if DEVEL
78 help
79 If enabled, the buildroot will compile using an existing toolchain instead of
80 compiling one.
81
82 config NATIVE_TOOLCHAIN
83 bool
84 prompt "Use host's toolchain" if DEVEL
85 depends on EXTERNAL_TOOLCHAIN
86 select NO_STRIP
87 help
88 If enabled, the buildroot will compile using the native toolchain for your
89 host instead of compiling one.
90
91 config TARGET_NAME
92 string
93 prompt "Target name" if DEVEL
94 depends on EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
95 default "aarch64-unknown-linux-gnu" if aarch64
96 default "aarch64_be-unknown-linux-gnu" if aarch64_be
97 default "arm-unknown-linux-gnu" if arm
98 default "armeb-unknown-linux-gnu" if armeb
99 default "i486-unknown-linux-gnu" if i386
100 default "mips-unknown-linux-gnu" if mips
101 default "mipsel-unknown-linux-gnu" if mipsel
102 default "powerpc-unknown-linux-gnu" if powerpc
103 default "x86_64-unknown-linux-gnu" if x86_64
104
105 config TOOLCHAIN_PREFIX
106 string
107 prompt "Toolchain prefix" if DEVEL
108 depends on EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
109 default "aarch64-unknown-linux-gnu" if aarch64
110 default "aarch64_be-unknown-linux-gnu" if aarch64_be
111 default "arm-unknown-linux-gnu-" if arm
112 default "armeb-unknown-linux-gnu-" if armeb
113 default "i486-unknown-linux-gnu-" if i386
114 default "mips-unknown-linux-gnu-" if mips
115 default "mipsel-unknown-linux-gnu-" if mipsel
116 default "powerpc-unknown-linux-gnu-" if powerpc
117 default "x86_64-unknown-linux-gnu-" if x86_64
118
119 config TOOLCHAIN_ROOT
120 string
121 prompt "Toolchain root" if DEVEL
122 depends on EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
123 default "/opt/cross/aarch64-unknown-linux-gnu" if aarch64
124 default "/opt/cross/aarch64_be-unknown-linux-gnu" if aarch64_be
125 default "/opt/cross/arm-unknown-linux-gnu" if arm
126 default "/opt/cross/armeb-unknown-linux-gnu" if armeb
127 default "/opt/cross/i486-unknown-linux-gnu" if i386
128 default "/opt/cross/mips-unknown-linux-gnu" if mips
129 default "/opt/cross/mipsel-unknown-linux-gnu" if mipsel
130 default "/opt/cross/powerpc-unknown-linux-gnu" if powerpc
131 default "/opt/cross/x86_64-unknown-linux-gnu" if x86_64
132
133 choice TOOLCHAIN_LIBC_TYPE
134 prompt "Toolchain libc" if DEVEL
135 depends on EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
136 default EXTERNAL_TOOLCHAIN_LIBC_USE_MUSL
137 help
138 Specify the libc type used by the external toolchain. The given value
139 is passed as -m flag to all gcc and g++ invocations. This is mainly
140 intended for multilib toolchains which support glibc and uclibc at
141 the same time. If no value is specified, no -m flag is passed.
142
143 config EXTERNAL_TOOLCHAIN_LIBC_USE_GLIBC
144 bool "glibc"
145 select USE_GLIBC
146
147 config EXTERNAL_TOOLCHAIN_LIBC_USE_MUSL
148 bool "musl"
149 select USE_MUSL
150
151 endchoice
152
153 config TOOLCHAIN_LIBC
154 string
155 depends on EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
156 default "glibc" if EXTERNAL_TOOLCHAIN_LIBC_USE_GLIBC
157 default "musl" if EXTERNAL_TOOLCHAIN_LIBC_USE_MUSL
158
159 config TOOLCHAIN_BIN_PATH
160 string
161 prompt "Toolchain program path" if DEVEL
162 depends on EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
163 default "./usr/bin ./bin"
164 help
165 Specify additional directories searched for toolchain binaries
166 (override PATH). Use ./DIR for directories relative to the root above.
167
168 config TOOLCHAIN_INC_PATH
169 string
170 prompt "Toolchain include path" if DEVEL
171 depends on EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
172 default "./usr/include ./include"
173 help
174 Specify additional directories searched for header files (override
175 CPPFLAGS). Use ./DIR for directories relative to the root above.
176
177 config TOOLCHAIN_LIB_PATH
178 string
179 prompt "Toolchain library path" if DEVEL
180 depends on EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
181 default "./usr/lib ./lib"
182 help
183 Specify additional directories searched for libraries (override LDFLAGS).
184 Use ./DIR for directories relative to the root above.
185
186 config NEED_TOOLCHAIN
187 bool
188 depends on DEVEL
189 default y if !EXTERNAL_TOOLCHAIN
190
191 menuconfig TOOLCHAINOPTS
192 bool "Toolchain Options" if DEVEL
193 depends on NEED_TOOLCHAIN
194
195 menuconfig EXTRA_TARGET_ARCH
196 bool
197 prompt "Enable an extra toolchain target architecture" if TOOLCHAINOPTS
198 depends on !sparc
199 default n
200 help
201 Some builds may require a 'biarch' toolchain. This option
202 allows you to specify an additional target arch.
203
204 Most people will answer N here.
205
206 config EXTRA_TARGET_ARCH_NAME
207 string
208 prompt "Extra architecture name" if EXTRA_TARGET_ARCH
209 help
210 Specify the cpu name (eg powerpc64 or x86_64) of the
211 additional target architecture.
212
213 config EXTRA_TARGET_ARCH_OPTS
214 string
215 prompt "Extra architecture compiler options" if EXTRA_TARGET_ARCH
216 help
217 If you're specifying an addition target architecture,
218 you'll probably need to also provide options to make
219 the compiler use this alternate arch.
220
221 For example, if you're building a compiler that can build
222 both powerpc and powerpc64 binaries, you'll need to
223 specify -m64 here.
224
225
226 choice
227 prompt "MIPS64 user-land ABI" if TOOLCHAINOPTS && (mips64 || mips64el)
228 default MIPS64_ABI_N64
229 help
230 MIPS64 supports 3 different user-land ABIs: o32 (legacy),
231 n32 and n64.
232
233 config MIPS64_ABI_N64
234 bool "n64"
235
236 config MIPS64_ABI_N32
237 depends on !LIBC_USE_MUSL
238 bool "n32"
239
240 config MIPS64_ABI_O32
241 bool "o32"
242
243 endchoice
244
245 comment "Binary tools"
246 depends on TOOLCHAINOPTS
247
248 source "toolchain/binutils/Config.in"
249
250 config DWARVES
251 bool
252 prompt "Build pahole" if TOOLCHAINOPTS
253 depends on !HOST_OS_MACOS
254 default n
255 help
256 Enable if you want to build pahole and the dwarves tools.
257
258 comment "Compiler"
259 depends on TOOLCHAINOPTS
260
261 source "toolchain/gcc/Config.in"
262
263 config NASM
264 bool
265 depends on ( i386 || x86_64 )
266 prompt "Build nasm" if TOOLCHAINOPTS
267 default y
268 help
269 Enable if you want to build nasm
270
271 comment "C Library"
272 depends on TOOLCHAINOPTS
273
274 choice
275 prompt "C Library implementation" if TOOLCHAINOPTS
276 default LIBC_USE_GLIBC if arc
277 default LIBC_USE_MUSL
278 help
279 Select the C library implementation.
280
281 config LIBC_USE_GLIBC
282 bool "Use glibc"
283 select USE_GLIBC
284
285 config LIBC_USE_MUSL
286 select USE_MUSL
287 bool "Use musl"
288 depends on !arc
289
290 endchoice
291
292 source "toolchain/musl/Config.in"
293
294 comment "Debuggers"
295 depends on TOOLCHAINOPTS
296
297 config GDB
298 bool
299 prompt "Build gdb" if TOOLCHAINOPTS
300 default y if !EXTERNAL_TOOLCHAIN
301 help
302 Enable if you want to build the gdb.
303
304 config GDB_PYTHON
305 bool
306 depends on GDB
307 prompt "Build gdb with python binding"
308
309 help
310 Enable the python bindings for GDB to allow using python in the gdb shell.
311
312 config HAS_BPF_TOOLCHAIN
313 bool
314
315 config HAS_PREBUILT_LLVM_TOOLCHAIN
316 def_bool $(shell, [ -f llvm-bpf/.llvm-version ] && echo y || echo n)
317
318 config USE_LLVM_HOST
319 select HAS_BPF_TOOLCHAIN
320 bool
321
322 config USE_LLVM_PREBUILT
323 select HAS_BPF_TOOLCHAIN
324 default y if !DEVEL && !BUILDBOT && HAS_PREBUILT_LLVM_TOOLCHAIN
325 bool
326
327 config USE_LLVM_BUILD
328 default y if !DEVEL && BUILDBOT
329 select HAS_BPF_TOOLCHAIN
330 bool
331
332 config USE_GLIBC
333 default y if !TOOLCHAINOPTS && !EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN && (arc)
334 bool
335
336 config USE_MUSL
337 default y if !TOOLCHAINOPTS && !EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN && !(arc)
338 bool
339
340 config SSP_SUPPORT
341 default y if !PKG_CC_STACKPROTECTOR_NONE
342 bool
343
344 config USE_EXTERNAL_LIBC
345 bool
346 default y if EXTERNAL_TOOLCHAIN || NATIVE_TOOLCHAIN
347
348 source "toolchain/binutils/Config.version"
349 source "toolchain/gcc/Config.version"
350
351 config LIBC
352 string
353 default "glibc" if USE_GLIBC
354 default "musl" if USE_MUSL
355
356 config TARGET_SUFFIX
357 string
358 default "gnueabi" if USE_GLIBC && (arm || armeb)
359 default "gnu" if USE_GLIBC && !(arm || armeb)
360 default "muslgnueabi" if USE_MUSL && (arm || armeb)
361 default "musl" if USE_MUSL && !(arm || armeb)
362
363 config MIPS64_ABI
364 depends on mips64 || mips64el
365 string
366 default "64" if MIPS64_ABI_N64
367 default "n32" if MIPS64_ABI_N32
368 default "32" if MIPS64_ABI_O32
369 default "64"