Commit 1da8783f authored by Thanassis Tsiodras's avatar Thanassis Tsiodras

Proper SMP implementation only exists in 4.12

parent 07fb3f4f
#!/bin/bash
#
# This script builds the RTEMS/SPARC cross-compiler and the
# Leon2/Leon3/NGMP BSPs.
#
# To have a reproducible setup, it would be prudent if you
# executed this script under a Debian stretch chroot,
# bootstrapped via the following:
#
# mkdir /opt/stretch-chroot
# debootstrap stretch /opt/stretch-chroot
# mount -t proc none /opt/stretch-chroot/proc/
# mount -t sysfs none /opt/stretch-chroot/sys/
# mount -o bind /dev /opt/stretch-chroot/dev/
# mount -o bind /dev/pts /opt/stretch-chroot/dev/pts/
# chroot /opt/stretch-chroot
# apt-get update
# apt-get install flex bison make texinfo binutils gcc g++ gdb unzip git python2.7-dev pax libncurses5-dev
#
# Then chroot inside it and run this script:
#
# chroot /opt/stretch-chroot
# /path/to/build.rtems.4.11.2.smp.sh
# Stop on any error
set -e
DATE=$(date +"%Y.%m.%d")
mkdir -p ~/rtems.build.logs
BUILD_LOG=~/rtems.build.logs/${DATE}.log
[ -f ${BUILD_LOG} ] && {
echo "There's already a build log:"
echo " " ${BUILD_LOG}
echo Remove it to continue.
exit 1
}
# Record the output in $BUILD_LOG (see matching brace)
{
# Begin by checking out the RTEMS Source Builder
mkdir -p ~/development/rtems/src
RSB=~/development/rtems/src/rtems-source-builder-${DATE}
RTPREFIX=/opt/rtems-4.11-${DATE}
rm -rf ${RTPREFIX}
[ ! -d $RSB ] && {
cd ~/development/rtems/src/
git clone https://github.com/RTEMS/rtems-source-builder.git rtems-source-builder-${DATE}
}
cd $RSB
# Get the 4.11 branch
git checkout -f 4.11.2
# Verify that we have all we need to build
source-builder/sb-check
cd rtems
# Your network firewall may or may not be an issue at this point:
# Many of the source tarballs needed by the RSB are fetched over
# PASV-enabled FTP servers.
#
# If your network is like the one in ESA/ESTEC and this is forbidden,
# you'll have to fetch these tarballs and hardlink to them each time
# (so no FTP action is triggered by the RTEMS RSB builder).
# The sed invocation below also replaces ftp: with http:
# (since this needs no PASV port meddling - which some firewalls object to)
#
# This is the way I do it - adapt it according to your needs:
#
# [ ! -d sources ] && {
# mkdir -p sources
# cd sources
# cp -al ~/development/rtems/pkg_sources_cache/* .
# cd ..
# for i in config/tools/*cfg ; do
# cat "$i" | sed 's,ftp://ftp.gnu.org,http://ftp.gnu.org,;s,ftp://gcc.gnu.org,http://gcc.gnu.org,;' > "$i".new && mv "$i".new "$i"
# done
# }
# Build the cross compiling toolchain
../source-builder/sb-set-builder --log=stage1.log --prefix=${RTPREFIX} 4.11/rtems-sparc
# Add the cross compiler to the PATH
export PATH=${RTPREFIX}/bin:$PATH
cd ..
# checkout RTEMS4.11 - avoid doing it twice :-)
[ ! -d rtems-git ] && {
git clone https://github.com/RTEMS/rtems.git rtems-git
cd rtems-git
git checkout -f 4.11.2
cd ..
}
# Build RTEMS
cd rtems-git
./bootstrap
cd ..
rm -rf build.${DATE}
mkdir build.${DATE}
cd build.${DATE}
../rtems-git/configure \
--target=sparc-rtems4.11 --prefix=${RTPREFIX} \
--enable-rtemsbsp="leon2 leon3 ngmp" --enable-posix \
--enable-cxx --enable-networking --enable-experimental-smp
make all
make install
} |& tee ${BUILD_LOG}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment