1 #############################################################
3 # uClibc (the C library)
5 #############################################################
7 ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y)
9 # specifying UCLIBC_CONFIG_FILE on the command-line overrides the .config
11 ifndef UCLIBC_CONFIG_FILE
12 UCLIBC_CONFIG_FILE=$(subst ",, $(strip $(BR2_UCLIBC_CONFIG)))
16 ifeq ($(BR2_UCLIBC_VERSION_SNAPSHOT),y)
17 # Be aware that this changes daily....
19 UCLIBC_DIR:=$(TOOL_BUILD_DIR)/uClibc
20 UCLIBC_SOURCE:=uClibc-$(strip $(subst ",, $(BR2_USE_UCLIBC_SNAPSHOT))).tar.bz2
22 UCLIBC_SITE:=http://www.uclibc.org/downloads/snapshots
23 UCLIBC_PATCH_DIR:=toolchain/uClibc/
26 ifeq ($(BR2_UCLIBC_VERSION_0_9_29),y)
29 ifeq ($(BR2_UCLIBC_VERSION_0_9_28_3),y)
32 ifeq ($(BR2_UCLIBC_VERSION_0_9_28),y)
35 UCLIBC_SITE:=http://www.uclibc.org/downloads
37 ifeq ($(BR2_TOOLCHAIN_NORMAL),)
38 UCLIBC_SITE:=$(VENDOR_SITE)
41 UCLIBC_OFFICIAL_VERSION:=$(UCLIBC_VER)$(VENDOR_SUFFIX)$(VENDOR_UCLIBC_RELEASE)
44 ifeq ($(BR2_TOOLCHAIN_NORMAL),y)
45 UCLIBC_PATCH_DIR:=toolchain/uClibc/
47 UCLIBC_PATCH_DIR:=$(VENDOR_PATCH_DIR)/uClibc-$(UCLIBC_OFFICIAL_VERSION)
50 UCLIBC_DIR:=$(TOOL_BUILD_DIR)/uClibc-$(UCLIBC_OFFICIAL_VERSION)
51 UCLIBC_SOURCE:=uClibc-$(UCLIBC_OFFICIAL_VERSION).tar.bz2
56 UCLIBC_TARGET_ARCH:=$(shell $(SHELL) -c "echo $(ARCH) | sed \
59 -e 's/sparc.*/sparc/' \
62 -e 's/ppc/powerpc/g' \
63 -e 's/v850.*/v850/g' \
64 -e 's/sh[234].*/sh/' \
66 -e 's/mipsel.*/mips/' \
68 -e 's/nios2.*/nios2/' \
70 # just handle the ones that can be big or little
71 UCLIBC_TARGET_ENDIAN:=$(shell $(SHELL) -c "echo $(ARCH) | sed \
74 -e 's/mipsel/LITTLE/' \
78 ifneq ($(UCLIBC_TARGET_ENDIAN),LITTLE)
79 ifneq ($(UCLIBC_TARGET_ENDIAN),BIG)
80 UCLIBC_TARGET_ENDIAN:=
83 ifeq ($(UCLIBC_TARGET_ENDIAN),LITTLE)
84 UCLIBC_NOT_TARGET_ENDIAN:=BIG
86 UCLIBC_NOT_TARGET_ENDIAN:=LITTLE
89 ARM_CONFIG:=CONFIG_$(strip $(subst ",, $(BR2_ARM_TYPE)))
92 $(DL_DIR)/$(UCLIBC_SOURCE):
93 $(WGET) -P $(DL_DIR) $(UCLIBC_SITE)/$(UCLIBC_SOURCE)
95 ifneq ($(BR2_ENABLE_LOCALE),)
96 UCLIBC_SITE_LOCALE:=http://www.uclibc.org/downloads
97 UCLIBC_SOURCE_LOCALE:=uClibc-locale-030818.tgz
99 $(DL_DIR)/$(UCLIBC_SOURCE_LOCALE):
100 $(WGET) -P $(DL_DIR) $(UCLIBC_SITE_LOCALE)/$(UCLIBC_SOURCE_LOCALE)
102 UCLIBC_LOCALE_DATA:=$(DL_DIR)/$(UCLIBC_SOURCE_LOCALE)
107 uclibc-unpacked: $(UCLIBC_DIR)/.unpacked
108 $(UCLIBC_DIR)/.unpacked: $(DL_DIR)/$(UCLIBC_SOURCE) $(UCLIBC_LOCALE_DATA)
109 mkdir -p $(TOOL_BUILD_DIR)
111 $(UCLIBC_CAT) $(DL_DIR)/$(UCLIBC_SOURCE) | tar -C $(TOOL_BUILD_DIR) $(TAR_OPTIONS) -
112 ifneq ($(BR2_UCLIBC_VERSION_SNAPSHOT),y)
113 toolchain/patch-kernel.sh $(UCLIBC_DIR) $(UCLIBC_PATCH_DIR) uClibc-$(UCLIBC_OFFICIAL_VERSION)-\*.patch
115 toolchain/patch-kernel.sh $(UCLIBC_DIR) $(UCLIBC_PATCH_DIR) uClibc.\*.patch
117 ifneq ($(BR2_ENABLE_LOCALE),)
118 cp -dpf $(DL_DIR)/$(UCLIBC_SOURCE_LOCALE) $(UCLIBC_DIR)/extra/locale/
122 # Some targets may wish to provide their own UCLIBC_CONFIG_FILE...
123 $(UCLIBC_DIR)/.oldconfig: $(UCLIBC_DIR)/.unpacked $(UCLIBC_CONFIG_FILE)
124 cp -f $(UCLIBC_CONFIG_FILE) $(UCLIBC_DIR)/.oldconfig
125 $(SED) 's,^CROSS_COMPILER_PREFIX=.*,CROSS_COMPILER_PREFIX="$(TARGET_CROSS)",g' \
126 -e 's,# TARGET_$(UCLIBC_TARGET_ARCH) is not set,TARGET_$(UCLIBC_TARGET_ARCH)=y,g' \
127 -e 's,^TARGET_ARCH="none",TARGET_ARCH=\"$(UCLIBC_TARGET_ARCH)\",g' \
128 -e 's,^KERNEL_SOURCE=.*,KERNEL_SOURCE=\"$(LINUX_HEADERS_DIR)\",g' \
129 -e 's,^KERNEL_HEADERS=.*,KERNEL_HEADERS=\"$(LINUX_HEADERS_DIR)/include\",g' \
130 -e 's,^RUNTIME_PREFIX=.*,RUNTIME_PREFIX=\"/\",g' \
131 -e 's,^DEVEL_PREFIX=.*,DEVEL_PREFIX=\"/usr/\",g' \
132 -e 's,^SHARED_LIB_LOADER_PREFIX=.*,SHARED_LIB_LOADER_PREFIX=\"/lib\",g' \
133 $(UCLIBC_DIR)/.oldconfig
134 ifeq ($(UCLIBC_TARGET_ARCH),arm)
135 $(SED) 's/^\(CONFIG_[^_]*[_]*ARM[^=]*\)=.*/# \1 is not set/g' \
136 $(UCLIBC_DIR)/.oldconfig
137 $(SED) 's/^.*$(ARM_CONFIG).*/$(ARM_CONFIG)=y/g' $(UCLIBC_DIR)/.oldconfig
138 ifeq ($(BR2_ARM_EABI),y)
139 /bin/echo "# CONFIG_ARM_OABI is not set" >> $(UCLIBC_DIR)/.oldconfig
140 /bin/echo "CONFIG_ARM_EABI=y" >> $(UCLIBC_DIR)/.oldconfig
142 ifeq ($(BR2_ARM_OABI),y)
143 /bin/echo "CONFIG_ARM_OABI=y" >> $(UCLIBC_DIR)/.oldconfig
144 /bin/echo "# CONFIG_ARM_EABI is not set" >> $(UCLIBC_DIR)/.oldconfig
147 ifneq ($(UCLIBC_TARGET_ENDIAN),)
148 # The above doesn't work for me, so redo
149 $(SED) 's/.*\(ARCH_$(UCLIBC_NOT_TARGET_ENDIAN)_ENDIAN\).*/# \1 is not set/g' \
150 -e 's/.*\(ARCH_WANTS_$(UCLIBC_NOT_TARGET_ENDIAN)_ENDIAN\).*/# \1 is not set/g' \
151 -e 's/.*\(ARCH_$(UCLIBC_TARGET_ENDIAN)_ENDIAN\).*/\1=y/g' \
152 -e 's/.*\(ARCH_WANTS_$(UCLIBC_TARGET_ENDIAN)_ENDIAN\).*/\1=y/g' \
153 $(UCLIBC_DIR)/.oldconfig
155 ifeq ($(BR2_LARGEFILE),y)
156 $(SED) 's,.*UCLIBC_HAS_LFS.*,UCLIBC_HAS_LFS=y,g' $(UCLIBC_DIR)/.oldconfig
158 $(SED) 's,.*UCLIBC_HAS_LFS.*,UCLIBC_HAS_LFS=n,g' $(UCLIBC_DIR)/.oldconfig
159 $(SED) '/.*UCLIBC_HAS_FOPEN_LARGEFILE_MODE.*/d' $(UCLIBC_DIR)/.oldconfig
160 echo "# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set" >> $(UCLIBC_DIR)/.oldconfig
162 ifeq ($(BR2_INET_IPV6),y)
163 $(SED) 's,^.*UCLIBC_HAS_IPV6.*,UCLIBC_HAS_IPV6=y,g' $(UCLIBC_DIR)/.oldconfig
165 $(SED) 's,^.*UCLIBC_HAS_IPV6.*,UCLIBC_HAS_IPV6=n,g' $(UCLIBC_DIR)/.oldconfig
167 ifeq ($(BR2_INET_RPC),y)
168 $(SED) 's,^.*UCLIBC_HAS_RPC.*,UCLIBC_HAS_RPC=y,g' \
169 -e 's,^.*UCLIBC_HAS_FULL_RPC.*,UCLIBC_HAS_FULL_RPC=y,g' \
170 -e 's,^.*UCLIBC_HAS_REENTRANT_RPC.*,UCLIBC_HAS_REENTRANT_RPC=y,g' \
171 $(UCLIBC_DIR)/.oldconfig
173 $(SED) 's,^.*UCLIBC_HAS_RPC.*,UCLIBC_HAS_RPC=n,g' \
174 -e 's,^.*UCLIBC_HAS_FULL_RPC.*,UCLIBC_HAS_FULL_RPC=n,g' \
175 -e 's,^.*UCLIBC_HAS_REENTRANT_RPC.*,UCLIBC_HAS_REENTRANT_RPC=n,g' \
176 $(UCLIBC_DIR)/.oldconfig
178 ifeq ($(BR2_SOFT_FLOAT),y)
179 $(SED) 's,.*UCLIBC_HAS_FPU.*,UCLIBC_HAS_FPU=n,g' \
180 -e 's,^[^_]*HAS_FPU.*,HAS_FPU=n,g' \
181 -e 's,.*UCLIBC_HAS_FLOATS.*,UCLIBC_HAS_FLOATS=y,g' \
182 -e 's,.*DO_C99_MATH.*,DO_C99_MATH=y,g' \
183 $(UCLIBC_DIR)/.oldconfig
184 #$(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
186 $(SED) '/UCLIBC_HAS_FLOATS/d' \
187 -e 's,.*UCLIBC_HAS_FPU.*,UCLIBC_HAS_FPU=y\nHAS_FPU=y\nUCLIBC_HAS_FLOATS=y\n,g' \
188 $(UCLIBC_DIR)/.oldconfig
190 $(SED) '/UCLIBC_HAS_THREADS/d' $(UCLIBC_DIR)/.oldconfig
191 $(SED) '/LINUXTHREADS/d' $(UCLIBC_DIR)/.oldconfig
192 $(SED) '/LINUXTHREADS_OLD/d' $(UCLIBC_DIR)/.oldconfig
193 $(SED) '/PTHREADS_DEBUG_SUPPORT/d' $(UCLIBC_DIR)/.oldconfig
194 $(SED) '/UCLIBC_HAS_THREADS_NATIVE/d' $(UCLIBC_DIR)/.oldconfig
195 ifeq ($(BR2_PTHREADS_NONE),y)
196 echo "# UCLIBC_HAS_THREADS is not set" >> $(UCLIBC_DIR)/.oldconfig
198 echo "UCLIBC_HAS_THREADS=y" >> $(UCLIBC_DIR)/.oldconfig
200 ifeq ($(BR2_PTHREADS),y)
201 echo "LINUXTHREADS=y" >> $(UCLIBC_DIR)/.oldconfig
203 echo "# LINUXTHREADS is not set" >> $(UCLIBC_DIR)/.oldconfig
205 ifeq ($(BR2_PTHREADS_OLD),y)
206 echo "LINUXTHREADS_OLD=y" >> $(UCLIBC_DIR)/.oldconfig
208 echo "# LINUXTHREADS_OLD is not set" >> $(UCLIBC_DIR)/.oldconfig
210 ifeq ($(BR2_PTHREADS_NATIVE),y)
211 echo "UCLIBC_HAS_THREADS_NATIVE=y" >> $(UCLIBC_DIR)/.oldconfig
213 echo "# UCLIBC_HAS_THREADS_NATIVE is not set" >> $(UCLIBC_DIR)/.oldconfig
215 ifeq ($(BR2_PTHREAD_DEBUG),y)
216 echo "PTHREADS_DEBUG_SUPPORT=y" >> $(UCLIBC_DIR)/.oldconfig
218 echo "# PTHREADS_DEBUG_SUPPORT is not set" >> $(UCLIBC_DIR)/.oldconfig
220 ifeq ($(BR2_ENABLE_LOCALE),y)
221 $(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
222 $(SED) 's,.*UCLIBC_HAS_WCHAR.*,UCLIBC_HAS_WCHAR=y,g' $(UCLIBC_DIR)/.oldconfig
224 $(SED) 's,^.*UCLIBC_HAS_LOCALE.*,UCLIBC_HAS_LOCALE=n,g' $(UCLIBC_DIR)/.oldconfig
225 $(SED) 's,.*UCLIBC_HAS_WCHAR.*,UCLIBC_HAS_WCHAR=n,g' $(UCLIBC_DIR)/.oldconfig
227 ifeq ($(BR2_USE_WCHAR),y)
228 $(SED) 's,^.*UCLIBC_HAS_WCHAR.*,UCLIBC_HAS_WCHAR=y,g' $(UCLIBC_DIR)/.oldconfig
230 $(SED) 's,^.*UCLIBC_HAS_WCHAR.*,UCLIBC_HAS_WCHAR=n,g' $(UCLIBC_DIR)/.oldconfig
232 ifeq ($(BR2_UCLIBC_PROGRAM_INVOCATION),y)
233 echo "UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y" >> $(UCLIBC_DIR)/.oldconfig
235 echo "# UCLIBC_HAS_PROGRAM_INVOCATION_NAME is not set" >> $(UCLIBC_DIR)/.oldconfig
237 ifeq ("$(KERNEL_ARCH)","i386")
238 /bin/echo "# CONFIG_GENERIC_386 is not set" >> $(UCLIBC_DIR)/.oldconfig
239 /bin/echo "# CONFIG_386 is not set" >> $(UCLIBC_DIR)/.oldconfig
240 /bin/echo "# CONFIG_486 is not set" >> $(UCLIBC_DIR)/.oldconfig
241 /bin/echo "# CONFIG_586 is not set" >> $(UCLIBC_DIR)/.oldconfig
242 /bin/echo "# CONFIG_586MMX is not set" >> $(UCLIBC_DIR)/.oldconfig
243 /bin/echo "# CONFIG_686 is not set" >> $(UCLIBC_DIR)/.oldconfig
244 /bin/echo "# CONFIG_PENTIUMII is not set" >> $(UCLIBC_DIR)/.oldconfig
245 /bin/echo "# CONFIG_PENTIUMIII is not set" >> $(UCLIBC_DIR)/.oldconfig
246 /bin/echo "# CONFIG_PENTIUM4 is not set" >> $(UCLIBC_DIR)/.oldconfig
247 /bin/echo "# CONFIG_K6 is not set" >> $(UCLIBC_DIR)/.oldconfig
248 /bin/echo "# CONFIG_K7 is not set" >> $(UCLIBC_DIR)/.oldconfig
249 /bin/echo "# CONFIG_ELAN is not set" >> $(UCLIBC_DIR)/.oldconfig
250 /bin/echo "# CONFIG_CRUSOE is not set" >> $(UCLIBC_DIR)/.oldconfig
251 /bin/echo "# CONFIG_WINCHIPC6 is not set" >> $(UCLIBC_DIR)/.oldconfig
252 /bin/echo "# CONFIG_WINCHIP2 is not set" >> $(UCLIBC_DIR)/.oldconfig
253 /bin/echo "# CONFIG_CYRIXIII is not set" >> $(UCLIBC_DIR)/.oldconfig
254 /bin/echo "# CONFIG_NEHEMIAH is not set" >> $(UCLIBC_DIR)/.oldconfig
255 ifeq ($(BR2_x86_i386),y)
256 $(SED) 's,# CONFIG_386 is not set,CONFIG_386=y,g' $(UCLIBC_DIR)/.oldconfig
258 ifeq ($(BR2_x86_i486),y)
259 $(SED) 's,# CONFIG_486 is not set,CONFIG_486=y,g' $(UCLIBC_DIR)/.oldconfig
261 ifeq ($(BR2_x86_i586),y)
262 $(SED) 's,# CONFIG_586 is not set,CONFIG_586=y,g' $(UCLIBC_DIR)/.oldconfig
264 ifeq ($(BR2_x86_i686),y)
265 $(SED) 's,# CONFIG_686 is not set,CONFIG_686=y,g' $(UCLIBC_DIR)/.oldconfig
269 $(UCLIBC_DIR)/.config: $(UCLIBC_DIR)/.oldconfig
270 cp -f $(UCLIBC_DIR)/.oldconfig $(UCLIBC_DIR)/.config
271 mkdir -p $(TOOL_BUILD_DIR)/uClibc_dev/usr/include
272 mkdir -p $(TOOL_BUILD_DIR)/uClibc_dev/usr/lib
273 mkdir -p $(TOOL_BUILD_DIR)/uClibc_dev/lib
274 $(MAKE1) -C $(UCLIBC_DIR) \
275 PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \
277 RUNTIME_PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \
282 $(UCLIBC_DIR)/.configured: $(UCLIBC_DIR)/.config
283 set -x && $(MAKE1) -C $(UCLIBC_DIR) \
284 PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \
286 RUNTIME_PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \
289 # Install the kernel headers to the first stage gcc include dir if necessary
290 ifeq ($(LINUX_HEADERS_IS_KERNEL),y)
291 if [ ! -f $(TOOL_BUILD_DIR)/uClibc_dev/usr/include/linux/version.h ] ; \
293 cp -pLR $(LINUX_HEADERS_DIR)/include/* $(TOOL_BUILD_DIR)/uClibc_dev/usr/include/ ; \
296 if [ ! -f $(STAGING_DIR)/usr/include/linux/version.h ] ; then \
297 cp -pLR $(LINUX_HEADERS_DIR)/include/asm $(TOOL_BUILD_DIR)/uClibc_dev/usr/include/ ; \
298 cp -pLR $(LINUX_HEADERS_DIR)/include/linux $(TOOL_BUILD_DIR)/uClibc_dev/usr/include/ ; \
299 if [ -d $(LINUX_HEADERS_DIR)/include/asm-generic ] ; then \
300 cp -pLR $(LINUX_HEADERS_DIR)/include/asm-generic \
301 $(TOOL_BUILD_DIR)/uClibc_dev/usr/include/ ; \
307 $(UCLIBC_DIR)/lib/libc.a: $(UCLIBC_DIR)/.configured $(LIBFLOAT_TARGET)
308 $(MAKE1) -C $(UCLIBC_DIR) \
316 uclibc-menuconfig: host-sed $(UCLIBC_DIR)/.config
317 $(MAKE1) -C $(UCLIBC_DIR) \
318 PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \
320 RUNTIME_PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \
323 cp -f $(UCLIBC_DIR)/.config $(UCLIBC_CONFIG_FILE) && \
324 touch -c $(UCLIBC_DIR)/.config
327 $(STAGING_DIR)/usr/lib/libc.a: $(UCLIBC_DIR)/lib/libc.a
328 ifneq ($(BR2_TOOLCHAIN_SYSROOT),y)
329 $(MAKE1) -C $(UCLIBC_DIR) \
331 DEVEL_PREFIX=$(STAGING_DIR)/ \
332 RUNTIME_PREFIX=$(STAGING_DIR)/ \
333 install_runtime install_dev
335 $(MAKE1) -C $(UCLIBC_DIR) \
336 PREFIX=$(STAGING_DIR) \
339 install_runtime install_dev
341 # Install the kernel headers to the staging dir if necessary
342 ifeq ($(LINUX_HEADERS_IS_KERNEL),y)
343 if [ ! -f $(STAGING_DIR)/usr/include/linux/version.h ] ; then \
344 cp -pLR $(LINUX_HEADERS_DIR)/include/* $(STAGING_DIR)/usr/include/ ; \
348 if [ ! -f $(STAGING_DIR)/usr/include/linux/version.h ] ; then \
349 cp -pLR $(LINUX_HEADERS_DIR)/include/asm $(STAGING_DIR)/usr/include/ ; \
350 cp -pLR $(LINUX_HEADERS_DIR)/include/linux $(STAGING_DIR)/usr/include/ ; \
351 if [ -d $(LINUX_HEADERS_DIR)/include/asm-generic ] ; then \
352 cp -pLR $(LINUX_HEADERS_DIR)/include/asm-generic \
353 $(STAGING_DIR)/usr/include/ ; \
357 # Build the host utils. Need to add an install target...
358 $(MAKE1) -C $(UCLIBC_DIR)/utils \
359 PREFIX=$(STAGING_DIR) \
362 install -c $(UCLIBC_DIR)/utils/ldd.host $(STAGING_DIR)/usr/bin/ldd
363 ln -sf ldd $(STAGING_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-ldd
364 install -c $(UCLIBC_DIR)/utils/ldconfig.host $(STAGING_DIR)/usr/bin/ldconfig
365 ln -sf ldconfig $(STAGING_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-ldconfig
366 ln -sf ldconfig $(STAGING_DIR)/usr/bin/$(GNU_TARGET_NAME)-ldconfig
369 ifneq ($(TARGET_DIR),)
370 $(TARGET_DIR)/lib/libc.so.0: $(STAGING_DIR)/usr/lib/libc.a
371 $(MAKE1) -C $(UCLIBC_DIR) \
372 PREFIX=$(TARGET_DIR) \
378 $(TARGET_DIR)/usr/bin/ldd: $(TARGET_CROSS)gcc
379 $(MAKE1) -C $(UCLIBC_DIR) CC=$(TARGET_CROSS)gcc \
380 CPP=$(TARGET_CROSS)cpp LD=$(TARGET_CROSS)ld \
381 PREFIX=$(TARGET_DIR) utils install_utils
382 ifeq ($(strip $(BR2_CROSS_TOOLCHAIN_TARGET_UTILS)),y)
383 mkdir -p $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/target_utils
384 install -c $(TARGET_DIR)/usr/bin/ldd \
385 $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/target_utils/ldd
389 UCLIBC_TARGETS=$(TARGET_DIR)/lib/libc.so.0
392 uclibc: $(STAGING_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-gcc $(STAGING_DIR)/usr/lib/libc.a $(UCLIBC_TARGETS)
394 uclibc-source: $(DL_DIR)/$(UCLIBC_SOURCE)
396 uclibc-config: host-sed $(UCLIBC_DIR)/.config
398 uclibc-oldconfig: host-sed $(UCLIBC_DIR)/.oldconfig
400 uclibc-configured: kernel-headers $(UCLIBC_DIR)/.configured
402 uclibc-configured-source: uclibc-source
405 -$(MAKE1) -C $(UCLIBC_DIR) clean
406 rm -f $(UCLIBC_DIR)/.config
411 uclibc-target-utils: $(TARGET_DIR)/usr/bin/ldd
413 #############################################################
415 # uClibc for the target just needs its header files
416 # and whatnot installed.
418 #############################################################
420 $(TARGET_DIR)/usr/lib/libc.a: $(STAGING_DIR)/usr/lib/libc.a
421 $(MAKE1) -C $(UCLIBC_DIR) \
422 PREFIX=$(TARGET_DIR) \
426 # Install the kernel headers to the target dir if necessary
427 ifeq ($(LINUX_HEADERS_IS_KERNEL),y)
428 if [ ! -f $(TARGET_DIR)/usr/include/linux/version.h ] ; \
430 cp -pLR $(LINUX_HEADERS_DIR)/include/* $(TARGET_DIR)/usr/include/ ; \
433 if [ ! -f $(TARGET_DIR)/usr/include/linux/version.h ] ; then \
434 cp -pLR $(LINUX_HEADERS_DIR)/include/asm $(TARGET_DIR)/usr/include/ ; \
435 cp -pLR $(LINUX_HEADERS_DIR)/include/linux $(TARGET_DIR)/usr/include/ ; \
436 if [ -d $(LINUX_HEADERS_DIR)/include/asm-generic ] ; then \
437 cp -pLR $(LINUX_HEADERS_DIR)/include/asm-generic \
438 $(TARGET_DIR)/usr/include/ ; \
444 uclibc_target: gcc uclibc $(TARGET_DIR)/usr/lib/libc.a $(TARGET_DIR)/usr/bin/ldd
447 rm -rf $(TARGET_DIR)/usr/include \
448 $(TARGET_DIR)/usr/lib/libc.a $(TARGET_DIR)/usr/bin/ldd
450 uclibc_target-dirclean:
451 rm -rf $(TARGET_DIR)/usr/include