This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch 4/4] Implement canadian build option


Bart,

See comments inlined below...

On Wednesday 10 June 2009 12:12:34 Bart vd. Meulen wrote:
> Add implementation for a candadian build option already
> present in crosstool in order to build a cross-compiler
> where build != host != target
> 
> The included sample uses a pre-installed mingw build-host compiler and a 
> build-target compiler (that has been build with Crosstool-ng, using the 
> i686-ntpl-linux-gnu example has basis)
> The resulting cross compiler runs on a mingw host and builds for a 
> i686-linux-gnu target.
> 
> Signed-off-by: Bart van der Meulen <bartvdrmeulen@gmail.com>
> ---
>  config/toolchain.in                          |    2 
>  samples/i686-none-linux-gnu/crosstool.config |  353 +++++++++++++++++++++++++++
>  samples/i686-none-linux-gnu/reported.by      |    3 
>  scripts/build/cc/gcc.sh                      |    8 
>  scripts/build/companion_libs/mpfr.sh         |    3 
>  scripts/crosstool-NG.sh.in                   |   17 +
>  6 files changed, 381 insertions(+), 5 deletions(-)
> 
> Index: crosstool-ng/scripts/crosstool-NG.sh.in
> ===================================================================
> --- crosstool-ng.orig/scripts/crosstool-NG.sh.in	2009-06-08 15:30:40.000000000 +0200
> +++ crosstool-ng/scripts/crosstool-NG.sh.in	2009-06-08 15:30:41.000000000 +0200
> @@ -202,8 +202,10 @@ CT_DoExecLog ALL mkdir -p "${CT_BUILD_DI
>  CT_DoExecLog ALL mkdir -p "${CT_CONFIG_DIR}"
>  CT_DoExecLog ALL mkdir -p "${CT_INSTALL_DIR}"
>  CT_DoExecLog ALL mkdir -p "${CT_PREFIX_DIR}"
> -CT_DoExecLog ALL mkdir -p "${CT_CC_CORE_STATIC_PREFIX_DIR}"
> -CT_DoExecLog ALL mkdir -p "${CT_CC_CORE_SHARED_PREFIX_DIR}"
> +if [ -z "${CT_CANADIAN}" ]; then
> +    CT_DoExecLog ALL mkdir -p "${CT_CC_CORE_STATIC_PREFIX_DIR}"
> +    CT_DoExecLog ALL mkdir -p "${CT_CC_CORE_SHARED_PREFIX_DIR}"
> +fi
>  
>  # Only create the state dir if asked for a restartable build
>  [ -n "${CT_DEBUG_CT_SAVE_STEPS}" ] && CT_DoExecLog ALL mkdir -p "${CT_STATE_DIR}"
> @@ -303,10 +305,18 @@ if [ -z "${CT_RESTART}" ]; then
>  
>      # Prepare mangling patterns to later modify BUILD and HOST (see below)
>      case "${CT_TOOLCHAIN_TYPE}" in
> +        canadian)
> +            CT_REAL_TARGET=${TARGET}

CT_REAL_TARGET is used nowhere in the code. What was it for?

> +            build_mangle="build_"
> +            host_mangle="host_"
> +            install_build_tools_for="BUILD HOST TARGET"

Yep, nice!

> +            ;;
> +

Useless empty line, doesn't mind.

>          cross)
>              CT_HOST="${CT_BUILD}"
>              build_mangle="build_"
>              host_mangle="build_"
> +            install_build_tools_for="BUILD HOST"
>              ;;
>          *)  CT_Abort "No code for '${CT_TOOLCHAIN_TYPE}' toolchain type!"
>              ;;
> @@ -334,7 +344,7 @@ if [ -z "${CT_RESTART}" ]; then
>      # cross-tools for those mangled tuples.
>      CT_DoLog DEBUG "Making build system tools available"
>      CT_DoExecLog ALL mkdir -p "${CT_PREFIX_DIR}/buildtools"
> -    for m in BUILD HOST; do
> +    for m in ${install_build_tools_for}; do
>          r="CT_REAL_${m}"
>          v="CT_${m}"
>          p="CT_${m}_PREFIX"
> @@ -402,6 +412,7 @@ if [ -z "${CT_RESTART}" ]; then
>      # so don't add those PATHs in this case...
>      case "${CT_TOOLCHAIN_TYPE}" in
>          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}";;
> +        canadian) export PATH="${CT_PREFIX_DIR}/buildtools:${PATH}";;

Good!

>          *)  ;;
>      esac
>  
> Index: crosstool-ng/config/toolchain.in
> ===================================================================
> --- crosstool-ng.orig/config/toolchain.in	2009-06-08 15:30:35.000000000 +0200
> +++ crosstool-ng/config/toolchain.in	2009-06-08 15:30:41.000000000 +0200
> @@ -123,7 +123,7 @@ config CROSS_NATIVE
>  
>  config CANADIAN
>      bool
> -    prompt "Canadian     (NO CODE!) (EXPERIMENTAL)"
> +    prompt "Canadian     (EXPERIMENTAL)"
>      depends on EXPERIMENTAL
>      help
>        Build a canadian-toolchain.
> Index: crosstool-ng/scripts/build/cc/gcc.sh
> ===================================================================
> --- crosstool-ng.orig/scripts/build/cc/gcc.sh	2009-06-08 15:30:35.000000000 +0200
> +++ crosstool-ng/scripts/build/cc/gcc.sh	2009-06-08 15:30:41.000000000 +0200
> @@ -45,6 +45,10 @@ do_cc_extract() {
>  #------------------------------------------------------------------------------
>  # Core gcc pass 1
>  do_cc_core_pass_1() {
> +    # If we're building a candadian compiler no use to build the CC

Typo: "canadian";
s/CC/core compiler/

> +    # core compiler, we're not using it
> +    [ -n "${CT_CANADIAN}" ] && return 0
> +
>      # If we're building for bare metal, build the static core gcc,
>      # with libgcc.
>      # In case we're not bare metal, and we're NPTL, build the static core gcc.
> @@ -58,6 +62,10 @@ do_cc_core_pass_1() {
>  
>  # Core gcc pass 2
>  do_cc_core_pass_2() {
> +    # If we're building a candadian compiler no use to build the CC

Ditto, ditto.

> +    # core compiler, we're not using it
> +    [ -n "${CT_CANADIAN}" ] && return 0
> +
>      # In case we're building for bare metal, do nothing, we already have
>      # our compiler.
>      # In case we're NPTL, build the shared core gcc and the target libgcc.
> Index: crosstool-ng/scripts/build/companion_libs/mpfr.sh
> ===================================================================
> --- crosstool-ng.orig/scripts/build/companion_libs/mpfr.sh	2009-06-08 15:30:35.000000000 +0200
> +++ crosstool-ng/scripts/build/companion_libs/mpfr.sh	2009-06-08 15:30:41.000000000 +0200
> @@ -64,7 +64,8 @@ do_mpfr() {
>      mpfr_opt=
>      # Under Cygwin, we can't build a thread-safe library
>      case "${CT_HOST}" in
> -        *-cygwin)   mpfr_opt="--disable-thread-safe";;
> +        *cygwin*)   mpfr_opt="--disable-thread-safe";;
> +        *mingw*)    mpfr_opt="--disable-thread-safe";;
>          *)          mpfr_opt="--enable-thread-safe";;
>      esac
>  

This chunk should have gone in a separate patch, to prepare for that one.
Anyway, already applied this chunk as-is.

Overall, looks good. I'l wait for your answer on CT_REAL_TARGET before
I commit.

Oh, by the way... It just occured to me that your original messages didn't
make it to the list. :-( Did you get an error message about this? If so,
what was the reason?

Regards,
Yann E. MORIN.

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +0/33 662376056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| --==< ^_^ >==-- `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
`------------------------------^-------^------------------^--------------------'


--
For unsubscribe information see http://sourceware.org/lists.html#faq


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]