scripts/build/libc/newlib.sh
author "Benoît Thébaudeau" <benoit.thebaudeau@advansee.com>
Mon Apr 16 15:25:36 2012 +0200 (2012-04-16)
changeset 2941 13e40098fffc
parent 2808 8ad3ba55b973
child 3094 07a87075fa2d
permissions -rw-r--r--
cc/gcc: update Linaro GCC revisions to 2012.04

Update Linaro GCC with the latest available revisions.

The 4.7 revision is also released, but the infrastructure is not yet ready for
it in CT-NG.

Signed-off-by: "Benoît Thébaudeau" <benoit.thebaudeau@advansee.com>
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@2895
    52
    :
yann@2895
    53
}
yann@2895
    54
yann@2895
    55
do_libc() {
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
kpet@2647
    86
    if [ "${CT_LIBC_NEWLIB_DISABLE_SUPPLIED_SYSCALLS}" = "y" ]; then
kpet@2647
    87
        newlib_opts+=( "--disable-newlib-supplied-syscalls" )
kpet@2647
    88
    else
kpet@2647
    89
        newlib_opts+=( "--enable-newlib-supplied-syscalls" )
kpet@2647
    90
    fi
yann@2165
    91
zhenqiang@2783
    92
    [ "${CT_LIBC_NEWLIB_ENABLE_TARGET_OPTSPACE}" = "y" ] && newlib_opts+=("--enable-target-optspace")
zhenqiang@2783
    93
yann@1588
    94
    # Note: newlib handles the build/host/target a little bit differently
yann@1588
    95
    # than one would expect:
yann@1588
    96
    #   build  : not used
yann@1588
    97
    #   host   : the machine building newlib
yann@1588
    98
    #   target : the machine newlib runs on
yann@2352
    99
    CT_DoExecLog CFG                                    \
yann@1593
   100
    CC_FOR_BUILD="${CT_BUILD}-gcc"                      \
zhenqiang@2787
   101
    CFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}"             \
yann@1593
   102
    AR=${CT_TARGET}-ar                                  \
yann@1593
   103
    RANLIB=${CT_TARGET}-ranlib                          \
yann@1900
   104
    "${CT_SRC_DIR}/newlib-$(libc_newlib_version)/configure" \
yann@1593
   105
        --host=${CT_BUILD}                              \
yann@1593
   106
        --target=${CT_TARGET}                           \
yann@2165
   107
        --prefix=${CT_PREFIX_DIR}                       \
zhenqiang@2781
   108
        "${newlib_opts[@]}"                             \
zhenqiang@2781
   109
        "${CT_LIBC_NEWLIB_EXTRA_CONFIG_ARRAY[@]}"
yann@1982
   110
mgl@1371
   111
    CT_DoLog EXTRA "Building C library"
yann@2275
   112
    CT_DoExecLog ALL make ${JOBSFLAGS}
mgl@1371
   113
mgl@1371
   114
    CT_DoLog EXTRA "Installing C library"
mgl@1371
   115
    CT_DoExecLog ALL make install install_root="${CT_SYSROOT_DIR}"
mgl@1371
   116
zhenqiang@2808
   117
    if [ "${CT_BUILD_MANUALS}" = "y" ]; then
zhenqiang@2808
   118
        local -a doc_dir="${CT_BUILD_DIR}/build-libc/${CT_TARGET}"
zhenqiang@2808
   119
zhenqiang@2808
   120
        CT_DoLog EXTRA "Building and installing the C library manual"
zhenqiang@2808
   121
        CT_DoExecLog ALL make pdf html
zhenqiang@2808
   122
zhenqiang@2808
   123
        # NEWLIB install-{pdf.html} fail for some versions
zhenqiang@2808
   124
        CT_DoExecLog ALL mkdir -p "${CT_PREFIX_DIR}/share/doc/newlib"
zhenqiang@2808
   125
        CT_DoExecLog ALL cp -av "${doc_dir}/newlib/libc/libc.pdf"   \
zhenqiang@2808
   126
                                "${doc_dir}/newlib/libm/libm.pdf"   \
zhenqiang@2808
   127
                                "${doc_dir}/newlib/libc/libc.html"  \
zhenqiang@2808
   128
                                "${doc_dir}/newlib/libm/libm.html"  \
zhenqiang@2808
   129
                                "${CT_PREFIX_DIR}/share/doc/newlib"
zhenqiang@2808
   130
    fi
zhenqiang@2808
   131
mgl@1371
   132
    CT_EndStep
mgl@1371
   133
}
mgl@1371
   134
mgl@1371
   135
do_libc_finish() {
yann@1589
   136
    CT_DoStep INFO "Finishing C library"
mgl@1373
   137
    
mgl@1373
   138
    if [ "${CT_ATMEL_AVR32_HEADERS}" = "y" ]; then
yann@1589
   139
        CT_DoLog EXTRA "Installing Atmel's AVR32 headers"
mgl@1373
   140
        CT_DoExecLog ALL cp -r ${CT_SRC_DIR}/avr32headers "${CT_PREFIX_DIR}/${CT_TARGET}/include/avr32"
mgl@1373
   141
    fi
mgl@1373
   142
mgl@1373
   143
    CT_EndStep
mgl@1371
   144
}