* [Buildroot] [PATCHv2 01/21] toolchain-crosstool-ng: remove support
2013-10-06 14:19 [Buildroot] [PATCHv2 00/21] Toolchain updates: package infra, musl support, Linaro updates Thomas Petazzoni
@ 2013-10-06 14:19 ` Thomas Petazzoni
2013-10-06 18:53 ` Peter Korsgaard
2013-10-06 14:19 ` [Buildroot] [PATCHv2 02/21] docs: update manual after Crosstool-NG backend removal Thomas Petazzoni
` (19 subsequent siblings)
20 siblings, 1 reply; 28+ messages in thread
From: Thomas Petazzoni @ 2013-10-06 14:19 UTC (permalink / raw)
To: buildroot
In order to avoid the work of converting the toolchain-crosstool-ng
logic to the package infrastructure, we remove it from Buildroot,
since it has been deprecated since quite some time.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
Makefile | 7 -
package/Makefile.in | 2 +-
package/libglib2/libglib2.mk | 2 +-
toolchain/Config.in | 13 -
toolchain/helpers.mk | 4 +-
toolchain/toolchain-common.in | 4 -
toolchain/toolchain-crosstool-ng.mk | 5 -
toolchain/toolchain-crosstool-ng/Config.in | 133 ------
.../crosstool-ng.config-eglibc | 502 ---------------------
.../crosstool-ng.config-glibc | 491 --------------------
.../crosstool-ng.config-uClibc | 473 -------------------
toolchain/toolchain-crosstool-ng/crosstool-ng.mk | 396 ----------------
12 files changed, 3 insertions(+), 2029 deletions(-)
delete mode 100644 toolchain/toolchain-crosstool-ng.mk
delete mode 100644 toolchain/toolchain-crosstool-ng/Config.in
delete mode 100644 toolchain/toolchain-crosstool-ng/crosstool-ng.config-eglibc
delete mode 100644 toolchain/toolchain-crosstool-ng/crosstool-ng.config-glibc
delete mode 100644 toolchain/toolchain-crosstool-ng/crosstool-ng.config-uClibc
delete mode 100644 toolchain/toolchain-crosstool-ng/crosstool-ng.mk
diff --git a/Makefile b/Makefile
index c170ca2..2fb1168 100644
--- a/Makefile
+++ b/Makefile
@@ -240,8 +240,6 @@ ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y)
BASE_TARGETS += toolchain-buildroot
else ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y)
BASE_TARGETS += toolchain-external
-else ifeq ($(BR2_TOOLCHAIN_CTNG),y)
-BASE_TARGETS += toolchain-crosstool-ng
endif
TARGETS:=
@@ -323,8 +321,6 @@ ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y)
include toolchain/toolchain-buildroot.mk
else ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y)
include toolchain/toolchain-external.mk
-else ifeq ($(BR2_TOOLCHAIN_CTNG),y)
-include toolchain/toolchain-crosstool-ng.mk
endif
# Include the package override file if one has been provided in the
@@ -802,9 +798,6 @@ endif
ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y)
@echo ' uclibc-menuconfig - Run uClibc menuconfig'
endif
-ifeq ($(BR2_TOOLCHAIN_CTNG),y)
- @echo ' ctng-menuconfig - Run crosstool-NG menuconfig'
-endif
ifeq ($(BR2_TARGET_BAREBOX),y)
@echo ' barebox-menuconfig - Run barebox menuconfig'
@echo ' barebox-savedefconfig - Run barebox savedefconfig'
diff --git a/package/Makefile.in b/package/Makefile.in
index d406901..612f3c7 100644
--- a/package/Makefile.in
+++ b/package/Makefile.in
@@ -138,7 +138,7 @@ TARGET_CFLAGS += -fstack-protector-all
TARGET_CXXFLAGS += -fstack-protector-all
endif
-ifeq ($(BR2_TOOLCHAIN_BUILDROOT)$(BR2_TOOLCHAIN_CTNG),y)
+ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y)
TARGET_CROSS=$(HOST_DIR)/usr/bin/$(GNU_TARGET_NAME)-
else
TARGET_CROSS=$(HOST_DIR)/usr/bin/$(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_PREFIX))-
diff --git a/package/libglib2/libglib2.mk b/package/libglib2/libglib2.mk
index 689e417..51b2fc1 100644
--- a/package/libglib2/libglib2.mk
+++ b/package/libglib2/libglib2.mk
@@ -51,7 +51,7 @@ LIBGLIB2_CONF_ENV = \
gt_cv_c_wchar_t=$(if $(BR2_USE_WCHAR),yes,no)
# old uClibc versions don't provide qsort_r
-ifeq ($(BR2_UCLIBC_VERSION_0_9_32)$(BR2_TOOLCHAIN_CTNG_uClibc)$(BR2_TOOLCHAIN_EXTERNAL_UCLIBC)$(BR2_TOOLCHAIN_EXTERNAL_XILINX_MICROBLAZEEL_V2)$(BR2_TOOLCHAIN_EXTERNAL_XILINX_MICROBLAZEBE_V2),y)
+ifeq ($(BR2_UCLIBC_VERSION_0_9_32)$(BR2_TOOLCHAIN_EXTERNAL_UCLIBC)$(BR2_TOOLCHAIN_EXTERNAL_XILINX_MICROBLAZEEL_V2)$(BR2_TOOLCHAIN_EXTERNAL_XILINX_MICROBLAZEBE_V2),y)
LIBGLIB2_CONF_ENV += glib_cv_have_qsort_r=no
else
LIBGLIB2_CONF_ENV += glib_cv_have_qsort_r=yes
diff --git a/toolchain/Config.in b/toolchain/Config.in
index 6fd446e..0f9a7dd 100644
--- a/toolchain/Config.in
+++ b/toolchain/Config.in
@@ -36,23 +36,10 @@ config BR2_TOOLCHAIN_EXTERNAL
toolchain. Buildroot can either download automatically a
toolchain, or use an already installed toolchain.
-config BR2_TOOLCHAIN_CTNG
- bool "Crosstool-NG toolchain"
- depends on BR2_DEPRECATED
- depends on !BR2_microblaze && !BR2_aarch64 && !BR2_xtensa && \
- !BR2_arc && !BR2_nios2
- select BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS
- help
- Say 'y' if you want to generate the toolchain with crosstool-NG
- (http://crosstool-ng.org).
-
- This is considered experimental, and you can expect some breakage.
-
endchoice
source "toolchain/toolchain-buildroot/Config.in"
source "toolchain/toolchain-external/Config.in"
-source "toolchain/toolchain-crosstool-ng/Config.in"
source "toolchain/toolchain-common.in"
endmenu
diff --git a/toolchain/helpers.mk b/toolchain/helpers.mk
index 0e270ee..27b6710 100644
--- a/toolchain/helpers.mk
+++ b/toolchain/helpers.mk
@@ -1,7 +1,5 @@
# This Makefile fragment declares helper functions, usefull to handle
-# non- buildroot-built toolchains, eg. purely external toolchains or
-# toolchains (internally) built using crosstool-NG.
-
+# non- buildroot-built toolchains, eg. purely external toolchains.
#
# Copy a toolchain library and its symbolic links from the sysroot
# directory to the target directory. Also optionaly strips the
diff --git a/toolchain/toolchain-common.in b/toolchain/toolchain-common.in
index 1085fb3..8435a65 100644
--- a/toolchain/toolchain-common.in
+++ b/toolchain/toolchain-common.in
@@ -59,10 +59,6 @@ config BR2_ENABLE_LOCALE_WHITELIST
config BR2_GENERATE_LOCALE
string "Generate locale data"
default ""
- # Pre-built uClibc external toolchains and uClibc toolchains
- # built by the Crosstool-NG backend cannot be supported,
- # because the list of locales to support must be defined at
- # build time.
depends on \
BR2_TOOLCHAIN_BUILDROOT || \
BR2_TOOLCHAIN_USES_GLIBC
diff --git a/toolchain/toolchain-crosstool-ng.mk b/toolchain/toolchain-crosstool-ng.mk
deleted file mode 100644
index 9e666a0..0000000
--- a/toolchain/toolchain-crosstool-ng.mk
+++ /dev/null
@@ -1,5 +0,0 @@
-# Required includes for the external toolchain backend
-
-# Explicit ordering:
-include toolchain/helpers.mk
-include toolchain/toolchain-crosstool-ng/crosstool-ng.mk
diff --git a/toolchain/toolchain-crosstool-ng/Config.in b/toolchain/toolchain-crosstool-ng/Config.in
deleted file mode 100644
index 7cfd8c2..0000000
--- a/toolchain/toolchain-crosstool-ng/Config.in
+++ /dev/null
@@ -1,133 +0,0 @@
-# Selection options for crosstool-NG
-
-if BR2_TOOLCHAIN_CTNG
-
-choice
- prompt "Crosstool-NG C library"
-
-config BR2_TOOLCHAIN_CTNG_uClibc
- bool "uClibc"
- select BR2_TOOLCHAIN_USES_UCLIBC
-
-# Although eglibc can be configured to opt-out some features,
-# let's not deal with that for the time being, it's complex...
-config BR2_TOOLCHAIN_CTNG_eglibc
- bool "eglibc"
- # Our default ct-ng configuration uses eglibc 2.12, which has
- # native RPC support
- select BR2_TOOLCHAIN_HAS_NATIVE_RPC
- select BR2_TOOLCHAIN_USES_GLIBC
-
-config BR2_TOOLCHAIN_CTNG_glibc
- bool "glibc"
- # Our default ct-ng configuration uses glibc 2.14.1, which
- # does not have native RPC support
- select BR2_TOOLCHAIN_USES_GLIBC
-
-endchoice # C library
-
-config BR2_TOOLCHAIN_CTNG_LIBC
- string
- default "uClibc" if BR2_TOOLCHAIN_CTNG_uClibc
- default "eglibc" if BR2_TOOLCHAIN_CTNG_eglibc
- default "glibc" if BR2_TOOLCHAIN_CTNG_glibc
-
-config BR2_TOOLCHAIN_CTNG_CONFIG
- string "crosstool-NG configuration file to use"
- default "toolchain/toolchain-crosstool-ng/crosstool-ng.config-uClibc" if BR2_TOOLCHAIN_CTNG_uClibc
- default "toolchain/toolchain-crosstool-ng/crosstool-ng.config-eglibc" if BR2_TOOLCHAIN_CTNG_eglibc
- default "toolchain/toolchain-crosstool-ng/crosstool-ng.config-glibc" if BR2_TOOLCHAIN_CTNG_glibc
- help
- Enter here the path to the crosstool-NG .config file to use.
-
- Generally, the default crosstool-NG configuration files bundled with
- Buildroot work fine in most situations. Use 'make ctng-menuconfig'
- from the command line, for expert customization of your toolchain.
-
- If unsure, keep the default value.
-
-if BR2_TOOLCHAIN_CTNG_uClibc
-
-comment "Toolchain Options"
-
-config BR2_TOOLCHAIN_CTNG_uClibc_LARGEFILE
- bool "Enable large file (files > 2 GB) support"
- select BR2_LARGEFILE
- help
- Enable this option if you want your toolchain to support
- files bigger than 2 GB.
-
-config BR2_TOOLCHAIN_CTNG_uClibc_INET_IPV6
- bool "Enable IPv6 support"
- select BR2_INET_IPV6
- help
- Enable this option if you want your toolchain to support
- IPv6.
-
-config BR2_TOOLCHAIN_CTNG_uClibc_INET_RPC
- bool "Enable RPC support"
- select BR2_TOOLCHAIN_HAS_NATIVE_RPC
- help
- Enable this option if you want your toolchain to support
- RPC (needed for NFS, for example).
-
-config BR2_TOOLCHAIN_CTNG_uClibc_WCHAR
- bool "Enable WCHAR support"
- select BR2_USE_WCHAR
- help
- Enable this option if you want your toolchain to support
- wide characters (i.e characters longer than 8 bits, needed
- for locale support).
-
-config BR2_TOOLCHAIN_CTNG_uClibc_LOCALE
- bool "Enable toolchain locale/i18n support"
- select BR2_TOOLCHAIN_CTNG_uClibc_WCHAR
- select BR2_ENABLE_LOCALE
- help
- Enable this option if you want your toolchain to support
- localization and internationalization.
-
-endif # BR2_TOOLCHAIN_CTNG_uClibc
-
-config BR2_TOOLCHAIN_CTNG_CXX
- bool "Enable C++ support"
- select BR2_INSTALL_LIBSTDCPP
- help
- Enable this option if you want your toolchain to support the
- C++ language and you want C++ libraries to be installed on
- your target system.
-
-choice
- prompt "Thread library implementation"
- default BR2_TOOLCHAIN_CTNG_THREADS_NPTL
- help
- Enable thread support and select thread implementation. With
- glibc, thread support is mandatory but several
- implementations are available. With uClibc, thread support
- is optional, and when enabled, several implementations are
- available. However, not all thread variants work with all
- versions of uClibc for all architectures, the "linuxthreads
- (stable/old)" may be a working fallback.
-
- config BR2_TOOLCHAIN_CTNG_THREADS_NONE
- bool "none"
- depends on BR2_TOOLCHAIN_CTNG_uClibc
-
- config BR2_TOOLCHAIN_CTNG_THREADS_PTHREADS
- bool "linuxthreads"
- select BR2_TOOLCHAIN_HAS_THREADS
- select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
-
- config BR2_TOOLCHAIN_CTNG_THREADS_PTHREADS_OLD
- bool "linuxthreads (stable/old)"
- select BR2_TOOLCHAIN_HAS_THREADS
- select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
- depends on BR2_TOOLCHAIN_CTNG_uClibc
-
- config BR2_TOOLCHAIN_CTNG_THREADS_NPTL
- bool "Native POSIX Threading (NPTL)"
- select BR2_TOOLCHAIN_HAS_THREADS
- select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
-endchoice
-
-endif # BR2_TOOLCHAIN_CTNG
diff --git a/toolchain/toolchain-crosstool-ng/crosstool-ng.config-eglibc b/toolchain/toolchain-crosstool-ng/crosstool-ng.config-eglibc
deleted file mode 100644
index 08f036c..0000000
--- a/toolchain/toolchain-crosstool-ng/crosstool-ng.config-eglibc
+++ /dev/null
@@ -1,502 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# crosstool-NG 1.17.0 Configuration
-# Sat Dec 8 12:57:07 2012
-#
-CT_CONFIGURE_has_xz=y
-CT_CONFIGURE_has_svn=y
-CT_MODULES=y
-
-#
-# Paths and misc options
-#
-
-#
-# crosstool-NG behavior
-#
-# CT_OBSOLETE is not set
-# CT_EXPERIMENTAL is not set
-# CT_DEBUG_CT is not set
-
-#
-# Paths
-#
-CT_LOCAL_TARBALLS_DIR=""
-CT_WORK_DIR="${CT_TOP_DIR}/.build"
-CT_PREFIX_DIR=""
-CT_INSTALL_DIR="${CT_PREFIX_DIR}"
-CT_RM_RF_PREFIX_DIR=y
-CT_REMOVE_DOCS=y
-# CT_INSTALL_DIR_RO is not set
-# CT_STRIP_ALL_TOOLCHAIN_EXECUTABLES is not set
-
-#
-# Downloading
-#
-# CT_FORBID_DOWNLOAD is not set
-# CT_FORCE_DOWNLOAD is not set
-CT_CONNECT_TIMEOUT=10
-# CT_ONLY_DOWNLOAD is not set
-# CT_USE_MIRROR is not set
-
-#
-# Extracting
-#
-# CT_FORCE_EXTRACT is not set
-CT_OVERIDE_CONFIG_GUESS_SUB=y
-# CT_ONLY_EXTRACT is not set
-CT_PATCH_BUNDLED=y
-# CT_PATCH_LOCAL is not set
-# CT_PATCH_BUNDLED_LOCAL is not set
-# CT_PATCH_LOCAL_BUNDLED is not set
-# CT_PATCH_BUNDLED_FALLBACK_LOCAL is not set
-# CT_PATCH_LOCAL_FALLBACK_BUNDLED is not set
-# CT_PATCH_NONE is not set
-CT_PATCH_ORDER="bundled"
-
-#
-# Build behavior
-#
-CT_PARALLEL_JOBS=0
-CT_LOAD=0
-CT_USE_PIPES=y
-CT_EXTRA_FLAGS_FOR_HOST=""
-# CT_CONFIG_SHELL_SH is not set
-# CT_CONFIG_SHELL_ASH is not set
-CT_CONFIG_SHELL_BASH=y
-# CT_CONFIG_SHELL_CUSTOM is not set
-CT_CONFIG_SHELL="${bash}"
-
-#
-# Logging
-#
-# CT_LOG_ERROR is not set
-# CT_LOG_WARN is not set
-# CT_LOG_INFO is not set
-# CT_LOG_EXTRA is not set
-CT_LOG_ALL=y
-# CT_LOG_DEBUG is not set
-CT_LOG_LEVEL_MAX="ALL"
-# CT_LOG_SEE_TOOLS_WARN is not set
-CT_LOG_TO_FILE=y
-CT_LOG_FILE_COMPRESS=y
-
-#
-# Target options
-#
-CT_ARCH="arm"
-CT_ARCH_SUPPORTS_BOTH_MMU=y
-CT_ARCH_SUPPORTS_BOTH_ENDIAN=y
-CT_ARCH_SUPPORTS_32=y
-CT_ARCH_SUPPORTS_WITH_ARCH=y
-CT_ARCH_SUPPORTS_WITH_CPU=y
-CT_ARCH_SUPPORTS_WITH_TUNE=y
-CT_ARCH_SUPPORTS_WITH_FLOAT=y
-CT_ARCH_SUPPORTS_WITH_FPU=y
-CT_ARCH_SUPPORTS_SOFTFP=y
-CT_ARCH_DEFAULT_HAS_MMU=y
-CT_ARCH_DEFAULT_LE=y
-CT_ARCH_DEFAULT_32=y
-CT_ARCH_ARCH=""
-CT_ARCH_CPU=""
-CT_ARCH_TUNE=""
-CT_ARCH_FPU=""
-# CT_ARCH_BE is not set
-CT_ARCH_LE=y
-CT_ARCH_32=y
-CT_ARCH_BITNESS=32
-# CT_ARCH_FLOAT_HW is not set
-CT_ARCH_FLOAT_SW=y
-CT_TARGET_CFLAGS=""
-CT_TARGET_LDFLAGS=""
-# CT_ARCH_alpha is not set
-CT_ARCH_arm=y
-# CT_ARCH_avr32 is not set
-# CT_ARCH_blackfin is not set
-# CT_ARCH_mips is not set
-# CT_ARCH_powerpc is not set
-# CT_ARCH_sh is not set
-# CT_ARCH_sparc is not set
-# CT_ARCH_x86 is not set
-CT_ARCH_alpha_AVAILABLE=y
-CT_ARCH_arm_AVAILABLE=y
-CT_ARCH_avr32_AVAILABLE=y
-CT_ARCH_blackfin_AVAILABLE=y
-CT_ARCH_m68k_AVAILABLE=y
-CT_ARCH_microblaze_AVAILABLE=y
-CT_ARCH_mips_AVAILABLE=y
-CT_ARCH_powerpc_AVAILABLE=y
-CT_ARCH_s390_AVAILABLE=y
-CT_ARCH_sh_AVAILABLE=y
-CT_ARCH_sparc_AVAILABLE=y
-CT_ARCH_x86_AVAILABLE=y
-
-#
-# Generic target options
-#
-CT_ARCH_USE_MMU=y
-CT_ARCH_ENDIAN="little"
-
-#
-# Target optimisations
-#
-# CT_ARCH_FLOAT_SOFTFP is not set
-CT_ARCH_FLOAT="soft"
-
-#
-# arm other options
-#
-CT_ARCH_ARM_MODE="arm"
-CT_ARCH_ARM_MODE_ARM=y
-CT_ARCH_ARM_EABI=y
-
-#
-# Toolchain options
-#
-
-#
-# General toolchain options
-#
-CT_FORCE_SYSROOT=y
-CT_USE_SYSROOT=y
-CT_SYSROOT_NAME="sysroot"
-CT_SYSROOT_DIR_PREFIX=""
-CT_WANTS_STATIC_LINK=y
-CT_TOOLCHAIN_PKGVERSION=""
-CT_TOOLCHAIN_BUGURL=""
-
-#
-# Tuple completion and aliasing
-#
-CT_TARGET_VENDOR="unknown"
-CT_TARGET_ALIAS_SED_EXPR=""
-CT_TARGET_ALIAS=""
-
-#
-# Toolchain type
-#
-CT_CROSS=y
-CT_TOOLCHAIN_TYPE="cross"
-
-#
-# Build system
-#
-CT_BUILD=""
-CT_BUILD_PREFIX=""
-CT_BUILD_SUFFIX=""
-
-#
-# Misc options
-#
-# CT_TOOLCHAIN_ENABLE_NLS is not set
-
-#
-# Operating System
-#
-CT_KERNEL_SUPPORTS_SHARED_LIBS=y
-CT_KERNEL="linux"
-CT_KERNEL_VERSION="3.6.3"
-# CT_KERNEL_bare_metal is not set
-CT_KERNEL_linux=y
-CT_KERNEL_bare_metal_AVAILABLE=y
-CT_KERNEL_linux_AVAILABLE=y
-CT_KERNEL_V_3_6_3=y
-# CT_KERNEL_V_3_6_2 is not set
-# CT_KERNEL_V_3_6_1 is not set
-# CT_KERNEL_V_3_6 is not set
-# CT_KERNEL_V_3_5_7 is not set
-# CT_KERNEL_V_3_4_15 is not set
-# CT_KERNEL_V_3_3_8 is not set
-# CT_KERNEL_V_3_2_32 is not set
-# CT_KERNEL_V_3_1_10 is not set
-# CT_KERNEL_V_3_0_48 is not set
-# CT_KERNEL_V_2_6_39_4 is not set
-# CT_KERNEL_V_2_6_38_8 is not set
-# CT_KERNEL_V_2_6_37_6 is not set
-# CT_KERNEL_V_2_6_36_4 is not set
-# CT_KERNEL_V_2_6_33_20 is not set
-# CT_KERNEL_V_2_6_32_60 is not set
-# CT_KERNEL_V_2_6_31_14 is not set
-# CT_KERNEL_V_2_6_27_62 is not set
-# CT_KERNEL_LINUX_CUSTOM is not set
-CT_KERNEL_mingw32_AVAILABLE=y
-
-#
-# Common kernel options
-#
-CT_SHARED_LIBS=y
-
-#
-# linux other options
-#
-CT_KERNEL_LINUX_VERBOSITY_0=y
-# CT_KERNEL_LINUX_VERBOSITY_1 is not set
-# CT_KERNEL_LINUX_VERBOSITY_2 is not set
-CT_KERNEL_LINUX_VERBOSE_LEVEL=0
-CT_KERNEL_LINUX_INSTALL_CHECK=y
-
-#
-# Binary utilities
-#
-CT_ARCH_BINFMT_ELF=y
-
-#
-# GNU binutils
-#
-# CT_BINUTILS_V_2_21_1a is not set
-CT_BINUTILS_V_2_20_1a=y
-# CT_BINUTILS_V_2_19_1a is not set
-# CT_BINUTILS_V_2_18a is not set
-CT_BINUTILS_VERSION="2.20.1a"
-CT_BINUTILS_2_20_or_later=y
-CT_BINUTILS_2_19_or_later=y
-CT_BINUTILS_2_18_or_later=y
-CT_BINUTILS_HAS_HASH_STYLE=y
-CT_BINUTILS_GOLD_SUPPORTS_ARCH=y
-CT_BINUTILS_HAS_PKGVERSION_BUGURL=y
-CT_BINUTILS_FORCE_LD_BFD=y
-CT_BINUTILS_LINKER_LD=y
-CT_BINUTILS_LINKERS_LIST="ld"
-CT_BINUTILS_LINKER_DEFAULT="bfd"
-CT_BINUTILS_EXTRA_CONFIG_ARRAY=""
-# CT_BINUTILS_FOR_TARGET is not set
-
-#
-# C compiler
-#
-CT_CC="gcc"
-CT_CC_VERSION="4.6.3"
-CT_CC_gcc=y
-# CT_CC_V_4_7_2 is not set
-CT_CC_V_4_6_3=y
-# CT_CC_V_4_6_2 is not set
-# CT_CC_V_4_6_1 is not set
-# CT_CC_V_4_6_0 is not set
-# CT_CC_V_4_5_3 is not set
-# CT_CC_V_4_5_2 is not set
-# CT_CC_V_4_5_1 is not set
-# CT_CC_V_4_5_0 is not set
-# CT_CC_V_4_4_7 is not set
-# CT_CC_V_4_4_6 is not set
-# CT_CC_V_4_4_5 is not set
-# CT_CC_V_4_4_4 is not set
-# CT_CC_V_4_4_3 is not set
-# CT_CC_V_4_4_2 is not set
-# CT_CC_V_4_4_1 is not set
-# CT_CC_V_4_4_0 is not set
-# CT_CC_V_4_3_6 is not set
-# CT_CC_V_4_3_5 is not set
-# CT_CC_V_4_3_4 is not set
-# CT_CC_V_4_3_3 is not set
-# CT_CC_V_4_3_2 is not set
-# CT_CC_V_4_3_1 is not set
-# CT_CC_V_4_2_4 is not set
-# CT_CC_V_4_2_2 is not set
-CT_CC_GCC_4_2_or_later=y
-CT_CC_GCC_4_3_or_later=y
-CT_CC_GCC_4_4_or_later=y
-CT_CC_GCC_4_5_or_later=y
-CT_CC_GCC_4_6=y
-CT_CC_GCC_4_6_or_later=y
-CT_CC_GCC_HAS_GRAPHITE=y
-CT_CC_GCC_HAS_LTO=y
-CT_CC_GCC_HAS_PKGVERSION_BUGURL=y
-CT_CC_GCC_HAS_BUILD_ID=y
-CT_CC_GCC_USE_GMP_MPFR=y
-CT_CC_GCC_USE_PPL_CLOOG=y
-CT_CC_GCC_USE_MPC=y
-CT_CC_GCC_HAS_LIBQUADMATH=y
-# CT_CC_LANG_FORTRAN is not set
-CT_CC_SUPPORT_CXX=y
-CT_CC_SUPPORT_FORTRAN=y
-CT_CC_SUPPORT_JAVA=y
-CT_CC_SUPPORT_ADA=y
-CT_CC_SUPPORT_OBJC=y
-CT_CC_SUPPORT_OBJCXX=y
-
-#
-# Additional supported languages:
-#
-CT_CC_LANG_CXX=y
-# CT_CC_LANG_JAVA is not set
-
-#
-# gcc other options
-#
-CT_CC_ENABLE_CXX_FLAGS=""
-CT_CC_CORE_EXTRA_CONFIG_ARRAY="--disable-decimal-float"
-CT_CC_EXTRA_CONFIG_ARRAY="--disable-decimal-float"
-CT_CC_STATIC_LIBSTDCXX=y
-
-#
-# Optimisation features
-#
-CT_CC_GCC_USE_GRAPHITE=y
-CT_CC_GCC_USE_LTO=y
-
-#
-# Settings for libraries running on target
-#
-CT_CC_GCC_ENABLE_TARGET_OPTSPACE=y
-# CT_CC_GCC_LIBMUDFLAP is not set
-# CT_CC_GCC_LIBGOMP is not set
-# CT_CC_GCC_LIBSSP is not set
-# CT_CC_GCC_LIBQUADMATH is not set
-
-#
-# Misc. obscure options.
-#
-CT_CC_CXA_ATEXIT=y
-# CT_CC_GCC_DISABLE_PCH is not set
-CT_CC_GCC_SJLJ_EXCEPTIONS=m
-CT_CC_GCC_LDBL_128=m
-# CT_CC_GCC_BUILD_ID is not set
-
-#
-# C-library
-#
-CT_LIBC="eglibc"
-CT_LIBC_VERSION="2_12"
-CT_LIBC_eglibc=y
-# CT_LIBC_glibc is not set
-# CT_LIBC_uClibc is not set
-CT_LIBC_eglibc_AVAILABLE=y
-# CT_LIBC_EGLIBC_V_2_16 is not set
-# CT_LIBC_EGLIBC_V_2_15 is not set
-# CT_LIBC_EGLIBC_V_2_14 is not set
-# CT_LIBC_EGLIBC_V_2_13 is not set
-CT_LIBC_EGLIBC_V_2_12=y
-# CT_LIBC_EGLIBC_V_2_11 is not set
-# CT_LIBC_EGLIBC_V_2_10 is not set
-# CT_LIBC_EGLIBC_V_2_9 is not set
-# CT_LIBC_EGLIBC_V_TRUNK is not set
-CT_LIBC_EGLIBC_2_12_or_later=y
-CT_LIBC_EGLIBC_2_11_or_later=y
-CT_LIBC_EGLIBC_2_10_or_later=y
-CT_LIBC_EGLIBC_2_9_or_later=y
-CT_LIBC_EGLIBC_HAS_PKGVERSION_BUGURL=y
-CT_EGLIBC_REVISION="HEAD"
-# CT_EGLIBC_HTTP is not set
-# CT_EGLIBC_CHECKOUT is not set
-CT_EGLIBC_OPT_SIZE=y
-# CT_EGLIBC_CUSTOM_CONFIG is not set
-CT_LIBC_glibc_AVAILABLE=y
-CT_LIBC_mingw_AVAILABLE=y
-CT_LIBC_newlib_AVAILABLE=y
-CT_LIBC_none_AVAILABLE=y
-CT_LIBC_uClibc_AVAILABLE=y
-CT_LIBC_SUPPORT_THREADS_ANY=y
-CT_LIBC_SUPPORT_NPTL=y
-CT_LIBC_SUPPORT_LINUXTHREADS=y
-CT_THREADS="nptl"
-
-#
-# Common C library options
-#
-CT_THREADS_NPTL=y
-# CT_THREADS_LINUXTHREADS is not set
-CT_LIBC_XLDD=y
-
-#
-# eglibc other options
-#
-CT_LIBC_GLIBC_MAY_FORCE_PORTS=y
-CT_LIBC_glibc_familly=y
-CT_LIBC_GLIBC_EXTRA_CONFIG_ARRAY=""
-CT_LIBC_GLIBC_CONFIGPARMS=""
-CT_LIBC_GLIBC_EXTRA_CFLAGS=""
-CT_LIBC_EXTRA_CC_ARGS=""
-# CT_LIBC_DISABLE_VERSIONING is not set
-CT_LIBC_OLDEST_ABI=""
-CT_LIBC_GLIBC_FORCE_UNWIND=y
-CT_LIBC_GLIBC_USE_PORTS=y
-CT_LIBC_ADDONS_LIST=""
-
-#
-# WARNING !!!
-#
-
-#
-# For glibc >= 2.8, it can happen that the tarballs
-#
-
-#
-# for the addons are not available for download.
-#
-
-#
-# If that happens, bad luck... Try a previous version
-#
-
-#
-# or try again later... :-(
-#
-# CT_LIBC_LOCALES is not set
-# CT_LIBC_GLIBC_KERNEL_VERSION_NONE is not set
-CT_LIBC_GLIBC_KERNEL_VERSION_AS_HEADERS=y
-# CT_LIBC_GLIBC_KERNEL_VERSION_CHOSEN is not set
-CT_LIBC_GLIBC_MIN_KERNEL="3.6.3"
-
-#
-# Debug facilities
-#
-# CT_DEBUG_dmalloc is not set
-# CT_DEBUG_duma is not set
-# CT_DEBUG_gdb is not set
-# CT_DEBUG_ltrace is not set
-# CT_DEBUG_strace is not set
-
-#
-# Companion libraries
-#
-CT_COMPLIBS_NEEDED=y
-CT_GMP_NEEDED=y
-CT_MPFR_NEEDED=y
-CT_PPL_NEEDED=y
-CT_CLOOG_NEEDED=y
-CT_MPC_NEEDED=y
-CT_COMPLIBS=y
-CT_GMP=y
-CT_MPFR=y
-CT_PPL=y
-CT_CLOOG=y
-CT_MPC=y
-# CT_GMP_V_5_0_2 is not set
-# CT_GMP_V_5_0_1 is not set
-CT_GMP_V_4_3_2=y
-# CT_GMP_V_4_3_1 is not set
-# CT_GMP_V_4_3_0 is not set
-CT_GMP_VERSION="4.3.2"
-# CT_MPFR_V_3_1_0 is not set
-# CT_MPFR_V_3_0_1 is not set
-# CT_MPFR_V_3_0_0 is not set
-CT_MPFR_V_2_4_2=y
-# CT_MPFR_V_2_4_1 is not set
-# CT_MPFR_V_2_4_0 is not set
-CT_MPFR_VERSION="2.4.2"
-CT_PPL_V_0_11_2=y
-# CT_PPL_V_0_11_1 is not set
-# CT_PPL_V_0_11 is not set
-# CT_PPL_V_0_10_2 is not set
-CT_PPL_VERSION="0.11.2"
-CT_PPL_0_11=y
-CT_PPL_NEEDS_LIBPWL=y
-CT_CLOOG_V_0_15_11=y
-# CT_CLOOG_V_0_15_10 is not set
-# CT_CLOOG_V_0_15_9 is not set
-# CT_CLOOG_V_0_15_8 is not set
-# CT_CLOOG_V_0_15_7 is not set
-# CT_CLOOG_V_0_15_6 is not set
-CT_CLOOG_VERSION="0.15.11"
-CT_CLOOG_0_15_1x=y
-CT_CLOOG_NEEDS_AUTORECONF=y
-CT_MPC_V_0_9=y
-# CT_MPC_V_0_8_2 is not set
-# CT_MPC_V_0_8_1 is not set
-# CT_MPC_V_0_7 is not set
-CT_MPC_VERSION="0.9"
-
-#
-# Companion libraries common options
-#
-# CT_COMPLIBS_CHECK is not set
diff --git a/toolchain/toolchain-crosstool-ng/crosstool-ng.config-glibc b/toolchain/toolchain-crosstool-ng/crosstool-ng.config-glibc
deleted file mode 100644
index 5b4bbba..0000000
--- a/toolchain/toolchain-crosstool-ng/crosstool-ng.config-glibc
+++ /dev/null
@@ -1,491 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# crosstool-NG 1.17.0 Configuration
-# Sat Dec 8 12:56:02 2012
-#
-CT_CONFIGURE_has_xz=y
-CT_CONFIGURE_has_svn=y
-CT_MODULES=y
-
-#
-# Paths and misc options
-#
-
-#
-# crosstool-NG behavior
-#
-# CT_OBSOLETE is not set
-# CT_EXPERIMENTAL is not set
-# CT_DEBUG_CT is not set
-
-#
-# Paths
-#
-CT_LOCAL_TARBALLS_DIR=""
-CT_WORK_DIR="${CT_TOP_DIR}/.build"
-CT_PREFIX_DIR=""
-CT_INSTALL_DIR="${CT_PREFIX_DIR}"
-CT_RM_RF_PREFIX_DIR=y
-CT_REMOVE_DOCS=y
-# CT_INSTALL_DIR_RO is not set
-# CT_STRIP_ALL_TOOLCHAIN_EXECUTABLES is not set
-
-#
-# Downloading
-#
-# CT_FORBID_DOWNLOAD is not set
-# CT_FORCE_DOWNLOAD is not set
-CT_CONNECT_TIMEOUT=10
-# CT_ONLY_DOWNLOAD is not set
-# CT_USE_MIRROR is not set
-
-#
-# Extracting
-#
-# CT_FORCE_EXTRACT is not set
-CT_OVERIDE_CONFIG_GUESS_SUB=y
-# CT_ONLY_EXTRACT is not set
-CT_PATCH_BUNDLED=y
-# CT_PATCH_LOCAL is not set
-# CT_PATCH_BUNDLED_LOCAL is not set
-# CT_PATCH_LOCAL_BUNDLED is not set
-# CT_PATCH_BUNDLED_FALLBACK_LOCAL is not set
-# CT_PATCH_LOCAL_FALLBACK_BUNDLED is not set
-# CT_PATCH_NONE is not set
-CT_PATCH_ORDER="bundled"
-
-#
-# Build behavior
-#
-CT_PARALLEL_JOBS=0
-CT_LOAD=0
-CT_USE_PIPES=y
-CT_EXTRA_FLAGS_FOR_HOST=""
-# CT_CONFIG_SHELL_SH is not set
-# CT_CONFIG_SHELL_ASH is not set
-CT_CONFIG_SHELL_BASH=y
-# CT_CONFIG_SHELL_CUSTOM is not set
-CT_CONFIG_SHELL="${bash}"
-
-#
-# Logging
-#
-# CT_LOG_ERROR is not set
-# CT_LOG_WARN is not set
-# CT_LOG_INFO is not set
-# CT_LOG_EXTRA is not set
-CT_LOG_ALL=y
-# CT_LOG_DEBUG is not set
-CT_LOG_LEVEL_MAX="ALL"
-# CT_LOG_SEE_TOOLS_WARN is not set
-CT_LOG_TO_FILE=y
-CT_LOG_FILE_COMPRESS=y
-
-#
-# Target options
-#
-CT_ARCH="arm"
-CT_ARCH_SUPPORTS_BOTH_MMU=y
-CT_ARCH_SUPPORTS_BOTH_ENDIAN=y
-CT_ARCH_SUPPORTS_32=y
-CT_ARCH_SUPPORTS_WITH_ARCH=y
-CT_ARCH_SUPPORTS_WITH_CPU=y
-CT_ARCH_SUPPORTS_WITH_TUNE=y
-CT_ARCH_SUPPORTS_WITH_FLOAT=y
-CT_ARCH_SUPPORTS_WITH_FPU=y
-CT_ARCH_SUPPORTS_SOFTFP=y
-CT_ARCH_DEFAULT_HAS_MMU=y
-CT_ARCH_DEFAULT_LE=y
-CT_ARCH_DEFAULT_32=y
-CT_ARCH_ARCH=""
-CT_ARCH_CPU=""
-CT_ARCH_TUNE=""
-CT_ARCH_FPU=""
-# CT_ARCH_BE is not set
-CT_ARCH_LE=y
-CT_ARCH_32=y
-CT_ARCH_BITNESS=32
-# CT_ARCH_FLOAT_HW is not set
-CT_ARCH_FLOAT_SW=y
-CT_TARGET_CFLAGS=""
-CT_TARGET_LDFLAGS=""
-# CT_ARCH_alpha is not set
-CT_ARCH_arm=y
-# CT_ARCH_avr32 is not set
-# CT_ARCH_blackfin is not set
-# CT_ARCH_mips is not set
-# CT_ARCH_powerpc is not set
-# CT_ARCH_sh is not set
-# CT_ARCH_sparc is not set
-# CT_ARCH_x86 is not set
-CT_ARCH_alpha_AVAILABLE=y
-CT_ARCH_arm_AVAILABLE=y
-CT_ARCH_avr32_AVAILABLE=y
-CT_ARCH_blackfin_AVAILABLE=y
-CT_ARCH_m68k_AVAILABLE=y
-CT_ARCH_microblaze_AVAILABLE=y
-CT_ARCH_mips_AVAILABLE=y
-CT_ARCH_powerpc_AVAILABLE=y
-CT_ARCH_s390_AVAILABLE=y
-CT_ARCH_sh_AVAILABLE=y
-CT_ARCH_sparc_AVAILABLE=y
-CT_ARCH_x86_AVAILABLE=y
-
-#
-# Generic target options
-#
-CT_ARCH_USE_MMU=y
-CT_ARCH_ENDIAN="little"
-
-#
-# Target optimisations
-#
-# CT_ARCH_FLOAT_SOFTFP is not set
-CT_ARCH_FLOAT="soft"
-
-#
-# arm other options
-#
-CT_ARCH_ARM_MODE="arm"
-CT_ARCH_ARM_MODE_ARM=y
-CT_ARCH_ARM_EABI=y
-
-#
-# Toolchain options
-#
-
-#
-# General toolchain options
-#
-CT_FORCE_SYSROOT=y
-CT_USE_SYSROOT=y
-CT_SYSROOT_NAME="sysroot"
-CT_SYSROOT_DIR_PREFIX=""
-CT_WANTS_STATIC_LINK=y
-CT_TOOLCHAIN_PKGVERSION=""
-CT_TOOLCHAIN_BUGURL=""
-
-#
-# Tuple completion and aliasing
-#
-CT_TARGET_VENDOR="unknown"
-CT_TARGET_ALIAS_SED_EXPR=""
-CT_TARGET_ALIAS=""
-
-#
-# Toolchain type
-#
-CT_CROSS=y
-CT_TOOLCHAIN_TYPE="cross"
-
-#
-# Build system
-#
-CT_BUILD=""
-CT_BUILD_PREFIX=""
-CT_BUILD_SUFFIX=""
-
-#
-# Misc options
-#
-# CT_TOOLCHAIN_ENABLE_NLS is not set
-
-#
-# Operating System
-#
-CT_KERNEL_SUPPORTS_SHARED_LIBS=y
-CT_KERNEL="linux"
-CT_KERNEL_VERSION="3.6.3"
-# CT_KERNEL_bare_metal is not set
-CT_KERNEL_linux=y
-CT_KERNEL_bare_metal_AVAILABLE=y
-CT_KERNEL_linux_AVAILABLE=y
-CT_KERNEL_V_3_6_3=y
-# CT_KERNEL_V_3_6_2 is not set
-# CT_KERNEL_V_3_6_1 is not set
-# CT_KERNEL_V_3_6 is not set
-# CT_KERNEL_V_3_5_7 is not set
-# CT_KERNEL_V_3_4_15 is not set
-# CT_KERNEL_V_3_3_8 is not set
-# CT_KERNEL_V_3_2_32 is not set
-# CT_KERNEL_V_3_1_10 is not set
-# CT_KERNEL_V_3_0_48 is not set
-# CT_KERNEL_V_2_6_39_4 is not set
-# CT_KERNEL_V_2_6_38_8 is not set
-# CT_KERNEL_V_2_6_37_6 is not set
-# CT_KERNEL_V_2_6_36_4 is not set
-# CT_KERNEL_V_2_6_33_20 is not set
-# CT_KERNEL_V_2_6_32_60 is not set
-# CT_KERNEL_V_2_6_31_14 is not set
-# CT_KERNEL_V_2_6_27_62 is not set
-# CT_KERNEL_LINUX_CUSTOM is not set
-CT_KERNEL_mingw32_AVAILABLE=y
-
-#
-# Common kernel options
-#
-CT_SHARED_LIBS=y
-
-#
-# linux other options
-#
-CT_KERNEL_LINUX_VERBOSITY_0=y
-# CT_KERNEL_LINUX_VERBOSITY_1 is not set
-# CT_KERNEL_LINUX_VERBOSITY_2 is not set
-CT_KERNEL_LINUX_VERBOSE_LEVEL=0
-CT_KERNEL_LINUX_INSTALL_CHECK=y
-
-#
-# Binary utilities
-#
-CT_ARCH_BINFMT_ELF=y
-
-#
-# GNU binutils
-#
-# CT_BINUTILS_V_2_21_1a is not set
-CT_BINUTILS_V_2_20_1a=y
-# CT_BINUTILS_V_2_19_1a is not set
-# CT_BINUTILS_V_2_18a is not set
-CT_BINUTILS_VERSION="2.20.1a"
-CT_BINUTILS_2_20_or_later=y
-CT_BINUTILS_2_19_or_later=y
-CT_BINUTILS_2_18_or_later=y
-CT_BINUTILS_HAS_HASH_STYLE=y
-CT_BINUTILS_GOLD_SUPPORTS_ARCH=y
-CT_BINUTILS_HAS_PKGVERSION_BUGURL=y
-CT_BINUTILS_FORCE_LD_BFD=y
-CT_BINUTILS_LINKER_LD=y
-CT_BINUTILS_LINKERS_LIST="ld"
-CT_BINUTILS_LINKER_DEFAULT="bfd"
-CT_BINUTILS_EXTRA_CONFIG_ARRAY=""
-# CT_BINUTILS_FOR_TARGET is not set
-
-#
-# C compiler
-#
-CT_CC="gcc"
-CT_CC_VERSION="4.6.3"
-CT_CC_gcc=y
-# CT_CC_V_4_7_2 is not set
-CT_CC_V_4_6_3=y
-# CT_CC_V_4_6_2 is not set
-# CT_CC_V_4_6_1 is not set
-# CT_CC_V_4_6_0 is not set
-# CT_CC_V_4_5_3 is not set
-# CT_CC_V_4_5_2 is not set
-# CT_CC_V_4_5_1 is not set
-# CT_CC_V_4_5_0 is not set
-# CT_CC_V_4_4_7 is not set
-# CT_CC_V_4_4_6 is not set
-# CT_CC_V_4_4_5 is not set
-# CT_CC_V_4_4_4 is not set
-# CT_CC_V_4_4_3 is not set
-# CT_CC_V_4_4_2 is not set
-# CT_CC_V_4_4_1 is not set
-# CT_CC_V_4_4_0 is not set
-# CT_CC_V_4_3_6 is not set
-# CT_CC_V_4_3_5 is not set
-# CT_CC_V_4_3_4 is not set
-# CT_CC_V_4_3_3 is not set
-# CT_CC_V_4_3_2 is not set
-# CT_CC_V_4_3_1 is not set
-# CT_CC_V_4_2_4 is not set
-# CT_CC_V_4_2_2 is not set
-CT_CC_GCC_4_2_or_later=y
-CT_CC_GCC_4_3_or_later=y
-CT_CC_GCC_4_4_or_later=y
-CT_CC_GCC_4_5_or_later=y
-CT_CC_GCC_4_6=y
-CT_CC_GCC_4_6_or_later=y
-CT_CC_GCC_HAS_GRAPHITE=y
-CT_CC_GCC_HAS_LTO=y
-CT_CC_GCC_HAS_PKGVERSION_BUGURL=y
-CT_CC_GCC_HAS_BUILD_ID=y
-CT_CC_GCC_USE_GMP_MPFR=y
-CT_CC_GCC_USE_PPL_CLOOG=y
-CT_CC_GCC_USE_MPC=y
-CT_CC_GCC_HAS_LIBQUADMATH=y
-# CT_CC_LANG_FORTRAN is not set
-CT_CC_SUPPORT_CXX=y
-CT_CC_SUPPORT_FORTRAN=y
-CT_CC_SUPPORT_JAVA=y
-CT_CC_SUPPORT_ADA=y
-CT_CC_SUPPORT_OBJC=y
-CT_CC_SUPPORT_OBJCXX=y
-
-#
-# Additional supported languages:
-#
-CT_CC_LANG_CXX=y
-# CT_CC_LANG_JAVA is not set
-
-#
-# gcc other options
-#
-CT_CC_ENABLE_CXX_FLAGS=""
-CT_CC_CORE_EXTRA_CONFIG_ARRAY="--disable-decimal-float"
-CT_CC_EXTRA_CONFIG_ARRAY="--disable-decimal-float"
-CT_CC_STATIC_LIBSTDCXX=y
-
-#
-# Optimisation features
-#
-CT_CC_GCC_USE_GRAPHITE=y
-CT_CC_GCC_USE_LTO=y
-
-#
-# Settings for libraries running on target
-#
-CT_CC_GCC_ENABLE_TARGET_OPTSPACE=y
-# CT_CC_GCC_LIBMUDFLAP is not set
-# CT_CC_GCC_LIBGOMP is not set
-# CT_CC_GCC_LIBSSP is not set
-# CT_CC_GCC_LIBQUADMATH is not set
-
-#
-# Misc. obscure options.
-#
-CT_CC_CXA_ATEXIT=y
-# CT_CC_GCC_DISABLE_PCH is not set
-CT_CC_GCC_SJLJ_EXCEPTIONS=m
-CT_CC_GCC_LDBL_128=m
-# CT_CC_GCC_BUILD_ID is not set
-
-#
-# C-library
-#
-CT_LIBC="glibc"
-CT_LIBC_VERSION="2.14.1"
-# CT_LIBC_eglibc is not set
-CT_LIBC_glibc=y
-# CT_LIBC_uClibc is not set
-CT_LIBC_eglibc_AVAILABLE=y
-CT_LIBC_glibc_AVAILABLE=y
-CT_LIBC_GLIBC_V_2_14_1
-# CT_LIBC_GLIBC_V_2_14 is not set
-# CT_LIBC_GLIBC_V_2_13 is not set
-# CT_LIBC_GLIBC_V_2_12_2 is not set
-# CT_LIBC_GLIBC_V_2_12_1 is not set
-# CT_LIBC_GLIBC_V_2_11_1 is not set
-# CT_LIBC_GLIBC_V_2_11 is not set
-# CT_LIBC_GLIBC_V_2_10_1 is not set
-# CT_LIBC_GLIBC_V_2_9 is not set
-# CT_LIBC_GLIBC_V_2_8 is not set
-CT_LIBC_mingw_AVAILABLE=y
-CT_LIBC_newlib_AVAILABLE=y
-CT_LIBC_none_AVAILABLE=y
-CT_LIBC_uClibc_AVAILABLE=y
-CT_LIBC_SUPPORT_THREADS_ANY=y
-CT_LIBC_SUPPORT_NPTL=y
-CT_THREADS="nptl"
-
-#
-# Common C library options
-#
-CT_THREADS_NPTL=y
-CT_LIBC_XLDD=y
-CT_LIBC_GLIBC_MAY_FORCE_PORTS=y
-CT_LIBC_glibc_familly=y
-CT_LIBC_GLIBC_EXTRA_CONFIG_ARRAY=""
-CT_LIBC_GLIBC_CONFIGPARMS=""
-CT_LIBC_GLIBC_EXTRA_CFLAGS=""
-CT_LIBC_EXTRA_CC_ARGS=""
-# CT_LIBC_DISABLE_VERSIONING is not set
-CT_LIBC_OLDEST_ABI=""
-CT_LIBC_GLIBC_FORCE_UNWIND=y
-CT_LIBC_GLIBC_USE_PORTS=y
-CT_LIBC_ADDONS_LIST=""
-# CT_LIBC_LOCALES is not set
-# CT_LIBC_GLIBC_KERNEL_VERSION_NONE is not set
-CT_LIBC_GLIBC_KERNEL_VERSION_AS_HEADERS=y
-# CT_LIBC_GLIBC_KERNEL_VERSION_CHOSEN is not set
-CT_LIBC_GLIBC_MIN_KERNEL="3.6.3"
-
-#
-# glibc other options
-#
-
-#
-# WARNING !!!
-#
-
-#
-# For glibc >= 2.8, it can happen that the tarballs
-#
-
-#
-# for the addons are not available for download.
-#
-
-#
-# If that happens, bad luck... Try a previous version
-#
-
-#
-# or try again later... :-(
-#
-
-#
-# Debug facilities
-#
-# CT_DEBUG_dmalloc is not set
-# CT_DEBUG_duma is not set
-# CT_DEBUG_gdb is not set
-# CT_DEBUG_ltrace is not set
-# CT_DEBUG_strace is not set
-
-#
-# Companion libraries
-#
-CT_COMPLIBS_NEEDED=y
-CT_GMP_NEEDED=y
-CT_MPFR_NEEDED=y
-CT_PPL_NEEDED=y
-CT_CLOOG_NEEDED=y
-CT_MPC_NEEDED=y
-CT_COMPLIBS=y
-CT_GMP=y
-CT_MPFR=y
-CT_PPL=y
-CT_CLOOG=y
-CT_MPC=y
-# CT_GMP_V_5_0_2 is not set
-# CT_GMP_V_5_0_1 is not set
-CT_GMP_V_4_3_2=y
-# CT_GMP_V_4_3_1 is not set
-# CT_GMP_V_4_3_0 is not set
-CT_GMP_VERSION="4.3.2"
-# CT_MPFR_V_3_1_0 is not set
-# CT_MPFR_V_3_0_1 is not set
-# CT_MPFR_V_3_0_0 is not set
-CT_MPFR_V_2_4_2=y
-# CT_MPFR_V_2_4_1 is not set
-# CT_MPFR_V_2_4_0 is not set
-CT_MPFR_VERSION="2.4.2"
-CT_PPL_V_0_11_2=y
-# CT_PPL_V_0_11_1 is not set
-# CT_PPL_V_0_11 is not set
-# CT_PPL_V_0_10_2 is not set
-CT_PPL_VERSION="0.11.2"
-CT_PPL_0_11=y
-CT_PPL_NEEDS_LIBPWL=y
-CT_CLOOG_V_0_15_11=y
-# CT_CLOOG_V_0_15_10 is not set
-# CT_CLOOG_V_0_15_9 is not set
-# CT_CLOOG_V_0_15_8 is not set
-# CT_CLOOG_V_0_15_7 is not set
-# CT_CLOOG_V_0_15_6 is not set
-CT_CLOOG_VERSION="0.15.11"
-CT_CLOOG_0_15_1x=y
-CT_CLOOG_NEEDS_AUTORECONF=y
-CT_MPC_V_0_9=y
-# CT_MPC_V_0_8_2 is not set
-# CT_MPC_V_0_8_1 is not set
-# CT_MPC_V_0_7 is not set
-CT_MPC_VERSION="0.9"
-
-#
-# Companion libraries common options
-#
-# CT_COMPLIBS_CHECK is not set
diff --git a/toolchain/toolchain-crosstool-ng/crosstool-ng.config-uClibc b/toolchain/toolchain-crosstool-ng/crosstool-ng.config-uClibc
deleted file mode 100644
index 4f21263..0000000
--- a/toolchain/toolchain-crosstool-ng/crosstool-ng.config-uClibc
+++ /dev/null
@@ -1,473 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# crosstool-NG 1.17.0 Configuration
-# Sat Dec 8 12:50:22 2012
-#
-CT_CONFIGURE_has_xz=y
-CT_CONFIGURE_has_svn=y
-CT_MODULES=y
-
-#
-# Paths and misc options
-#
-
-#
-# crosstool-NG behavior
-#
-# CT_OBSOLETE is not set
-# CT_EXPERIMENTAL is not set
-# CT_DEBUG_CT is not set
-
-#
-# Paths
-#
-CT_LOCAL_TARBALLS_DIR=""
-CT_WORK_DIR="${CT_TOP_DIR}/.build"
-CT_PREFIX_DIR=""
-CT_INSTALL_DIR="${CT_PREFIX_DIR}"
-CT_RM_RF_PREFIX_DIR=y
-CT_REMOVE_DOCS=y
-# CT_INSTALL_DIR_RO is not set
-# CT_STRIP_ALL_TOOLCHAIN_EXECUTABLES is not set
-
-#
-# Downloading
-#
-# CT_FORBID_DOWNLOAD is not set
-# CT_FORCE_DOWNLOAD is not set
-CT_CONNECT_TIMEOUT=10
-# CT_ONLY_DOWNLOAD is not set
-# CT_USE_MIRROR is not set
-
-#
-# Extracting
-#
-# CT_FORCE_EXTRACT is not set
-CT_OVERIDE_CONFIG_GUESS_SUB=y
-# CT_ONLY_EXTRACT is not set
-CT_PATCH_BUNDLED=y
-# CT_PATCH_LOCAL is not set
-# CT_PATCH_BUNDLED_LOCAL is not set
-# CT_PATCH_LOCAL_BUNDLED is not set
-# CT_PATCH_BUNDLED_FALLBACK_LOCAL is not set
-# CT_PATCH_LOCAL_FALLBACK_BUNDLED is not set
-# CT_PATCH_NONE is not set
-CT_PATCH_ORDER="bundled"
-
-#
-# Build behavior
-#
-CT_PARALLEL_JOBS=0
-CT_LOAD=0
-CT_USE_PIPES=y
-CT_EXTRA_FLAGS_FOR_HOST=""
-# CT_CONFIG_SHELL_SH is not set
-# CT_CONFIG_SHELL_ASH is not set
-CT_CONFIG_SHELL_BASH=y
-# CT_CONFIG_SHELL_CUSTOM is not set
-CT_CONFIG_SHELL="${bash}"
-
-#
-# Logging
-#
-# CT_LOG_ERROR is not set
-# CT_LOG_WARN is not set
-# CT_LOG_INFO is not set
-# CT_LOG_EXTRA is not set
-CT_LOG_ALL=y
-# CT_LOG_DEBUG is not set
-CT_LOG_LEVEL_MAX="ALL"
-# CT_LOG_SEE_TOOLS_WARN is not set
-CT_LOG_TO_FILE=y
-CT_LOG_FILE_COMPRESS=y
-
-#
-# Target options
-#
-CT_ARCH="arm"
-CT_ARCH_SUPPORTS_BOTH_MMU=y
-CT_ARCH_SUPPORTS_BOTH_ENDIAN=y
-CT_ARCH_SUPPORTS_32=y
-CT_ARCH_SUPPORTS_WITH_ARCH=y
-CT_ARCH_SUPPORTS_WITH_CPU=y
-CT_ARCH_SUPPORTS_WITH_TUNE=y
-CT_ARCH_SUPPORTS_WITH_FLOAT=y
-CT_ARCH_SUPPORTS_WITH_FPU=y
-CT_ARCH_SUPPORTS_SOFTFP=y
-CT_ARCH_DEFAULT_HAS_MMU=y
-CT_ARCH_DEFAULT_LE=y
-CT_ARCH_DEFAULT_32=y
-CT_ARCH_ARCH=""
-CT_ARCH_CPU=""
-CT_ARCH_TUNE=""
-CT_ARCH_FPU=""
-# CT_ARCH_BE is not set
-CT_ARCH_LE=y
-CT_ARCH_32=y
-CT_ARCH_BITNESS=32
-# CT_ARCH_FLOAT_HW is not set
-CT_ARCH_FLOAT_SW=y
-CT_TARGET_CFLAGS=""
-CT_TARGET_LDFLAGS=""
-# CT_ARCH_alpha is not set
-CT_ARCH_arm=y
-# CT_ARCH_avr32 is not set
-# CT_ARCH_blackfin is not set
-# CT_ARCH_mips is not set
-# CT_ARCH_powerpc is not set
-# CT_ARCH_sh is not set
-# CT_ARCH_sparc is not set
-# CT_ARCH_x86 is not set
-CT_ARCH_alpha_AVAILABLE=y
-CT_ARCH_arm_AVAILABLE=y
-CT_ARCH_avr32_AVAILABLE=y
-CT_ARCH_blackfin_AVAILABLE=y
-CT_ARCH_m68k_AVAILABLE=y
-CT_ARCH_microblaze_AVAILABLE=y
-CT_ARCH_mips_AVAILABLE=y
-CT_ARCH_powerpc_AVAILABLE=y
-CT_ARCH_s390_AVAILABLE=y
-CT_ARCH_sh_AVAILABLE=y
-CT_ARCH_sparc_AVAILABLE=y
-CT_ARCH_x86_AVAILABLE=y
-
-#
-# Generic target options
-#
-CT_ARCH_USE_MMU=y
-CT_ARCH_ENDIAN="little"
-
-#
-# Target optimisations
-#
-# CT_ARCH_FLOAT_SOFTFP is not set
-CT_ARCH_FLOAT="soft"
-
-#
-# arm other options
-#
-CT_ARCH_ARM_MODE="arm"
-CT_ARCH_ARM_MODE_ARM=y
-CT_ARCH_ARM_EABI=y
-
-#
-# Toolchain options
-#
-
-#
-# General toolchain options
-#
-CT_FORCE_SYSROOT=y
-CT_USE_SYSROOT=y
-CT_SYSROOT_NAME="sysroot"
-CT_SYSROOT_DIR_PREFIX=""
-CT_WANTS_STATIC_LINK=y
-CT_TOOLCHAIN_PKGVERSION=""
-CT_TOOLCHAIN_BUGURL=""
-
-#
-# Tuple completion and aliasing
-#
-CT_TARGET_VENDOR="unknown"
-CT_TARGET_ALIAS_SED_EXPR=""
-CT_TARGET_ALIAS=""
-
-#
-# Toolchain type
-#
-CT_CROSS=y
-CT_TOOLCHAIN_TYPE="cross"
-
-#
-# Build system
-#
-CT_BUILD=""
-CT_BUILD_PREFIX=""
-CT_BUILD_SUFFIX=""
-
-#
-# Misc options
-#
-# CT_TOOLCHAIN_ENABLE_NLS is not set
-
-#
-# Operating System
-#
-CT_KERNEL_SUPPORTS_SHARED_LIBS=y
-CT_KERNEL="linux"
-CT_KERNEL_VERSION="3.6.3"
-# CT_KERNEL_bare_metal is not set
-CT_KERNEL_linux=y
-CT_KERNEL_bare_metal_AVAILABLE=y
-CT_KERNEL_linux_AVAILABLE=y
-CT_KERNEL_V_3_6_3=y
-# CT_KERNEL_V_3_6_2 is not set
-# CT_KERNEL_V_3_6_1 is not set
-# CT_KERNEL_V_3_6 is not set
-# CT_KERNEL_V_3_5_7 is not set
-# CT_KERNEL_V_3_4_15 is not set
-# CT_KERNEL_V_3_3_8 is not set
-# CT_KERNEL_V_3_2_32 is not set
-# CT_KERNEL_V_3_1_10 is not set
-# CT_KERNEL_V_3_0_48 is not set
-# CT_KERNEL_V_2_6_39_4 is not set
-# CT_KERNEL_V_2_6_38_8 is not set
-# CT_KERNEL_V_2_6_37_6 is not set
-# CT_KERNEL_V_2_6_36_4 is not set
-# CT_KERNEL_V_2_6_33_20 is not set
-# CT_KERNEL_V_2_6_32_60 is not set
-# CT_KERNEL_V_2_6_31_14 is not set
-# CT_KERNEL_V_2_6_27_62 is not set
-# CT_KERNEL_LINUX_CUSTOM is not set
-CT_KERNEL_mingw32_AVAILABLE=y
-
-#
-# Common kernel options
-#
-CT_SHARED_LIBS=y
-
-#
-# linux other options
-#
-CT_KERNEL_LINUX_VERBOSITY_0=y
-# CT_KERNEL_LINUX_VERBOSITY_1 is not set
-# CT_KERNEL_LINUX_VERBOSITY_2 is not set
-CT_KERNEL_LINUX_VERBOSE_LEVEL=0
-CT_KERNEL_LINUX_INSTALL_CHECK=y
-
-#
-# Binary utilities
-#
-CT_ARCH_BINFMT_ELF=y
-
-#
-# GNU binutils
-#
-# CT_BINUTILS_V_2_21_1a is not set
-CT_BINUTILS_V_2_20_1a=y
-# CT_BINUTILS_V_2_19_1a is not set
-# CT_BINUTILS_V_2_18a is not set
-CT_BINUTILS_VERSION="2.20.1a"
-CT_BINUTILS_2_20_or_later=y
-CT_BINUTILS_2_19_or_later=y
-CT_BINUTILS_2_18_or_later=y
-CT_BINUTILS_HAS_HASH_STYLE=y
-CT_BINUTILS_GOLD_SUPPORTS_ARCH=y
-CT_BINUTILS_HAS_PKGVERSION_BUGURL=y
-CT_BINUTILS_LINKER_LD=y
-CT_BINUTILS_LINKERS_LIST="ld"
-CT_BINUTILS_LINKER_DEFAULT="bfd"
-CT_BINUTILS_EXTRA_CONFIG_ARRAY=""
-# CT_BINUTILS_FOR_TARGET is not set
-
-#
-# C compiler
-#
-CT_CC="gcc"
-CT_CC_VERSION="4.6.3"
-CT_CC_gcc=y
-# CT_CC_V_4_7_2 is not set
-CT_CC_V_4_6_3=y
-# CT_CC_V_4_6_2 is not set
-# CT_CC_V_4_6_1 is not set
-# CT_CC_V_4_6_0 is not set
-# CT_CC_V_4_5_3 is not set
-# CT_CC_V_4_5_2 is not set
-# CT_CC_V_4_5_1 is not set
-# CT_CC_V_4_5_0 is not set
-# CT_CC_V_4_4_7 is not set
-# CT_CC_V_4_4_6 is not set
-# CT_CC_V_4_4_5 is not set
-# CT_CC_V_4_4_4 is not set
-# CT_CC_V_4_4_3 is not set
-# CT_CC_V_4_4_2 is not set
-# CT_CC_V_4_4_1 is not set
-# CT_CC_V_4_4_0 is not set
-# CT_CC_V_4_3_6 is not set
-# CT_CC_V_4_3_5 is not set
-# CT_CC_V_4_3_4 is not set
-# CT_CC_V_4_3_3 is not set
-# CT_CC_V_4_3_2 is not set
-# CT_CC_V_4_3_1 is not set
-# CT_CC_V_4_2_4 is not set
-# CT_CC_V_4_2_2 is not set
-CT_CC_GCC_4_2_or_later=y
-CT_CC_GCC_4_3_or_later=y
-CT_CC_GCC_4_4_or_later=y
-CT_CC_GCC_4_5_or_later=y
-CT_CC_GCC_4_6=y
-CT_CC_GCC_4_6_or_later=y
-CT_CC_GCC_HAS_GRAPHITE=y
-CT_CC_GCC_HAS_LTO=y
-CT_CC_GCC_HAS_PKGVERSION_BUGURL=y
-CT_CC_GCC_HAS_BUILD_ID=y
-CT_CC_GCC_USE_GMP_MPFR=y
-CT_CC_GCC_USE_PPL_CLOOG=y
-CT_CC_GCC_USE_MPC=y
-CT_CC_GCC_HAS_LIBQUADMATH=y
-# CT_CC_LANG_FORTRAN is not set
-CT_CC_SUPPORT_CXX=y
-CT_CC_SUPPORT_FORTRAN=y
-CT_CC_SUPPORT_JAVA=y
-CT_CC_SUPPORT_ADA=y
-CT_CC_SUPPORT_OBJC=y
-CT_CC_SUPPORT_OBJCXX=y
-
-#
-# Additional supported languages:
-#
-CT_CC_LANG_CXX=y
-# CT_CC_LANG_JAVA is not set
-
-#
-# gcc other options
-#
-CT_CC_ENABLE_CXX_FLAGS=""
-CT_CC_CORE_EXTRA_CONFIG_ARRAY="--disable-decimal-float"
-CT_CC_EXTRA_CONFIG_ARRAY="--disable-decimal-float"
-CT_CC_STATIC_LIBSTDCXX=y
-
-#
-# Optimisation features
-#
-CT_CC_GCC_USE_GRAPHITE=y
-CT_CC_GCC_USE_LTO=y
-
-#
-# Settings for libraries running on target
-#
-CT_CC_GCC_ENABLE_TARGET_OPTSPACE=y
-# CT_CC_GCC_LIBMUDFLAP is not set
-# CT_CC_GCC_LIBGOMP is not set
-# CT_CC_GCC_LIBSSP is not set
-# CT_CC_GCC_LIBQUADMATH is not set
-
-#
-# Misc. obscure options.
-#
-CT_CC_CXA_ATEXIT=y
-# CT_CC_GCC_DISABLE_PCH is not set
-CT_CC_GCC_SJLJ_EXCEPTIONS=m
-CT_CC_GCC_LDBL_128=m
-# CT_CC_GCC_BUILD_ID is not set
-
-#
-# C-library
-#
-CT_LIBC="uClibc"
-CT_LIBC_VERSION="0.9.33.2"
-# CT_LIBC_eglibc is not set
-# CT_LIBC_glibc is not set
-CT_LIBC_uClibc=y
-CT_LIBC_eglibc_AVAILABLE=y
-CT_LIBC_glibc_AVAILABLE=y
-CT_LIBC_mingw_AVAILABLE=y
-CT_LIBC_newlib_AVAILABLE=y
-CT_LIBC_none_AVAILABLE=y
-CT_LIBC_uClibc_AVAILABLE=y
-CT_LIBC_UCLIBC_V_0_9_33_2=y
-# CT_LIBC_UCLIBC_V_0_9_33_1 is not set
-# CT_LIBC_UCLIBC_V_0_9_33 is not set
-# CT_LIBC_UCLIBC_V_0_9_32_1 is not set
-# CT_LIBC_UCLIBC_V_0_9_32 is not set
-# CT_LIBC_UCLIBC_V_0_9_30_3 is not set
-# CT_LIBC_UCLIBC_V_0_9_30_2 is not set
-# CT_LIBC_UCLIBC_V_0_9_30_1 is not set
-# CT_LIBC_UCLIBC_V_0_9_30 is not set
-CT_LIBC_UCLIBC_0_9_32_or_later=y
-CT_LIBC_UCLIBC_0_9_30_or_later=y
-CT_LIBC_UCLIBC_PARALLEL=y
-CT_LIBC_UCLIBC_VERBOSITY_0=y
-# CT_LIBC_UCLIBC_VERBOSITY_1 is not set
-# CT_LIBC_UCLIBC_VERBOSITY_2 is not set
-CT_LIBC_UCLIBC_VERBOSITY=""
-CT_LIBC_UCLIBC_DEBUG_LEVEL_0=y
-# CT_LIBC_UCLIBC_DEBUG_LEVEL_1 is not set
-# CT_LIBC_UCLIBC_DEBUG_LEVEL_2 is not set
-# CT_LIBC_UCLIBC_DEBUG_LEVEL_3 is not set
-CT_LIBC_UCLIBC_DEBUG_LEVEL=0
-CT_LIBC_UCLIBC_CONFIG_FILE=""
-CT_LIBC_SUPPORT_THREADS_ANY=y
-CT_LIBC_SUPPORT_NPTL=y
-CT_LIBC_SUPPORT_LINUXTHREADS=y
-CT_LIBC_SUPPORT_THREADS_NONE=y
-CT_THREADS="nptl"
-
-#
-# Common C library options
-#
-CT_THREADS_NPTL=y
-# CT_THREADS_LINUXTHREADS is not set
-# CT_THREADS_NONE is not set
-CT_LIBC_XLDD=y
-
-#
-# uClibc other options
-#
-CT_LIBC_UCLIBC_LNXTHRD=""
-# CT_LIBC_UCLIBC_LOCALES is not set
-CT_LIBC_UCLIBC_WCHAR=y
-
-#
-# Debug facilities
-#
-# CT_DEBUG_dmalloc is not set
-# CT_DEBUG_duma is not set
-# CT_DEBUG_gdb is not set
-# CT_DEBUG_ltrace is not set
-# CT_DEBUG_strace is not set
-
-#
-# Companion libraries
-#
-CT_COMPLIBS_NEEDED=y
-CT_GMP_NEEDED=y
-CT_MPFR_NEEDED=y
-CT_PPL_NEEDED=y
-CT_CLOOG_NEEDED=y
-CT_MPC_NEEDED=y
-CT_COMPLIBS=y
-CT_GMP=y
-CT_MPFR=y
-CT_PPL=y
-CT_CLOOG=y
-CT_MPC=y
-# CT_GMP_V_5_0_2 is not set
-# CT_GMP_V_5_0_1 is not set
-CT_GMP_V_4_3_2=y
-# CT_GMP_V_4_3_1 is not set
-# CT_GMP_V_4_3_0 is not set
-CT_GMP_VERSION="4.3.2"
-# CT_MPFR_V_3_1_0 is not set
-# CT_MPFR_V_3_0_1 is not set
-# CT_MPFR_V_3_0_0 is not set
-CT_MPFR_V_2_4_2=y
-# CT_MPFR_V_2_4_1 is not set
-# CT_MPFR_V_2_4_0 is not set
-CT_MPFR_VERSION="2.4.2"
-CT_PPL_V_0_11_2=y
-# CT_PPL_V_0_11_1 is not set
-# CT_PPL_V_0_11 is not set
-# CT_PPL_V_0_10_2 is not set
-CT_PPL_VERSION="0.11.2"
-CT_PPL_0_11=y
-CT_PPL_NEEDS_LIBPWL=y
-CT_CLOOG_V_0_15_11=y
-# CT_CLOOG_V_0_15_10 is not set
-# CT_CLOOG_V_0_15_9 is not set
-# CT_CLOOG_V_0_15_8 is not set
-# CT_CLOOG_V_0_15_7 is not set
-# CT_CLOOG_V_0_15_6 is not set
-CT_CLOOG_VERSION="0.15.11"
-CT_CLOOG_0_15_1x=y
-CT_CLOOG_NEEDS_AUTORECONF=y
-CT_MPC_V_0_9=y
-# CT_MPC_V_0_8_2 is not set
-# CT_MPC_V_0_8_1 is not set
-# CT_MPC_V_0_7 is not set
-CT_MPC_VERSION="0.9"
-
-#
-# Companion libraries common options
-#
-# CT_COMPLIBS_CHECK is not set
diff --git a/toolchain/toolchain-crosstool-ng/crosstool-ng.mk b/toolchain/toolchain-crosstool-ng/crosstool-ng.mk
deleted file mode 100644
index 19e8761..0000000
--- a/toolchain/toolchain-crosstool-ng/crosstool-ng.mk
+++ /dev/null
@@ -1,396 +0,0 @@
-# Makefile fragment for building toolchain with crosstool-NG
-
-# As a reference, you can look at toolchain/toolchain-external/ext-tool.mk
-# for a generic approach to external toolchains.
-# crosstool-NG as a backend is but a kind of external toolchains,
-# except that it is not pre-built.
-
-#-----------------------------------------------------------------------------
-# Internal variables
-
-CTNG_DIR := $(BUILD_DIR)/build-toolchain
-
-CTNG_UCLIBC_CONFIG_FILE := $(TOPDIR)/package/uclibc/uClibc-0.9.33.config
-CTNG_CONFIG_FILE := $(call qstrip,$(BR2_TOOLCHAIN_CTNG_CONFIG))
-
-# Hack! ct-ng is in fact a Makefile script. As such, it accepts all
-# make options, such as -C, which makes it uneeded to chdir prior
-# to calling ct-ng.
-# $1: the set of arguments to pass to ct-ng
-define ctng
-PATH=$(HOST_PATH) ct-ng -C $(CTNG_DIR) --no-print-directory $(1)
-endef
-
-#-----------------------------------------------------------------------------
-toolchain-crosstool-ng: dependencies $(STAMP_DIR)/ct-ng-toolchain-installed
-
-# The target used by the infra structure to mean "we just want to
-# download the toolchain's sources, not build it" For crosstool-NG, we
-# need it to be configured before we can download; then we have to
-# override a config option to just do the download
-toolchain-crosstool-ng-source: $(CTNG_DIR)/.config
- $(Q)$(call ctng,build CT_ONLY_DOWNLOAD=y)
-
-#-----------------------------------------------------------------------------
-# Installing the libs to target/ and staging/
-
-#--------------
-# The generic system libraries (in /lib)
-CTNG_LIBS_LIB := ld*.so libc.so libcrypt.so libdl.so libgcc_s.so libm.so \
- libnsl.so libpthread.so libresolv.so librt.so libutil.so
-
-ifeq ($(BR2_PACKAGE_GDB_SERVER),y)
-CTNG_LIBS_LIB += libthread_db.so
-endif
-
-#--------------
-# The libc-specific system libraries (in /lib)
-# Note: it may be needed to tweak the NSS libs in the glibc and eglibc cases...
-CTNG_LIBS_uClibc :=
-CTNG_LIBS_glibc := libnss_files.so libnss_dns.so
-CTNG_LIBS_eglibc := $(CTNG_LIBS_glibc)
-
-#--------------
-# All that we need in /lib
-CTNG_LIBS_LIB += $(CTNG_LIBS_$(call qstrip,$(BR2_TOOLCHAIN_CTNG_LIBC)))
-
-#--------------
-# All that we need in /usr/lib
-ifneq ($(BR2_INSTALL_LIBSTDCPP),)
-CTNG_LIBS_USR_LIB += libstdc++.so
-endif
-
-#--------------
-# Actual copy
-$(STAMP_DIR)/ct-ng-toolchain-installed: $(STAMP_DIR)/ct-ng-toolchain-built
- $(Q)mkdir -p $(TARGET_DIR)/lib
- $(Q)CTNG_TUPLE="$$( $(call ctng,show-tuple 2>&1) )"; \
- CTNG_SYSROOT="$(HOST_DIR)/usr/$${CTNG_TUPLE}/sysroot"; \
- $(call MESSAGE,"Copying toolchain libraries to target..."); \
- for libs in $(CTNG_LIBS_LIB); do \
- $(call copy_toolchain_lib_root,$${CTNG_SYSROOT},,lib,$$libs,/lib); \
- done; \
- for libs in $(CTNG_LIBS_USR_LIB); do \
- $(call copy_toolchain_lib_root,$${CTNG_SYSROOT},,lib,$$libs,/usr/lib); \
- done;
- $(Q)touch $@
-
-#-----------------------------------------------------------------------------
-# Building the toolchain
-# Note: $(STAMP_DIR)/ct-ng-toolchain-built can have more dependencies,
-# depending on the selected C library. Those deps are added later
-
-$(STAMP_DIR)/ct-ng-toolchain-built: $(CTNG_DIR)/.config
- $(Q)$(call MESSAGE,"Building the crosstool-NG toolchain")
- $(Q)$(call ctng,build.$(PARALLEL_JOBS))
- $(Q)printf "\n"
- $(Q)touch $@
-
-#-----------------------------------------------------------------------------
-# Configuring the toolchain
-
-#--------------
-# We push BR options down to CT-NG, munging the default configuration
-# with sed expressions.
-# - first one for non-path options
-# - second for path options (because they have no prompt, they
-# always get set to the default value)
-# - third for C library .config (if it has one, eg. uClibc)
-CTNG_FIX_BUILDROOT_CONFIG_SED :=
-CTNG_FIX_BUILDROOT_CONFIG_PATHS_SED :=
-CTNG_FIX_BUILDROOT_CONFIG_LIBC_SED :=
-
-#--------------
-# A few generic functions
-
-# Munge a config file, given a sed expression
-# $1: the .config file to munge
-# $2: the sed expression to apply
-define ctng-fix-dot-config
- $(Q)sed -r -e '$(2)' $(1) >$(1).sed
- $(Q)cmp $(1) $(1).sed >/dev/null 2>&1 && rm -f $(1).sed || mv -f $(1).sed $(1)
-endef
-
-# This function checks the .config did actually change
-# If not changed, then current .config will be touched with reference to the
-# stamp file. If the configuration did change, nothing is done.
-# $1: the current .config to check
-# $2: the time-stamped .config file
-define ctng-check-config-changed
- $(Q)old_md5="$$( grep -v -E '^(#|$$)' $(2) 2>/dev/null \
- |md5sum \
- |cut -d ' ' -f 1 \
- )"; \
- new_md5="$$( grep -v -E '^(#|$$)' $(1) 2>/dev/null \
- |md5sum \
- |cut -d ' ' -f 1 \
- )"; \
- if [ $${old_md5} = $${new_md5} -a -f $(2) ]; then \
- touch -r $(2) $(1); \
- fi
-endef
-
-#--------------
-# Massage BR2_ARCH so that it matches CT-NG's ARCH
-#
-# Note: a lot of the following tricks would become unneeded if one day
-# buildroot and crosstool-NG had matching options, especially for the
-# target description: arch name, bitness, endianness...
-#
-# Note-2: missing conformity check between BR's .config and libc features.
-# Use check_uclibc or check_glibc.
-
-# Defaults:
-CTNG_ARCH := $(CTNG_BR2_ARCH)
-CTNG_ENDIAN :=
-CTNG_BIT :=
-# Architecture overides, only overide pertinent vars:
-ifeq ($(BR2_arm),y)
-CTNG_ARCH := arm
-CTNG_ENDIAN := LE
-else ifeq ($(BR2_armeb),y)
-CTNG_ARCH := arm
-CTNG_ENDIAN := BE
-else ifeq ($(BR2_i386),y)
-CTNG_ARCH := x86
-CTNG_BIT := 32
-else ifeq ($(BR2_mips),y)
-CTNG_ARCH := mips
-CTNG_ENDIAN := BE
-else ifeq ($(BR2_mipsel),y)
-CTNG_ARCH := mips
-CTNG_ENDIAN := LE
-else ifeq ($(BR2_powerpc),y)
-CTNG_ARCH := powerpc
-CTNG_BIT := 32
-else ifeq ($(BR2_x86_64),y)
-CTNG_ARCH := x86
-CTNG_BIT := 64
-# Add other architecture overides below:
-# - keep alphabetic order
-# - duplicate next 4 lines, and uncomment
-# else ifeq ($(BR2_<arch_name_here>),y)
-# CTNG_ARCH :=
-# CTNG_ENDIAN :=
-# CTNG_BIT :=
-# - remove unneeded vars
-# - add BR arch-name on ifeq line
-# - fill-in required CTNG_* vars
-endif
-
-#--------------
-# Massage BR options into CTNG .config file
-# CT_ARCH : handled by the backend mechanism
-# CT_ARCH_[BL]E : endianness
-# CT_ARCH_(32|64) : bitness
-# CT_PREFIX_DIR : install into BR's toolchain dir
-# CT_INSTALL_DIR_RO : do *not* chmod a-w the toolchain dir
-# CT_LOCAL_TARBALLS_DIR : share downloads with BR
-# CT_SYSROOT_DIR_PREFIX : no prefix needed, really
-# CT_TARGET_VENDOR : try to set a unique vendor string, to avoid clashing with BR's vendor string
-# CT_TARGET_ALIAS : set the target tuple alias to GNU_TARGET_NAME so that packages' ./configure find the compiler
-# CT_DEBUG_gdb : deselect gdb+gdbserver if buildroot builds its own
-# CT_CC_LANG_CXX : required if we copy libstdc++.so, and build C++
-# CT_LIBC_UCLIBC_CONFIG_FILE: uClibc config file, if needed
-#
-# Lots of other awfull sed manipulations go here, to override CT-NG's .config
-# with BR2 config options.
-# Known missing: arch options, uClibc/eglibc config...
-#
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^(CT_INSTALL_DIR_RO)=y:\# \1 is not set:;
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^(|\# )(CT_ARCH_[BL]E).*:\# \2 is not set:;
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^\# (CT_ARCH_$(CTNG_ENDIAN)) is not set:\1=y:;
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^(|\# )(CT_ARCH_(32|64)).*:\# \2 is not set:;
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^\# (CT_ARCH_$(CTNG_BIT)) is not set:\1=y:;
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^(CT_TARGET_VENDOR)=.*:\1="buildroot":;
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^(CT_TARGET_ALIAS)=.*:\1="$(ARCH)-linux":;
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^(CT_TOOLCHAIN_PKGVERSION)="(.*)":\1="buildroot $(BR2_VERSION_FULL)":;
-ifneq ($(call qstrip,$(BR2_USE_MMU)),)
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^\# (CT_ARCH_USE_MMU) is not set:\1=y:;
-else
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^(CT_ARCH_USE_MMU)=y:\# \1 is not set:;
-endif
-ifneq ($(call qstrip,$(BR2_PACKAGE_GDB_SERVER))$(call qstrip,$(BR2_PACKAGE_GDB_HOST)),)
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^(CT_DEBUG_gdb)=.*:\# \1 is not set:;
-endif
-ifeq ($(call qstrip,$(BR2_TOOLCHAIN_CTNG_CXX)),y)
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^\# (CT_CC_LANG_CXX) is not set:\1=y:;
-else
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^(CT_CC_LANG_CXX)=.*:\# \1 is not set:;
-endif
-
-# Shoe-horn CPU variant now
-ifneq ($(call qstrip,$(BR2_GCC_TARGET_ARCH)),)
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^(CT_ARCH_ARCH)=.*:\1=$(BR2_GCC_TARGET_ARCH):;
-endif
-ifneq ($(call qstrip,$(BR2_GCC_TARGET_TUNE)),)
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^(CT_ARCH_TUNE)=.*:\1=$(BR2_GCC_TARGET_TUNE):;
-endif
-
-# And floating point now
-ifeq ($(call qstrip,$(BR2_SOFT_FLOAT)),)
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^\# (CT_ARCH_FLOAT_HW) is not set:\1=y:;
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^(CT_ARCH_FLOAT_SW)=y:\# \1 is not set:;
-else
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^(CT_ARCH_FLOAT_HW)=y:\# \1 is not set:;
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^\# (CT_ARCH_FLOAT_SW) is not set:\1=y:;
-endif
-
-# Thread implementation selection
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^(|\# )(CT_THREADS_NONE).*:\# \2 is not set:;
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^(|\# )(CT_THREADS_LINUXTHREADS).*:\# \2 is not set:;
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^(|\# )(CT_THREADS_NPTL).*:\# \2 is not set:;
-ifneq ($(call qstrip,$(BR2_TOOLCHAIN_CTNG_THREADS_PTHREADS))$(call qstrip,$(BR2_TOOLCHAIN_CTNG_THREADS_PTHREADS_OLD)),)
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^(|\# )(CT_THREADS_LINUXTHREADS).*:\2=y:;
- ifneq ($(call qstrip,$(BR2_TOOLCHAIN_CTNG_uClibc)),)
- ifneq ($(call qstrip,$(BR2_TOOLCHAIN_CTNG_THREADS_PTHREADS_OLD)),)
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^(|\# )(CT_LIBC_UCLIBC_LNXTHRD_NEW).*:\# \2 is not set:;
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^(|\# )(CT_LIBC_UCLIBC_LNXTHRD_OLD).*:\2=y:;
- else
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^(|\# )(CT_LIBC_UCLIBC_LNXTHRD_OLD).*:\# \2 is not set:;
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^(|\# )(CT_LIBC_UCLIBC_LNXTHRD_NEW).*:\2=y:;
- endif
- endif
-else ifneq ($(call qstrip,$(BR2_TOOLCHAIN_CTNG_THREADS_NPTL)),)
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^(|\# )(CT_THREADS_NPTL).*:\2=y:;
-else ifneq ($(call qstrip,$(BR2_TOOLCHAIN_CTNG_THREADS_NONE)),)
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^(|\# )(CT_THREADS_NONE).*:\2=y:;
-endif
-
-#--------------
-# And the specials for paths
-CTNG_FIX_BUILDROOT_CONFIG_PATHS_SED += s:^(CT_PREFIX_DIR)=.*:\1="$(HOST_DIR)/usr":;
-CTNG_FIX_BUILDROOT_CONFIG_PATHS_SED += s:^(CT_LOCAL_TARBALLS_DIR)=.*:\1="$(DL_DIR)":;
-CTNG_FIX_BUILDROOT_CONFIG_PATHS_SED += s:^(CT_SYSROOT_NAME)=.*:\1="sysroot":;
-CTNG_FIX_BUILDROOT_CONFIG_PATHS_SED += s:^(CT_SYSROOT_DIR_PREFIX)=.*:\1="":;
-
-#--------------
-# uClibc specific options
-ifeq ($(BR2_TOOLCHAIN_CTNG_uClibc),y)
-
-# Handle the locales option
-ifneq ($(call qstrip,$(BR2_TOOLCHAIN_CTNG_uClibc_LOCALE)),)
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^\# (CT_LIBC_UCLIBC_LOCALES) is not set:\1=y\n\# CT_LIBC_UCLIBC_LOCALES_PREGEN_DATA is not set:;
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^(CT_LIBC_UCLIBC_LOCALES_PREGEN_DATA)=.*:\# \1 is not set:;
-else
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^(CT_LIBC_UCLIBC_LOCALES)=.*:\# \1 is not set:;
-endif
-
-# Handle the wide-char option
-ifneq ($(call qstrip,$(BR2_TOOLCHAIN_CTNG_uClibc_WCHAR)),)
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^\# (CT_LIBC_UCLIBC_WCHAR) is not set:\1=y:;
-else
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^(CT_LIBC_UCLIBC_WCHAR)=.*:\# \1 is not set:;
-endif
-
-# Handle the LFS option
-ifneq ($(call qstrip,$(BR2_TOOLCHAIN_CTNG_uClibc_LARGEFILE)),)
-CTNG_FIX_BUILDROOT_CONFIG_LIBC_SED += s:^\# (UCLIBC_HAS_LFS) is not set:\1=y:;
-else
-CTNG_FIX_BUILDROOT_CONFIG_LIBC_SED += s:^(UCLIBC_HAS_LFS)=.*:\# \1 is not set:;
-endif
-
-# Handle the IPv6 option
-ifneq ($(call qstrip,$(BR2_TOOLCHAIN_CTNG_uClibc_INET_IPV6)),)
-CTNG_FIX_BUILDROOT_CONFIG_LIBC_SED += s:^\# (UCLIBC_HAS_IPV6) is not set:\1=y:;
-else
-CTNG_FIX_BUILDROOT_CONFIG_LIBC_SED += s:^(UCLIBC_HAS_IPV6)=.*:\# \1 is not set:;
-endif
-
-# Handle the RPC option
-ifneq ($(call qstrip,$(BR2_TOOLCHAIN_CTNG_uClibc_INET_RPC)),)
-CTNG_FIX_BUILDROOT_CONFIG_LIBC_SED += s:^\# (UCLIBC_HAS_RPC) is not set:\1=y\nUCLIBC_HAS_FULL_RPC=y\nUCLIBC_HAS_REENTRANT_RPC=y:;
-CTNG_FIX_BUILDROOT_CONFIG_LIBC_SED += s:^\# (UCLIBC_HAS_FULL_RPC) is not set:\1=y:;
-CTNG_FIX_BUILDROOT_CONFIG_LIBC_SED += s:^\# (UCLIBC_HAS_REENTRANT_RPC) is not set:\1=y:;
-else
-CTNG_FIX_BUILDROOT_CONFIG_LIBC_SED += s:^(UCLIBC_HAS_RPC)=.*:\# \1 is not set:;
-endif
-
-# Instruct CT-NG's .config where to find the uClibc's .config
-CTNG_FIX_BUILDROOT_CONFIG_PATHS_SED += s:^(CT_LIBC_UCLIBC_CONFIG_FILE)=.*:\1="$(CTNG_DIR)/libc.config":;
-
-# And add this to the toolchain build dependency
-$(STAMP_DIR)/ct-ng-toolchain-built: $(CTNG_DIR)/libc.config
-
-# And here is how we get this uClibc's .config
-$(CTNG_DIR)/libc.config: $(CTNG_UCLIBC_CONFIG_FILE) $(BUILDROOT_CONFIG)
- -$(Q)cp -a $@ $@.timestamp
- $(Q)cp -f $< $@
- $(call ctng-fix-dot-config,$@,$(CTNG_FIX_BUILDROOT_CONFIG_LIBC_SED))
- $(call ctng-check-config-changed,$@,$@.timestamp)
- $(Q)rm -f $@.timestamp
-
-endif # LIBC is uClibc
-
-#--------------
-# glibc/eglibc specific options
-ifeq ($(BR2_TOOLCHAIN_CTNG_glibc)$(BR2_TOOLCHAIN_CTNG_eglibc),y)
-
-# Force unwind support
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^\# (CT_LIBC_GLIBC_FORCE_UNWIND) is not set:\1=y:;
-
-# Force non-fortified build
-CTNG_FIX_BUILDROOT_CONFIG_SED += s:^(CT_LIBC_ENABLE_FORTIFIED_BUILD)=y:\# \1 is not set:;
-
-endif # LIBC is glibc or eglibc
-
-#--------------
-# Small functions to shoe-horn the above into crosstool-NG's .config
-
-# Function to update the .config
-# We first munge the .config to shoe-horn defaults, then we push that unto
-# crosstool-NG's oldconfig process, to sort out wizy-wazy deps, and then we
-# shoe-horn paths again, as they get ripped-out by oldconfig (is that a bug
-# or a feature of kconfig?)
-# $1: the .config file to munge
-define ctng-oldconfig
- $(call ctng-fix-dot-config,$(1),$(CTNG_FIX_BUILDROOT_CONFIG_SED))
- $(Q)yes '' |\
- $(call ctng,CT_IS_A_BACKEND=y \
- CT_BACKEND_ARCH=$(CTNG_ARCH) \
- CT_BACKEND_KERNEL=linux \
- CT_BACKEND_LIBC=$(BR2_TOOLCHAIN_CTNG_LIBC) \
- oldconfig )
- $(call ctng-fix-dot-config,$(1),$(CTNG_FIX_BUILDROOT_CONFIG_PATHS_SED))
-endef
-
-# We need the host crosstool-NG before we can even begin working
-# on the toolchain. Using order-only dependency, as we do not want
-# to rebuild the toolchain for every run...
-$(CTNG_DIR)/.config: | host-crosstool-ng
-
-# Default configuration
-# Only copy the original .config file if we don't have one already.
-# Check that given config file matches selected C library.
-# We need to call oldconfig twice in a row to ensure the options
-# are correctly set ( eg. if an option is new, then the initial sed
-# can't do anything about it ) Ideally, this should go in oldconfig
-# itself, but it's much easier to handle here.
-$(CTNG_DIR)/.config:
- $(Q)if [ ! -f $@ ]; then \
- mkdir -p "$(CTNG_DIR)"; \
- libc="$$(awk -F '"' '$$1=="CT_LIBC=" { print $$2; }' \
- "$(CTNG_CONFIG_FILE)" \
- )"; \
- if [ "$${libc}" != "$(BR2_TOOLCHAIN_CTNG_LIBC)" ]; then \
- echo "* Inconsistency in crosstool-NG config file '$(CTNG_CONFIG_FILE)'"; \
- echo "* - buildroot configured for '$(BR2_TOOLCHAIN_CTNG_LIBC)'"; \
- echo "* - given config file for '$${libc}'"; \
- exit 1; \
- fi; \
- cp -f $(CTNG_CONFIG_FILE) $@; \
- fi
- $(call ctng-oldconfig,$@)
- $(call ctng-oldconfig,$@)
-
-# Manual configuration
-ctng-menuconfig: $(CTNG_DIR)/.config
- $(Q)cp -a $< $<.timestamp
- $(Q)$(call ctng,CT_IS_A_BACKEND=y \
- CT_BACKEND_ARCH=$(CTNG_ARCH) \
- CT_BACKEND_KERNEL=linux \
- CT_BACKEND_LIBC=$(BR2_TOOLCHAIN_CTNG_LIBC) \
- menuconfig )
- $(call ctng-oldconfig,$<)
- $(call ctng-check-config-changed,$<,$<.timestamp)
- $(Q)rm -f $<.timestamp
--
1.8.1.2
^ permalink raw reply related [flat|nested] 28+ messages in thread* [Buildroot] [PATCHv2 02/21] docs: update manual after Crosstool-NG backend removal
2013-10-06 14:19 [Buildroot] [PATCHv2 00/21] Toolchain updates: package infra, musl support, Linaro updates Thomas Petazzoni
2013-10-06 14:19 ` [Buildroot] [PATCHv2 01/21] toolchain-crosstool-ng: remove support Thomas Petazzoni
@ 2013-10-06 14:19 ` Thomas Petazzoni
2013-10-06 18:53 ` Peter Korsgaard
2013-10-06 14:19 ` [Buildroot] [PATCHv2 03/21] toolchain-external: make ext-tool.mk includable in all cases Thomas Petazzoni
` (18 subsequent siblings)
20 siblings, 1 reply; 28+ messages in thread
From: Thomas Petazzoni @ 2013-10-06 14:19 UTC (permalink / raw)
To: buildroot
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
docs/manual/configure.txt | 60 +++----------------------------------
docs/manual/customize-store.txt | 20 ++++++-------
docs/manual/customize-toolchain.txt | 12 --------
docs/manual/make-tips.txt | 2 --
docs/manual/rebuilding-packages.txt | 2 --
5 files changed, 14 insertions(+), 82 deletions(-)
diff --git a/docs/manual/configure.txt b/docs/manual/configure.txt
index 56b0469..8912a81 100644
--- a/docs/manual/configure.txt
+++ b/docs/manual/configure.txt
@@ -47,8 +47,7 @@ target system uses ARM, the regular compilation toolchain on your host
runs on x86 and generates code for x86, while the cross-compilation
toolchain runs on x86 and generates code for ARM.
-Buildroot provides different solutions to build, or use existing
-cross-compilation toolchains:
+Buildroot provides two solutions for the cross-compilation toolchain:
* The *internal toolchain backend*, called +Buildroot toolchain+ in
the configuration interface.
@@ -56,10 +55,7 @@ cross-compilation toolchains:
* The *external toolchain backend*, called +External toolchain+ in
the configuration interface.
- * The *Crosstool-NG toolchain backend*, called +Crosstool-NG
- toolchain+ in the configuration interface.
-
-The choice between these three solutions is done using the +Toolchain
+The choice between these two solutions is done using the +Toolchain
Type+ option in the +Toolchain+ menu. Once one solution has been
chosen, a number of configuration options appear, they are detailed in
the following sections.
@@ -76,8 +72,8 @@ This backend is the historical backend of Buildroot, and has been
limited for a long time to the usage of the
http://www.uclibc.org[uClibc C library]. Support for the _eglibc_ C
library has been added in 2013 and is at this point considered
-experimental. See the _External toolchain backend_ and _Crosstool-NG
-toolchain backend_ for other solutions to use _glibc_ or _eglibc_.
+experimental. See the _External toolchain backend_ for another
+solution to use _glibc_ or _eglibc_.
Once you have selected this backend, a number of options appear. The
most important ones allow to:
@@ -242,54 +238,6 @@ Drawbacks of this backend:
fix from the toolchain vendor, unless you build your external
toolchain by yourself using Crosstool-NG.
-[[crosstool-ng-toolchain-backend]]
-Crosstool-NG toolchain backend
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The _Crosstool-NG toolchain backend_ integrates the
-http://crosstool-ng.org[Crosstool-NG] project with
-Buildroot. Crosstool-NG is a highly-configurable, versatile and
-well-maintained tool to build cross-compilation toolchains.
-
-If you select the +Crosstool-NG toolchain+ option in +Toolchain Type+,
-then you will be offered to:
-
- * Choose which C library you want to use. Crosstool-NG supports the
- three most important C libraries used in Linux systems: glibc,
- eglibc and uClibc
-
- * Choose a custom Crosstool-NG configuration file. Buildroot has its
- own default configuration file (one per C library choice), but you
- can provide your own. Another option is to run +make
- ctng-menuconfig+ to get access to the Crosstool-NG configuration
- interface. However, note that all Buildroot packages have only been
- tested with the default Crosstool-NG configurations.
-
- * Choose a number of toolchain options (rather limited if glibc or
- eglibc are used, or numerous if uClibc is used)
-
-When you will start the Buildroot build process, Buildroot will
-download and install the Crosstool-NG tool, build and install its
-required dependencies, and then run Crosstool-NG with the provided
-configuration.
-
-Advantages of this backend:
-
-* Not limited to uClibc: glibc and eglibc are supported.
-
-* Vast possibilities of toolchain configuration.
-
-Drawbacks of this backend:
-
-* Crosstool-NG is not perfectly integrated with Buildroot. For
- example, Crosstool-NG has its own download infrastructure, not
- integrated with the one in Buildroot (for example a Buildroot +make
- source+ will not download all the source code tarballs needed by
- Crosstool-NG).
-
-* The toolchain is completely rebuilt from scratch if you do a +make
- clean+.
-
/dev management
~~~~~~~~~~~~~~~
diff --git a/docs/manual/customize-store.txt b/docs/manual/customize-store.txt
index 5083339..c2f5235 100644
--- a/docs/manual/customize-store.txt
+++ b/docs/manual/customize-store.txt
@@ -42,13 +42,14 @@ Alternatively, you can copy the file to any other place and rebuild with
Other package configuration
^^^^^^^^^^^^^^^^^^^^^^^^^^^
-The configuration files for busybox, the linux kernel, barebox, uClibc and
-crosstool-NG should be stored as well if changed. For each of these, a
-buildroot configuration option exists to point to an input configuration
-file, e.g. +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE+. To save their
-configuration, set those configuration options to a path outside
-your output directory, e.g. +board/<manufacturer>/<boardname>/linux.config+.
-Then, copy the configuration files to that path.
+The configuration files for busybox, the linux kernel, barebox and
+uClibc should be stored as well if changed. For each of these, a
+buildroot configuration option exists to point to an input
+configuration file, e.g. +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE+. To
+save their configuration, set those configuration options to a path
+outside your output directory,
+e.g. +board/<manufacturer>/<boardname>/linux.config+. Then, copy the
+configuration files to that path.
Make sure that you create a configuration file 'before' changing
the +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE+ etc. options. Otherwise,
@@ -70,9 +71,8 @@ configuration files easier.
path specified by +BR2_UCLIBC_CONFIG+.
* +make barebox-update-defconfig+ saves the barebox configuration to the
path specified by +BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE+.
-* For crosstool-NG and at91bootstrap3, no helper exists so you
- have to copy the config file manually to +BR2_TOOLCHAIN_CTNG_CONFIG+,
- resp. +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE+.
+* For at91bootstrap3, no helper exists so you have to copy the config
+ file manually to +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE+.
[[customize-store-board-support]]
diff --git a/docs/manual/customize-toolchain.txt b/docs/manual/customize-toolchain.txt
index 82ecc28..841dbfd 100644
--- a/docs/manual/customize-toolchain.txt
+++ b/docs/manual/customize-toolchain.txt
@@ -44,15 +44,3 @@ However, it allows to tune major settings, such as:
These settings are available after selecting the +Buildroot toolchain+ type in
the menu +Toolchain+.
-
-Using the Crosstool-NG backend
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The http://crosstool-ng.org[crosstool-NG] toolchain backend enables a rather
-limited set of settings under the Buildroot +Toolchain+ menu:
-
-* The http://crosstool-ng.org[crosstool-NG] configuration file
-
-* Gdb and some toolchain options
-
-Then, the toolchain can be fine-tuned by invoking +make ctng-menuconfig+.
diff --git a/docs/manual/make-tips.txt b/docs/manual/make-tips.txt
index c3fd155..31a88bf 100644
--- a/docs/manual/make-tips.txt
+++ b/docs/manual/make-tips.txt
@@ -36,8 +36,6 @@ some settings in the +.config+ file may hide some targets:
+linux+ is enabled;
* +uclibc-menuconfig+ is only available when the
Buildroot internal toolchain backend is used;
-* +ctng-menuconfig+ is only available when the
- crosstool-NG backend is used;
* +barebox-menuconfig+ and +barebox-savedefconfig+ only work when the
+barebox+ bootloader is enabled.
diff --git a/docs/manual/rebuilding-packages.txt b/docs/manual/rebuilding-packages.txt
index 044c908..88d6670 100644
--- a/docs/manual/rebuilding-packages.txt
+++ b/docs/manual/rebuilding-packages.txt
@@ -17,8 +17,6 @@ In some cases, a full rebuild is mandatory:
** after changing any toolchain option under the _Toolchain_ menu (if
the internal Buildroot backend is used);
-** after running +make ctng-menuconfig+ (if the crosstool-NG backend
- is used);
** after running +make uclibc-menuconfig+.
* after removing some libraries from the package selection.
--
1.8.1.2
^ permalink raw reply related [flat|nested] 28+ messages in thread* [Buildroot] [PATCHv2 03/21] toolchain-external: make ext-tool.mk includable in all cases
2013-10-06 14:19 [Buildroot] [PATCHv2 00/21] Toolchain updates: package infra, musl support, Linaro updates Thomas Petazzoni
2013-10-06 14:19 ` [Buildroot] [PATCHv2 01/21] toolchain-crosstool-ng: remove support Thomas Petazzoni
2013-10-06 14:19 ` [Buildroot] [PATCHv2 02/21] docs: update manual after Crosstool-NG backend removal Thomas Petazzoni
@ 2013-10-06 14:19 ` Thomas Petazzoni
2013-10-06 18:55 ` Peter Korsgaard
2013-10-06 14:19 ` [Buildroot] [PATCHv2 04/21] toolchain: move helpers.mk into toolchain-external/ Thomas Petazzoni
` (17 subsequent siblings)
20 siblings, 1 reply; 28+ messages in thread
From: Thomas Petazzoni @ 2013-10-06 14:19 UTC (permalink / raw)
To: buildroot
The ext-tool.mk logic uses the TOOLCHAIN_EXTERNAL_PREFIX variable
unconditionally, even if the external toolchain is not used. Until now
this wasn't a problem since ext-tool.mk was only included when the
external toolchain backend was selected, but the next patches are
going to include this file unconditionally.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Acked-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
---
toolchain/toolchain-external/ext-tool.mk | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/toolchain/toolchain-external/ext-tool.mk b/toolchain/toolchain-external/ext-tool.mk
index db2a99e..8cfd1b1 100644
--- a/toolchain/toolchain-external/ext-tool.mk
+++ b/toolchain/toolchain-external/ext-tool.mk
@@ -1,4 +1,3 @@
-
#
# This file implements the support for external toolchains, i.e
# toolchains that have not been produced by Buildroot itself and that
@@ -112,8 +111,10 @@ TOOLCHAIN_EXTERNAL_DIR=$(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_PATH))
endif
ifeq ($(TOOLCHAIN_EXTERNAL_DIR),)
+ifneq ($(TOOLCHAIN_EXTERNAL_PREFIX),)
# if no path set, figure it out from path
TOOLCHAIN_EXTERNAL_BIN := $(shell dirname $(shell which $(TOOLCHAIN_EXTERNAL_PREFIX)-gcc))
+endif
else
ifeq ($(BR2_bfin),y)
TOOLCHAIN_EXTERNAL_BIN := $(TOOLCHAIN_EXTERNAL_DIR)/$(TOOLCHAIN_EXTERNAL_PREFIX)/bin
--
1.8.1.2
^ permalink raw reply related [flat|nested] 28+ messages in thread* [Buildroot] [PATCHv2 03/21] toolchain-external: make ext-tool.mk includable in all cases
2013-10-06 14:19 ` [Buildroot] [PATCHv2 03/21] toolchain-external: make ext-tool.mk includable in all cases Thomas Petazzoni
@ 2013-10-06 18:55 ` Peter Korsgaard
0 siblings, 0 replies; 28+ messages in thread
From: Peter Korsgaard @ 2013-10-06 18:55 UTC (permalink / raw)
To: buildroot
>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@free-electrons.com> writes:
Thomas> The ext-tool.mk logic uses the TOOLCHAIN_EXTERNAL_PREFIX variable
Thomas> unconditionally, even if the external toolchain is not used. Until now
Thomas> this wasn't a problem since ext-tool.mk was only included when the
Thomas> external toolchain backend was selected, but the next patches are
Thomas> going to include this file unconditionally.
Thomas> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Thomas> Acked-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
Committed, thanks.
--
Bye, Peter Korsgaard
^ permalink raw reply [flat|nested] 28+ messages in thread
* [Buildroot] [PATCHv2 04/21] toolchain: move helpers.mk into toolchain-external/
2013-10-06 14:19 [Buildroot] [PATCHv2 00/21] Toolchain updates: package infra, musl support, Linaro updates Thomas Petazzoni
` (2 preceding siblings ...)
2013-10-06 14:19 ` [Buildroot] [PATCHv2 03/21] toolchain-external: make ext-tool.mk includable in all cases Thomas Petazzoni
@ 2013-10-06 14:19 ` Thomas Petazzoni
2013-10-06 19:31 ` Peter Korsgaard
2013-10-06 14:19 ` [Buildroot] [PATCHv2 05/21] toolchain: introduce a virtual package Thomas Petazzoni
` (16 subsequent siblings)
20 siblings, 1 reply; 28+ messages in thread
From: Thomas Petazzoni @ 2013-10-06 14:19 UTC (permalink / raw)
To: buildroot
The helpers.mk file is no longer used by the Crosstool-NG backend, so
it is moved into the toolchain/toolchain-external/ directory.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
toolchain/toolchain-buildroot.mk | 2 --
toolchain/toolchain-external.mk | 2 +-
toolchain/{ => toolchain-external}/helpers.mk | 0
3 files changed, 1 insertion(+), 3 deletions(-)
rename toolchain/{ => toolchain-external}/helpers.mk (100%)
diff --git a/toolchain/toolchain-buildroot.mk b/toolchain/toolchain-buildroot.mk
index 3a05800..ff89125 100644
--- a/toolchain/toolchain-buildroot.mk
+++ b/toolchain/toolchain-buildroot.mk
@@ -2,8 +2,6 @@
# build of binutils, uClibc, kernel headers and all the intermediate
# gcc steps.
-include toolchain/helpers.mk
-
BUILDROOT_LIBC = $(call qstrip,$(BR2_TOOLCHAIN_BUILDROOT_LIBC))
toolchain-buildroot: host-gcc-final
diff --git a/toolchain/toolchain-external.mk b/toolchain/toolchain-external.mk
index 2f43db7..2644689 100644
--- a/toolchain/toolchain-external.mk
+++ b/toolchain/toolchain-external.mk
@@ -1,4 +1,4 @@
# Required includes for the external toolchain backend
-include toolchain/helpers.mk
+include toolchain/toolchain-external/helpers.mk
include toolchain/toolchain-external/ext-tool.mk
diff --git a/toolchain/helpers.mk b/toolchain/toolchain-external/helpers.mk
similarity index 100%
rename from toolchain/helpers.mk
rename to toolchain/toolchain-external/helpers.mk
--
1.8.1.2
^ permalink raw reply related [flat|nested] 28+ messages in thread* [Buildroot] [PATCHv2 04/21] toolchain: move helpers.mk into toolchain-external/
2013-10-06 14:19 ` [Buildroot] [PATCHv2 04/21] toolchain: move helpers.mk into toolchain-external/ Thomas Petazzoni
@ 2013-10-06 19:31 ` Peter Korsgaard
2013-10-06 21:26 ` Thomas Petazzoni
0 siblings, 1 reply; 28+ messages in thread
From: Peter Korsgaard @ 2013-10-06 19:31 UTC (permalink / raw)
To: buildroot
>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@free-electrons.com> writes:
Thomas> The helpers.mk file is no longer used by the Crosstool-NG backend, so
Thomas> it is moved into the toolchain/toolchain-external/ directory.
Thomas> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Thomas> ---
Thomas> toolchain/toolchain-buildroot.mk | 2 --
Thomas> toolchain/toolchain-external.mk | 2 +-
Thomas> toolchain/{ => toolchain-external}/helpers.mk | 0
Thomas> 3 files changed, 1 insertion(+), 3 deletions(-)
Thomas> rename toolchain/{ => toolchain-external}/helpers.mk (100%)
Thomas> diff --git a/toolchain/toolchain-buildroot.mk b/toolchain/toolchain-buildroot.mk
Thomas> index 3a05800..ff89125 100644
Thomas> --- a/toolchain/toolchain-buildroot.mk
Thomas> +++ b/toolchain/toolchain-buildroot.mk
Thomas> @@ -2,8 +2,6 @@
Thomas> # build of binutils, uClibc, kernel headers and all the intermediate
Thomas> # gcc steps.
Thomas> -include toolchain/helpers.mk
Thomas> -
That doesn't seem right as we have:
git grep copy_toolchain package/
package/glibc/glibc.mk: $(call copy_toolchain_lib_root,$(STAGING_DIR)/,,
And indeed:
>>> glibc 2.17-svnr22064 Installing to target
for libs in ld*.so libc.so libcrypt.so libdl.so libgcc_s.so libm.so libnsl.so libpthread.so libresolv.so librt.so libutil.so libnss_files.so libnss_dns.so; do ; done
/bin/sh: -c: line 0: syntax error near unexpected token `;'
/bin/sh: -c: line 0: `for libs in ld*.so libc.so libcrypt.so libdl.so libgcc_s.so libm.so libnsl.so libpthread.so libresolv.so librt.so libutil.so libnss_files.so libnss_dns.so; do ; done'
make: *** [/home/peko/source/buildroot/output/build/glibc-2.17-svnr22064/.stamp_target_installed] Error 1
--
Bye, Peter Korsgaard
^ permalink raw reply [flat|nested] 28+ messages in thread* [Buildroot] [PATCHv2 04/21] toolchain: move helpers.mk into toolchain-external/
2013-10-06 19:31 ` Peter Korsgaard
@ 2013-10-06 21:26 ` Thomas Petazzoni
2013-10-06 21:40 ` Peter Korsgaard
0 siblings, 1 reply; 28+ messages in thread
From: Thomas Petazzoni @ 2013-10-06 21:26 UTC (permalink / raw)
To: buildroot
Dear Peter Korsgaard,
On Sun, 06 Oct 2013 21:31:46 +0200, Peter Korsgaard wrote:
> Thomas> -include toolchain/helpers.mk
> Thomas> -
>
> That doesn't seem right as we have:
>
> git grep copy_toolchain package/
> package/glibc/glibc.mk: $(call copy_toolchain_lib_root,$(STAGING_DIR)/,,
Oh, I'm impressed how well you know the code, even code that I have
written. We really need some kind of "test suite" to check patches or
something like that: a patch set such as this toolchain-related patch
set is really a pain to test in all the various possible conditions. I
did test the internal backend, but only with uClibc toolchain.
I'll rework my patch series.
Thanks!
Thomas
--
Thomas Petazzoni, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 28+ messages in thread
* [Buildroot] [PATCHv2 04/21] toolchain: move helpers.mk into toolchain-external/
2013-10-06 21:26 ` Thomas Petazzoni
@ 2013-10-06 21:40 ` Peter Korsgaard
0 siblings, 0 replies; 28+ messages in thread
From: Peter Korsgaard @ 2013-10-06 21:40 UTC (permalink / raw)
To: buildroot
>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@free-electrons.com> writes:
Hi,
>> git grep copy_toolchain package/
>> package/glibc/glibc.mk: $(call copy_toolchain_lib_root,$(STAGING_DIR)/,,
Thomas> Oh, I'm impressed how well you know the code, even code that I have
Thomas> written.
git grep is your friend ;)
Thomas> We really need some kind of "test suite" to check patches or
Thomas> something like that: a patch set such as this toolchain-related patch
Thomas> set is really a pain to test in all the various possible conditions. I
Thomas> did test the internal backend, but only with uClibc toolchain.
Yeah, but I'm afraid the only real way of testing things is to build the
various affected variants (internal uclibc/glibc + external).
Thomas> I'll rework my patch series.
Great, thanks!
--
Bye, Peter Korsgaard
^ permalink raw reply [flat|nested] 28+ messages in thread
* [Buildroot] [PATCHv2 05/21] toolchain: introduce a virtual package
2013-10-06 14:19 [Buildroot] [PATCHv2 00/21] Toolchain updates: package infra, musl support, Linaro updates Thomas Petazzoni
` (3 preceding siblings ...)
2013-10-06 14:19 ` [Buildroot] [PATCHv2 04/21] toolchain: move helpers.mk into toolchain-external/ Thomas Petazzoni
@ 2013-10-06 14:19 ` Thomas Petazzoni
2013-10-06 14:19 ` [Buildroot] [PATCHv2 06/21] toolchain-buildroot: convert to the package infrastructure Thomas Petazzoni
` (15 subsequent siblings)
20 siblings, 0 replies; 28+ messages in thread
From: Thomas Petazzoni @ 2013-10-06 14:19 UTC (permalink / raw)
To: buildroot
This commit introduces a virtual package called 'toolchain', located
in 'toolchain/toolchain', which simply depends on
'toolchain-buildroot' or 'toolchain-external' depending on the
selected toolchain backend.
For now, toolchain-buildroot and toolchain-external are still manual
make targets, but the following patches convert those backends to use
the package infrastructure as well.
In addition to this:
* The main Makefile is modified to always make BASE_TARGETS point to
this new toolchain virtual package.
* The main Makefile is changed to include all the toolchain/*/*.mk
files: the toolchain virtual package, and the toolchain-buildroot
and toolchain-external directories.
* The dependency of the toolchain on prepare dirs and dependencies is
moved to the toolchain virtual package. It is moved as a
prerequisite of the "toolchain-source" rule to ensure that all
directories are prepared before we even start extracting the
toolchain.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Acked-by: Luca Ceresoli <luca@lucaceresoli.net>
Acked-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
---
Makefile | 18 +++---------------
toolchain/toolchain/toolchain.mk | 18 ++++++++++++++++++
2 files changed, 21 insertions(+), 15 deletions(-)
create mode 100644 toolchain/toolchain/toolchain.mk
diff --git a/Makefile b/Makefile
index 2fb1168..bd59259 100644
--- a/Makefile
+++ b/Makefile
@@ -236,11 +236,7 @@ GNU_HOST_NAME:=$(shell support/gnuconfig/config.guess)
#
################################################################################
-ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y)
-BASE_TARGETS += toolchain-buildroot
-else ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y)
-BASE_TARGETS += toolchain-external
-endif
+BASE_TARGETS = toolchain
TARGETS:=
@@ -317,11 +313,7 @@ include support/dependencies/dependencies.mk
# We also need the various per-package makefiles, which also add
# each selected package to TARGETS if that package was selected
# in the .config file.
-ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y)
-include toolchain/toolchain-buildroot.mk
-else ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y)
-include toolchain/toolchain-external.mk
-endif
+include toolchain/*/*.mk
# Include the package override file if one has been provided in the
# configuration.
@@ -388,16 +380,12 @@ $(TARGETS_ALL): __real_tgt_%: $(BASE_TARGETS) %
dirs: $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
$(HOST_DIR) $(BINARIES_DIR) $(STAMP_DIR)
-$(BASE_TARGETS): dirs $(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake
-
$(BUILD_DIR)/buildroot-config/auto.conf: $(BUILDROOT_CONFIG)
$(MAKE) $(EXTRAMAKEARGS) HOSTCC="$(HOSTCC_NOCCACHE)" HOSTCXX="$(HOSTCXX_NOCCACHE)" silentoldconfig
prepare: $(BUILD_DIR)/buildroot-config/auto.conf
-toolchain: prepare dirs dependencies $(BASE_TARGETS)
-
-world: toolchain $(TARGETS_ALL)
+world: $(BASE_TARGETS) $(TARGETS_ALL)
.PHONY: all world toolchain dirs clean distclean source outputmakefile \
legal-info legal-info-prepare legal-info-clean printvars \
diff --git a/toolchain/toolchain/toolchain.mk b/toolchain/toolchain/toolchain.mk
new file mode 100644
index 0000000..44ed629
--- /dev/null
+++ b/toolchain/toolchain/toolchain.mk
@@ -0,0 +1,18 @@
+################################################################################
+#
+# toolchain
+#
+################################################################################
+
+TOOLCHAIN_SOURCE =
+
+ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y)
+TOOLCHAIN_DEPENDENCIES += toolchain-buildroot
+else ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y)
+TOOLCHAIN_DEPENDENCIES += toolchain-external
+endif
+
+$(eval $(generic-package))
+
+toolchain-source: prepare dirs dependencies $(HOST_DIR)/usr/share/buildroot/toolchainfile.cmake
+
--
1.8.1.2
^ permalink raw reply related [flat|nested] 28+ messages in thread* [Buildroot] [PATCHv2 06/21] toolchain-buildroot: convert to the package infrastructure
2013-10-06 14:19 [Buildroot] [PATCHv2 00/21] Toolchain updates: package infra, musl support, Linaro updates Thomas Petazzoni
` (4 preceding siblings ...)
2013-10-06 14:19 ` [Buildroot] [PATCHv2 05/21] toolchain: introduce a virtual package Thomas Petazzoni
@ 2013-10-06 14:19 ` Thomas Petazzoni
2013-10-06 14:19 ` [Buildroot] [PATCHv2 07/21] toolchain: intermediate .mk files no longer needed Thomas Petazzoni
` (14 subsequent siblings)
20 siblings, 0 replies; 28+ messages in thread
From: Thomas Petazzoni @ 2013-10-06 14:19 UTC (permalink / raw)
To: buildroot
This commit converts the toolchain-buildroot logic to the package
infrastructure. The package is fairly simple as it only defines
BUILDROOT_LIBC, and depends on host-gcc-final to get the overall
internal toolchain build logic started.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Acked-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
---
toolchain/toolchain-buildroot.mk | 7 -------
toolchain/toolchain-buildroot/toolchain-buildroot.mk | 17 +++++++++++++++++
2 files changed, 17 insertions(+), 7 deletions(-)
delete mode 100644 toolchain/toolchain-buildroot.mk
create mode 100644 toolchain/toolchain-buildroot/toolchain-buildroot.mk
diff --git a/toolchain/toolchain-buildroot.mk b/toolchain/toolchain-buildroot.mk
deleted file mode 100644
index ff89125..0000000
--- a/toolchain/toolchain-buildroot.mk
+++ /dev/null
@@ -1,7 +0,0 @@
-# Triggerring the build of the host-gcc-final will automaticaly do the
-# build of binutils, uClibc, kernel headers and all the intermediate
-# gcc steps.
-
-BUILDROOT_LIBC = $(call qstrip,$(BR2_TOOLCHAIN_BUILDROOT_LIBC))
-
-toolchain-buildroot: host-gcc-final
diff --git a/toolchain/toolchain-buildroot/toolchain-buildroot.mk b/toolchain/toolchain-buildroot/toolchain-buildroot.mk
new file mode 100644
index 0000000..ced430e
--- /dev/null
+++ b/toolchain/toolchain-buildroot/toolchain-buildroot.mk
@@ -0,0 +1,17 @@
+################################################################################
+#
+# toolchain-buildroot
+#
+################################################################################
+
+TOOLCHAIN_BUILDROOT_SOURCE =
+
+BUILDROOT_LIBC = $(call qstrip,$(BR2_TOOLCHAIN_BUILDROOT_LIBC))
+
+# Trigerring the build of the host-gcc-final will automatically do the
+# build of binutils, uClibc, kernel headers and all the intermediate
+# gcc steps.
+
+TOOLCHAIN_BUILDROOT_DEPENDENCIES = host-gcc-final
+
+$(eval $(generic-package))
--
1.8.1.2
^ permalink raw reply related [flat|nested] 28+ messages in thread* [Buildroot] [PATCHv2 07/21] toolchain: intermediate .mk files no longer needed
2013-10-06 14:19 [Buildroot] [PATCHv2 00/21] Toolchain updates: package infra, musl support, Linaro updates Thomas Petazzoni
` (5 preceding siblings ...)
2013-10-06 14:19 ` [Buildroot] [PATCHv2 06/21] toolchain-buildroot: convert to the package infrastructure Thomas Petazzoni
@ 2013-10-06 14:19 ` Thomas Petazzoni
2013-10-06 14:19 ` [Buildroot] [PATCHv2 08/21] package: package-based implementation of source, external-deps and legal-info Thomas Petazzoni
` (13 subsequent siblings)
20 siblings, 0 replies; 28+ messages in thread
From: Thomas Petazzoni @ 2013-10-06 14:19 UTC (permalink / raw)
To: buildroot
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Acked-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
---
toolchain/toolchain-external.mk | 4 ----
1 file changed, 4 deletions(-)
delete mode 100644 toolchain/toolchain-external.mk
diff --git a/toolchain/toolchain-external.mk b/toolchain/toolchain-external.mk
deleted file mode 100644
index 2644689..0000000
--- a/toolchain/toolchain-external.mk
+++ /dev/null
@@ -1,4 +0,0 @@
-# Required includes for the external toolchain backend
-
-include toolchain/toolchain-external/helpers.mk
-include toolchain/toolchain-external/ext-tool.mk
--
1.8.1.2
^ permalink raw reply related [flat|nested] 28+ messages in thread* [Buildroot] [PATCHv2 08/21] package: package-based implementation of source, external-deps and legal-info
2013-10-06 14:19 [Buildroot] [PATCHv2 00/21] Toolchain updates: package infra, musl support, Linaro updates Thomas Petazzoni
` (6 preceding siblings ...)
2013-10-06 14:19 ` [Buildroot] [PATCHv2 07/21] toolchain: intermediate .mk files no longer needed Thomas Petazzoni
@ 2013-10-06 14:19 ` Thomas Petazzoni
2013-10-06 14:19 ` [Buildroot] [PATCHv2 09/21] package: remove useless SHOW_EXTERNAL_DEPS support Thomas Petazzoni
` (12 subsequent siblings)
20 siblings, 0 replies; 28+ messages in thread
From: Thomas Petazzoni @ 2013-10-06 14:19 UTC (permalink / raw)
To: buildroot
Until now, the make source, make external-deps and make legal-info
where relying on enumerating the packages by looking at $(TARGETS)
which contains only the target packages and not the host
packages. Thanks to the TARGET_HOST_DEPS and HOST_DEPS variables, it
was doing a two-level resolution of host package dependencies, but it
was not entirely correct since the dependency chain might be deeper
than that: some packages could be missed.
From an idea of Arnout, this patch introduces in each package
additional targets <pkg>-all-source, <pkg>-all-legal-info and
<pkg>-all-external-deps that executes the 'source', 'legal-info' and
'external-deps' targets for this package and all its dependencies, be
they target or host dependencies.
This provides a much cleaner implementation of this mechanism, which
is also more robust.
In order to achieve this, this patch also separates the "package"
targets from other targets: instead of mixing them both in the global
TARGETS variable, the new PACKAGES variable contains the name of all
packages that are enabled in the configuration, while TARGETS is only
used for additional things to be done (target-finalize, etc.). This
separation is needed so that we don't try to use targets (such as
<foo>-all-external-deps) on things that are not packages. Some further
cleanups in this direction are possible, this commit takes a
relatively minimal approach for now.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
Makefile | 53 +++++++++++++-------------------------------------
package/pkg-generic.mk | 13 ++++++++++++-
2 files changed, 25 insertions(+), 41 deletions(-)
diff --git a/Makefile b/Makefile
index bd59259..8483d79 100644
--- a/Makefile
+++ b/Makefile
@@ -238,8 +238,6 @@ GNU_HOST_NAME:=$(shell support/gnuconfig/config.guess)
BASE_TARGETS = toolchain
-TARGETS:=
-
# silent mode requested?
QUIET:=$(if $(findstring s,$(MAKEFLAGS)),-q)
@@ -310,9 +308,6 @@ endif
include package/Makefile.in
include support/dependencies/dependencies.mk
-# We also need the various per-package makefiles, which also add
-# each selected package to TARGETS if that package was selected
-# in the .config file.
include toolchain/*/*.mk
# Include the package override file if one has been provided in the
@@ -348,34 +343,11 @@ include fs/common.mk
TARGETS+=target-post-image
-TARGETS_CLEAN:=$(patsubst %,%-clean,$(TARGETS))
-TARGETS_SOURCE:=$(patsubst %,%-source,$(TARGETS) $(BASE_TARGETS))
-TARGETS_DIRCLEAN:=$(patsubst %,%-dirclean,$(TARGETS))
-TARGETS_ALL:=$(patsubst %,__real_tgt_%,$(TARGETS))
-
-# host-* dependencies have to be handled specially, as those aren't
-# visible in Kconfig and hence not added to a variable like TARGETS.
-# instead, find all the host-* targets listed in each <PKG>_DEPENDENCIES
-# variable for each enabled target.
-# Notice: this only works for newstyle gentargets/autotargets packages
-TARGETS_HOST_DEPS = $(sort $(filter host-%,$(foreach dep,\
- $(addsuffix _DEPENDENCIES,$(call UPPERCASE,$(TARGETS))),\
- $($(dep)))))
-# Host packages can in turn have their own dependencies. Likewise find
-# all the package names listed in the HOST_<PKG>_DEPENDENCIES for each
-# host package found above. Ideally this should be done recursively until
-# no more packages are found, but that's hard to do in make, so limit to
-# 1 level for now.
-HOST_DEPS = $(sort $(foreach dep,\
- $(addsuffix _DEPENDENCIES,$(call UPPERCASE,$(TARGETS_HOST_DEPS))),\
- $($(dep))))
-HOST_SOURCE += $(addsuffix -source,$(sort $(TARGETS_HOST_DEPS) $(HOST_DEPS)))
-
-TARGETS_LEGAL_INFO:=$(patsubst %,%-legal-info,\
- $(TARGETS) $(BASE_TARGETS) $(TARGETS_HOST_DEPS) $(HOST_DEPS))))
-
-# all targets depend on the crosscompiler and it's prerequisites
-$(TARGETS_ALL): __real_tgt_%: $(BASE_TARGETS) %
+PACKAGES_CLEAN:=$(patsubst %,%-clean,$(PACKAGES))
+PACKAGES_SOURCE:=$(patsubst %,%-all-source,$(PACKAGES) $(BASE_TARGETS))
+PACKAGES_EXTERNAL_DEPS:=$(patsubst %,%-all-external-deps,$(PACKAGES) $(BASE_TARGETS))
+PACKAGES_DIRCLEAN:=$(patsubst %,%-dirclean,$(PACKAGES))
+PACKAGES_LEGAL_INFO:=$(patsubst %,%-all-legal-info,$(PACKAGES) $(BASE_TARGETS))
dirs: $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
$(HOST_DIR) $(BINARIES_DIR) $(STAMP_DIR)
@@ -385,12 +357,13 @@ $(BUILD_DIR)/buildroot-config/auto.conf: $(BUILDROOT_CONFIG)
prepare: $(BUILD_DIR)/buildroot-config/auto.conf
-world: $(BASE_TARGETS) $(TARGETS_ALL)
+world: $(BASE_TARGETS) $(PACKAGES) $(TARGETS)
.PHONY: all world toolchain dirs clean distclean source outputmakefile \
legal-info legal-info-prepare legal-info-clean printvars \
- $(BASE_TARGETS) $(TARGETS) $(TARGETS_ALL) \
- $(TARGETS_CLEAN) $(TARGETS_DIRCLEAN) $(TARGETS_SOURCE) $(TARGETS_LEGAL_INFO) \
+ $(BASE_TARGETS) $(PACKAGES) $(TARGETS) \
+ $(PACKAGES_CLEAN) $(PACKAGES_DIRCLEAN) $(PACKAGES_SOURCE) $(PACKAGES_LEGAL_INFO) \
+ $(PACKAGES_EXTERNAL_DEPS) \
$(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
$(HOST_DIR) $(BINARIES_DIR) $(STAMP_DIR)
@@ -561,10 +534,10 @@ target-post-image:
toolchain-eclipse-register:
./support/scripts/eclipse-register-toolchain `readlink -f $(O)` $(notdir $(TARGET_CROSS)) $(BR2_ARCH)
-source: dirs $(TARGETS_SOURCE) $(HOST_SOURCE)
+source: dirs $(PACKAGES_SOURCE)
external-deps:
- @$(MAKE) -Bs DL_MODE=SHOW_EXTERNAL_DEPS $(EXTRAMAKEARGS) source | sort -u
+ @$(MAKE) -s $(EXTRAMAKEARGS) $(PACKAGES_EXTERNAL_DEPS) | sort -u
legal-info-clean:
@rm -fr $(LEGAL_INFO_DIR)
@@ -579,7 +552,7 @@ legal-info-prepare: $(LEGAL_INFO_DIR)
@cp $(BUILDROOT_CONFIG) $(LEGAL_INFO_DIR)/buildroot.config
legal-info: dirs legal-info-clean legal-info-prepare $(REDIST_SOURCES_DIR) \
- $(TARGETS_LEGAL_INFO)
+ $(PACKAGES_LEGAL_INFO)
@cat support/legal-info/README.header >>$(LEGAL_REPORT)
@if [ -r $(LEGAL_WARNINGS) ]; then \
cat support/legal-info/README.warnings-header \
@@ -589,7 +562,7 @@ legal-info: dirs legal-info-clean legal-info-prepare $(REDIST_SOURCES_DIR) \
@rm -f $(LEGAL_WARNINGS)
show-targets:
- @echo $(TARGETS)
+ @echo $(BASE_TARGETS) $(PACKAGES) $(TARGETS)
else # ifeq ($(BR2_HAVE_DOT_CONFIG),y)
diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk
index bfc4dc1..91e79f5 100644
--- a/package/pkg-generic.mk
+++ b/package/pkg-generic.mk
@@ -423,6 +423,17 @@ endif
$(1)-show-depends:
@echo $$($(2)_DEPENDENCIES)
+$(1)-all-source: $(foreach p,$($(2)_DEPENDENCIES),$(p)-all-source) $(1)-source
+
+$(1)-external-deps:
+ifneq ($$($(2)_SOURCE),)
+ @echo $$($(2)_SOURCE)
+endif
+
+$(1)-all-external-deps: $(foreach p,$($(2)_DEPENDENCIES),$(p)-all-external-deps) $(1)-external-deps
+
+$(1)-all-legal-info: $(foreach p,$($(2)_DEPENDENCIES),$(p)-all-legal-info) $(1)-legal-info
+
$(1)-uninstall: $(1)-configure $$($(2)_TARGET_UNINSTALL)
$(1)-clean: $(1)-uninstall \
@@ -527,7 +538,7 @@ endif # ifneq ($(call qstrip,$$($(2)_SOURCE)),)
# configuration
ifeq ($$($$($(2)_KCONFIG_VAR)),y)
-TARGETS += $(1)
+PACKAGES += $(1)
PACKAGES_PERMISSIONS_TABLE += $$($(2)_PERMISSIONS)$$(sep)
PACKAGES_DEVICES_TABLE += $$($(2)_DEVICES)$$(sep)
PACKAGES_USERS += $$($(2)_USERS)$$(sep)
--
1.8.1.2
^ permalink raw reply related [flat|nested] 28+ messages in thread* [Buildroot] [PATCHv2 09/21] package: remove useless SHOW_EXTERNAL_DEPS support
2013-10-06 14:19 [Buildroot] [PATCHv2 00/21] Toolchain updates: package infra, musl support, Linaro updates Thomas Petazzoni
` (7 preceding siblings ...)
2013-10-06 14:19 ` [Buildroot] [PATCHv2 08/21] package: package-based implementation of source, external-deps and legal-info Thomas Petazzoni
@ 2013-10-06 14:19 ` Thomas Petazzoni
2013-10-06 14:19 ` [Buildroot] [PATCHv2 10/21] package: add a <pkg>_EXTRA_DOWNLOADS variable Thomas Petazzoni
` (11 subsequent siblings)
20 siblings, 0 replies; 28+ messages in thread
From: Thomas Petazzoni @ 2013-10-06 14:19 UTC (permalink / raw)
To: buildroot
Now that a package-based 'make external-deps' support has been added,
the DL_MODE=SHOW_EXTERNAL_DEPS mechanism is no longer needed, so some
clean up is done in this commit.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
package/pkg-download.mk | 44 ++------------------------------------------
package/pkg-generic.mk | 5 +----
2 files changed, 3 insertions(+), 46 deletions(-)
diff --git a/package/pkg-download.mk b/package/pkg-download.mk
index 8e4a1ec..208c83c 100644
--- a/package/pkg-download.mk
+++ b/package/pkg-download.mk
@@ -18,9 +18,8 @@ SCP := $(call qstrip,$(BR2_SCP)) $(QUIET)
SSH := $(call qstrip,$(BR2_SSH)) $(QUIET)
LOCALFILES := $(call qstrip,$(BR2_LOCALFILES))
-# Default spider mode is 'DOWNLOAD'. Other possible values are 'SOURCE_CHECK'
-# used by the _source-check target and 'SHOW_EXTERNAL_DEPS', used by the
-# external-deps target.
+# Default spider mode is 'DOWNLOAD'. The possible value is
+# 'SOURCE_CHECK' used by the _source-check target.
DL_MODE=DOWNLOAD
# Override BR2_DL_DIR if shell variable defined
@@ -66,11 +65,6 @@ domainseparator=$(if $(1),$(1),/)
# The SOURCE_CHECK_* helpers are in charge of simply checking that the source
# is available for download. This can be used to make sure one will be able
# to get all the sources needed for one's build configuration.
-#
-# The SHOW_EXTERNAL_DEPS_* helpers simply output to the console the names
-# of the files that will be downloaded, or path and revision of the
-# source repositories, producing a list of all the "external dependencies"
-# of a given build configuration.
################################################################################
# Try a shallow clone - but that only works if the version is a ref (tag or
@@ -101,11 +95,6 @@ define SOURCE_CHECK_GIT
$(GIT) ls-remote --heads $($(PKG)_SITE) > /dev/null
endef
-define SHOW_EXTERNAL_DEPS_GIT
- echo $($(PKG)_SOURCE)
-endef
-
-
define DOWNLOAD_BZR
test -e $(DL_DIR)/$($(PKG)_SOURCE) || \
$(BZR) export $(DL_DIR)/$($(PKG)_SOURCE) $($(PKG)_SITE) -r $($(PKG)_DL_VERSION)
@@ -115,10 +104,6 @@ define SOURCE_CHECK_BZR
$(BZR) ls --quiet $($(PKG)_SITE) > /dev/null
endef
-define SHOW_EXTERNAL_DEPS_BZR
- echo $($(PKG)_SOURCE)
-endef
-
define DOWNLOAD_CVS
test -e $(DL_DIR)/$($(PKG)_SOURCE) || \
(pushd $(DL_DIR) > /dev/null && \
@@ -134,10 +119,6 @@ define SOURCE_CHECK_CVS
$(CVS) -d:pserver:anonymous:@$(call stripurischeme,$(call qstrip,$($(PKG)_SITE))) login
endef
-define SHOW_EXTERNAL_DEPS_CVS
- echo $($(PKG)_SOURCE)
-endef
-
define DOWNLOAD_SVN
test -e $(DL_DIR)/$($(PKG)_SOURCE) || \
(pushd $(DL_DIR) > /dev/null && \
@@ -151,10 +132,6 @@ define SOURCE_CHECK_SVN
$(SVN) ls $($(PKG)_SITE) > /dev/null
endef
-define SHOW_EXTERNAL_DEPS_SVN
- echo $($(PKG)_SOURCE)
-endef
-
# SCP URIs should be of the form scp://[user@]host:filepath
# Note that filepath is relative to the user's home directory, so you may want
# to prepend the path with a slash: scp://[user@]host:/absolutepath
@@ -167,11 +144,6 @@ define SOURCE_CHECK_SCP
$(SSH) $(call domain,$(1),:) ls '$(call notdomain,$(1),:)' > /dev/null
endef
-define SHOW_EXTERNAL_DEPS_SCP
- echo $(2)
-endef
-
-
define DOWNLOAD_HG
test -e $(DL_DIR)/$($(PKG)_SOURCE) || \
(pushd $(DL_DIR) > /dev/null && \
@@ -188,10 +160,6 @@ define SOURCE_CHECK_HG
$(HG) incoming --force -l1 $($(PKG)_SITE) > /dev/null
endef
-define SHOW_EXTERNAL_DEPS_HG
- echo $($(PKG)_SOURCE)
-endef
-
# Download a file using wget. Only download the file if it doesn't
# already exist in the download directory. If the download fails,
# remove the file (because wget -O creates a 0-byte file even if the
@@ -209,10 +177,6 @@ define SOURCE_CHECK_WGET
$(WGET) --spider '$(call qstrip,$(1))'
endef
-define SHOW_EXTERNAL_DEPS_WGET
- echo $(2)
-endef
-
define DOWNLOAD_LOCALFILES
test -e $(DL_DIR)/$(2) || \
$(LOCALFILES) $(call stripurischeme,$(call qstrip,$(1))) $(DL_DIR)
@@ -222,10 +186,6 @@ define SOURCE_CHECK_LOCALFILES
test -e $(call stripurischeme,$(call qstrip,$(1)))
endef
-define SHOW_EXTERNAL_DEPS_LOCALFILES
- echo $(2)
-endef
-
################################################################################
# DOWNLOAD -- Download helper. Will try to download source from:
# 1) BR2_PRIMARY_SITE if enabled
diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk
index 91e79f5..438a954 100644
--- a/package/pkg-generic.mk
+++ b/package/pkg-generic.mk
@@ -70,13 +70,10 @@ $(BUILD_DIR)/%/.stamp_rsynced:
rsync -au --cvs-exclude --include core $(SRCDIR)/ $(@D)
$(Q)touch $@
-# Handle the SOURCE_CHECK and SHOW_EXTERNAL_DEPS cases for rsynced
-# packages
+# Handle the SOURCE_CHECK case for rsynced packages
$(BUILD_DIR)/%/.stamp_rsync_sourced:
ifeq ($(DL_MODE),SOURCE_CHECK)
test -d $(SRCDIR)
-else ifeq ($(DL_MODE),SHOW_EXTERNAL_DEPS)
- echo "file://$(SRCDIR)"
else
@true # Nothing to do to source a local package
endif
--
1.8.1.2
^ permalink raw reply related [flat|nested] 28+ messages in thread* [Buildroot] [PATCHv2 10/21] package: add a <pkg>_EXTRA_DOWNLOADS variable
2013-10-06 14:19 [Buildroot] [PATCHv2 00/21] Toolchain updates: package infra, musl support, Linaro updates Thomas Petazzoni
` (8 preceding siblings ...)
2013-10-06 14:19 ` [Buildroot] [PATCHv2 09/21] package: remove useless SHOW_EXTERNAL_DEPS support Thomas Petazzoni
@ 2013-10-06 14:19 ` Thomas Petazzoni
2013-10-06 14:19 ` [Buildroot] [PATCHv2 11/21] toolchain-external: convert to the package infrastructure Thomas Petazzoni
` (10 subsequent siblings)
20 siblings, 0 replies; 28+ messages in thread
From: Thomas Petazzoni @ 2013-10-06 14:19 UTC (permalink / raw)
To: buildroot
Converting the external toolchain logic into a package raises a very
special use case that wasn't handled by the package infrastructure:
the Blackfin toolchain is delivered as two tarballs instead of
one. Unfortunately <pkg>_SOURCE only allows to pass one tarball name.
However, we really want both tarballs to be known by the package
infrastructure, so that the normal 'source' and 'external-deps'
mechanism work fine.
In order to achieve this, we add a <pkg>_EXTRA_DOWNLOADS variable,
which allows a package to list other stuff it would like to see
downloaded, but that are otherwise not used by the package
infrastructure itself: it is up to the package to do it by itself.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
docs/manual/adding-packages-generic.txt | 6 ++++++
package/pkg-generic.mk | 4 ++++
2 files changed, 10 insertions(+)
diff --git a/docs/manual/adding-packages-generic.txt b/docs/manual/adding-packages-generic.txt
index cb067bd..59a2684 100644
--- a/docs/manual/adding-packages-generic.txt
+++ b/docs/manual/adding-packages-generic.txt
@@ -248,6 +248,12 @@ information is (assuming the package name is +libfoo+) :
+LIBFOO_SITE=/opt/software/libfoo.tar.gz+ +
+LIBFOO_SITE=$(TOPDIR)/../src/libfoo/+
+* +LIBFOO_EXTRA_DOWNLOADS+ lists a number of additional files that
+ Buildroot should download from +LIBFOO_SITE+ in addition to the main
+ +LIBFOO_SOURCE+ (which usually is a tarball). Buildroot will not do
+ anything with those additional files, except download files: it will
+ be up to the package recipe to use them from +$(DL_DIR)+.
+
* +LIBFOO_SITE_METHOD+ determines the method used to fetch or copy the
package source code. In many cases, Buildroot guesses the method
from the contents of +LIBFOO_SITE+ and setting +LIBFOO_SITE_METHOD+
diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk
index 438a954..6e2b0e2 100644
--- a/package/pkg-generic.mk
+++ b/package/pkg-generic.mk
@@ -40,6 +40,7 @@ ifeq ($(DL_MODE),DOWNLOAD)
fi
endif
$(if $($(PKG)_SOURCE),$(call DOWNLOAD,$($(PKG)_SITE:/=)/$($(PKG)_SOURCE)))
+ $(foreach p,$($(PKG)_EXTRA_DOWNLOADS),$(call DOWNLOAD,$($(PKG)_SITE:/=)/$(p))$(sep))
$(foreach p,$($(PKG)_PATCH),\
$(if $(findstring ://,$(p)),\
$(call DOWNLOAD,$(p)),\
@@ -426,6 +427,9 @@ $(1)-external-deps:
ifneq ($$($(2)_SOURCE),)
@echo $$($(2)_SOURCE)
endif
+ifneq ($$($(2)_EXTRA_DOWNLOADS),)
+ @echo $$($(2)_EXTRA_DOWNLOADS)
+endif
$(1)-all-external-deps: $(foreach p,$($(2)_DEPENDENCIES),$(p)-all-external-deps) $(1)-external-deps
--
1.8.1.2
^ permalink raw reply related [flat|nested] 28+ messages in thread* [Buildroot] [PATCHv2 11/21] toolchain-external: convert to the package infrastructure
2013-10-06 14:19 [Buildroot] [PATCHv2 00/21] Toolchain updates: package infra, musl support, Linaro updates Thomas Petazzoni
` (9 preceding siblings ...)
2013-10-06 14:19 ` [Buildroot] [PATCHv2 10/21] package: add a <pkg>_EXTRA_DOWNLOADS variable Thomas Petazzoni
@ 2013-10-06 14:19 ` Thomas Petazzoni
2013-10-06 14:19 ` [Buildroot] [PATCHv2 12/21] dependencies: remove useless targets Thomas Petazzoni
` (9 subsequent siblings)
20 siblings, 0 replies; 28+ messages in thread
From: Thomas Petazzoni @ 2013-10-06 14:19 UTC (permalink / raw)
To: buildroot
This commit converts the 'toolchain-external' logic to the package
infrastructure.
The TOOLCHAIN_EXTERNAL_DIR variable (which points to where the
toolchain is located) is renamed to TOOLCHAIN_EXTERNAL_INSTALL_DIR,
because the former conflicts with the package infrastructure (which
defines the <pkg>_DIR variable for each package as pointing to its
build directory).
The new _EXTRA_DOWNLOADS mechanism is used for Blackfin toolchains.
The extract, configuration and installation steps are converted inside
the <pkg>_EXTRACT_CMDS, <pkg>_CONFIGURE_CMDS and
<pkg>_INSTALL_STAGING_CMDS.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Acked-by: Luca Ceresoli <luca@lucaceresoli.net>
---
.../{ext-tool.mk => toolchain-external.mk} | 154 +++++++++------------
1 file changed, 69 insertions(+), 85 deletions(-)
rename toolchain/toolchain-external/{ext-tool.mk => toolchain-external.mk} (86%)
diff --git a/toolchain/toolchain-external/ext-tool.mk b/toolchain/toolchain-external/toolchain-external.mk
similarity index 86%
rename from toolchain/toolchain-external/ext-tool.mk
rename to toolchain/toolchain-external/toolchain-external.mk
index 8cfd1b1..85fc341 100644
--- a/toolchain/toolchain-external/ext-tool.mk
+++ b/toolchain/toolchain-external/toolchain-external.mk
@@ -1,5 +1,11 @@
+################################################################################
#
-# This file implements the support for external toolchains, i.e
+# toolchain-external
+#
+################################################################################
+
+#
+# This package implements the support for external toolchains, i.e
# toolchains that have not been produced by Buildroot itself and that
# Buildroot can download from the Web or that are already available on
# the system on which Buildroot runs. So far, we have tested this
@@ -14,7 +20,7 @@
# The basic principle is the following
#
# 1. If the toolchain is not pre-installed, download and extract it
-# in $(TOOLCHAIN_EXTERNAL_DIR).
+# in $(TOOLCHAIN_EXTERNAL_INSTALL_DIR).
#
# 2. For all external toolchains, perform some checks on the
# conformity between the toolchain configuration described in the
@@ -105,21 +111,21 @@ endif # ! no threads
TOOLCHAIN_EXTERNAL_PREFIX=$(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_PREFIX))
ifeq ($(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),y)
-TOOLCHAIN_EXTERNAL_DIR=$(HOST_DIR)/opt/ext-toolchain
+TOOLCHAIN_EXTERNAL_INSTALL_DIR=$(HOST_DIR)/opt/ext-toolchain
else
-TOOLCHAIN_EXTERNAL_DIR=$(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_PATH))
+TOOLCHAIN_EXTERNAL_INSTALL_DIR=$(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_PATH))
endif
-ifeq ($(TOOLCHAIN_EXTERNAL_DIR),)
+ifeq ($(TOOLCHAIN_EXTERNAL_INSTALL_DIR),)
ifneq ($(TOOLCHAIN_EXTERNAL_PREFIX),)
# if no path set, figure it out from path
TOOLCHAIN_EXTERNAL_BIN := $(shell dirname $(shell which $(TOOLCHAIN_EXTERNAL_PREFIX)-gcc))
endif
else
ifeq ($(BR2_bfin),y)
-TOOLCHAIN_EXTERNAL_BIN := $(TOOLCHAIN_EXTERNAL_DIR)/$(TOOLCHAIN_EXTERNAL_PREFIX)/bin
+TOOLCHAIN_EXTERNAL_BIN := $(TOOLCHAIN_EXTERNAL_INSTALL_DIR)/$(TOOLCHAIN_EXTERNAL_PREFIX)/bin
else
-TOOLCHAIN_EXTERNAL_BIN := $(TOOLCHAIN_EXTERNAL_DIR)/bin
+TOOLCHAIN_EXTERNAL_BIN := $(TOOLCHAIN_EXTERNAL_INSTALL_DIR)/bin
endif
endif
@@ -203,10 +209,6 @@ TOOLCHAIN_EXTERNAL_CFLAGS += -msoft-float
TOOLCHAIN_EXTERNAL_WRAPPER_ARGS += -DBR_SOFTFLOAT=1
endif
-ifeq ($(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),y)
-TOOLCHAIN_EXTERNAL_DEPENDENCIES = $(TOOLCHAIN_EXTERNAL_DIR)/.extracted
-endif
-
ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201109),y)
TOOLCHAIN_EXTERNAL_SITE = http://sourcery.mentor.com/public/gnu_toolchain/arm-none-linux-gnueabi/
TOOLCHAIN_EXTERNAL_SOURCE = arm-2011.09-70-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
@@ -220,15 +222,15 @@ else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV7A_201109),y)
TOOLCHAIN_EXTERNAL_SITE = http://software-dl.ti.com/sdoemb/sdoemb_public_sw/arago_toolchain/2011_09/exports/
TOOLCHAIN_EXTERNAL_SOURCE = arago-2011.09-armv7a-linux-gnueabi-sdk.tar.bz2
define TOOLCHAIN_EXTERNAL_FIXUP_CMDS
- mv $(@D)/arago-2011.09/armv7a/* $(@D)/
- rm -rf $(@D)/arago-2011.09/
+ mv $(TOOLCHAIN_EXTERNAL_INSTALL_DIR)/arago-2011.09/armv7a/* $(TOOLCHAIN_EXTERNAL_INSTALL_DIR)/
+ rm -rf $(TOOLCHAIN_EXTERNAL_INSTALL_DIR)/arago-2011.09/
endef
else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE_201109),y)
TOOLCHAIN_EXTERNAL_SITE = http://software-dl.ti.com/sdoemb/sdoemb_public_sw/arago_toolchain/2011_09/exports/
TOOLCHAIN_EXTERNAL_SOURCE = arago-2011.09-armv5te-linux-gnueabi-sdk.tar.bz2
define TOOLCHAIN_EXTERNAL_FIXUP_CMDS
- mv $(@D)/arago-2011.09/armv5te/* $(@D)/
- rm -rf $(@D)/arago-2011.09/
+ mv $(TOOLCHAIN_EXTERNAL_INSTALL_DIR)/arago-2011.09/armv5te/* $(TOOLCHAIN_EXTERNAL_INSTALL_DIR)/
+ rm -rf $(TOOLCHAIN_EXTERNAL_INSTALL_DIR)/arago-2011.09/
endef
else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_LINARO_2013_06),y)
TOOLCHAIN_EXTERNAL_SITE = https://releases.linaro.org/13.06/components/toolchain/binaries/
@@ -282,17 +284,13 @@ else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201209),y)
TOOLCHAIN_EXTERNAL_SITE = https://sourcery.mentor.com/public/gnu_toolchain/i686-pc-linux-gnu/
TOOLCHAIN_EXTERNAL_SOURCE = ia32-2012.09-62-i686-pc-linux-gnu-i386-linux.tar.bz2
else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2012R1),y)
-TOOLCHAIN_EXTERNAL_SITE_1 = http://blackfin.uclinux.org/gf/download/frsrelease/559/9858/
-TOOLCHAIN_EXTERNAL_SOURCE_1 = blackfin-toolchain-2012R1-RC2.i386.tar.bz2
-TOOLCHAIN_EXTERNAL_SITE_2 = http://blackfin.uclinux.org/gf/download/frsrelease/559/9866/
-TOOLCHAIN_EXTERNAL_SOURCE_2 = blackfin-toolchain-uclibc-full-2012R1-RC2.i386.tar.bz2
-TOOLCHAIN_EXTERNAL_SOURCE = $(TOOLCHAIN_EXTERNAL_SOURCE_1) $(TOOLCHAIN_EXTERNAL_SOURCE_2)
+TOOLCHAIN_EXTERNAL_SITE = http://downloads.sourceforge.net/projects/adi-toolchain/files/2012R1-BF60X/2012R1-RC2-BF60X/i386/
+TOOLCHAIN_EXTERNAL_SOURCE = blackfin-toolchain-2012R1-RC2.i386.tar.bz2
+TOOLCHAIN_EXTERNAL_EXTRA_DOWNLOADS = blackfin-toolchain-uclibc-full-2012R1-RC2.i386.tar.bz2
else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2012R2),y)
-TOOLCHAIN_EXTERNAL_SITE_1 = http://blackfin.uclinux.org/gf/download/frsrelease/588/10139/
-TOOLCHAIN_EXTERNAL_SOURCE_1 = blackfin-toolchain-2012R2-RC2.i386.tar.bz2
-TOOLCHAIN_EXTERNAL_SITE_2 = http://blackfin.uclinux.org/gf/download/frsrelease/588/10147/
-TOOLCHAIN_EXTERNAL_SOURCE_2 = blackfin-toolchain-uclibc-full-2012R2-RC2.i386.tar.bz2
-TOOLCHAIN_EXTERNAL_SOURCE = $(TOOLCHAIN_EXTERNAL_SOURCE_1) $(TOOLCHAIN_EXTERNAL_SOURCE_2)
+TOOLCHAIN_EXTERNAL_SITE = http://downloads.sourceforge.net/project/adi-toolchain/2012R2/2012R2-RC2/i386/
+TOOLCHAIN_EXTERNAL_SOURCE = blackfin-toolchain-2012R2-RC2.i386.tar.bz2
+TOOLCHAIN_EXTERNAL_EXTRA_DOWNLOADS = blackfin-toolchain-uclibc-full-2012R2-RC2.i386.tar.bz2
else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_XILINX_MICROBLAZEEL_14_3),y)
TOOLCHAIN_EXTERNAL_SITE = http://sources.buildroot.net/
TOOLCHAIN_EXTERNAL_SOURCE = lin32-microblazeel-unknown-linux-gnu_14.3_early.tar.xz
@@ -318,53 +316,38 @@ else
# Custom toolchain
TOOLCHAIN_EXTERNAL_SITE = $(dir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL)))
TOOLCHAIN_EXTERNAL_SOURCE = $(notdir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL)))
-
-# A value must be set (even if unused), otherwise the
-# $(DL_DIR)/$(TOOLCHAIN_EXTERNAL_SOURCE) rule would override the main
-# $(DL_DIR) rule
-ifeq (,$(TOOLCHAIN_EXTERNAL_SOURCE))
-TOOLCHAIN_EXTERNAL_SOURCE = none
-endif
endif
+TOOLCHAIN_EXTERNAL_INSTALL_STAGING = YES
+
+ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2012R1)$(BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2012R2),y)
# Special handling for Blackfin toolchain, because of the split in two
# tarballs, and the organization of tarball contents. The tarballs
# contain ./opt/uClinux/{bfin-uclinux,bfin-linux-uclibc} directories,
# which themselves contain the toolchain. This is why we strip more
# components than usual.
-ifeq ($(BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2012R1)$(BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2012R2),y)
-$(DL_DIR)/$(TOOLCHAIN_EXTERNAL_SOURCE_1):
- $(call DOWNLOAD,$(TOOLCHAIN_EXTERNAL_SITE_1:/=)/$(TOOLCHAIN_EXTERNAL_SOURCE_1))
-
-$(DL_DIR)/$(TOOLCHAIN_EXTERNAL_SOURCE_2):
- $(call DOWNLOAD,$(TOOLCHAIN_EXTERNAL_SITE_2:/=)/$(TOOLCHAIN_EXTERNAL_SOURCE_2))
-
-$(TOOLCHAIN_EXTERNAL_DIR)/.extracted: $(DL_DIR)/$(TOOLCHAIN_EXTERNAL_SOURCE_1) $(DL_DIR)/$(TOOLCHAIN_EXTERNAL_SOURCE_2)
- mkdir -p $(@D)
- $(call suitable-extractor,$(TOOLCHAIN_EXTERNAL_SOURCE_1)) $(DL_DIR)/$(TOOLCHAIN_EXTERNAL_SOURCE_1) | \
- $(TAR) $(TAR_STRIP_COMPONENTS)=3 --hard-dereference -C $(@D) $(TAR_OPTIONS) -
- $(call suitable-extractor,$(TOOLCHAIN_EXTERNAL_SOURCE_2)) $(DL_DIR)/$(TOOLCHAIN_EXTERNAL_SOURCE_2) | \
- $(TAR) $(TAR_STRIP_COMPONENTS)=3 --hard-dereference -C $(@D) $(TAR_OPTIONS) -
- $(Q)touch $@
-else
-# Download and extraction of a toolchain
-$(DL_DIR)/$(TOOLCHAIN_EXTERNAL_SOURCE):
- $(call DOWNLOAD,$(TOOLCHAIN_EXTERNAL_SITE)$(TOOLCHAIN_EXTERNAL_SOURCE),$(TOOLCHAIN_EXTERNAL_SOURCE))
-
-$(TOOLCHAIN_EXTERNAL_DIR)/.extracted: $(DL_DIR)/$(TOOLCHAIN_EXTERNAL_SOURCE)
- mkdir -p $(@D)
- $(call suitable-extractor,$(TOOLCHAIN_EXTERNAL_SOURCE)) $^ | \
- $(TAR) $(TAR_STRIP_COMPONENTS)=1 --exclude='usr/lib/locale/*' -C $(@D) $(TAR_OPTIONS) -
+define TOOLCHAIN_EXTERNAL_EXTRACT_CMDS
+ mkdir -p $(TOOLCHAIN_EXTERNAL_INSTALL_DIR)
+ $(call suitable-extractor,$(TOOLCHAIN_EXTERNAL_SOURCE)) $(DL_DIR)/$(TOOLCHAIN_EXTERNAL_SOURCE) | \
+ $(TAR) $(TAR_STRIP_COMPONENTS)=3 --hard-dereference -C $(TOOLCHAIN_EXTERNAL_INSTALL_DIR) $(TAR_OPTIONS) -
+ $(call suitable-extractor,$(TOOLCHAIN_EXTERNAL_EXTRA_DOWNLOADS)) $(DL_DIR)/$(TOOLCHAIN_EXTERNAL_EXTRA_DOWNLOADS) | \
+ $(TAR) $(TAR_STRIP_COMPONENTS)=3 --hard-dereference -C $(TOOLCHAIN_EXTERNAL_INSTALL_DIR) $(TAR_OPTIONS) -
+endef
+else ifneq ($(TOOLCHAIN_EXTERNAL_SOURCE),)
+# Normal handling of toolchain tarball extraction.
+define TOOLCHAIN_EXTERNAL_EXTRACT_CMDS
+ mkdir -p $(TOOLCHAIN_EXTERNAL_INSTALL_DIR)
+ $(call suitable-extractor,$(TOOLCHAIN_EXTERNAL_SOURCE)) $(DL_DIR)/$(TOOLCHAIN_EXTERNAL_SOURCE) | \
+ $(TAR) $(TAR_STRIP_COMPONENTS)=1 --exclude='usr/lib/locale/*' -C $(TOOLCHAIN_EXTERNAL_INSTALL_DIR) $(TAR_OPTIONS) -
$(TOOLCHAIN_EXTERNAL_FIXUP_CMDS)
- $(Q)touch $@
+endef
endif
# Checks for an already installed toolchain: check the toolchain
# location, check that it supports sysroot, and then verify that it
# matches the configuration provided in Buildroot: ABI, C++ support,
# type of C library and all C library features.
-$(STAMP_DIR)/ext-toolchain-checked: $(TOOLCHAIN_EXTERNAL_DEPENDENCIES)
- @$(call MESSAGE,"Checking external toolchain settings")
+define TOOLCHAIN_EXTERNAL_CONFIGURE_CMDS
$(Q)$(call check_cross_compiler_exists,$(TOOLCHAIN_EXTERNAL_CC))
$(Q)LIBC_A_LOCATION=`readlink -f $$(LANG=C $(TOOLCHAIN_EXTERNAL_CC) -print-file-name=libc.a)` ; \
SYSROOT_DIR=`echo $${LIBC_A_LOCATION} | sed -r -e 's:usr/lib(32|64)?/(.*/)?libc\.a::'` ; \
@@ -385,7 +368,7 @@ $(STAMP_DIR)/ext-toolchain-checked: $(TOOLCHAIN_EXTERNAL_DEPENDENCIES)
else \
$(call check_glibc,$${SYSROOT_DIR}) ; \
fi
- $(Q)touch $@
+endef
# Integration of the toolchain into Buildroot: find the main sysroot
# and the variant-specific sysroot, then copy the needed libraries to
@@ -435,7 +418,7 @@ $(STAMP_DIR)/ext-toolchain-checked: $(TOOLCHAIN_EXTERNAL_DEPENDENCIES)
# considered when searching libraries for copy
# to the target filesystem.
-$(STAMP_DIR)/ext-toolchain-installed: $(STAMP_DIR)/ext-toolchain-checked
+define TOOLCHAIN_EXTERNAL_INSTALL_CORE
$(Q)LIBC_A_LOCATION=`readlink -f $$(LANG=C $(TOOLCHAIN_EXTERNAL_CC) -print-file-name=libc.a)` ; \
SYSROOT_DIR=`echo $${LIBC_A_LOCATION} | sed -r -e 's:usr/lib(32|64)?/(.*/)?libc\.a::'` ; \
if test -z "$${SYSROOT_DIR}" ; then \
@@ -478,14 +461,15 @@ $(STAMP_DIR)/ext-toolchain-installed: $(STAMP_DIR)/ext-toolchain-checked
echo "Could not find gdbserver in external toolchain" ; \
exit 1 ; \
fi ; \
- fi ; \
- touch $@
+ fi
+endef
# Special installation target used on the Blackfin architecture when
# FDPIC is not the primary binary format being used, but the user has
# nonetheless requested the installation of the FDPIC libraries to the
# target filesystem.
-$(STAMP_DIR)/ext-toolchain-bfin-fdpic-shared-installed: $(STAMP_DIR)/ext-toolchain-checked
+ifeq ($(BR2_BFIN_INSTALL_FDPIC_SHARED),y)
+define TOOLCHAIN_EXTERNAL_INSTALL_BFIN_FDPIC
$(Q)$(call MESSAGE,"Install external toolchain FDPIC libraries to target...") ; \
FDPIC_EXTERNAL_CC=$(dir $(TOOLCHAIN_EXTERNAL_CC))/../../bfin-linux-uclibc/bin/bfin-linux-uclibc-gcc ; \
FDPIC_LIBC_A_LOCATION=`readlink -f $$(LANG=C $${FDPIC_EXTERNAL_CC} $(TOOLCHAIN_EXTERNAL_CFLAGS) -print-file-name=libc.a)` ; \
@@ -503,8 +487,9 @@ $(STAMP_DIR)/ext-toolchain-bfin-fdpic-shared-installed: $(STAMP_DIR)/ext-toolcha
done ; \
for libs in $(USR_LIB_EXTERNAL_LIBS); do \
$(call copy_toolchain_lib_root,$${FDPIC_SYSROOT_DIR},$${FDPIC_SUPPORT_LIB_DIR},$${FDPIC_LIB_DIR},$$libs,/usr/lib); \
- done ; \
- touch $@
+ done
+endef
+endif
# Special installation target used on the Blackfin architecture when
# shared FLAT is not the primary format being used, but the user has
@@ -512,36 +497,28 @@ $(STAMP_DIR)/ext-toolchain-bfin-fdpic-shared-installed: $(STAMP_DIR)/ext-toolcha
# to the target filesystem. The flat libraries are found and linked
# according to the index in name "libN.so". Index 1 is reserved for
# the standard C library. Customer libraries can use 4 and above.
-$(STAMP_DIR)/ext-toolchain-bfin-shared-flat-installed: $(STAMP_DIR)/ext-toolchain-checked
+ifeq ($(BR2_BFIN_INSTALL_FLAT_SHARED),y)
+define TOOLCHAIN_EXTERNAL_INSTALL_BFIN_FLAT
$(Q)$(call MESSAGE,"Install external toolchain FLAT libraries to target...") ; \
FLAT_EXTERNAL_CC=$(dir $(TOOLCHAIN_EXTERNAL_CC))../../bfin-uclinux/bin/bfin-uclinux-gcc ; \
FLAT_LIBC_A_LOCATION=`$${FLAT_EXTERNAL_CC} $(TOOLCHAIN_EXTERNAL_CFLAGS) -mid-shared-library -print-file-name=libc`; \
if [ -f $${FLAT_LIBC_A_LOCATION} -a ! -h $${FLAT_LIBC_A_LOCATION} ] ; then \
$(INSTALL) -D $${FLAT_LIBC_A_LOCATION} $(TARGET_DIR)/lib/lib1.so; \
- fi ; \
- touch $@
-
-TOOLCHAIN_EXTERNAL_INSTALL = $(STAMP_DIR)/ext-toolchain-installed
-
-ifeq ($(BR2_BFIN_INSTALL_FDPIC_SHARED),y)
-TOOLCHAIN_EXTERNAL_INSTALL += $(STAMP_DIR)/ext-toolchain-bfin-fdpic-shared-installed
-endif
-
-ifeq ($(BR2_BFIN_INSTALL_FLAT_SHARED),y)
-TOOLCHAIN_EXTERNAL_INSTALL += $(STAMP_DIR)/ext-toolchain-bfin-shared-flat-installed
+ fi
+endef
endif
# Build toolchain wrapper for preprocessor, C and C++ compiler and setup
# symlinks for everything else. Skip gdb symlink when we are building our
# own gdb to prevent two gdb's in output/host/usr/bin.
-$(HOST_DIR)/usr/bin/ext-toolchain-wrapper: $(TOOLCHAIN_EXTERNAL_INSTALL)
+define TOOLCHAIN_EXTERNAL_INSTALL_WRAPPER
$(Q)$(call MESSAGE,"Building ext-toolchain wrapper")
mkdir -p $(HOST_DIR)/usr/bin; cd $(HOST_DIR)/usr/bin; \
for i in $(TOOLCHAIN_EXTERNAL_CROSS)*; do \
base=$${i##*/}; \
case "$$base" in \
*cc|*cc-*|*++|*++-*|*cpp) \
- ln -sf $(@F) $$base; \
+ ln -sf ext-toolchain-wrapper $$base; \
;; \
*gdb|*gdbtui) \
if test "$(BR2_PACKAGE_HOST_GDB)" != "y"; then \
@@ -556,11 +533,18 @@ $(HOST_DIR)/usr/bin/ext-toolchain-wrapper: $(TOOLCHAIN_EXTERNAL_INSTALL)
# We use --hash-style=both to increase the compatibility of
# the generated binary with older platforms
$(HOSTCC) $(HOST_CFLAGS) $(TOOLCHAIN_EXTERNAL_WRAPPER_ARGS) -s -Wl,--hash-style=both \
- toolchain/toolchain-external/ext-toolchain-wrapper.c -o $@
+ toolchain/toolchain-external/ext-toolchain-wrapper.c \
+ -o $(HOST_DIR)/usr/bin/ext-toolchain-wrapper
+endef
-toolchain-external: dependencies $(HOST_DIR)/usr/bin/ext-toolchain-wrapper
+# Even though we're installing things in both the staging, the host
+# and the target directory, we do everything within the
+# install-staging step, arbitrarily.
+define TOOLCHAIN_EXTERNAL_INSTALL_STAGING_CMDS
+ $(TOOLCHAIN_EXTERNAL_INSTALL_CORE)
+ $(TOOLCHAIN_EXTERNAL_INSTALL_BFIN_FDPIC)
+ $(TOOLCHAIN_EXTERNAL_INSTALL_BFIN_FLAT)
+ $(TOOLCHAIN_EXTERNAL_INSTALL_WRAPPER)
+endef
-ifeq ($(BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD),y)
-# download ext toolchain if so configured
-toolchain-external-source: $(addprefix $(DL_DIR)/,$(TOOLCHAIN_EXTERNAL_SOURCE))
-endif
+$(eval $(generic-package))
--
1.8.1.2
^ permalink raw reply related [flat|nested] 28+ messages in thread* [Buildroot] [PATCHv2 12/21] dependencies: remove useless targets
2013-10-06 14:19 [Buildroot] [PATCHv2 00/21] Toolchain updates: package infra, musl support, Linaro updates Thomas Petazzoni
` (10 preceding siblings ...)
2013-10-06 14:19 ` [Buildroot] [PATCHv2 11/21] toolchain-external: convert to the package infrastructure Thomas Petazzoni
@ 2013-10-06 14:19 ` Thomas Petazzoni
2013-10-06 14:19 ` [Buildroot] [PATCHv2 13/21] toolchain-external: conditionalize the installation of libraries Thomas Petazzoni
` (8 subsequent siblings)
20 siblings, 0 replies; 28+ messages in thread
From: Thomas Petazzoni @ 2013-10-06 14:19 UTC (permalink / raw)
To: buildroot
The dependencies-source, dependencies-clean and dependencies-dirclean
targets are not needed, as long as 'dependencies' is not used in the
<pkg>_DEPENDENCIES of a package.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
support/dependencies/dependencies.mk | 8 --------
1 file changed, 8 deletions(-)
diff --git a/support/dependencies/dependencies.mk b/support/dependencies/dependencies.mk
index 97f85e6..155a909 100644
--- a/support/dependencies/dependencies.mk
+++ b/support/dependencies/dependencies.mk
@@ -33,14 +33,6 @@ dependencies: HOSTCC=$(HOSTCC_NOCCACHE)
dependencies: HOSTCXX=$(HOSTCXX_NOCCACHE)
dependencies: core-dependencies $(DEPENDENCIES_HOST_PREREQ)
-dependencies-source:
-
-dependencies-clean:
- rm -f $(SSTRIP_TARGET)
-
-dependencies-dirclean:
- true
-
################################################################################
#
# Toplevel Makefile options
--
1.8.1.2
^ permalink raw reply related [flat|nested] 28+ messages in thread* [Buildroot] [PATCHv2 13/21] toolchain-external: conditionalize the installation of libraries
2013-10-06 14:19 [Buildroot] [PATCHv2 00/21] Toolchain updates: package infra, musl support, Linaro updates Thomas Petazzoni
` (11 preceding siblings ...)
2013-10-06 14:19 ` [Buildroot] [PATCHv2 12/21] dependencies: remove useless targets Thomas Petazzoni
@ 2013-10-06 14:19 ` Thomas Petazzoni
2013-10-06 14:19 ` [Buildroot] [PATCHv2 14/21] toolchain-external: modify the wildcard logic for shared libraries copying Thomas Petazzoni
` (7 subsequent siblings)
20 siblings, 0 replies; 28+ messages in thread
From: Thomas Petazzoni @ 2013-10-06 14:19 UTC (permalink / raw)
To: buildroot
The external toolchain code makes the assumption that all C libraries
have a ld*.so, libc.so, libcrypt.so, libdl.so, libgcc_s.so, libm.so,
libnsl.so, libresolv.so, libutil.so, and when thread support is
enabled, libpthread.so, etc.
However, this is not the case with the musl C library, which
integrates all the functionalities in a single libc.so file. In
preparation of the support of the musl library, we make the current
value of LIB_EXTERNAL_LIBS conditional to glibc or uClibc.
The addition of additional libraries through
BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS is kept outside the condition, at
the end.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
toolchain/toolchain-external/toolchain-external.mk | 19 +++++++++++--------
1 file changed, 11 insertions(+), 8 deletions(-)
diff --git a/toolchain/toolchain-external/toolchain-external.mk b/toolchain/toolchain-external/toolchain-external.mk
index 85fc341..aaf4994 100644
--- a/toolchain/toolchain-external/toolchain-external.mk
+++ b/toolchain/toolchain-external/toolchain-external.mk
@@ -54,8 +54,16 @@
# $(HOST_DIR)/usr/bin like for the internal toolchains, and the rest
# of Buildroot is handled identical for the 2 toolchain types.
-LIB_EXTERNAL_LIBS=ld*.so libc.so libcrypt.so libdl.so libgcc_s.so libm.so libnsl.so libresolv.so librt.so libutil.so
-LIB_EXTERNAL_LIBS+=$(call qstrip,$(BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS))
+ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GLIBC)$(BR2_TOOLCHAIN_EXTERNAL_UCLIBC),y)
+LIB_EXTERNAL_LIBS+=ld*.so libc.so libcrypt.so libdl.so libgcc_s.so libm.so libnsl.so libresolv.so librt.so libutil.so
+ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
+LIB_EXTERNAL_LIBS+=libpthread.so
+ifneq ($(BR2_PACKAGE_GDB_SERVER)$(BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY),)
+LIB_EXTERNAL_LIBS+=libthread_db.so
+endif # gdbserver
+endif # ! no threads
+endif
+
ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GLIBC),y)
LIB_EXTERNAL_LIBS+=libnss_files.so libnss_dns.so
endif
@@ -64,12 +72,7 @@ ifeq ($(BR2_INSTALL_LIBSTDCPP),y)
USR_LIB_EXTERNAL_LIBS+=libstdc++.so
endif
-ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
-LIB_EXTERNAL_LIBS+=libpthread.so
-ifneq ($(BR2_PACKAGE_GDB_SERVER)$(BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY),)
-LIB_EXTERNAL_LIBS+=libthread_db.so
-endif # gdbserver
-endif # ! no threads
+LIB_EXTERNAL_LIBS+=$(call qstrip,$(BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS))
# Details about sysroot directory selection.
#
--
1.8.1.2
^ permalink raw reply related [flat|nested] 28+ messages in thread* [Buildroot] [PATCHv2 14/21] toolchain-external: modify the wildcard logic for shared libraries copying
2013-10-06 14:19 [Buildroot] [PATCHv2 00/21] Toolchain updates: package infra, musl support, Linaro updates Thomas Petazzoni
` (12 preceding siblings ...)
2013-10-06 14:19 ` [Buildroot] [PATCHv2 13/21] toolchain-external: conditionalize the installation of libraries Thomas Petazzoni
@ 2013-10-06 14:19 ` Thomas Petazzoni
2013-10-06 14:19 ` [Buildroot] [PATCHv2 15/21] toolchain-external: add support for musl C library Thomas Petazzoni
` (6 subsequent siblings)
20 siblings, 0 replies; 28+ messages in thread
From: Thomas Petazzoni @ 2013-10-06 14:19 UTC (permalink / raw)
To: buildroot
Until now, the copy_toolchain_lib_root function took as argument the
base name of a library (e.g: libm.so), and was assuming that the usual
scheme libm.so.<x> being a symbolic link to the real library was used.
However, with musl based toolchains, the C library is named libc.so
directly, with no symbolic link at all. Therefore, this commit changes
the copy_toolchain_lib_root to move the responsibility of using a
wildcard or not after the library name the caller's responsibility.
So, all the existing LIB_EXTERNAL_LIBS values are modified to have a
.* at the end, so that the behavior is effectively unchanged.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
toolchain/toolchain-external/helpers.mk | 2 +-
toolchain/toolchain-external/toolchain-external.mk | 10 +++++-----
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/toolchain/toolchain-external/helpers.mk b/toolchain/toolchain-external/helpers.mk
index 27b6710..37f2cf9 100644
--- a/toolchain/toolchain-external/helpers.mk
+++ b/toolchain/toolchain-external/helpers.mk
@@ -54,7 +54,7 @@ copy_toolchain_lib_root = \
$${ARCH_SYSROOT_DIR}/$${ARCH_LIB_DIR} \
$${ARCH_SYSROOT_DIR}/usr/$${ARCH_LIB_DIR} \
$${SUPPORT_LIB_DIR} ; do \
- LIBSPATH=`find $${dir} -maxdepth 1 -name "$${LIB}.*" 2>/dev/null` ; \
+ LIBSPATH=`find $${dir} -maxdepth 1 -name "$${LIB}" 2>/dev/null` ; \
if test -n "$${LIBSPATH}" ; then \
break ; \
fi \
diff --git a/toolchain/toolchain-external/toolchain-external.mk b/toolchain/toolchain-external/toolchain-external.mk
index aaf4994..2bfe64a 100644
--- a/toolchain/toolchain-external/toolchain-external.mk
+++ b/toolchain/toolchain-external/toolchain-external.mk
@@ -55,21 +55,21 @@
# of Buildroot is handled identical for the 2 toolchain types.
ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GLIBC)$(BR2_TOOLCHAIN_EXTERNAL_UCLIBC),y)
-LIB_EXTERNAL_LIBS+=ld*.so libc.so libcrypt.so libdl.so libgcc_s.so libm.so libnsl.so libresolv.so librt.so libutil.so
+LIB_EXTERNAL_LIBS+=ld*.so.* libc.so.* libcrypt.so.* libdl.so.* libgcc_s.so.* libm.so.* libnsl.so.* libresolv.so.* librt.so.* libutil.so.*
ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
-LIB_EXTERNAL_LIBS+=libpthread.so
+LIB_EXTERNAL_LIBS+=libpthread.so.*
ifneq ($(BR2_PACKAGE_GDB_SERVER)$(BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY),)
-LIB_EXTERNAL_LIBS+=libthread_db.so
+LIB_EXTERNAL_LIBS+=libthread_db.so.*
endif # gdbserver
endif # ! no threads
endif
ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GLIBC),y)
-LIB_EXTERNAL_LIBS+=libnss_files.so libnss_dns.so
+LIB_EXTERNAL_LIBS+=libnss_files.so.* libnss_dns.so.*
endif
ifeq ($(BR2_INSTALL_LIBSTDCPP),y)
-USR_LIB_EXTERNAL_LIBS+=libstdc++.so
+USR_LIB_EXTERNAL_LIBS+=libstdc++.so.*
endif
LIB_EXTERNAL_LIBS+=$(call qstrip,$(BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS))
--
1.8.1.2
^ permalink raw reply related [flat|nested] 28+ messages in thread* [Buildroot] [PATCHv2 15/21] toolchain-external: add support for musl C library
2013-10-06 14:19 [Buildroot] [PATCHv2 00/21] Toolchain updates: package infra, musl support, Linaro updates Thomas Petazzoni
` (13 preceding siblings ...)
2013-10-06 14:19 ` [Buildroot] [PATCHv2 14/21] toolchain-external: modify the wildcard logic for shared libraries copying Thomas Petazzoni
@ 2013-10-06 14:19 ` Thomas Petazzoni
2013-10-06 14:19 ` [Buildroot] [PATCHv2 16/21] toolchain-external: improve help text of some options Thomas Petazzoni
` (5 subsequent siblings)
20 siblings, 0 replies; 28+ messages in thread
From: Thomas Petazzoni @ 2013-10-06 14:19 UTC (permalink / raw)
To: buildroot
This commit adds support for external toolchains based on the musl C
library, as available from http://www.musl-libc.org.
Note that the pre-built musl toolchains available from
http://musl.codu.org/ are not working for the moment, since they lack
sysroot support. However, this problem has been reported to the
maintainer, who has already added sysroot support in his scripts at
https://bitbucket.org/GregorR/musl-cross, and therefore the next
version of the pre-built toolchains should work with Buildroot
out-of-the-box. In the mean time, the musl-cross script must be used
to build the toolchain.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
toolchain/Config.in | 9 +++++++++
toolchain/toolchain-external/Config.in | 12 ++++++++++++
toolchain/toolchain-external/helpers.mk | 11 +++++++++++
toolchain/toolchain-external/toolchain-external.mk | 18 +++++++++++++++++-
4 files changed, 49 insertions(+), 1 deletion(-)
diff --git a/toolchain/Config.in b/toolchain/Config.in
index 0f9a7dd..3980d79 100644
--- a/toolchain/Config.in
+++ b/toolchain/Config.in
@@ -15,6 +15,15 @@ config BR2_TOOLCHAIN_USES_GLIBC
config BR2_TOOLCHAIN_USES_UCLIBC
bool
+config BR2_TOOLCHAIN_USES_MUSL
+ bool
+ select BR2_LARGEFILE
+ select BR2_INET_IPV6
+ select BR2_USE_WCHAR
+ select BR2_ENABLE_LOCALE
+ select BR2_TOOLCHAIN_HAS_THREADS
+ select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
+
choice
prompt "Toolchain type"
help
diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in
index c53577e..89c799e 100644
--- a/toolchain/toolchain-external/Config.in
+++ b/toolchain/toolchain-external/Config.in
@@ -860,6 +860,10 @@ config BR2_TOOLCHAIN_EXTERNAL_UCLIBC
bool
select BR2_TOOLCHAIN_USES_UCLIBC
+config BR2_TOOLCHAIN_EXTERNAL_MUSL
+ bool
+ select BR2_TOOLCHAIN_USES_MUSL
+
if BR2_TOOLCHAIN_EXTERNAL_CUSTOM
choice
@@ -882,6 +886,13 @@ config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC
eglibc configured to exclude key features may cause build failures to
some packages.
+config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL
+ bool "musl"
+ select BR2_TOOLCHAIN_EXTERNAL_MUSL
+ help
+ Select this option if your external toolchain uses the
+ 'musl' C library, available from http://www.musl-libc.org/.
+
endchoice
if BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC
@@ -952,6 +963,7 @@ endif # BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC
config BR2_TOOLCHAIN_EXTERNAL_INET_RPC
bool "Toolchain has RPC support?"
select BR2_TOOLCHAIN_HAS_NATIVE_RPC
+ depends on !BR2_TOOLCHAIN_EXTERNAL_MUSL
default y if BR2_TOOLCHAIN_EXTERNAL_GLIBC
help
Select this option if your external toolchain supports
diff --git a/toolchain/toolchain-external/helpers.mk b/toolchain/toolchain-external/helpers.mk
index 37f2cf9..e7d38f2 100644
--- a/toolchain/toolchain-external/helpers.mk
+++ b/toolchain/toolchain-external/helpers.mk
@@ -212,6 +212,17 @@ check_glibc = \
$(call check_glibc_rpc_feature,$${SYSROOT_DIR})
#
+# Check that the selected C library is really musl
+#
+# $1: sysroot directory
+check_musl = \
+ SYSROOT_DIR="$(strip $1)"; \
+ if test ! -f $${SYSROOT_DIR}/lib/libc.so -o -e $${SYSROOT_DIR}/lib/libm.so ; then \
+ echo "Incorrect selection of the C library" ; \
+ exit -1; \
+ fi
+
+#
# Check the conformity of Buildroot configuration with regard to the
# uClibc configuration of the external toolchain, for a particular
# feature.
diff --git a/toolchain/toolchain-external/toolchain-external.mk b/toolchain/toolchain-external/toolchain-external.mk
index 2bfe64a..b2266b6 100644
--- a/toolchain/toolchain-external/toolchain-external.mk
+++ b/toolchain/toolchain-external/toolchain-external.mk
@@ -68,6 +68,10 @@ ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GLIBC),y)
LIB_EXTERNAL_LIBS+=libnss_files.so.* libnss_dns.so.*
endif
+ifeq ($(BR2_TOOLCHAIN_EXTERNAL_MUSL),y)
+LIB_EXTERNAL_LIBS += libc.so libgcc_s.so.*
+endif
+
ifeq ($(BR2_INSTALL_LIBSTDCPP),y)
USR_LIB_EXTERNAL_LIBS+=libstdc++.so.*
endif
@@ -353,7 +357,7 @@ endif
define TOOLCHAIN_EXTERNAL_CONFIGURE_CMDS
$(Q)$(call check_cross_compiler_exists,$(TOOLCHAIN_EXTERNAL_CC))
$(Q)LIBC_A_LOCATION=`readlink -f $$(LANG=C $(TOOLCHAIN_EXTERNAL_CC) -print-file-name=libc.a)` ; \
- SYSROOT_DIR=`echo $${LIBC_A_LOCATION} | sed -r -e 's:usr/lib(32|64)?/(.*/)?libc\.a::'` ; \
+ SYSROOT_DIR=`echo $${LIBC_A_LOCATION} | sed -r -e 's:(usr/)?lib(32|64)?/(.*/)?libc\.a::'` ; \
if test -z "$${SYSROOT_DIR}" ; then \
@echo "External toolchain doesn't support --sysroot. Cannot use." ; \
exit 1 ; \
@@ -368,11 +372,23 @@ define TOOLCHAIN_EXTERNAL_CONFIGURE_CMDS
fi ; \
if test "$(BR2_TOOLCHAIN_EXTERNAL_UCLIBC)" = "y" ; then \
$(call check_uclibc,$${SYSROOT_DIR}) ; \
+ elif test "$(BR2_TOOLCHAIN_EXTERNAL_MUSL)" = "y" ; then \
+ $(call check_musl,$${SYSROOT_DIR}) ; \
else \
$(call check_glibc,$${SYSROOT_DIR}) ; \
fi
endef
+# With the musl C library, the libc.so library directly plays the role
+# of the dynamic library loader. We just need to create a symbolic
+# link to libc.so with the appropriate name.
+ifeq ($(BR2_TOOLCHAIN_EXTERNAL_MUSL),y)
+define TOOLCHAIN_EXTERNAL_MUSL_LD_LINK
+ ln -sf libc.so $(TARGET_DIR)/lib/ld-musl-$(ARCH).so.1
+endef
+TOOLCHAIN_EXTERNAL_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_EXTERNAL_MUSL_LD_LINK
+endif
+
# Integration of the toolchain into Buildroot: find the main sysroot
# and the variant-specific sysroot, then copy the needed libraries to
# the $(TARGET_DIR) and copy the whole sysroot (libraries and headers)
--
1.8.1.2
^ permalink raw reply related [flat|nested] 28+ messages in thread* [Buildroot] [PATCHv2 16/21] toolchain-external: improve help text of some options
2013-10-06 14:19 [Buildroot] [PATCHv2 00/21] Toolchain updates: package infra, musl support, Linaro updates Thomas Petazzoni
` (14 preceding siblings ...)
2013-10-06 14:19 ` [Buildroot] [PATCHv2 15/21] toolchain-external: add support for musl C library Thomas Petazzoni
@ 2013-10-06 14:19 ` Thomas Petazzoni
2013-10-06 14:19 ` [Buildroot] [PATCHv2 17/21] busybox: add patches to fix build with the musl C library Thomas Petazzoni
` (4 subsequent siblings)
20 siblings, 0 replies; 28+ messages in thread
From: Thomas Petazzoni @ 2013-10-06 14:19 UTC (permalink / raw)
To: buildroot
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
toolchain/toolchain-external/Config.in | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in
index 89c799e..67f4fc7 100644
--- a/toolchain/toolchain-external/Config.in
+++ b/toolchain/toolchain-external/Config.in
@@ -876,15 +876,22 @@ config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC
# For the time being, we assume that all custom external
# toolchains have shadow password support.
select BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS
+ help
+ Select this option if your external toolchain uses the
+ uClibc C library (available from http://www.uclibc.org/).
config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC
bool "glibc/eglibc"
select BR2_TOOLCHAIN_EXTERNAL_GLIBC
help
- Note: eglibc is a variant of glibc that (among other things) can be
- configured to exclude some of its features. Using a toolchain with
- eglibc configured to exclude key features may cause build failures to
- some packages.
+ Select this option if your external toolchain uses the GNU C
+ library (available from https://www.gnu.org/software/libc/)
+ or its variant the eglibc library (http://www.eglibc.org/).
+
+ Note: eglibc is a variant of glibc that (among other things)
+ can be configured to exclude some of its features. Using a
+ toolchain with eglibc configured to exclude key features may
+ cause build failures to some packages.
config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL
bool "musl"
--
1.8.1.2
^ permalink raw reply related [flat|nested] 28+ messages in thread* [Buildroot] [PATCHv2 17/21] busybox: add patches to fix build with the musl C library
2013-10-06 14:19 [Buildroot] [PATCHv2 00/21] Toolchain updates: package infra, musl support, Linaro updates Thomas Petazzoni
` (15 preceding siblings ...)
2013-10-06 14:19 ` [Buildroot] [PATCHv2 16/21] toolchain-external: improve help text of some options Thomas Petazzoni
@ 2013-10-06 14:19 ` Thomas Petazzoni
2013-10-06 14:19 ` [Buildroot] [PATCHv2 18/21] toolchain-external: update Linaro ARM toolchain Thomas Petazzoni
` (3 subsequent siblings)
20 siblings, 0 replies; 28+ messages in thread
From: Thomas Petazzoni @ 2013-10-06 14:19 UTC (permalink / raw)
To: buildroot
Those patches have been submitted upstream.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
...01-libbb-use-poll.h-instead-of-sys-poll.h.patch | 32 +++++++++++++++++++
...onfig-include-linux-if_slip.h-instead-of-.patch | 33 ++++++++++++++++++++
...libiproute-use-linux-if_packet.h-instead-.patch | 36 ++++++++++++++++++++++
3 files changed, 101 insertions(+)
create mode 100644 package/busybox/1.21.1/0001-libbb-use-poll.h-instead-of-sys-poll.h.patch
create mode 100644 package/busybox/1.21.1/0002-network-ifconfig-include-linux-if_slip.h-instead-of-.patch
create mode 100644 package/busybox/1.21.1/0003-networking-libiproute-use-linux-if_packet.h-instead-.patch
diff --git a/package/busybox/1.21.1/0001-libbb-use-poll.h-instead-of-sys-poll.h.patch b/package/busybox/1.21.1/0001-libbb-use-poll.h-instead-of-sys-poll.h.patch
new file mode 100644
index 0000000..089d858
--- /dev/null
+++ b/package/busybox/1.21.1/0001-libbb-use-poll.h-instead-of-sys-poll.h.patch
@@ -0,0 +1,32 @@
+From 676452a92d1fc4f85e8d89930d7729197c031026 Mon Sep 17 00:00:00 2001
+From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Date: Sat, 5 Oct 2013 15:51:56 +0200
+Subject: [PATCH 1/3] libbb: use <poll.h> instead of <sys/poll.h>
+
+As the pol() manpage recommends, include the <poll.h> header instead
+of <sys/poll.h>. This allows to get rid of gazillions of warnings when
+building Busybox against the musl C library, which prints a warning
+when the internal header <sys/poll.h> is included directly instead of
+the <poll.h> header.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+---
+ include/libbb.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/include/libbb.h b/include/libbb.h
+index e520060..f03f454 100644
+--- a/include/libbb.h
++++ b/include/libbb.h
+@@ -37,7 +37,7 @@
+ #include <libgen.h> /* dirname,basename */
+ #undef basename
+ #define basename dont_use_basename
+-#include <sys/poll.h>
++#include <poll.h>
+ #include <sys/ioctl.h>
+ #include <sys/mman.h>
+ #include <sys/socket.h>
+--
+1.8.1.2
+
diff --git a/package/busybox/1.21.1/0002-network-ifconfig-include-linux-if_slip.h-instead-of-.patch b/package/busybox/1.21.1/0002-network-ifconfig-include-linux-if_slip.h-instead-of-.patch
new file mode 100644
index 0000000..ed35719
--- /dev/null
+++ b/package/busybox/1.21.1/0002-network-ifconfig-include-linux-if_slip.h-instead-of-.patch
@@ -0,0 +1,33 @@
+From 5eae213031a3ef88fe8d9d0a387f44264ea635cc Mon Sep 17 00:00:00 2001
+From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Date: Sat, 5 Oct 2013 15:53:16 +0200
+Subject: [PATCH 2/3] network/ifconfig: include <linux/if_slip.h> instead of
+ <net/if_slip.h>
+
+The musl C library doesn't provide the <net/if_slip.h> since userspace
+applications can just as well use the <linux/if_slip.h> kernel header.
+
+This commit fixes the build of the ifconfig applet with the musl C
+library.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+---
+ networking/ifconfig.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/networking/ifconfig.c b/networking/ifconfig.c
+index 782374b..c90ed6b 100644
+--- a/networking/ifconfig.c
++++ b/networking/ifconfig.c
+@@ -56,7 +56,7 @@
+ #endif
+
+ #if ENABLE_FEATURE_IFCONFIG_SLIP
+-# include <net/if_slip.h>
++# include <linux/if_slip.h>
+ #endif
+
+ /* I don't know if this is needed for busybox or not. Anyone? */
+--
+1.8.1.2
+
diff --git a/package/busybox/1.21.1/0003-networking-libiproute-use-linux-if_packet.h-instead-.patch b/package/busybox/1.21.1/0003-networking-libiproute-use-linux-if_packet.h-instead-.patch
new file mode 100644
index 0000000..7b74656
--- /dev/null
+++ b/package/busybox/1.21.1/0003-networking-libiproute-use-linux-if_packet.h-instead-.patch
@@ -0,0 +1,36 @@
+From d4fec31889ad660a58dab633c511221feb66e817 Mon Sep 17 00:00:00 2001
+From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Date: Sat, 5 Oct 2013 15:55:06 +0200
+Subject: [PATCH 3/3] networking/libiproute: use <linux/if_packet.h> instead of
+ <net/if_packet.h>
+
+The musl C library doesn't provide the <net/if_packet.h> since the
+corresponding kernel headers <linux/if_packet.h> already provides the
+necessary definitions. Replacing <net/if_packet.h> by
+<linux/if_packet.h> also removes the need to include
+<netpacket/packet.h>
+
+This commit fixes the build of iplink with the musl C library.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+---
+ networking/libiproute/iplink.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/networking/libiproute/iplink.c b/networking/libiproute/iplink.c
+index bad2017..32ccb1c 100644
+--- a/networking/libiproute/iplink.c
++++ b/networking/libiproute/iplink.c
+@@ -5,8 +5,7 @@
+ * Licensed under GPLv2 or later, see file LICENSE in this source tree.
+ */
+ #include <net/if.h>
+-#include <net/if_packet.h>
+-#include <netpacket/packet.h>
++#include <linux/if_packet.h>
+ #include <netinet/if_ether.h>
+
+ #include "ip_common.h" /* #include "libbb.h" is inside */
+--
+1.8.1.2
+
--
1.8.1.2
^ permalink raw reply related [flat|nested] 28+ messages in thread* [Buildroot] [PATCHv2 18/21] toolchain-external: update Linaro ARM toolchain
2013-10-06 14:19 [Buildroot] [PATCHv2 00/21] Toolchain updates: package infra, musl support, Linaro updates Thomas Petazzoni
` (16 preceding siblings ...)
2013-10-06 14:19 ` [Buildroot] [PATCHv2 17/21] busybox: add patches to fix build with the musl C library Thomas Petazzoni
@ 2013-10-06 14:19 ` Thomas Petazzoni
2013-10-06 14:19 ` [Buildroot] [PATCHv2 19/21] toolchain-external: update Linaro AArch64 toolchain Thomas Petazzoni
` (2 subsequent siblings)
20 siblings, 0 replies; 28+ messages in thread
From: Thomas Petazzoni @ 2013-10-06 14:19 UTC (permalink / raw)
To: buildroot
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
toolchain/toolchain-external/Config.in | 20 ++++++++++----------
toolchain/toolchain-external/toolchain-external.mk | 6 +++---
2 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in
index 67f4fc7..ecfe17c 100644
--- a/toolchain/toolchain-external/Config.in
+++ b/toolchain/toolchain-external/Config.in
@@ -3,8 +3,8 @@ if BR2_TOOLCHAIN_EXTERNAL
choice
prompt "Toolchain"
-config BR2_TOOLCHAIN_EXTERNAL_LINARO_2013_08
- bool "Linaro 2013.08"
+config BR2_TOOLCHAIN_EXTERNAL_LINARO_2013_09
+ bool "Linaro 2013.09"
depends on BR2_arm
depends on BR2_GCC_TARGET_ARCH = "armv7-a"
depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
@@ -15,7 +15,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_2013_08
select BR2_HOSTARCH_NEEDS_IA32_LIBS
help
Linaro toolchain for the ARM architecture. It uses Linaro
- GCC 2013.08 (based on gcc 4.8), Linaro GDB 2013.05 (based on
+ GCC 2013.09 (based on gcc 4.8), Linaro GDB 2013.05 (based on
GDB 7.6), eglibc 2.17, Binutils 2013.06 (based on 2.23). It
generates code that runs on all Cortex-A profile devices,
but tuned for the Cortex-A9. The code generated is Thumb 2,
@@ -24,8 +24,8 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_2013_08
To use this toolchain, you must disable soft float usage.
-config BR2_TOOLCHAIN_EXTERNAL_LINARO_2013_07
- bool "Linaro 2013.07"
+config BR2_TOOLCHAIN_EXTERNAL_LINARO_2013_08
+ bool "Linaro 2013.08"
depends on BR2_arm
depends on BR2_GCC_TARGET_ARCH = "armv7-a"
depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
@@ -36,7 +36,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_2013_07
select BR2_HOSTARCH_NEEDS_IA32_LIBS
help
Linaro toolchain for the ARM architecture. It uses Linaro
- GCC 2013.07 (based on gcc 4.8), Linaro GDB 2013.05 (based on
+ GCC 2013.08 (based on gcc 4.8), Linaro GDB 2013.05 (based on
GDB 7.6), eglibc 2.17, Binutils 2013.06 (based on 2.23). It
generates code that runs on all Cortex-A profile devices,
but tuned for the Cortex-A9. The code generated is Thumb 2,
@@ -45,8 +45,8 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_2013_07
To use this toolchain, you must disable soft float usage.
-config BR2_TOOLCHAIN_EXTERNAL_LINARO_2013_06
- bool "Linaro 2013.06"
+config BR2_TOOLCHAIN_EXTERNAL_LINARO_2013_07
+ bool "Linaro 2013.07"
depends on BR2_arm
depends on BR2_GCC_TARGET_ARCH = "armv7-a"
depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
@@ -57,7 +57,7 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_2013_06
select BR2_HOSTARCH_NEEDS_IA32_LIBS
help
Linaro toolchain for the ARM architecture. It uses Linaro
- GCC 2013.06 (based on gcc 4.8), Linaro GDB 2013.05 (based on
+ GCC 2013.07 (based on gcc 4.8), Linaro GDB 2013.05 (based on
GDB 7.6), eglibc 2.17, Binutils 2013.06 (based on 2.23). It
generates code that runs on all Cortex-A profile devices,
but tuned for the Cortex-A9. The code generated is Thumb 2,
@@ -816,9 +816,9 @@ config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX
config BR2_TOOLCHAIN_EXTERNAL_PREFIX
string
+ default "arm-linux-gnueabihf" if BR2_TOOLCHAIN_EXTERNAL_LINARO_2013_09
default "arm-linux-gnueabihf" if BR2_TOOLCHAIN_EXTERNAL_LINARO_2013_08
default "arm-linux-gnueabihf" if BR2_TOOLCHAIN_EXTERNAL_LINARO_2013_07
- default "arm-linux-gnueabihf" if BR2_TOOLCHAIN_EXTERNAL_LINARO_2013_06
default "arm-none-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201109
default "arm-none-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201203
default "arm-none-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201305
diff --git a/toolchain/toolchain-external/toolchain-external.mk b/toolchain/toolchain-external/toolchain-external.mk
index b2266b6..e38ee48 100644
--- a/toolchain/toolchain-external/toolchain-external.mk
+++ b/toolchain/toolchain-external/toolchain-external.mk
@@ -239,15 +239,15 @@ define TOOLCHAIN_EXTERNAL_FIXUP_CMDS
mv $(TOOLCHAIN_EXTERNAL_INSTALL_DIR)/arago-2011.09/armv5te/* $(TOOLCHAIN_EXTERNAL_INSTALL_DIR)/
rm -rf $(TOOLCHAIN_EXTERNAL_INSTALL_DIR)/arago-2011.09/
endef
-else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_LINARO_2013_06),y)
-TOOLCHAIN_EXTERNAL_SITE = https://releases.linaro.org/13.06/components/toolchain/binaries/
-TOOLCHAIN_EXTERNAL_SOURCE = gcc-linaro-arm-linux-gnueabihf-4.8-2013.06_linux.tar.xz
else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_LINARO_2013_07),y)
TOOLCHAIN_EXTERNAL_SITE = http://releases.linaro.org/13.07/components/toolchain/binaries/
TOOLCHAIN_EXTERNAL_SOURCE = gcc-linaro-arm-linux-gnueabihf-4.8-2013.07-1_linux.tar.xz
else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_LINARO_2013_08),y)
TOOLCHAIN_EXTERNAL_SITE = http://releases.linaro.org/13.08/components/toolchain/binaries/
TOOLCHAIN_EXTERNAL_SOURCE = gcc-linaro-arm-linux-gnueabihf-4.8-2013.08_linux.tar.xz
+else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_LINARO_2013_09),y)
+TOOLCHAIN_EXTERNAL_SITE = http://releases.linaro.org/13.09/components/toolchain/binaries/
+TOOLCHAIN_EXTERNAL_SOURCE = gcc-linaro-arm-linux-gnueabihf-4.8-2013.09_linux.tar.xz
else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201203),y)
TOOLCHAIN_EXTERNAL_SITE = http://sourcery.mentor.com/public/gnu_toolchain/mips-linux-gnu/
TOOLCHAIN_EXTERNAL_SOURCE = mips-2012.03-63-mips-linux-gnu-i686-pc-linux-gnu.tar.bz2
--
1.8.1.2
^ permalink raw reply related [flat|nested] 28+ messages in thread* [Buildroot] [PATCHv2 19/21] toolchain-external: update Linaro AArch64 toolchain
2013-10-06 14:19 [Buildroot] [PATCHv2 00/21] Toolchain updates: package infra, musl support, Linaro updates Thomas Petazzoni
` (17 preceding siblings ...)
2013-10-06 14:19 ` [Buildroot] [PATCHv2 18/21] toolchain-external: update Linaro ARM toolchain Thomas Petazzoni
@ 2013-10-06 14:19 ` Thomas Petazzoni
2013-10-06 14:19 ` [Buildroot] [PATCHv2 20/21] toolchain-external: improve target library copy logic Thomas Petazzoni
2013-10-06 14:19 ` [Buildroot] [PATCHv2 21/21] toolchain-external: fix Linaro ARM toolchain support Thomas Petazzoni
20 siblings, 0 replies; 28+ messages in thread
From: Thomas Petazzoni @ 2013-10-06 14:19 UTC (permalink / raw)
To: buildroot
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
toolchain/toolchain-external/Config.in | 14 +++++++-------
toolchain/toolchain-external/toolchain-external.mk | 6 +++---
2 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in
index ecfe17c..0d42041 100644
--- a/toolchain/toolchain-external/Config.in
+++ b/toolchain/toolchain-external/Config.in
@@ -730,8 +730,8 @@ config BR2_TOOLCHAIN_EXTERNAL_XILINX_MICROBLAZEBE_V2
Toolchain for the Microblaze architecture, from
http://wiki.xilinx.com/mb-gnu-tools
-config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_13_08
- bool "Linaro AArch64 13.08"
+config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_13_09
+ bool "Linaro AArch64 13.09"
depends on BR2_aarch64
depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
select BR2_TOOLCHAIN_EXTERNAL_GLIBC
@@ -742,8 +742,8 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_13_08
Toolchain for the AArch64 architecture, from
http://www.linaro.org/engineering/armv8/
-config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_13_07
- bool "Linaro AArch64 13.07"
+config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_13_08
+ bool "Linaro AArch64 13.08"
depends on BR2_aarch64
depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
select BR2_TOOLCHAIN_EXTERNAL_GLIBC
@@ -754,8 +754,8 @@ config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_13_07
Toolchain for the AArch64 architecture, from
http://www.linaro.org/engineering/armv8/
-config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_13_06
- bool "Linaro AArch64 13.04"
+config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_13_07
+ bool "Linaro AArch64 13.07"
depends on BR2_aarch64
depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
select BR2_TOOLCHAIN_EXTERNAL_GLIBC
@@ -824,9 +824,9 @@ config BR2_TOOLCHAIN_EXTERNAL_PREFIX
default "arm-none-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201305
default "arm-arago-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV7A_201109
default "arm-arago-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE_201109
+ default "aarch64-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_13_09
default "aarch64-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_13_08
default "aarch64-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_13_07
- default "aarch64-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_13_06
default "microblazeel-unknown-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_XILINX_MICROBLAZEEL_14_3
default "microblazeel-unknown-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_XILINX_MICROBLAZEEL_V2
default "microblaze-unknown-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_XILINX_MICROBLAZEBE_14_3
diff --git a/toolchain/toolchain-external/toolchain-external.mk b/toolchain/toolchain-external/toolchain-external.mk
index e38ee48..73a761b 100644
--- a/toolchain/toolchain-external/toolchain-external.mk
+++ b/toolchain/toolchain-external/toolchain-external.mk
@@ -310,15 +310,15 @@ TOOLCHAIN_EXTERNAL_SOURCE = lin32-microblaze-unknown-linux-gnu_14.3_early.tar.xz
else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_XILINX_MICROBLAZEBE_V2),y)
TOOLCHAIN_EXTERNAL_SITE = http://sources.buildroot.net/
TOOLCHAIN_EXTERNAL_SOURCE = microblaze-unknown-linux-gnu.tgz
-else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_13_06),y)
-TOOLCHAIN_EXTERNAL_SITE = https://releases.linaro.org/13.06/components/toolchain/binaries/
-TOOLCHAIN_EXTERNAL_SOURCE = gcc-linaro-aarch64-linux-gnu-4.8-2013.06_linux.tar.xz
else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_13_07),y)
TOOLCHAIN_EXTERNAL_SITE = http://releases.linaro.org/13.07/components/toolchain/binaries/
TOOLCHAIN_EXTERNAL_SOURCE = gcc-linaro-aarch64-linux-gnu-4.8-2013.07-1_linux.tar.xz
else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_13_08),y)
TOOLCHAIN_EXTERNAL_SITE = http://releases.linaro.org/13.08/components/toolchain/binaries/
TOOLCHAIN_EXTERNAL_SOURCE = gcc-linaro-aarch64-linux-gnu-4.8-2013.08_linux.tar.xz
+else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_13_09),y)
+TOOLCHAIN_EXTERNAL_SITE = http://releases.linaro.org/13.09/components/toolchain/binaries/
+TOOLCHAIN_EXTERNAL_SOURCE = gcc-linaro-aarch64-linux-gnu-4.8-2013.09_linux.tar.xz
else
# Custom toolchain
TOOLCHAIN_EXTERNAL_SITE = $(dir $(call qstrip,$(BR2_TOOLCHAIN_EXTERNAL_URL)))
--
1.8.1.2
^ permalink raw reply related [flat|nested] 28+ messages in thread* [Buildroot] [PATCHv2 20/21] toolchain-external: improve target library copy logic
2013-10-06 14:19 [Buildroot] [PATCHv2 00/21] Toolchain updates: package infra, musl support, Linaro updates Thomas Petazzoni
` (18 preceding siblings ...)
2013-10-06 14:19 ` [Buildroot] [PATCHv2 19/21] toolchain-external: update Linaro AArch64 toolchain Thomas Petazzoni
@ 2013-10-06 14:19 ` Thomas Petazzoni
2013-10-06 14:19 ` [Buildroot] [PATCHv2 21/21] toolchain-external: fix Linaro ARM toolchain support Thomas Petazzoni
20 siblings, 0 replies; 28+ messages in thread
From: Thomas Petazzoni @ 2013-10-06 14:19 UTC (permalink / raw)
To: buildroot
The copy_toolchain_lib_root function is responsible for copying a
given library (and its symbolic link) to the target filesystem. To do
so, it looks for the library in various locations, and then iterates
over the symbolic link all the way to the library, copying them as
needed to the target filesystem.
However, the latest Linaro toolchains bring an interesting use case:
the lib/ directory in the toolchain is organized as follows:
- ld-linux.so.3 -> arm-linux-gnueabi/ld-2.17...so
- ld-linux-armhf.so.3 -> arm-linux-gnueabihf/ld-2.17...so
- arm-linux-gnueabi/
- all ARMv4T soft float libraries
- arm-linux-gnueabihf/
- all ARMv7 hard float libraries
In order to match what we do with all other toolchains, we want all
those libraries and symbolic links to be copied directly under
$(TARGET_DIR)/lib. This commit does that by adjusting the copy logic.
This is part of the fix for bug #6452 (eglibc from Linaro 2013.07 not
copied to target correctly).
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
toolchain/toolchain-external/helpers.mk | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/toolchain/toolchain-external/helpers.mk b/toolchain/toolchain-external/helpers.mk
index e7d38f2..775a9e4 100644
--- a/toolchain/toolchain-external/helpers.mk
+++ b/toolchain/toolchain-external/helpers.mk
@@ -59,21 +59,24 @@ copy_toolchain_lib_root = \
break ; \
fi \
done ; \
+ mkdir -p $(TARGET_DIR)/$${DESTDIR}; \
for LIBPATH in $${LIBSPATH} ; do \
- LIBNAME=`basename $${LIBPATH}`; \
- LIBDIR=`dirname $${LIBPATH}` ; \
- while test \! -z "$${LIBNAME}" ; do \
- LIBPATH=$${LIBDIR}/$${LIBNAME} ; \
+ while true ; do \
+ LIBNAME=`basename $${LIBPATH}`; \
+ LIBDIR=`dirname $${LIBPATH}` ; \
+ LINKTARGET=`readlink $${LIBPATH}` ; \
rm -fr $(TARGET_DIR)/$${DESTDIR}/$${LIBNAME}; \
- mkdir -p $(TARGET_DIR)/$${DESTDIR}; \
if test -h $${LIBPATH} ; then \
- cp -d $${LIBPATH} $(TARGET_DIR)/$${DESTDIR}/; \
+ ln -sf `basename $${LINKTARGET}` $(TARGET_DIR)/$${DESTDIR}/$${LIBNAME} ; \
elif test -f $${LIBPATH}; then \
$(INSTALL) -D -m0755 $${LIBPATH} $(TARGET_DIR)/$${DESTDIR}/$${LIBNAME}; \
else \
exit -1; \
fi; \
- LIBNAME="`readlink $${LIBPATH}`"; \
+ if test -z "$${LINKTARGET}" ; then \
+ break ; \
+ fi ; \
+ LIBPATH="`readlink -f $${LIBPATH}`"; \
done; \
done; \
\
--
1.8.1.2
^ permalink raw reply related [flat|nested] 28+ messages in thread* [Buildroot] [PATCHv2 21/21] toolchain-external: fix Linaro ARM toolchain support
2013-10-06 14:19 [Buildroot] [PATCHv2 00/21] Toolchain updates: package infra, musl support, Linaro updates Thomas Petazzoni
` (19 preceding siblings ...)
2013-10-06 14:19 ` [Buildroot] [PATCHv2 20/21] toolchain-external: improve target library copy logic Thomas Petazzoni
@ 2013-10-06 14:19 ` Thomas Petazzoni
20 siblings, 0 replies; 28+ messages in thread
From: Thomas Petazzoni @ 2013-10-06 14:19 UTC (permalink / raw)
To: buildroot
This commit fixes bug #6452 (eglibc from Linaro 2013.07 not copied to
target correctly) by:
* Copying only the relevant library loader to the target on ARMhf
(i.e ld-linux-armhf.so and not ld.so*). This is needed since Linaro
toolchains provide two library loaders, one ARMv7 hf, and one ARMv4
soft-float.
* Making sure a $(TARGET_DIR)/lib/arm-linux-gnueabihf/ symbolic link
to $(TARGET_DIR)/lib/ exists, since the dynamic loader of Linaro
toolchains expects libraries to be found in
$(TARGET_DIR)/lib/arm-linux-gnueabihf/.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
toolchain/toolchain-external/toolchain-external.mk | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/toolchain/toolchain-external/toolchain-external.mk b/toolchain/toolchain-external/toolchain-external.mk
index 73a761b..b5b1ce7 100644
--- a/toolchain/toolchain-external/toolchain-external.mk
+++ b/toolchain/toolchain-external/toolchain-external.mk
@@ -55,7 +55,12 @@
# of Buildroot is handled identical for the 2 toolchain types.
ifeq ($(BR2_TOOLCHAIN_EXTERNAL_GLIBC)$(BR2_TOOLCHAIN_EXTERNAL_UCLIBC),y)
-LIB_EXTERNAL_LIBS+=ld*.so.* libc.so.* libcrypt.so.* libdl.so.* libgcc_s.so.* libm.so.* libnsl.so.* libresolv.so.* librt.so.* libutil.so.*
+LIB_EXTERNAL_LIBS+=libc.so.* libcrypt.so.* libdl.so.* libgcc_s.so.* libm.so.* libnsl.so.* libresolv.so.* librt.so.* libutil.so.*
+ifeq ($(BR2_ARM_EABIHF),y)
+LIB_EXTERNAL_LIBS+=ld-linux-armhf.so.*
+else
+LIB_EXTERNAL_LIBS+=ld*.so.*
+endif
ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
LIB_EXTERNAL_LIBS+=libpthread.so.*
ifneq ($(BR2_PACKAGE_GDB_SERVER)$(BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY),)
@@ -216,6 +221,13 @@ TOOLCHAIN_EXTERNAL_CFLAGS += -msoft-float
TOOLCHAIN_EXTERNAL_WRAPPER_ARGS += -DBR_SOFTFLOAT=1
endif
+# The Linaro ARMhf toolchain expects the libraries in
+# /lib/arm-linux-gnueabihf, but Buildroot copies them to /lib, so we
+# need to create a symbolic link.
+define TOOLCHAIN_EXTERNAL_LINARO_ARMHF_SYMLINK
+ ln -sf . $(TARGET_DIR)/lib/arm-linux-gnueabihf
+endef
+
ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201109),y)
TOOLCHAIN_EXTERNAL_SITE = http://sourcery.mentor.com/public/gnu_toolchain/arm-none-linux-gnueabi/
TOOLCHAIN_EXTERNAL_SOURCE = arm-2011.09-70-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
@@ -242,12 +254,15 @@ endef
else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_LINARO_2013_07),y)
TOOLCHAIN_EXTERNAL_SITE = http://releases.linaro.org/13.07/components/toolchain/binaries/
TOOLCHAIN_EXTERNAL_SOURCE = gcc-linaro-arm-linux-gnueabihf-4.8-2013.07-1_linux.tar.xz
+TOOLCHAIN_EXTERNAL_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_EXTERNAL_LINARO_ARMHF_SYMLINK
else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_LINARO_2013_08),y)
TOOLCHAIN_EXTERNAL_SITE = http://releases.linaro.org/13.08/components/toolchain/binaries/
TOOLCHAIN_EXTERNAL_SOURCE = gcc-linaro-arm-linux-gnueabihf-4.8-2013.08_linux.tar.xz
+TOOLCHAIN_EXTERNAL_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_EXTERNAL_LINARO_ARMHF_SYMLINK
else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_LINARO_2013_09),y)
TOOLCHAIN_EXTERNAL_SITE = http://releases.linaro.org/13.09/components/toolchain/binaries/
TOOLCHAIN_EXTERNAL_SOURCE = gcc-linaro-arm-linux-gnueabihf-4.8-2013.09_linux.tar.xz
+TOOLCHAIN_EXTERNAL_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_EXTERNAL_LINARO_ARMHF_SYMLINK
else ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201203),y)
TOOLCHAIN_EXTERNAL_SITE = http://sourcery.mentor.com/public/gnu_toolchain/mips-linux-gnu/
TOOLCHAIN_EXTERNAL_SOURCE = mips-2012.03-63-mips-linux-gnu-i686-pc-linux-gnu.tar.bz2
--
1.8.1.2
^ permalink raw reply related [flat|nested] 28+ messages in thread