blob: e3f904acfbd09f28f4d4cbf0cf9c7424e3c30386 (
plain)
| 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
 | # `install` phase: install stuff needed for the `script` phase
set -ex
. $(dirname $0)/utils.sh
install_c_toolchain() {
    case $TARGET in
        aarch64-unknown-linux-gnu)
            sudo apt-get install -y --no-install-recommends \
                 gcc-aarch64-linux-gnu libc6-arm64-cross libc6-dev-arm64-cross
            ;;
        *)
            # For other targets, this is handled by addons.apt.packages in .travis.yml
            ;;
    esac
}
install_rustup() {
    curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain=$TRAVIS_RUST_VERSION
    rustc -V
    cargo -V
}
install_standard_crates() {
    if [ $(host) != "$TARGET" ]; then
        rustup target add $TARGET
    fi
}
configure_cargo() {
    local prefix=$(gcc_prefix)
    if [ ! -z $prefix ]; then
        # information about the cross compiler
        ${prefix}gcc -v
        # tell cargo which linker to use for cross compilation
        mkdir -p .cargo
        cat >>.cargo/config <<EOF
[target.$TARGET]
linker = "${prefix}gcc"
EOF
    fi
}
main() {
    install_c_toolchain
    install_rustup
    install_standard_crates
    configure_cargo
    # TODO if you need to install extra stuff add it here
}
main
 |