use parallel install
[buildroot.git] / toolchain / uClibc / uclibc.mk
blob98ce2ce0d5886c9f8aa7c0781020b4e2836b6b2e
1 #############################################################
3 # uClibc (the C library)
5 #############################################################
7 ifeq ($(BR2_TOOLCHAIN_SOURCE),y)
9 UCLIBC_SITE:=http://www.uclibc.org/downloads
10 ifeq ($(BR2_TOOLCHAIN_EXTERNAL_SOURCE),y)
11 UCLIBC_SITE:=$(VENDOR_SITE)
12 endif
14 # specifying UCLIBC_CONFIG_FILE on the command-line overrides the .config
15 # setting.
16 ifndef UCLIBC_CONFIG_FILE
17 UCLIBC_CONFIG_FILE=$(subst ",, $(BR2_UCLIBC_CONFIG))
18 #")
19 endif
21 UCLIBC_VER:=$(subst ",,$(BR2_UCLIBC_VERSION_STRING))
22 #")
23 ifeq ($(BR2_UCLIBC_VERSION_SNAPSHOT),y)
24 UCLIBC_DIR:=$(TOOL_BUILD_DIR)/uClibc
25 UCLIBC_SOURCE:=uClibc-$(UCLIBC_VER).tar.bz2
26 UCLIBC_SITE:=http://www.uclibc.org/downloads/snapshots
27 UCLIBC_PATCH_DIR:=toolchain/uClibc/
28 endif
30 UCLIBC_OFFICIAL_VERSION:=$(UCLIBC_VER)$(VENDOR_SUFFIX)$(VENDOR_UCLIBC_RELEASE)
32 ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y)
33 UCLIBC_PATCH_DIR:=toolchain/uClibc/
34 else
35 UCLIBC_PATCH_DIR:=$(VENDOR_PATCH_DIR)/uClibc-$(UCLIBC_OFFICIAL_VERSION)
36 endif
38 ifneq ($(BR2_UCLIBC_VERSION_SNAPSHOT),y)
39 UCLIBC_DIR:=$(TOOL_BUILD_DIR)/uClibc-$(UCLIBC_OFFICIAL_VERSION)
40 endif
42 UCLIBC_SOURCE:=uClibc-$(UCLIBC_OFFICIAL_VERSION).tar.bz2
43 UCLIBC_CAT:=$(BZCAT)
45 UCLIBC_TARGET_ARCH:=$(shell $(SHELL) -c "echo $(ARCH) | sed \
46 -e 's/-.*//' \
47 -e 's/i.86/i386/' \
48 -e 's/sparc.*/sparc/' \
49 -e 's/arm.*/arm/g' \
50 -e 's/bfin.*/bfin/g' \
51 -e 's/m68k.*/m68k/' \
52 -e 's/ppc/powerpc/g' \
53 -e 's/v850.*/v850/g' \
54 -e 's/sh[234].*/sh/' \
55 -e 's/mips.*/mips/' \
56 -e 's/mipsel.*/mips/' \
57 -e 's/cris.*/cris/' \
58 -e 's/nios2.*/nios2/' \
60 # just handle the ones that can be big or little
61 UCLIBC_TARGET_ENDIAN:=$(shell $(SHELL) -c "echo $(ARCH) | sed \
62 -e 's/armeb/BIG/' \
63 -e 's/arm/LITTLE/' \
64 -e 's/mipsel/LITTLE/' \
65 -e 's/mips/BIG/' \
66 -e 's/sh[234].*eb/BIG/' \
67 -e 's/sh[234]/LITTLE/' \
68 -e 's/sparc.*/BIG/' \
71 ifneq ($(UCLIBC_TARGET_ENDIAN),LITTLE)
72 ifneq ($(UCLIBC_TARGET_ENDIAN),BIG)
73 UCLIBC_TARGET_ENDIAN:=
74 endif
75 endif
76 ifeq ($(UCLIBC_TARGET_ENDIAN),LITTLE)
77 UCLIBC_NOT_TARGET_ENDIAN:=BIG
78 else
79 UCLIBC_NOT_TARGET_ENDIAN:=LITTLE
80 endif
82 UCLIBC_ARM_TYPE:=CONFIG_$(subst ",, $(BR2_ARM_TYPE))
83 #")
84 UCLIBC_SPARC_TYPE:=CONFIG_SPARC_$(subst ",, $(BR2_SPARC_TYPE))
85 #")
87 ifeq ($(BR2_GCC_USE_INTERWORKING),y)
88 __UCLIBC_EXTRA_TARGET_CFLAGS+=-mthumb-interwork
89 endif
91 $(DL_DIR)/$(UCLIBC_SOURCE):
92 $(WGET) -P $(DL_DIR) $(UCLIBC_SITE)/$(UCLIBC_SOURCE)
94 ifeq ($(BR2_ENABLE_LOCALE_PREGENERATED),y)
95 UCLIBC_SITE_LOCALE:=http://www.uclibc.org/downloads
96 UCLIBC_SOURCE_LOCALE:=uClibc-locale-030818.tgz
98 $(DL_DIR)/$(UCLIBC_SOURCE_LOCALE):
99 $(WGET) -P $(DL_DIR) $(UCLIBC_SITE_LOCALE)/$(UCLIBC_SOURCE_LOCALE)
101 UCLIBC_LOCALE_DATA:=$(DL_DIR)/$(UCLIBC_SOURCE_LOCALE)
102 else
103 UCLIBC_LOCALE_DATA=
104 endif
106 $(UCLIBC_DIR)/.unpacked: $(DL_DIR)/$(UCLIBC_SOURCE) $(UCLIBC_LOCALE_DATA)
107 mkdir -p $(TOOL_BUILD_DIR)
108 rm -rf $(UCLIBC_DIR)
109 $(UCLIBC_CAT) $(DL_DIR)/$(UCLIBC_SOURCE) | tar -C $(TOOL_BUILD_DIR) $(TAR_OPTIONS) -
110 ifneq ($(BR2_UCLIBC_VERSION_SNAPSHOT),y)
111 toolchain/patch-kernel.sh $(UCLIBC_DIR) $(UCLIBC_PATCH_DIR) uClibc-$(UCLIBC_OFFICIAL_VERSION)-\*.patch
112 else
113 toolchain/patch-kernel.sh $(UCLIBC_DIR) $(UCLIBC_PATCH_DIR) uClibc.\*.patch
114 endif
115 ifeq ($(BR2_ENABLE_LOCALE_PREGENERATED),y)
116 cp -dpf $(DL_DIR)/$(UCLIBC_SOURCE_LOCALE) $(UCLIBC_DIR)/extra/locale/
117 endif
118 touch $@
120 UCLIBC_CONFIGURED_PREREQ:=$(wildcard $(BR2_DEPENDS_DIR)/br2/arch.h*) \
121 $(wildcard $(BR2_DEPENDS_DIR)/br2/endian.h*) \
122 $(wildcard $(BR2_DEPENDS_DIR)/br2/$(UCLIBC_TARGET_ARCH).h*) \
123 $(wildcard $(BR2_DEPENDS_DIR)/br2/pthreads.h*) \
124 $(wildcard $(BR2_DEPENDS_DIR)/br2/$(UCLIBC_TARGET_ARCH)/*.h) \
125 $(wildcard $(BR2_DEPENDS_DIR)/br2/pthread*/*.h) \
126 $(wildcard $(BR2_DEPENDS_DIR)/br2/enable/*locale*.h) \
127 $(wildcard $(BR2_DEPENDS_DIR)/br2/enable/*locale*.h) \
128 $(wildcard $(BR2_DEPENDS_DIR)/br2/use/*wchar*.h) \
129 $(wildcard $(BR2_DEPENDS_DIR)/br2/use/*updates*.h) \
130 $(wildcard $(BR2_DEPENDS_DIR)/br2/uclibc/*.h) \
131 $(wildcard $(BR2_DEPENDS_DIR)/br2/uclibc/*/*.h)
133 # Some targets may wish to provide their own UCLIBC_CONFIG_FILE...
134 $(UCLIBC_DIR)/.oldconfig: $(UCLIBC_DIR)/.unpacked $(UCLIBC_CONFIG_FILE) $(UCLIBC_CONFIGURED_PREREQ)
135 ifeq ($(BR2_USE_UPDATES),y)
136 (cd $(@D) && $(SVN_UP))
137 endif
138 cp -f $(UCLIBC_CONFIG_FILE) $(UCLIBC_DIR)/.oldconfig
139 $(SED) 's,^CROSS_COMPILER_PREFIX=.*,CROSS_COMPILER_PREFIX="$(TARGET_CROSS)",g' \
140 -e 's,# TARGET_$(UCLIBC_TARGET_ARCH) is not set,TARGET_$(UCLIBC_TARGET_ARCH)=y,g' \
141 -e 's,^TARGET_ARCH=".*",TARGET_ARCH=\"$(UCLIBC_TARGET_ARCH)\",g' \
142 -e 's,^KERNEL_SOURCE=.*,KERNEL_SOURCE=\"$(LINUX_HEADERS_DIR)\",g' \
143 -e 's,^KERNEL_HEADERS=.*,KERNEL_HEADERS=\"$(LINUX_HEADERS_DIR)/include\",g' \
144 -e 's,^RUNTIME_PREFIX=.*,RUNTIME_PREFIX=\"/\",g' \
145 -e 's,^DEVEL_PREFIX=.*,DEVEL_PREFIX=\"/usr/\",g' \
146 -e 's,^SHARED_LIB_LOADER_PREFIX=.*,SHARED_LIB_LOADER_PREFIX=\"/lib\",g' \
147 $(UCLIBC_DIR)/.oldconfig
148 ifeq ($(UCLIBC_TARGET_ARCH),arm)
149 $(SED) 's/^\(CONFIG_[^_]*[_]*ARM[^=]*\)=.*/# \1 is not set/g' \
150 $(UCLIBC_DIR)/.oldconfig
151 $(SED) 's/^.*$(UCLIBC_ARM_TYPE).*/$(UCLIBC_ARM_TYPE)=y/g' $(UCLIBC_DIR)/.oldconfig
152 $(SED) '/CONFIG_ARM_.ABI/d' $(UCLIBC_DIR)/.oldconfig
153 ifeq ($(BR2_ARM_EABI),y)
154 /bin/echo "# CONFIG_ARM_OABI is not set" >> $(UCLIBC_DIR)/.oldconfig
155 /bin/echo "CONFIG_ARM_EABI=y" >> $(UCLIBC_DIR)/.oldconfig
156 endif
157 ifeq ($(BR2_ARM_OABI),y)
158 /bin/echo "CONFIG_ARM_OABI=y" >> $(UCLIBC_DIR)/.oldconfig
159 /bin/echo "# CONFIG_ARM_EABI is not set" >> $(UCLIBC_DIR)/.oldconfig
160 endif
161 endif
162 ifeq ($(UCLIBC_TARGET_ARCH),mips)
163 $(SED) '/CONFIG_MIPS_[NO].._ABI/d' $(UCLIBC_DIR)/.oldconfig
164 $(SED) '/CONFIG_MIPS_ISA_.*/d' $(UCLIBC_DIR)/.oldconfig
165 (/bin/echo "# CONFIG_MIPS_O32_ABI is not set"; \
166 /bin/echo "# CONFIG_MIPS_N32_ABI is not set"; \
167 /bin/echo "# CONFIG_MIPS_N64_ABI is not set"; \
168 /bin/echo "# CONFIG_MIPS_ISA_1 is not set"; \
169 /bin/echo "# CONFIG_MIPS_ISA_2 is not set"; \
170 /bin/echo "# CONFIG_MIPS_ISA_3 is not set"; \
171 /bin/echo "# CONFIG_MIPS_ISA_4 is not set"; \
172 /bin/echo "# CONFIG_MIPS_ISA_MIPS32 is not set"; \
173 /bin/echo "# CONFIG_MIPS_ISA_MIPS64 is not set"; \
174 ) >> $(UCLIBC_DIR)/.oldconfig
175 ifeq ($(BR2_MIPS_OABI32),y)
176 $(SED) 's/.*\(CONFIG_MIPS_O32_ABI\).*/\1=y/' $(UCLIBC_DIR)/.oldconfig
177 endif
178 ifeq ($(findstring y,$(BR2_MIPS_EABI)$(BR2_MIPS_ABI32)),y)
179 $(SED) 's/.*\(CONFIG_MIPS_N32_ABI\).*/\1=y/' $(UCLIBC_DIR)/.oldconfig
180 endif
181 ifeq ($(findstring y,$(BR2_MIPS_ABI64)$(BR2_MIPS_OABI64)),y)
182 $(SED) 's/.*\(CONFIG_MIPS_N64_ABI\).*/\1=y/' $(UCLIBC_DIR)/.oldconfig
183 endif
184 ifeq ($(BR2_mips_1),y)
185 $(SED) 's/.*\(CONFIG_MIPS_ISA_1\).*/\1=y/' $(UCLIBC_DIR)/.oldconfig
186 endif
187 ifeq ($(BR2_mips_2),y)
188 $(SED) 's/.*\(CONFIG_MIPS_ISA_2\).*/\1=y/' $(UCLIBC_DIR)/.oldconfig
189 endif
190 ifeq ($(BR2_mips_3),y)
191 $(SED) 's/.*\(CONFIG_MIPS_ISA_3\).*/\1=y/' $(UCLIBC_DIR)/.oldconfig
192 endif
193 ifeq ($(BR2_mips_4),y)
194 $(SED) 's/.*\(CONFIG_MIPS_ISA_4\).*/\1=y/' $(UCLIBC_DIR)/.oldconfig
195 endif
196 ifeq ($(BR2_mips_32),y)
197 $(SED) 's/.*\(CONFIG_MIPS_ISA_MIPS32\).*/\1=y/' $(UCLIBC_DIR)/.oldconfig
198 endif
199 ifeq ($(BR2_mips_32r2),y)
200 $(SED) 's/.*\(CONFIG_MIPS_ISA_MIPS32\).*/\1=y/' $(UCLIBC_DIR)/.oldconfig
201 endif
202 ifeq ($(BR2_mips_64),y)
203 $(SED) 's/.*\(CONFIG_MIPS_ISA_MIPS64\).*/\1=y/' $(UCLIBC_DIR)/.oldconfig
204 endif
205 endif
206 ifeq ($(UCLIBC_TARGET_ARCH),nios2)
207 $(SED) '/UCLIBC_FORMAT_/d' $(UCLIBC_DIR)/.oldconfig
208 /bin/echo "# UCLIBC_FORMAT_FDPIC_ELF is not set" >> $(UCLIBC_DIR)/.oldconfig
209 /bin/echo "UCLIBC_FORMAT_FLAT=y" >> $(UCLIBC_DIR)/.oldconfig
210 /bin/echo "# UCLIBC_FORMAT_FLAT_SEP_DATA is not set" >> $(UCLIBC_DIR)/.oldconfig
211 /bin/echo "# UCLIBC_FORMAT_SHARED_FLAT is not set" >> $(UCLIBC_DIR)/.oldconfig
212 endif
213 ifeq ($(UCLIBC_TARGET_ARCH),sh)
214 /bin/echo "# CONFIG_SH2A is not set" >> $(UCLIBC_DIR)/.oldconfig
215 /bin/echo "# CONFIG_SH2 is not set" >> $(UCLIBC_DIR)/.oldconfig
216 /bin/echo "# CONFIG_SH3 is not set" >> $(UCLIBC_DIR)/.oldconfig
217 /bin/echo "# CONFIG_SH4 is not set" >> $(UCLIBC_DIR)/.oldconfig
218 ifeq ($(BR2_sh2a_nofpueb),y)
219 $(SED) '/UCLIBC_FORMAT_/d' $(UCLIBC_DIR)/.oldconfig
220 $(SED) 's,# CONFIG_SH2A is not set,CONFIG_SH2A=y,g' $(UCLIBC_DIR)/.oldconfig
221 /bin/echo "# UCLIBC_FORMAT_FDPIC_ELF is not set" >> $(UCLIBC_DIR)/.oldconfig
222 /bin/echo "# UCLIBC_FORMAT_FLAT is not set" >> $(UCLIBC_DIR)/.oldconfig
223 /bin/echo "# UCLIBC_FORMAT_FLAT_SEP_DATA is not set" >> $(UCLIBC_DIR)/.oldconfig
224 /bin/echo "# UCLIBC_FORMAT_SHARED_FLAT is not set" >> $(UCLIBC_DIR)/.oldconfig
225 endif
226 ifeq ($(BR2_sh2eb),y)
227 $(SED) '/UCLIBC_FORMAT_/d' $(UCLIBC_DIR)/.oldconfig
228 $(SED) 's,# CONFIG_SH2 is not set,CONFIG_SH2=y,g' $(UCLIBC_DIR)/.oldconfig
229 /bin/echo "# UCLIBC_FORMAT_FDPIC_ELF is not set" >> $(UCLIBC_DIR)/.oldconfig
230 /bin/echo "# UCLIBC_FORMAT_FLAT is not set" >> $(UCLIBC_DIR)/.oldconfig
231 /bin/echo "# UCLIBC_FORMAT_FLAT_SEP_DATA is not set" >> $(UCLIBC_DIR)/.oldconfig
232 /bin/echo "# UCLIBC_FORMAT_SHARED_FLAT is not set" >> $(UCLIBC_DIR)/.oldconfig
233 endif
234 ifeq ($(BR2_sh3eb),y)
235 $(SED) 's,# CONFIG_SH3 is not set,CONFIG_SH3=y,g' $(UCLIBC_DIR)/.oldconfig
236 endif
237 ifeq ($(BR2_sh3),y)
238 $(SED) 's,# CONFIG_SH3 is not set,CONFIG_SH3=y,g' $(UCLIBC_DIR)/.oldconfig
239 endif
240 ifeq ($(BR2_sh4eb),y)
241 $(SED) 's,# CONFIG_SH4 is not set,CONFIG_SH4=y,g' $(UCLIBC_DIR)/.oldconfig
242 endif
243 ifeq ($(BR2_sh4),y)
244 $(SED) 's,# CONFIG_SH4 is not set,CONFIG_SH4=y,g' $(UCLIBC_DIR)/.oldconfig
245 endif
246 endif
247 ifeq ($(UCLIBC_TARGET_ARCH),sparc)
248 $(SED) 's/^\(CONFIG_[^_]*[_]*SPARC[^=]*\)=.*/# \1 is not set/g' \
249 $(UCLIBC_DIR)/.oldconfig
250 for i in V7 V8 V9 V9B; do echo "# CONFIG_SPARC_$$i is not set"; done \
251 >> $(UCLIBC_DIR)/.oldconfig
252 $(SED) 's/^.*$(UCLIBC_SPARC_TYPE).*/$(UCLIBC_SPARC_TYPE)=y/g' $(UCLIBC_DIR)/.oldconfig
253 endif
254 ifeq ($(UCLIBC_TARGET_ARCH),bfin)
255 $(SED) 's/^\(UCLIBC_FORMAT_[^[:space:]]*\).*/# \1 is not set/g' $(UCLIBC_DIR)/.oldconfig
256 $(SED) '/UCLIBC_FORMAT_FDPIC_ELF/d' $(UCLIBC_DIR)/.oldconfig
257 echo 'UCLIBC_FORMAT_FDPIC_ELF=y' >> $(UCLIBC_DIR)/.oldconfig
258 endif
259 ifeq ($(BR2_cris),y)
260 $(SED) '/CONFIG_CRIS/d' $(UCLIBC_DIR)/.oldconfig
261 echo '# CONFIG_CRIS is not set' >> $(UCLIBC_DIR)/.oldconfig
262 echo '# CONFIG_CRISV32 is not set' >> $(UCLIBC_DIR)/.oldconfig
263 ifeq ($(BR2_cris_cris32),y)
264 $(SED) 's,^TARGET_ARCH=".*",TARGET_ARCH=\"crisv32\",g' \
265 -e 's,.*\(CONFIG_CRIS\) .*,\1=y,' $(UCLIBC_DIR)/.oldconfig
266 endif
267 ifeq ($(BR2_cris_cris),y)
268 $(SED) 's,^TARGET_ARCH=".*",TARGET_ARCH=\"cris\",g' \
269 -e 's,.*\(CONFIG_CRISV32\) .*,\1=y,' $(UCLIBC_DIR)/.oldconfig
270 endif
271 endif
272 ifneq ($(UCLIBC_TARGET_ENDIAN),)
273 $(SED) 's/.*ARCH_\(WANTS_\|\)\(LITTLE\|BIG\)_ENDIAN.*//' \
274 $(UCLIBC_DIR)/.oldconfig
275 echo '# ARCH_$(UCLIBC_NOT_TARGET_ENDIAN)_ENDIAN is not set' >> $(UCLIBC_DIR)/.oldconfig
276 echo '# ARCH_WANTS_$(UCLIBC_NOT_TARGET_ENDIAN)_ENDIAN is not set' >> $(UCLIBC_DIR)/.oldconfig
277 echo 'ARCH_WANTS_$(UCLIBC_TARGET_ENDIAN)_ENDIAN=y' >> $(UCLIBC_DIR)/.oldconfig
278 echo 'ARCH_$(UCLIBC_TARGET_ENDIAN)_ENDIAN=y' >> $(UCLIBC_DIR)/.oldconfig
279 endif
280 $(SED) '/ARCH_USE_MMU/d' $(UCLIBC_DIR)/.oldconfig
281 ifeq ($(BR2_USE_MMU),y)
282 echo 'ARCH_USE_MMU=y' >> $(UCLIBC_DIR)/.oldconfig
283 endif
284 ifeq ($(BR2_ENABLE_SHARED),y)
285 $(SED) 's/.*\(HAVE_SHARED\).*/\1=y/g' $(UCLIBC_DIR)/.oldconfig
286 else
287 $(SED) 's/.*\(HAVE_SHARED\).*/# \1 is not set/g' $(UCLIBC_DIR)/.oldconfig
288 endif
289 ifeq ($(BR2_LARGEFILE),y)
290 $(SED) 's,.*UCLIBC_HAS_LFS.*,UCLIBC_HAS_LFS=y,g' $(UCLIBC_DIR)/.oldconfig
291 else
292 $(SED) 's,.*UCLIBC_HAS_LFS.*,UCLIBC_HAS_LFS=n,g' $(UCLIBC_DIR)/.oldconfig
293 $(SED) '/.*UCLIBC_HAS_FOPEN_LARGEFILE_MODE.*/d' $(UCLIBC_DIR)/.oldconfig
294 echo "# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set" >> $(UCLIBC_DIR)/.oldconfig
295 endif
296 $(SED) '/UCLIBC_HAS_IPV6/d' $(UCLIBC_DIR)/.oldconfig
297 echo "# UCLIBC_HAS_IPV6 is not set" >> $(UCLIBC_DIR)/.oldconfig
298 ifeq ($(BR2_INET_IPV6),y)
299 $(SED) 's,^.*UCLIBC_HAS_IPV6.*,UCLIBC_HAS_IPV6=y,g' $(UCLIBC_DIR)/.oldconfig
300 else
301 $(SED) 's,^.*UCLIBC_HAS_IPV6.*,UCLIBC_HAS_IPV6=n,g' $(UCLIBC_DIR)/.oldconfig
302 endif
303 $(SED) '/UCLIBC_HAS_RPC/d' $(UCLIBC_DIR)/.oldconfig
304 echo "# UCLIBC_HAS_RPC is not set" >> $(UCLIBC_DIR)/.oldconfig
305 ifeq ($(BR2_INET_RPC),y)
306 $(SED) 's,^.*UCLIBC_HAS_RPC.*,UCLIBC_HAS_RPC=y,g' \
307 -e 's,^.*UCLIBC_HAS_FULL_RPC.*,UCLIBC_HAS_FULL_RPC=y,g' \
308 -e 's,^.*UCLIBC_HAS_REENTRANT_RPC.*,UCLIBC_HAS_REENTRANT_RPC=y,g' \
309 $(UCLIBC_DIR)/.oldconfig
310 else
311 $(SED) 's,^.*UCLIBC_HAS_RPC.*,UCLIBC_HAS_RPC=n,g' \
312 -e 's,^.*UCLIBC_HAS_FULL_RPC.*,UCLIBC_HAS_FULL_RPC=n,g' \
313 -e 's,^.*UCLIBC_HAS_REENTRANT_RPC.*,UCLIBC_HAS_REENTRANT_RPC=n,g' \
314 $(UCLIBC_DIR)/.oldconfig
315 endif
316 ifeq ($(BR2_SOFT_FLOAT),y)
317 $(SED) 's,.*UCLIBC_HAS_FPU.*,UCLIBC_HAS_FPU=n,g' \
318 -e 's,^[^_]*HAS_FPU.*,HAS_FPU=n,g' \
319 -e 's,.*UCLIBC_HAS_FLOATS.*,UCLIBC_HAS_FLOATS=y,g' \
320 -e 's,.*DO_C99_MATH.*,DO_C99_MATH=y,g' \
321 $(UCLIBC_DIR)/.oldconfig
322 #$(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
323 else
324 $(SED) '/UCLIBC_HAS_FLOATS/d' \
325 -e 's,.*UCLIBC_HAS_FPU.*,UCLIBC_HAS_FPU=y\nHAS_FPU=y\nUCLIBC_HAS_FLOATS=y\n,g' \
326 $(UCLIBC_DIR)/.oldconfig
327 endif
328 $(SED) '/UCLIBC_HAS_THREADS/d' \
329 -e '/HAS_NO_THREADS/d' \
330 -e '/LINUXTHREADS/d' \
331 -e '/LINUXTHREADS_OLD/d' \
332 -e '/LINUXTHREADS_NEW/d' \
333 -e '/PTHREADS_DEBUG_SUPPORT/d' \
334 -e '/UCLIBC_HAS_THREADS_NATIVE/d' $(UCLIBC_DIR)/.oldconfig
335 ifeq ($(BR2_PTHREADS_NONE),y)
336 echo "# UCLIBC_HAS_THREADS is not set" >> $(UCLIBC_DIR)/.oldconfig
337 echo "HAS_NO_THREADS=y" >> $(UCLIBC_DIR)/.oldconfig
338 else
339 echo "UCLIBC_HAS_THREADS=y" >> $(UCLIBC_DIR)/.oldconfig
340 echo "# HAS_NO_THREADS is not set" >> $(UCLIBC_DIR)/.oldconfig
341 endif
342 ifeq ($(BR2_PTHREADS),y)
343 echo "LINUXTHREADS=y" >> $(UCLIBC_DIR)/.oldconfig
344 else
345 echo "# LINUXTHREADS is not set" >> $(UCLIBC_DIR)/.oldconfig
346 endif
347 ifeq ($(BR2_PTHREADS_OLD),y)
348 echo "LINUXTHREADS_OLD=y" >> $(UCLIBC_DIR)/.oldconfig
349 else
350 echo "# LINUXTHREADS_OLD is not set" >> $(UCLIBC_DIR)/.oldconfig
351 endif
352 ifeq ($(BR2_PTHREADS_NATIVE),y)
353 echo "UCLIBC_HAS_THREADS_NATIVE=y" >> $(UCLIBC_DIR)/.oldconfig
354 else
355 echo "# UCLIBC_HAS_THREADS_NATIVE is not set" >> $(UCLIBC_DIR)/.oldconfig
356 endif
357 ifeq ($(BR2_PTHREAD_DEBUG),y)
358 echo "PTHREADS_DEBUG_SUPPORT=y" >> $(UCLIBC_DIR)/.oldconfig
359 else
360 echo "# PTHREADS_DEBUG_SUPPORT is not set" >> $(UCLIBC_DIR)/.oldconfig
361 endif
362 ifeq ($(BR2_ENABLE_LOCALE),y)
363 ifeq ($(BR2_ENABLE_LOCALE_PREGENERATED),y)
364 $(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
365 else
366 $(SED) 's,^.*UCLIBC_HAS_LOCALE.*,UCLIBC_HAS_LOCALE=y\nUCLIBC_PREGENERATED_LOCALE_DATA=n\nUCLIBC_DOWNLOAD_PREGENERATED_LOCALE_DATA=n\nUCLIBC_HAS_XLOCALE=y\nUCLIBC_HAS_GLIBC_DIGIT_GROUPING=n\n,g' $(UCLIBC_DIR)/.oldconfig
367 endif
368 $(SED) 's,.*UCLIBC_HAS_WCHAR.*,UCLIBC_HAS_WCHAR=y,g' $(UCLIBC_DIR)/.oldconfig
369 else
370 $(SED) 's,^.*UCLIBC_HAS_LOCALE.*,UCLIBC_HAS_LOCALE=n,g' $(UCLIBC_DIR)/.oldconfig
371 $(SED) 's,.*UCLIBC_HAS_WCHAR.*,UCLIBC_HAS_WCHAR=n,g' $(UCLIBC_DIR)/.oldconfig
372 endif
373 ifeq ($(BR2_USE_WCHAR),y)
374 $(SED) 's,^.*UCLIBC_HAS_WCHAR.*,UCLIBC_HAS_WCHAR=y,g' $(UCLIBC_DIR)/.oldconfig
375 else
376 $(SED) 's,^.*UCLIBC_HAS_WCHAR.*,UCLIBC_HAS_WCHAR=n,g' $(UCLIBC_DIR)/.oldconfig
377 endif
378 ifeq ($(BR2_UCLIBC_PROGRAM_INVOCATION),y)
379 $(SED) 's,^.*UCLIBC_HAS_PROGRAM_INVOCATION_NAME.*,UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y,g' $(UCLIBC_DIR)/.oldconfig
380 else
381 $(SED) 's,^.*UCLIBC_HAS_PROGRAM_INVOCATION_NAME.*,UCLIBC_HAS_PROGRAM_INVOCATION_NAME=n,g' $(UCLIBC_DIR)/.oldconfig
382 endif
383 ifeq ("$(KERNEL_ARCH)","i386")
384 $(SED) '/CONFIG_GENERIC_386/d' \
385 -e '/CONFIG_[0-9]86/d' \
386 -e '/CONFIG_[0-9]86MMX/d' \
387 -e '/CONFIG_PENTIUM.*/d' \
388 -e '/CONFIG_K[0-9]/d' \
389 -e '/CONFIG_ELAN/d' \
390 -e '/CONFIG_CRUSOE/d' \
391 -e '/CONFIG_WINCHIP*/d' \
392 -e '/CONFIG_CYRIX*/d' \
393 -e '/CONFIG_NEHEMIAH/d' $(UCLIBC_DIR)/.oldconfig
394 /bin/echo "# CONFIG_GENERIC_386 is not set" >> $(UCLIBC_DIR)/.oldconfig
395 /bin/echo "# CONFIG_386 is not set" >> $(UCLIBC_DIR)/.oldconfig
396 /bin/echo "# CONFIG_486 is not set" >> $(UCLIBC_DIR)/.oldconfig
397 /bin/echo "# CONFIG_586 is not set" >> $(UCLIBC_DIR)/.oldconfig
398 /bin/echo "# CONFIG_586MMX is not set" >> $(UCLIBC_DIR)/.oldconfig
399 /bin/echo "# CONFIG_686 is not set" >> $(UCLIBC_DIR)/.oldconfig
400 /bin/echo "# CONFIG_PENTIUMII is not set" >> $(UCLIBC_DIR)/.oldconfig
401 /bin/echo "# CONFIG_PENTIUMIII is not set" >> $(UCLIBC_DIR)/.oldconfig
402 /bin/echo "# CONFIG_PENTIUM4 is not set" >> $(UCLIBC_DIR)/.oldconfig
403 /bin/echo "# CONFIG_K6 is not set" >> $(UCLIBC_DIR)/.oldconfig
404 /bin/echo "# CONFIG_K7 is not set" >> $(UCLIBC_DIR)/.oldconfig
405 /bin/echo "# CONFIG_ELAN is not set" >> $(UCLIBC_DIR)/.oldconfig
406 /bin/echo "# CONFIG_CRUSOE is not set" >> $(UCLIBC_DIR)/.oldconfig
407 /bin/echo "# CONFIG_WINCHIPC6 is not set" >> $(UCLIBC_DIR)/.oldconfig
408 /bin/echo "# CONFIG_WINCHIP2 is not set" >> $(UCLIBC_DIR)/.oldconfig
409 /bin/echo "# CONFIG_CYRIXIII is not set" >> $(UCLIBC_DIR)/.oldconfig
410 /bin/echo "# CONFIG_NEHEMIAH is not set" >> $(UCLIBC_DIR)/.oldconfig
411 ifeq ($(BR2_x86_i386),y)
412 $(SED) 's,# CONFIG_386 is not set,CONFIG_386=y,g' $(UCLIBC_DIR)/.oldconfig
413 endif
414 ifeq ($(BR2_x86_i486),y)
415 $(SED) 's,# CONFIG_486 is not set,CONFIG_486=y,g' $(UCLIBC_DIR)/.oldconfig
416 endif
417 ifeq ($(BR2_x86_i586),y)
418 $(SED) 's,# CONFIG_586 is not set,CONFIG_586=y,g' $(UCLIBC_DIR)/.oldconfig
419 endif
420 ifeq ($(BR2_x86_i686),y)
421 $(SED) 's,# CONFIG_686 is not set,CONFIG_686=y,g' $(UCLIBC_DIR)/.oldconfig
422 endif
423 endif
424 $(SED) '/CONFIG_DOSTRIP/d' -e '/DOSTRIP/d' $(UCLIBC_DIR)/.oldconfig
425 /bin/echo "# DOSTRIP is not set" >> $(UCLIBC_DIR)/.oldconfig
426 ifneq ($(BR2_STRIP_none),y)
427 $(SED) 's/.*DOSTRIP.*/DOSTRIP=y/' $(UCLIBC_DIR)/.oldconfig
428 endif
429 ifeq ($(findstring y,$(BR2_GCC_CROSS_CXX)$(BR2_GCC_SHARED_LIBGCC)),y)
430 $(SED) 's/.*CONFIG_UCLIBC_CTOR_DTOR.*/CONFIG_UCLIBC_CTOR_DTOR=y/' $(UCLIBC_DIR)/.oldconfig
431 endif
432 $(SED) '/HAVE_NO_SSP/d' -e '/UCLIBC_HAS_SSP/d' \
433 -e '/UCLIBC_HAS_SSP_COMPAT/d' -e '/SSP_QUICK_CANARY/d' \
434 -e '/PROPOLICE_BLOCK_/d' -e '/UCLIBC_BUILD_SSP/d' $(UCLIBC_DIR)/.oldconfig
435 ifeq ($(BR2_ENABLE_SSP),y)
436 /bin/echo "# HAVE_NO_SSP is not set" >> $(UCLIBC_DIR)/.oldconfig
437 /bin/echo "UCLIBC_HAS_SSP=y" >> $(UCLIBC_DIR)/.oldconfig
438 /bin/echo "# UCLIBC_HAS_SSP_COMPAT is not set" >> $(UCLIBC_DIR)/.oldconfig
439 /bin/echo "# SSP_QUICK_CANARY is not set" >> $(UCLIBC_DIR)/.oldconfig
440 /bin/echo "PROPOLICE_BLOCK_ABRT=y" >> $(UCLIBC_DIR)/.oldconfig
441 /bin/echo "UCLIBC_BUILD_SSP=y" >> $(UCLIBC_DIR)/.oldconfig
442 else
443 /bin/echo "HAVE_NO_SSP=y" >> $(UCLIBC_DIR)/.oldconfig
444 /bin/echo "# UCLIBC_HAS_SSP is not set" >> $(UCLIBC_DIR)/.oldconfig
445 endif
448 $(UCLIBC_DIR)/.config: $(UCLIBC_DIR)/.oldconfig
449 cp -dpf $(UCLIBC_DIR)/.oldconfig $(UCLIBC_DIR)/.config
450 $(INSTALL) -d $(TOOL_BUILD_DIR)/uClibc_dev/usr/include \
451 $(TOOL_BUILD_DIR)/uClibc_dev/usr/lib \
452 $(TOOL_BUILD_DIR)/uClibc_dev/lib
453 $(MAKE1) -C $(UCLIBC_DIR) \
454 PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \
455 DEVEL_PREFIX=/usr/ \
456 RUNTIME_PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \
457 HOSTCC="$(HOSTCC)" \
458 BUILD_CFLAGS="$(HOST_CFLAGS)" \
459 BUILD_LDFLAGS="$(HOST_LDFLAGS)" \
460 oldconfig
461 touch -c $@
463 $(UCLIBC_DIR)/.configured: $(LINUX_HEADERS_DIR)/.configured $(UCLIBC_DIR)/.config
464 ifeq ($(findstring y,$(BR2_UCLIBC_VERSION_0_9_27)$(BR2_UCLIBC_VERSION_0_9_28_3)$(BR2_UCLIBC_VERSION_0_9_29)),y)
465 # older uClibc without the signum.h generation fix
466 set -x && $(MAKE1) -C $(UCLIBC_DIR) \
467 PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \
468 DEVEL_PREFIX=/usr/ \
469 RUNTIME_PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \
470 HOSTCC="$(HOSTCC)" \
471 BUILD_CFLAGS="$(HOST_CFLAGS)" \
472 BUILD_LDFLAGS="$(HOST_LDFLAGS)" \
473 UCLIBC_EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \
474 UCLIBC_EXTRA_CFLAGS="$(TARGET_CFLAGS) $(__UCLIBC_EXTRA_TARGET_CFLAGS)" \
475 pregen install_dev
476 else
477 set -x && $(MAKE) -C $(UCLIBC_DIR) \
478 PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \
479 DEVEL_PREFIX=/usr/ \
480 RUNTIME_PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \
481 HOSTCC="$(HOSTCC)" \
482 BUILD_CFLAGS="$(HOST_CFLAGS)" \
483 BUILD_LDFLAGS="$(HOST_LDFLAGS)" \
484 UCLIBC_EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \
485 UCLIBC_EXTRA_CFLAGS="$(TARGET_CFLAGS) $(__UCLIBC_EXTRA_TARGET_CFLAGS)" \
486 install_headers
487 endif
488 # Install the kernel headers to the first stage gcc include dir
489 ifeq ($(LINUX_HEADERS_IS_KERNEL),y)
490 if [ ! -f $(TOOL_BUILD_DIR)/uClibc_dev/usr/include/linux/version.h ]; then \
491 cp -pLR $(LINUX_HEADERS_DIR)/include/* \
492 $(TOOL_BUILD_DIR)/uClibc_dev/usr/include/; \
494 else
495 if [ ! -f $(STAGING_DIR)/usr/include/linux/version.h ]; then \
496 cp -pLR $(LINUX_HEADERS_DIR)/include/asm \
497 $(TOOL_BUILD_DIR)/uClibc_dev/usr/include/; \
498 cp -pLR $(LINUX_HEADERS_DIR)/include/linux \
499 $(TOOL_BUILD_DIR)/uClibc_dev/usr/include/; \
500 if [ -d $(LINUX_HEADERS_DIR)/include/asm-generic ]; then \
501 cp -pLR $(LINUX_HEADERS_DIR)/include/asm-generic \
502 $(TOOL_BUILD_DIR)/uClibc_dev/usr/include/; \
503 fi; \
505 endif
506 touch $@
508 $(UCLIBC_DIR)/lib/libc.a: $(UCLIBC_DIR)/.configured $(gcc_initial) $(LIBFLOAT_TARGET)
509 $(MAKE) -C $(UCLIBC_DIR) \
510 PREFIX= \
511 DEVEL_PREFIX=/ \
512 RUNTIME_PREFIX=/ \
513 HOSTCC="$(HOSTCC)" \
514 BUILD_CFLAGS="$(HOST_CFLAGS)" \
515 BUILD_LDFLAGS="$(HOST_LDFLAGS)" \
516 UCLIBC_EXTRA_LDFLAGS="$(TARGET_LDFLAGS) $(TARGET_LD_FLAGS)" \
517 UCLIBC_EXTRA_CFLAGS="$(TARGET_CFLAGS) $(TARGET_CC_FLAGS) $(__UCLIBC_EXTRA_TARGET_CFLAGS)" \
520 uclibc-menuconfig: host-sed $(UCLIBC_DIR)/.config
521 $(MAKE1) -C $(UCLIBC_DIR) \
522 PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \
523 DEVEL_PREFIX=/usr/ \
524 RUNTIME_PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \
525 HOSTCC="$(HOSTCC)" \
526 BUILD_CFLAGS="$(HOST_CFLAGS)" \
527 BUILD_LDFLAGS="$(HOST_LDFLAGS)" \
528 menuconfig && \
529 touch -c $(UCLIBC_DIR)/.config
531 BR2_UCLIBC_CONFIG_FOR_BUILDROOT=$(BASE_DIR)/.buildroot.uclibc_config
532 $(BR2_UCLIBC_CONFIG_FOR_BUILDROOT): $(dependencies) host-sed $(UCLIBC_DIR)/.config
533 # Create BR2__UCLIBC_SYM=val
534 cat $(UCLIBC_DIR)/.config > $(BR2_UCLIBC_CONFIG_FOR_BUILDROOT)
535 $(SED) '/#/d' -e '/^$$/d' -e 's,\([^=]*\)=\(.*\),BR2__UCLIBC_\1=\2,g' \
536 $(BR2_UCLIBC_CONFIG_FOR_BUILDROOT)
537 touch -c $@
539 ifeq ($(BR2__UCLIBC_HAVE_DOT_CONFIG),)
540 ifeq ($(filter uclibc-menuconfig,$(MAKECMDGOALS)),)
541 ifneq ($(wildcard $(UCLIBC_CONFIG_FILE)),)
542 ifeq ($(findstring host-,$(MAKECMDGOALS)),)
543 include $(BR2_UCLIBC_CONFIG_FOR_BUILDROOT)
544 endif
545 endif
546 endif
547 endif
549 $(STAGING_DIR)/usr/lib/libc.a: | $(UCLIBC_DIR)/lib/libc.a
550 ifneq ($(BR2_TOOLCHAIN_SYSROOT),y)
551 $(MAKE) -C $(UCLIBC_DIR) \
552 PREFIX= \
553 DEVEL_PREFIX=$(STAGING_DIR)/ \
554 RUNTIME_PREFIX=$(STAGING_DIR)/ \
555 install_runtime install_dev
556 else
557 $(MAKE) -C $(UCLIBC_DIR) \
558 PREFIX=$(STAGING_DIR) \
559 DEVEL_PREFIX=/usr/ \
560 RUNTIME_PREFIX=/ \
561 HOSTCC="$(HOSTCC)" \
562 BUILD_CFLAGS="$(HOST_CFLAGS)" \
563 BUILD_LDFLAGS="$(HOST_LDFLAGS)" \
564 UCLIBC_EXTRA_LDFLAGS="$(TARGET_LDFLAGS) $(TARGET_LD_FLAGS)" \
565 UCLIBC_EXTRA_CFLAGS="$(TARGET_CFLAGS) $(TARGET_CC_FLAGS) $(__UCLIBC_EXTRA_TARGET_CFLAGS)" \
566 install_runtime install_dev
567 endif
568 # Install the kernel headers to the staging dir if necessary
569 ifeq ($(LINUX_HEADERS_IS_KERNEL),y)
570 if [ ! -f $(STAGING_DIR)/usr/include/linux/version.h ]; then \
571 cp -pLR $(LINUX_HEADERS_DIR)/include/* \
572 $(STAGING_DIR)/usr/include/; \
574 else
575 if [ ! -f $(STAGING_DIR)/usr/include/linux/version.h ]; then \
576 cp -pLR $(LINUX_HEADERS_DIR)/include/asm \
577 $(STAGING_DIR)/usr/include/; \
578 cp -pLR $(LINUX_HEADERS_DIR)/include/linux \
579 $(STAGING_DIR)/usr/include/; \
580 if [ -d $(LINUX_HEADERS_DIR)/include/asm-generic ]; then \
581 cp -pLR $(LINUX_HEADERS_DIR)/include/asm-generic \
582 $(STAGING_DIR)/usr/include/; \
583 fi; \
585 endif
586 # Build the host utils. Need to add an install target...
587 ifeq ($(BR2_UCLIBC_VERSION_SNAPSHOT),y)
588 $(MAKE) -C $(UCLIBC_DIR)/ \
589 PREFIX=$(STAGING_DIR) \
590 DEVEL_PREFIX=/usr/ \
591 RUNTIME_PREFIX=/ \
592 HOSTCC="$(HOSTCC)" \
593 install_hostutils
594 touch -c $@
595 else
596 $(MAKE1) -C $(UCLIBC_DIR)/utils \
597 PREFIX=$(STAGING_DIR) \
598 HOSTCC="$(HOSTCC)" \
599 hostutils
600 # install readelf and eventually other host-utils
601 $(INSTALL) -m0755 -D $(UCLIBC_DIR)/utils/readelf.host $(STAGING_DIR)/usr/bin/readelf
602 ln -sf readelf $(STAGING_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-readelf
603 ln -sf readelf $(STAGING_DIR)/usr/bin/$(GNU_TARGET_NAME)-readelf
604 ifeq ($(BR2__UCLIBC_HAVE_SHARED),y)
605 $(INSTALL) -m0755 -D $(UCLIBC_DIR)/utils/ldd.host $(STAGING_DIR)/usr/bin/ldd
606 ln -sf ldd $(STAGING_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-ldd
607 ln -sf ldd $(STAGING_DIR)/usr/bin/$(GNU_TARGET_NAME)-ldd
608 $(INSTALL) -m0755 -D $(UCLIBC_DIR)/utils/ldconfig.host $(STAGING_DIR)/usr/sbin/ldconfig
609 ln -sf ldconfig $(STAGING_DIR)/usr/sbin/$(REAL_GNU_TARGET_NAME)-ldconfig
610 ln -sf ldconfig $(STAGING_DIR)/usr/sbin/$(GNU_TARGET_NAME)-ldconfig
611 endif
612 ifeq ($(BR2__UCLIBC_UCLIBC_HAS_LOCALE),y)
613 if [ -r $(UCLIBC_DIR)/utils/iconv.host ]; then \
614 $(INSTALL) -m0755 -D $(UCLIBC_DIR)/utils/iconv.host $(STAGING_DIR)/usr/bin/iconv; \
615 ln -sf iconv $(STAGING_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-iconv; \
616 ln -sf iconv $(STAGING_DIR)/usr/bin/$(GNU_TARGET_NAME)-iconv; \
618 if [ -r $(UCLIBC_DIR)/utils/locale.host ]; then \
619 $(INSTALL) -m0755 -D $(UCLIBC_DIR)/utils/locale.host $(STAGING_DIR)/usr/bin/locale; \
620 ln -sf locale $(STAGING_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-locale; \
621 ln -sf locale $(STAGING_DIR)/usr/bin/$(GNU_TARGET_NAME)-locale; \
623 endif
624 touch -c $@
625 endif
627 # extra paranoia
628 ifneq ($(TARGET_DIR),)
629 $(TARGET_DIR)/lib/libc.so.0: | $(STAGING_DIR)/usr/lib/libc.a
630 $(MAKE) -C $(UCLIBC_DIR) \
631 PREFIX=$(TARGET_DIR) \
632 DEVEL_PREFIX=/usr/ \
633 RUNTIME_PREFIX=/ \
634 UCLIBC_EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \
635 UCLIBC_EXTRA_CFLAGS="$(TARGET_CFLAGS) $(__UCLIBC_EXTRA_TARGET_CFLAGS)" \
636 install_runtime
637 touch -c $@
639 $(TARGET_DIR)/usr/bin/ldd: $(cross_compiler) $(TARGET_DIR)/lib/libc.so.0
640 $(MAKE) -C $(UCLIBC_DIR) \
641 PREFIX=$(TARGET_DIR) \
642 DEVEL_PREFIX=/usr/ \
643 RUNTIME_PREFIX=/ \
644 UCLIBC_EXTRA_LDFLAGS="$(TARGET_LDFLAGS) $(TARGET_LD_FLAGS)" \
645 UCLIBC_EXTRA_CFLAGS="$(TARGET_CFLAGS) $(TARGET_CC_FLAGS) $(__UCLIBC_EXTRA_TARGET_CFLAGS)" \
646 install_utils
647 ifeq ($(BR2_CROSS_TOOLCHAIN_TARGET_UTILS),y)
648 $(INSTALL) -m0755 -D $(TARGET_DIR)/usr/bin/ldd \
649 $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/target_utils/ldd
650 endif
651 touch -c $@
653 endif
655 uclibc: $(cross_compiler) $(STAGING_DIR)/usr/lib/libc.a
657 uclibc-source: $(DL_DIR)/$(UCLIBC_SOURCE)
659 uclibc-unpacked: $(UCLIBC_DIR)/.unpacked
661 uclibc-config: $(UCLIBC_DIR)/.config
663 uclibc-oldconfig: $(UCLIBC_DIR)/.oldconfig
665 uclibc-update: uclibc-config
666 cp -f $(UCLIBC_DIR)/.config $(UCLIBC_CONFIG_FILE)
668 uclibc-configured: kernel-headers $(UCLIBC_DIR)/.configured
670 uclibc-configured-source: uclibc-source
672 uclibc-clean:
673 -$(MAKE1) -C $(UCLIBC_DIR) clean
674 $(patsubst %,rm -f %, $(wildcard $(STAGING_DIR)/usr/bin/*readelf \
675 $(STAGING_DIR)/usr/bin/*ldd \
676 $(STAGING_DIR)/usr/bin/*ldconfig \
677 $(STAGING_DIR)/usr/bin/*iconv \
678 $(STAGING_DIR)/usr/bin/*locale \
679 $(STAGING_DIR)/usr/sbin/*readelf \
680 $(STAGING_DIR)/usr/sbin/*ldd \
681 $(STAGING_DIR)/usr/sbin/*ldconfig \
682 $(STAGING_DIR)/usr/sbin/*iconv \
683 $(STAGING_DIR)/usr/sbin/*locale \
684 $(TARGET_DIR)/usr/bin/*readelf \
685 $(TARGET_DIR)/usr/bin/*ldd \
686 $(TARGET_DIR)/usr/bin/*ldconfig \
687 $(TARGET_DIR)/usr/bin/*iconv \
688 $(TARGET_DIR)/usr/bin/*locale \
689 $(TARGET_DIR)/usr/sbin/*readelf \
690 $(TARGET_DIR)/usr/sbin/*ldd \
691 $(TARGET_DIR)/usr/sbin/*ldconfig \
692 $(TARGET_DIR)/usr/sbin/*iconv \
693 $(TARGET_DIR)/usr/sbin/*locale))
694 rm -f $(UCLIBC_DIR)/.config $(UCLIBC_DIR)/.configured
696 uclibc-dirclean:
697 rm -rf $(UCLIBC_DIR)
699 uclibc-target-utils: $(TARGET_DIR)/usr/bin/ldd
701 uclibc-target-utils-source: $(DL_DIR)/$(UCLIBC_SOURCE)
703 #############################################################
705 # uClibc for the target
707 #############################################################
709 $(TARGET_DIR)/usr/lib/libc.a: | $(STAGING_DIR)/usr/lib/libc.a
710 $(MAKE) -C $(UCLIBC_DIR) \
711 PREFIX=$(TARGET_DIR) \
712 DEVEL_PREFIX=/usr/ \
713 RUNTIME_PREFIX=/ \
714 UCLIBC_EXTRA_LDFLAGS="$(TARGET_LDFLAGS)" \
715 UCLIBC_EXTRA_CFLAGS="$(TARGET_CFLAGS) $(__UCLIBC_EXTRA_TARGET_CFLAGS)" \
716 install_dev
717 # Install the kernel headers to the target dir if necessary
718 ifeq ($(LINUX_HEADERS_IS_KERNEL),y)
719 if [ ! -f $(TARGET_DIR)/usr/include/linux/version.h ]; then \
720 cp -pLR $(LINUX_HEADERS_DIR)/include/* \
721 $(TARGET_DIR)/usr/include/; \
723 else
724 if [ ! -f $(TARGET_DIR)/usr/include/linux/version.h ]; then \
725 cp -pLR $(LINUX_HEADERS_DIR)/include/asm \
726 $(TARGET_DIR)/usr/include/; \
727 cp -pLR $(LINUX_HEADERS_DIR)/include/linux \
728 $(TARGET_DIR)/usr/include/; \
729 if [ -d $(LINUX_HEADERS_DIR)/include/asm-generic ]; then \
730 cp -pLR $(LINUX_HEADERS_DIR)/include/asm-generic \
731 $(TARGET_DIR)/usr/include/; \
732 fi; \
734 endif
735 touch -c $@
737 ifeq ($(BR2__UCLIBC_HAVE_SHARED),y)
738 UCLIBC_TARGETS+=$(TARGET_DIR)/lib/libc.so.0
739 ifeq ($(BR2_CROSS_TOOLCHAIN_TARGET_UTILS),y)
740 UCLIBC_TARGETS+=$(TARGET_DIR)/usr/bin/ldd
741 endif
742 endif
744 ifeq ($(BR2_HAVE_INCLUDES),y)
745 UCLIBC_TARGETS+=$(TARGET_DIR)/usr/lib/libc.a
746 endif
748 uclibc_target: cross_compiler uclibc $(UCLIBC_TARGETS)
749 uclibc_target-clean:
750 rm -rf $(TARGET_DIR)/usr/include $(UCLIBC_TARGETS) \
751 $(TARGET_DIR)/usr/lib/libc.a $(TARGET_DIR)/usr/bin/ldd
753 uclibc_target-dirclean:
754 rm -rf $(TARGET_DIR)/usr/include
756 endif