yann@87: #!/bin/bash yann@87: yann@87: # This scripts makes a tarball of the configured toolchain yann@87: # Pre-requisites: yann@87: # - crosstool-NG is configured yann@87: # - components tarball are available yann@87: # - toolchain is built successfully yann@87: yann@87: # We need the functions first: yann@87: . "${CT_TOP_DIR}/scripts/functions" yann@87: yann@115: exec 6>&1 yann@115: exec >/dev/null yann@87: yann@87: # Parse the configuration file: yann@87: . ${CT_TOP_DIR}/.config yann@87: yann@87: CT_DoBuildTargetTriplet yann@87: yann@87: # Kludge: if any of the config options needs either CT_TARGET or CT_TOP_DIR, yann@87: # re-parse them: yann@87: . "${CT_TOP_DIR}/.config" yann@87: yann@130: # Override log level yann@130: unset CT_LOG_ERROR CT_LOG_WARN CT_LOG_EXTRA CT_LOG_DEBUG yann@130: CT_LOG_INFO=y yann@130: CT_LOG_LEVEL_MAX="INFO" yann@130: yann@87: # Build the files' base names yann@87: CT_KERNEL_FILE="${CT_KERNEL}-${CT_KERNEL_VERSION}" yann@87: CT_BINUTILS_FILE="binutils-${CT_BINUTILS_VERSION}" yann@87: CT_LIBC_FILE="${CT_LIBC}-${CT_LIBC_VERSION}" yann@87: for addon in ${CT_LIBC_ADDONS_LIST}; do yann@87: CT_LIBC_ADDONS_FILES="${CT_LIBC_ADDONS_FILES} ${CT_LIBC}-${addon}-${CT_LIBC_VERSION}" yann@87: done yann@87: [ "${CT_LIBC_GLIBC_USE_PORTS}" = "y" ] && CT_LIBC_ADDONS_FILES="${CT_LIBC_ADDONS_FILES} ${CT_LIBC}-ports-${CT_LIBC_VERSION}" yann@87: [ "${CT_LIBC_UCLIBC_LOCALES}" = "y" ] && CT_LIBC_ADDONS_FILES="${CT_LIBC_ADDONS_FILES} ${CT_LIBC}-locales-030818" yann@87: [ "${CT_CC_USE_CORE}" = "y" ] && CT_CC_CORE_FILE="${CT_CC_CORE}-${CT_CC_CORE_VERSION}" yann@87: CT_CC_FILE="${CT_CC}-${CT_CC_VERSION}" yann@87: [ "${CT_ARCH_FLOAT_SW_LIBFLOAT}" = "y" ] && CT_LIBFLOAT_FILE="libfloat-990616" yann@87: yann@87: # Build a one-line list of the files to ease scanning below yann@87: CT_TARBALLS_DIR="${CT_TOP_DIR}/targets/tarballs" yann@87: CT_TARBALLS=" " yann@87: 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 yann@87: for file in ${!file_var}; do yann@87: ext=`CT_GetFileExtension "${file}"` yann@87: CT_TestAndAbort "Missing tarball for: \"${file}\"" -z "${ext}" yann@87: CT_TARBALLS="${CT_TARBALLS}${file}${ext} " yann@87: done yann@87: done yann@87: yann@87: # We need to emulate a build directory: yann@87: CT_BUILD_DIR="${CT_TOP_DIR}/targets/${CT_TARGET}/build" yann@87: mkdir -p "${CT_BUILD_DIR}" yann@87: CT_MktempDir tempdir yann@87: yann@87: # Save crosstool-ng, as it is configured for the current toolchain. yann@87: topdir=`basename "${CT_TOP_DIR}"` yann@87: CT_Pushd "${CT_TOP_DIR}/.." yann@87: yann@87: botdir=`pwd` yann@87: yann@87: # Build the list of files to exclude: yann@87: echo "${topdir}/*.log" >"${tempdir}/${CT_TARGET}.list" yann@87: echo "${topdir}/targets/*-*-*-*" >>"${tempdir}/${CT_TARGET}.list" yann@87: for t in `ls -1 "${topdir}/targets/tarballs/"`; do yann@87: case "${CT_TARBALLS}" in yann@87: *" ${t} "*) ;; yann@87: *) echo "${topdir}/targets/tarballs/${t}" >>"${tempdir}/${CT_TARGET}.list" yann@87: esac yann@87: done yann@87: yann@87: CT_DoLog INFO "Saving crosstool" yann@87: tar cfj "${CT_PREFIX_DIR}/${topdir}.${CT_TARGET}.tar.bzip2" \ yann@87: --no-wildcards-match-slash \ yann@87: -X "${tempdir}/${CT_TARGET}.list" \ yann@87: "${topdir}" 2>/dev/null yann@87: yann@87: CT_Popd yann@87: yann@87: # Save the generated toolchain yann@87: CT_DoLog INFO "Saving the generated toolchain" yann@87: tar cfj "${botdir}/${CT_TARGET}.tar.bz2" "${CT_PREFIX_DIR}" 2>/dev/null yann@87: yann@87: rm -f "${CT_PREFIX_DIR}/${topdir}.${CT_TARGET}.tar.bzip2" yann@87: rm -rf "${tempdir}"