| Index: tools/trusted_cross_toolchains/trusted-toolchain-creator.mipsel.squeeze.sh
|
| diff --git a/tools/trusted_cross_toolchains/trusted-toolchain-creator.mipsel.squeeze.sh b/tools/trusted_cross_toolchains/trusted-toolchain-creator.mipsel.squeeze.sh
|
| index 5f96de16e970b745f51871f7051ee31809b7de90..c38654d5406ca11fc91c295e05debeedf89aacb1 100755
|
| --- a/tools/trusted_cross_toolchains/trusted-toolchain-creator.mipsel.squeeze.sh
|
| +++ b/tools/trusted_cross_toolchains/trusted-toolchain-creator.mipsel.squeeze.sh
|
| @@ -6,14 +6,41 @@
|
| #@ This script creates the mips trusted SDK.
|
| #@ It must be run from the native_client directory.
|
|
|
| +# This script is intended to build a mipsel-linux-gnu cross compilation
|
| +# toolchain that runs on x86 linux and generates code for a little-endian,
|
| +# hard-float, mips32 target.
|
| +#
|
| +# It expects the host machine to have relatively recent versions of GMP (4.2.0
|
| +# or later), MPFR (2.4.2), and MPC (0.8.1) in order to build the GCC.
|
| +#
|
| +# Common way to get those is:
|
| +# sudo apt-get install libmpfr-dev libmpc-dev libgmp3-dev
|
| +
|
| ######################################################################
|
| # Config
|
| ######################################################################
|
|
|
| set -o nounset
|
| set -o errexit
|
| +set -o xtrace
|
| +
|
| +readonly MAKE_OPTS="-j8"
|
| +readonly ARCH="mips32"
|
| +
|
| +readonly GCC_URL="http://ftp.gnu.org/gnu/gcc/gcc-4.7.2/gcc-4.7.2.tar.bz2"
|
| +readonly GCC_SHA1SUM="a464ba0f26eef24c29bcd1e7489421117fb9ee35"
|
| +
|
| +readonly BINUTILS_URL="http://ftp.gnu.org/gnu/binutils/binutils-2.22.tar.bz2"
|
| +readonly BINUTILS_SHA1SUM="65b304a0b9a53a686ce50a01173d1f40f8efe404"
|
| +
|
| +readonly KERNEL_URL="http://www.linux-mips.org/pub/linux/mips/kernel/v2.6/linux-2.6.38.4.tar.gz"
|
| +readonly KERNEL_SHA1SUM="377fa5cf5f1d0c396759b1c4d147330e7e5b6d7f"
|
| +
|
| +readonly GDB_URL="http://ftp.gnu.org/gnu/gdb/gdb-7.5.tar.bz2"
|
| +readonly GDB_SHA1SUM="79b61152813e5730fa670c89e5fc3c04b670b02c"
|
|
|
| -readonly CS_URL=https://sourcery.mentor.com/sgpp/lite/mips/portal/package9761/public/mips-linux-gnu/mips-2011.09-75-mips-linux-gnu-i686-pc-linux-gnu.tar.bz2
|
| +readonly EGLIBC_SVN_URL="svn://svn.eglibc.org/branches/eglibc-2_14"
|
| +readonly EGLIBC_REVISION="20996"
|
|
|
| readonly DOWNLOAD_QEMU_URL="http://download.savannah.gnu.org/releases/qemu/qemu-0.12.5.tar.gz"
|
|
|
| @@ -21,16 +48,16 @@ readonly INSTALL_ROOT=$(pwd)/toolchain/linux_mips-trusted
|
|
|
| readonly TMP=$(pwd)/toolchain/tmp/crosstool-trusted
|
|
|
| -readonly PATCH_MIPS32=$(readlink -f ../third_party/qemu/qemu-0.12.5.patch_mips)
|
| +readonly BUILD_DIR=${TMP}/build
|
|
|
| -readonly CS_ROOT=${INSTALL_ROOT}/mips-release
|
| +readonly PATCH_MIPS32=$(readlink -f ../third_party/qemu/qemu-0.12.5.patch_mips)
|
|
|
| -readonly JAIL_MIPS32=${CS_ROOT}/mips-linux-gnu/libc/el
|
| +readonly JAIL_MIPS32=${INSTALL_ROOT}/sysroot
|
|
|
| -readonly MAKE_OPTS="-j8"
|
| -# These are simple compiler wrappers to force 32bit builds
|
| +# These are simple compiler wrappers to force 32bit builds.
|
| readonly CC32=$(readlink -f pnacl/scripts/mygcc32)
|
| readonly CXX32=$(readlink -f pnacl/scripts/myg++32)
|
| +
|
| ######################################################################
|
| # Helper
|
| ######################################################################
|
| @@ -44,7 +71,7 @@ Banner() {
|
| SubBanner() {
|
| echo "......................................................................"
|
| echo $*
|
| - echo "...................................................................."
|
| + echo "......................................................................"
|
| }
|
|
|
| Usage() {
|
| @@ -55,15 +82,73 @@ Usage() {
|
| echo
|
| }
|
|
|
| +CheckoutOrCopy() {
|
| + local url=$1
|
| + local revision=$2
|
| + local filename="${TMP}/${url##*/}"
|
| + local filetype="${url%%:*}"
|
| +
|
| + if [ "${filename}" == "" ]; then
|
| + echo "Unknown error occured. Aborting."
|
| + exit 1
|
| + fi
|
| +
|
| + if [ "${filetype}" == "svn" ]; then
|
| + SubBanner "checkout from ${url} -> ${filename}"
|
| + svn --force export -r ${revision} ${url} ${filename}
|
| + else
|
| + SubBanner "copying from ${url}"
|
| + cp ${url} ${filename}
|
| + fi
|
| +}
|
| +
|
| DownloadOrCopy() {
|
| - if [[ -f "$2" ]] ; then
|
| - echo "$2 already in place"
|
| - elif [[ $1 =~ 'http://' || $1 =~ 'https://' ]] ; then
|
| - SubBanner "downloading from $1 -> $2"
|
| - wget $1 -O $2
|
| + local url=$1
|
| + local filename="${TMP}/${url##*/}"
|
| + local filetype="${url%%:*}"
|
| +
|
| + if [ "${filename}" == "" ]; then
|
| + echo "Unknown error occured. Aborting."
|
| + exit 1
|
| + fi
|
| +
|
| + if [[ "${filetype}" == "http" || ${filetype} == "https" ]] ; then
|
| + if [ ! -f "${filename}" ]; then
|
| + SubBanner "downloading from ${url} -> ${filename}"
|
| + wget ${url} -O ${filename}
|
| + fi
|
| + else
|
| + SubBanner "copying from ${url}"
|
| + cp ${url} ${filename}
|
| + fi
|
| +}
|
| +
|
| +DownloadOrCopyAndVerify() {
|
| + local url=$1
|
| + local checksum=$2
|
| + local filename="${TMP}/${url##*/}"
|
| + local filetype="${url%%:*}"
|
| +
|
| + if [ "${filename}" == "" ]; then
|
| + echo "Unknown error occured. Aborting."
|
| + exit 1
|
| + fi
|
| +
|
| + if [[ "${filetype}" == "http" || ${filetype} == "https" ]] ; then
|
| + if [ ! -f "${filename}" ]; then
|
| + SubBanner "downloading from ${url} -> ${filename}"
|
| + wget ${url} -O ${filename}
|
| + fi
|
| + if [ "${checksum}" != "nochecksum" ]; then
|
| + if [ "$(sha1sum ${filename} | cut -d ' ' -f 1)" != "${checksum}" ]; then
|
| + echo "${filename} sha1sum failed. Deleting file and aborting."
|
| + rm -f ${filename}
|
| + exit 1
|
| + fi
|
| + fi
|
| else
|
| - SubBanner "copying from $1"
|
| - cp $1 $2
|
| + SubBanner "copying from ${url}"
|
| + cp ${url} ${filename}
|
| fi
|
| }
|
|
|
| @@ -72,7 +157,7 @@ DownloadOrCopy() {
|
| ######################################################################
|
|
|
| # some sanity checks to make sure this script is run from the right place
|
| -# with the right tools
|
| +# with the right tools.
|
| SanityCheck() {
|
| Banner "Sanity Checks"
|
| if [[ $(basename $(pwd)) != "native_client" ]] ; then
|
| @@ -100,6 +185,10 @@ ClearInstallDir() {
|
| rm -rf ${INSTALL_ROOT}/*
|
| }
|
|
|
| +ClearBuildDir() {
|
| + Banner "clearing dirs in ${BUILD_DIR}"
|
| + rm -rf ${BUILD_DIR}/*
|
| +}
|
|
|
| CreateTarBall() {
|
| local tarball=$1
|
| @@ -108,42 +197,251 @@ CreateTarBall() {
|
| }
|
|
|
|
|
| -# try to keep the tarball small
|
| -PruneDirs() {
|
| - Banner "pruning code sourcery tree"
|
| - SubBanner "Size before: $(du -msc ${CS_ROOT})"
|
| - rm -rf ${CS_ROOT}/share
|
| - rm -rf ${CS_ROOT}/mips-linux-gnu/lib/uclibc
|
| - rm -rf ${CS_ROOT}/mips-linux-gnu/lib/soft-float
|
| - rm -rf ${CS_ROOT}/mips-linux-gnu/lib/micromips
|
| +# Download the toolchain source tarballs or use a local copy when available.
|
| +DownloadOrCopyAndInstallToolchain() {
|
| + Banner "Installing toolchain"
|
|
|
| - rm -rf ${CS_ROOT}/mips-linux-gnu/libc/uclibc
|
| - rm -rf ${CS_ROOT}/mips-linux-gnu/libc/soft-float
|
| - rm -rf ${CS_ROOT}/mips-linux-gnu/libc/micromips
|
| + local tarball="${TMP}/${BINUTILS_URL##*/}"
|
| + DownloadOrCopyAndVerify ${BINUTILS_URL} ${BINUTILS_SHA1SUM}
|
| + SubBanner "extracting from ${tarball}"
|
| + tar jxf ${tarball} -C ${TMP}
|
|
|
| - rm -rf ${CS_ROOT}/lib/gcc/mips-linux-gnu/4.4.1/uclibc
|
| - rm -rf ${CS_ROOT}/lib/gcc/mips-linux-gnu/4.4.1/soft-float
|
| - rm -rf ${CS_ROOT}/lib/gcc/mips-linux-gnu/4.4.1/micromips
|
| + tarball="${TMP}/${GCC_URL##*/}"
|
| + DownloadOrCopyAndVerify ${GCC_URL} ${GCC_SHA1SUM}
|
| + SubBanner "extracting from ${tarball}"
|
| + tar jxf ${tarball} -C ${TMP}
|
|
|
| - rm -rf ${CS_ROOT}/mips-linux-gnu/include/c++/4.4.1/mips-linux-gnu/uclibc
|
| - rm -rf ${CS_ROOT}/mips-linux-gnu/include/c++/4.4.1/mips-linux-gnu/soft-float
|
| - rm -rf ${CS_ROOT}/mips-linux-gnu/include/c++/4.4.1/mips-linux-gnu/micromips
|
| + tarball="${TMP}/${GDB_URL##*/}"
|
| + DownloadOrCopyAndVerify ${GDB_URL} ${GDB_SHA1SUM}
|
| + SubBanner "extracting from ${tarball}"
|
| + tar jxf ${tarball} -C ${TMP}
|
|
|
| - SubBanner "Size after: $(du -msc ${CS_ROOT})"
|
| -}
|
| + tarball="${TMP}/${KERNEL_URL##*/}"
|
| + DownloadOrCopyAndVerify ${KERNEL_URL} ${KERNEL_SHA1SUM}
|
| + SubBanner "extracting from ${tarball}"
|
| + tar zxf ${tarball} -C ${TMP}
|
| +
|
| + local eglibc_dir="${TMP}/${EGLIBC_SVN_URL##*/}"
|
| + CheckoutOrCopy ${EGLIBC_SVN_URL} ${EGLIBC_REVISION}
|
| +
|
| +
|
| + Banner "Preparing the code"
|
| +
|
| + if [ ! -d "${TMP}/eglibc-2_14/libc/ports" ]; then
|
| + ln -s ${TMP}/eglibc-2_14/ports ${TMP}/eglibc-2_14/libc/ports
|
| + fi
|
| +
|
| + # Fix a minor syntax issue in tc-mips.c.
|
| + local OLD_TEXT="as_warn_where (fragp->fr_file, fragp->fr_line, msg);"
|
| + local NEW_TEXT="as_warn_where (fragp->fr_file, fragp->fr_line, \"%s\", msg);"
|
| + local FILE_NAME="${TMP}/binutils-2.22/gas/config/tc-mips.c"
|
| + sed -i "s/${OLD_TEXT}/${NEW_TEXT}/g" "${FILE_NAME}"
|
| +
|
| + export PATH=${INSTALL_ROOT}/bin:$PATH
|
| +
|
| +
|
| + Banner "Building binutils"
|
| +
|
| + mkdir -p ${BUILD_DIR}/binutils/
|
| + pushd ${BUILD_DIR}/binutils/
|
| +
|
| + SubBanner "Configuring"
|
| + ${TMP}/binutils-2.22/configure \
|
| + --prefix=${INSTALL_ROOT} \
|
| + --target=mipsel-linux-gnu \
|
| + --with-sysroot=${JAIL_MIPS32}
|
| +
|
| + SubBanner "Make"
|
| + make ${MAKE_OPTS} all-binutils all-gas all-ld
|
|
|
| + SubBanner "Install"
|
| + make ${MAKE_OPTS} install-binutils install-gas install-ld
|
| +
|
| + popd
|
| +
|
| +
|
| + Banner "Building GCC (initial)"
|
| +
|
| + mkdir -p ${BUILD_DIR}/gcc/initial
|
| + pushd ${BUILD_DIR}/gcc/initial
|
| +
|
| + SubBanner "Configuring"
|
| + ${TMP}/gcc-4.7.2/configure \
|
| + --prefix=${INSTALL_ROOT} \
|
| + --disable-libssp \
|
| + --disable-libgomp \
|
| + --disable-libmudflap \
|
| + --disable-fixed-point \
|
| + --disable-decimal-float \
|
| + --with-mips-plt \
|
| + --with-endian=little \
|
| + --with-arch=${ARCH} \
|
| + --enable-languages=c \
|
| + --with-newlib \
|
| + --without-headers \
|
| + --disable-shared \
|
| + --disable-threads \
|
| + --disable-libquadmath \
|
| + --disable-libatomic \
|
| + --target=mipsel-linux-gnu
|
|
|
| -# Download the codesourcery tarball or use a local copy when available.
|
| -DownloadOrCopyAndInstallCodeSourceryTarball() {
|
| - Banner "Installing Codesourcery Toolchain"
|
| - local tarball="${TMP}/${CS_URL##*/}"
|
| - DownloadOrCopy ${CS_URL} ${tarball}
|
| + SubBanner "Make"
|
| + make ${MAKE_OPTS} all
|
| +
|
| + SubBanner "Install"
|
| + make ${MAKE_OPTS} install
|
| +
|
| + popd
|
|
|
| - SubBanner "Untaring ${INSTALL_ROOT}/${tarball}"
|
| - tar jxf ${tarball} -C ${INSTALL_ROOT}
|
|
|
| - pushd ${INSTALL_ROOT}
|
| - mv mips-* mips-release
|
| + Banner "Installing Linux kernel headers"
|
| + pushd ${TMP}/linux-2.6.38.4
|
| + make headers_install ARCH=mips INSTALL_HDR_PATH=${JAIL_MIPS32}/usr
|
| + popd
|
| +
|
| +
|
| + Banner "Building EGLIBC (initial)"
|
| +
|
| + mkdir -p ${JAIL_MIPS32}/usr/lib
|
| + mkdir -p ${BUILD_DIR}/eglibc/initial
|
| + pushd ${BUILD_DIR}/eglibc/initial
|
| +
|
| + SubBanner "Configuring"
|
| + BUILD_CC=gcc \
|
| + AR=mipsel-linux-gnu-ar \
|
| + RANLIB=mipsel-linux-gnu-ranlib \
|
| + CC=mipsel-linux-gnu-gcc \
|
| + CXX=mipsel-linux-gnu-g++ \
|
| + ${TMP}/eglibc-2_14/libc/configure \
|
| + --prefix=/usr \
|
| + --enable-add-ons \
|
| + --build=i686-pc-linux-gnu \
|
| + --host=mipsel-linux-gnu \
|
| + --disable-profile \
|
| + --without-gd \
|
| + --without-cvs \
|
| + --with-headers=${JAIL_MIPS32}/usr/include
|
| +
|
| + SubBanner "Install"
|
| + make ${MAKE_OPTS} install-headers install_root=${JAIL_MIPS32} \
|
| + install-bootstrap-headers=yes
|
| +
|
| + make csu/subdir_lib && \
|
| + cp csu/crt1.o csu/crti.o csu/crtn.o ${JAIL_MIPS32}/usr/lib
|
| +
|
| + mipsel-linux-gnu-gcc -nostdlib \
|
| + -nostartfiles \
|
| + -shared \
|
| + -x c /dev/null \
|
| + -o ${JAIL_MIPS32}/usr/lib/libc.so
|
| +
|
| + popd
|
| +
|
| +
|
| + Banner "Building GCC (intermediate)"
|
| +
|
| + mkdir -p ${BUILD_DIR}/gcc/intermediate
|
| + pushd ${BUILD_DIR}/gcc/intermediate
|
| +
|
| + SubBanner "Configuring"
|
| + ${TMP}/gcc-4.7.2/configure \
|
| + --prefix=${INSTALL_ROOT} \
|
| + --disable-libssp \
|
| + --disable-libgomp \
|
| + --disable-libmudflap \
|
| + --disable-fixed-point \
|
| + --disable-decimal-float \
|
| + --with-mips-plt \
|
| + --with-endian=little \
|
| + --with-arch=${ARCH} \
|
| + --target=mipsel-linux-gnu \
|
| + --enable-languages=c \
|
| + --disable-libquadmath \
|
| + --disable-libatomic \
|
| + --with-sysroot=${JAIL_MIPS32}
|
| +
|
| + SubBanner "Make"
|
| + make ${MAKE_OPTS} all
|
| +
|
| + SubBanner "Install"
|
| + make ${MAKE_OPTS} install
|
| +
|
| + popd
|
| +
|
| +
|
| + Banner "Building EGLIBC (final)"
|
| +
|
| + mkdir -p ${BUILD_DIR}/eglibc/final
|
| + pushd ${BUILD_DIR}/eglibc/final
|
| +
|
| + BUILD_CC=gcc \
|
| + AR=mipsel-linux-gnu-ar \
|
| + RANLIB=mipsel-linux-gnu-ranlibi \
|
| + CC=mipsel-linux-gnu-gcc \
|
| + CXX=mipsel-linux-gnu-g++ \
|
| + ${TMP}/eglibc-2_14/libc/configure \
|
| + --prefix=/usr \
|
| + --enable-add-ons \
|
| + --host=mipsel-linux-gnu \
|
| + --disable-profile \
|
| + --without-gd \
|
| + --without-cvs \
|
| + --build=i686-pc-linux-gnu \
|
| + --with-headers=${JAIL_MIPS32}/usr/include
|
| +
|
| + SubBanner "Make"
|
| + make ${MAKE_OPTS} all
|
| +
|
| + SubBanner "Install"
|
| + make ${MAKE_OPTS} install install_root=${JAIL_MIPS32}
|
| +
|
| + popd
|
| +
|
| +
|
| + Banner "Building GCC (final)"
|
| +
|
| + mkdir -p ${BUILD_DIR}/gcc/final
|
| + pushd ${BUILD_DIR}/gcc/final
|
| +
|
| + ${TMP}/gcc-4.7.2/configure \
|
| + --prefix=${INSTALL_ROOT} \
|
| + --disable-libssp \
|
| + --disable-libgomp \
|
| + --disable-libmudflap \
|
| + --disable-fixed-point \
|
| + --disable-decimal-float \
|
| + --with-mips-plt \
|
| + --with-endian=little \
|
| + --with-arch=${ARCH} \
|
| + --target=mipsel-linux-gnu \
|
| + --enable-__cxa_atexit \
|
| + --enable-languages=c,c++ \
|
| + --with-sysroot=${JAIL_MIPS32}
|
| +
|
| + SubBanner "Make"
|
| + make ${MAKE_OPTS} all
|
| +
|
| + SubBanner "Install"
|
| + make ${MAKE_OPTS} install
|
| +
|
| + popd
|
| +
|
| +
|
| + Banner "Building GDB"
|
| +
|
| + mkdir -p ${BUILD_DIR}/gdb/
|
| + pushd ${BUILD_DIR}/gdb/
|
| +
|
| + ${TMP}/gdb-7.5/configure \
|
| + --prefix=${INSTALL_ROOT} \
|
| + --target=mipsel-linux-gnu
|
| +
|
| + SubBanner "Make"
|
| + make ${MAKE_OPTS} all-gdb
|
| +
|
| + SubBanner "Install"
|
| + make ${MAKE_OPTS} install-gdb
|
| +
|
| popd
|
| }
|
|
|
| @@ -156,23 +454,13 @@ InstallTrustedLinkerScript() {
|
| # to move the sel_ldr and other images "out of the way"
|
| Banner "installing trusted linker script to ${trusted_ld_script}"
|
|
|
| - ${CS_ROOT}/bin/mips-linux-gnu-ld --verbose |\
|
| + ${INSTALL_ROOT}/bin/mipsel-linux-gnu-ld --verbose |\
|
| grep -A 10000 "=======" |\
|
| grep -v "=======" |\
|
| sed -e 's/0400000/70000000/g' > ${trusted_ld_script}
|
| }
|
|
|
|
|
| -InstallMissingHeaders() {
|
| - Banner "installing openssl headers from local system"
|
| - cp -r /usr/include/openssl ${JAIL_MIPS32}/usr/include/
|
| -}
|
| -
|
| -
|
| -MissingSharedLibCleanup() {
|
| - Banner "Cleanup dangling symlinks"
|
| -}
|
| -
|
| # ----------------------------------------------------------------------
|
| # mips32 deb files to complete our code sourcery jail
|
| # ----------------------------------------------------------------------
|
| @@ -182,7 +470,7 @@ readonly MIPS32_PACKAGES=${REPO_DEBIAN}/dists/squeeze/main/binary-mipsel/Package
|
|
|
| readonly TMP_PACKAGELIST_MIPS32=${TMP}/../packagelist_mipsel.tmp
|
|
|
| -# These are good enough for native client
|
| +# These are good enough for native client.
|
| readonly BASE_PACKAGES="\
|
| libssl0.9.8 \
|
| libssl-dev \
|
| @@ -215,11 +503,11 @@ readonly BASE_PACKAGES="\
|
| GeneratePackageLists() {
|
| Banner "generating package lists for mips32"
|
| echo -n > ${TMP_PACKAGELIST_MIPS32}
|
| - DownloadOrCopy ${MIPS32_PACKAGES} ${TMP}/../Packages_mipsel.bz2
|
| - bzcat ${TMP}/../Packages_mipsel.bz2\
|
| - | egrep '^(Package:|Filename:)' > ${TMP}/../Packages_mipsel
|
| + DownloadOrCopy ${MIPS32_PACKAGES}
|
| + bzcat ${TMP}/Packages.bz2\
|
| + | egrep '^(Package:|Filename:)' > ${TMP}/Packages_mipsel
|
| for pkg in ${BASE_PACKAGES} ; do
|
| - grep -A 1 "${pkg}\$" ${TMP}/../Packages_mipsel\
|
| + grep -A 1 "${pkg}\$" ${TMP}/Packages_mipsel\
|
| | egrep -o "pool/.*" >> ${TMP_PACKAGELIST_MIPS32}
|
| done
|
| }
|
| @@ -229,7 +517,7 @@ InstallMissingLibraries() {
|
| for file in ${DEP_FILES_NEEDED_MIPS32} ; do
|
| local package="${TMP}/${file##*/}"
|
| Banner "installing ${file}"
|
| - DownloadOrCopy ${REPO_DEBIAN}/${file} ${package}
|
| + DownloadOrCopy ${REPO_DEBIAN}/${file}
|
| SubBanner "extracting to ${JAIL_MIPS32}"
|
| dpkg --fsys-tarfile ${package}\
|
| | tar -xvf - --exclude=./usr/share -C ${JAIL_MIPS32}
|
| @@ -263,29 +551,30 @@ FixLibs() {
|
|
|
| rm -f libresolv.so
|
| ln -s ../../lib/libresolv.so.2 libresolv.so
|
| -
|
| - echo "OUTPUT_FORMAT(elf32-tradlittlemips)" > libc.so
|
| - echo "GROUP ( libc.so.6 libc_nonshared.a AS_NEEDED ( ld.so.1 ) )" >> libc.so
|
| -
|
| - echo "OUTPUT_FORMAT(elf32-tradlittlemips)" > libpthread.so
|
| - echo "GROUP ( libpthread.so.0 libpthread_nonshared.a )" >> libpthread.so
|
| }
|
|
|
| BuildAndInstallQemu() {
|
| local saved_dir=$(pwd)
|
| local tmpdir="${TMP}/qemu-mips.nacl"
|
| local tarball="qemu-0.12.5.tar.gz"
|
| +
|
| Banner "Building qemu in ${tmpdir}"
|
| +
|
| rm -rf ${tmpdir}
|
| mkdir ${tmpdir}
|
| cd ${tmpdir}
|
| +
|
| SubBanner "Downloading"
|
| wget -c ${DOWNLOAD_QEMU_URL}
|
| +
|
| SubBanner "Untaring"
|
| tar zxf ${tarball}
|
| cd qemu-0.12.5
|
| - SubBanner "Patching"
|
| - patch -p1 < ${PATCH_MIPS32}
|
| +
|
| + if [ -f "${PATCH_MIPS32}" ]; then
|
| + SubBanner "Patching"
|
| + patch -p1 < ${PATCH_MIPS32}
|
| + fi
|
|
|
| echo
|
| echo "NOTE: on 64 bit systems you will need to the following 32bit libs:"
|
| @@ -315,6 +604,7 @@ BuildAndInstallQemu() {
|
| cp tools/trusted_cross_toolchains/qemu_tool_mips32.sh ${INSTALL_ROOT}
|
| ln -sf qemu_tool_mips32.sh ${INSTALL_ROOT}/run_under_qemu_mips32
|
| }
|
| +
|
| ######################################################################
|
| # Main
|
| ######################################################################
|
| @@ -329,12 +619,10 @@ elif [[ $1 == "trusted_sdk" ]]; then
|
| mkdir -p ${TMP}
|
| SanityCheck
|
| ClearInstallDir
|
| - DownloadOrCopyAndInstallCodeSourceryTarball
|
| - PruneDirs
|
| + ClearBuildDir
|
| + DownloadOrCopyAndInstallToolchain
|
| GeneratePackageLists
|
| - InstallMissingHeaders
|
| InstallMissingLibraries
|
| - MissingSharedLibCleanup
|
| InstallTrustedLinkerScript
|
| BuildAndInstallQemu
|
| CreateTarBall $1
|
|
|