scripts/build/libc/newlib.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Mon Jan 03 23:40:22 2011 +0100 (2011-01-03)
changeset 2267 7af68e6083aa
parent 2167 9cd8ee461fd0
child 2275 9ab4392430ad
permissions -rw-r--r--
libc-glibc: remove 2.3.6

This is an obsolete version which is no longer used by any sample (the only
user, the ia64 sample, has been removed).

It also makes the code path a bit complex, with twists just to accomodate
that version. Removing the version will make those twists go away, and
will ease commonalisation of glibc and eglibc in the future (hopefully!).

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_headers() {
mgl@1371
    52
    :
mgl@1371
    53
}
mgl@1371
    54
mgl@1371
    55
do_libc_start_files() {
yann@2165
    56
    local -a newlib_opts
yann@2165
    57
mgl@1371
    58
    CT_DoStep INFO "Installing C library"
mgl@1371
    59
mgl@1371
    60
    mkdir -p "${CT_BUILD_DIR}/build-libc"
mgl@1371
    61
    cd "${CT_BUILD_DIR}/build-libc"
mgl@1371
    62
mgl@1371
    63
    CT_DoLog EXTRA "Configuring C library"
mgl@1371
    64
yann@2167
    65
    if [ "${CT_LIBC_NEWLIB_IO_C99FMT}" = "y" ]; then
yann@2167
    66
        newlib_opts+=( "--enable-newlib-io-c99-formats" )
yann@2167
    67
    else
yann@2167
    68
        newlib_opts+=( "--disable-newlib-io-c99-formats" )
yann@2167
    69
    fi
yann@2166
    70
    if [ "${CT_LIBC_NEWLIB_IO_LL}" = "y" ]; then
yann@2166
    71
        newlib_opts+=( "--enable-newlib-io-long-long" )
yann@2166
    72
    else
yann@2166
    73
        newlib_opts+=( "--disable-newlib-io-long-long" )
yann@2166
    74
    fi
yann@2165
    75
    if [ "${CT_LIBC_NEWLIB_IO_FLOAT}" = "y" ]; then
yann@2165
    76
        newlib_opts+=( "--enable-newlib-io-float" )
yann@2165
    77
        if [ "${CT_LIBC_NEWLIB_IO_LDBL}" = "y" ]; then
yann@2165
    78
            newlib_opts+=( "--enable-newlib-io-long-double" )
yann@2165
    79
        else
yann@2165
    80
            newlib_opts+=( "--disable-newlib-io-long-double" )
yann@2165
    81
        fi
yann@2165
    82
    else
yann@2165
    83
        newlib_opts+=( "--disable-newlib-io-float" )
yann@2165
    84
        newlib_opts+=( "--disable-newlib-io-long-double" )
yann@2165
    85
    fi
yann@2165
    86
yann@1588
    87
    # Note: newlib handles the build/host/target a little bit differently
yann@1588
    88
    # than one would expect:
yann@1588
    89
    #   build  : not used
yann@1588
    90
    #   host   : the machine building newlib
yann@1588
    91
    #   target : the machine newlib runs on
yann@1593
    92
    CC_FOR_BUILD="${CT_BUILD}-gcc"                      \
yann@1593
    93
    CFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS} -O"          \
yann@1593
    94
    AR=${CT_TARGET}-ar                                  \
yann@1593
    95
    RANLIB=${CT_TARGET}-ranlib                          \
anthony@2154
    96
    CT_DoExecLog CFG                                    \
yann@1900
    97
    "${CT_SRC_DIR}/newlib-$(libc_newlib_version)/configure" \
yann@1593
    98
        --host=${CT_BUILD}                              \
yann@1593
    99
        --target=${CT_TARGET}                           \
yann@2165
   100
        --prefix=${CT_PREFIX_DIR}                       \
yann@2165
   101
        "${newlib_opts[@]}"
yann@1982
   102
mgl@1371
   103
    CT_DoLog EXTRA "Building C library"
yann@1982
   104
    CT_DoExecLog ALL make ${PARALLELMFLAGS}
mgl@1371
   105
mgl@1371
   106
    CT_DoLog EXTRA "Installing C library"
mgl@1371
   107
    CT_DoExecLog ALL make install install_root="${CT_SYSROOT_DIR}"
mgl@1371
   108
mgl@1371
   109
    CT_EndStep
mgl@1371
   110
}
mgl@1371
   111
yann@1982
   112
do_libc() {
yann@1982
   113
    :
yann@1982
   114
}
yann@1982
   115
mgl@1371
   116
do_libc_finish() {
yann@1589
   117
    CT_DoStep INFO "Finishing C library"
mgl@1373
   118
    
mgl@1373
   119
    if [ "${CT_ATMEL_AVR32_HEADERS}" = "y" ]; then
yann@1589
   120
        CT_DoLog EXTRA "Installing Atmel's AVR32 headers"
mgl@1373
   121
        CT_DoExecLog ALL cp -r ${CT_SRC_DIR}/avr32headers "${CT_PREFIX_DIR}/${CT_TARGET}/include/avr32"
mgl@1373
   122
    fi
mgl@1373
   123
mgl@1373
   124
    CT_EndStep
mgl@1371
   125
}