Move crosstool-NG to package/ and make it an autotarget package.
This requires a new patch (now upstream).
Now, the crosstool-NG toolchain backend only contains enough to build
the toolchain, there's no more reference to building crosstool-NG as
a package.
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
--- /dev/null
+Remove dependency on cvs.
+
+cvs is used to retrieve newlib, which is not supported
+under Buildroot, so cvs is not required.
+
+--- crosstool-ng-1.8.0/configure.orig 2010-11-27 15:43:52.000000000 +0000
++++ crosstool-ng-1.8.0/configure 2010-11-27 15:44:10.000000000 +0000
+@@ -359,7 +359,6 @@
+ err="'libtool' 1.5.26 or above was not found"
+ has_or_abort prog=stat
+ has_or_abort prog="curl wget"
+-has_or_abort prog=cvs
+ has_or_abort prog=patch
+ has_or_abort prog=tar
+ has_or_abort prog=gzip
--- /dev/null
+
+# HG changeset patch
+# User "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
+# Date 1310507544 -7200
+# Node ID 1ebc2248cc60230cd53ff94ae8f8f1e3261461a3
+# Parent f1c730da41f3b22ca1a1e1b14592da4b7c078797
+scripts, cc/gcc: do not fail on existing symlinks or build.log
+
+If the user builds a toolchain over an existing one, so, without removing
+CT_PREFIX_DIR, the build fails as the symlinks already exist, as does the
+build.log.
+
+This can also happen (for build.log) if the user first ran in download-
+or extract-only.
+
+Patch (with no SoB) originally from:
+ Phil Wilshire <phil.wilshire@overturenetworks.com>
+
+Modified by me as it did not apply cleanly.
+
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
+
+diff -r f1c730da41f3 -r 1ebc2248cc60 scripts/build/cc/gcc.sh
+--- a/scripts/build/cc/gcc.sh Tue Jul 12 23:21:27 2011 +0200
++++ b/scripts/build/cc/gcc.sh Tue Jul 12 23:52:24 2011 +0200
+@@ -386,7 +386,7 @@
+ # check whether compiler has an extension
+ file="$( ls -1 "${core_prefix_dir}/bin/${CT_TARGET}-gcc."* 2>/dev/null || true )"
+ [ -z "${file}" ] || ext=".${file##*.}"
+- CT_DoExecLog ALL ln -sv "${CT_TARGET}-gcc${ext}" "${core_prefix_dir}/bin/${CT_TARGET}-cc${ext}"
++ CT_DoExecLog ALL ln -sfv "${CT_TARGET}-gcc${ext}" "${core_prefix_dir}/bin/${CT_TARGET}-cc${ext}"
+
+ CT_EndStep
+ }
+@@ -630,7 +630,7 @@
+ # check whether compiler has an extension
+ file="$( ls -1 "${CT_PREFIX_DIR}/bin/${CT_TARGET}-gcc."* 2>/dev/null || true )"
+ [ -z "${file}" ] || ext=".${file##*.}"
+- CT_DoExecLog ALL ln -sv "${CT_TARGET}-gcc${ext}" "${CT_PREFIX_DIR}/bin/${CT_TARGET}-cc${ext}"
++ CT_DoExecLog ALL ln -sfv "${CT_TARGET}-gcc${ext}" "${CT_PREFIX_DIR}/bin/${CT_TARGET}-cc${ext}"
+
+ CT_EndStep
+ }
+diff -r f1c730da41f3 -r 1ebc2248cc60 scripts/build/internals.sh
+--- a/scripts/build/internals.sh Tue Jul 12 23:21:27 2011 +0200
++++ b/scripts/build/internals.sh Tue Jul 12 23:52:24 2011 +0200
+@@ -86,14 +86,14 @@
+ for t in "${CT_TARGET}-"*; do
+ if [ -n "${CT_TARGET_ALIAS}" ]; then
+ _t=$(echo "$t" |sed -r -e 's/^'"${CT_TARGET}"'-/'"${CT_TARGET_ALIAS}"'-/;')
+- CT_DoExecLog ALL ln -sv "${t}" "${_t}"
++ CT_DoExecLog ALL ln -sfv "${t}" "${_t}"
+ fi
+ if [ -n "${CT_TARGET_ALIAS_SED_EXPR}" ]; then
+ _t=$(echo "$t" |sed -r -e "${CT_TARGET_ALIAS_SED_EXPR}")
+ if [ "${_t}" = "${t}" ]; then
+ CT_DoLog WARN "The sed expression '${CT_TARGET_ALIAS_SED_EXPR}' has no effect on '${t}'"
+ else
+- CT_DoExecLog ALL ln -sv "${t}" "${_t}"
++ CT_DoExecLog ALL ln -sfv "${t}" "${_t}"
+ fi
+ fi
+ done
+diff -r f1c730da41f3 -r 1ebc2248cc60 scripts/crosstool-NG.sh.in
+--- a/scripts/crosstool-NG.sh.in Tue Jul 12 23:21:27 2011 +0200
++++ b/scripts/crosstool-NG.sh.in Tue Jul 12 23:52:24 2011 +0200
+@@ -604,7 +604,7 @@
+ # moment... Consign all ouptut to oblivion...
+ CT_DoLog INFO "Finishing installation (may take a few seconds)..."
+ exec >/dev/null 2>&1
+-
++rm -f ${CT_PREFIX_DIR}/build.log.bz2
+ if [ "${CT_LOG_TO_FILE}" = "y" ]; then
+ cp "${tmp_log_file}" "${CT_PREFIX_DIR}/build.log"
+ if [ "${CT_LOG_FILE_COMPRESS}" = y ]; then
+
--- /dev/null
+--- crosstool-ng-1.11.3/configure 2011-05-21 01:10:10.000000000 +0200
++++ host-crosstool-ng-1.11.3/configure 2011-07-14 17:35:25.830403914 +0200
+@@ -260,6 +260,7 @@
+ # Skip, auto-stuff compatibility
+ --build=*|--host=*|--infodir=*|--datadir=*|--sysconfdir=*|--localstatedir=*) shift;;
+ --build|--host|--infodir|--datadir|--sysconfdir|--localstatedir) shift 2;;
++ --enable-shared|--disable-shared|--enable-static|--disable-static) shift;;
+ *) printf "Unrecognised option: '${1}'\n"; do_help; exit 1;;
+ esac
+ done
--- /dev/null
+CROSSTOOL_NG_VERSION = 1.11.3
+CROSSTOOL_NG_SOURCE = crosstool-ng-$(CROSSTOOL_NG_VERSION).tar.bz2
+CROSSTOOL_NG_SITE = http://crosstool-ng.org/download/crosstool-ng/
+CROSSTOOL_NG_INSTALL_STAGING = NO
+CROSSTOOL_NG_INSTALL_TARGET = NO
+CROSSTOOL_NG_MAKE = $(MAKE1)
+HOST_CROSSTOOL_NG_DEPENDENCIES = host-gawk host-automake $(if $(BR2_CCACHE),host-ccache)
+
+$(eval $(call AUTOTARGETS,package,crosstool-ng,host))
+++ /dev/null
-Remove dependency on cvs.
-
-cvs is used to retrieve newlib, which is not supported
-under Buildroot, so cvs is not required.
-
---- crosstool-ng-1.8.0/configure.orig 2010-11-27 15:43:52.000000000 +0000
-+++ crosstool-ng-1.8.0/configure 2010-11-27 15:44:10.000000000 +0000
-@@ -359,7 +359,6 @@
- err="'libtool' 1.5.26 or above was not found"
- has_or_abort prog=stat
- has_or_abort prog="curl wget"
--has_or_abort prog=cvs
- has_or_abort prog=patch
- has_or_abort prog=tar
- has_or_abort prog=gzip
+++ /dev/null
-
-# HG changeset patch
-# User "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
-# Date 1310507544 -7200
-# Node ID 1ebc2248cc60230cd53ff94ae8f8f1e3261461a3
-# Parent f1c730da41f3b22ca1a1e1b14592da4b7c078797
-scripts, cc/gcc: do not fail on existing symlinks or build.log
-
-If the user builds a toolchain over an existing one, so, without removing
-CT_PREFIX_DIR, the build fails as the symlinks already exist, as does the
-build.log.
-
-This can also happen (for build.log) if the user first ran in download-
-or extract-only.
-
-Patch (with no SoB) originally from:
- Phil Wilshire <phil.wilshire@overturenetworks.com>
-
-Modified by me as it did not apply cleanly.
-
-Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
-
-diff -r f1c730da41f3 -r 1ebc2248cc60 scripts/build/cc/gcc.sh
---- a/scripts/build/cc/gcc.sh Tue Jul 12 23:21:27 2011 +0200
-+++ b/scripts/build/cc/gcc.sh Tue Jul 12 23:52:24 2011 +0200
-@@ -386,7 +386,7 @@
- # check whether compiler has an extension
- file="$( ls -1 "${core_prefix_dir}/bin/${CT_TARGET}-gcc."* 2>/dev/null || true )"
- [ -z "${file}" ] || ext=".${file##*.}"
-- CT_DoExecLog ALL ln -sv "${CT_TARGET}-gcc${ext}" "${core_prefix_dir}/bin/${CT_TARGET}-cc${ext}"
-+ CT_DoExecLog ALL ln -sfv "${CT_TARGET}-gcc${ext}" "${core_prefix_dir}/bin/${CT_TARGET}-cc${ext}"
-
- CT_EndStep
- }
-@@ -630,7 +630,7 @@
- # check whether compiler has an extension
- file="$( ls -1 "${CT_PREFIX_DIR}/bin/${CT_TARGET}-gcc."* 2>/dev/null || true )"
- [ -z "${file}" ] || ext=".${file##*.}"
-- CT_DoExecLog ALL ln -sv "${CT_TARGET}-gcc${ext}" "${CT_PREFIX_DIR}/bin/${CT_TARGET}-cc${ext}"
-+ CT_DoExecLog ALL ln -sfv "${CT_TARGET}-gcc${ext}" "${CT_PREFIX_DIR}/bin/${CT_TARGET}-cc${ext}"
-
- CT_EndStep
- }
-diff -r f1c730da41f3 -r 1ebc2248cc60 scripts/build/internals.sh
---- a/scripts/build/internals.sh Tue Jul 12 23:21:27 2011 +0200
-+++ b/scripts/build/internals.sh Tue Jul 12 23:52:24 2011 +0200
-@@ -86,14 +86,14 @@
- for t in "${CT_TARGET}-"*; do
- if [ -n "${CT_TARGET_ALIAS}" ]; then
- _t=$(echo "$t" |sed -r -e 's/^'"${CT_TARGET}"'-/'"${CT_TARGET_ALIAS}"'-/;')
-- CT_DoExecLog ALL ln -sv "${t}" "${_t}"
-+ CT_DoExecLog ALL ln -sfv "${t}" "${_t}"
- fi
- if [ -n "${CT_TARGET_ALIAS_SED_EXPR}" ]; then
- _t=$(echo "$t" |sed -r -e "${CT_TARGET_ALIAS_SED_EXPR}")
- if [ "${_t}" = "${t}" ]; then
- CT_DoLog WARN "The sed expression '${CT_TARGET_ALIAS_SED_EXPR}' has no effect on '${t}'"
- else
-- CT_DoExecLog ALL ln -sv "${t}" "${_t}"
-+ CT_DoExecLog ALL ln -sfv "${t}" "${_t}"
- fi
- fi
- done
-diff -r f1c730da41f3 -r 1ebc2248cc60 scripts/crosstool-NG.sh.in
---- a/scripts/crosstool-NG.sh.in Tue Jul 12 23:21:27 2011 +0200
-+++ b/scripts/crosstool-NG.sh.in Tue Jul 12 23:52:24 2011 +0200
-@@ -604,7 +604,7 @@
- # moment... Consign all ouptut to oblivion...
- CT_DoLog INFO "Finishing installation (may take a few seconds)..."
- exec >/dev/null 2>&1
--
-+rm -f ${CT_PREFIX_DIR}/build.log.bz2
- if [ "${CT_LOG_TO_FILE}" = "y" ]; then
- cp "${tmp_log_file}" "${CT_PREFIX_DIR}/build.log"
- if [ "${CT_LOG_FILE_COMPRESS}" = y ]; then
-
#-----------------------------------------------------------------------------
# Internal variables
-# Crostool-NG hard-coded configuration options
-CTNG_VERSION:=1.11.3
-CTNG_SITE:=http://crosstool-ng.org/download/crosstool-ng/
-CTNG_SOURCE:=crosstool-ng-$(CTNG_VERSION).tar.bz2
-CTNG_DIR:=$(BUILD_DIR)/crosstool-ng-$(CTNG_VERSION)
-CTNG_CAT:=bzcat
-CTNG_PATCH_DIR:=toolchain/toolchain-crosstool-ng
-CTNG_UCLIBC_CONFIG_FILE := $(TOPDIR)/toolchain/toolchain-crosstool-ng/uClibc.config
+CTNG_DIR := $(BUILD_DIR)/build-toolchain
+CTNG_UCLIBC_CONFIG_FILE := $(TOPDIR)/toolchain/toolchain-crosstool-ng/uClibc.config
CTNG_CONFIG_FILE:=$(call qstrip,$(BR2_TOOLCHAIN_CTNG_CONFIG))
# Hack! ct-ng is in fact a Makefile script. As such, it accepts all
# to calling ct-ng.
# $1: the set of arguments to pass to ct-ng
define ctng
-PATH=$(HOST_PATH) $(CTNG_DIR)/ct-ng -C $(CTNG_DIR) --no-print-directory $(1)
+PATH=$(HOST_PATH) ct-ng -C $(CTNG_DIR) --no-print-directory $(1)
endef
#-----------------------------------------------------------------------------
$(call ctng-fix-dot-config,$(1),$(CTNG_FIX_DOT_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
# Depends on top-level .config because it has options we have to shoe-horn
# into crosstool-NG's .config
# 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: $(CTNG_CONFIG_FILE) $(CTNG_DIR)/ct-ng $(CONFIG_DIR)/.config
+
+$(CTNG_DIR)/.config: $(CTNG_CONFIG_FILE) $(CONFIG_DIR)/.config
$(Q)if [ ! -f $@ ]; then \
+ mkdir -p "$(CTNG_DIR)"; \
libc="$$(awk -F '"' '$$1=="CT_LIBC=" { print $$2; }' "$<")"; \
if [ "$${libc}" != "$(BR2_TOOLCHAIN_CTNG_LIBC)" ]; then \
echo "* Inconsistency in crosstool-NG config file '$<'"; \
$(call ctng-oldconfig,$<)
$(call ctng-check-config-changed,$<,$<.timestamp)
$(Q)rm -f $<.timestamp
-
-#-----------------------------------------------------------------------------
-# Retrieving, configuring and building crosstool-NG (as a package)
-
-$(DL_DIR)/$(CTNG_SOURCE):
- $(Q)$(call DOWNLOAD,$(CTNG_SITE),$(CTNG_SOURCE))
-
-$(CTNG_DIR)/.unpacked: $(DL_DIR)/$(CTNG_SOURCE)
- $(Q)rm -rf $(CTNG_DIR)
- $(Q)mkdir -p $(BUILD_DIR)
- $(Q)$(CTNG_CAT) $(DL_DIR)/$(CTNG_SOURCE) |tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
- $(Q)touch $@
-
-$(CTNG_DIR)/.patched: $(CTNG_DIR)/.unpacked
- $(Q)toolchain/patch-kernel.sh $(CTNG_DIR) \
- $(CTNG_PATCH_DIR) \
- \*.patch \
- \*.patch.$(ARCH)
- $(Q)touch $@
-
-# Use order-only dependencies on host-* as they
-# are virtual targets with no rules, and so are
-# considered always remade. But we do not want
-# to reconfigure and rebuild ct-ng every time
-# we need to run it...
-$(CTNG_DIR)/.configured: | $(if $(BR2_CCACHE),host-ccache) \
- host-gawk \
- host-automake
-
-$(CTNG_DIR)/.configured: $(CTNG_DIR)/.patched
- $(Q)cd $(CTNG_DIR) && PATH=$(HOST_PATH) ./configure --local
- $(Q)touch $@
-
-$(CTNG_DIR)/ct-ng: $(CTNG_DIR)/.configured
- $(Q)$(MAKE) -C $(CTNG_DIR) --no-print-directory
- $(Q)touch $@