scripts/build/libc/newlib.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Aug 02 18:26:53 2011 +0200 (2011-08-02)
changeset 2592 4908eb2b6f17
parent 2278 e86826b8621a
child 2647 cb0f31fe2535
permissions -rw-r--r--
scripts/functions: cvs retrieval first tries the mirror for tarballs

The cvs download helper looks for the local tarballs dir to see if it
can find a pre-downloaded tarball, and if it does not find it, does
the actual fetch to upstream via cvs.

In the process, it does not even try to get a tarball from the local
mirror, which can be useful if the mirror has been pre-populated
manually (or with a previously downloaded tree).

Fake a tarball get with the standard tarball-download helper, but
without specifying any upstream URL, which makes the helper directly
try the LAN mirror.

Of course, if no mirror is specified, no URL wil be available, and
the standard cvs retrieval will kick in.

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