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 1 of 1] companion_tools/autoconf: add autoconf tool


Richard, All,

On Sunday 10 January 2010 22:06:43 Richard Strand wrote:
> diff -r dbd5078816f9 -r b571c9ad20d5 config/companion_tools.in
> --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
> +++ b/config/companion_tools.in	Sun Jan 10 20:43:44 2010 +0000
> @@ -0,0 +1,29 @@
> +# Companion tools config options
> +
> +if EXPERIMENTAL

Yep, EXPERIMENTAL is OK.

> +menu "Companion tools"
> +
> +config COMP_TOOLS
> +    bool
> +    prompt "READ HELP before you say 'Y' here !!!"
> +    help
> +      No help yet - continue at your peril!
> +
> +if COMP_TOOLS
> +
> +config AUTOCONF
> +    bool
> +    prompt "autoconf"
> +    help
> +      No help yet
> +
> +if AUTOCONF
> +source config/companion_tools/autoconf.in
> +endif

No need for sub-files, see below.

> +endif
> +
> +endmenu
> +
> +endif
> diff -r dbd5078816f9 -r b571c9ad20d5 config/companion_tools/autoconf.in
> --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
> +++ b/config/companion_tools/autoconf.in	Sun Jan 10 20:43:44 2010 +0000
> @@ -0,0 +1,19 @@
> +# AUTOCONF options
> +
> +choice
> +    bool
> +    prompt "autoconf version"
> +# Don't remove next line
> +# CT_INSERT_VERSION_BELOW
> +
> +config AUTOCONF_V_2_65
> +    bool
> +    prompt "2.65"
> +
> +endchoice
> +
> +config AUTOCONF_VERSION
> +    string
> +# Don't remove next line
> +# CT_INSERT_VERSION_STRING_BELOW
> +    default "2.65" if AUTOCONF_V_2_65

We do not need to support multiple versions of the companion tools.
We're adding them just so the user does not need to update his/her system.
Just use what we need.

So, do not bother with a sub-file and sub-options, just hard-code the
strictly necessary stuff. Do not do any fancy config/options.

> diff -r dbd5078816f9 -r b571c9ad20d5 config/config.in
> --- a/config/config.in	Sun Jan 10 17:43:23 2010 +0100
> +++ b/config/config.in	Sun Jan 10 20:43:44 2010 +0000
> @@ -8,3 +8,4 @@
>  source config/debug.in
>  source config/tools.in
>  source config/companion_libs.in
> +source config/companion_tools.in

OK.

> diff -r dbd5078816f9 -r b571c9ad20d5 scripts/build/companion_tools/autoconf.sh
> --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
> +++ b/scripts/build/companion_tools/autoconf.sh	Sun Jan 10 20:43:44 2010 +0000
> @@ -0,0 +1,32 @@
> +# Build script for autoconf
> +
> +do_autoconf_get() { :; }
> +do_autoconf_extract() { :; }
> +do_autoconf() { :; }
> +
> +# Overide functions depending on configuration
> +if [ "${CT_AUTOCONF}" = "y" ]; then
> +
> +do_autoconf_get() {
> +    CT_GetFile "autoconf-${CT_AUTOCONF_VERSION}" {ftp,http}://ftp.gnu.org/gnu/autoconf/
> +}
> +
> +do_autoconf_extract() {
> +    CT_Extract "autoconf-${CT_AUTOCONF_VERSION}"
> +    CT_Patch "autoconf-${CT_AUTOCONF_VERSION}"
> +}
> +
> +do_autoconf() {
> +    CT_DoStep INFO "Installing autoconf"
> +    mkdir -p "${CT_BUILD_DIR}/build-autoconf"
> +    CT_Pushd "${CT_BUILD_DIR}/build-autoconf"
> +    CT_DoExecLog ALL ${CONFIG_SHELL} \
> +    "${CT_SRC_DIR}/autoconf-${CT_AUTOCONF_VERSION}/configure" \
> +        --prefix="${CT_COMP_TOOLS_DIR}"
> +    CT_DoExecLog ALL make
> +    CT_DoExecLog ALL make install
> +    CT_Popd
> +    CT_EndStep
> +}
> +
> +fi

OK.

> diff -r dbd5078816f9 -r b571c9ad20d5 scripts/crosstool-NG.sh.in
> --- a/scripts/crosstool-NG.sh.in	Sun Jan 10 17:43:23 2010 +0100
> +++ b/scripts/crosstool-NG.sh.in	Sun Jan 10 20:43:44 2010 +0000
> @@ -126,6 +126,7 @@
>  . "${CT_LIB_DIR}/scripts/build/cc/${CT_CC}.sh"
>  . "${CT_LIB_DIR}/scripts/build/tools.sh"
>  . "${CT_LIB_DIR}/scripts/build/debug.sh"
> +. "${CT_LIB_DIR}/scripts/build/companion_tools/autoconf.sh"
>  
>  # Target tuple: CT_TARGET needs a little love:
>  CT_DoBuildTargetTuple
> @@ -504,6 +505,7 @@
>          do_libc_get
>          do_tools_get
>          do_debug_get
> +        do_autoconf_get

As for the config file, a single do_companion_tools_get() might be better
( a-la do_debug_get() ).
Also, the list is in the order components are being built, move the get to
the top of the list.

>          CT_EndStep
>      fi
>  
> @@ -512,6 +514,16 @@
>              CT_DoForceRmdir "${CT_SRC_DIR}"
>              CT_DoExecLog ALL mkdir -p "${CT_SRC_DIR}"
>          fi
> +
> +        if [ "${CT_COMP_TOOLS}" = "y" ]; then
> +          export CT_COMP_TOOLS_DIR="${CT_PREFIX_DIR}/companion_tools"

See my previous mail: ${CT_WORK_DIR}/tools
The tools are needed only at build-time, not at run-time.
See also around line 80 in scripts/crosstool-NG.sh.in:
  CT_BIN_OVERIDE_DIR="${CT_WORK_DIR}/bin"
change into:
  CT_BIN_OVERIDE_DIR="${CT_WORK_DIR}/tools/bin"

> +          export PATH="${CT_COMP_TOOLS_DIR}/bin:${PATH}"
> +          CT_DoStep INFO "Extracting, patching and installing companion tools"
> +          do_autoconf_extract
> +          do_autoconf
> +          CT_EndStep
> +        fi

Move all of this into do_companion_tools_extract() and do_companion_tools(), 
again, like do_debug_extract() and do_debug(). Look at scripts/build/debug.sh
for how it's done in there.

Globally, that's pretty good! Keep up the good work! :-)

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.  |
`------------------------------^-------^------------------^--------------------'



--
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]