]> git.lizzy.rs Git - rust.git/blob - src/ci/docker/dist-various-2/build-solaris-toolchain.sh
Auto merge of #72717 - poliorcetics:try-from-int-to-nzint, r=dtolnay
[rust.git] / src / ci / docker / dist-various-2 / build-solaris-toolchain.sh
1 #!/usr/bin/env bash
2
3 set -ex
4 source shared.sh
5
6 ARCH=$1
7 LIB_ARCH=$2
8 APT_ARCH=$3
9 BINUTILS=2.28.1
10 GCC=6.4.0
11
12 # First up, build binutils
13 mkdir binutils
14 cd binutils
15
16 curl https://ftp.gnu.org/gnu/binutils/binutils-$BINUTILS.tar.xz | tar xJf -
17 mkdir binutils-build
18 cd binutils-build
19 hide_output ../binutils-$BINUTILS/configure --target=$ARCH-sun-solaris2.10
20 hide_output make -j10
21 hide_output make install
22
23 cd ../..
24 rm -rf binutils
25
26 # Next, download and install the relevant solaris packages
27 mkdir solaris
28 cd solaris
29
30 dpkg --add-architecture $APT_ARCH
31 apt-get update
32 apt-get download $(apt-cache depends --recurse --no-replaces \
33   libc-dev:$APT_ARCH       \
34   libm-dev:$APT_ARCH       \
35   libpthread-dev:$APT_ARCH \
36   libresolv-dev:$APT_ARCH  \
37   librt-dev:$APT_ARCH      \
38   libsocket-dev:$APT_ARCH  \
39   system-crt:$APT_ARCH     \
40   system-header:$APT_ARCH  \
41   | grep "^\w")
42
43 for deb in *$APT_ARCH.deb; do
44   dpkg -x $deb .
45 done
46
47 # Remove Solaris 11 functions that are optionally used by libbacktrace.
48 # This is for Solaris 10 compatibility.
49 rm usr/include/link.h
50 patch -p0  << 'EOF'
51 --- usr/include/string.h
52 +++ usr/include/string10.h
53 @@ -93 +92,0 @@
54 -extern size_t strnlen(const char *, size_t);
55 EOF
56
57 mkdir                  /usr/local/$ARCH-sun-solaris2.10/usr
58 mv usr/include         /usr/local/$ARCH-sun-solaris2.10/usr/include
59 mv usr/lib/$LIB_ARCH/* /usr/local/$ARCH-sun-solaris2.10/lib
60 mv     lib/$LIB_ARCH/* /usr/local/$ARCH-sun-solaris2.10/lib
61
62 ln -s usr/include /usr/local/$ARCH-sun-solaris2.10/sys-include
63 ln -s usr/include /usr/local/$ARCH-sun-solaris2.10/include
64
65 cd ..
66 rm -rf solaris
67
68 # Finally, download and build gcc to target solaris
69 mkdir gcc
70 cd gcc
71
72 curl https://ftp.gnu.org/gnu/gcc/gcc-$GCC/gcc-$GCC.tar.xz | tar xJf -
73 cd gcc-$GCC
74
75 mkdir ../gcc-build
76 cd ../gcc-build
77 hide_output ../gcc-$GCC/configure \
78   --enable-languages=c,c++        \
79   --target=$ARCH-sun-solaris2.10  \
80   --with-gnu-as                   \
81   --with-gnu-ld                   \
82   --disable-multilib              \
83   --disable-nls                   \
84   --disable-libgomp               \
85   --disable-libquadmath           \
86   --disable-libssp                \
87   --disable-libvtv                \
88   --disable-libcilkrts            \
89   --disable-libada                \
90   --disable-libsanitizer          \
91   --disable-libquadmath-support   \
92   --disable-lto
93
94 hide_output make -j10
95 hide_output make install
96
97 cd ../..
98 rm -rf gcc