mirror of
https://github.com/crosstool-ng/crosstool-ng.git
synced 2024-12-21 05:43:09 +00:00
7b8d76ed56
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>
152 lines
5.6 KiB
Bash
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
|
|
}
|