buildroot: allow specifying libc personality for external toolchains
[openwrt.git] / toolchain / Config.in
1 #
2
3 menuconfig EXTERNAL_TOOLCHAIN
4         bool
5         prompt "Use external toolchain"  if DEVEL
6         help
7           If enabled, OpenWrt will compile using an existing toolchain instead of compiling one
8
9         config NATIVE_TOOLCHAIN
10                 bool
11                 prompt "Use host's toolchain"  if DEVEL
12                 depends EXTERNAL_TOOLCHAIN
13                 select NO_STRIP
14                 help
15                   If enabled, OpenWrt will compile using the native toolchain for your host instead of compiling one
16
17         config TARGET_NAME
18                 string
19                 prompt "Target name"  if DEVEL
20                 depends EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
21                 default "arm-unknown-linux-gnu"      if arm
22                 default "armeb-unknown-linux-gnu"    if armeb
23                 default "i486-unknown-linux-gnu"     if i386
24                 default "mips-unknown-linux-gnu"     if mips
25                 default "mipsel-unknown-linux-gnu"   if mipsel
26                 default "powerpc-unknown-linux-gnu"  if powerpc
27                 default "x86_64-unknown-linux-gnu"   if x86_64
28
29         config TOOLCHAIN_PREFIX
30                 string
31                 prompt "Toolchain prefix"  if DEVEL
32                 depends EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
33                 default "arm-unknown-linux-gnu-"      if arm
34                 default "armeb-unknown-linux-gnu-"    if armeb
35                 default "i486-unknown-linux-gnu-"     if i386
36                 default "mips-unknown-linux-gnu-"     if mips
37                 default "mipsel-unknown-linux-gnu-"   if mipsel
38                 default "powerpc-unknown-linux-gnu-"  if powerpc
39                 default "x86_64-unknown-linux-gnu-"   if x86_64
40
41         config TOOLCHAIN_ROOT
42                 string
43                 prompt "Toolchain root"  if DEVEL
44                 depends EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
45                 default "/opt/cross/arm-unknown-linux-gnu"      if arm
46                 default "/opt/cross/armeb-unknown-linux-gnu"    if armeb
47                 default "/opt/cross/i486-unknown-linux-gnu"     if i386
48                 default "/opt/cross/mips-unknown-linux-gnu"     if mips
49                 default "/opt/cross/mipsel-unknown-linux-gnu"   if mipsel
50                 default "/opt/cross/powerpc-unknown-linux-gnu"  if powerpc
51                 default "/opt/cross/x86_64-unknown-linux-gnu"   if x86_64
52
53         config TOOLCHAIN_LIBC
54                 string
55                 prompt "Toolchain libc"  if DEVEL
56                 depends EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
57                 default "uclibc"
58                 help
59                   Specify the libc type used by the external toolchain. The given value us passed as -m
60                   flag to all gcc and g++ invocations. This is mainly intended for multilib toolchains
61                   which support glibc and uclibc at the same time. If no value is specified, no -m flag
62                   is passed.
63
64         config TOOLCHAIN_BIN_PATH
65                 string
66                 prompt "Toolchain program path"  if DEVEL
67                 depends EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
68                 default "./usr/bin ./bin"
69                 help
70                   Specify additional directories searched for toolchain binaries (override PATH)
71                   Use ./DIR for directories relative to the root above
72
73         config TOOLCHAIN_INC_PATH
74                 string
75                 prompt "Toolchain include path"  if DEVEL
76                 depends EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
77                 default "./usr/include ./include"
78                 help
79                   Specify additional directories searched for header files (override CPPFLAGS)
80                   Use ./DIR for directories relative to the root above
81
82         config TOOLCHAIN_LIB_PATH
83                 string
84                 prompt "Toolchain library path"  if DEVEL
85                 depends EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
86                 default "./usr/lib ./lib"
87                 help
88                   Specify additional directories searched for libraries (override LDFLAGS)
89                   Use ./DIR for directories relative to the root above
90
91 config NEED_TOOLCHAIN
92         bool
93         depends DEVEL
94         default y if !EXTERNAL_TOOLCHAIN
95
96 menuconfig TOOLCHAINOPTS
97         bool "Toolchain Options"  if DEVEL
98         depends NEED_TOOLCHAIN
99
100 menuconfig EXTRA_TARGET_ARCH
101         bool
102         prompt "Enable an extra toolchain target architecture" if TOOLCHAINOPTS
103         depends !sparc
104         default y       if powerpc64
105         default n
106         help
107           Some builds may require a 'biarch' toolchain. This option
108           allows you to specify an additional target arch.
109
110           Most people will answer N here.
111
112         config EXTRA_TARGET_ARCH_NAME
113                 string
114                 default "powerpc64"     if powerpc64
115                 prompt "Extra architecture name" if EXTRA_TARGET_ARCH
116                 help
117                   Specify the cpu name (eg powerpc64 or x86_64) of the
118                   additional target architecture.
119
120         config EXTRA_TARGET_ARCH_OPTS
121                 string
122                 default "-m64"          if powerpc64
123                 prompt "Extra architecture compiler options" if EXTRA_TARGET_ARCH
124                 help
125                   If you're specifying an addition target architecture,
126                   you'll probably need to also provide options to make
127                   the compiler use this alternate arch.
128
129                   For example, if you're building a compiler that can build
130                   both powerpc and powerpc64 binaries, you'll need to
131                   specify -m64 here.
132
133 comment "Binary tools"
134         depends TOOLCHAINOPTS
135
136 source "toolchain/binutils/Config.in"
137
138 comment "Compiler"
139         depends TOOLCHAINOPTS
140
141 source "toolchain/gcc/Config.in"
142
143 comment "C Library"
144         depends TOOLCHAINOPTS
145
146 choice
147         prompt "C Library implementation" if TOOLCHAINOPTS
148         default USE_UCLIBC
149         help
150           Select the C library implementation.
151
152         config USE_EGLIBC
153                 bool "Use eglibc"
154                 depends !avr32
155         
156         config USE_UCLIBC
157                 bool "Use uClibc"
158
159         config USE_MUSL
160                 bool "Use musl"
161
162 endchoice
163
164 source "toolchain/eglibc/Config.in"
165 source "toolchain/uClibc/Config.in"
166 source "toolchain/musl/Config.in"
167
168 comment "Debuggers"
169         depends TOOLCHAINOPTS
170
171 config GDB
172         bool
173         depends !avr32
174         prompt "Build gdb" if TOOLCHAINOPTS
175         default y
176         help
177                 Enable if you want to build the gdb
178
179 config INSIGHT
180         bool
181         prompt "Build insight-gdb" if TOOLCHAINOPTS
182         select GDB
183         default n
184         help
185                 Enable if you want to build insight-gdb
186
187 config USE_UCLIBC
188         bool
189         default y if !TOOLCHAINOPTS && !EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
190
191 config USE_EXTERNAL_LIBC
192         bool
193         default y if EXTERNAL_TOOLCHAIN || NATIVE_TOOLCHAIN
194
195 source "toolchain/gcc/Config.version"
196
197 source "toolchain/eglibc/Config.version"
198 source "toolchain/uClibc/Config.version"
199 source "toolchain/musl/Config.version"
200
201 config LIBC
202         string
203         default "eglibc"  if USE_EGLIBC
204         default "uClibc"  if USE_UCLIBC
205         default "musl"    if USE_MUSL
206
207 config LIBC_VERSION
208         string
209         default EGLIBC_VERSION  if USE_EGLIBC
210         default UCLIBC_VERSION  if USE_UCLIBC
211         default MUSL_VERSION    if USE_MUSL
212
213 config TARGET_SUFFIX
214         string
215         default "gnueabi"         if USE_EGLIBC && (arm || armeb)
216         default "gnu"             if USE_EGLIBC && !(arm || armeb)
217         default "uclibcgnueabi"   if USE_UCLIBC && (arm || armeb)
218         default "uclibc"          if USE_UCLIBC && !(arm || armeb)
219         default "muslgnueabi"     if USE_MUSL && (arm || armeb)
220         default "musl"            if USE_MUSL && !(arm || armeb)