scripts/build/libc/newlib.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Wed May 18 23:00:46 2011 +0200 (2011-05-18)
changeset 2467 200836977ce6
parent 2278 e86826b8621a
child 2647 cb0f31fe2535
permissions -rw-r--r--
config: rename variables that are arrays

Make it explicit that a variable is an array bu the name of the variable.
It will be used later when .config gets munged to allow both multiple
arguments and arguments with spaces at the same time to be passed from the
configuration down to the build scripts.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
mgl@1371
     1
# This file adds functions to build the Newlib C library
mgl@1467
     2
# Copyright 2009 DoréDevelopment
mgl@1371
     3
# Licensed under the GPL v2. See COPYING in the root of this package
mgl@1371
     4
#
mgl@1467
     5
# Edited by Martin Lund <mgl@doredevelopment.dk>
mgl@1371
     6
#
mgl@1371
     7
yann@1900
     8
libc_newlib_version() {
yann@1593
     9
    if [ -z "${CT_LIBC_NEWLIB_CVS}" ]; then
yann@1900
    10
        echo "${CT_LIBC_VERSION}"
yann@1593
    11
    else
yann@1900
    12
        echo "cvs${CT_LIBC_VERSION:+-${CT_LIBC_VERSION}}"
yann@1593
    13
    fi
yann@1593
    14
}
mgl@1371
    15
mgl@1371
    16
do_libc_get() {
yann@1930
    17
    local libc_src
yann@1930
    18
    local avr32headers_src
yann@1930
    19
mgl@1371
    20
    libc_src="ftp://sources.redhat.com/pub/newlib"
mgl@1373
    21
    avr32headers_src="http://dev.doredevelopment.dk/avr32-toolchain/sources"
yann@1593
    22
yann@1593
    23
    if [ -z "${CT_LIBC_NEWLIB_CVS}" ]; then
yann@1593
    24
        CT_GetFile "newlib-${CT_LIBC_VERSION}" ${libc_src}
yann@1593
    25
    else
yann@1900
    26
        CT_GetCVS "newlib-$(libc_newlib_version)"                   \
yann@1593
    27
                  ":pserver:anoncvs@sources.redhat.com:/cvs/src"    \
yann@1593
    28
                  "newlib"                                          \
yann@1593
    29
                  "${CT_LIBC_VERSION}"                              \
yann@1900
    30
                  "newlib-$(libc_newlib_version)=src"
yann@1593
    31
    fi
mgl@1371
    32
mgl@1373
    33
    if [ "${CT_ATMEL_AVR32_HEADERS}" = "y" ]; then
mgl@1373
    34
        CT_GetFile "avr32headers" ${avr32headers_src}
mgl@1373
    35
    fi
mgl@1371
    36
}
mgl@1371
    37
mgl@1371
    38
do_libc_extract() {
yann@1900
    39
    CT_Extract "newlib-$(libc_newlib_version)"
yann@1901
    40
    CT_Patch "newlib" "$(libc_newlib_version)"
mgl@1371
    41
mgl@1373
    42
    if [ "${CT_ATMEL_AVR32_HEADERS}" = "y" ]; then
mgl@1373
    43
        CT_Extract "avr32headers"
mgl@1373
    44
    fi
mgl@1371
    45
}
mgl@1371
    46
mgl@1371
    47
do_libc_check_config() {
mgl@1371
    48
    :
mgl@1371
    49
}
mgl@1371
    50
mgl@1371
    51
do_libc_start_files() {
yann@2165
    52
    local -a newlib_opts
yann@2165
    53
mgl@1371
    54
    CT_DoStep INFO "Installing C library"
mgl@1371
    55
mgl@1371
    56
    mkdir -p "${CT_BUILD_DIR}/build-libc"
mgl@1371
    57
    cd "${CT_BUILD_DIR}/build-libc"
mgl@1371
    58
mgl@1371
    59
    CT_DoLog EXTRA "Configuring C library"
mgl@1371
    60
yann@2167
    61
    if [ "${CT_LIBC_NEWLIB_IO_C99FMT}" = "y" ]; then
yann@2167
    62
        newlib_opts+=( "--enable-newlib-io-c99-formats" )
yann@2167
    63
    else
yann@2167
    64
        newlib_opts+=( "--disable-newlib-io-c99-formats" )
yann@2167
    65
    fi
yann@2166
    66
    if [ "${CT_LIBC_NEWLIB_IO_LL}" = "y" ]; then
yann@2166
    67
        newlib_opts+=( "--enable-newlib-io-long-long" )
yann@2166
    68
    else
yann@2166
    69
        newlib_opts+=( "--disable-newlib-io-long-long" )
yann@2166
    70
    fi
yann@2165
    71
    if [ "${CT_LIBC_NEWLIB_IO_FLOAT}" = "y" ]; then
yann@2165
    72
        newlib_opts+=( "--enable-newlib-io-float" )
yann@2165
    73
        if [ "${CT_LIBC_NEWLIB_IO_LDBL}" = "y" ]; then
yann@2165
    74
            newlib_opts+=( "--enable-newlib-io-long-double" )
yann@2165
    75
        else
yann@2165
    76
            newlib_opts+=( "--disable-newlib-io-long-double" )
yann@2165
    77
        fi
yann@2165
    78
    else
yann@2165
    79
        newlib_opts+=( "--disable-newlib-io-float" )
yann@2165
    80
        newlib_opts+=( "--disable-newlib-io-long-double" )
yann@2165
    81
    fi
yann@2165
    82
yann@1588
    83
    # Note: newlib handles the build/host/target a little bit differently
yann@1588
    84
    # than one would expect:
yann@1588
    85
    #   build  : not used
yann@1588
    86
    #   host   : the machine building newlib
yann@1588
    87
    #   target : the machine newlib runs on
yann@2352
    88
    CT_DoExecLog CFG                                    \
yann@1593
    89
    CC_FOR_BUILD="${CT_BUILD}-gcc"                      \
yann@1593
    90
    CFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS} -O"          \
yann@1593
    91
    AR=${CT_TARGET}-ar                                  \
yann@1593
    92
    RANLIB=${CT_TARGET}-ranlib                          \
yann@1900
    93
    "${CT_SRC_DIR}/newlib-$(libc_newlib_version)/configure" \
yann@1593
    94
        --host=${CT_BUILD}                              \
yann@1593
    95
        --target=${CT_TARGET}                           \
yann@2165
    96
        --prefix=${CT_PREFIX_DIR}                       \
yann@2165
    97
        "${newlib_opts[@]}"
yann@1982
    98
mgl@1371
    99
    CT_DoLog EXTRA "Building C library"
yann@2275
   100
    CT_DoExecLog ALL make ${JOBSFLAGS}
mgl@1371
   101
mgl@1371
   102
    CT_DoLog EXTRA "Installing C library"
mgl@1371
   103
    CT_DoExecLog ALL make install install_root="${CT_SYSROOT_DIR}"
mgl@1371
   104
mgl@1371
   105
    CT_EndStep
mgl@1371
   106
}
mgl@1371
   107
yann@1982
   108
do_libc() {
yann@1982
   109
    :
yann@1982
   110
}
yann@1982
   111
mgl@1371
   112
do_libc_finish() {
yann@1589
   113
    CT_DoStep INFO "Finishing C library"
mgl@1373
   114
    
mgl@1373
   115
    if [ "${CT_ATMEL_AVR32_HEADERS}" = "y" ]; then
yann@1589
   116
        CT_DoLog EXTRA "Installing Atmel's AVR32 headers"
mgl@1373
   117
        CT_DoExecLog ALL cp -r ${CT_SRC_DIR}/avr32headers "${CT_PREFIX_DIR}/${CT_TARGET}/include/avr32"
mgl@1373
   118
    fi
mgl@1373
   119
mgl@1373
   120
    CT_EndStep
mgl@1371
   121
}