adjust WRT the signum.h generation fix
[buildroot.git] / toolchain / uClibc / uclibc.mk
blobf732c8d6f80c73555edeb60e0da8f54672f4e415
1 #############################################################
3 # uClibc (the C library)
5 #############################################################
7 ifeq ($(BR2_TOOLCHAIN_SOURCE),y)
9 # specifying UCLIBC_CONFIG_FILE on the command-line overrides the .config
10 # setting.
11 ifndef UCLIBC_CONFIG_FILE
12 UCLIBC_CONFIG_FILE=$(subst ",, $(strip $(BR2_UCLIBC_CONFIG)))
13 #")
14 endif
16 ifeq ($(BR2_UCLIBC_VERSION_SNAPSHOT),y)
17 # Be aware that this changes daily....
18 UCLIBC_VER:=0.9.29
19 UCLIBC_DIR:=$(TOOL_BUILD_DIR)/uClibc
20 UCLIBC_SOURCE:=uClibc-$(strip $(subst ",, $(BR2_USE_UCLIBC_SNAPSHOT))).tar.bz2
21 #"))
22 UCLIBC_SITE:=http://www.uclibc.org/downloads/snapshots
23 UCLIBC_PATCH_DIR:=toolchain/uClibc/
24 else
25 # releases
26 ifeq ($(BR2_UCLIBC_VERSION_0_9_29),y)
27 UCLIBC_VER:=0.9.29
28 endif
29 ifeq ($(BR2_UCLIBC_VERSION_0_9_28_3),y)
30 UCLIBC_VER:=0.9.28.3
31 endif
32 ifeq ($(BR2_UCLIBC_VERSION_0_9_28),y)
33 UCLIBC_VER:=0.9.28
34 endif
35 UCLIBC_SITE:=http://www.uclibc.org/downloads
37 ifeq ($(BR2_TOOLCHAIN_EXTERNAL_SOURCE),y)
38 UCLIBC_SITE:=$(VENDOR_SITE)
39 endif
41 UCLIBC_OFFICIAL_VERSION:=$(UCLIBC_VER)$(VENDOR_SUFFIX)$(VENDOR_UCLIBC_RELEASE)
43 ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y)
44 UCLIBC_PATCH_DIR:=toolchain/uClibc/
45 else
46 UCLIBC_PATCH_DIR:=$(VENDOR_PATCH_DIR)/uClibc-$(UCLIBC_OFFICIAL_VERSION)
47 endif
49 UCLIBC_DIR:=$(TOOL_BUILD_DIR)/uClibc-$(UCLIBC_OFFICIAL_VERSION)
50 UCLIBC_SOURCE:=uClibc-$(UCLIBC_OFFICIAL_VERSION).tar.bz2
51 endif
53 UCLIBC_CAT:=$(BZCAT)
55 UCLIBC_TARGET_ARCH:=$(shell $(SHELL) -c "echo $(ARCH) | sed \
56 -e 's/-.*//' \
57 -e 's/i.86/i386/' \
58 -e 's/sparc.*/sparc/' \
59 -e 's/arm.*/arm/g' \
60 -e 's/m68k.*/m68k/' \
61 -e 's/ppc/powerpc/g' \
62 -e 's/v850.*/v850/g' \
63 -e 's/sh[234].*/sh/' \
64 -e 's/mips.*/mips/' \
65 -e 's/mipsel.*/mips/' \
66 -e 's/cris.*/cris/' \
67 -e 's/nios2.*/nios2/' \
69 # just handle the ones that can be big or little
70 UCLIBC_TARGET_ENDIAN:=$(shell $(SHELL) -c "echo $(ARCH) | sed \
71 -e 's/armeb/BIG/' \
72 -e 's/arm/LITTLE/' \
73 -e 's/mipsel/LITTLE/' \
74 -e 's/mips/BIG/' \
75 -e 's/sh[234].*eb/BIG/' \
76 -e 's/sh[234]/LITTLE/' \
77 -e 's/sparc.*/BIG/' \
80 ifneq ($(UCLIBC_TARGET_ENDIAN),LITTLE)
81 ifneq ($(UCLIBC_TARGET_ENDIAN),BIG)
82 UCLIBC_TARGET_ENDIAN:=
83 endif
84 endif
85 ifeq ($(UCLIBC_TARGET_ENDIAN),LITTLE)
86 UCLIBC_NOT_TARGET_ENDIAN:=BIG
87 else
88 UCLIBC_NOT_TARGET_ENDIAN:=LITTLE
89 endif
91 UCLIBC_ARM_TYPE:=CONFIG_$(strip $(subst ",, $(BR2_ARM_TYPE)))
92 #"))
93 UCLIBC_SPARC_TYPE:=CONFIG_SPARC_$(strip $(subst ",, $(BR2_SPARC_TYPE)))
94 #"))
96 $(DL_DIR)/$(UCLIBC_SOURCE):
97 $(WGET) -P $(DL_DIR) $(UCLIBC_SITE)/$(UCLIBC_SOURCE)
99 ifneq ($(BR2_ENABLE_LOCALE),)
100 UCLIBC_SITE_LOCALE:=http://www.uclibc.org/downloads
101 UCLIBC_SOURCE_LOCALE:=uClibc-locale-030818.tgz
103 $(DL_DIR)/$(UCLIBC_SOURCE_LOCALE):
104 $(WGET) -P $(DL_DIR) $(UCLIBC_SITE_LOCALE)/$(UCLIBC_SOURCE_LOCALE)
106 UCLIBC_LOCALE_DATA:=$(DL_DIR)/$(UCLIBC_SOURCE_LOCALE)
107 else
108 UCLIBC_LOCALE_DATA=
109 endif
111 $(UCLIBC_DIR)/.unpacked: $(DL_DIR)/$(UCLIBC_SOURCE) $(UCLIBC_LOCALE_DATA)
112 mkdir -p $(TOOL_BUILD_DIR)
113 rm -rf $(UCLIBC_DIR)
114 $(UCLIBC_CAT) $(DL_DIR)/$(UCLIBC_SOURCE) | tar -C $(TOOL_BUILD_DIR) $(TAR_OPTIONS) -
115 ifneq ($(BR2_UCLIBC_VERSION_SNAPSHOT),y)
116 toolchain/patch-kernel.sh $(UCLIBC_DIR) $(UCLIBC_PATCH_DIR) uClibc-$(UCLIBC_OFFICIAL_VERSION)-\*.patch
117 else
118 toolchain/patch-kernel.sh $(UCLIBC_DIR) $(UCLIBC_PATCH_DIR) uClibc.\*.patch
119 endif
120 ifneq ($(BR2_ENABLE_LOCALE),)
121 cp -dpf $(DL_DIR)/$(UCLIBC_SOURCE_LOCALE) $(UCLIBC_DIR)/extra/locale/
122 endif
123 touch $@
125 UCLIBC_CONFIGURED_PREREQ:=$(BR2_DEPENDS_DIR)/br2/arch.h \
126 $(wildcard $(BR2_DEPENDS_DIR)/br2/endian.h*) \
127 $(wildcard $(BR2_DEPENDS_DIR)/br2/$(UCLIBC_TARGET_ARCH).h*) \
128 $(wildcard $(BR2_DEPENDS_DIR)/br2/pthreads.h*) \
129 $(wildcard $(BR2_DEPENDS_DIR)/br2/$(UCLIBC_TARGET_ARCH)/*.h) \
130 $(wildcard $(BR2_DEPENDS_DIR)/br2/pthread*/*.h) \
131 $(wildcard $(BR2_DEPENDS_DIR)/br2/enable/*locale*.h) \
132 $(wildcard $(BR2_DEPENDS_DIR)/br2/enable/*locale*.h) \
133 $(wildcard $(BR2_DEPENDS_DIR)/br2/use/*wchar*.h) \
134 $(wildcard $(BR2_DEPENDS_DIR)/br2/use/*updates*.h) \
135 $(wildcard $(BR2_DEPENDS_DIR)/br2/uclibc/*.h) \
136 $(wildcard $(BR2_DEPENDS_DIR)/br2/uclibc/*/*.h)
139 # Some targets may wish to provide their own UCLIBC_CONFIG_FILE...
140 $(UCLIBC_DIR)/.oldconfig: $(UCLIBC_DIR)/.unpacked $(UCLIBC_CONFIG_FILE) $(UCLIBC_CONFIGURED_PREREQ)
141 ifeq ($(BR2_USE_UPDATES),y)
142 (cd $(@D) && $(SVN_UP))
143 endif
144 cp -f $(UCLIBC_CONFIG_FILE) $(UCLIBC_DIR)/.oldconfig
145 $(SED) 's,^CROSS_COMPILER_PREFIX=.*,CROSS_COMPILER_PREFIX="$(TARGET_CROSS)",g' \
146 -e 's,# TARGET_$(UCLIBC_TARGET_ARCH) is not set,TARGET_$(UCLIBC_TARGET_ARCH)=y,g' \
147 -e 's,^TARGET_ARCH=".*",TARGET_ARCH=\"$(UCLIBC_TARGET_ARCH)\",g' \
148 -e 's,^KERNEL_SOURCE=.*,KERNEL_SOURCE=\"$(LINUX_HEADERS_DIR)\",g' \
149 -e 's,^KERNEL_HEADERS=.*,KERNEL_HEADERS=\"$(LINUX_HEADERS_DIR)/include\",g' \
150 -e 's,^RUNTIME_PREFIX=.*,RUNTIME_PREFIX=\"/\",g' \
151 -e 's,^DEVEL_PREFIX=.*,DEVEL_PREFIX=\"/usr/\",g' \
152 -e 's,^SHARED_LIB_LOADER_PREFIX=.*,SHARED_LIB_LOADER_PREFIX=\"/lib\",g' \
153 $(UCLIBC_DIR)/.oldconfig
154 ifeq ($(UCLIBC_TARGET_ARCH),arm)
155 $(SED) 's/^\(CONFIG_[^_]*[_]*ARM[^=]*\)=.*/# \1 is not set/g' \
156 $(UCLIBC_DIR)/.oldconfig
157 $(SED) 's/^.*$(UCLIBC_ARM_TYPE).*/$(UCLIBC_ARM_TYPE)=y/g' $(UCLIBC_DIR)/.oldconfig
158 $(SED) '/CONFIG_ARM_.ABI/d' $(UCLIBC_DIR)/.oldconfig
159 ifeq ($(BR2_ARM_EABI),y)
160 /bin/echo "# CONFIG_ARM_OABI is not set" >> $(UCLIBC_DIR)/.oldconfig
161 /bin/echo "CONFIG_ARM_EABI=y" >> $(UCLIBC_DIR)/.oldconfig
162 endif
163 ifeq ($(BR2_ARM_OABI),y)
164 /bin/echo "CONFIG_ARM_OABI=y" >> $(UCLIBC_DIR)/.oldconfig
165 /bin/echo "# CONFIG_ARM_EABI is not set" >> $(UCLIBC_DIR)/.oldconfig
166 endif
167 endif
168 ifeq ($(UCLIBC_TARGET_ARCH),mips)
169 $(SED) '/CONFIG_MIPS_[NO].._ABI/d' $(UCLIBC_DIR)/.oldconfig
170 $(SED) '/CONFIG_MIPS_ISA_.*/d' $(UCLIBC_DIR)/.oldconfig
171 (/bin/echo "# CONFIG_MIPS_O32_ABI is not set"; \
172 /bin/echo "# CONFIG_MIPS_N32_ABI is not set"; \
173 /bin/echo "# CONFIG_MIPS_N64_ABI is not set"; \
174 /bin/echo "# CONFIG_MIPS_ISA_1 is not set"; \
175 /bin/echo "# CONFIG_MIPS_ISA_2 is not set"; \
176 /bin/echo "# CONFIG_MIPS_ISA_3 is not set"; \
177 /bin/echo "# CONFIG_MIPS_ISA_4 is not set"; \
178 /bin/echo "# CONFIG_MIPS_ISA_MIPS32 is not set"; \
179 /bin/echo "# CONFIG_MIPS_ISA_MIPS64 is not set"; \
180 ) >> $(UCLIBC_DIR)/.oldconfig
181 ifeq ($(BR2_MIPS_OABI32),y)
182 $(SED) 's/.*\(CONFIG_MIPS_O32_ABI\).*/\1=y/' $(UCLIBC_DIR)/.oldconfig
183 endif
184 ifeq ($(findstring y,$(BR2_MIPS_EABI)$(BR2_MIPS_ABI32)),y)
185 $(SED) 's/.*\(CONFIG_MIPS_N32_ABI\).*/\1=y/' $(UCLIBC_DIR)/.oldconfig
186 endif
187 ifeq ($(findstring y,$(BR2_MIPS_ABI64)$(BR2_MIPS_OABI64)),y)
188 $(SED) 's/.*\(CONFIG_MIPS_N64_ABI\).*/\1=y/' $(UCLIBC_DIR)/.oldconfig
189 endif
190 ifeq ($(BR2_mips_1),y)
191 $(SED) 's/.*\(CONFIG_MIPS_ISA_1\).*/\1=y/' $(UCLIBC_DIR)/.oldconfig
192 endif
193 ifeq ($(BR2_mips_2),y)
194 $(SED) 's/.*\(CONFIG_MIPS_ISA_2\).*/\1=y/' $(UCLIBC_DIR)/.oldconfig
195 endif
196 ifeq ($(BR2_mips_3),y)
197 $(SED) 's/.*\(CONFIG_MIPS_ISA_3\).*/\1=y/' $(UCLIBC_DIR)/.oldconfig
198 endif
199 ifeq ($(BR2_mips_4),y)
200 $(SED) 's/.*\(CONFIG_MIPS_ISA_4\).*/\1=y/' $(UCLIBC_DIR)/.oldconfig
201 endif
202 ifeq ($(BR2_mips_32),y)
203 $(SED) 's/.*\(CONFIG_MIPS_ISA_MIPS32\).*/\1=y/' $(UCLIBC_DIR)/.oldconfig
204 endif
205 ifeq ($(BR2_mips_32r2),y)
206 $(SED) 's/.*\(CONFIG_MIPS_ISA_MIPS32\).*/\1=y/' $(UCLIBC_DIR)/.oldconfig
207 endif
208 ifeq ($(BR2_mips_64),y)
209 $(SED) 's/.*\(CONFIG_MIPS_ISA_MIPS64\).*/\1=y/' $(UCLIBC_DIR)/.oldconfig
210 endif
211 endif
212 ifeq ($(UCLIBC_TARGET_ARCH),nios2)
213 $(SED) '/UCLIBC_FORMAT_/d' $(UCLIBC_DIR)/.oldconfig
214 /bin/echo "# UCLIBC_FORMAT_FDPIC_ELF is not set" >> $(UCLIBC_DIR)/.oldconfig
215 /bin/echo "UCLIBC_FORMAT_FLAT=y" >> $(UCLIBC_DIR)/.oldconfig
216 /bin/echo "# UCLIBC_FORMAT_FLAT_SEP_DATA is not set" >> $(UCLIBC_DIR)/.oldconfig
217 /bin/echo "# UCLIBC_FORMAT_SHARED_FLAT is not set" >> $(UCLIBC_DIR)/.oldconfig
218 endif
219 ifeq ($(UCLIBC_TARGET_ARCH),sh)
220 /bin/echo "# CONFIG_SH2A is not set" >> $(UCLIBC_DIR)/.oldconfig
221 /bin/echo "# CONFIG_SH2 is not set" >> $(UCLIBC_DIR)/.oldconfig
222 /bin/echo "# CONFIG_SH3 is not set" >> $(UCLIBC_DIR)/.oldconfig
223 /bin/echo "# CONFIG_SH4 is not set" >> $(UCLIBC_DIR)/.oldconfig
224 ifeq ($(BR2_sh2a_nofpueb),y)
225 $(SED) '/UCLIBC_FORMAT_/d' $(UCLIBC_DIR)/.oldconfig
226 $(SED) 's,# CONFIG_SH2A is not set,CONFIG_SH2A=y,g' $(UCLIBC_DIR)/.oldconfig
227 /bin/echo "# UCLIBC_FORMAT_FDPIC_ELF is not set" >> $(UCLIBC_DIR)/.oldconfig
228 /bin/echo "# UCLIBC_FORMAT_FLAT is not set" >> $(UCLIBC_DIR)/.oldconfig
229 /bin/echo "# UCLIBC_FORMAT_FLAT_SEP_DATA is not set" >> $(UCLIBC_DIR)/.oldconfig
230 /bin/echo "# UCLIBC_FORMAT_SHARED_FLAT is not set" >> $(UCLIBC_DIR)/.oldconfig
231 endif
232 ifeq ($(BR2_sh2eb),y)
233 $(SED) '/UCLIBC_FORMAT_/d' $(UCLIBC_DIR)/.oldconfig
234 $(SED) 's,# CONFIG_SH2 is not set,CONFIG_SH2=y,g' $(UCLIBC_DIR)/.oldconfig
235 /bin/echo "# UCLIBC_FORMAT_FDPIC_ELF is not set" >> $(UCLIBC_DIR)/.oldconfig
236 /bin/echo "# UCLIBC_FORMAT_FLAT is not set" >> $(UCLIBC_DIR)/.oldconfig
237 /bin/echo "# UCLIBC_FORMAT_FLAT_SEP_DATA is not set" >> $(UCLIBC_DIR)/.oldconfig
238 /bin/echo "# UCLIBC_FORMAT_SHARED_FLAT is not set" >> $(UCLIBC_DIR)/.oldconfig
239 endif
240 ifeq ($(BR2_sh3eb),y)
241 $(SED) 's,# CONFIG_SH3 is not set,CONFIG_SH3=y,g' $(UCLIBC_DIR)/.oldconfig
242 endif
243 ifeq ($(BR2_sh3),y)
244 $(SED) 's,# CONFIG_SH3 is not set,CONFIG_SH3=y,g' $(UCLIBC_DIR)/.oldconfig
245 endif
246 ifeq ($(BR2_sh4eb),y)
247 $(SED) 's,# CONFIG_SH4 is not set,CONFIG_SH4=y,g' $(UCLIBC_DIR)/.oldconfig
248 endif
249 ifeq ($(BR2_sh4),y)
250 $(SED) 's,# CONFIG_SH4 is not set,CONFIG_SH4=y,g' $(UCLIBC_DIR)/.oldconfig
251 endif
252 endif
253 ifeq ($(UCLIBC_TARGET_ARCH),sparc)
254 $(SED) 's/^\(CONFIG_[^_]*[_]*SPARC[^=]*\)=.*/# \1 is not set/g' \
255 $(UCLIBC_DIR)/.oldconfig
256 for i in V7 V8 V9 V9B; do echo "# CONFIG_SPARC_$$i is not set"; done \
257 >> $(UCLIBC_DIR)/.oldconfig
258 $(SED) 's/^.*$(UCLIBC_SPARC_TYPE).*/$(UCLIBC_SPARC_TYPE)=y/g' $(UCLIBC_DIR)/.oldconfig
259 endif
260 ifneq ($(UCLIBC_TARGET_ENDIAN),)
261 # The above doesn't work for me, so redo
262 $(SED) 's/.*\(ARCH_$(UCLIBC_NOT_TARGET_ENDIAN)_ENDIAN\).*/# \1 is not set/g' \
263 -e 's/.*\(ARCH_WANTS_$(UCLIBC_NOT_TARGET_ENDIAN)_ENDIAN\).*/# \1 is not set/g' \
264 -e 's/.*\(ARCH_$(UCLIBC_TARGET_ENDIAN)_ENDIAN\).*/\1=y/g' \
265 -e 's/.*\(ARCH_WANTS_$(UCLIBC_TARGET_ENDIAN)_ENDIAN\).*/\1=y/g' \
266 $(UCLIBC_DIR)/.oldconfig
267 endif
268 ifeq ($(BR2_LARGEFILE),y)
269 $(SED) 's,.*UCLIBC_HAS_LFS.*,UCLIBC_HAS_LFS=y,g' $(UCLIBC_DIR)/.oldconfig
270 else
271 $(SED) 's,.*UCLIBC_HAS_LFS.*,UCLIBC_HAS_LFS=n,g' $(UCLIBC_DIR)/.oldconfig
272 $(SED) '/.*UCLIBC_HAS_FOPEN_LARGEFILE_MODE.*/d' $(UCLIBC_DIR)/.oldconfig
273 echo "# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set" >> $(UCLIBC_DIR)/.oldconfig
274 endif
275 $(SED) '/UCLIBC_HAS_IPV6/d' $(UCLIBC_DIR)/.oldconfig
276 echo "# UCLIBC_HAS_IPV6 is not set" >> $(UCLIBC_DIR)/.oldconfig
277 ifeq ($(BR2_INET_IPV6),y)
278 $(SED) 's,^.*UCLIBC_HAS_IPV6.*,UCLIBC_HAS_IPV6=y,g' $(UCLIBC_DIR)/.oldconfig
279 else
280 $(SED) 's,^.*UCLIBC_HAS_IPV6.*,UCLIBC_HAS_IPV6=n,g' $(UCLIBC_DIR)/.oldconfig
281 endif
282 $(SED) '/UCLIBC_HAS_RPC/d' $(UCLIBC_DIR)/.oldconfig
283 echo "# UCLIBC_HAS_RPC is not set" >> $(UCLIBC_DIR)/.oldconfig
284 ifeq ($(BR2_INET_RPC),y)
285 $(SED) 's,^.*UCLIBC_HAS_RPC.*,UCLIBC_HAS_RPC=y,g' \
286 -e 's,^.*UCLIBC_HAS_FULL_RPC.*,UCLIBC_HAS_FULL_RPC=y,g' \
287 -e 's,^.*UCLIBC_HAS_REENTRANT_RPC.*,UCLIBC_HAS_REENTRANT_RPC=y,g' \
288 $(UCLIBC_DIR)/.oldconfig
289 else
290 $(SED) 's,^.*UCLIBC_HAS_RPC.*,UCLIBC_HAS_RPC=n,g' \
291 -e 's,^.*UCLIBC_HAS_FULL_RPC.*,UCLIBC_HAS_FULL_RPC=n,g' \
292 -e 's,^.*UCLIBC_HAS_REENTRANT_RPC.*,UCLIBC_HAS_REENTRANT_RPC=n,g' \
293 $(UCLIBC_DIR)/.oldconfig
294 endif
295 ifeq ($(BR2_SOFT_FLOAT),y)
296 $(SED) 's,.*UCLIBC_HAS_FPU.*,UCLIBC_HAS_FPU=n,g' \
297 -e 's,^[^_]*HAS_FPU.*,HAS_FPU=n,g' \
298 -e 's,.*UCLIBC_HAS_FLOATS.*,UCLIBC_HAS_FLOATS=y,g' \
299 -e 's,.*DO_C99_MATH.*,DO_C99_MATH=y,g' \
300 $(UCLIBC_DIR)/.oldconfig
301 #$(SED) 's,.*UCLIBC_HAS_FPU.*,UCLIBC_HAS_FPU=n\nHAS_FPU=n\nUCLIBC_HAS_FLOATS=y\nUCLIBC_HAS_SOFT_FLOAT=y,g' $(UCLIBC_DIR)/.oldconfig
302 else
303 $(SED) '/UCLIBC_HAS_FLOATS/d' \
304 -e 's,.*UCLIBC_HAS_FPU.*,UCLIBC_HAS_FPU=y\nHAS_FPU=y\nUCLIBC_HAS_FLOATS=y\n,g' \
305 $(UCLIBC_DIR)/.oldconfig
306 endif
307 $(SED) '/UCLIBC_HAS_THREADS/d' $(UCLIBC_DIR)/.oldconfig
308 $(SED) '/LINUXTHREADS/d' $(UCLIBC_DIR)/.oldconfig
309 $(SED) '/LINUXTHREADS_OLD/d' $(UCLIBC_DIR)/.oldconfig
310 $(SED) '/PTHREADS_DEBUG_SUPPORT/d' $(UCLIBC_DIR)/.oldconfig
311 $(SED) '/UCLIBC_HAS_THREADS_NATIVE/d' $(UCLIBC_DIR)/.oldconfig
312 ifeq ($(BR2_PTHREADS_NONE),y)
313 echo "# UCLIBC_HAS_THREADS is not set" >> $(UCLIBC_DIR)/.oldconfig
314 else
315 echo "UCLIBC_HAS_THREADS=y" >> $(UCLIBC_DIR)/.oldconfig
316 endif
317 ifeq ($(BR2_PTHREADS),y)
318 echo "LINUXTHREADS=y" >> $(UCLIBC_DIR)/.oldconfig
319 else
320 echo "# LINUXTHREADS is not set" >> $(UCLIBC_DIR)/.oldconfig
321 endif
322 ifeq ($(BR2_PTHREADS_OLD),y)
323 echo "LINUXTHREADS_OLD=y" >> $(UCLIBC_DIR)/.oldconfig
324 else
325 echo "# LINUXTHREADS_OLD is not set" >> $(UCLIBC_DIR)/.oldconfig
326 endif
327 ifeq ($(BR2_PTHREADS_NATIVE),y)
328 echo "UCLIBC_HAS_THREADS_NATIVE=y" >> $(UCLIBC_DIR)/.oldconfig
329 else
330 echo "# UCLIBC_HAS_THREADS_NATIVE is not set" >> $(UCLIBC_DIR)/.oldconfig
331 endif
332 ifeq ($(BR2_PTHREAD_DEBUG),y)
333 echo "PTHREADS_DEBUG_SUPPORT=y" >> $(UCLIBC_DIR)/.oldconfig
334 else
335 echo "# PTHREADS_DEBUG_SUPPORT is not set" >> $(UCLIBC_DIR)/.oldconfig
336 endif
337 ifeq ($(BR2_ENABLE_LOCALE),y)
338 $(SED) 's,^.*UCLIBC_HAS_LOCALE.*,UCLIBC_HAS_LOCALE=y\nUCLIBC_PREGENERATED_LOCALE_DATA=y\nUCLIBC_DOWNLOAD_PREGENERATED_LOCALE_DATA=y\nUCLIBC_HAS_XLOCALE=y\nUCLIBC_HAS_GLIBC_DIGIT_GROUPING=n\n,g' $(UCLIBC_DIR)/.oldconfig
339 $(SED) 's,.*UCLIBC_HAS_WCHAR.*,UCLIBC_HAS_WCHAR=y,g' $(UCLIBC_DIR)/.oldconfig
340 else
341 $(SED) 's,^.*UCLIBC_HAS_LOCALE.*,UCLIBC_HAS_LOCALE=n,g' $(UCLIBC_DIR)/.oldconfig
342 $(SED) 's,.*UCLIBC_HAS_WCHAR.*,UCLIBC_HAS_WCHAR=n,g' $(UCLIBC_DIR)/.oldconfig
343 endif
344 ifeq ($(BR2_USE_WCHAR),y)
345 $(SED) 's,^.*UCLIBC_HAS_WCHAR.*,UCLIBC_HAS_WCHAR=y,g' $(UCLIBC_DIR)/.oldconfig
346 else
347 $(SED) 's,^.*UCLIBC_HAS_WCHAR.*,UCLIBC_HAS_WCHAR=n,g' $(UCLIBC_DIR)/.oldconfig
348 endif
349 ifeq ($(BR2_UCLIBC_PROGRAM_INVOCATION),y)
350 $(SED) 's,^.*UCLIBC_HAS_PROGRAM_INVOCATION_NAME.*,UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y,g' $(UCLIBC_DIR)/.oldconfig
351 else
352 $(SED) 's,^.*UCLIBC_HAS_PROGRAM_INVOCATION_NAME.*,UCLIBC_HAS_PROGRAM_INVOCATION_NAME=n,g' $(UCLIBC_DIR)/.oldconfig
353 endif
354 ifeq ("$(KERNEL_ARCH)","i386")
355 $(SED) '/CONFIG_GENERIC_386/d' \
356 -e '/CONFIG_[0-9]86/d' \
357 -e '/CONFIG_[0-9]86MMX/d' \
358 -e '/CONFIG_PENTIUM.*/d' \
359 -e '/CONFIG_K[0-9]/d' \
360 -e '/CONFIG_ELAN/d' \
361 -e '/CONFIG_CRUSOE/d' \
362 -e '/CONFIG_WINCHIP*/d' \
363 -e '/CONFIG_CYRIX*/d' \
364 -e '/CONFIG_NEHEMIAH/d' $(UCLIBC_DIR)/.oldconfig
365 /bin/echo "# CONFIG_GENERIC_386 is not set" >> $(UCLIBC_DIR)/.oldconfig
366 /bin/echo "# CONFIG_386 is not set" >> $(UCLIBC_DIR)/.oldconfig
367 /bin/echo "# CONFIG_486 is not set" >> $(UCLIBC_DIR)/.oldconfig
368 /bin/echo "# CONFIG_586 is not set" >> $(UCLIBC_DIR)/.oldconfig
369 /bin/echo "# CONFIG_586MMX is not set" >> $(UCLIBC_DIR)/.oldconfig
370 /bin/echo "# CONFIG_686 is not set" >> $(UCLIBC_DIR)/.oldconfig
371 /bin/echo "# CONFIG_PENTIUMII is not set" >> $(UCLIBC_DIR)/.oldconfig
372 /bin/echo "# CONFIG_PENTIUMIII is not set" >> $(UCLIBC_DIR)/.oldconfig
373 /bin/echo "# CONFIG_PENTIUM4 is not set" >> $(UCLIBC_DIR)/.oldconfig
374 /bin/echo "# CONFIG_K6 is not set" >> $(UCLIBC_DIR)/.oldconfig
375 /bin/echo "# CONFIG_K7 is not set" >> $(UCLIBC_DIR)/.oldconfig
376 /bin/echo "# CONFIG_ELAN is not set" >> $(UCLIBC_DIR)/.oldconfig
377 /bin/echo "# CONFIG_CRUSOE is not set" >> $(UCLIBC_DIR)/.oldconfig
378 /bin/echo "# CONFIG_WINCHIPC6 is not set" >> $(UCLIBC_DIR)/.oldconfig
379 /bin/echo "# CONFIG_WINCHIP2 is not set" >> $(UCLIBC_DIR)/.oldconfig
380 /bin/echo "# CONFIG_CYRIXIII is not set" >> $(UCLIBC_DIR)/.oldconfig
381 /bin/echo "# CONFIG_NEHEMIAH is not set" >> $(UCLIBC_DIR)/.oldconfig
382 ifeq ($(BR2_x86_i386),y)
383 $(SED) 's,# CONFIG_386 is not set,CONFIG_386=y,g' $(UCLIBC_DIR)/.oldconfig
384 endif
385 ifeq ($(BR2_x86_i486),y)
386 $(SED) 's,# CONFIG_486 is not set,CONFIG_486=y,g' $(UCLIBC_DIR)/.oldconfig
387 endif
388 ifeq ($(BR2_x86_i586),y)
389 $(SED) 's,# CONFIG_586 is not set,CONFIG_586=y,g' $(UCLIBC_DIR)/.oldconfig
390 endif
391 ifeq ($(BR2_x86_i686),y)
392 $(SED) 's,# CONFIG_686 is not set,CONFIG_686=y,g' $(UCLIBC_DIR)/.oldconfig
393 endif
394 endif
395 $(SED) '/CONFIG_DOSTRIP/d' $(UCLIBC_DIR)/.oldconfig
396 /bin/echo "# CONFIG_DOSTRIP is not set" >> $(UCLIBC_DIR)/.oldconfig
397 ifneq ($(BR2_STRIP_none),y)
398 $(SED) 's/.*CONFIG_DOSTRIP.*/CONFIG_DOSTRIP=y/' $(UCLIBC_DIR)/.oldconfig
399 endif
402 $(UCLIBC_DIR)/.config: $(UCLIBC_DIR)/.oldconfig
403 cp -f $(UCLIBC_DIR)/.oldconfig $(UCLIBC_DIR)/.config
404 mkdir -p $(TOOL_BUILD_DIR)/uClibc_dev/usr/include
405 mkdir -p $(TOOL_BUILD_DIR)/uClibc_dev/usr/lib
406 mkdir -p $(TOOL_BUILD_DIR)/uClibc_dev/lib
407 $(MAKE1) -C $(UCLIBC_DIR) \
408 PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \
409 DEVEL_PREFIX=/usr/ \
410 RUNTIME_PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \
411 HOSTCC="$(HOSTCC)" \
412 BUILD_CFLAGS="$(HOST_CFLAGS)" \
413 BUILD_LDFLAGS="$(HOST_LDFLAGS)" \
414 oldconfig
415 touch $@
417 $(UCLIBC_DIR)/.configured: $(LINUX_HEADERS_DIR)/.configured $(UCLIBC_DIR)/.config
418 ifeq ($(findstring y,$(BR2_UCLIBC_VERSION_0_9_27)$(BR2_UCLIBC_VERSION_0_9_28_3)$(BR2_UCLIBC_VERSION_0_9_29)),y)
419 # older uClibc without the signum.h generation fix
420 set -x && $(MAKE1) -C $(UCLIBC_DIR) \
421 PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \
422 DEVEL_PREFIX=/usr/ \
423 RUNTIME_PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \
424 HOSTCC="$(HOSTCC)" \
425 BUILD_CFLAGS="$(HOST_CFLAGS)" \
426 BUILD_LDFLAGS="$(HOST_LDFLAGS)" \
427 UCLIBC_EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \
428 UCLIBC_EXTRA_CFLAGS="$(TARGET_CFLAGS)" \
429 pregen install_dev
430 else
431 set -x && $(MAKE1) -C $(UCLIBC_DIR) \
432 PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \
433 DEVEL_PREFIX=/usr/ \
434 RUNTIME_PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \
435 HOSTCC="$(HOSTCC)" \
436 BUILD_CFLAGS="$(HOST_CFLAGS)" \
437 BUILD_LDFLAGS="$(HOST_LDFLAGS)" \
438 UCLIBC_EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \
439 UCLIBC_EXTRA_CFLAGS="$(TARGET_CFLAGS)" \
440 headers install_dev
441 endif
442 # Install the kernel headers to the first stage gcc include dir
443 ifeq ($(LINUX_HEADERS_IS_KERNEL),y)
444 if [ ! -f $(TOOL_BUILD_DIR)/uClibc_dev/usr/include/linux/version.h ]; then \
445 cp -pLR $(LINUX_HEADERS_DIR)/include/* \
446 $(TOOL_BUILD_DIR)/uClibc_dev/usr/include/; \
448 else
449 if [ ! -f $(STAGING_DIR)/usr/include/linux/version.h ]; then \
450 cp -pLR $(LINUX_HEADERS_DIR)/include/asm \
451 $(TOOL_BUILD_DIR)/uClibc_dev/usr/include/; \
452 cp -pLR $(LINUX_HEADERS_DIR)/include/linux \
453 $(TOOL_BUILD_DIR)/uClibc_dev/usr/include/; \
454 if [ -d $(LINUX_HEADERS_DIR)/include/asm-generic ]; then \
455 cp -pLR $(LINUX_HEADERS_DIR)/include/asm-generic \
456 $(TOOL_BUILD_DIR)/uClibc_dev/usr/include/; \
457 fi; \
459 endif
460 touch $@
462 $(UCLIBC_DIR)/lib/libc.a: $(UCLIBC_DIR)/.configured $(gcc_initial) $(LIBFLOAT_TARGET)
463 $(MAKE) -C $(UCLIBC_DIR) \
464 PREFIX= \
465 DEVEL_PREFIX=/ \
466 RUNTIME_PREFIX=/ \
467 HOSTCC="$(HOSTCC)" \
468 BUILD_CFLAGS="$(HOST_CFLAGS)" \
469 BUILD_LDFLAGS="$(HOST_LDFLAGS)" \
470 UCLIBC_EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \
471 UCLIBC_EXTRA_CFLAGS="$(TARGET_CFLAGS)" \
473 touch -c $@
475 uclibc-menuconfig: host-sed $(UCLIBC_DIR)/.config
476 $(MAKE1) -C $(UCLIBC_DIR) \
477 PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \
478 DEVEL_PREFIX=/usr/ \
479 RUNTIME_PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \
480 HOSTCC="$(HOSTCC)" \
481 BUILD_CFLAGS="$(HOST_CFLAGS)" \
482 BUILD_LDFLAGS="$(HOST_LDFLAGS)" \
483 menuconfig && \
484 touch -c $(UCLIBC_DIR)/.config
487 $(STAGING_DIR)/usr/lib/libc.a: $(UCLIBC_DIR)/lib/libc.a
488 ifneq ($(BR2_TOOLCHAIN_SYSROOT),y)
489 $(MAKE1) -C $(UCLIBC_DIR) \
490 PREFIX= \
491 DEVEL_PREFIX=$(STAGING_DIR)/ \
492 RUNTIME_PREFIX=$(STAGING_DIR)/ \
493 install_runtime install_dev
494 else
495 $(MAKE1) -C $(UCLIBC_DIR) \
496 PREFIX=$(STAGING_DIR) \
497 DEVEL_PREFIX=/usr/ \
498 RUNTIME_PREFIX=/ \
499 HOSTCC="$(HOSTCC)" \
500 BUILD_CFLAGS="$(HOST_CFLAGS)" \
501 BUILD_LDFLAGS="$(HOST_LDFLAGS)" \
502 UCLIBC_EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \
503 UCLIBC_EXTRA_CFLAGS="$(TARGET_CFLAGS)" \
504 install_runtime install_dev
505 endif
506 # Install the kernel headers to the staging dir if necessary
507 ifeq ($(LINUX_HEADERS_IS_KERNEL),y)
508 if [ ! -f $(STAGING_DIR)/usr/include/linux/version.h ]; then \
509 cp -pLR $(LINUX_HEADERS_DIR)/include/* \
510 $(STAGING_DIR)/usr/include/; \
512 else
513 if [ ! -f $(STAGING_DIR)/usr/include/linux/version.h ]; then \
514 cp -pLR $(LINUX_HEADERS_DIR)/include/asm \
515 $(STAGING_DIR)/usr/include/; \
516 cp -pLR $(LINUX_HEADERS_DIR)/include/linux \
517 $(STAGING_DIR)/usr/include/; \
518 if [ -d $(LINUX_HEADERS_DIR)/include/asm-generic ]; then \
519 cp -pLR $(LINUX_HEADERS_DIR)/include/asm-generic \
520 $(STAGING_DIR)/usr/include/; \
521 fi; \
523 endif
524 # Build the host utils. Need to add an install target...
525 $(MAKE1) -C $(UCLIBC_DIR)/utils \
526 PREFIX=$(STAGING_DIR) \
527 HOSTCC="$(HOSTCC)" \
528 hostutils
529 install -c $(UCLIBC_DIR)/utils/ldd.host $(STAGING_DIR)/usr/bin/ldd
530 ln -sf ldd $(STAGING_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-ldd
531 install -c $(UCLIBC_DIR)/utils/ldconfig.host $(STAGING_DIR)/usr/bin/ldconfig
532 ln -sf ldconfig $(STAGING_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-ldconfig
533 ln -sf ldconfig $(STAGING_DIR)/usr/bin/$(GNU_TARGET_NAME)-ldconfig
534 touch -c $@
536 ifneq ($(TARGET_DIR),)
537 $(TARGET_DIR)/lib/libc.so.0: $(STAGING_DIR)/usr/lib/libc.a
538 $(MAKE1) -C $(UCLIBC_DIR) \
539 PREFIX=$(TARGET_DIR) \
540 DEVEL_PREFIX=/usr/ \
541 RUNTIME_PREFIX=/ \
542 UCLIBC_EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \
543 UCLIBC_EXTRA_CFLAGS="$(TARGET_CFLAGS)" \
544 install_runtime
545 touch -c $@
547 $(TARGET_DIR)/usr/bin/ldd: $(cross_compiler)
548 $(MAKE1) -C $(UCLIBC_DIR) CC=$(TARGET_CROSS)gcc \
549 CPP=$(TARGET_CROSS)cpp LD=$(TARGET_CROSS)ld \
550 UCLIBC_EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \
551 UCLIBC_EXTRA_CFLAGS="$(TARGET_CFLAGS)" \
552 PREFIX=$(TARGET_DIR) utils install_utils
553 ifeq ($(BR2_CROSS_TOOLCHAIN_TARGET_UTILS),y)
554 mkdir -p $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/target_utils
555 install -c $(TARGET_DIR)/usr/bin/ldd \
556 $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/target_utils/ldd
557 endif
558 touch -c $@
560 UCLIBC_TARGETS=$(TARGET_DIR)/lib/libc.so.0
561 endif
563 uclibc: $(cross_compiler) $(STAGING_DIR)/usr/lib/libc.a $(UCLIBC_TARGETS)
565 uclibc-source: $(DL_DIR)/$(UCLIBC_SOURCE)
567 uclibc-unpacked: $(UCLIBC_DIR)/.unpacked
569 uclibc-config: $(UCLIBC_DIR)/.config
571 uclibc-oldconfig: $(UCLIBC_DIR)/.oldconfig
573 uclibc-update: uclibc-config
574 cp -f $(UCLIBC_DIR)/.config $(UCLIBC_CONFIG_FILE)
576 uclibc-configured: kernel-headers $(UCLIBC_DIR)/.configured
578 uclibc-configured-source: uclibc-source
580 uclibc-clean:
581 -$(MAKE1) -C $(UCLIBC_DIR) clean
582 rm -f $(UCLIBC_DIR)/.config
584 uclibc-dirclean:
585 rm -rf $(UCLIBC_DIR)
587 uclibc-target-utils: $(TARGET_DIR)/usr/bin/ldd
589 uclibc-target-utils-source: $(DL_DIR)/$(UCLIBC_SOURCE)
591 #############################################################
593 # uClibc for the target just needs its header files
594 # and whatnot installed.
596 #############################################################
598 $(TARGET_DIR)/usr/lib/libc.a: $(STAGING_DIR)/usr/lib/libc.a
599 $(MAKE1) -C $(UCLIBC_DIR) \
600 PREFIX=$(TARGET_DIR) \
601 DEVEL_PREFIX=/usr/ \
602 RUNTIME_PREFIX=/ \
603 install_dev
604 # Install the kernel headers to the target dir if necessary
605 ifeq ($(LINUX_HEADERS_IS_KERNEL),y)
606 if [ ! -f $(TARGET_DIR)/usr/include/linux/version.h ]; then \
607 cp -pLR $(LINUX_HEADERS_DIR)/include/* \
608 $(TARGET_DIR)/usr/include/; \
610 else
611 if [ ! -f $(TARGET_DIR)/usr/include/linux/version.h ]; then \
612 cp -pLR $(LINUX_HEADERS_DIR)/include/asm \
613 $(TARGET_DIR)/usr/include/; \
614 cp -pLR $(LINUX_HEADERS_DIR)/include/linux \
615 $(TARGET_DIR)/usr/include/; \
616 if [ -d $(LINUX_HEADERS_DIR)/include/asm-generic ]; then \
617 cp -pLR $(LINUX_HEADERS_DIR)/include/asm-generic \
618 $(TARGET_DIR)/usr/include/; \
619 fi; \
621 endif
622 touch -c $@
624 uclibc_target: cross_compiler uclibc $(TARGET_DIR)/usr/lib/libc.a $(TARGET_DIR)/usr/bin/ldd
626 uclibc_target-clean:
627 rm -rf $(TARGET_DIR)/usr/include \
628 $(TARGET_DIR)/usr/lib/libc.a $(TARGET_DIR)/usr/bin/ldd
630 uclibc_target-dirclean:
631 rm -rf $(TARGET_DIR)/usr/include
633 endif