]> rtime.felk.cvut.cz Git - coffee/buildroot.git/blob - package/uclibc/uclibc.mk
Rename BR2_PREFER_STATIC_LIB to BR2_STATIC_LIBS
[coffee/buildroot.git] / package / uclibc / uclibc.mk
1 ################################################################################
2 #
3 # uclibc
4 #
5 ################################################################################
6
7 UCLIBC_VERSION = $(call qstrip,$(BR2_UCLIBC_VERSION_STRING))
8 UCLIBC_SOURCE ?= uClibc-$(UCLIBC_VERSION).tar.bz2
9 UCLIBC_LICENSE = LGPLv2.1+
10 UCLIBC_LICENSE_FILES = COPYING.LIB
11
12 ifeq ($(BR2_UCLIBC_VERSION_SNAPSHOT),y)
13 UCLIBC_SITE = http://www.uclibc.org/downloads/snapshots
14 else ifeq ($(BR2_arc),y)
15 UCLIBC_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,uClibc,$(UCLIBC_VERSION))
16 UCLIBC_SOURCE = uClibc-$(UCLIBC_VERSION).tar.gz
17 else ifeq ($(BR2_UCLIBC_VERSION_XTENSA_GIT),y)
18 UCLIBC_SITE = git://git.busybox.net/uClibc
19 UCLIBC_SOURCE = uClibc-$(UCLIBC_VERSION).tar.gz
20 else
21 UCLIBC_SITE = http://www.uclibc.org/downloads
22 UCLIBC_SOURCE = uClibc-$(UCLIBC_VERSION).tar.xz
23 endif
24
25 UCLIBC_INSTALL_STAGING = YES
26
27 # uclibc is part of the toolchain so disable the toolchain dependency
28 UCLIBC_ADD_TOOLCHAIN_DEPENDENCY = NO
29
30 # Before uClibc is configured, we must have the first stage
31 # cross-compiler and the kernel headers
32 UCLIBC_DEPENDENCIES = host-gcc-initial linux-headers
33
34 # specifying UCLIBC_CONFIG_FILE on the command-line overrides the .config
35 # setting.
36 ifndef UCLIBC_CONFIG_FILE
37 UCLIBC_CONFIG_FILE = $(call qstrip,$(BR2_UCLIBC_CONFIG))
38 endif
39
40 UCLIBC_KCONFIG_FILE = $(UCLIBC_CONFIG_FILE)
41
42 UCLIBC_KCONFIG_OPTS = \
43                 $(UCLIBC_MAKE_FLAGS) \
44                 PREFIX=$(STAGING_DIR) \
45                 DEVEL_PREFIX=/usr/ \
46                 RUNTIME_PREFIX=$(STAGING_DIR)/ \
47
48 UCLIBC_TARGET_ARCH = $(call qstrip,$(BR2_UCLIBC_TARGET_ARCH))
49
50 UCLIBC_GENERATE_LOCALES = $(call qstrip,$(BR2_GENERATE_LOCALE))
51
52 ifeq ($(UCLIBC_GENERATE_LOCALES),)
53 # We need at least one locale
54 UCLIBC_LOCALES = en_US
55 else
56 # Strip out the encoding part of locale names, if any
57 UCLIBC_LOCALES = $(foreach locale,$(UCLIBC_GENERATE_LOCALES),\
58                    $(firstword $(subst .,$(space),$(locale))))
59 endif
60
61 #
62 # ARC definitions
63 #
64
65 ifeq ($(UCLIBC_TARGET_ARCH),arc)
66 UCLIBC_ARC_TYPE = CONFIG_$(call qstrip,$(BR2_UCLIBC_ARC_TYPE))
67 define UCLIBC_ARC_TYPE_CONFIG
68         $(call KCONFIG_ENABLE_OPT,$(UCLIBC_ARC_TYPE),$(@D)/.config)
69 endef
70 endif # arc
71
72 #
73 # ARM definitions
74 #
75
76 ifeq ($(UCLIBC_TARGET_ARCH),arm)
77 define UCLIBC_ARM_ABI_CONFIG
78         $(SED) '/CONFIG_ARM_.ABI/d' $(@D)/.config
79         $(call KCONFIG_ENABLE_OPT,CONFIG_ARM_EABI,$(@D)/.config)
80 endef
81
82 # Thumb build is broken with threads, build in ARM mode
83 ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB)$(BR2_TOOLCHAIN_HAS_THREADS),yy)
84 UCLIBC_EXTRA_CFLAGS += -marm
85 endif
86
87 ifeq ($(BR2_UCLIBC_ARM_BX),y)
88 define UCLIBC_ARM_BX_CONFIG
89         $(call KCONFIG_ENABLE_OPT,USE_BX,$(@D)/.config)
90 endef
91 else
92 define UCLIBC_ARM_BX_CONFIG
93         $(call KCONFIG_DISABLE_OPT,USE_BX,$(@D)/.config)
94 endef
95 endif
96
97 endif # arm
98
99 #
100 # MIPS definitions
101 #
102
103 ifeq ($(UCLIBC_TARGET_ARCH),mips)
104 UCLIBC_MIPS_ABI = CONFIG_MIPS_$(call qstrip,$(BR2_UCLIBC_MIPS_ABI))_ABI
105 define UCLIBC_MIPS_ABI_CONFIG
106         $(SED) '/CONFIG_MIPS_[NO].._ABI/d' $(@D)/.config
107         $(call KCONFIG_ENABLE_OPT,$(UCLIBC_MIPS_ABI),$(@D)/.config)
108 endef
109
110 UCLIBC_MIPS_ISA = CONFIG_MIPS_ISA_$(call qstrip,$(BR2_UCLIBC_MIPS_ISA))
111 define UCLIBC_MIPS_ISA_CONFIG
112         $(SED) '/CONFIG_MIPS_ISA_.*/d' $(@D)/.config
113         $(call KCONFIG_ENABLE_OPT,$(UCLIBC_MIPS_ISA),$(@D)/.config)
114 endef
115 endif # mips
116
117 #
118 # SH definitions
119 #
120
121 ifeq ($(UCLIBC_TARGET_ARCH),sh)
122 UCLIBC_SH_TYPE = CONFIG_$(call qstrip,$(BR2_UCLIBC_SH_TYPE))
123 define UCLIBC_SH_TYPE_CONFIG
124         $(SED) '/CONFIG_SH[234A]*/d' $(@D)/.config
125         $(call KCONFIG_ENABLE_OPT,$(UCLIBC_SH_TYPE),$(@D)/.config)
126 endef
127 endif # sh
128
129 #
130 # SPARC definitions
131 #
132
133 ifeq ($(UCLIBC_TARGET_ARCH),sparc)
134 UCLIBC_SPARC_TYPE = CONFIG_SPARC_$(call qstrip,$(BR2_UCLIBC_SPARC_TYPE))
135 define UCLIBC_SPARC_TYPE_CONFIG
136         $(SED) 's/^\(CONFIG_[^_]*[_]*SPARC[^=]*\)=.*/# \1 is not set/g' \
137                 $(@D)/.config
138         $(call KCONFIG_ENABLE_OPT,$(UCLIBC_SPARC_TYPE),$(@D)/.config)
139 endef
140 endif # sparc
141
142 #
143 # PowerPC definitions
144 #
145
146 ifeq ($(UCLIBC_TARGET_ARCH),powerpc)
147 UCLIBC_POWERPC_TYPE = CONFIG_$(call qstrip,$(BR2_UCLIBC_POWERPC_TYPE))
148 define UCLIBC_POWERPC_TYPE_CONFIG
149         $(call KCONFIG_DISABLE_OPT,CONFIG_GENERIC,$(@D)/.config)
150         $(call KCONFIG_DISABLE_OPT,CONFIG_E500,$(@D)/.config)
151         $(call KCONFIG_ENABLE_OPT,$(UCLIBC_POWERPC_TYPE),$(@D)/.config)
152 endef
153 endif # powerpc
154
155 #
156 # Blackfin definitions
157 #
158
159 ifeq ($(UCLIBC_TARGET_ARCH),bfin)
160 ifeq ($(BR2_BINFMT_FDPIC),y)
161 define UCLIBC_BFIN_CONFIG
162         $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FLAT,$(@D)/.config)
163         $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FLAT_SEP_DATA,$(@D)/.config)
164         $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_SHARED_FLAT,$(@D)/.config)
165         $(call KCONFIG_ENABLE_OPT,UCLIBC_FORMAT_FDPIC_ELF,$(@D)/.config)
166 endef
167 endif
168 ifeq ($(BR2_BINFMT_FLAT_ONE),y)
169 define UCLIBC_BFIN_CONFIG
170         $(call KCONFIG_ENABLE_OPT,UCLIBC_FORMAT_FLAT,$(@D)/.config)
171         $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FLAT_SEP_DATA,$(@D)/.config)
172         $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_SHARED_FLAT,$(@D)/.config)
173         $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FDPIC_ELF,$(@D)/.config)
174 endef
175 endif
176 ifeq ($(BR2_BINFMT_FLAT_SEP_DATA),y)
177 define UCLIBC_BFIN_CONFIG
178         $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FLAT,$(@D)/.config)
179         $(call KCONFIG_ENABLE_OPT,UCLIBC_FORMAT_FLAT_SEP_DATA,$(@D)/.config)
180         $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_SHARED_FLAT,$(@D)/.config)
181         $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FDPIC_ELF,$(@D)/.config)
182 endef
183 endif
184 ifeq ($(BR2_BINFMT_FLAT_SHARED),y)
185 define UCLIBC_BFIN_CONFIG
186         $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FLAT,$(@D)/.config)
187         $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FLAT_SEP_DATA,$(@D)/.config)
188         $(call KCONFIG_ENABLE_OPT,UCLIBC_FORMAT_SHARED_FLAT,$(@D)/.config)
189         $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FDPIC_ELF,$(@D)/.config)
190 endef
191 endif
192 endif # bfin
193
194 #
195 # AVR32 definitions
196 #
197
198 ifeq ($(UCLIBC_TARGET_ARCH),avr32)
199 define UCLIBC_AVR32_CONFIG
200         $(call KCONFIG_ENABLE_OPT,LINKRELAX,$(@D)/.config)
201 endef
202 endif # avr32
203
204 #
205 # x86 definitions
206 #
207 ifeq ($(UCLIBC_TARGET_ARCH),i386)
208 UCLIBC_X86_TYPE = CONFIG_$(call qstrip,$(BR2_UCLIBC_X86_TYPE))
209 define UCLIBC_X86_TYPE_CONFIG
210         $(call KCONFIG_ENABLE_OPT,$(UCLIBC_X86_TYPE),$(@D)/.config)
211 endef
212 endif
213
214 #
215 # Endianness
216 #
217
218 ifeq ($(call qstrip,$(BR2_ENDIAN)),BIG)
219 define UCLIBC_ENDIAN_CONFIG
220         $(call KCONFIG_ENABLE_OPT,ARCH_BIG_ENDIAN,$(@D)/.config)
221         $(call KCONFIG_ENABLE_OPT,ARCH_WANTS_BIG_ENDIAN,$(@D)/.config)
222         $(call KCONFIG_DISABLE_OPT,ARCH_LITTLE_ENDIAN,$(@D)/.config)
223         $(call KCONFIG_DISABLE_OPT,ARCH_WANTS_LITTLE_ENDIAN,$(@D)/.config)
224 endef
225 else
226 define UCLIBC_ENDIAN_CONFIG
227         $(call KCONFIG_ENABLE_OPT,ARCH_LITTLE_ENDIAN,$(@D)/.config)
228         $(call KCONFIG_ENABLE_OPT,ARCH_WANTS_LITTLE_ENDIAN,$(@D)/.config)
229         $(call KCONFIG_DISABLE_OPT,ARCH_BIG_ENDIAN,$(@D)/.config)
230         $(call KCONFIG_DISABLE_OPT,ARCH_WANTS_BIG_ENDIAN,$(@D)/.config)
231 endef
232 endif
233
234 #
235 # Largefile
236 #
237
238 ifeq ($(BR2_TOOLCHAIN_BUILDROOT_LARGEFILE),y)
239 define UCLIBC_LARGEFILE_CONFIG
240         $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_LFS,$(@D)/.config)
241 endef
242 else
243 define UCLIBC_LARGEFILE_CONFIG
244         $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_LFS,$(@D)/.config)
245         $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_FOPEN_LARGEFILE_MODE,$(@D)/.config)
246 endef
247 endif
248
249 #
250 # MMU
251 #
252
253 ifeq ($(BR2_USE_MMU),y)
254 define UCLIBC_MMU_CONFIG
255         $(call KCONFIG_ENABLE_OPT,ARCH_USE_MMU,$(@D)/.config)
256 endef
257 else
258 define UCLIBC_MMU_CONFIG
259         $(call KCONFIG_DISABLE_OPT,ARCH_USE_MMU,$(@D)/.config)
260 endef
261 endif
262
263 #
264 # IPv6
265 #
266
267 ifeq ($(BR2_TOOLCHAIN_BUILDROOT_INET_IPV6),y)
268 UCLIBC_IPV6_CONFIG = $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_IPV6,$(@D)/.config)
269 else
270 UCLIBC_IPV6_CONFIG = $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_IPV6,$(@D)/.config)
271 endif
272
273 #
274 # RPC
275 #
276
277 ifeq ($(BR2_TOOLCHAIN_BUILDROOT_INET_RPC),y)
278 define UCLIBC_RPC_CONFIG
279         $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_RPC,$(@D)/.config)
280         $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_FULL_RPC,$(@D)/.config)
281         $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_REENTRANT_RPC,$(@D)/.config)
282 endef
283 else
284 define UCLIBC_RPC_CONFIG
285         $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_RPC,$(@D)/.config)
286         $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_FULL_RPC,$(@D)/.config)
287         $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_REENTRANT_RPC,$(@D)/.config)
288 endef
289 endif
290
291 #
292 # soft-float
293 #
294
295 ifeq ($(BR2_SOFT_FLOAT),y)
296 define UCLIBC_FLOAT_CONFIG
297         $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_FPU,$(@D)/.config)
298         $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_FLOATS,$(@D)/.config)
299         $(call KCONFIG_ENABLE_OPT,DO_C99_MATH,$(@D)/.config)
300 endef
301 else
302 define UCLIBC_FLOAT_CONFIG
303         $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_FPU,$(@D)/.config)
304         $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_FLOATS,$(@D)/.config)
305 endef
306 endif
307
308 #
309 # SSP
310 #
311 ifeq ($(BR2_TOOLCHAIN_BUILDROOT_USE_SSP),y)
312 define UCLIBC_SSP_CONFIG
313         $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_SSP,$(@D)/.config)
314         $(call KCONFIG_ENABLE_OPT,UCLIBC_BUILD_SSP,$(@D)/.config)
315 endef
316 else
317 define UCLIBC_SSP_CONFIG
318         $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_SSP,$(@D)/.config)
319         $(call KCONFIG_DISABLE_OPT,UCLIBC_BUILD_SSP,$(@D)/.config)
320 endef
321 endif
322
323 #
324 # Threads
325 #
326 ifeq ($(BR2_PTHREADS_NONE),y)
327 define UCLIBC_THREAD_CONFIG
328         $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_THREADS,$(@D)/.config)
329         $(call KCONFIG_DISABLE_OPT,LINUXTHREADS,$(@D)/.config)
330         $(call KCONFIG_DISABLE_OPT,LINUXTHREADS_OLD,$(@D)/.config)
331         $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_THREADS_NATIVE,$(@D)/.config)
332 endef
333 else ifeq ($(BR2_PTHREADS),y)
334 define UCLIBC_THREAD_CONFIG
335         $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_THREADS,$(@D)/.config)
336         $(call KCONFIG_ENABLE_OPT,LINUXTHREADS_NEW,$(@D)/.config)
337         $(call KCONFIG_DISABLE_OPT,LINUXTHREADS_OLD,$(@D)/.config)
338         $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_THREADS_NATIVE,$(@D)/.config)
339 endef
340 else ifeq ($(BR2_PTHREADS_OLD),y)
341 define UCLIBC_THREAD_CONFIG
342         $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_THREADS,$(@D)/.config)
343         $(call KCONFIG_DISABLE_OPT,LINUXTHREADS_NEW,$(@D)/.config)
344         $(call KCONFIG_ENABLE_OPT,LINUXTHREADS_OLD,$(@D)/.config)
345         $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_THREADS_NATIVE,$(@D)/.config)
346 endef
347 else ifeq ($(BR2_PTHREADS_NATIVE),y)
348 define UCLIBC_THREAD_CONFIG
349         $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_THREADS,$(@D)/.config)
350         $(call KCONFIG_DISABLE_OPT,LINUXTHREADS_NEW,$(@D)/.config)
351         $(call KCONFIG_DISABLE_OPT,LINUXTHREADS_OLD,$(@D)/.config)
352         $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_THREADS_NATIVE,$(@D)/.config)
353 endef
354 endif
355
356 #
357 # Thread debug
358 #
359
360 ifeq ($(BR2_PTHREAD_DEBUG),y)
361 UCLIBC_THREAD_DEBUG_CONFIG = $(call KCONFIG_ENABLE_OPT,PTHREADS_DEBUG_SUPPORT,$(@D)/.config)
362 else
363 UCLIBC_THREAD_DEBUG_CONFIG = $(call KCONFIG_DISABLE_OPT,PTHREADS_DEBUG_SUPPORT,$(@D)/.config)
364 endif
365
366 #
367 # Locale
368 #
369
370 ifeq ($(BR2_TOOLCHAIN_BUILDROOT_LOCALE),y)
371 define UCLIBC_LOCALE_CONFIG
372         $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_LOCALE,$(@D)/.config)
373         $(call KCONFIG_DISABLE_OPT,UCLIBC_BUILD_ALL_LOCALE,$(@D)/.config)
374         $(call KCONFIG_ENABLE_OPT,UCLIBC_BUILD_MINIMAL_LOCALE,$(@D)/.config)
375         $(call KCONFIG_SET_OPT,UCLIBC_BUILD_MINIMAL_LOCALES,"$(UCLIBC_LOCALES)",$(@D)/.config)
376         $(call KCONFIG_DISABLE_OPT,UCLIBC_PREGENERATED_LOCALE_DATA,$(@D)/.config)
377         $(call KCONFIG_DISABLE_OPT,DOWNLOAD_PREGENERATED_LOCALE_DATA,$(@D)/.config)
378         $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_XLOCALE,$(@D)/.config)
379         $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_GLIBC_DIGIT_GROUPING,$(@D)/.config)
380 endef
381 else
382 define UCLIBC_LOCALE_CONFIG
383         $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_LOCALE,$(@D)/.config)
384 endef
385 endif
386
387 #
388 # wchar
389 #
390
391 ifeq ($(BR2_TOOLCHAIN_BUILDROOT_WCHAR),y)
392 UCLIBC_WCHAR_CONFIG = $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_WCHAR,$(@D)/.config)
393 else
394 UCLIBC_WCHAR_CONFIG = $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_WCHAR,$(@D)/.config)
395 endif
396
397 #
398 # static/shared libs
399 #
400
401 ifeq ($(BR2_STATIC_LIBS),y)
402 UCLIBC_SHARED_LIBS_CONFIG = $(call KCONFIG_DISABLE_OPT,HAVE_SHARED,$(@D)/.config)
403 else
404 UCLIBC_SHARED_LIBS_CONFIG = $(call KCONFIG_ENABLE_OPT,HAVE_SHARED,$(@D)/.config)
405 endif
406
407 #
408 # Commands
409 #
410
411 UCLIBC_MAKE_FLAGS = \
412         ARCH="$(UCLIBC_TARGET_ARCH)" \
413         CROSS_COMPILE="$(TARGET_CROSS)" \
414         UCLIBC_EXTRA_CFLAGS="$(UCLIBC_EXTRA_CFLAGS) $(TARGET_ABI)" \
415         HOSTCC="$(HOSTCC)"
416
417 define UCLIBC_KCONFIG_FIXUP_CMDS
418         $(call KCONFIG_SET_OPT,CROSS_COMPILER_PREFIX,"$(TARGET_CROSS)",$(@D)/.config)
419         $(call KCONFIG_ENABLE_OPT,TARGET_$(UCLIBC_TARGET_ARCH),$(@D)/.config)
420         $(call KCONFIG_SET_OPT,TARGET_ARCH,"$(UCLIBC_TARGET_ARCH)",$(@D)/.config)
421         $(call KCONFIG_SET_OPT,KERNEL_HEADERS,"$(LINUX_HEADERS_DIR)/usr/include",$(@D)/.config)
422         $(call KCONFIG_SET_OPT,RUNTIME_PREFIX,"/",$(@D)/.config)
423         $(call KCONFIG_SET_OPT,DEVEL_PREFIX,"/usr",$(@D)/.config)
424         $(call KCONFIG_SET_OPT,SHARED_LIB_LOADER_PREFIX,"/lib",$(@D)/.config)
425         $(UCLIBC_MMU_CONFIG)
426         $(UCLIBC_ARC_TYPE_CONFIG)
427         $(UCLIBC_ARM_ABI_CONFIG)
428         $(UCLIBC_ARM_BX_CONFIG)
429         $(UCLIBC_MIPS_ABI_CONFIG)
430         $(UCLIBC_MIPS_ISA_CONFIG)
431         $(UCLIBC_SH_TYPE_CONFIG)
432         $(UCLIBC_SPARC_TYPE_CONFIG)
433         $(UCLIBC_POWERPC_TYPE_CONFIG)
434         $(UCLIBC_AVR32_CONFIG)
435         $(UCLIBC_BFIN_CONFIG)
436         $(UCLIBC_X86_TYPE_CONFIG)
437         $(UCLIBC_ENDIAN_CONFIG)
438         $(UCLIBC_LARGEFILE_CONFIG)
439         $(UCLIBC_IPV6_CONFIG)
440         $(UCLIBC_RPC_CONFIG)
441         $(UCLIBC_FLOAT_CONFIG)
442         $(UCLIBC_SSP_CONFIG)
443         $(UCLIBC_THREAD_CONFIG)
444         $(UCLIBC_THREAD_DEBUG_CONFIG)
445         $(UCLIBC_LOCALE_CONFIG)
446         $(UCLIBC_WCHAR_CONFIG)
447         $(UCLIBC_SHARED_LIBS_CONFIG)
448 endef
449
450 ifeq ($(BR2_UCLIBC_INSTALL_TEST_SUITE),y)
451 define UCLIBC_BUILD_TEST_SUITE
452         $(MAKE1) -C $(@D)/test \
453                 $(UCLIBC_MAKE_FLAGS) \
454                 ARCH_CFLAGS=-I$(STAGING_DIR)/usr/include \
455                 UCLIBC_ONLY=1 \
456                 TEST_INSTALLED_UCLIBC=1 \
457                 compile
458 endef
459 endif
460
461 # In uClibc 0.9.31 parallel building is broken so we have to disable it
462 # Fortunately uClibc 0.9.31 is only used by AVR32 and in its turn AVR32 is
463 # about to be removed from buildroot.
464 #
465 # So as soon as AVR32 is removed please revert this patch so instead of
466 # UCLIBC_MAKE normal "MAKE" is used in UCLIBC_BUILD_CMDS
467 ifeq ($(BR2_UCLIBC_VERSION_0_9_31),y)
468         UCLIBC_MAKE = $(MAKE1)
469 else
470         UCLIBC_MAKE = $(MAKE)
471 endif
472
473 define UCLIBC_BUILD_CMDS
474         $(UCLIBC_MAKE) -C $(@D) $(UCLIBC_MAKE_FLAGS) headers
475         $(UCLIBC_MAKE) -C $(@D) $(UCLIBC_MAKE_FLAGS)
476         $(MAKE) -C $(@D)/utils \
477                 PREFIX=$(HOST_DIR) \
478                 HOSTCC="$(HOSTCC)" hostutils
479 endef
480
481 ifeq ($(BR2_UCLIBC_INSTALL_TEST_SUITE),y)
482 define UCLIBC_INSTALL_TEST_SUITE
483         mkdir -p $(TARGET_DIR)/root/uClibc
484         cp -rdpf $(@D)/test $(TARGET_DIR)/root/uClibc
485         $(INSTALL) -D -m 0644 $(@D)/Rules.mak $(TARGET_DIR)/root/uClibc/Rules.mak
486         $(INSTALL) -D -m 0644 $(@D)/.config $(TARGET_DIR)/root/uClibc/.config
487 endef
488 endif
489
490 ifeq ($(BR2_UCLIBC_INSTALL_UTILS),y)
491 define UCLIBC_INSTALL_UTILS_TARGET
492         $(MAKE1) -C $(@D) \
493                 CC="$(TARGET_CC)" CPP="$(TARGET_CPP)" LD="$(TARGET_LD)" \
494                 ARCH="$(UCLIBC_TARGET_ARCH)" \
495                 PREFIX=$(TARGET_DIR) \
496                 utils install_utils
497 endef
498 endif
499
500 define UCLIBC_INSTALL_TARGET_CMDS
501         $(MAKE1) -C $(@D) \
502                 $(UCLIBC_MAKE_FLAGS) \
503                 PREFIX=$(TARGET_DIR) \
504                 DEVEL_PREFIX=/usr/ \
505                 RUNTIME_PREFIX=/ \
506                 install_runtime
507         $(UCLIBC_INSTALL_UTILS_TARGET)
508         $(UCLIBC_BUILD_TEST_SUITE)
509         $(UCLIBC_INSTALL_TEST_SUITE)
510 endef
511
512 # STATIC has no ld* tools, only getconf
513 ifeq ($(BR2_STATIC_LIBS),)
514 define UCLIBC_INSTALL_UTILS_STAGING
515         $(INSTALL) -D -m 0755 $(@D)/utils/ldd.host $(HOST_DIR)/usr/bin/ldd
516         ln -sf ldd $(HOST_DIR)/usr/bin/$(GNU_TARGET_NAME)-ldd
517         $(INSTALL) -D -m 0755 $(@D)/utils/ldconfig.host $(HOST_DIR)/usr/bin/ldconfig
518         ln -sf ldconfig $(HOST_DIR)/usr/bin/$(GNU_TARGET_NAME)-ldconfig
519 endef
520 endif
521
522 define UCLIBC_INSTALL_STAGING_CMDS
523         $(MAKE1) -C $(@D) \
524                 $(UCLIBC_MAKE_FLAGS) \
525                 PREFIX=$(STAGING_DIR) \
526                 DEVEL_PREFIX=/usr/ \
527                 RUNTIME_PREFIX=/ \
528                 install_runtime install_dev
529         $(UCLIBC_INSTALL_UTILS_STAGING)
530 endef
531
532 $(eval $(kconfig-package))