]> git.proxmox.com Git - rustc.git/blame - src/ci/docker/cross/build-arm-musl.sh
New upstream version 1.23.0+dfsg1
[rustc.git] / src / ci / docker / cross / build-arm-musl.sh
CommitLineData
abe05a73 1#!/usr/bin/env bash
32a655c1
SL
2# Copyright 2017 The Rust Project Developers. See the COPYRIGHT
3# file at the top-level directory of this distribution and at
4# http://rust-lang.org/COPYRIGHT.
5#
6# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
7# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
8# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
9# option. This file may not be copied, modified, or distributed
10# except according to those terms.
11
12set -ex
13
abe05a73 14MUSL=1.1.17
32a655c1
SL
15
16hide_output() {
17 set +x
18 on_err="
19echo ERROR: An error was encountered with the build.
20cat /tmp/build.log
21exit 1
22"
23 trap "$on_err" ERR
24 bash -c "while true; do sleep 30; echo \$(date) - building ...; done" &
25 PING_LOOP_PID=$!
26 $@ &> /tmp/build.log
27 trap - ERR
28 kill $PING_LOOP_PID
29 rm /tmp/build.log
30 set -x
31}
32
33curl -O https://www.musl-libc.org/releases/musl-$MUSL.tar.gz
34tar xf musl-$MUSL.tar.gz
35cd musl-$MUSL
36CC=arm-linux-gnueabi-gcc \
37CFLAGS="-march=armv6 -marm" \
38 hide_output ./configure \
39 --prefix=/usr/local/arm-linux-musleabi \
40 --enable-wrapper=gcc
41hide_output make -j$(nproc)
42hide_output make install
43cd ..
44rm -rf musl-$MUSL
45
46tar xf musl-$MUSL.tar.gz
47cd musl-$MUSL
48CC=arm-linux-gnueabihf-gcc \
49CFLAGS="-march=armv6 -marm" \
50 hide_output ./configure \
51 --prefix=/usr/local/arm-linux-musleabihf \
52 --enable-wrapper=gcc
53hide_output make -j$(nproc)
54hide_output make install
55cd ..
56rm -rf musl-$MUSL
57
58tar xf musl-$MUSL.tar.gz
59cd musl-$MUSL
60CC=arm-linux-gnueabihf-gcc \
61CFLAGS="-march=armv7-a" \
62 hide_output ./configure \
63 --prefix=/usr/local/armv7-linux-musleabihf \
64 --enable-wrapper=gcc
65hide_output make -j$(nproc)
66hide_output make install
67cd ..
ea8adc8c
XL
68rm -rf musl-$MUSL
69
70tar xf musl-$MUSL.tar.gz
71cd musl-$MUSL
72CC=aarch64-linux-gnu-gcc \
73CFLAGS="" \
74 hide_output ./configure \
75 --prefix=/usr/local/aarch64-linux-musl \
76 --enable-wrapper=gcc
77hide_output make -j$(nproc)
78hide_output make install
79cd ..
32a655c1
SL
80rm -rf musl-$MUSL*
81
82ln -nsf ../arm-linux-musleabi/bin/musl-gcc /usr/local/bin/arm-linux-musleabi-gcc
83ln -nsf ../arm-linux-musleabihf/bin/musl-gcc /usr/local/bin/arm-linux-musleabihf-gcc
84ln -nsf ../armv7-linux-musleabihf/bin/musl-gcc /usr/local/bin/armv7-linux-musleabihf-gcc
ea8adc8c 85ln -nsf ../aarch64-linux-musl/bin/musl-gcc /usr/local/bin/aarch64-unknown-linux-musl-gcc
32a655c1
SL
86
87curl -L https://github.com/llvm-mirror/llvm/archive/release_39.tar.gz | tar xzf -
88curl -L https://github.com/llvm-mirror/libunwind/archive/release_39.tar.gz | tar xzf -
89
90mkdir libunwind-build
91cd libunwind-build
92cmake ../libunwind-release_39 \
93 -DLLVM_PATH=/tmp/llvm-release_39 \
94 -DLIBUNWIND_ENABLE_SHARED=0 \
95 -DCMAKE_C_COMPILER=arm-linux-gnueabi-gcc \
96 -DCMAKE_CXX_COMPILER=arm-linux-gnueabi-g++ \
97 -DCMAKE_C_FLAGS="-march=armv6 -marm" \
98 -DCMAKE_CXX_FLAGS="-march=armv6 -marm"
99make -j$(nproc)
100cp lib/libunwind.a /usr/local/arm-linux-musleabi/lib
101cd ..
102rm -rf libunwind-build
103
104mkdir libunwind-build
105cd libunwind-build
106cmake ../libunwind-release_39 \
107 -DLLVM_PATH=/tmp/llvm-release_39 \
108 -DLIBUNWIND_ENABLE_SHARED=0 \
109 -DCMAKE_C_COMPILER=arm-linux-gnueabihf-gcc \
110 -DCMAKE_CXX_COMPILER=arm-linux-gnueabihf-g++ \
111 -DCMAKE_C_FLAGS="-march=armv6 -marm" \
112 -DCMAKE_CXX_FLAGS="-march=armv6 -marm"
113make -j$(nproc)
114cp lib/libunwind.a /usr/local/arm-linux-musleabihf/lib
115cd ..
116rm -rf libunwind-build
117
118mkdir libunwind-build
119cd libunwind-build
120cmake ../libunwind-release_39 \
121 -DLLVM_PATH=/tmp/llvm-release_39 \
122 -DLIBUNWIND_ENABLE_SHARED=0 \
123 -DCMAKE_C_COMPILER=arm-linux-gnueabihf-gcc \
124 -DCMAKE_CXX_COMPILER=arm-linux-gnueabihf-g++ \
125 -DCMAKE_C_FLAGS="-march=armv7-a" \
126 -DCMAKE_CXX_FLAGS="-march=armv7-a"
127make -j$(nproc)
128cp lib/libunwind.a /usr/local/armv7-linux-musleabihf/lib
129cd ..
130rm -rf libunwind-build
131
ea8adc8c
XL
132mkdir libunwind-build
133cd libunwind-build
134cmake ../libunwind-release_39 \
135 -DLLVM_PATH=/tmp/llvm-release_39 \
136 -DLIBUNWIND_ENABLE_SHARED=0 \
137 -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc \
138 -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ \
139 -DCMAKE_C_FLAGS="" \
140 -DCMAKE_CXX_FLAGS=""
141make -j$(nproc)
142cp lib/libunwind.a /usr/local/aarch64-linux-musl/lib
143cd ..
144rm -rf libunwind-build
145
32a655c1
SL
146rm -rf libunwind-release_39
147rm -rf llvm-release_39