2013-06-30 21:29:05 +02:00
|
|
|
################################################################################
|
|
|
|
#
|
|
|
|
# uclibc
|
|
|
|
#
|
|
|
|
################################################################################
|
|
|
|
|
|
|
|
UCLIBC_VERSION = $(call qstrip,$(BR2_UCLIBC_VERSION_STRING))
|
2013-12-05 18:20:50 +01:00
|
|
|
UCLIBC_SOURCE ?= uClibc-$(UCLIBC_VERSION).tar.bz2
|
2014-06-24 20:55:49 +02:00
|
|
|
UCLIBC_LICENSE = LGPLv2.1+
|
|
|
|
UCLIBC_LICENSE_FILES = COPYING.LIB
|
2013-06-30 21:29:05 +02:00
|
|
|
|
|
|
|
ifeq ($(BR2_UCLIBC_VERSION_SNAPSHOT),y)
|
|
|
|
UCLIBC_SITE = http://www.uclibc.org/downloads/snapshots
|
2013-12-05 18:20:50 +01:00
|
|
|
else ifeq ($(BR2_arc),y)
|
|
|
|
UCLIBC_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,uClibc,$(UCLIBC_VERSION))
|
|
|
|
UCLIBC_SOURCE = uClibc-$(UCLIBC_VERSION).tar.gz
|
2013-12-29 12:26:26 +01:00
|
|
|
else ifeq ($(BR2_UCLIBC_VERSION_XTENSA_GIT),y)
|
|
|
|
UCLIBC_SITE = git://git.busybox.net/uClibc
|
|
|
|
UCLIBC_SOURCE = uClibc-$(UCLIBC_VERSION).tar.gz
|
2013-06-30 21:29:05 +02:00
|
|
|
else
|
|
|
|
UCLIBC_SITE = http://www.uclibc.org/downloads
|
2013-07-04 15:22:25 +02:00
|
|
|
UCLIBC_SOURCE = uClibc-$(UCLIBC_VERSION).tar.xz
|
2013-06-30 21:29:05 +02:00
|
|
|
endif
|
|
|
|
|
|
|
|
UCLIBC_INSTALL_STAGING = YES
|
|
|
|
|
2014-02-14 10:55:04 +01:00
|
|
|
# uclibc is part of the toolchain so disable the toolchain dependency
|
|
|
|
UCLIBC_ADD_TOOLCHAIN_DEPENDENCY = NO
|
|
|
|
|
2013-06-30 21:29:05 +02:00
|
|
|
# Before uClibc is configured, we must have the first stage
|
|
|
|
# cross-compiler and the kernel headers
|
|
|
|
UCLIBC_DEPENDENCIES = host-gcc-initial linux-headers
|
|
|
|
|
|
|
|
# specifying UCLIBC_CONFIG_FILE on the command-line overrides the .config
|
|
|
|
# setting.
|
|
|
|
ifndef UCLIBC_CONFIG_FILE
|
|
|
|
UCLIBC_CONFIG_FILE = $(call qstrip,$(BR2_UCLIBC_CONFIG))
|
|
|
|
endif
|
|
|
|
|
|
|
|
UCLIBC_TARGET_ARCH = $(call qstrip,$(BR2_UCLIBC_TARGET_ARCH))
|
|
|
|
|
|
|
|
ifeq ($(GENERATE_LOCALE),)
|
|
|
|
# We need at least one locale
|
|
|
|
UCLIBC_LOCALES = en_US
|
|
|
|
else
|
|
|
|
# Strip out the encoding part of locale names, if any
|
|
|
|
UCLIBC_LOCALES = $(foreach locale,$(GENERATE_LOCALE),\
|
|
|
|
$(firstword $(subst .,$(space),$(locale))))
|
|
|
|
endif
|
|
|
|
|
|
|
|
#
|
|
|
|
# ARM definitions
|
|
|
|
#
|
|
|
|
|
|
|
|
ifeq ($(UCLIBC_TARGET_ARCH),arm)
|
|
|
|
define UCLIBC_ARM_ABI_CONFIG
|
|
|
|
$(SED) '/CONFIG_ARM_.ABI/d' $(@D)/.config
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_ENABLE_OPT,CONFIG_ARM_EABI,$(@D)/.config)
|
2013-06-30 21:29:05 +02:00
|
|
|
endef
|
|
|
|
|
2013-07-19 15:06:33 +02:00
|
|
|
# Thumb build is broken with threads, build in ARM mode
|
|
|
|
ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB)$(BR2_TOOLCHAIN_HAS_THREADS),yy)
|
|
|
|
UCLIBC_EXTRA_CFLAGS += -marm
|
|
|
|
endif
|
|
|
|
|
2013-06-30 21:29:05 +02:00
|
|
|
ifeq ($(BR2_UCLIBC_ARM_BX),y)
|
|
|
|
define UCLIBC_ARM_BX_CONFIG
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_ENABLE_OPT,USE_BX,$(@D)/.config)
|
2013-06-30 21:29:05 +02:00
|
|
|
endef
|
|
|
|
else
|
|
|
|
define UCLIBC_ARM_BX_CONFIG
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_DISABLE_OPT,USE_BX,$(@D)/.config)
|
2013-06-30 21:29:05 +02:00
|
|
|
endef
|
|
|
|
endif
|
|
|
|
|
|
|
|
endif # arm
|
|
|
|
|
|
|
|
#
|
|
|
|
# MIPS definitions
|
|
|
|
#
|
|
|
|
|
|
|
|
ifeq ($(UCLIBC_TARGET_ARCH),mips)
|
|
|
|
UCLIBC_MIPS_ABI = CONFIG_MIPS_$(call qstrip,$(BR2_UCLIBC_MIPS_ABI))_ABI
|
|
|
|
define UCLIBC_MIPS_ABI_CONFIG
|
|
|
|
$(SED) '/CONFIG_MIPS_[NO].._ABI/d' $(@D)/.config
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_ENABLE_OPT,$(UCLIBC_MIPS_ABI),$(@D)/.config)
|
2013-06-30 21:29:05 +02:00
|
|
|
endef
|
|
|
|
|
|
|
|
UCLIBC_MIPS_ISA = CONFIG_MIPS_ISA_$(call qstrip,$(BR2_UCLIBC_MIPS_ISA))
|
|
|
|
define UCLIBC_MIPS_ISA_CONFIG
|
|
|
|
$(SED) '/CONFIG_MIPS_ISA_.*/d' $(@D)/.config
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_ENABLE_OPT,$(UCLIBC_MIPS_ISA),$(@D)/.config)
|
2013-06-30 21:29:05 +02:00
|
|
|
endef
|
|
|
|
endif # mips
|
|
|
|
|
|
|
|
#
|
|
|
|
# SH definitions
|
|
|
|
#
|
|
|
|
|
|
|
|
ifeq ($(UCLIBC_TARGET_ARCH),sh)
|
|
|
|
UCLIBC_SH_TYPE = CONFIG_$(call qstrip,$(BR2_UCLIBC_SH_TYPE))
|
|
|
|
define UCLIBC_SH_TYPE_CONFIG
|
|
|
|
$(SED) '/CONFIG_SH[234A]*/d' $(@D)/.config
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_ENABLE_OPT,$(UCLIBC_SH_TYPE),$(@D)/.config)
|
2013-06-30 21:29:05 +02:00
|
|
|
endef
|
|
|
|
endif # sh
|
|
|
|
|
|
|
|
#
|
|
|
|
# SPARC definitions
|
|
|
|
#
|
|
|
|
|
|
|
|
ifeq ($(UCLIBC_TARGET_ARCH),sparc)
|
|
|
|
UCLIBC_SPARC_TYPE = CONFIG_SPARC_$(call qstrip,$(BR2_UCLIBC_SPARC_TYPE))
|
|
|
|
define UCLIBC_SPARC_TYPE_CONFIG
|
|
|
|
$(SED) 's/^\(CONFIG_[^_]*[_]*SPARC[^=]*\)=.*/# \1 is not set/g' \
|
2013-07-05 09:12:02 +02:00
|
|
|
$(@D)/.config
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_ENABLE_OPT,$(UCLIBC_SPARC_TYPE),$(@D)/.config)
|
2013-06-30 21:29:05 +02:00
|
|
|
endef
|
|
|
|
endif # sparc
|
|
|
|
|
|
|
|
#
|
|
|
|
# PowerPC definitions
|
|
|
|
#
|
|
|
|
|
|
|
|
ifeq ($(UCLIBC_TARGET_ARCH),powerpc)
|
|
|
|
UCLIBC_POWERPC_TYPE = CONFIG_$(call qstrip,$(BR2_UCLIBC_POWERPC_TYPE))
|
|
|
|
define UCLIBC_POWERPC_TYPE_CONFIG
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_DISABLE_OPT,CONFIG_GENERIC,$(@D)/.config)
|
|
|
|
$(call KCONFIG_DISABLE_OPT,CONFIG_E500,$(@D)/.config)
|
|
|
|
$(call KCONFIG_ENABLE_OPT,$(UCLIBC_POWERPC_TYPE),$(@D)/.config)
|
2013-06-30 21:29:05 +02:00
|
|
|
endef
|
|
|
|
endif # powerpc
|
|
|
|
|
2013-07-20 14:52:12 +02:00
|
|
|
#
|
|
|
|
# Blackfin definitions
|
|
|
|
#
|
|
|
|
|
|
|
|
ifeq ($(UCLIBC_TARGET_ARCH),bfin)
|
|
|
|
ifeq ($(BR2_BINFMT_FDPIC),y)
|
|
|
|
define UCLIBC_BFIN_CONFIG
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FLAT,$(@D)/.config)
|
|
|
|
$(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FLAT_SEP_DATA,$(@D)/.config)
|
|
|
|
$(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_SHARED_FLAT,$(@D)/.config)
|
|
|
|
$(call KCONFIG_ENABLE_OPT,UCLIBC_FORMAT_FDPIC_ELF,$(@D)/.config)
|
2013-07-20 14:52:12 +02:00
|
|
|
endef
|
|
|
|
endif
|
|
|
|
ifeq ($(BR2_BINFMT_FLAT_ONE),y)
|
|
|
|
define UCLIBC_BFIN_CONFIG
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_ENABLE_OPT,UCLIBC_FORMAT_FLAT,$(@D)/.config)
|
|
|
|
$(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FLAT_SEP_DATA,$(@D)/.config)
|
|
|
|
$(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_SHARED_FLAT,$(@D)/.config)
|
|
|
|
$(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FDPIC_ELF,$(@D)/.config)
|
2013-07-20 14:52:12 +02:00
|
|
|
endef
|
|
|
|
endif
|
|
|
|
ifeq ($(BR2_BINFMT_FLAT_SEP_DATA),y)
|
|
|
|
define UCLIBC_BFIN_CONFIG
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FLAT,$(@D)/.config)
|
|
|
|
$(call KCONFIG_ENABLE_OPT,UCLIBC_FORMAT_FLAT_SEP_DATA,$(@D)/.config)
|
|
|
|
$(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_SHARED_FLAT,$(@D)/.config)
|
|
|
|
$(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FDPIC_ELF,$(@D)/.config)
|
2013-07-20 14:52:12 +02:00
|
|
|
endef
|
|
|
|
endif
|
|
|
|
ifeq ($(BR2_BINFMT_FLAT_SHARED),y)
|
|
|
|
define UCLIBC_BFIN_CONFIG
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FLAT,$(@D)/.config)
|
|
|
|
$(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FLAT_SEP_DATA,$(@D)/.config)
|
|
|
|
$(call KCONFIG_ENABLE_OPT,UCLIBC_FORMAT_SHARED_FLAT,$(@D)/.config)
|
|
|
|
$(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FDPIC_ELF,$(@D)/.config)
|
2013-07-20 14:52:12 +02:00
|
|
|
endef
|
|
|
|
endif
|
|
|
|
endif # bfin
|
|
|
|
|
2013-06-30 21:29:05 +02:00
|
|
|
#
|
|
|
|
# AVR32 definitions
|
|
|
|
#
|
|
|
|
|
|
|
|
ifeq ($(UCLIBC_TARGET_ARCH),avr32)
|
|
|
|
define UCLIBC_AVR32_CONFIG
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_ENABLE_OPT,LINKRELAX,$(@D)/.config)
|
2013-06-30 21:29:05 +02:00
|
|
|
endef
|
|
|
|
endif # avr32
|
|
|
|
|
|
|
|
#
|
|
|
|
# x86 definitions
|
|
|
|
#
|
|
|
|
ifeq ($(UCLIBC_TARGET_ARCH),i386)
|
|
|
|
UCLIBC_X86_TYPE = CONFIG_$(call qstrip,$(BR2_UCLIBC_X86_TYPE))
|
|
|
|
define UCLIBC_X86_TYPE_CONFIG
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_ENABLE_OPT,$(UCLIBC_X86_TYPE),$(@D)/.config)
|
2013-06-30 21:29:05 +02:00
|
|
|
endef
|
|
|
|
endif
|
|
|
|
|
|
|
|
#
|
2014-04-30 21:18:57 +02:00
|
|
|
# Endianness
|
2013-06-30 21:29:05 +02:00
|
|
|
#
|
|
|
|
|
|
|
|
ifeq ($(call qstrip,$(BR2_ENDIAN)),BIG)
|
|
|
|
define UCLIBC_ENDIAN_CONFIG
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_ENABLE_OPT,ARCH_BIG_ENDIAN,$(@D)/.config)
|
|
|
|
$(call KCONFIG_ENABLE_OPT,ARCH_WANTS_BIG_ENDIAN,$(@D)/.config)
|
|
|
|
$(call KCONFIG_DISABLE_OPT,ARCH_LITTLE_ENDIAN,$(@D)/.config)
|
|
|
|
$(call KCONFIG_DISABLE_OPT,ARCH_WANTS_LITTLE_ENDIAN,$(@D)/.config)
|
2013-06-30 21:29:05 +02:00
|
|
|
endef
|
|
|
|
else
|
|
|
|
define UCLIBC_ENDIAN_CONFIG
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_ENABLE_OPT,ARCH_LITTLE_ENDIAN,$(@D)/.config)
|
|
|
|
$(call KCONFIG_ENABLE_OPT,ARCH_WANTS_LITTLE_ENDIAN,$(@D)/.config)
|
|
|
|
$(call KCONFIG_DISABLE_OPT,ARCH_BIG_ENDIAN,$(@D)/.config)
|
|
|
|
$(call KCONFIG_DISABLE_OPT,ARCH_WANTS_BIG_ENDIAN,$(@D)/.config)
|
2013-06-30 21:29:05 +02:00
|
|
|
endef
|
|
|
|
endif
|
|
|
|
|
|
|
|
#
|
|
|
|
# Largefile
|
|
|
|
#
|
|
|
|
|
|
|
|
ifeq ($(BR2_TOOLCHAIN_BUILDROOT_LARGEFILE),y)
|
|
|
|
define UCLIBC_LARGEFILE_CONFIG
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_LFS,$(@D)/.config)
|
2013-06-30 21:29:05 +02:00
|
|
|
endef
|
|
|
|
else
|
|
|
|
define UCLIBC_LARGEFILE_CONFIG
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_LFS,$(@D)/.config)
|
|
|
|
$(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_FOPEN_LARGEFILE_MODE,$(@D)/.config)
|
2013-06-30 21:29:05 +02:00
|
|
|
endef
|
|
|
|
endif
|
|
|
|
|
2013-08-09 21:23:40 +02:00
|
|
|
#
|
|
|
|
# MMU
|
|
|
|
#
|
|
|
|
|
|
|
|
ifeq ($(BR2_USE_MMU),y)
|
|
|
|
define UCLIBC_MMU_CONFIG
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_ENABLE_OPT,ARCH_USE_MMU,$(@D)/.config)
|
2013-08-09 21:23:40 +02:00
|
|
|
endef
|
|
|
|
else
|
|
|
|
define UCLIBC_MMU_CONFIG
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_DISABLE_OPT,ARCH_USE_MMU,$(@D)/.config)
|
2013-08-09 21:23:40 +02:00
|
|
|
endef
|
|
|
|
endif
|
|
|
|
|
2013-06-30 21:29:05 +02:00
|
|
|
#
|
|
|
|
# IPv6
|
|
|
|
#
|
|
|
|
|
|
|
|
ifeq ($(BR2_TOOLCHAIN_BUILDROOT_INET_IPV6),y)
|
2014-07-14 13:50:27 +02:00
|
|
|
UCLIBC_IPV6_CONFIG = $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_IPV6,$(@D)/.config)
|
2013-06-30 21:29:05 +02:00
|
|
|
else
|
2014-07-14 13:50:27 +02:00
|
|
|
UCLIBC_IPV6_CONFIG = $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_IPV6,$(@D)/.config)
|
2013-06-30 21:29:05 +02:00
|
|
|
endif
|
|
|
|
|
|
|
|
#
|
|
|
|
# RPC
|
|
|
|
#
|
|
|
|
|
|
|
|
ifeq ($(BR2_TOOLCHAIN_BUILDROOT_INET_RPC),y)
|
|
|
|
define UCLIBC_RPC_CONFIG
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_RPC,$(@D)/.config)
|
|
|
|
$(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_FULL_RPC,$(@D)/.config)
|
|
|
|
$(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_REENTRANT_RPC,$(@D)/.config)
|
2013-06-30 21:29:05 +02:00
|
|
|
endef
|
|
|
|
else
|
|
|
|
define UCLIBC_RPC_CONFIG
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_RPC,$(@D)/.config)
|
|
|
|
$(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_FULL_RPC,$(@D)/.config)
|
|
|
|
$(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_REENTRANT_RPC,$(@D)/.config)
|
2013-06-30 21:29:05 +02:00
|
|
|
endef
|
|
|
|
endif
|
|
|
|
|
|
|
|
#
|
|
|
|
# soft-float
|
|
|
|
#
|
|
|
|
|
|
|
|
ifeq ($(BR2_SOFT_FLOAT),y)
|
|
|
|
define UCLIBC_FLOAT_CONFIG
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_FPU,$(@D)/.config)
|
|
|
|
$(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_FLOATS,$(@D)/.config)
|
|
|
|
$(call KCONFIG_ENABLE_OPT,DO_C99_MATH,$(@D)/.config)
|
2013-06-30 21:29:05 +02:00
|
|
|
endef
|
|
|
|
else
|
|
|
|
define UCLIBC_FLOAT_CONFIG
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_FPU,$(@D)/.config)
|
|
|
|
$(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_FLOATS,$(@D)/.config)
|
2013-06-30 21:29:05 +02:00
|
|
|
endef
|
|
|
|
endif
|
|
|
|
|
|
|
|
#
|
|
|
|
# SSP
|
|
|
|
#
|
|
|
|
ifeq ($(BR2_TOOLCHAIN_BUILDROOT_USE_SSP),y)
|
2013-07-04 20:30:26 +02:00
|
|
|
define UCLIBC_SSP_CONFIG
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_SSP,$(@D)/.config)
|
|
|
|
$(call KCONFIG_ENABLE_OPT,UCLIBC_BUILD_SSP,$(@D)/.config)
|
2013-07-04 20:30:26 +02:00
|
|
|
endef
|
2013-06-30 21:29:05 +02:00
|
|
|
else
|
2013-07-04 20:30:26 +02:00
|
|
|
define UCLIBC_SSP_CONFIG
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_SSP,$(@D)/.config)
|
|
|
|
$(call KCONFIG_DISABLE_OPT,UCLIBC_BUILD_SSP,$(@D)/.config)
|
2013-07-04 20:30:26 +02:00
|
|
|
endef
|
2013-06-30 21:29:05 +02:00
|
|
|
endif
|
|
|
|
|
|
|
|
#
|
|
|
|
# Threads
|
|
|
|
#
|
|
|
|
ifeq ($(BR2_PTHREADS_NONE),y)
|
|
|
|
define UCLIBC_THREAD_CONFIG
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_THREADS,$(@D)/.config)
|
|
|
|
$(call KCONFIG_DISABLE_OPT,LINUXTHREADS,$(@D)/.config)
|
|
|
|
$(call KCONFIG_DISABLE_OPT,LINUXTHREADS_OLD,$(@D)/.config)
|
|
|
|
$(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_THREADS_NATIVE,$(@D)/.config)
|
2013-06-30 21:29:05 +02:00
|
|
|
endef
|
|
|
|
else ifeq ($(BR2_PTHREADS),y)
|
|
|
|
define UCLIBC_THREAD_CONFIG
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_THREADS,$(@D)/.config)
|
|
|
|
$(call KCONFIG_ENABLE_OPT,LINUXTHREADS_NEW,$(@D)/.config)
|
|
|
|
$(call KCONFIG_DISABLE_OPT,LINUXTHREADS_OLD,$(@D)/.config)
|
|
|
|
$(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_THREADS_NATIVE,$(@D)/.config)
|
2013-06-30 21:29:05 +02:00
|
|
|
endef
|
|
|
|
else ifeq ($(BR2_PTHREADS_OLD),y)
|
|
|
|
define UCLIBC_THREAD_CONFIG
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_THREADS,$(@D)/.config)
|
|
|
|
$(call KCONFIG_DISABLE_OPT,LINUXTHREADS_NEW,$(@D)/.config)
|
|
|
|
$(call KCONFIG_ENABLE_OPT,LINUXTHREADS_OLD,$(@D)/.config)
|
|
|
|
$(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_THREADS_NATIVE,$(@D)/.config)
|
2013-06-30 21:29:05 +02:00
|
|
|
endef
|
|
|
|
else ifeq ($(BR2_PTHREADS_NATIVE),y)
|
|
|
|
define UCLIBC_THREAD_CONFIG
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_THREADS,$(@D)/.config)
|
|
|
|
$(call KCONFIG_DISABLE_OPT,LINUXTHREADS_NEW,$(@D)/.config)
|
|
|
|
$(call KCONFIG_DISABLE_OPT,LINUXTHREADS_OLD,$(@D)/.config)
|
|
|
|
$(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_THREADS_NATIVE,$(@D)/.config)
|
2013-06-30 21:29:05 +02:00
|
|
|
endef
|
|
|
|
endif
|
|
|
|
|
|
|
|
#
|
|
|
|
# Thread debug
|
|
|
|
#
|
|
|
|
|
|
|
|
ifeq ($(BR2_PTHREAD_DEBUG),y)
|
2014-07-14 13:50:27 +02:00
|
|
|
UCLIBC_THREAD_DEBUG_CONFIG = $(call KCONFIG_ENABLE_OPT,PTHREADS_DEBUG_SUPPORT,$(@D)/.config)
|
2013-06-30 21:29:05 +02:00
|
|
|
else
|
2014-07-14 13:50:27 +02:00
|
|
|
UCLIBC_THREAD_DEBUG_CONFIG = $(call KCONFIG_DISABLE_OPT,PTHREADS_DEBUG_SUPPORT,$(@D)/.config)
|
2013-06-30 21:29:05 +02:00
|
|
|
endif
|
|
|
|
|
|
|
|
#
|
|
|
|
# Locale
|
|
|
|
#
|
|
|
|
|
|
|
|
ifeq ($(BR2_TOOLCHAIN_BUILDROOT_LOCALE),y)
|
|
|
|
define UCLIBC_LOCALE_CONFIG
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_LOCALE,$(@D)/.config)
|
|
|
|
$(call KCONFIG_DISABLE_OPT,UCLIBC_BUILD_ALL_LOCALE,$(@D)/.config)
|
|
|
|
$(call KCONFIG_ENABLE_OPT,UCLIBC_BUILD_MINIMAL_LOCALE,$(@D)/.config)
|
|
|
|
$(call KCONFIG_SET_OPT,UCLIBC_BUILD_MINIMAL_LOCALES,"$(UCLIBC_LOCALES)",$(@D)/.config)
|
|
|
|
$(call KCONFIG_DISABLE_OPT,UCLIBC_PREGENERATED_LOCALE_DATA,$(@D)/.config)
|
|
|
|
$(call KCONFIG_DISABLE_OPT,DOWNLOAD_PREGENERATED_LOCALE_DATA,$(@D)/.config)
|
|
|
|
$(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_XLOCALE,$(@D)/.config)
|
|
|
|
$(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_GLIBC_DIGIT_GROUPING,$(@D)/.config)
|
2013-06-30 21:29:05 +02:00
|
|
|
endef
|
|
|
|
else
|
|
|
|
define UCLIBC_LOCALE_CONFIG
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_LOCALE,$(@D)/.config)
|
2013-06-30 21:29:05 +02:00
|
|
|
endef
|
|
|
|
endif
|
|
|
|
|
|
|
|
#
|
|
|
|
# wchar
|
|
|
|
#
|
|
|
|
|
|
|
|
ifeq ($(BR2_TOOLCHAIN_BUILDROOT_WCHAR),y)
|
2014-07-14 13:50:27 +02:00
|
|
|
UCLIBC_WCHAR_CONFIG = $(call KCONFIG_ENABLE_OPT,UCLIBC_HAS_WCHAR,$(@D)/.config)
|
2013-06-30 21:29:05 +02:00
|
|
|
else
|
2014-07-14 13:50:27 +02:00
|
|
|
UCLIBC_WCHAR_CONFIG = $(call KCONFIG_DISABLE_OPT,UCLIBC_HAS_WCHAR,$(@D)/.config)
|
2013-06-30 21:29:05 +02:00
|
|
|
endif
|
|
|
|
|
|
|
|
#
|
|
|
|
# strip
|
|
|
|
#
|
|
|
|
|
|
|
|
ifeq ($(BR2_STRIP_none),y)
|
2014-07-14 13:50:27 +02:00
|
|
|
UCLIBC_STRIP_CONFIG = $(call KCONFIG_DISABLE_OPT,DOSTRIP,$(@D)/.config)
|
2013-12-22 16:31:38 +01:00
|
|
|
else
|
2014-07-14 13:50:27 +02:00
|
|
|
UCLIBC_STRIP_CONFIG = $(call KCONFIG_ENABLE_OPT,DOSTRIP,$(@D)/.config)
|
2013-06-30 21:29:05 +02:00
|
|
|
endif
|
|
|
|
|
|
|
|
#
|
|
|
|
# Commands
|
|
|
|
#
|
|
|
|
|
|
|
|
UCLIBC_MAKE_FLAGS = \
|
|
|
|
ARCH="$(UCLIBC_TARGET_ARCH)" \
|
|
|
|
CROSS_COMPILE="$(TARGET_CROSS)" \
|
2013-07-19 15:06:33 +02:00
|
|
|
UCLIBC_EXTRA_CFLAGS="$(UCLIBC_EXTRA_CFLAGS) $(TARGET_ABI)" \
|
2013-06-30 21:29:05 +02:00
|
|
|
HOSTCC="$(HOSTCC)"
|
|
|
|
|
2014-07-18 20:54:54 +02:00
|
|
|
define UCLIBC_FIXUP_DOT_CONFIG
|
2014-07-14 13:50:27 +02:00
|
|
|
$(call KCONFIG_SET_OPT,CROSS_COMPILER_PREFIX,"$(TARGET_CROSS)",$(@D)/.config)
|
|
|
|
$(call KCONFIG_ENABLE_OPT,TARGET_$(UCLIBC_TARGET_ARCH),$(@D)/.config)
|
|
|
|
$(call KCONFIG_SET_OPT,TARGET_ARCH,"$(UCLIBC_TARGET_ARCH)",$(@D)/.config)
|
|
|
|
$(call KCONFIG_SET_OPT,KERNEL_HEADERS,"$(LINUX_HEADERS_DIR)/usr/include",$(@D)/.config)
|
|
|
|
$(call KCONFIG_SET_OPT,RUNTIME_PREFIX,"/",$(@D)/.config)
|
|
|
|
$(call KCONFIG_SET_OPT,DEVEL_PREFIX,"/usr",$(@D)/.config)
|
|
|
|
$(call KCONFIG_SET_OPT,SHARED_LIB_LOADER_PREFIX,"/lib",$(@D)/.config)
|
2013-09-05 04:24:19 +02:00
|
|
|
$(UCLIBC_MMU_CONFIG)
|
2013-06-30 21:29:05 +02:00
|
|
|
$(UCLIBC_ARM_ABI_CONFIG)
|
|
|
|
$(UCLIBC_ARM_BX_CONFIG)
|
|
|
|
$(UCLIBC_MIPS_ABI_CONFIG)
|
|
|
|
$(UCLIBC_MIPS_ISA_CONFIG)
|
|
|
|
$(UCLIBC_SH_TYPE_CONFIG)
|
|
|
|
$(UCLIBC_SPARC_TYPE_CONFIG)
|
|
|
|
$(UCLIBC_POWERPC_TYPE_CONFIG)
|
|
|
|
$(UCLIBC_AVR32_CONFIG)
|
2013-07-20 14:52:12 +02:00
|
|
|
$(UCLIBC_BFIN_CONFIG)
|
2013-06-30 21:29:05 +02:00
|
|
|
$(UCLIBC_X86_TYPE_CONFIG)
|
|
|
|
$(UCLIBC_ENDIAN_CONFIG)
|
|
|
|
$(UCLIBC_LARGEFILE_CONFIG)
|
|
|
|
$(UCLIBC_IPV6_CONFIG)
|
|
|
|
$(UCLIBC_RPC_CONFIG)
|
|
|
|
$(UCLIBC_FLOAT_CONFIG)
|
|
|
|
$(UCLIBC_SSP_CONFIG)
|
|
|
|
$(UCLIBC_THREAD_CONFIG)
|
|
|
|
$(UCLIBC_THREAD_DEBUG_CONFIG)
|
|
|
|
$(UCLIBC_LOCALE_CONFIG)
|
|
|
|
$(UCLIBC_WCHAR_CONFIG)
|
|
|
|
$(UCLIBC_STRIP_CONFIG)
|
|
|
|
yes "" | $(MAKE1) -C $(@D) \
|
|
|
|
$(UCLIBC_MAKE_FLAGS) \
|
|
|
|
PREFIX=$(STAGING_DIR) \
|
|
|
|
DEVEL_PREFIX=/usr/ \
|
|
|
|
RUNTIME_PREFIX=$(STAGING_DIR) \
|
|
|
|
oldconfig
|
2013-07-18 11:25:49 +02:00
|
|
|
endef
|
|
|
|
|
|
|
|
define UCLIBC_CONFIGURE_CMDS
|
2013-06-30 21:29:05 +02:00
|
|
|
$(MAKE1) -C $(UCLIBC_DIR) \
|
|
|
|
$(UCLIBC_MAKE_FLAGS) \
|
|
|
|
PREFIX=$(STAGING_DIR) \
|
|
|
|
DEVEL_PREFIX=/usr/ \
|
|
|
|
RUNTIME_PREFIX=$(STAGING_DIR) \
|
2013-07-20 14:52:11 +02:00
|
|
|
headers startfiles \
|
|
|
|
install_headers install_startfiles
|
2013-07-18 23:47:50 +02:00
|
|
|
$(TARGET_CROSS)gcc -nostdlib \
|
2013-06-30 21:29:05 +02:00
|
|
|
-nostartfiles -shared -x c /dev/null -o $(STAGING_DIR)/usr/lib/libc.so
|
2013-07-18 23:47:50 +02:00
|
|
|
$(TARGET_CROSS)gcc -nostdlib \
|
2013-06-30 21:29:05 +02:00
|
|
|
-nostartfiles -shared -x c /dev/null -o $(STAGING_DIR)/usr/lib/libm.so
|
|
|
|
endef
|
|
|
|
|
|
|
|
ifeq ($(BR2_UCLIBC_INSTALL_TEST_SUITE),y)
|
|
|
|
define UCLIBC_BUILD_TEST_SUITE
|
|
|
|
$(MAKE1) -C $(@D)/test \
|
|
|
|
$(UCLIBC_MAKE_FLAGS) \
|
|
|
|
ARCH_CFLAGS=-I$(STAGING_DIR)/usr/include \
|
|
|
|
UCLIBC_ONLY=1 \
|
|
|
|
TEST_INSTALLED_UCLIBC=1 \
|
|
|
|
compile
|
|
|
|
endef
|
|
|
|
endif
|
|
|
|
|
2014-06-30 18:16:53 +02:00
|
|
|
# In uClibc 0.9.31 parallel building is broken so we have to disable it
|
|
|
|
# Fortunately uClibc 0.9.31 is only used by AVR32 and in its turn AVR32 is
|
|
|
|
# about to be removed from buildroot.
|
|
|
|
#
|
|
|
|
# So as soon as AVR32 is removed please revert this patch so instead of
|
|
|
|
# UCLIBC_MAKE normal "MAKE" is used in UCLIBC_BUILD_CMDS
|
|
|
|
ifeq ($(BR2_UCLIBC_VERSION_0_9_31),y)
|
|
|
|
UCLIBC_MAKE = $(MAKE1)
|
|
|
|
else
|
|
|
|
UCLIBC_MAKE = $(MAKE)
|
|
|
|
endif
|
|
|
|
|
2013-06-30 21:29:05 +02:00
|
|
|
define UCLIBC_BUILD_CMDS
|
2014-06-30 18:16:53 +02:00
|
|
|
$(UCLIBC_MAKE) -C $(@D) \
|
2013-06-30 21:29:05 +02:00
|
|
|
$(UCLIBC_MAKE_FLAGS) \
|
|
|
|
PREFIX= \
|
|
|
|
DEVEL_PREFIX=/ \
|
|
|
|
RUNTIME_PREFIX=/ \
|
|
|
|
all
|
2014-06-27 18:26:00 +02:00
|
|
|
$(MAKE) -C $(@D)/utils \
|
2013-06-30 21:29:05 +02:00
|
|
|
PREFIX=$(HOST_DIR) \
|
|
|
|
HOSTCC="$(HOSTCC)" hostutils
|
|
|
|
endef
|
|
|
|
|
|
|
|
ifeq ($(BR2_UCLIBC_INSTALL_TEST_SUITE),y)
|
|
|
|
define UCLIBC_INSTALL_TEST_SUITE
|
|
|
|
mkdir -p $(TARGET_DIR)/root/uClibc
|
|
|
|
cp -rdpf $(@D)/test $(TARGET_DIR)/root/uClibc
|
|
|
|
$(INSTALL) -D -m 0644 $(@D)/Rules.mak $(TARGET_DIR)/root/uClibc/Rules.mak
|
|
|
|
$(INSTALL) -D -m 0644 $(@D)/.config $(TARGET_DIR)/root/uClibc/.config
|
|
|
|
endef
|
|
|
|
endif
|
|
|
|
|
2013-07-20 14:52:09 +02:00
|
|
|
ifeq ($(BR2_UCLIBC_INSTALL_UTILS),y)
|
|
|
|
define UCLIBC_INSTALL_UTILS_TARGET
|
|
|
|
$(MAKE1) -C $(@D) \
|
|
|
|
CC="$(TARGET_CC)" CPP="$(TARGET_CPP)" LD="$(TARGET_LD)" \
|
|
|
|
ARCH="$(UCLIBC_TARGET_ARCH)" \
|
|
|
|
PREFIX=$(TARGET_DIR) \
|
|
|
|
utils install_utils
|
|
|
|
endef
|
|
|
|
endif
|
|
|
|
|
2013-06-30 21:29:05 +02:00
|
|
|
define UCLIBC_INSTALL_TARGET_CMDS
|
|
|
|
$(MAKE1) -C $(@D) \
|
|
|
|
$(UCLIBC_MAKE_FLAGS) \
|
|
|
|
PREFIX=$(TARGET_DIR) \
|
|
|
|
DEVEL_PREFIX=/usr/ \
|
|
|
|
RUNTIME_PREFIX=/ \
|
|
|
|
install_runtime
|
2013-07-20 14:52:09 +02:00
|
|
|
$(UCLIBC_INSTALL_UTILS_TARGET)
|
2014-07-22 16:27:58 +02:00
|
|
|
$(UCLIBC_BUILD_TEST_SUITE)
|
2013-06-30 21:29:05 +02:00
|
|
|
$(UCLIBC_INSTALL_TEST_SUITE)
|
|
|
|
endef
|
|
|
|
|
2014-05-26 00:12:56 +02:00
|
|
|
# STATIC has no ld* tools, only getconf
|
|
|
|
ifeq ($(BR2_PREFER_STATIC_LIB),)
|
2013-07-20 14:52:13 +02:00
|
|
|
define UCLIBC_INSTALL_UTILS_STAGING
|
|
|
|
$(INSTALL) -D -m 0755 $(@D)/utils/ldd.host $(HOST_DIR)/usr/bin/ldd
|
|
|
|
ln -sf ldd $(HOST_DIR)/usr/bin/$(GNU_TARGET_NAME)-ldd
|
|
|
|
$(INSTALL) -D -m 0755 $(@D)/utils/ldconfig.host $(HOST_DIR)/usr/bin/ldconfig
|
|
|
|
ln -sf ldconfig $(HOST_DIR)/usr/bin/$(GNU_TARGET_NAME)-ldconfig
|
|
|
|
endef
|
|
|
|
endif
|
|
|
|
|
2013-06-30 21:29:05 +02:00
|
|
|
define UCLIBC_INSTALL_STAGING_CMDS
|
|
|
|
$(MAKE1) -C $(@D) \
|
|
|
|
$(UCLIBC_MAKE_FLAGS) \
|
|
|
|
PREFIX=$(STAGING_DIR) \
|
|
|
|
DEVEL_PREFIX=/usr/ \
|
|
|
|
RUNTIME_PREFIX=/ \
|
|
|
|
install_runtime install_dev
|
2013-07-20 14:52:13 +02:00
|
|
|
$(UCLIBC_INSTALL_UTILS_STAGING)
|
2013-06-30 21:29:05 +02:00
|
|
|
endef
|
|
|
|
|
2014-07-18 20:54:55 +02:00
|
|
|
$(eval $(generic-package))
|
|
|
|
|
|
|
|
$(UCLIBC_DIR)/.config: $(UCLIBC_CONFIG_FILE) | uclibc-patch
|
|
|
|
$(INSTALL) -m 0644 $(UCLIBC_CONFIG_FILE) $(UCLIBC_DIR)/.config
|
|
|
|
|
uclibc: update-config: preserve freshly configured settings
In the sequence:
make uclibc-menuconfig
make uclibc-update-config
the freshly configured settings from the menuconfig are lost during the
update-config step. This is because update-config depends on the configure
step, which starts by copying the config file to the build directory.
Instead, stop depending on the configure step from update-config, and
introduce a new stamp file .stamp_config_fixup_done, which applies any
fixups on the .config file.
An alternative solution would be to add a call to UCLIBC_FIXUP_DOT_CONFIG to
the relevant targets instead of depending on a new stamp file. The advantage
of the stamp file, though, is that we avoid redoing the fixup unnecessarily.
Moreover, in the light of the plan to extract the kconfig-specific bits into
a separate kconfig-package infrastructure, the stamp file rules are more
easily moved into such an infrastructure, while the alternative solution
requires the package .mk file to explicitly call the FIXUP rules which may
more easily be forgotten.
No longer depending on the configure step has the added bonus that
'uclibc-update-config' no longer needs the toolchain to be available, which
makes:
make clean uclibc-menuconfig uclibc-update-config
much faster and user-friendly.
Additionally, make sure that 'make clean uclibc-update-config' works
properly, by depending on .stamp_config_fixup_done so that the config file
is present and fixed.
Fixes bug #7154 https://bugs.busybox.net/show_bug.cgi?id=7154
Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2014-07-18 20:54:56 +02:00
|
|
|
$(UCLIBC_DIR)/.stamp_config_fixup_done: $(UCLIBC_DIR)/.config
|
|
|
|
$(UCLIBC_FIXUP_DOT_CONFIG)
|
|
|
|
$(Q)touch $@
|
|
|
|
|
|
|
|
$(UCLIBC_TARGET_CONFIGURE): $(UCLIBC_DIR)/.stamp_config_fixup_done
|
2014-07-18 20:54:55 +02:00
|
|
|
|
|
|
|
uclibc-menuconfig: $(UCLIBC_DIR)/.config
|
2014-07-24 19:49:29 +02:00
|
|
|
$(MAKE) -C $(UCLIBC_DIR) \
|
2013-06-30 21:29:05 +02:00
|
|
|
$(UCLIBC_MAKE_FLAGS) \
|
|
|
|
PREFIX=$(STAGING_DIR) \
|
|
|
|
DEVEL_PREFIX=/usr/ \
|
|
|
|
RUNTIME_PREFIX=$(STAGING_DIR)/ \
|
|
|
|
menuconfig
|
uclibc: update-config: preserve freshly configured settings
In the sequence:
make uclibc-menuconfig
make uclibc-update-config
the freshly configured settings from the menuconfig are lost during the
update-config step. This is because update-config depends on the configure
step, which starts by copying the config file to the build directory.
Instead, stop depending on the configure step from update-config, and
introduce a new stamp file .stamp_config_fixup_done, which applies any
fixups on the .config file.
An alternative solution would be to add a call to UCLIBC_FIXUP_DOT_CONFIG to
the relevant targets instead of depending on a new stamp file. The advantage
of the stamp file, though, is that we avoid redoing the fixup unnecessarily.
Moreover, in the light of the plan to extract the kconfig-specific bits into
a separate kconfig-package infrastructure, the stamp file rules are more
easily moved into such an infrastructure, while the alternative solution
requires the package .mk file to explicitly call the FIXUP rules which may
more easily be forgotten.
No longer depending on the configure step has the added bonus that
'uclibc-update-config' no longer needs the toolchain to be available, which
makes:
make clean uclibc-menuconfig uclibc-update-config
much faster and user-friendly.
Additionally, make sure that 'make clean uclibc-update-config' works
properly, by depending on .stamp_config_fixup_done so that the config file
is present and fixed.
Fixes bug #7154 https://bugs.busybox.net/show_bug.cgi?id=7154
Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2014-07-18 20:54:56 +02:00
|
|
|
rm -f $(UCLIBC_DIR)/.stamp_{config_fixup_done,configured,built}
|
|
|
|
rm -f $(UCLIBC_DIR)/.stamp_{target,staging}_installed
|
2013-06-30 21:29:05 +02:00
|
|
|
|
uclibc: update-config: preserve freshly configured settings
In the sequence:
make uclibc-menuconfig
make uclibc-update-config
the freshly configured settings from the menuconfig are lost during the
update-config step. This is because update-config depends on the configure
step, which starts by copying the config file to the build directory.
Instead, stop depending on the configure step from update-config, and
introduce a new stamp file .stamp_config_fixup_done, which applies any
fixups on the .config file.
An alternative solution would be to add a call to UCLIBC_FIXUP_DOT_CONFIG to
the relevant targets instead of depending on a new stamp file. The advantage
of the stamp file, though, is that we avoid redoing the fixup unnecessarily.
Moreover, in the light of the plan to extract the kconfig-specific bits into
a separate kconfig-package infrastructure, the stamp file rules are more
easily moved into such an infrastructure, while the alternative solution
requires the package .mk file to explicitly call the FIXUP rules which may
more easily be forgotten.
No longer depending on the configure step has the added bonus that
'uclibc-update-config' no longer needs the toolchain to be available, which
makes:
make clean uclibc-menuconfig uclibc-update-config
much faster and user-friendly.
Additionally, make sure that 'make clean uclibc-update-config' works
properly, by depending on .stamp_config_fixup_done so that the config file
is present and fixed.
Fixes bug #7154 https://bugs.busybox.net/show_bug.cgi?id=7154
Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2014-07-18 20:54:56 +02:00
|
|
|
uclibc-update-config: $(UCLIBC_DIR)/.stamp_config_fixup_done
|
2014-04-30 21:18:57 +02:00
|
|
|
cp -f $(UCLIBC_DIR)/.config $(UCLIBC_CONFIG_FILE)
|
|
|
|
|
2014-02-14 10:55:05 +01:00
|
|
|
# Before uClibc is built, we must have the second stage cross-compiler
|
|
|
|
$(UCLIBC_TARGET_BUILD): | host-gcc-intermediate
|