]> git.proxmox.com Git - rustc.git/blame - src/ci/docker/disabled/dist-x86_64-dragonfly/build-toolchain.sh
New upstream version 1.45.0+dfsg1
[rustc.git] / src / ci / docker / disabled / dist-x86_64-dragonfly / build-toolchain.sh
CommitLineData
abe05a73 1#!/usr/bin/env bash
abe05a73
XL
2
3set -ex
4
5ARCH=x86_64
6PATCH_TOOLCHAIN=$1
7BINUTILS=2.25.1
8GCC=6.4.0
9
10hide_output() {
11 set +x
12 on_err="
13echo ERROR: An error was encountered with the build.
14cat /tmp/build.log
15exit 1
16"
17 trap "$on_err" ERR
18 bash -c "while true; do sleep 30; echo \$(date) - building ...; done" &
19 PING_LOOP_PID=$!
20 $@ &> /tmp/build.log
21 trap - ERR
22 kill $PING_LOOP_PID
23 set -x
24}
25
26mkdir binutils
27cd binutils
28
29# First up, build binutils
30curl https://ftp.gnu.org/gnu/binutils/binutils-$BINUTILS.tar.bz2 | tar xjf -
31mkdir binutils-build
32cd binutils-build
33hide_output ../binutils-$BINUTILS/configure \
34 --target=$ARCH-unknown-dragonfly
35hide_output make -j10
36hide_output make install
37cd ../..
38rm -rf binutils
39
40# Next, download the DragonFly libc and relevant header files
41
42URL=http://mirror-master.dragonflybsd.org/iso-images/dfly-x86_64-5.0.0_REL.iso.bz2
43mkdir dragonfly
44curl $URL | bzcat | bsdtar xf - -C dragonfly ./usr/include ./usr/lib ./lib
45
46dst=/usr/local/$ARCH-unknown-dragonfly
47
48mkdir -p $dst/lib
49cp -r dragonfly/usr/include $dst/
50cp dragonfly/usr/lib/crt1.o $dst/lib
51cp dragonfly/usr/lib/Scrt1.o $dst/lib
52cp dragonfly/usr/lib/crti.o $dst/lib
53cp dragonfly/usr/lib/crtn.o $dst/lib
54cp dragonfly/usr/lib/libc.a $dst/lib
55cp dragonfly/usr/lib/libutil.a $dst/lib
56cp dragonfly/usr/lib/libm.a $dst/lib
57cp dragonfly/usr/lib/librt.so.0 $dst/lib
58cp dragonfly/usr/lib/libexecinfo.so.1 $dst/lib
59cp dragonfly/lib/libc.so.8 $dst/lib
60cp dragonfly/lib/libm.so.4 $dst/lib
61cp dragonfly/lib/libutil.so.4 $dst/lib
62cp dragonfly/usr/lib/libpthread.so $dst/lib/libpthread.so
63cp dragonfly/usr/lib/thread/libthread_xu.so.2 $dst/lib/libpthread.so.0
64
65ln -s libc.so.8 $dst/lib/libc.so
66ln -s libm.so.4 $dst/lib/libm.so
67ln -s librt.so.0 $dst/lib/librt.so
68ln -s libutil.so.4 $dst/lib/libutil.so
69ln -s libexecinfo.so.1 $dst/lib/libexecinfo.so
70rm -rf dragonfly
71
72# Finally, download and build gcc to target DragonFly
73mkdir gcc
74cd gcc
75curl https://ftp.gnu.org/gnu/gcc/gcc-$GCC/gcc-$GCC.tar.gz | tar xzf -
76cd gcc-$GCC
77
78# The following three patches are taken from DragonFly's dports collection:
79# https://github.com/DragonFlyBSD/DPorts/tree/master/lang/gcc5
80# The dports specification for gcc5 contains a few more patches, but they are
81# not relevant in this situation, as they are for a language we don't need
82# (e.g. java), or a platform which is not supported by DragonFly (e.g. i386,
83# powerpc64, ia64, arm).
84#
85# These patches probably only need to be updated in case the gcc version is
86# updated.
87
88patch -p0 < $PATCH_TOOLCHAIN
89
90./contrib/download_prerequisites
91
92mkdir ../gcc-build
93cd ../gcc-build
94hide_output ../gcc-$GCC/configure \
95 --enable-languages=c,c++ \
96 --target=$ARCH-unknown-dragonfly \
97 --disable-multilib \
98 --disable-nls \
99 --disable-libgomp \
100 --disable-libquadmath \
101 --disable-libssp \
102 --disable-libvtv \
103 --disable-libcilkrts \
104 --disable-libada \
105 --disable-libsanitizer \
106 --disable-libquadmath-support \
107 --disable-lto
108hide_output make -j10
109hide_output make install
110cd ../..
111rm -rf gcc