New make target to save the configured nad built!) toolchain.
author"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sat May 12 09:54:29 2007 +0000 (2007-05-12)
changeset 87adb773fccc6b
parent 86 2fc16aeb1622
child 88 f67b52e42fd1
New make target to save the configured nad built!) toolchain.
Makefile
scripts/tarball.sh
     1.1 --- a/Makefile	Fri May 11 19:08:32 2007 +0000
     1.2 +++ b/Makefile	Sat May 12 09:54:29 2007 +0000
     1.3 @@ -25,6 +25,7 @@
     1.4  help::
     1.5  	@echo  'Build targets:'
     1.6  	@echo  '* build          - Build the toolchain'
     1.7 +	@echo  '  tarball        - Build a tarball of the configured toolchain'
     1.8  	@echo  '  clean          - Remove generated files'
     1.9  	@echo  '  distclean      - Remove generated files, configuration and build directories'
    1.10  
    1.11 @@ -42,6 +43,10 @@
    1.12  build: .config
    1.13  	@$(CT_TOP_DIR)/scripts/crosstool.sh
    1.14  
    1.15 +.PHONY: tarball
    1.16 +tarball:
    1.17 +	@$(CT_TOP_DIR)/scripts/tarball.sh
    1.18 +
    1.19  .PHONY: distclean
    1.20  distclean:: clean
    1.21  	@rm -f .config* ..config.tmp
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/scripts/tarball.sh	Sat May 12 09:54:29 2007 +0000
     2.3 @@ -0,0 +1,88 @@
     2.4 +#!/bin/bash
     2.5 +
     2.6 +# This scripts makes a tarball of the configured toolchain
     2.7 +# Pre-requisites:
     2.8 +#  - crosstool-NG is configured
     2.9 +#  - components tarball are available
    2.10 +#  - toolchain is built successfully
    2.11 +
    2.12 +# We need the functions first:
    2.13 +. "${CT_TOP_DIR}/scripts/functions"
    2.14 +
    2.15 +# Log to a temporary file until we have built our environment
    2.16 +CT_ACTUAL_LOG_FILE="${CT_TOP_DIR}/$$.log"
    2.17 +
    2.18 +# Override log level
    2.19 +unset CT_LOG_ERROR CT_LOG_WARN CT_LOG_EXTRA CT_LOG_DEBUG
    2.20 +CT_LOG_INFO=y
    2.21 +CT_LOG_LEVEL_MAX="INFO"
    2.22 +
    2.23 +# Parse the configuration file:
    2.24 +. ${CT_TOP_DIR}/.config
    2.25 +
    2.26 +CT_DoBuildTargetTriplet
    2.27 +
    2.28 +# Kludge: if any of the config options needs either CT_TARGET or CT_TOP_DIR,
    2.29 +# re-parse them:
    2.30 +. "${CT_TOP_DIR}/.config"
    2.31 +
    2.32 +# Build the files' base names
    2.33 +CT_KERNEL_FILE="${CT_KERNEL}-${CT_KERNEL_VERSION}"
    2.34 +CT_BINUTILS_FILE="binutils-${CT_BINUTILS_VERSION}"
    2.35 +CT_LIBC_FILE="${CT_LIBC}-${CT_LIBC_VERSION}"
    2.36 +for addon in ${CT_LIBC_ADDONS_LIST}; do
    2.37 +    CT_LIBC_ADDONS_FILES="${CT_LIBC_ADDONS_FILES} ${CT_LIBC}-${addon}-${CT_LIBC_VERSION}"
    2.38 +done
    2.39 +[ "${CT_LIBC_GLIBC_USE_PORTS}" = "y" ] && CT_LIBC_ADDONS_FILES="${CT_LIBC_ADDONS_FILES} ${CT_LIBC}-ports-${CT_LIBC_VERSION}"
    2.40 +[ "${CT_LIBC_UCLIBC_LOCALES}" = "y" ]  && CT_LIBC_ADDONS_FILES="${CT_LIBC_ADDONS_FILES} ${CT_LIBC}-locales-030818"
    2.41 +[ "${CT_CC_USE_CORE}" = "y" ]          && CT_CC_CORE_FILE="${CT_CC_CORE}-${CT_CC_CORE_VERSION}"
    2.42 +CT_CC_FILE="${CT_CC}-${CT_CC_VERSION}"
    2.43 +[ "${CT_ARCH_FLOAT_SW_LIBFLOAT}" = "y" ] && CT_LIBFLOAT_FILE="libfloat-990616"
    2.44 +
    2.45 +# Build a one-line list of the files to ease scanning below
    2.46 +CT_TARBALLS_DIR="${CT_TOP_DIR}/targets/tarballs"
    2.47 +CT_TARBALLS=" "
    2.48 +for file_var in CT_KERNEL_FILE CT_BINUTILS_FILE CT_LIBC_FILE CT_LIBC_ADDONS_FILES CT_CC_CORE_FILE CT_CC_FILE CT_LIBFLOAT_FILE; do
    2.49 +    for file in ${!file_var}; do
    2.50 +        ext=`CT_GetFileExtension "${file}"`
    2.51 +        CT_TestAndAbort "Missing tarball for: \"${file}\"" -z "${ext}"
    2.52 +        CT_TARBALLS="${CT_TARBALLS}${file}${ext} "
    2.53 +    done
    2.54 +done
    2.55 +
    2.56 +# We need to emulate a build directory:
    2.57 +CT_BUILD_DIR="${CT_TOP_DIR}/targets/${CT_TARGET}/build"
    2.58 +mkdir -p "${CT_BUILD_DIR}"
    2.59 +CT_MktempDir tempdir
    2.60 +
    2.61 +# Save crosstool-ng, as it is configured for the current toolchain.
    2.62 +topdir=`basename "${CT_TOP_DIR}"`
    2.63 +CT_Pushd "${CT_TOP_DIR}/.."
    2.64 +
    2.65 +botdir=`pwd`
    2.66 +
    2.67 +# Build the list of files to exclude:
    2.68 +echo "${topdir}/*.log" >"${tempdir}/${CT_TARGET}.list"
    2.69 +echo "${topdir}/targets/*-*-*-*" >>"${tempdir}/${CT_TARGET}.list"
    2.70 +for t in `ls -1 "${topdir}/targets/tarballs/"`; do
    2.71 +    case "${CT_TARBALLS}" in
    2.72 +        *" ${t} "*) ;;
    2.73 +        *)          echo "${topdir}/targets/tarballs/${t}" >>"${tempdir}/${CT_TARGET}.list"
    2.74 +    esac
    2.75 +done
    2.76 +
    2.77 +CT_DoLog INFO "Saving crosstool"
    2.78 +tar cfj "${CT_PREFIX_DIR}/${topdir}.${CT_TARGET}.tar.bzip2" \
    2.79 +    --no-wildcards-match-slash                              \
    2.80 +    -X "${tempdir}/${CT_TARGET}.list"                       \
    2.81 +    "${topdir}"                                             2>/dev/null
    2.82 +
    2.83 +CT_Popd
    2.84 +
    2.85 +# Save the generated toolchain
    2.86 +CT_DoLog INFO "Saving the generated toolchain"
    2.87 +tar cfj "${botdir}/${CT_TARGET}.tar.bz2" "${CT_PREFIX_DIR}" 2>/dev/null
    2.88 +
    2.89 +rm -f "${CT_PREFIX_DIR}/${topdir}.${CT_TARGET}.tar.bzip2"
    2.90 +rm -rf "${tempdir}"
    2.91 +rm -f "${CT_TOP_DIR}/$$.log"