scripts/build/companion_tools.sh
author Bryan Hundven <bryanhundven@gmail.com>
Sun Jun 26 03:26:54 2011 -0700 (2011-06-26)
changeset 2515 364b06df9e3a
permissions -rw-r--r--
glibc: Refactor startfiles/headers into do_libc_backend()

Refactor the contents of 'do_libc_start_files()' and 'do_libc()' into a
parameterized 'do_libc_backend()'. 'do_libc_start_files()' and 'do_libc()'
call 'do_libc_backend()' with either 'libc_mode=startfiles' or
'libc_mode=final' (respectively) so that the startfiles/headers and
the final libc builds are configured and built with the same options.

One example of where this is needed is when building a mips toolchain.
Previously, if you were building an n32 toolchain, you wouldn't have
noticed an issue, because if '-mabi' is not in CFLAGS, n32 is the
default:

http://sourceware.org/git/?p=glibc-ports.git;a=blob;f=sysdeps/mips/preconfigure;hb=HEAD

But when trying to build an o32 or n64 toolchain the build would
have failed. This is because (e)glibc expects "-mabi={o32,n32,n64}" to be
in CFLAGS, but was not previously provided in 'do_libc_start_files()'.
The build failure would happen in the shared-core gcc when it tries to
configure an n64 or o32 gcc with an n32 libc.

A simpler solution would have been to just add TARGET_CFLAGS to configure
in 'do_libc_start_files()', but this way makes configure and make
consistent for both steps.

Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
richard@1727
     1
# Wrapper to build the companion tools facilities
richard@1727
     2
richard@1727
     3
# List all companion tools facilities, and parse their scripts
richard@1727
     4
CT_COMP_TOOLS_FACILITY_LIST=
richard@1727
     5
for f in "${CT_LIB_DIR}/scripts/build/companion_tools/"*.sh; do
richard@1727
     6
    _f="$(basename "${f}" .sh)"
richard@1727
     7
    _f="${_f#???-}"
richard@1727
     8
    __f="CT_COMP_TOOLS_${_f}"
richard@1727
     9
    if [ "${!__f}" = "y" ]; then
richard@1727
    10
        CT_DoLog DEBUG "Enabling companion tools '${_f}'"
richard@1727
    11
        . "${f}"
richard@1727
    12
        CT_COMP_TOOLS_FACILITY_LIST="${CT_COMP_TOOLS_FACILITY_LIST} ${_f}"
richard@1727
    13
    else
richard@1727
    14
        CT_DoLog DEBUG "Disabling companion tools '${_f}'"
richard@1727
    15
    fi
richard@1727
    16
done
richard@1727
    17
richard@1727
    18
# Download the companion tools facilities
richard@1727
    19
do_companion_tools_get() {
richard@1727
    20
    for f in ${CT_COMP_TOOLS_FACILITY_LIST}; do
richard@1727
    21
        do_companion_tools_${f}_get
richard@1727
    22
    done
richard@1727
    23
}
richard@1727
    24
richard@1727
    25
# Extract and patch the companion tools facilities
richard@1727
    26
do_companion_tools_extract() {
richard@1727
    27
    for f in ${CT_COMP_TOOLS_FACILITY_LIST}; do
richard@1727
    28
        do_companion_tools_${f}_extract
richard@1727
    29
    done
richard@1727
    30
}
richard@1727
    31
richard@1727
    32
# Build the companion tools facilities
richard@1727
    33
do_companion_tools() {
richard@1727
    34
    for f in ${CT_COMP_TOOLS_FACILITY_LIST}; do
richard@1727
    35
        do_companion_tools_${f}_build
richard@1727
    36
    done
richard@1727
    37
}
richard@1727
    38