]> Git Repo - buildroot-mgba.git/blob - toolchain/uClibc/uclibc.mk
Allow user to configure PROGRAM_INVOCATION_NAME
[buildroot-mgba.git] / toolchain / uClibc / uclibc.mk
1 #############################################################
2 #
3 # uClibc (the C library)
4 #
5 #############################################################
6
7 ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y)
8
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
15
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
36
37 ifeq ($(BR2_TOOLCHAIN_NORMAL),)
38 UCLIBC_SITE:=$(VENDOR_SITE)
39 endif
40
41 UCLIBC_OFFICIAL_VERSION:=$(UCLIBC_VER)$(VENDOR_SUFFIX)$(VENDOR_UCLIBC_RELEASE)
42
43
44 ifeq ($(BR2_TOOLCHAIN_NORMAL),y)
45 UCLIBC_PATCH_DIR:=toolchain/uClibc/
46 else
47 UCLIBC_PATCH_DIR:=$(VENDOR_PATCH_DIR)/uClibc-$(UCLIBC_OFFICIAL_VERSION)
48 endif
49
50 UCLIBC_DIR:=$(TOOL_BUILD_DIR)/uClibc-$(UCLIBC_OFFICIAL_VERSION)
51 UCLIBC_SOURCE:=uClibc-$(UCLIBC_OFFICIAL_VERSION).tar.bz2
52 endif
53
54 UCLIBC_CAT:=$(BZCAT)
55
56 UCLIBC_TARGET_ARCH:=$(shell $(SHELL) -c "echo $(ARCH) | sed \
57                 -e 's/-.*//' \
58                 -e 's/i.86/i386/' \
59                 -e 's/sparc.*/sparc/' \
60                 -e 's/arm.*/arm/g' \
61                 -e 's/m68k.*/m68k/' \
62                 -e 's/ppc/powerpc/g' \
63                 -e 's/v850.*/v850/g' \
64                 -e 's/sh[234].*/sh/' \
65                 -e 's/mips.*/mips/' \
66                 -e 's/mipsel.*/mips/' \
67                 -e 's/cris.*/cris/' \
68                 -e 's/nios2.*/nios2/' \
69 ")
70 # just handle the ones that can be big or little
71 UCLIBC_TARGET_ENDIAN:=$(shell $(SHELL) -c "echo $(ARCH) | sed \
72                 -e 's/armeb/BIG/' \
73                 -e 's/arm/LITTLE/' \
74                 -e 's/mipsel/LITTLE/' \
75                 -e 's/mips/BIG/' \
76 ")
77
78 ifneq ($(UCLIBC_TARGET_ENDIAN),LITTLE)
79 ifneq ($(UCLIBC_TARGET_ENDIAN),BIG)
80 UCLIBC_TARGET_ENDIAN:=
81 endif
82 endif
83 ifeq ($(UCLIBC_TARGET_ENDIAN),LITTLE)
84 UCLIBC_NOT_TARGET_ENDIAN:=BIG
85 else
86 UCLIBC_NOT_TARGET_ENDIAN:=LITTLE
87 endif
88
89 ARM_CONFIG:=CONFIG_$(strip $(subst ",, $(BR2_ARM_TYPE)))
90 #"))
91
92 $(DL_DIR)/$(UCLIBC_SOURCE):
93         $(WGET) -P $(DL_DIR) $(UCLIBC_SITE)/$(UCLIBC_SOURCE)
94
95 ifneq ($(BR2_ENABLE_LOCALE),)
96 UCLIBC_SITE_LOCALE:=http://www.uclibc.org/downloads
97 UCLIBC_SOURCE_LOCALE:=uClibc-locale-030818.tgz
98
99 $(DL_DIR)/$(UCLIBC_SOURCE_LOCALE):
100         $(WGET) -P $(DL_DIR) $(UCLIBC_SITE_LOCALE)/$(UCLIBC_SOURCE_LOCALE)
101
102 UCLIBC_LOCALE_DATA:=$(DL_DIR)/$(UCLIBC_SOURCE_LOCALE)
103 else
104 UCLIBC_LOCALE_DATA=
105 endif
106
107 uclibc-unpacked: $(UCLIBC_DIR)/.unpacked
108 $(UCLIBC_DIR)/.unpacked: $(DL_DIR)/$(UCLIBC_SOURCE) $(UCLIBC_LOCALE_DATA)
109         mkdir -p $(TOOL_BUILD_DIR)
110         rm -rf $(UCLIBC_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
114 else
115         toolchain/patch-kernel.sh $(UCLIBC_DIR) $(UCLIBC_PATCH_DIR) uClibc.\*.patch
116 endif
117 ifneq ($(BR2_ENABLE_LOCALE),)
118         cp -dpf $(DL_DIR)/$(UCLIBC_SOURCE_LOCALE) $(UCLIBC_DIR)/extra/locale/
119 endif
120         touch $@
121
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
141 endif
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
145 endif
146 endif
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
154 endif
155 ifeq ($(BR2_LARGEFILE),y)
156         $(SED) 's,.*UCLIBC_HAS_LFS.*,UCLIBC_HAS_LFS=y,g' $(UCLIBC_DIR)/.oldconfig
157 else
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
161 endif
162 ifeq ($(BR2_INET_IPV6),y)
163         $(SED) 's,^.*UCLIBC_HAS_IPV6.*,UCLIBC_HAS_IPV6=y,g' $(UCLIBC_DIR)/.oldconfig
164 else
165         $(SED) 's,^.*UCLIBC_HAS_IPV6.*,UCLIBC_HAS_IPV6=n,g' $(UCLIBC_DIR)/.oldconfig
166 endif
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
172 else
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
177 endif
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
185 else
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
189 endif
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
197 else
198         echo "UCLIBC_HAS_THREADS=y" >> $(UCLIBC_DIR)/.oldconfig
199 endif
200 ifeq ($(BR2_PTHREADS),y)
201         echo "LINUXTHREADS=y" >> $(UCLIBC_DIR)/.oldconfig
202 else
203         echo "# LINUXTHREADS is not set" >> $(UCLIBC_DIR)/.oldconfig
204 endif
205 ifeq ($(BR2_PTHREADS_OLD),y)
206         echo "LINUXTHREADS_OLD=y" >> $(UCLIBC_DIR)/.oldconfig
207 else
208         echo "# LINUXTHREADS_OLD is not set" >> $(UCLIBC_DIR)/.oldconfig
209 endif
210 ifeq ($(BR2_PTHREADS_NATIVE),y)
211         echo "UCLIBC_HAS_THREADS_NATIVE=y" >> $(UCLIBC_DIR)/.oldconfig
212 else
213         echo "# UCLIBC_HAS_THREADS_NATIVE is not set" >> $(UCLIBC_DIR)/.oldconfig
214 endif
215 ifeq ($(BR2_PTHREAD_DEBUG),y)
216         echo "PTHREADS_DEBUG_SUPPORT=y" >> $(UCLIBC_DIR)/.oldconfig
217 else
218         echo "# PTHREADS_DEBUG_SUPPORT is not set" >> $(UCLIBC_DIR)/.oldconfig
219 endif
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
223 else
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
226 endif
227 ifeq ($(BR2_USE_WCHAR),y)
228         $(SED) 's,^.*UCLIBC_HAS_WCHAR.*,UCLIBC_HAS_WCHAR=y,g' $(UCLIBC_DIR)/.oldconfig
229 else
230         $(SED) 's,^.*UCLIBC_HAS_WCHAR.*,UCLIBC_HAS_WCHAR=n,g' $(UCLIBC_DIR)/.oldconfig
231 endif
232 ifeq ($(BR2_UCLIBC_PROGRAM_INVOCATION),y)
233         echo "UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y" >> $(UCLIBC_DIR)/.oldconfig
234 else
235         echo "# UCLIBC_HAS_PROGRAM_INVOCATION_NAME is not set" >> $(UCLIBC_DIR)/.oldconfig
236 endif
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
257 endif
258 ifeq ($(BR2_x86_i486),y)
259         $(SED) 's,# CONFIG_486 is not set,CONFIG_486=y,g' $(UCLIBC_DIR)/.oldconfig
260 endif
261 ifeq ($(BR2_x86_i586),y)
262         $(SED) 's,# CONFIG_586 is not set,CONFIG_586=y,g' $(UCLIBC_DIR)/.oldconfig
263 endif
264 ifeq ($(BR2_x86_i686),y)
265         $(SED) 's,# CONFIG_686 is not set,CONFIG_686=y,g' $(UCLIBC_DIR)/.oldconfig
266 endif
267 endif
268
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/ \
276                 DEVEL_PREFIX=/usr/ \
277                 RUNTIME_PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \
278                 HOSTCC="$(HOSTCC)" \
279                 oldconfig
280         touch $@
281
282 $(UCLIBC_DIR)/.configured: $(UCLIBC_DIR)/.config
283         set -x && $(MAKE1) -C $(UCLIBC_DIR) \
284                 PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \
285                 DEVEL_PREFIX=/usr/ \
286                 RUNTIME_PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \
287                 HOSTCC="$(HOSTCC)" \
288                 pregen install_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 ] ; \
292         then \
293                 cp -pLR $(LINUX_HEADERS_DIR)/include/* $(TOOL_BUILD_DIR)/uClibc_dev/usr/include/ ; \
294         fi
295 else
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/ ; \
302                 fi; \
303         fi;
304 endif
305         touch $@
306
307 $(UCLIBC_DIR)/lib/libc.a: $(UCLIBC_DIR)/.configured $(LIBFLOAT_TARGET)
308         $(MAKE1) -C $(UCLIBC_DIR) \
309                 PREFIX= \
310                 DEVEL_PREFIX=/ \
311                 RUNTIME_PREFIX=/ \
312                 HOSTCC="$(HOSTCC)" \
313                 all
314         touch -c $@
315
316 uclibc-menuconfig: host-sed $(UCLIBC_DIR)/.config
317         $(MAKE1) -C $(UCLIBC_DIR) \
318                 PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \
319                 DEVEL_PREFIX=/usr/ \
320                 RUNTIME_PREFIX=$(TOOL_BUILD_DIR)/uClibc_dev/ \
321                 HOSTCC="$(HOSTCC)" \
322                 menuconfig && \
323         cp -f $(UCLIBC_DIR)/.config $(UCLIBC_CONFIG_FILE) && \
324         touch -c $(UCLIBC_DIR)/.config
325
326
327 $(STAGING_DIR)/usr/lib/libc.a: $(UCLIBC_DIR)/lib/libc.a
328 ifneq ($(BR2_TOOLCHAIN_SYSROOT),y)
329         $(MAKE1) -C $(UCLIBC_DIR) \
330                 PREFIX= \
331                 DEVEL_PREFIX=$(STAGING_DIR)/ \
332                 RUNTIME_PREFIX=$(STAGING_DIR)/ \
333                 install_runtime install_dev
334 else
335         $(MAKE1) -C $(UCLIBC_DIR) \
336                 PREFIX=$(STAGING_DIR) \
337                 DEVEL_PREFIX=/usr/ \
338                 RUNTIME_PREFIX=/ \
339                 install_runtime install_dev
340 endif
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/ ; \
345         fi
346 else
347
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/ ; \
354                 fi; \
355         fi;
356 endif
357         # Build the host utils.  Need to add an install target...
358         $(MAKE1) -C $(UCLIBC_DIR)/utils \
359                 PREFIX=$(STAGING_DIR) \
360                 HOSTCC="$(HOSTCC)" \
361                 hostutils
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
367         touch -c $@
368
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) \
373                 DEVEL_PREFIX=/usr/ \
374                 RUNTIME_PREFIX=/ \
375                 install_runtime
376         touch -c $@
377
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
386 endif
387         touch -c $@
388
389 UCLIBC_TARGETS=$(TARGET_DIR)/lib/libc.so.0
390 endif
391
392 uclibc: $(STAGING_DIR)/usr/bin/$(REAL_GNU_TARGET_NAME)-gcc $(STAGING_DIR)/usr/lib/libc.a $(UCLIBC_TARGETS)
393
394 uclibc-source: $(DL_DIR)/$(UCLIBC_SOURCE)
395
396 uclibc-config: host-sed $(UCLIBC_DIR)/.config
397
398 uclibc-oldconfig: host-sed $(UCLIBC_DIR)/.oldconfig
399
400 uclibc-configured: kernel-headers $(UCLIBC_DIR)/.configured
401
402 uclibc-configured-source: uclibc-source
403
404 uclibc-clean:
405         -$(MAKE1) -C $(UCLIBC_DIR) clean
406         rm -f $(UCLIBC_DIR)/.config
407
408 uclibc-dirclean:
409         rm -rf $(UCLIBC_DIR)
410
411 uclibc-target-utils: $(TARGET_DIR)/usr/bin/ldd
412
413 #############################################################
414 #
415 # uClibc for the target just needs its header files
416 # and whatnot installed.
417 #
418 #############################################################
419
420 $(TARGET_DIR)/usr/lib/libc.a: $(STAGING_DIR)/usr/lib/libc.a
421         $(MAKE1) -C $(UCLIBC_DIR) \
422                 PREFIX=$(TARGET_DIR) \
423                 DEVEL_PREFIX=/usr/ \
424                 RUNTIME_PREFIX=/ \
425                 install_dev
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 ] ; \
429         then \
430                 cp -pLR $(LINUX_HEADERS_DIR)/include/* $(TARGET_DIR)/usr/include/ ; \
431         fi
432 else
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/ ; \
439                 fi; \
440         fi;
441 endif
442         touch -c $@
443
444 uclibc_target: gcc uclibc $(TARGET_DIR)/usr/lib/libc.a $(TARGET_DIR)/usr/bin/ldd
445
446 uclibc_target-clean:
447         rm -rf $(TARGET_DIR)/usr/include \
448                 $(TARGET_DIR)/usr/lib/libc.a $(TARGET_DIR)/usr/bin/ldd
449
450 uclibc_target-dirclean:
451         rm -rf $(TARGET_DIR)/usr/include
452
453 endif
This page took 0.059182 seconds and 4 git commands to generate.