scripts/build/libc/newlib.sh
author Zhenqiang Chen <zhenqiang.chen@linaro.org>
Thu Dec 15 15:20:33 2011 +0800 (2011-12-15)
changeset 2808 8ad3ba55b973
parent 2787 85477445af56
child 2895 86ea5204e9ce
permissions -rw-r--r--
libc/newlib: build manual for newlib

Signed-off-by: Zhenqiang Chen <zhenqiang.chen@linaro.org>
[yann.morin.1998@anciens.enib.fr: copy with a single call to 'cp']
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     if [ "${CT_LIBC_NEWLIB_DISABLE_SUPPLIED_SYSCALLS}" = "y" ]; then
    83         newlib_opts+=( "--disable-newlib-supplied-syscalls" )
    84     else
    85         newlib_opts+=( "--enable-newlib-supplied-syscalls" )
    86     fi
    87 
    88     [ "${CT_LIBC_NEWLIB_ENABLE_TARGET_OPTSPACE}" = "y" ] && newlib_opts+=("--enable-target-optspace")
    89 
    90     # Note: newlib handles the build/host/target a little bit differently
    91     # than one would expect:
    92     #   build  : not used
    93     #   host   : the machine building newlib
    94     #   target : the machine newlib runs on
    95     CT_DoExecLog CFG                                    \
    96     CC_FOR_BUILD="${CT_BUILD}-gcc"                      \
    97     CFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}"             \
    98     AR=${CT_TARGET}-ar                                  \
    99     RANLIB=${CT_TARGET}-ranlib                          \
   100     "${CT_SRC_DIR}/newlib-$(libc_newlib_version)/configure" \
   101         --host=${CT_BUILD}                              \
   102         --target=${CT_TARGET}                           \
   103         --prefix=${CT_PREFIX_DIR}                       \
   104         "${newlib_opts[@]}"                             \
   105         "${CT_LIBC_NEWLIB_EXTRA_CONFIG_ARRAY[@]}"
   106 
   107     CT_DoLog EXTRA "Building C library"
   108     CT_DoExecLog ALL make ${JOBSFLAGS}
   109 
   110     CT_DoLog EXTRA "Installing C library"
   111     CT_DoExecLog ALL make install install_root="${CT_SYSROOT_DIR}"
   112 
   113     if [ "${CT_BUILD_MANUALS}" = "y" ]; then
   114         local -a doc_dir="${CT_BUILD_DIR}/build-libc/${CT_TARGET}"
   115 
   116         CT_DoLog EXTRA "Building and installing the C library manual"
   117         CT_DoExecLog ALL make pdf html
   118 
   119         # NEWLIB install-{pdf.html} fail for some versions
   120         CT_DoExecLog ALL mkdir -p "${CT_PREFIX_DIR}/share/doc/newlib"
   121         CT_DoExecLog ALL cp -av "${doc_dir}/newlib/libc/libc.pdf"   \
   122                                 "${doc_dir}/newlib/libm/libm.pdf"   \
   123                                 "${doc_dir}/newlib/libc/libc.html"  \
   124                                 "${doc_dir}/newlib/libm/libm.html"  \
   125                                 "${CT_PREFIX_DIR}/share/doc/newlib"
   126     fi
   127 
   128     CT_EndStep
   129 }
   130 
   131 do_libc() {
   132     :
   133 }
   134 
   135 do_libc_finish() {
   136     CT_DoStep INFO "Finishing C library"
   137     
   138     if [ "${CT_ATMEL_AVR32_HEADERS}" = "y" ]; then
   139         CT_DoLog EXTRA "Installing Atmel's AVR32 headers"
   140         CT_DoExecLog ALL cp -r ${CT_SRC_DIR}/avr32headers "${CT_PREFIX_DIR}/${CT_TARGET}/include/avr32"
   141     fi
   142 
   143     CT_EndStep
   144 }