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
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_EXTERNAL_SOURCE
),y
)
38 UCLIBC_SITE
:=$(VENDOR_SITE
)
41 UCLIBC_OFFICIAL_VERSION
:=$(UCLIBC_VER
)$(VENDOR_SUFFIX
)$(VENDOR_UCLIBC_RELEASE
)
43 ifeq ($(BR2_TOOLCHAIN_BUILDROOT
),y
)
44 UCLIBC_PATCH_DIR
:=toolchain
/uClibc
/
46 UCLIBC_PATCH_DIR
:=$(VENDOR_PATCH_DIR
)/uClibc-
$(UCLIBC_OFFICIAL_VERSION
)
49 UCLIBC_DIR
:=$(TOOL_BUILD_DIR
)/uClibc-
$(UCLIBC_OFFICIAL_VERSION
)
50 UCLIBC_SOURCE
:=uClibc-
$(UCLIBC_OFFICIAL_VERSION
).
tar.bz2
55 UCLIBC_TARGET_ARCH
:=$(shell $(SHELL
) -c
"echo $(ARCH) | sed \
58 -e 's/sparc.*/sparc/' \
61 -e 's/ppc/powerpc/g' \
62 -e 's/v850.*/v850/g' \
63 -e 's/sh[234].*/sh/' \
65 -e 's/mipsel.*/mips/' \
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 \
73 -e 's/mipsel/LITTLE/' \
75 -e 's/sh[234].*eb/BIG/' \
76 -e 's/sh[234]/LITTLE/' \
80 ifneq ($(UCLIBC_TARGET_ENDIAN
),LITTLE
)
81 ifneq ($(UCLIBC_TARGET_ENDIAN
),BIG
)
82 UCLIBC_TARGET_ENDIAN
:=
85 ifeq ($(UCLIBC_TARGET_ENDIAN
),LITTLE
)
86 UCLIBC_NOT_TARGET_ENDIAN
:=BIG
88 UCLIBC_NOT_TARGET_ENDIAN
:=LITTLE
91 UCLIBC_ARM_TYPE
:=CONFIG_
$(strip $(subst ",, $(BR2_ARM_TYPE)))
93 UCLIBC_SPARC_TYPE
:=CONFIG_SPARC_
$(strip $(subst ",, $(BR2_SPARC_TYPE)))
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
)
111 $(UCLIBC_DIR
)/.unpacked
: $(DL_DIR
)/$(UCLIBC_SOURCE
) $(UCLIBC_LOCALE_DATA
)
112 mkdir
-p
$(TOOL_BUILD_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
118 toolchain
/patch-kernel.sh
$(UCLIBC_DIR
) $(UCLIBC_PATCH_DIR
) uClibc.\
*.patch
120 ifneq ($(BR2_ENABLE_LOCALE
),)
121 cp
-dpf
$(DL_DIR
)/$(UCLIBC_SOURCE_LOCALE
) $(UCLIBC_DIR
)/extra
/locale
/
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
))
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
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
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
184 ifeq ($(findstring y
,$(BR2_MIPS_EABI
)$(BR2_MIPS_ABI32
)),y
)
185 $(SED
) 's/.*\(CONFIG_MIPS_N32_ABI\).*/\1=y/' $(UCLIBC_DIR
)/.oldconfig
187 ifeq ($(findstring y
,$(BR2_MIPS_ABI64
)$(BR2_MIPS_OABI64
)),y
)
188 $(SED
) 's/.*\(CONFIG_MIPS_N64_ABI\).*/\1=y/' $(UCLIBC_DIR
)/.oldconfig
190 ifeq ($(BR2_mips_1
),y
)
191 $(SED
) 's/.*\(CONFIG_MIPS_ISA_1\).*/\1=y/' $(UCLIBC_DIR
)/.oldconfig
193 ifeq ($(BR2_mips_2
),y
)
194 $(SED
) 's/.*\(CONFIG_MIPS_ISA_2\).*/\1=y/' $(UCLIBC_DIR
)/.oldconfig
196 ifeq ($(BR2_mips_3
),y
)
197 $(SED
) 's/.*\(CONFIG_MIPS_ISA_3\).*/\1=y/' $(UCLIBC_DIR
)/.oldconfig
199 ifeq ($(BR2_mips_4
),y
)
200 $(SED
) 's/.*\(CONFIG_MIPS_ISA_4\).*/\1=y/' $(UCLIBC_DIR
)/.oldconfig
202 ifeq ($(BR2_mips_32
),y
)
203 $(SED
) 's/.*\(CONFIG_MIPS_ISA_MIPS32\).*/\1=y/' $(UCLIBC_DIR
)/.oldconfig
205 ifeq ($(BR2_mips_32r2
),y
)
206 $(SED
) 's/.*\(CONFIG_MIPS_ISA_MIPS32\).*/\1=y/' $(UCLIBC_DIR
)/.oldconfig
208 ifeq ($(BR2_mips_64
),y
)
209 $(SED
) 's/.*\(CONFIG_MIPS_ISA_MIPS64\).*/\1=y/' $(UCLIBC_DIR
)/.oldconfig
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
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
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
240 ifeq ($(BR2_sh3eb
),y
)
241 $(SED
) 's,# CONFIG_SH3 is not set,CONFIG_SH3=y,g' $(UCLIBC_DIR
)/.oldconfig
244 $(SED
) 's,# CONFIG_SH3 is not set,CONFIG_SH3=y,g' $(UCLIBC_DIR
)/.oldconfig
246 ifeq ($(BR2_sh4eb
),y
)
247 $(SED
) 's,# CONFIG_SH4 is not set,CONFIG_SH4=y,g' $(UCLIBC_DIR
)/.oldconfig
250 $(SED
) 's,# CONFIG_SH4 is not set,CONFIG_SH4=y,g' $(UCLIBC_DIR
)/.oldconfig
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
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
268 ifeq ($(BR2_LARGEFILE
),y
)
269 $(SED
) 's,.*UCLIBC_HAS_LFS.*,UCLIBC_HAS_LFS=y,g' $(UCLIBC_DIR
)/.oldconfig
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
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
280 $(SED
) 's,^.*UCLIBC_HAS_IPV6.*,UCLIBC_HAS_IPV6=n,g' $(UCLIBC_DIR
)/.oldconfig
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
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
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
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
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
315 echo
"UCLIBC_HAS_THREADS=y" >> $(UCLIBC_DIR
)/.oldconfig
317 ifeq ($(BR2_PTHREADS
),y
)
318 echo
"LINUXTHREADS=y" >> $(UCLIBC_DIR
)/.oldconfig
320 echo
"# LINUXTHREADS is not set" >> $(UCLIBC_DIR
)/.oldconfig
322 ifeq ($(BR2_PTHREADS_OLD
),y
)
323 echo
"LINUXTHREADS_OLD=y" >> $(UCLIBC_DIR
)/.oldconfig
325 echo
"# LINUXTHREADS_OLD is not set" >> $(UCLIBC_DIR
)/.oldconfig
327 ifeq ($(BR2_PTHREADS_NATIVE
),y
)
328 echo
"UCLIBC_HAS_THREADS_NATIVE=y" >> $(UCLIBC_DIR
)/.oldconfig
330 echo
"# UCLIBC_HAS_THREADS_NATIVE is not set" >> $(UCLIBC_DIR
)/.oldconfig
332 ifeq ($(BR2_PTHREAD_DEBUG
),y
)
333 echo
"PTHREADS_DEBUG_SUPPORT=y" >> $(UCLIBC_DIR
)/.oldconfig
335 echo
"# PTHREADS_DEBUG_SUPPORT is not set" >> $(UCLIBC_DIR
)/.oldconfig
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
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
344 ifeq ($(BR2_USE_WCHAR
),y
)
345 $(SED
) 's,^.*UCLIBC_HAS_WCHAR.*,UCLIBC_HAS_WCHAR=y,g' $(UCLIBC_DIR
)/.oldconfig
347 $(SED
) 's,^.*UCLIBC_HAS_WCHAR.*,UCLIBC_HAS_WCHAR=n,g' $(UCLIBC_DIR
)/.oldconfig
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
352 $(SED
) 's,^.*UCLIBC_HAS_PROGRAM_INVOCATION_NAME.*,UCLIBC_HAS_PROGRAM_INVOCATION_NAME=n,g' $(UCLIBC_DIR
)/.oldconfig
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
385 ifeq ($(BR2_x86_i486
),y
)
386 $(SED
) 's,# CONFIG_486 is not set,CONFIG_486=y,g' $(UCLIBC_DIR
)/.oldconfig
388 ifeq ($(BR2_x86_i586
),y
)
389 $(SED
) 's,# CONFIG_586 is not set,CONFIG_586=y,g' $(UCLIBC_DIR
)/.oldconfig
391 ifeq ($(BR2_x86_i686
),y
)
392 $(SED
) 's,# CONFIG_686 is not set,CONFIG_686=y,g' $(UCLIBC_DIR
)/.oldconfig
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
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
/ \
410 RUNTIME_PREFIX
=$(TOOL_BUILD_DIR
)/uClibc_dev
/ \
412 BUILD_CFLAGS
="$(HOST_CFLAGS)" \
413 BUILD_LDFLAGS
="$(HOST_LDFLAGS)" \
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
/ \
423 RUNTIME_PREFIX
=$(TOOL_BUILD_DIR
)/uClibc_dev
/ \
425 BUILD_CFLAGS
="$(HOST_CFLAGS)" \
426 BUILD_LDFLAGS
="$(HOST_LDFLAGS)" \
427 UCLIBC_EXTRA_LDFLAGS
="$(TARGET_LDFLAGS)" \
428 UCLIBC_EXTRA_CFLAGS
="$(TARGET_CFLAGS)" \
431 set
-x
&& $(MAKE1
) -C
$(UCLIBC_DIR
) \
432 PREFIX
=$(TOOL_BUILD_DIR
)/uClibc_dev
/ \
434 RUNTIME_PREFIX
=$(TOOL_BUILD_DIR
)/uClibc_dev
/ \
436 BUILD_CFLAGS
="$(HOST_CFLAGS)" \
437 BUILD_LDFLAGS
="$(HOST_LDFLAGS)" \
438 UCLIBC_EXTRA_LDFLAGS
="$(TARGET_LDFLAGS)" \
439 UCLIBC_EXTRA_CFLAGS
="$(TARGET_CFLAGS)" \
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/; \
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/; \
462 $(UCLIBC_DIR
)/lib
/libc.a
: $(UCLIBC_DIR
)/.configured
$(gcc_initial
) $(LIBFLOAT_TARGET
)
463 $(MAKE
) -C
$(UCLIBC_DIR
) \
468 BUILD_CFLAGS
="$(HOST_CFLAGS)" \
469 BUILD_LDFLAGS
="$(HOST_LDFLAGS)" \
470 UCLIBC_EXTRA_LDFLAGS
="$(TARGET_LDFLAGS)" \
471 UCLIBC_EXTRA_CFLAGS
="$(TARGET_CFLAGS)" \
475 uclibc-menuconfig
: host-sed
$(UCLIBC_DIR
)/.config
476 $(MAKE1
) -C
$(UCLIBC_DIR
) \
477 PREFIX
=$(TOOL_BUILD_DIR
)/uClibc_dev
/ \
479 RUNTIME_PREFIX
=$(TOOL_BUILD_DIR
)/uClibc_dev
/ \
481 BUILD_CFLAGS
="$(HOST_CFLAGS)" \
482 BUILD_LDFLAGS
="$(HOST_LDFLAGS)" \
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
) \
491 DEVEL_PREFIX
=$(STAGING_DIR
)/ \
492 RUNTIME_PREFIX
=$(STAGING_DIR
)/ \
493 install_runtime install_dev
495 $(MAKE1
) -C
$(UCLIBC_DIR
) \
496 PREFIX
=$(STAGING_DIR
) \
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
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/; \
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/; \
524 # Build the host utils. Need to add an install target...
525 $(MAKE1
) -C
$(UCLIBC_DIR
)/utils \
526 PREFIX
=$(STAGING_DIR
) \
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
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
) \
542 UCLIBC_EXTRA_LDFLAGS
="$(TARGET_LDFLAGS)" \
543 UCLIBC_EXTRA_CFLAGS
="$(TARGET_CFLAGS)" \
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
560 UCLIBC_TARGETS
=$(TARGET_DIR
)/lib
/libc.so
.0
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
581 -$(MAKE1
) -C
$(UCLIBC_DIR
) clean
582 rm -f
$(UCLIBC_DIR
)/.config
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
) \
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/; \
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/; \
624 uclibc_target
: cross_compiler uclibc
$(TARGET_DIR
)/usr
/lib
/libc.a
$(TARGET_DIR
)/usr
/bin
/ldd
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