build.rtems.4.11.smp.sh 3.35 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/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 jessie chroot,
# bootstrapped via the following:
#
#     mkdir /opt/jessie-chroot
#     debootstrap jessie /opt/jessie-chroot
#     mount -t proc none /opt/jessie-chroot/proc/
#     mount -t sysfs none /opt/jessie-chroot/sys/
#     mount -o bind /dev /opt/jessie-chroot/dev/
#     mount -o bind /dev/pts /opt/jessie-chroot/dev/pts/
#     chroot /opt/jessie-chroot
#     apt-get update
#     apt-get build-dep binutils gcc g++ gdb unzip git python2.7-dev pax
#
# Then chroot inside it and run this script:
#
#     chroot /opt/jessie-chroot
#     /path/to/build.rtems.4.12.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 git://git.rtems.org/rtems-source-builder.git rtems-source-builder-${DATE}
    }
    cd $RSB

    # Get the 4.11 branch
    git checkout -f 4.11

    # Verify that we have all we need to build
    source-builder/sb-check

Thanassis Tsiodras's avatar
Thanassis Tsiodras committed
59
60
    cd rtems

61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
    # 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
        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-smp --enable-cxx --enable-networking --enable-experimental-smp
    make all
    make install
} |& tee ${BUILD_LOG}