Add support code for the canadian-cross case.
Add implementation for a candadian build option already
present in crosstool in order to build a cross-compiler
where build != host != target
Signed-off-by: Bart van der Meulen <bartvdrmeulen@gmail.com>
1.1 --- a/config/toolchain.in Fri Jun 26 19:09:22 2009 +0200
1.2 +++ b/config/toolchain.in Fri Jun 26 19:09:22 2009 +0200
1.3 @@ -123,7 +123,7 @@
1.4
1.5 config CANADIAN
1.6 bool
1.7 - prompt "Canadian (NO CODE!) (EXPERIMENTAL)"
1.8 + prompt "Canadian (EXPERIMENTAL)"
1.9 depends on EXPERIMENTAL
1.10 help
1.11 Build a canadian-toolchain.
2.1 --- a/scripts/build/cc/gcc.sh Fri Jun 26 19:09:22 2009 +0200
2.2 +++ b/scripts/build/cc/gcc.sh Fri Jun 26 19:09:22 2009 +0200
2.3 @@ -41,6 +41,10 @@
2.4 #------------------------------------------------------------------------------
2.5 # Core gcc pass 1
2.6 do_cc_core_pass_1() {
2.7 + # If we're building a canadian compiler no use to build the CC
2.8 + # core compiler, we're not using it
2.9 + [ -n "${CT_CANADIAN}" ] && return 0
2.10 +
2.11 # If we're building for bare metal, build the static core gcc,
2.12 # with libgcc.
2.13 # In case we're not bare metal, and we're NPTL, build the static core gcc.
2.14 @@ -54,6 +58,10 @@
2.15
2.16 # Core gcc pass 2
2.17 do_cc_core_pass_2() {
2.18 + # If we're building a canadian compiler no use to build the CC
2.19 + # core compiler, we're not using it
2.20 + [ -n "${CT_CANADIAN}" ] && return 0
2.21 +
2.22 # In case we're building for bare metal, do nothing, we already have
2.23 # our compiler.
2.24 # In case we're NPTL, build the shared core gcc and the target libgcc.
3.1 --- a/scripts/crosstool-NG.sh.in Fri Jun 26 19:09:22 2009 +0200
3.2 +++ b/scripts/crosstool-NG.sh.in Fri Jun 26 19:09:22 2009 +0200
3.3 @@ -223,8 +223,10 @@
3.4 CT_DoExecLog ALL mkdir -p "${CT_CONFIG_DIR}"
3.5 CT_DoExecLog ALL mkdir -p "${CT_INSTALL_DIR}"
3.6 CT_DoExecLog ALL mkdir -p "${CT_PREFIX_DIR}"
3.7 -CT_DoExecLog ALL mkdir -p "${CT_CC_CORE_STATIC_PREFIX_DIR}"
3.8 -CT_DoExecLog ALL mkdir -p "${CT_CC_CORE_SHARED_PREFIX_DIR}"
3.9 +if [ -z "${CT_CANADIAN}" ]; then
3.10 + CT_DoExecLog ALL mkdir -p "${CT_CC_CORE_STATIC_PREFIX_DIR}"
3.11 + CT_DoExecLog ALL mkdir -p "${CT_CC_CORE_SHARED_PREFIX_DIR}"
3.12 +fi
3.13
3.14 # Only create the state dir if asked for a restartable build
3.15 [ -n "${CT_DEBUG_CT_SAVE_STEPS}" ] && CT_DoExecLog ALL mkdir -p "${CT_STATE_DIR}"
3.16 @@ -319,10 +321,17 @@
3.17
3.18 # Prepare mangling patterns to later modify BUILD and HOST (see below)
3.19 case "${CT_TOOLCHAIN_TYPE}" in
3.20 + canadian)
3.21 + CT_REAL_TARGET="${CT_TARGET}"
3.22 + build_mangle="build_"
3.23 + host_mangle="host_"
3.24 + install_build_tools_for="BUILD HOST TARGET"
3.25 + ;;
3.26 cross)
3.27 CT_HOST="${CT_BUILD}"
3.28 build_mangle="build_"
3.29 host_mangle="build_"
3.30 + install_build_tools_for="BUILD HOST"
3.31 ;;
3.32 *) CT_Abort "No code for '${CT_TOOLCHAIN_TYPE}' toolchain type!"
3.33 ;;
3.34 @@ -350,7 +359,7 @@
3.35 # cross-tools for those mangled tuples.
3.36 CT_DoLog DEBUG "Making build system tools available"
3.37 CT_DoExecLog ALL mkdir -p "${CT_PREFIX_DIR}/buildtools"
3.38 - for m in BUILD HOST; do
3.39 + for m in ${install_build_tools_for}; do
3.40 r="CT_REAL_${m}"
3.41 v="CT_${m}"
3.42 p="CT_${m}_PREFIX"
3.43 @@ -418,6 +427,7 @@
3.44 # so don't add those PATHs in this case...
3.45 case "${CT_TOOLCHAIN_TYPE}" in
3.46 cross) export PATH="${CT_PREFIX_DIR}/buildtools:${CT_PREFIX_DIR}/bin:${CT_CC_CORE_SHARED_PREFIX_DIR}/bin:${CT_CC_CORE_STATIC_PREFIX_DIR}/bin:${PATH}";;
3.47 + canadian) export PATH="${CT_PREFIX_DIR}/buildtools:${PATH}";;
3.48 *) ;;
3.49 esac
3.50