diff options
author | Khem Raj <raj.khem@gmail.com> | 2010-07-28 00:11:37 -0700 |
---|---|---|
committer | Peter Korsgaard <jacmet@sunsite.dk> | 2010-07-29 16:57:00 +0200 |
commit | cfbf8abc33d86a0cf5c1bb3e0817a22009b7f301 (patch) | |
tree | 96678f8624b25204f8720a5bf1efc4340e1dfdc9 /toolchain/uClibc | |
parent | 7bfc9e464cf448f83b06953f1b26a150539b3960 (diff) |
Add support for uclibc NPTL toolchain.
This patch modifies current toolchain build sequence so that
NPTL enabled toolchain can be built. The new sequence works
well with linuxthreads as well.
It introduces a new pass for gcc cross compilation. The new
sequence is binutils->gcc-initial->linux-headers -> uclibc-configured
(some cheats to generate phony shared libc.so and libm.o)
-> gcc-intermediate(with shared lib support) -> uclibc -> gcc-final
I also added a new sample config arm_nptl_toolchain_defconfig which
builds the toolchain and busybox.
I have only tried it on arm. However it should work for other
architectures which support NPTL on uclibc e.g. mips, sh, x86, ppc, x86_64
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
Diffstat (limited to 'toolchain/uClibc')
-rw-r--r-- | toolchain/uClibc/uClibc-snapshot.config | 116 | ||||
-rw-r--r-- | toolchain/uClibc/uclibc.mk | 15 |
2 files changed, 97 insertions, 34 deletions
diff --git a/toolchain/uClibc/uClibc-snapshot.config b/toolchain/uClibc/uClibc-snapshot.config index cb203a039..8ee737ba9 100644 --- a/toolchain/uClibc/uClibc-snapshot.config +++ b/toolchain/uClibc/uClibc-snapshot.config @@ -1,5 +1,7 @@ # # Automatically generated make config: don't edit +# Version: 0.9.32-git +# Fri Jul 9 22:31:59 2010 # # TARGET_alpha is not set # TARGET_arm is not set @@ -26,14 +28,34 @@ # TARGET_vax is not set # TARGET_x86_64 is not set # TARGET_xtensa is not set -TARGET_SUBARCH="" +# CONFIG_GENERIC_ARM is not set +# CONFIG_ARM610 is not set +# CONFIG_ARM710 is not set +# CONFIG_ARM7TDMI is not set +# CONFIG_ARM720T is not set +# CONFIG_ARM920T is not set +# CONFIG_ARM922T is not set +# CONFIG_ARM926T is not set +# CONFIG_ARM10T is not set +# CONFIG_ARM1136JF_S is not set +# CONFIG_ARM1176JZ_S is not set +# CONFIG_ARM1176JZF_S is not set +# CONFIG_ARM_CORTEX_M3 is not set +# CONFIG_ARM_CORTEX_M1 is not set +# CONFIG_ARM_SA110 is not set +# CONFIG_ARM_SA1100 is not set +# CONFIG_ARM_XSCALE is not set +# CONFIG_ARM_IWMMXT is not set + +USE_BX=y + +TARGET_SUBARCH="" # # Target Architecture Features and Options # TARGET_ARCH="none" FORCE_OPTIONS_FOR_ARCH=y - # # Using ELF file format # @@ -41,15 +63,12 @@ FORCE_OPTIONS_FOR_ARCH=y # ARCH_BIG_ENDIAN is not set # ARCH_WANTS_LITTLE_ENDIAN is not set # ARCH_WANTS_BIG_ENDIAN is not set - -# -# Using Little Endian -# ARCH_HAS_MMU=y ARCH_USE_MMU=y UCLIBC_HAS_FLOATS=y UCLIBC_HAS_FPU=y DO_C99_MATH=y +# DO_XSI_MATH is not set # UCLIBC_HAS_FENV is not set KERNEL_HEADERS="/usr/src/linux/include" HAVE_DOT_CONFIG=y @@ -59,22 +78,26 @@ HAVE_DOT_CONFIG=y # # HAVE_NO_PIC is not set DOPIC=y -# HAVE_NO_SHARED is not set +# ARCH_HAS_NO_SHARED is not set # ARCH_HAS_NO_LDSO is not set HAVE_SHARED=y # FORCE_SHAREABLE_TEXT_SEGMENTS is not set LDSO_LDD_SUPPORT=y -LDSO_CACHE_SUPPORT=y +# LDSO_CACHE_SUPPORT is not set +LDSO_PRELOAD_ENV_SUPPORT=y # LDSO_PRELOAD_FILE_SUPPORT is not set -LDSO_BASE_FILENAME="ld.so" # UCLIBC_STATIC_LDCONFIG is not set LDSO_RUNPATH=y +LDSO_SEARCH_INTERP_PATH=y UCLIBC_CTOR_DTOR=y # LDSO_GNU_HASH_SUPPORT is not set # HAS_NO_THREADS is not set +# LINUXTHREADS_OLD is not set +# LINUXTHREADS_NEW is not set +UCLIBC_HAS_THREADS_NATIVE=y UCLIBC_HAS_THREADS=y # PTHREADS_DEBUG_SUPPORT is not set -LINUXTHREADS_OLD=y +UCLIBC_HAS_SYSLOG=y UCLIBC_HAS_LFS=y # MALLOC is not set # MALLOC_SIMPLE is not set @@ -82,17 +105,23 @@ MALLOC_STANDARD=y MALLOC_GLIBC_COMPAT=y UCLIBC_DYNAMIC_ATEXIT=y # COMPAT_ATEXIT is not set -# UCLIBC_SUSV3_LEGACY is not set +UCLIBC_SUSV3_LEGACY=y # UCLIBC_SUSV3_LEGACY_MACROS is not set +# UCLIBC_SUSV4_LEGACY is not set +# UCLIBC_HAS_STUBS is not set UCLIBC_HAS_SHADOW=y # UCLIBC_HAS_PROGRAM_INVOCATION_NAME is not set -# UNIX98PTY_ONLY is not set +UCLIBC_HAS_PTY=y ASSUME_DEVPTS=y +UNIX98PTY_ONLY=y +UCLIBC_HAS_GETPT=y +# UCLIBC_HAS_LIBUTIL is not set UCLIBC_HAS_TM_EXTENSIONS=y UCLIBC_HAS_TZ_CACHING=y UCLIBC_HAS_TZ_FILE=y UCLIBC_HAS_TZ_FILE_READ_MANY=y UCLIBC_TZ_FILE_PATH="/etc/TZ" +UCLIBC_FALLBACK_TO_ETC_LOCALTIME=y # # Advanced Library Settings @@ -101,30 +130,59 @@ UCLIBC_PWD_BUFFER_SIZE=256 UCLIBC_GRP_BUFFER_SIZE=256 # -# Networking Support +# Support various families of functions # +UCLIBC_LINUX_MODULE_24=y +UCLIBC_LINUX_SPECIFIC=y +UCLIBC_HAS_GNU_ERROR=y +UCLIBC_BSD_SPECIFIC=y +UCLIBC_HAS_BSD_ERR=y +# UCLIBC_HAS_OBSOLETE_BSD_SIGNAL is not set +# UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL is not set +# UCLIBC_NTP_LEGACY is not set +# UCLIBC_SV4_DEPRECATED is not set +UCLIBC_HAS_REALTIME=y +UCLIBC_HAS_ADVANCED_REALTIME=y +UCLIBC_HAS_EPOLL=y +UCLIBC_HAS_XATTR=y +UCLIBC_HAS_PROFILING=y +UCLIBC_HAS_CRYPT_IMPL=y +UCLIBC_HAS_CRYPT=y +UCLIBC_HAS_NETWORK_SUPPORT=y +UCLIBC_HAS_SOCKET=y +UCLIBC_HAS_IPV4=y UCLIBC_HAS_IPV6=y UCLIBC_HAS_RPC=y UCLIBC_HAS_FULL_RPC=y UCLIBC_HAS_REENTRANT_RPC=y -# UCLIBC_USE_NETLINK is not set +UCLIBC_USE_NETLINK=y +# UCLIBC_SUPPORT_AI_ADDRCONFIG is not set # UCLIBC_HAS_BSD_RES_CLOSE is not set +UCLIBC_HAS_COMPAT_RES_STATE=y +# UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set +# UCLIBC_HAS_LIBRESOLV_STUB is not set +# UCLIBC_HAS_LIBNSL_STUB is not set # # String and Stdio Support # -UCLIBC_HAS_STRING_GENERIC_OPT=y +# UCLIBC_HAS_STRING_GENERIC_OPT is not set UCLIBC_HAS_STRING_ARCH_OPT=y UCLIBC_HAS_CTYPE_TABLES=y UCLIBC_HAS_CTYPE_SIGNED=y # UCLIBC_HAS_CTYPE_UNSAFE is not set -UCLIBC_HAS_CTYPE_CHECKED=y -# UCLIBC_HAS_CTYPE_ENFORCED is not set -# UCLIBC_HAS_WCHAR is not set -# UCLIBC_HAS_LOCALE is not set +# UCLIBC_HAS_CTYPE_CHECKED is not set +UCLIBC_HAS_CTYPE_ENFORCED=y +UCLIBC_HAS_WCHAR=y +UCLIBC_HAS_LOCALE=y +# UCLIBC_BUILD_ALL_LOCALE is not set +UCLIBC_BUILD_MINIMAL_LOCALE=y +# UCLIBC_PREGENERATED_LOCALE_DATA is not set +UCLIBC_BUILD_MINIMAL_LOCALES="en_US" +UCLIBC_HAS_XLOCALE=y UCLIBC_HAS_HEXADECIMAL_FLOATS=y +# UCLIBC_HAS_GLIBC_DIGIT_GROUPING is not set UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y -# USE_OLD_VFPRINTF is not set UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9 UCLIBC_HAS_SCANF_GLIBC_A_FLAG=y # UCLIBC_HAS_STDIO_BUFSIZ_NONE is not set @@ -138,8 +196,8 @@ UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y # UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set # UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set # UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set -UCLIBC_HAS_STDIO_GETC_MACRO=y -UCLIBC_HAS_STDIO_PUTC_MACRO=y +# UCLIBC_HAS_STDIO_GETC_MACRO is not set +# UCLIBC_HAS_STDIO_PUTC_MACRO is not set UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y # UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y @@ -150,26 +208,27 @@ UCLIBC_HAS_ERRNO_MESSAGES=y UCLIBC_HAS_SIGNUM_MESSAGES=y # UCLIBC_HAS_SYS_SIGLIST is not set UCLIBC_HAS_GNU_GETOPT=y -UCLIBC_HAS_GNU_GETSUBOPT=y +# UCLIBC_HAS_GNU_GETSUBOPT is not set # # Big and Tall # UCLIBC_HAS_REGEX=y -UCLIBC_HAS_REGEX_OLD=y +# UCLIBC_HAS_REGEX_OLD is not set UCLIBC_HAS_FNMATCH=y -UCLIBC_HAS_FNMATCH_OLD=y +# UCLIBC_HAS_FNMATCH_OLD is not set # UCLIBC_HAS_WORDEXP is not set -UCLIBC_HAS_FTW=y +# UCLIBC_HAS_NFTW is not set UCLIBC_HAS_GLOB=y UCLIBC_HAS_GNU_GLOB=y # # Library Installation Options # -SHARED_LIB_LOADER_PREFIX="/lib" RUNTIME_PREFIX="/" DEVEL_PREFIX="/usr/" +MULTILIB_DIR="lib" +HARDWIRED_ABSPATH=y # # Security options @@ -180,7 +239,7 @@ DEVEL_PREFIX="/usr/" # UCLIBC_HAS_SSP is not set UCLIBC_BUILD_RELRO=y UCLIBC_BUILD_NOW=y -# UCLIBC_BUILD_NOEXECSTACK is not set +UCLIBC_BUILD_NOEXECSTACK=y # # uClibc development/debugging options @@ -198,4 +257,3 @@ WARNINGS="-Wall" # EXTRA_WARNINGS is not set # DOMULTI is not set # UCLIBC_MJN3_ONLY is not set - diff --git a/toolchain/uClibc/uclibc.mk b/toolchain/uClibc/uclibc.mk index ce1396a97..016f32372 100644 --- a/toolchain/uClibc/uclibc.mk +++ b/toolchain/uClibc/uclibc.mk @@ -16,11 +16,12 @@ UCLIBC_VERSION:=$(call qstrip,$(BR2_UCLIBC_VERSION_STRING)) ifeq ($(BR2_UCLIBC_VERSION_SNAPSHOT),y) UCLIBC_SITE:=http://www.uclibc.org/downloads/snapshots +UCLIBC_DIR:=$(TOOLCHAIN_DIR)/uClibc else UCLIBC_SITE:=http://www.uclibc.org/downloads +UCLIBC_DIR:=$(TOOLCHAIN_DIR)/uClibc-$(UCLIBC_VERSION) endif -UCLIBC_DIR:=$(TOOLCHAIN_DIR)/uClibc-$(UCLIBC_VERSION) UCLIBC_PATCH_DIR:=toolchain/uClibc/ UCLIBC_SOURCE:=uClibc-$(UCLIBC_VERSION).tar.bz2 @@ -407,6 +408,7 @@ $(UCLIBC_DIR)/.configured: $(LINUX_HEADERS_DIR)/.configured $(UCLIBC_DIR)/.confi DEVEL_PREFIX=/usr/ \ RUNTIME_PREFIX=$(TOOLCHAIN_DIR)/uClibc_dev/ \ HOSTCC="$(HOSTCC)" headers \ + lib/crt1.o lib/crti.o lib/crtn.o \ $(if $(BR2_UCLIBC_VERSION_0_9_28_3),install_dev,install_headers) # Install the kernel headers to the first stage gcc include dir # if necessary @@ -414,9 +416,12 @@ $(UCLIBC_DIR)/.configured: $(LINUX_HEADERS_DIR)/.configured $(UCLIBC_DIR)/.confi cp -pLR $(LINUX_HEADERS_DIR)/include/* \ $(TOOLCHAIN_DIR)/uClibc_dev/usr/include/; \ fi + $(TARGET_CROSS)gcc -nostdlib -nostartfiles -shared -x c /dev/null -o $(TOOLCHAIN_DIR)/uClibc_dev/usr/lib/libc.so + $(TARGET_CROSS)gcc -nostdlib -nostartfiles -shared -x c /dev/null -o $(TOOLCHAIN_DIR)/uClibc_dev/usr/lib/libm.so + cp -pLR $(UCLIBC_DIR)/lib/crt[1in].o $(TOOLCHAIN_DIR)/uClibc_dev/usr/lib/ touch $@ -$(UCLIBC_DIR)/lib/libc.a: $(UCLIBC_DIR)/.configured $(gcc_initial) $(LIBFLOAT_TARGET) +$(UCLIBC_DIR)/lib/libc.a: $(UCLIBC_DIR)/.configured $(gcc_intermediate) $(LIBFLOAT_TARGET) $(MAKE1) -C $(UCLIBC_DIR) \ ARCH="$(UCLIBC_TARGET_ARCH)" \ PREFIX= \ @@ -501,7 +506,7 @@ UCLIBC_TARGETS+=uclibc-test endif endif -uclibc: $(cross_compiler) $(STAGING_DIR)/usr/lib/libc.a $(UCLIBC_TARGETS) +uclibc: $(gcc_intermediate) $(STAGING_DIR)/usr/lib/libc.a $(UCLIBC_TARGETS) uclibc-source: $(DL_DIR)/$(UCLIBC_SOURCE) @@ -514,7 +519,7 @@ uclibc-oldconfig: $(UCLIBC_DIR)/.oldconfig uclibc-update: uclibc-config cp -f $(UCLIBC_DIR)/.config $(UCLIBC_CONFIG_FILE) -uclibc-configured: kernel-headers $(UCLIBC_DIR)/.configured +uclibc-configured: gcc_initial kernel-headers $(UCLIBC_DIR)/.configured uclibc-configured-source: uclibc-source @@ -540,7 +545,7 @@ $(TARGET_DIR)/root/uClibc/test/unistd/errno: $(UCLIBC_DIR)/test/unistd/errno $(INSTALL) $(UCLIBC_DIR)/Rules.mak $(TARGET_DIR)/root/uClibc $(INSTALL) $(UCLIBC_DIR)/.config $(TARGET_DIR)/root/uClibc -uclibc-test: uclibc $(TARGET_DIR)/root/uClibc/test/unistd/errno +uclibc-test: $(STAGING_DIR)/usr/lib/libc.a $(TARGET_DIR)/root/uClibc/test/unistd/errno uclibc-test-source: uclibc-source |