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
|
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
|
|
|
|
|
|
|
|
#
|
|
|
|
# Utility functions to manipulation the uClibc configuration file
|
|
|
|
#
|
|
|
|
|
|
|
|
define UCLIBC_OPT_SET
|
|
|
|
$(SED) '/$(1)/d' $(3)/.config
|
|
|
|
echo '$(1)=$(2)' >> $(3)/.config
|
|
|
|
endef
|
|
|
|
|
|
|
|
define UCLIBC_OPT_UNSET
|
|
|
|
$(SED) '/$(1)/d' $(2)/.config
|
|
|
|
echo '# $(1) is not set' >> $(2)/.config
|
|
|
|
endef
|
|
|
|
|
|
|
|
#
|
|
|
|
# ARM definitions
|
|
|
|
#
|
|
|
|
|
|
|
|
ifeq ($(UCLIBC_TARGET_ARCH),arm)
|
|
|
|
UCLIBC_ARM_TYPE = CONFIG_$(call qstrip,$(BR2_UCLIBC_ARM_TYPE))
|
|
|
|
|
|
|
|
define UCLIBC_ARM_TYPE_CONFIG
|
|
|
|
$(SED) 's/^\(CONFIG_[^_]*[_]*ARM[^=]*\)=.*/# \1 is not set/g' \
|
|
|
|
$(@D)/.config
|
|
|
|
$(call UCLIBC_OPT_SET,$(UCLIBC_ARM_TYPE),y,$(@D))
|
|
|
|
endef
|
|
|
|
|
|
|
|
define UCLIBC_ARM_ABI_CONFIG
|
|
|
|
$(SED) '/CONFIG_ARM_.ABI/d' $(@D)/.config
|
2013-07-14 00:27:34 +02:00
|
|
|
$(call UCLIBC_OPT_SET,CONFIG_ARM_EABI,y,$(@D))
|
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
|
|
|
|
$(call UCLIBC_OPT_SET,USE_BX,y,$(@D))
|
|
|
|
endef
|
|
|
|
else
|
|
|
|
define UCLIBC_ARM_BX_CONFIG
|
2013-08-07 00:53:58 +02:00
|
|
|
$(call UCLIBC_OPT_UNSET,USE_BX,$(@D))
|
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
|
|
|
|
$(call UCLIBC_OPT_SET,$(UCLIBC_MIPS_ABI),y,$(@D))
|
|
|
|
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
|
|
|
|
$(call UCLIBC_OPT_SET,$(UCLIBC_MIPS_ISA),y,$(@D))
|
|
|
|
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
|
2013-07-05 09:12:02 +02:00
|
|
|
$(call UCLIBC_OPT_SET,$(UCLIBC_SH_TYPE),y,$(@D))
|
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
|
2013-06-30 21:29:05 +02:00
|
|
|
$(call UCLIBC_OPT_SET,$(UCLIBC_SPARC_TYPE),y,$(@D))
|
|
|
|
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
|
|
|
|
$(call UCLIBC_OPT_UNSET,CONFIG_GENERIC,$(@D))
|
|
|
|
$(call UCLIBC_OPT_UNSET,CONFIG_E500,$(@D))
|
2013-07-04 12:09:34 +02:00
|
|
|
$(call UCLIBC_OPT_SET,$(UCLIBC_POWERPC_TYPE),y,$(@D))
|
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
|
|
|
|
$(call UCLIBC_OPT_UNSET,UCLIBC_FORMAT_FLAT,$(@D))
|
|
|
|
$(call UCLIBC_OPT_UNSET,UCLIBC_FORMAT_FLAT_SEP_DATA,$(@D))
|
|
|
|
$(call UCLIBC_OPT_UNSET,UCLIBC_FORMAT_SHARED_FLAT,$(@D))
|
|
|
|
$(call UCLIBC_OPT_SET,UCLIBC_FORMAT_FDPIC_ELF,y,$(@D))
|
|
|
|
endef
|
|
|
|
endif
|
|
|
|
ifeq ($(BR2_BINFMT_FLAT_ONE),y)
|
|
|
|
define UCLIBC_BFIN_CONFIG
|
|
|
|
$(call UCLIBC_OPT_SET,UCLIBC_FORMAT_FLAT,y,$(@D))
|
|
|
|
$(call UCLIBC_OPT_UNSET,UCLIBC_FORMAT_FLAT_SEP_DATA,$(@D))
|
|
|
|
$(call UCLIBC_OPT_UNSET,UCLIBC_FORMAT_SHARED_FLAT,$(@D))
|
|
|
|
$(call UCLIBC_OPT_UNSET,UCLIBC_FORMAT_FDPIC_ELF,$(@D))
|
|
|
|
endef
|
|
|
|
endif
|
|
|
|
ifeq ($(BR2_BINFMT_FLAT_SEP_DATA),y)
|
|
|
|
define UCLIBC_BFIN_CONFIG
|
|
|
|
$(call UCLIBC_OPT_UNSET,UCLIBC_FORMAT_FLAT,$(@D))
|
|
|
|
$(call UCLIBC_OPT_SET,UCLIBC_FORMAT_FLAT_SEP_DATA,y,$(@D))
|
|
|
|
$(call UCLIBC_OPT_UNSET,UCLIBC_FORMAT_SHARED_FLAT,$(@D))
|
|
|
|
$(call UCLIBC_OPT_UNSET,UCLIBC_FORMAT_FDPIC_ELF,$(@D))
|
|
|
|
endef
|
|
|
|
endif
|
|
|
|
ifeq ($(BR2_BINFMT_FLAT_SHARED),y)
|
|
|
|
define UCLIBC_BFIN_CONFIG
|
|
|
|
$(call UCLIBC_OPT_UNSET,UCLIBC_FORMAT_FLAT,$(@D))
|
|
|
|
$(call UCLIBC_OPT_UNSET,UCLIBC_FORMAT_FLAT_SEP_DATA,$(@D))
|
|
|
|
$(call UCLIBC_OPT_SET,UCLIBC_FORMAT_SHARED_FLAT,y,$(@D))
|
|
|
|
$(call UCLIBC_OPT_UNSET,UCLIBC_FORMAT_FDPIC_ELF,$(@D))
|
|
|
|
endef
|
|
|
|
endif
|
|
|
|
endif # bfin
|
|
|
|
|
2013-06-30 21:29:05 +02:00
|
|
|
#
|
|
|
|
# AVR32 definitions
|
|
|
|
#
|
|
|
|
|
|
|
|
ifeq ($(UCLIBC_TARGET_ARCH),avr32)
|
|
|
|
define UCLIBC_AVR32_CONFIG
|
|
|
|
$(call UCLIBC_OPT_SET,LINKRELAX,y,$(@D))
|
|
|
|
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
|
|
|
|
$(call UCLIBC_OPT_SET,$(UCLIBC_X86_TYPE),y,$(@D))
|
|
|
|
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
|
|
|
|
$(call UCLIBC_OPT_SET,ARCH_BIG_ENDIAN,y,$(@D))
|
|
|
|
$(call UCLIBC_OPT_SET,ARCH_WANTS_BIG_ENDIAN,y,$(@D))
|
|
|
|
$(call UCLIBC_OPT_UNSET,ARCH_LITTLE_ENDIAN,$(@D))
|
|
|
|
$(call UCLIBC_OPT_UNSET,ARCH_WANTS_LITTLE_ENDIAN,$(@D))
|
|
|
|
endef
|
|
|
|
else
|
|
|
|
define UCLIBC_ENDIAN_CONFIG
|
|
|
|
$(call UCLIBC_OPT_SET,ARCH_LITTLE_ENDIAN,y,$(@D))
|
|
|
|
$(call UCLIBC_OPT_SET,ARCH_WANTS_LITTLE_ENDIAN,y,$(@D))
|
|
|
|
$(call UCLIBC_OPT_UNSET,ARCH_BIG_ENDIAN,$(@D))
|
|
|
|
$(call UCLIBC_OPT_UNSET,ARCH_WANTS_BIG_ENDIAN,$(@D))
|
|
|
|
endef
|
|
|
|
endif
|
|
|
|
|
|
|
|
#
|
|
|
|
# Largefile
|
|
|
|
#
|
|
|
|
|
|
|
|
ifeq ($(BR2_TOOLCHAIN_BUILDROOT_LARGEFILE),y)
|
|
|
|
define UCLIBC_LARGEFILE_CONFIG
|
|
|
|
$(call UCLIBC_OPT_SET,UCLIBC_HAS_LFS,y,$(@D))
|
|
|
|
endef
|
|
|
|
else
|
|
|
|
define UCLIBC_LARGEFILE_CONFIG
|
|
|
|
$(call UCLIBC_OPT_UNSET,UCLIBC_HAS_LFS,$(@D))
|
|
|
|
$(call UCLIBC_OPT_UNSET,UCLIBC_HAS_FOPEN_LARGEFILE_MODE,$(@D))
|
|
|
|
endef
|
|
|
|
endif
|
|
|
|
|
2013-08-09 21:23:40 +02:00
|
|
|
#
|
|
|
|
# MMU
|
|
|
|
#
|
|
|
|
|
|
|
|
ifeq ($(BR2_USE_MMU),y)
|
|
|
|
define UCLIBC_MMU_CONFIG
|
|
|
|
$(call UCLIBC_OPT_SET,ARCH_USE_MMU,y,$(@D))
|
|
|
|
endef
|
|
|
|
else
|
|
|
|
define UCLIBC_MMU_CONFIG
|
|
|
|
$(call UCLIBC_OPT_UNSET,ARCH_USE_MMU,$(@D))
|
|
|
|
endef
|
|
|
|
endif
|
|
|
|
|
2013-06-30 21:29:05 +02:00
|
|
|
#
|
|
|
|
# IPv6
|
|
|
|
#
|
|
|
|
|
|
|
|
ifeq ($(BR2_TOOLCHAIN_BUILDROOT_INET_IPV6),y)
|
|
|
|
UCLIBC_IPV6_CONFIG = $(call UCLIBC_OPT_SET,UCLIBC_HAS_IPV6,y,$(@D))
|
|
|
|
else
|
|
|
|
UCLIBC_IPV6_CONFIG = $(call UCLIBC_OPT_UNSET,UCLIBC_HAS_IPV6,$(@D))
|
|
|
|
endif
|
|
|
|
|
|
|
|
#
|
|
|
|
# RPC
|
|
|
|
#
|
|
|
|
|
|
|
|
ifeq ($(BR2_TOOLCHAIN_BUILDROOT_INET_RPC),y)
|
|
|
|
define UCLIBC_RPC_CONFIG
|
|
|
|
$(call UCLIBC_OPT_SET,UCLIBC_HAS_RPC,y,$(@D))
|
|
|
|
$(call UCLIBC_OPT_SET,UCLIBC_HAS_FULL_RPC,y,$(@D))
|
|
|
|
$(call UCLIBC_OPT_SET,UCLIBC_HAS_REENTRANT_RPC,y,$(@D))
|
|
|
|
endef
|
|
|
|
else
|
|
|
|
define UCLIBC_RPC_CONFIG
|
|
|
|
$(call UCLIBC_OPT_UNSET,UCLIBC_HAS_RPC,$(@D))
|
|
|
|
$(call UCLIBC_OPT_UNSET,UCLIBC_HAS_FULL_RPC,$(@D))
|
|
|
|
$(call UCLIBC_OPT_UNSET,UCLIBC_HAS_REENTRANT_RPC,$(@D))
|
|
|
|
endef
|
|
|
|
endif
|
|
|
|
|
|
|
|
#
|
|
|
|
# soft-float
|
|
|
|
#
|
|
|
|
|
|
|
|
ifeq ($(BR2_SOFT_FLOAT),y)
|
|
|
|
define UCLIBC_FLOAT_CONFIG
|
|
|
|
$(call UCLIBC_OPT_UNSET,UCLIBC_HAS_FPU,$(@D))
|
|
|
|
$(call UCLIBC_OPT_SET,UCLIBC_HAS_FLOATS,y,$(@D))
|
|
|
|
$(call UCLIBC_OPT_SET,DO_C99_MATH,y,$(@D))
|
|
|
|
endef
|
|
|
|
else
|
|
|
|
define UCLIBC_FLOAT_CONFIG
|
|
|
|
$(call UCLIBC_OPT_SET,UCLIBC_HAS_FPU,y,$(@D))
|
|
|
|
$(call UCLIBC_OPT_SET,UCLIBC_HAS_FLOATS,y,$(@D))
|
|
|
|
endef
|
|
|
|
endif
|
|
|
|
|
|
|
|
#
|
|
|
|
# SSP
|
|
|
|
#
|
|
|
|
ifeq ($(BR2_TOOLCHAIN_BUILDROOT_USE_SSP),y)
|
2013-07-04 20:30:26 +02:00
|
|
|
define UCLIBC_SSP_CONFIG
|
|
|
|
$(call UCLIBC_OPT_SET,UCLIBC_HAS_SSP,y,$(@D))
|
|
|
|
$(call UCLIBC_OPT_SET,UCLIBC_BUILD_SSP,y,$(@D))
|
|
|
|
endef
|
2013-06-30 21:29:05 +02:00
|
|
|
else
|
2013-07-04 20:30:26 +02:00
|
|
|
define UCLIBC_SSP_CONFIG
|
|
|
|
$(call UCLIBC_OPT_UNSET,UCLIBC_HAS_SSP,$(@D))
|
|
|
|
$(call UCLIBC_OPT_UNSET,UCLIBC_BUILD_SSP,$(@D))
|
|
|
|
endef
|
2013-06-30 21:29:05 +02:00
|
|
|
endif
|
|
|
|
|
|
|
|
#
|
|
|
|
# Threads
|
|
|
|
#
|
|
|
|
ifeq ($(BR2_PTHREADS_NONE),y)
|
|
|
|
define UCLIBC_THREAD_CONFIG
|
|
|
|
$(call UCLIBC_OPT_UNSET,UCLIBC_HAS_THREADS,$(@D))
|
|
|
|
$(call UCLIBC_OPT_UNSET,LINUXTHREADS,$(@D))
|
|
|
|
$(call UCLIBC_OPT_UNSET,LINUXTHREADS_OLD,$(@D))
|
|
|
|
$(call UCLIBC_OPT_UNSET,UCLIBC_HAS_THREADS_NATIVE,$(@D))
|
|
|
|
endef
|
|
|
|
else ifeq ($(BR2_PTHREADS),y)
|
|
|
|
define UCLIBC_THREAD_CONFIG
|
|
|
|
$(call UCLIBC_OPT_SET,UCLIBC_HAS_THREADS,y,$(@D))
|
|
|
|
$(call UCLIBC_OPT_SET,LINUXTHREADS_NEW,y,$(@D))
|
|
|
|
$(call UCLIBC_OPT_UNSET,LINUXTHREADS_OLD,$(@D))
|
|
|
|
$(call UCLIBC_OPT_UNSET,UCLIBC_HAS_THREADS_NATIVE,$(@D))
|
|
|
|
endef
|
|
|
|
else ifeq ($(BR2_PTHREADS_OLD),y)
|
|
|
|
define UCLIBC_THREAD_CONFIG
|
|
|
|
$(call UCLIBC_OPT_SET,UCLIBC_HAS_THREADS,y,$(@D))
|
|
|
|
$(call UCLIBC_OPT_UNSET,LINUXTHREADS_NEW,$(@D))
|
|
|
|
$(call UCLIBC_OPT_SET,LINUXTHREADS_OLD,y,$(@D))
|
|
|
|
$(call UCLIBC_OPT_UNSET,UCLIBC_HAS_THREADS_NATIVE,$(@D))
|
|
|
|
endef
|
|
|
|
else ifeq ($(BR2_PTHREADS_NATIVE),y)
|
|
|
|
define UCLIBC_THREAD_CONFIG
|
|
|
|
$(call UCLIBC_OPT_SET,UCLIBC_HAS_THREADS,y,$(@D))
|
|
|
|
$(call UCLIBC_OPT_UNSET,LINUXTHREADS_NEW,$(@D))
|
|
|
|
$(call UCLIBC_OPT_UNSET,LINUXTHREADS_OLD,$(@D))
|
|
|
|
$(call UCLIBC_OPT_SET,UCLIBC_HAS_THREADS_NATIVE,y,$(@D))
|
|
|
|
endef
|
|
|
|
endif
|
|
|
|
|
|
|
|
#
|
|
|
|
# Thread debug
|
|
|
|
#
|
|
|
|
|
|
|
|
ifeq ($(BR2_PTHREAD_DEBUG),y)
|
|
|
|
UCLIBC_THREAD_DEBUG_CONFIG = $(call UCLIBC_OPT_SET,PTHREADS_DEBUG_SUPPORT,y,$(@D))
|
|
|
|
else
|
|
|
|
UCLIBC_THREAD_DEBUG_CONFIG = $(call UCLIBC_OPT_UNSET,PTHREADS_DEBUG_SUPPORT,$(@D))
|
|
|
|
endif
|
|
|
|
|
|
|
|
#
|
|
|
|
# Locale
|
|
|
|
#
|
|
|
|
|
|
|
|
ifeq ($(BR2_TOOLCHAIN_BUILDROOT_LOCALE),y)
|
|
|
|
define UCLIBC_LOCALE_CONFIG
|
|
|
|
$(call UCLIBC_OPT_SET,UCLIBC_HAS_LOCALE,y,$(@D))
|
|
|
|
$(call UCLIBC_OPT_UNSET,UCLIBC_BUILD_ALL_LOCALE,$(@D))
|
|
|
|
$(call UCLIBC_OPT_SET,UCLIBC_BUILD_MINIMAL_LOCALE,y,$(@D))
|
|
|
|
$(call UCLIBC_OPT_SET,UCLIBC_BUILD_MINIMAL_LOCALES,"$(UCLIBC_LOCALES)",$(@D))
|
|
|
|
$(call UCLIBC_OPT_UNSET,UCLIBC_PREGENERATED_LOCALE_DATA,$(@D))
|
|
|
|
$(call UCLIBC_OPT_UNSET,DOWNLOAD_PREGENERATED_LOCALE_DATA,$(@D))
|
|
|
|
$(call UCLIBC_OPT_SET,UCLIBC_HAS_XLOCALE,y,$(@D))
|
|
|
|
$(call UCLIBC_OPT_UNSET,UCLIBC_HAS_GLIBC_DIGIT_GROUPING,$(@D))
|
|
|
|
endef
|
|
|
|
else
|
|
|
|
define UCLIBC_LOCALE_CONFIG
|
|
|
|
$(call UCLIBC_OPT_UNSET,UCLIBC_HAS_LOCALE,$(@D))
|
|
|
|
endef
|
|
|
|
endif
|
|
|
|
|
|
|
|
#
|
|
|
|
# wchar
|
|
|
|
#
|
|
|
|
|
|
|
|
ifeq ($(BR2_TOOLCHAIN_BUILDROOT_WCHAR),y)
|
|
|
|
UCLIBC_WCHAR_CONFIG = $(call UCLIBC_OPT_SET,UCLIBC_HAS_WCHAR,y,$(@D))
|
|
|
|
else
|
|
|
|
UCLIBC_WCHAR_CONFIG = $(call UCLIBC_OPT_UNSET,UCLIBC_HAS_WCHAR,$(@D))
|
|
|
|
endif
|
|
|
|
|
|
|
|
#
|
|
|
|
# strip
|
|
|
|
#
|
|
|
|
|
|
|
|
ifeq ($(BR2_STRIP_none),y)
|
2013-12-22 16:31:38 +01:00
|
|
|
UCLIBC_STRIP_CONFIG = $(call UCLIBC_OPT_UNSET,DOSTRIP,$(@D))
|
|
|
|
else
|
2013-06-30 21:29:05 +02:00
|
|
|
UCLIBC_STRIP_CONFIG = $(call UCLIBC_OPT_SET,DOSTRIP,y,$(@D))
|
|
|
|
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)"
|
|
|
|
|
2013-07-18 11:25:49 +02:00
|
|
|
define UCLIBC_SETUP_DOT_CONFIG
|
2014-01-28 21:11:24 +01:00
|
|
|
$(INSTALL) -m 0644 $(UCLIBC_CONFIG_FILE) $(@D)/.config
|
2013-06-30 21:29:05 +02:00
|
|
|
$(call UCLIBC_OPT_SET,CROSS_COMPILER_PREFIX,"$(TARGET_CROSS)",$(@D))
|
|
|
|
$(call UCLIBC_OPT_SET,TARGET_$(UCLIBC_TARGET_ARCH),y,$(@D))
|
|
|
|
$(call UCLIBC_OPT_SET,TARGET_ARCH,"$(UCLIBC_TARGET_ARCH)",$(@D))
|
2014-06-04 22:27:33 +02:00
|
|
|
$(call UCLIBC_OPT_SET,KERNEL_HEADERS,"$(LINUX_HEADERS_DIR)/usr/include",$(@D))
|
2013-06-30 21:29:05 +02:00
|
|
|
$(call UCLIBC_OPT_SET,RUNTIME_PREFIX,"/",$(@D))
|
|
|
|
$(call UCLIBC_OPT_SET,DEVEL_PREFIX,"/usr",$(@D))
|
|
|
|
$(call UCLIBC_OPT_SET,SHARED_LIB_LOADER_PREFIX,"/lib",$(@D))
|
2013-09-05 04:24:19 +02:00
|
|
|
$(UCLIBC_MMU_CONFIG)
|
2013-06-30 21:29:05 +02:00
|
|
|
$(UCLIBC_ARM_TYPE_CONFIG)
|
|
|
|
$(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
|
2014-02-13 12:34:45 +01:00
|
|
|
$(UCLIBC_SETUP_DOT_CONFIG)
|
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
|
|
|
|
|
|
|
|
define UCLIBC_BUILD_CMDS
|
|
|
|
$(MAKE1) -C $(@D) \
|
|
|
|
$(UCLIBC_MAKE_FLAGS) \
|
|
|
|
PREFIX= \
|
|
|
|
DEVEL_PREFIX=/ \
|
|
|
|
RUNTIME_PREFIX=/ \
|
|
|
|
all
|
|
|
|
$(MAKE1) -C $(@D)/utils \
|
|
|
|
PREFIX=$(HOST_DIR) \
|
|
|
|
HOSTCC="$(HOSTCC)" hostutils
|
|
|
|
$(UCLIBC_BUILD_TEST_SUITE)
|
|
|
|
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)
|
2013-06-30 21:29:05 +02:00
|
|
|
$(UCLIBC_INSTALL_TEST_SUITE)
|
|
|
|
endef
|
|
|
|
|
2013-07-20 14:52:13 +02:00
|
|
|
# For FLAT binfmts (static) there are no host utils
|
|
|
|
ifeq ($(BR2_BINFMT_FLAT),)
|
|
|
|
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-03-07 10:31:19 +01:00
|
|
|
uclibc-menuconfig: uclibc-patch
|
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)/ \
|
|
|
|
menuconfig
|
2013-07-18 11:25:49 +02:00
|
|
|
rm -f $(UCLIBC_DIR)/.stamp_{configured,built,target_installed,staging_installed}
|
2013-06-30 21:29:05 +02:00
|
|
|
|
|
|
|
$(eval $(generic-package))
|
2014-02-14 10:55:05 +01:00
|
|
|
|
2014-04-30 21:18:57 +02:00
|
|
|
uclibc-update-config: $(UCLIBC_DIR)/.stamp_configured
|
|
|
|
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
|