author | "Yann E. MORIN" <yann.morin.1998@free.fr> |
Wed Aug 01 19:02:06 2012 +0200 (2012-08-01) | |
changeset 3023 | c71635732a59 |
parent 2808 | 8ad3ba55b973 |
child 3094 | 07a87075fa2d |
permissions | -rw-r--r-- |
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 |
} |