* [Buildroot] [PATCH 0/5] Preparatory work on toolchains - v2
@ 2010-06-25 22:15 Yann E. MORIN
2010-06-25 22:15 ` [Buildroot] [PATCH 1/5] toolchain: move helper functions from external toolchain Yann E. MORIN
` (4 more replies)
0 siblings, 5 replies; 11+ messages in thread
From: Yann E. MORIN @ 2010-06-25 22:15 UTC (permalink / raw)
To: buildroot
Hello All!
These are preparatory work on toolchain, laying ground to later add
crosstool-NG as a backend. Currently, these are rather an RFC, even
if it works OK for me.
Changes since v1:
- rebased against latest tree
- patches formatted to detect renames/copies
Yann E. MORIN (5):
toolchain: move helper functions from external toolchain
toolchain: rename external toolchain dir
toolchain: move makefile includes
toolchain: move buildroot config files
toolchain: rename base target for external toolchains
Makefile | 17 +-
toolchain/Config.in | 16 +-
toolchain/external-toolchain/ext-tool.mk | 322 ------
toolchain/helpers.mk | 217 ++++
toolchain/toolchain-buildroot.mk | 14 +
toolchain/{Config.in.1 => toolchain-buildroot/Config.in} | 2 +-
toolchain/toolchain-buildroot/Config.in.2 | 37 +
toolchain/{Config.in.2 => toolchain-common.in} | 46 +-
toolchain/toolchain-external.mk | 16 +
toolchain/{external-toolchain => toolchain-external}/Config.in | 0
toolchain/{external-toolchain => toolchain-external}/Config.in.2 | 0
toolchain/toolchain-external/ext-tool.mk | 108 ++
12 files changed, 410 insertions(+), 385 deletions(-)
^ permalink raw reply [flat|nested] 11+ messages in thread* [Buildroot] [PATCH 1/5] toolchain: move helper functions from external toolchain 2010-06-25 22:15 [Buildroot] [PATCH 0/5] Preparatory work on toolchains - v2 Yann E. MORIN @ 2010-06-25 22:15 ` Yann E. MORIN 2010-06-25 22:15 ` [Buildroot] [PATCH 2/5] toolchain: rename external toolchain dir Yann E. MORIN ` (3 subsequent siblings) 4 siblings, 0 replies; 11+ messages in thread From: Yann E. MORIN @ 2010-06-25 22:15 UTC (permalink / raw) To: buildroot The helper functions used for external toolchains may also be useful to alternate toolchain backends (currently, the external toolchain is the sole user). Signed-off-by: Yann E. MORIN <yann.morin.1998@anciens.enib.fr> --- Makefile | 1 + toolchain/external-toolchain/ext-tool.mk | 214 ----------------------------- toolchain/helpers.mk | 217 ++++++++++++++++++++++++++++++ 3 files changed, 218 insertions(+), 214 deletions(-) create mode 100644 toolchain/helpers.mk diff --git a/Makefile b/Makefile index 09be31b..fe320df 100644 --- a/Makefile +++ b/Makefile @@ -306,6 +306,7 @@ include toolchain/mklibs/mklibs.mk include toolchain/sstrip/sstrip.mk include toolchain/uClibc/uclibc.mk else ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y) +include toolchain/helpers.mk include toolchain/*/*.mk endif diff --git a/toolchain/external-toolchain/ext-tool.mk b/toolchain/external-toolchain/ext-tool.mk index 8daae15..c8e7892 100644 --- a/toolchain/external-toolchain/ext-tool.mk +++ b/toolchain/external-toolchain/ext-tool.mk @@ -35,220 +35,6 @@ # cross-compiler binaries remains external, all libraries and headers # are imported into the Buildroot tree. -# -# Copy a toolchain library and its symbolic links from the sysroot -# directory to the target directory. Also optionaly strips the -# library. -# -# $1: arch specific sysroot directory -# $2: library name -# $3: destination directory -# $4: strip (y|n), default is to strip -# -copy_toolchain_lib_root = \ - ARCH_SYSROOT_DIR="$(strip $1)"; \ - LIB="$(strip $2)"; \ - STRIP="$(strip $4)"; \ - \ - LIBS=`(cd $${ARCH_SYSROOT_DIR}; find . -path "./lib/$${LIB}.*" -o -path "./usr/lib/$${LIB}.*")` ; \ - for FILE in $${LIBS} ; do \ - LIB=`basename $${FILE}`; \ - LIBDIR=`dirname $${FILE}` ; \ - while test \! -z "$${LIB}"; do \ - FULLPATH="$${ARCH_SYSROOT_DIR}/$${LIBDIR}/$${LIB}" ; \ - rm -fr $(TARGET_DIR)/$${LIBDIR}/$${LIB}; \ - mkdir -p $(TARGET_DIR)/$${LIBDIR}; \ - if test -h $${FULLPATH} ; then \ - cp -d $${FULLPATH} $(TARGET_DIR)/$${LIBDIR}/; \ - elif test -f $${FULLPATH}; then \ - $(INSTALL) -D -m0755 $${FULLPATH} $(TARGET_DIR)/$${LIBDIR}/$${LIB}; \ - case "$${STRIP}" in \ - (0 | n | no) \ -;; \ - (*) \ - $(TARGET_CROSS)strip "$(TARGET_DIR)/$${LIBDIR}/$${LIB}"; \ -;; \ - esac; \ - else \ - exit -1; \ - fi; \ - LIB="`readlink $${FULLPATH}`"; \ - done; \ - done; \ - \ - echo -n - -# -# Copy the full external toolchain sysroot directory to the staging -# dir. The operation of this function is rendered a little bit -# complicated by the support for multilib toolchains. -# -# We start by copying etc, lib, sbin and usr from the sysroot of the -# selected architecture variant (as pointed by ARCH_SYSROOT_DIR). This -# allows to import into the staging directory the C library and -# companion libraries for the correct architecture variant. We -# explictly only copy etc, lib, sbin and usr since other directories -# might exist for other architecture variants (on Codesourcery -# toolchain, the sysroot for the default architecture variant contains -# the armv4t and thumb2 subdirectories, which are the sysroot for the -# corresponding architecture variants), and we don't want to import -# them. -# -# Then, if the selected architecture variant is not the default one -# (i.e, if SYSROOT_DIR != ARCH_SYSROOT_DIR), then we : -# -# * Import the header files from the default architecture -# variant. Header files are typically shared between the sysroots -# for the different architecture variants. If we use the -# non-default one, header files were not copied by the previous -# step, so we copy them here from the sysroot of the default -# architecture variant. -# -# * Create a symbolic link that matches the name of the subdirectory -# for the architecture variant in the original sysroot. This is -# required as the compiler will by default look in -# sysroot_dir/arch_variant/ for libraries and headers, when the -# non-default architecture variant is used. Without this, the -# compiler fails to find libraries and headers. -# -# $1: main sysroot directory of the toolchain -# $2: arch specific sysroot directory of the toolchain -# $3: arch specific subdirectory in the sysroot -# -copy_toolchain_sysroot = \ - SYSROOT_DIR="$(strip $1)"; \ - ARCH_SYSROOT_DIR="$(strip $2)"; \ - ARCH_SUBDIR="$(strip $3)"; \ - for i in etc lib sbin usr ; do \ - cp -a $${ARCH_SYSROOT_DIR}/$$i $(STAGING_DIR)/ ; \ - done ; \ - if [ `readlink -f $${SYSROOT_DIR}` != `readlink -f $${ARCH_SYSROOT_DIR}` ] ; then \ - if [ ! -d $${ARCH_SYSROOT_DIR}/usr/include ] ; then \ - cp -a $${SYSROOT_DIR}/usr/include $(STAGING_DIR)/usr ; \ - fi ; \ - ln -s . $(STAGING_DIR)/$(ARCH_SUBDIR) ; \ - fi ; \ - find $(STAGING_DIR) -type d | xargs chmod 755 - -# -# Check the availability of a particular glibc feature. We assume that -# all Buildroot toolchain options are supported by glibc, so we just -# check that they are enabled. -# -# $1: Buildroot option name -# $2: feature description -# -check_glibc_feature = \ - if [ x$($(1)) != x"y" ] ; then \ - echo "$(2) available in C library, please enable $(1)" ; \ - exit 1 ; \ - fi - -# -# Check the correctness of a glibc external toolchain configuration. -# 1. Check that the C library selected in Buildroot matches the one -# of the external toolchain -# 2. Check that all the C library-related features are enabled in the -# config, since glibc always supports all of them -# -# $1: sysroot directory -# -check_glibc = \ - SYSROOT_DIR="$(strip $1)"; \ - if ! test -f $${SYSROOT_DIR}/lib/ld-linux.so.* ; then \ - echo "Incorrect selection of the C library"; \ - exit -1; \ - fi; \ - $(call check_glibc_feature,BR2_LARGEFILE,Large file support) ;\ - $(call check_glibc_feature,BR2_INET_IPV6,IPv6 support) ;\ - $(call check_glibc_feature,BR2_INET_RPC,RPC support) ;\ - $(call check_glibc_feature,BR2_ENABLE_LOCALE,Locale support) ;\ - $(call check_glibc_feature,BR2_USE_WCHAR,Wide char support) ;\ - $(call check_glibc_feature,BR2_PROGRAM_INVOCATION,Program invocation support) - -# -# Check the conformity of Buildroot configuration with regard to the -# uClibc configuration of the external toolchain, for a particular -# feature. -# -# $1: uClibc macro name -# $2: Buildroot option name -# $3: uClibc config file -# $4: feature description -# -check_uclibc_feature = \ - IS_IN_LIBC=`grep -q "\#define $(1) 1" $(3) && echo y` ; \ - if [ x$($(2)) != x"y" -a x$${IS_IN_LIBC} == x"y" ] ; then \ - echo "$(4) available in C library, please enable $(2)" ; \ - exit 1 ; \ - fi ; \ - if [ x$($(2)) == x"y" -a x$${IS_IN_LIBC} != x"y" ] ; then \ - echo "$(4) not available in C library, please disable $(2)" ; \ - exit 1 ; \ - fi - -# -# Check the correctness of a uclibc external toolchain configuration -# 1. Check that the C library selected in Buildroot matches the one -# of the external toolchain -# 2. Check that the features enabled in the Buildroot configuration -# match the features available in the uClibc of the external -# toolchain -# -# $1: sysroot directory -# -check_uclibc = \ - SYSROOT_DIR="$(strip $1)"; \ - if ! test -f $${SYSROOT_DIR}/lib/ld-uClibc.so.* ; then \ - echo "Incorrect selection of the C library"; \ - exit -1; \ - fi; \ - UCLIBC_CONFIG_FILE=$${SYSROOT_DIR}/usr/include/bits/uClibc_config.h ; \ - $(call check_uclibc_feature,__UCLIBC_HAS_LFS__,BR2_LARGEFILE,$${UCLIBC_CONFIG_FILE},Large file support) ;\ - $(call check_uclibc_feature,__UCLIBC_HAS_IPV6__,BR2_INET_IPV6,$${UCLIBC_CONFIG_FILE},IPv6 support) ;\ - $(call check_uclibc_feature,__UCLIBC_HAS_RPC__,BR2_INET_RPC,$${UCLIBC_CONFIG_FILE},RPC support) ;\ - $(call check_uclibc_feature,__UCLIBC_HAS_LOCALE__,BR2_ENABLE_LOCALE,$${UCLIBC_CONFIG_FILE},Locale support) ;\ - $(call check_uclibc_feature,__UCLIBC_HAS_WCHAR__,BR2_USE_WCHAR,$${UCLIBC_CONFIG_FILE},Wide char support) ;\ - $(call check_uclibc_feature,__UCLIBC_HAS_PROGRAM_INVOCATION_NAME__,BR2_PROGRAM_INVOCATION,$${UCLIBC_CONFIG_FILE},Program invocation support) ;\ - -# -# Check that the Buildroot configuration of the ABI matches the -# configuration of the external toolchain. -# -check_arm_abi = \ - EXT_TOOLCHAIN_TARGET=$(shell LANG=C $(TARGET_CC) -v 2>&1 | grep ^Target | cut -f2 -d ' ') ; \ - if echo $${EXT_TOOLCHAIN_TARGET} | grep -q 'eabi$$' ; then \ - EXT_TOOLCHAIN_ABI="eabi" ; \ - else \ - EXT_TOOLCHAIN_ABI="oabi" ; \ - fi ; \ - if [ x$(BR2_ARM_OABI) == x"y" -a $${EXT_TOOLCHAIN_ABI} == "eabi" ] ; then \ - echo "Incorrect ABI setting" ; \ - exit 1 ; \ - fi ; \ - if [ x$(BR2_ARM_EABI) == x"y" -a $${EXT_TOOLCHAIN_ABI} == "oabi" ] ; then \ - echo "Incorrect ABI setting" ; \ - exit 1 ; \ - fi ; \ - -# -# Check that the external toolchain supports C++ -# -check_cplusplus = \ - if ! test -x $(TARGET_CXX) ; then \ - echo "BR2_INSTALL_LIBSTDCPP is selected but C++ support not available in external toolchain" ; \ - exit 1 ; \ - fi ; \ - -# -# Check that the cross-compiler given in the configuration exists -# -check_cross_compiler_exists = \ - if ! test -x $(TARGET_CC) ; then \ - echo "Cannot find cross-compiler $(TARGET_CC)" ; \ - exit 1 ; \ - fi ; \ - uclibc: dependencies $(STAMP_DIR)/ext-toolchain-installed EXTERNAL_LIBS=libc.so libcrypt.so libdl.so libgcc_s.so libm.so libnsl.so libresolv.so librt.so libutil.so diff --git a/toolchain/helpers.mk b/toolchain/helpers.mk new file mode 100644 index 0000000..2c7d34c --- /dev/null +++ b/toolchain/helpers.mk @@ -0,0 +1,217 @@ +# This Makefile fragment declares helper functions, usefull to handle +# non- buildroot-built toolchains, eg. purely external toolchains or +# toolchains (internally) built using crosstool-NG. + +# +# Copy a toolchain library and its symbolic links from the sysroot +# directory to the target directory. Also optionaly strips the +# library. +# +# $1: arch specific sysroot directory +# $2: library name +# $3: destination directory +# $4: strip (y|n), default is to strip +# +copy_toolchain_lib_root = \ + ARCH_SYSROOT_DIR="$(strip $1)"; \ + LIB="$(strip $2)"; \ + STRIP="$(strip $4)"; \ + \ + LIBS=`(cd $${ARCH_SYSROOT_DIR}; find . -path "./lib/$${LIB}.*" -o -path "./usr/lib/$${LIB}.*")` ; \ + for FILE in $${LIBS} ; do \ + LIB=`basename $${FILE}`; \ + LIBDIR=`dirname $${FILE}` ; \ + while test \! -z "$${LIB}"; do \ + FULLPATH="$${ARCH_SYSROOT_DIR}/$${LIBDIR}/$${LIB}" ; \ + rm -fr $(TARGET_DIR)/$${LIBDIR}/$${LIB}; \ + mkdir -p $(TARGET_DIR)/$${LIBDIR}; \ + if test -h $${FULLPATH} ; then \ + cp -d $${FULLPATH} $(TARGET_DIR)/$${LIBDIR}/; \ + elif test -f $${FULLPATH}; then \ + $(INSTALL) -D -m0755 $${FULLPATH} $(TARGET_DIR)/$${LIBDIR}/$${LIB}; \ + case "$${STRIP}" in \ + (0 | n | no) \ +;; \ + (*) \ + $(TARGET_CROSS)strip "$(TARGET_DIR)/$${LIBDIR}/$${LIB}"; \ +;; \ + esac; \ + else \ + exit -1; \ + fi; \ + LIB="`readlink $${FULLPATH}`"; \ + done; \ + done; \ + \ + echo -n + +# +# Copy the full external toolchain sysroot directory to the staging +# dir. The operation of this function is rendered a little bit +# complicated by the support for multilib toolchains. +# +# We start by copying etc, lib, sbin and usr from the sysroot of the +# selected architecture variant (as pointed by ARCH_SYSROOT_DIR). This +# allows to import into the staging directory the C library and +# companion libraries for the correct architecture variant. We +# explictly only copy etc, lib, sbin and usr since other directories +# might exist for other architecture variants (on Codesourcery +# toolchain, the sysroot for the default architecture variant contains +# the armv4t and thumb2 subdirectories, which are the sysroot for the +# corresponding architecture variants), and we don't want to import +# them. +# +# Then, if the selected architecture variant is not the default one +# (i.e, if SYSROOT_DIR != ARCH_SYSROOT_DIR), then we : +# +# * Import the header files from the default architecture +# variant. Header files are typically shared between the sysroots +# for the different architecture variants. If we use the +# non-default one, header files were not copied by the previous +# step, so we copy them here from the sysroot of the default +# architecture variant. +# +# * Create a symbolic link that matches the name of the subdirectory +# for the architecture variant in the original sysroot. This is +# required as the compiler will by default look in +# sysroot_dir/arch_variant/ for libraries and headers, when the +# non-default architecture variant is used. Without this, the +# compiler fails to find libraries and headers. +# +# $1: main sysroot directory of the toolchain +# $2: arch specific sysroot directory of the toolchain +# $3: arch specific subdirectory in the sysroot +# +copy_toolchain_sysroot = \ + SYSROOT_DIR="$(strip $1)"; \ + ARCH_SYSROOT_DIR="$(strip $2)"; \ + ARCH_SUBDIR="$(strip $3)"; \ + for i in etc lib sbin usr ; do \ + cp -a $${ARCH_SYSROOT_DIR}/$$i $(STAGING_DIR)/ ; \ + done ; \ + if [ `readlink -f $${SYSROOT_DIR}` != `readlink -f $${ARCH_SYSROOT_DIR}` ] ; then \ + if [ ! -d $${ARCH_SYSROOT_DIR}/usr/include ] ; then \ + cp -a $${SYSROOT_DIR}/usr/include $(STAGING_DIR)/usr ; \ + fi ; \ + ln -s . $(STAGING_DIR)/$(ARCH_SUBDIR) ; \ + fi ; \ + find $(STAGING_DIR) -type d | xargs chmod 755 + +# +# Check the availability of a particular glibc feature. We assume that +# all Buildroot toolchain options are supported by glibc, so we just +# check that they are enabled. +# +# $1: Buildroot option name +# $2: feature description +# +check_glibc_feature = \ + if [ x$($(1)) != x"y" ] ; then \ + echo "$(2) available in C library, please enable $(1)" ; \ + exit 1 ; \ + fi + +# +# Check the correctness of a glibc external toolchain configuration. +# 1. Check that the C library selected in Buildroot matches the one +# of the external toolchain +# 2. Check that all the C library-related features are enabled in the +# config, since glibc always supports all of them +# +# $1: sysroot directory +# +check_glibc = \ + SYSROOT_DIR="$(strip $1)"; \ + if ! test -f $${SYSROOT_DIR}/lib/ld-linux.so.* ; then \ + echo "Incorrect selection of the C library"; \ + exit -1; \ + fi; \ + $(call check_glibc_feature,BR2_LARGEFILE,Large file support) ;\ + $(call check_glibc_feature,BR2_INET_IPV6,IPv6 support) ;\ + $(call check_glibc_feature,BR2_INET_RPC,RPC support) ;\ + $(call check_glibc_feature,BR2_ENABLE_LOCALE,Locale support) ;\ + $(call check_glibc_feature,BR2_USE_WCHAR,Wide char support) ;\ + $(call check_glibc_feature,BR2_PROGRAM_INVOCATION,Program invocation support) + +# +# Check the conformity of Buildroot configuration with regard to the +# uClibc configuration of the external toolchain, for a particular +# feature. +# +# $1: uClibc macro name +# $2: Buildroot option name +# $3: uClibc config file +# $4: feature description +# +check_uclibc_feature = \ + IS_IN_LIBC=`grep -q "\#define $(1) 1" $(3) && echo y` ; \ + if [ x$($(2)) != x"y" -a x$${IS_IN_LIBC} == x"y" ] ; then \ + echo "$(4) available in C library, please enable $(2)" ; \ + exit 1 ; \ + fi ; \ + if [ x$($(2)) == x"y" -a x$${IS_IN_LIBC} != x"y" ] ; then \ + echo "$(4) not available in C library, please disable $(2)" ; \ + exit 1 ; \ + fi + +# +# Check the correctness of a uclibc external toolchain configuration +# 1. Check that the C library selected in Buildroot matches the one +# of the external toolchain +# 2. Check that the features enabled in the Buildroot configuration +# match the features available in the uClibc of the external +# toolchain +# +# $1: sysroot directory +# +check_uclibc = \ + SYSROOT_DIR="$(strip $1)"; \ + if ! test -f $${SYSROOT_DIR}/lib/ld-uClibc.so.* ; then \ + echo "Incorrect selection of the C library"; \ + exit -1; \ + fi; \ + UCLIBC_CONFIG_FILE=$${SYSROOT_DIR}/usr/include/bits/uClibc_config.h ; \ + $(call check_uclibc_feature,__UCLIBC_HAS_LFS__,BR2_LARGEFILE,$${UCLIBC_CONFIG_FILE},Large file support) ;\ + $(call check_uclibc_feature,__UCLIBC_HAS_IPV6__,BR2_INET_IPV6,$${UCLIBC_CONFIG_FILE},IPv6 support) ;\ + $(call check_uclibc_feature,__UCLIBC_HAS_RPC__,BR2_INET_RPC,$${UCLIBC_CONFIG_FILE},RPC support) ;\ + $(call check_uclibc_feature,__UCLIBC_HAS_LOCALE__,BR2_ENABLE_LOCALE,$${UCLIBC_CONFIG_FILE},Locale support) ;\ + $(call check_uclibc_feature,__UCLIBC_HAS_WCHAR__,BR2_USE_WCHAR,$${UCLIBC_CONFIG_FILE},Wide char support) ;\ + $(call check_uclibc_feature,__UCLIBC_HAS_PROGRAM_INVOCATION_NAME__,BR2_PROGRAM_INVOCATION,$${UCLIBC_CONFIG_FILE},Program invocation support) ;\ + +# +# Check that the Buildroot configuration of the ABI matches the +# configuration of the external toolchain. +# +check_arm_abi = \ + EXT_TOOLCHAIN_TARGET=$(shell LANG=C $(TARGET_CC) -v 2>&1 | grep ^Target | cut -f2 -d ' ') ; \ + if echo $${EXT_TOOLCHAIN_TARGET} | grep -q 'eabi$$' ; then \ + EXT_TOOLCHAIN_ABI="eabi" ; \ + else \ + EXT_TOOLCHAIN_ABI="oabi" ; \ + fi ; \ + if [ x$(BR2_ARM_OABI) == x"y" -a $${EXT_TOOLCHAIN_ABI} == "eabi" ] ; then \ + echo "Incorrect ABI setting" ; \ + exit 1 ; \ + fi ; \ + if [ x$(BR2_ARM_EABI) == x"y" -a $${EXT_TOOLCHAIN_ABI} == "oabi" ] ; then \ + echo "Incorrect ABI setting" ; \ + exit 1 ; \ + fi ; \ + +# +# Check that the external toolchain supports C++ +# +check_cplusplus = \ + if ! test -x $(TARGET_CXX) ; then \ + echo "BR2_INSTALL_LIBSTDCPP is selected but C++ support not available in external toolchain" ; \ + exit 1 ; \ + fi ; \ + +# +# Check that the cross-compiler given in the configuration exists +# +check_cross_compiler_exists = \ + if ! test -x $(TARGET_CC) ; then \ + echo "Cannot find cross-compiler $(TARGET_CC)" ; \ + exit 1 ; \ + fi ; \ -- 1.7.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH 2/5] toolchain: rename external toolchain dir 2010-06-25 22:15 [Buildroot] [PATCH 0/5] Preparatory work on toolchains - v2 Yann E. MORIN 2010-06-25 22:15 ` [Buildroot] [PATCH 1/5] toolchain: move helper functions from external toolchain Yann E. MORIN @ 2010-06-25 22:15 ` Yann E. MORIN 2010-06-25 22:15 ` [Buildroot] [PATCH 3/5] toolchain: move makefile includes Yann E. MORIN ` (2 subsequent siblings) 4 siblings, 0 replies; 11+ messages in thread From: Yann E. MORIN @ 2010-06-25 22:15 UTC (permalink / raw) To: buildroot Rename the external toolchain directory. When new backends are here, it will be easier to sort them out if they are all prefixed the same way. Signed-off-by: Yann E. MORIN <yann.morin.1998@anciens.enib.fr> --- toolchain/Config.in | 4 ++-- .../Config.in | 0 .../Config.in.2 | 0 .../ext-tool.mk | 0 4 files changed, 2 insertions(+), 2 deletions(-) rename toolchain/{external-toolchain => toolchain-external}/Config.in (100%) rename toolchain/{external-toolchain => toolchain-external}/Config.in.2 (100%) rename toolchain/{external-toolchain => toolchain-external}/ext-tool.mk (100%) diff --git a/toolchain/Config.in b/toolchain/Config.in index ee94143..52b9d8b 100644 --- a/toolchain/Config.in +++ b/toolchain/Config.in @@ -17,7 +17,7 @@ config BR2_TOOLCHAIN_EXTERNAL endchoice source "toolchain/Config.in.1" -source "toolchain/external-toolchain/Config.in" +source "toolchain/toolchain-external/Config.in" # we want gdb config in the middle of both source and external # toolchains, but mconf won't let us source the same file twice, @@ -26,6 +26,6 @@ source "toolchain/gdb/Config.in" comment "Common Toolchain Options" source "toolchain/Config.in.2" -source "toolchain/external-toolchain/Config.in.2" +source "toolchain/toolchain-external/Config.in.2" endmenu diff --git a/toolchain/external-toolchain/Config.in b/toolchain/toolchain-external/Config.in similarity index 100% rename from toolchain/external-toolchain/Config.in rename to toolchain/toolchain-external/Config.in diff --git a/toolchain/external-toolchain/Config.in.2 b/toolchain/toolchain-external/Config.in.2 similarity index 100% rename from toolchain/external-toolchain/Config.in.2 rename to toolchain/toolchain-external/Config.in.2 diff --git a/toolchain/external-toolchain/ext-tool.mk b/toolchain/toolchain-external/ext-tool.mk similarity index 100% rename from toolchain/external-toolchain/ext-tool.mk rename to toolchain/toolchain-external/ext-tool.mk -- 1.7.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH 3/5] toolchain: move makefile includes 2010-06-25 22:15 [Buildroot] [PATCH 0/5] Preparatory work on toolchains - v2 Yann E. MORIN 2010-06-25 22:15 ` [Buildroot] [PATCH 1/5] toolchain: move helper functions from external toolchain Yann E. MORIN 2010-06-25 22:15 ` [Buildroot] [PATCH 2/5] toolchain: rename external toolchain dir Yann E. MORIN @ 2010-06-25 22:15 ` Yann E. MORIN 2010-06-27 21:06 ` Peter Korsgaard 2010-06-25 22:15 ` [Buildroot] [PATCH 4/5] toolchain: move buildroot config files Yann E. MORIN 2010-06-25 22:15 ` [Buildroot] [PATCH 5/5] toolchain: rename base target for external toolchains Yann E. MORIN 4 siblings, 1 reply; 11+ messages in thread From: Yann E. MORIN @ 2010-06-25 22:15 UTC (permalink / raw) To: buildroot Including a bunch of Makefiles with wildcard makes it impossible to add new toolchain backends. Avoid that by namely including needed files. Signed-off-by: Yann E. MORIN <yann.morin.1998@anciens.enib.fr> --- Makefile | 16 ++-------------- toolchain/toolchain-buildroot.mk | 14 ++++++++++++++ toolchain/toolchain-external.mk | 16 ++++++++++++++++ 3 files changed, 32 insertions(+), 14 deletions(-) create mode 100644 toolchain/toolchain-buildroot.mk create mode 100644 toolchain/toolchain-external.mk diff --git a/Makefile b/Makefile index fe320df..a167826 100644 --- a/Makefile +++ b/Makefile @@ -293,21 +293,9 @@ all: world # each selected package to TARGETS if that package was selected # in the .config file. ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y) -# avoid pulling in external toolchain which is broken for toplvl parallel builds -# Explicit ordering: -include toolchain/dependencies/dependencies.mk -include toolchain/binutils/binutils.mk -include toolchain/ccache/ccache.mk -include toolchain/elf2flt/elf2flt.mk -include toolchain/gcc/gcc-uclibc-4.x.mk -include toolchain/gdb/gdb.mk -include toolchain/kernel-headers/kernel-headers.mk -include toolchain/mklibs/mklibs.mk -include toolchain/sstrip/sstrip.mk -include toolchain/uClibc/uclibc.mk +include toolchain/toolchain-buildroot.mk else ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y) -include toolchain/helpers.mk -include toolchain/*/*.mk +include toolchain/toolchain-external.mk endif include package/*/*.mk diff --git a/toolchain/toolchain-buildroot.mk b/toolchain/toolchain-buildroot.mk new file mode 100644 index 0000000..1bf714b --- /dev/null +++ b/toolchain/toolchain-buildroot.mk @@ -0,0 +1,14 @@ +# Include files required for the internal toolchain backend + +# avoid pulling in external toolchain which is broken for toplvl parallel builds +# Explicit ordering: +include toolchain/dependencies/dependencies.mk +include toolchain/binutils/binutils.mk +include toolchain/ccache/ccache.mk +include toolchain/elf2flt/elf2flt.mk +include toolchain/gcc/gcc-uclibc-4.x.mk +include toolchain/gdb/gdb.mk +include toolchain/kernel-headers/kernel-headers.mk +include toolchain/mklibs/mklibs.mk +include toolchain/sstrip/sstrip.mk +include toolchain/uClibc/uclibc.mk diff --git a/toolchain/toolchain-external.mk b/toolchain/toolchain-external.mk new file mode 100644 index 0000000..6c00330 --- /dev/null +++ b/toolchain/toolchain-external.mk @@ -0,0 +1,16 @@ +# Required includes for the external toolchain backend + +# Explicit ordering: +include toolchain/helpers.mk +include toolchain/binutils/binutils.mk +include toolchain/ccache/ccache.mk +include toolchain/dependencies/dependencies.mk +include toolchain/elf2flt/elf2flt.mk +include toolchain/gcc/gcc-uclibc-3.x.mk +include toolchain/gcc/gcc-uclibc-4.x.mk +include toolchain/gdb/gdb.mk +include toolchain/toolchain-external/ext-tool.mk +include toolchain/mklibs/mklibs.mk +include toolchain/sstrip/sstrip.mk +include toolchain/toolchain-external/ext-tool.mk +include toolchain/uClibc/uclibc.mk -- 1.7.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH 3/5] toolchain: move makefile includes 2010-06-25 22:15 ` [Buildroot] [PATCH 3/5] toolchain: move makefile includes Yann E. MORIN @ 2010-06-27 21:06 ` Peter Korsgaard 2010-06-27 21:28 ` Yann E. MORIN 0 siblings, 1 reply; 11+ messages in thread From: Peter Korsgaard @ 2010-06-27 21:06 UTC (permalink / raw) To: buildroot >>>>> "Yann" == Yann E MORIN <yann.morin.1998@anciens.enib.fr> writes: Yann> Including a bunch of Makefiles with wildcard makes it impossible Yann> to add new toolchain backends. Avoid that by namely including Yann> needed files. Yann> --- /dev/null Yann> +++ b/toolchain/toolchain-buildroot.mk Yann> @@ -0,0 +1,14 @@ Yann> +# Include files required for the internal toolchain backend Yann> + Yann> +# avoid pulling in external toolchain which is broken for toplvl parallel builds Yann> +# Explicit ordering: Yann> +include toolchain/dependencies/dependencies.mk Yann> +include toolchain/binutils/binutils.mk Yann> +include toolchain/ccache/ccache.mk Yann> +include toolchain/elf2flt/elf2flt.mk Yann> +include toolchain/gcc/gcc-uclibc-4.x.mk Yann> +include toolchain/gdb/gdb.mk Yann> +include toolchain/kernel-headers/kernel-headers.mk Yann> +include toolchain/mklibs/mklibs.mk Yann> +include toolchain/sstrip/sstrip.mk Yann> +include toolchain/uClibc/uclibc.mk Yann> diff --git a/toolchain/toolchain-external.mk b/toolchain/toolchain-external.mk Yann> new file mode 100644 Yann> index 0000000..6c00330 Yann> --- /dev/null Yann> +++ b/toolchain/toolchain-external.mk Yann> @@ -0,0 +1,16 @@ Yann> +# Required includes for the external toolchain backend Yann> + Yann> +# Explicit ordering: Yann> +include toolchain/helpers.mk Yann> +include toolchain/binutils/binutils.mk Yann> +include toolchain/ccache/ccache.mk Yann> +include toolchain/dependencies/dependencies.mk Yann> +include toolchain/elf2flt/elf2flt.mk Yann> +include toolchain/gcc/gcc-uclibc-3.x.mk Yann> +include toolchain/gcc/gcc-uclibc-4.x.mk Yann> +include toolchain/gdb/gdb.mk Yann> +include toolchain/toolchain-external/ext-tool.mk Yann> +include toolchain/mklibs/mklibs.mk Yann> +include toolchain/sstrip/sstrip.mk Yann> +include toolchain/toolchain-external/ext-tool.mk Yann> +include toolchain/uClibc/uclibc.mk Why are the order of those includes not the same? gcc-uclibc-3.x.mk is gone. 2x toolchain-external/ext-tool.mk? Why do we need to include all these when using an external toolchain? Most of them doesn't seem to make sense to me. -- Bye, Peter Korsgaard ^ permalink raw reply [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH 3/5] toolchain: move makefile includes 2010-06-27 21:06 ` Peter Korsgaard @ 2010-06-27 21:28 ` Yann E. MORIN 0 siblings, 0 replies; 11+ messages in thread From: Yann E. MORIN @ 2010-06-27 21:28 UTC (permalink / raw) To: buildroot Peter, All, On Sunday 27 June 2010 23:06:56 Peter Korsgaard wrote: > >>>>> "Yann" == Yann E MORIN <yann.morin.1998@anciens.enib.fr> writes: > Yann> Including a bunch of Makefiles with wildcard makes it impossible > Yann> to add new toolchain backends. Avoid that by namely including > Yann> needed files. [--SNIP--] > Why are the order of those includes not the same? For external toolchains, the original Makefile was doing: include toolchain/*/*.mk So I just did: ls -1 toolchain/*/*.mk and replaced the single include with the output of ls, so as to keep the inclusion in the same order the original Makefile was doing it. > gcc-uclibc-3.x.mk is gone. > 2x toolchain-external/ext-tool.mk? Hmmm... I seem to have missed something here. Wrong tree, I guess... :-( > Why do we need to include all these when using an external toolchain? > Most of them doesn't seem to make sense to me. I just did what the original Makefile did, just moved the stuff to toolchain-specific Makefiles. I guess it is needed when the user wants to have a native toolchain in his/her rootfs, as the rules to build it are in those files. The cross-stuff is not built due to the BASE_TARGETS variable that does include them only for internal toolchain. Regards, Yann E. MORIN. -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' ^ permalink raw reply [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH 4/5] toolchain: move buildroot config files 2010-06-25 22:15 [Buildroot] [PATCH 0/5] Preparatory work on toolchains - v2 Yann E. MORIN ` (2 preceding siblings ...) 2010-06-25 22:15 ` [Buildroot] [PATCH 3/5] toolchain: move makefile includes Yann E. MORIN @ 2010-06-25 22:15 ` Yann E. MORIN 2010-06-25 22:15 ` [Buildroot] [PATCH 5/5] toolchain: rename base target for external toolchains Yann E. MORIN 4 siblings, 0 replies; 11+ messages in thread From: Yann E. MORIN @ 2010-06-25 22:15 UTC (permalink / raw) To: buildroot Handle the internal toolchain backend mechanism the same way we handle other backends. Signed-off-by: Yann E. MORIN <yann.morin.1998@anciens.enib.fr> --- toolchain/Config.in | 12 +---- .../{Config.in.1 => toolchain-buildroot/Config.in} | 2 +- toolchain/toolchain-buildroot/Config.in.2 | 37 ++++++++++++++++ toolchain/{Config.in.2 => toolchain-common.in} | 46 ++++---------------- 4 files changed, 50 insertions(+), 47 deletions(-) rename toolchain/{Config.in.1 => toolchain-buildroot/Config.in} (82%) create mode 100644 toolchain/toolchain-buildroot/Config.in.2 rename toolchain/{Config.in.2 => toolchain-common.in} (84%) diff --git a/toolchain/Config.in b/toolchain/Config.in index 52b9d8b..fc9a048 100644 --- a/toolchain/Config.in +++ b/toolchain/Config.in @@ -16,16 +16,10 @@ config BR2_TOOLCHAIN_EXTERNAL endchoice -source "toolchain/Config.in.1" +source "toolchain/toolchain-buildroot/Config.in" source "toolchain/toolchain-external/Config.in" - -# we want gdb config in the middle of both source and external -# toolchains, but mconf won't let us source the same file twice, -# so put it here instead -source "toolchain/gdb/Config.in" -comment "Common Toolchain Options" - -source "toolchain/Config.in.2" +source "toolchain/toolchain-common.in" +source "toolchain/toolchain-buildroot/Config.in.2" source "toolchain/toolchain-external/Config.in.2" endmenu diff --git a/toolchain/Config.in.1 b/toolchain/toolchain-buildroot/Config.in similarity index 82% rename from toolchain/Config.in.1 rename to toolchain/toolchain-buildroot/Config.in index 5c26858..a9dd192 100644 --- a/toolchain/Config.in.1 +++ b/toolchain/toolchain-buildroot/Config.in @@ -1,4 +1,4 @@ -# +# Config entries for internal toolchain backend if BR2_TOOLCHAIN_BUILDROOT source "toolchain/kernel-headers/Config.in" diff --git a/toolchain/toolchain-buildroot/Config.in.2 b/toolchain/toolchain-buildroot/Config.in.2 new file mode 100644 index 0000000..512a608 --- /dev/null +++ b/toolchain/toolchain-buildroot/Config.in.2 @@ -0,0 +1,37 @@ +# Buildroot backend specific options + +if BR2_TOOLCHAIN_BUILDROOT +source "toolchain/elf2flt/Config.in" +source "toolchain/mklibs/Config.in" +source "toolchain/sstrip/Config.in" + +config BR2_ENABLE_MULTILIB + bool "Enable multilib support?" + help + Build libraries to support different ABIs. + +config BR2_VFP_FLOAT + bool "Use ARM Vector Floating Point unit" + depends on !BR2_SOFT_FLOAT + depends on BR2_arm || BR2_armeb + help + Setting this option will enable the "-mfpu=vfp" option. + If your ARM CPU has a Vector Floating Point Unit (VFP) + and the toolchain supports the option, then the + code can be optimized. + + Most people will answer N. + +config BR2_CROSS_TOOLCHAIN_TARGET_UTILS + bool "Include target utils in cross toolchain" + default y + help + When using buildroot to build a deployable cross toolchain, + it is handy to include certain target apps with that toolchain + as a convenience. + Examples include ldd, gdbserver, and strace. + + Answer Y if you want these apps (if built) copied into the + cross toolchain dir under <arch>-linux-uclibc/target_utils/. + +endif diff --git a/toolchain/Config.in.2 b/toolchain/toolchain-common.in similarity index 84% rename from toolchain/Config.in.2 rename to toolchain/toolchain-common.in index 35263ce..bea0c7c 100644 --- a/toolchain/Config.in.2 +++ b/toolchain/toolchain-common.in @@ -1,4 +1,12 @@ -# +# Generic toolchain options + +# we want gdb config in the middle of both source and external +# toolchains, but mconf won't let us source the same file twice, +# so put it here instead +source "toolchain/gdb/Config.in" + +comment "Common Toolchain Options" + config BR2_LARGEFILE bool "Enable large file (files > 2 GB) support?" depends on !BR2_cris @@ -162,39 +170,3 @@ config BR2_TARGET_OPTIMIZATION help Optimizations to use when building for the target host. NOTE: gcc optimization level is defined in build options. - -if BR2_TOOLCHAIN_BUILDROOT -source "toolchain/elf2flt/Config.in" -source "toolchain/mklibs/Config.in" -source "toolchain/sstrip/Config.in" - -config BR2_ENABLE_MULTILIB - bool "Enable multilib support?" - help - Build libraries to support different ABIs. - -config BR2_VFP_FLOAT - bool "Use ARM Vector Floating Point unit" - depends on !BR2_SOFT_FLOAT - depends on BR2_arm || BR2_armeb - help - Setting this option will enable the "-mfpu=vfp" option. - If your ARM CPU has a Vector Floating Point Unit (VFP) - and the toolchain supports the option, then the - code can be optimized. - - Most people will answer N. - -config BR2_CROSS_TOOLCHAIN_TARGET_UTILS - bool "Include target utils in cross toolchain" - default y - help - When using buildroot to build a deployable cross toolchain, - it is handy to include certain target apps with that toolchain - as a convenience. - Examples include ldd, gdbserver, and strace. - - Answer Y if you want these apps (if built) copied into the - cross toolchain dir under <arch>-linux-uclibc/target_utils/. - -endif -- 1.7.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH 5/5] toolchain: rename base target for external toolchains 2010-06-25 22:15 [Buildroot] [PATCH 0/5] Preparatory work on toolchains - v2 Yann E. MORIN ` (3 preceding siblings ...) 2010-06-25 22:15 ` [Buildroot] [PATCH 4/5] toolchain: move buildroot config files Yann E. MORIN @ 2010-06-25 22:15 ` Yann E. MORIN 2010-06-27 21:08 ` Peter Korsgaard 4 siblings, 1 reply; 11+ messages in thread From: Yann E. MORIN @ 2010-06-25 22:15 UTC (permalink / raw) To: buildroot It is misleeading to name the external toolchain make target 'uclibc', as external toochains can be based on other C libraries (eg. glibc or eglibc). Signed-off-by: Yann E. MORIN <yann.morin.1998@anciens.enib.fr> --- Makefile | 2 +- toolchain/toolchain-external/ext-tool.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index a167826..5b28cbd 100644 --- a/Makefile +++ b/Makefile @@ -230,7 +230,7 @@ PREFERRED_LIB_FLAGS:=--enable-static --enable-shared ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y) BASE_TARGETS:=uclibc-configured binutils cross_compiler uclibc-target-utils kernel-headers else ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y) -BASE_TARGETS:=uclibc +BASE_TARGETS:=toolchain-prepare endif TARGETS:= diff --git a/toolchain/toolchain-external/ext-tool.mk b/toolchain/toolchain-external/ext-tool.mk index c8e7892..d6a759c 100644 --- a/toolchain/toolchain-external/ext-tool.mk +++ b/toolchain/toolchain-external/ext-tool.mk @@ -35,7 +35,7 @@ # cross-compiler binaries remains external, all libraries and headers # are imported into the Buildroot tree. -uclibc: dependencies $(STAMP_DIR)/ext-toolchain-installed +toolchain-prepare: dependencies $(STAMP_DIR)/ext-toolchain-installed EXTERNAL_LIBS=libc.so libcrypt.so libdl.so libgcc_s.so libm.so libnsl.so libresolv.so librt.so libutil.so ifeq ($(BR2_TOOLCHAIN_EXTERNAL_UCLIBC),y) -- 1.7.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH 5/5] toolchain: rename base target for external toolchains 2010-06-25 22:15 ` [Buildroot] [PATCH 5/5] toolchain: rename base target for external toolchains Yann E. MORIN @ 2010-06-27 21:08 ` Peter Korsgaard 0 siblings, 0 replies; 11+ messages in thread From: Peter Korsgaard @ 2010-06-27 21:08 UTC (permalink / raw) To: buildroot >>>>> "Yann" == Yann E MORIN <yann.morin.1998@anciens.enib.fr> writes: Yann> It is misleeading to name the external toolchain make target 'uclibc', as Yann> external toochains can be based on other C libraries (eg. glibc or eglibc). Typo - s/toochains/toolchains/ Otherwise looks good. -- Bye, Peter Korsgaard ^ permalink raw reply [flat|nested] 11+ messages in thread
* [Buildroot] [PATCH 0/5] Preparatory work on toolchains - v3
@ 2010-07-12 20:46 Yann E. MORIN
2010-07-12 20:46 ` [Buildroot] [PATCH 3/5] toolchain: move makefile includes Yann E. MORIN
0 siblings, 1 reply; 11+ messages in thread
From: Yann E. MORIN @ 2010-07-12 20:46 UTC (permalink / raw)
To: buildroot
Hello All!
These are preparatory work on toolchain, laying ground to later add
crosstool-NG as a backend. Currently, these are rather an RFC, even
if it works OK for me.
Changes since v2:
- rebased againts latest tree
- enhance commit message for 3rd patch
Changes since v1:
- rebased against latest tree
- patches formatted to detect renames/copies
Yann E. MORIN (5):
toolchain: move helper functions from external toolchain
toolchain: rename external toolchain dir
toolchain: move makefile includes
toolchain: move buildroot config files
toolchain: rename base target for external toolchains
Makefile | 17 +-
toolchain/Config.in | 16 +-
toolchain/external-toolchain/ext-tool.mk | 356 --------------------
toolchain/helpers.mk | 244 ++++++++++++++
toolchain/toolchain-buildroot.mk | 12 +
.../{Config.in.1 => toolchain-buildroot/Config.in} | 2 +-
toolchain/toolchain-buildroot/Config.in.2 | 37 ++
toolchain/{Config.in.2 => toolchain-common.in} | 46 +--
toolchain/toolchain-external.mk | 14 +
.../Config.in | 0
.../Config.in.2 | 0
toolchain/toolchain-external/ext-tool.mk | 115 +++++++
12 files changed, 440 insertions(+), 419 deletions(-)
delete mode 100644 toolchain/external-toolchain/ext-tool.mk
create mode 100644 toolchain/helpers.mk
create mode 100644 toolchain/toolchain-buildroot.mk
rename toolchain/{Config.in.1 => toolchain-buildroot/Config.in} (82%)
create mode 100644 toolchain/toolchain-buildroot/Config.in.2
rename toolchain/{Config.in.2 => toolchain-common.in} (84%)
create mode 100644 toolchain/toolchain-external.mk
rename toolchain/{external-toolchain => toolchain-external}/Config.in (100%)
rename toolchain/{external-toolchain => toolchain-external}/Config.in.2 (100%)
create mode 100644 toolchain/toolchain-external/ext-tool.mk
^ permalink raw reply [flat|nested] 11+ messages in thread* [Buildroot] [PATCH 3/5] toolchain: move makefile includes 2010-07-12 20:46 [Buildroot] [PATCH 0/5] Preparatory work on toolchains - v3 Yann E. MORIN @ 2010-07-12 20:46 ` Yann E. MORIN 0 siblings, 0 replies; 11+ messages in thread From: Yann E. MORIN @ 2010-07-12 20:46 UTC (permalink / raw) To: buildroot Including a bunch of Makefiles with wildcard makes it impossible to add new toolchain backends. Avoid that by namely including needed files. The external toolchain still needs to include all the toolchain/*/*.mk sub-makefiles, as they are needed to build a toolchain that runs on the target. It is to be noted that the cross-toolchain is not built in this case, as the make-targets to build the cross-toolchain are not present in the $(BASE_TARGETS) variable, which is later used to create the dependency rules. Also, the comment 'Explicit ordering' has been removed, as it is mis- leading. It is make's responsibility to create the proper ordering based on the dependency rules it finds in the Makefiles Signed-off-by: Yann E. MORIN <yann.morin.1998@anciens.enib.fr> --- Makefile | 16 ++-------------- toolchain/toolchain-buildroot.mk | 12 ++++++++++++ toolchain/toolchain-external.mk | 14 ++++++++++++++ 3 files changed, 28 insertions(+), 14 deletions(-) create mode 100644 toolchain/toolchain-buildroot.mk create mode 100644 toolchain/toolchain-external.mk diff --git a/Makefile b/Makefile index e02b7db..7f6da17 100644 --- a/Makefile +++ b/Makefile @@ -293,21 +293,9 @@ all: world # each selected package to TARGETS if that package was selected # in the .config file. ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y) -# avoid pulling in external toolchain which is broken for toplvl parallel builds -# Explicit ordering: -include toolchain/dependencies/dependencies.mk -include toolchain/binutils/binutils.mk -include toolchain/ccache/ccache.mk -include toolchain/elf2flt/elf2flt.mk -include toolchain/gcc/gcc-uclibc-4.x.mk -include toolchain/gdb/gdb.mk -include toolchain/kernel-headers/kernel-headers.mk -include toolchain/mklibs/mklibs.mk -include toolchain/sstrip/sstrip.mk -include toolchain/uClibc/uclibc.mk +include toolchain/toolchain-buildroot.mk else ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y) -include toolchain/helpers.mk -include toolchain/*/*.mk +include toolchain/toolchain-external.mk endif include package/*/*.mk diff --git a/toolchain/toolchain-buildroot.mk b/toolchain/toolchain-buildroot.mk new file mode 100644 index 0000000..d879697 --- /dev/null +++ b/toolchain/toolchain-buildroot.mk @@ -0,0 +1,12 @@ +# Include files required for the internal toolchain backend + +include toolchain/dependencies/dependencies.mk +include toolchain/binutils/binutils.mk +include toolchain/ccache/ccache.mk +include toolchain/elf2flt/elf2flt.mk +include toolchain/gcc/gcc-uclibc-4.x.mk +include toolchain/gdb/gdb.mk +include toolchain/kernel-headers/kernel-headers.mk +include toolchain/mklibs/mklibs.mk +include toolchain/sstrip/sstrip.mk +include toolchain/uClibc/uclibc.mk diff --git a/toolchain/toolchain-external.mk b/toolchain/toolchain-external.mk new file mode 100644 index 0000000..6f1f641 --- /dev/null +++ b/toolchain/toolchain-external.mk @@ -0,0 +1,14 @@ +# Required includes for the external toolchain backend + +include toolchain/helpers.mk +include toolchain/binutils/binutils.mk +include toolchain/ccache/ccache.mk +include toolchain/dependencies/dependencies.mk +include toolchain/elf2flt/elf2flt.mk +include toolchain/gcc/gcc-uclibc-4.x.mk +include toolchain/gdb/gdb.mk +include toolchain/kernel-headers/kernel-headers.mk +include toolchain/mklibs/mklibs.mk +include toolchain/sstrip/sstrip.mk +include toolchain/toolchain-external/ext-tool.mk +include toolchain/uClibc/uclibc.mk -- 1.7.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Buildroot] [pull request] Preparatory work on toolchains
@ 2010-06-01 21:52 Yann E. MORIN
2010-06-01 21:53 ` [Buildroot] [PATCH 3/5] toolchain: move makefile includes Yann E. MORIN
0 siblings, 1 reply; 11+ messages in thread
From: Yann E. MORIN @ 2010-06-01 21:52 UTC (permalink / raw)
To: buildroot
The following changes since commit 4a640e464439a5e78458ae969dcc6017aa96278f:
Peter Korsgaard (1):
docs/news.html: add 2010.05 announcement
are available in the git repository at:
git://git.busybox.net/~ymorin/git/buildroot master
These are preparatory work on toolchain, laying ground to later add
crosstool-NG as a backend. Currently, these are rather an RFC, even
if it works OK for me.
Yann E. MORIN (5):
toolchain: move helper functions from external toolchain
toolchain: rename external toolchain dir
toolchain: move makefile includes
toollchain: move buildroot config files
toolchain: rename base target for external toolchains
Makefile | 18 +-
toolchain/Config.in | 16 +-
toolchain/external-toolchain/ext-tool.mk | 322 --------------------
toolchain/helpers.mk | 217 +++++++++++++
toolchain/toolchain-buildroot.mk | 15 +
.../{Config.in.1 => toolchain-buildroot/Config.in} | 2 +-
toolchain/toolchain-buildroot/Config.in.2 | 37 +++
toolchain/{Config.in.2 => toolchain-common.in} | 46 +---
toolchain/toolchain-external.mk | 16 +
.../Config.in | 0
.../Config.in.2 | 0
toolchain/toolchain-external/ext-tool.mk | 108 +++++++
12 files changed, 411 insertions(+), 386 deletions(-)
delete mode 100644 toolchain/external-toolchain/ext-tool.mk
create mode 100644 toolchain/helpers.mk
create mode 100644 toolchain/toolchain-buildroot.mk
rename toolchain/{Config.in.1 => toolchain-buildroot/Config.in} (82%)
create mode 100644 toolchain/toolchain-buildroot/Config.in.2
rename toolchain/{Config.in.2 => toolchain-common.in} (84%)
create mode 100644 toolchain/toolchain-external.mk
rename toolchain/{external-toolchain => toolchain-external}/Config.in (100%)
rename toolchain/{external-toolchain => toolchain-external}/Config.in.2 (100%)
create mode 100644 toolchain/toolchain-external/ext-tool.mk
^ permalink raw reply [flat|nested] 11+ messages in thread* [Buildroot] [PATCH 3/5] toolchain: move makefile includes 2010-06-01 21:52 [Buildroot] [pull request] Preparatory work on toolchains Yann E. MORIN @ 2010-06-01 21:53 ` Yann E. MORIN 0 siblings, 0 replies; 11+ messages in thread From: Yann E. MORIN @ 2010-06-01 21:53 UTC (permalink / raw) To: buildroot Including a bunch of Makefiles with wildcard makes it impossible to add new toolchain backends. Avoid that by namely including needed files. Signed-off-by: Yann E. MORIN <yann.morin.1998@anciens.enib.fr> --- Makefile | 17 ++--------------- toolchain/toolchain-buildroot.mk | 15 +++++++++++++++ toolchain/toolchain-external.mk | 16 ++++++++++++++++ 3 files changed, 33 insertions(+), 15 deletions(-) create mode 100644 toolchain/toolchain-buildroot.mk create mode 100644 toolchain/toolchain-external.mk diff --git a/Makefile b/Makefile index 68cfebf..035c7ec 100644 --- a/Makefile +++ b/Makefile @@ -291,22 +291,9 @@ include .config.cmd # each selected package to TARGETS if that package was selected # in the .config file. ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y) -# avoid pulling in external toolchain which is broken for toplvl parallel builds -# Explicit ordering: -include toolchain/dependencies/dependencies.mk -include toolchain/binutils/binutils.mk -include toolchain/ccache/ccache.mk -include toolchain/elf2flt/elf2flt.mk -include toolchain/gcc/gcc-uclibc-3.x.mk -include toolchain/gcc/gcc-uclibc-4.x.mk -include toolchain/gdb/gdb.mk -include toolchain/kernel-headers/kernel-headers.mk -include toolchain/mklibs/mklibs.mk -include toolchain/sstrip/sstrip.mk -include toolchain/uClibc/uclibc.mk +include toolchain/toolchain-buildroot.mk else ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y) -include toolchain/helpers.mk -include toolchain/*/*.mk +include toolchain/toolchain-external.mk endif ifeq ($(BR2_PACKAGE_LINUX),y) diff --git a/toolchain/toolchain-buildroot.mk b/toolchain/toolchain-buildroot.mk new file mode 100644 index 0000000..da94b42 --- /dev/null +++ b/toolchain/toolchain-buildroot.mk @@ -0,0 +1,15 @@ +# Include files required for the internal toolchain backend + +# avoid pulling in external toolchain which is broken for toplvl parallel builds +# Explicit ordering: +include toolchain/dependencies/dependencies.mk +include toolchain/binutils/binutils.mk +include toolchain/ccache/ccache.mk +include toolchain/elf2flt/elf2flt.mk +include toolchain/gcc/gcc-uclibc-3.x.mk +include toolchain/gcc/gcc-uclibc-4.x.mk +include toolchain/gdb/gdb.mk +include toolchain/kernel-headers/kernel-headers.mk +include toolchain/mklibs/mklibs.mk +include toolchain/sstrip/sstrip.mk +include toolchain/uClibc/uclibc.mk diff --git a/toolchain/toolchain-external.mk b/toolchain/toolchain-external.mk new file mode 100644 index 0000000..6c00330 --- /dev/null +++ b/toolchain/toolchain-external.mk @@ -0,0 +1,16 @@ +# Required includes for the external toolchain backend + +# Explicit ordering: +include toolchain/helpers.mk +include toolchain/binutils/binutils.mk +include toolchain/ccache/ccache.mk +include toolchain/dependencies/dependencies.mk +include toolchain/elf2flt/elf2flt.mk +include toolchain/gcc/gcc-uclibc-3.x.mk +include toolchain/gcc/gcc-uclibc-4.x.mk +include toolchain/gdb/gdb.mk +include toolchain/toolchain-external/ext-tool.mk +include toolchain/mklibs/mklibs.mk +include toolchain/sstrip/sstrip.mk +include toolchain/toolchain-external/ext-tool.mk +include toolchain/uClibc/uclibc.mk -- 1.6.5 ^ permalink raw reply related [flat|nested] 11+ messages in thread
end of thread, other threads:[~2010-07-12 20:46 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2010-06-25 22:15 [Buildroot] [PATCH 0/5] Preparatory work on toolchains - v2 Yann E. MORIN 2010-06-25 22:15 ` [Buildroot] [PATCH 1/5] toolchain: move helper functions from external toolchain Yann E. MORIN 2010-06-25 22:15 ` [Buildroot] [PATCH 2/5] toolchain: rename external toolchain dir Yann E. MORIN 2010-06-25 22:15 ` [Buildroot] [PATCH 3/5] toolchain: move makefile includes Yann E. MORIN 2010-06-27 21:06 ` Peter Korsgaard 2010-06-27 21:28 ` Yann E. MORIN 2010-06-25 22:15 ` [Buildroot] [PATCH 4/5] toolchain: move buildroot config files Yann E. MORIN 2010-06-25 22:15 ` [Buildroot] [PATCH 5/5] toolchain: rename base target for external toolchains Yann E. MORIN 2010-06-27 21:08 ` Peter Korsgaard -- strict thread matches above, loose matches on Subject: below -- 2010-07-12 20:46 [Buildroot] [PATCH 0/5] Preparatory work on toolchains - v3 Yann E. MORIN 2010-07-12 20:46 ` [Buildroot] [PATCH 3/5] toolchain: move makefile includes Yann E. MORIN 2010-06-01 21:52 [Buildroot] [pull request] Preparatory work on toolchains Yann E. MORIN 2010-06-01 21:53 ` [Buildroot] [PATCH 3/5] toolchain: move makefile includes Yann E. MORIN
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.