crosstool-ng/scripts/build/libc/newlib.sh
Bryan Hundven 7b8d76ed56 scripts/*/*.sh: prioritize http downloads
Prirotize http downloads before ftp downloads.
By having http download first, those using proxy will work with the
current download mechnism.

This tells me that that mechnism needs to be updated.
(proxy support and/or kconfig toggles)

closes #3

Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
2015-02-01 21:00:14 -08:00

152 lines
5.6 KiB
Bash

# This file adds functions to build the Newlib C library
# Copyright 2009 DoréDevelopment
# Licensed under the GPL v2. See COPYING in the root of this package
#
# Edited by Martin Lund <mgl@doredevelopment.dk>
#
LIBC_NEWLIB_AVR_HDRS_URI="http://www.atmel.com/Images"
LIBC_NEWLIB_AVR_HDRS_BASE="avr-headers-3.2.3.970"
LIBC_NEWLIB_AVR_HDRS_EXT=".zip"
do_libc_get() {
local libc_src="{http://mirrors.kernel.org/sourceware/newlib,
ftp://sourceware.org/pub/newlib}"
if [ "${CT_LIBC_NEWLIB_CUSTOM}" = "y" ]; then
CT_GetCustom "newlib" "${CT_LIBC_VERSION}" \
"${CT_LIBC_NEWLIB_CUSTOM_LOCATION}"
else # ! custom location
if echo ${CT_LIBC_VERSION} |grep -q linaro; then
YYMM=`echo ${CT_LIBC_VERSION} |cut -d- -f3 |${sed} -e 's,^..,,'`
CT_GetFile "newlib-${CT_LIBC_VERSION}" ${libc_src} \
https://releases.linaro.org/${YYMM}/components/toolchain/newlib-linaro \
http://cbuild.validation.linaro.org/snapshots
else
CT_GetFile "newlib-${CT_LIBC_VERSION}" ${libc_src} \
http://mirrors.kernel.org/sources.redhat.com/newlib
fi
fi # ! custom location
if [ "${CT_ATMEL_AVR32_HEADERS}" = "y" ]; then
CT_GetFile ${LIBC_NEWLIB_AVR_HDRS_BASE} \
${LIBC_NEWLIB_AVR_HDRS_EXT} \
${LIBC_NEWLIB_AVR_HDRS_URI}
fi
}
do_libc_extract() {
# If using custom directory location, nothing to do
if [ "${CT_LIBC_NEWLIB_CUSTOM}" = "y" \
-a -d "${CT_SRC_DIR}/newlib-${CT_LIBC_VERSION}" ]; then
return 0
fi
CT_Extract "newlib-${CT_LIBC_VERSION}"
CT_Patch "newlib" "${CT_LIBC_VERSION}"
if [ "${CT_ATMEL_AVR32_HEADERS}" = "y" ]; then
# The avr32header zip file extracts to avr32/*.h
# Put that in its directory, the same as normal tarballs
CT_Extract ${LIBC_NEWLIB_AVR_HDRS_BASE} \
-d ${CT_SRC_DIR}/${LIBC_NEWLIB_AVR_HDRS_BASE}
fi
}
do_libc_check_config() {
:
}
do_libc_start_files() {
CT_DoStep INFO "Installing C library headers & start files"
CT_DoExecLog ALL cp -a "${CT_SRC_DIR}/newlib-${CT_LIBC_VERSION}/newlib/libc/include/." \
"${CT_HEADERS_DIR}"
if [ "${CT_ATMEL_AVR32_HEADERS}" = "y" ]; then
CT_DoLog EXTRA "Installing Atmel's AVR32 headers"
CT_DoExecLog ALL mkdir -p "${CT_PREFIX_DIR}/${CT_TARGET}/include"
CT_DoExecLog ALL cp -r "${CT_SRC_DIR}/${LIBC_NEWLIB_AVR_HDRS_BASE}/avr32" \
"${CT_PREFIX_DIR}/${CT_TARGET}/include/"
fi
CT_EndStep
}
do_libc() {
local -a newlib_opts
CT_DoStep INFO "Installing C library"
mkdir -p "${CT_BUILD_DIR}/build-libc"
cd "${CT_BUILD_DIR}/build-libc"
CT_DoLog EXTRA "Configuring C library"
if [ "${CT_LIBC_NEWLIB_IO_C99FMT}" = "y" ]; then
newlib_opts+=( "--enable-newlib-io-c99-formats" )
else
newlib_opts+=( "--disable-newlib-io-c99-formats" )
fi
if [ "${CT_LIBC_NEWLIB_IO_LL}" = "y" ]; then
newlib_opts+=( "--enable-newlib-io-long-long" )
else
newlib_opts+=( "--disable-newlib-io-long-long" )
fi
if [ "${CT_LIBC_NEWLIB_IO_FLOAT}" = "y" ]; then
newlib_opts+=( "--enable-newlib-io-float" )
if [ "${CT_LIBC_NEWLIB_IO_LDBL}" = "y" ]; then
newlib_opts+=( "--enable-newlib-io-long-double" )
else
newlib_opts+=( "--disable-newlib-io-long-double" )
fi
else
newlib_opts+=( "--disable-newlib-io-float" )
newlib_opts+=( "--disable-newlib-io-long-double" )
fi
if [ "${CT_LIBC_NEWLIB_DISABLE_SUPPLIED_SYSCALLS}" = "y" ]; then
newlib_opts+=( "--disable-newlib-supplied-syscalls" )
else
newlib_opts+=( "--enable-newlib-supplied-syscalls" )
fi
[ "${CT_LIBC_NEWLIB_ENABLE_TARGET_OPTSPACE}" = "y" ] && newlib_opts+=("--enable-target-optspace")
# Note: newlib handles the build/host/target a little bit differently
# than one would expect:
# build : not used
# host : the machine building newlib
# target : the machine newlib runs on
CT_DoExecLog CFG \
CC_FOR_BUILD="${CT_BUILD}-gcc" \
CFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}" \
AR=${CT_TARGET}-ar \
RANLIB=${CT_TARGET}-ranlib \
"${CT_SRC_DIR}/newlib-${CT_LIBC_VERSION}/configure" \
--host=${CT_BUILD} \
--target=${CT_TARGET} \
--prefix=${CT_PREFIX_DIR} \
"${newlib_opts[@]}" \
"${CT_LIBC_NEWLIB_EXTRA_CONFIG_ARRAY[@]}"
CT_DoLog EXTRA "Building C library"
CT_DoExecLog ALL make ${JOBSFLAGS}
CT_DoLog EXTRA "Installing C library"
CT_DoExecLog ALL make install install_root="${CT_SYSROOT_DIR}"
if [ "${CT_BUILD_MANUALS}" = "y" ]; then
local -a doc_dir="${CT_BUILD_DIR}/build-libc/${CT_TARGET}"
CT_DoLog EXTRA "Building and installing the C library manual"
CT_DoExecLog ALL make pdf html
# NEWLIB install-{pdf.html} fail for some versions
CT_DoExecLog ALL mkdir -p "${CT_PREFIX_DIR}/share/doc/newlib"
CT_DoExecLog ALL cp -av "${doc_dir}/newlib/libc/libc.pdf" \
"${doc_dir}/newlib/libm/libm.pdf" \
"${doc_dir}/newlib/libc/libc.html" \
"${doc_dir}/newlib/libm/libm.html" \
"${CT_PREFIX_DIR}/share/doc/newlib"
fi
CT_EndStep
}