]> git.proxmox.com Git - rustc.git/blame - src/ci/docker/cross/build-arm-musl.sh
New upstream version 1.16.0+dfsg1
[rustc.git] / src / ci / docker / cross / build-arm-musl.sh
CommitLineData
32a655c1
SL
1#!/bin/bash
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
14MUSL=1.1.16
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 ..
68rm -rf musl-$MUSL*
69
70ln -nsf ../arm-linux-musleabi/bin/musl-gcc /usr/local/bin/arm-linux-musleabi-gcc
71ln -nsf ../arm-linux-musleabihf/bin/musl-gcc /usr/local/bin/arm-linux-musleabihf-gcc
72ln -nsf ../armv7-linux-musleabihf/bin/musl-gcc /usr/local/bin/armv7-linux-musleabihf-gcc
73
74curl -L https://github.com/llvm-mirror/llvm/archive/release_39.tar.gz | tar xzf -
75curl -L https://github.com/llvm-mirror/libunwind/archive/release_39.tar.gz | tar xzf -
76
77mkdir libunwind-build
78cd libunwind-build
79cmake ../libunwind-release_39 \
80 -DLLVM_PATH=/tmp/llvm-release_39 \
81 -DLIBUNWIND_ENABLE_SHARED=0 \
82 -DCMAKE_C_COMPILER=arm-linux-gnueabi-gcc \
83 -DCMAKE_CXX_COMPILER=arm-linux-gnueabi-g++ \
84 -DCMAKE_C_FLAGS="-march=armv6 -marm" \
85 -DCMAKE_CXX_FLAGS="-march=armv6 -marm"
86make -j$(nproc)
87cp lib/libunwind.a /usr/local/arm-linux-musleabi/lib
88cd ..
89rm -rf libunwind-build
90
91mkdir libunwind-build
92cd libunwind-build
93cmake ../libunwind-release_39 \
94 -DLLVM_PATH=/tmp/llvm-release_39 \
95 -DLIBUNWIND_ENABLE_SHARED=0 \
96 -DCMAKE_C_COMPILER=arm-linux-gnueabihf-gcc \
97 -DCMAKE_CXX_COMPILER=arm-linux-gnueabihf-g++ \
98 -DCMAKE_C_FLAGS="-march=armv6 -marm" \
99 -DCMAKE_CXX_FLAGS="-march=armv6 -marm"
100make -j$(nproc)
101cp lib/libunwind.a /usr/local/arm-linux-musleabihf/lib
102cd ..
103rm -rf libunwind-build
104
105mkdir libunwind-build
106cd libunwind-build
107cmake ../libunwind-release_39 \
108 -DLLVM_PATH=/tmp/llvm-release_39 \
109 -DLIBUNWIND_ENABLE_SHARED=0 \
110 -DCMAKE_C_COMPILER=arm-linux-gnueabihf-gcc \
111 -DCMAKE_CXX_COMPILER=arm-linux-gnueabihf-g++ \
112 -DCMAKE_C_FLAGS="-march=armv7-a" \
113 -DCMAKE_CXX_FLAGS="-march=armv7-a"
114make -j$(nproc)
115cp lib/libunwind.a /usr/local/armv7-linux-musleabihf/lib
116cd ..
117rm -rf libunwind-build
118
119rm -rf libunwind-release_39
120rm -rf llvm-release_39