summary refs log tree commit diff
path: root/compiler/rustc_codegen_cranelift/.github/workflows/main.yml
blob: f524b42c5eecda06098bdec6a7518295e3994013 (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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
name: CI

on:
  - push
  - pull_request

jobs:
  build:
    runs-on: ${{ matrix.os }}
    timeout-minutes: 60

    strategy:
      fail-fast: false
      matrix:
        include:
          - os: ubuntu-latest
          - os: macos-latest
          # cross-compile from Linux to Windows using mingw
          - os: ubuntu-latest
            env:
              TARGET_TRIPLE: x86_64-pc-windows-gnu
          - os: ubuntu-latest
            env:
              TARGET_TRIPLE: aarch64-unknown-linux-gnu

    steps:
    - uses: actions/checkout@v2

    - name: Cache cargo installed crates
      uses: actions/cache@v2
      with:
        path: ~/.cargo/bin
        key: ${{ runner.os }}-cargo-installed-crates

    - name: Cache cargo registry and index
      uses: actions/cache@v2
      with:
        path: |
            ~/.cargo/registry
            ~/.cargo/git
        key: ${{ runner.os }}-cargo-registry-and-index-${{ hashFiles('**/Cargo.lock') }}

    - name: Cache cargo target dir
      uses: actions/cache@v2
      with:
        path: target
        key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('rust-toolchain', '**/Cargo.lock') }}

    - name: Install MinGW toolchain and wine
      if: matrix.os == 'ubuntu-latest' && matrix.env.TARGET_TRIPLE == 'x86_64-pc-windows-gnu'
      run: |
        sudo apt-get update
        sudo apt-get install -y gcc-mingw-w64-x86-64 wine-stable
        rustup target add x86_64-pc-windows-gnu

    - name: Install AArch64 toolchain and qemu
      if: matrix.os == 'ubuntu-latest' && matrix.env.TARGET_TRIPLE == 'aarch64-unknown-linux-gnu'
      run: |
        sudo apt-get update
        sudo apt-get install -y gcc-aarch64-linux-gnu qemu-user

    - name: Prepare dependencies
      run: |
        git config --global user.email "user@example.com"
        git config --global user.name "User"
        ./y.rs prepare

    - name: Build
      run: ./y.rs build --sysroot none

    - name: Test
      env:
        TARGET_TRIPLE: ${{ matrix.env.TARGET_TRIPLE }}
      run: |
        # Enable backtraces for easier debugging
        export RUST_BACKTRACE=1

        # Reduce amount of benchmark runs as they are slow
        export COMPILE_RUNS=2
        export RUN_RUNS=2

        # Enable extra checks
        export CG_CLIF_ENABLE_VERIFIER=1

        ./test.sh

    - name: Package prebuilt cg_clif
      run: tar cvfJ cg_clif.tar.xz build

    - name: Upload prebuilt cg_clif
      if: matrix.env.TARGET_TRIPLE != 'x86_64-pc-windows-gnu'
      uses: actions/upload-artifact@v2
      with:
        name: cg_clif-${{ runner.os }}
        path: cg_clif.tar.xz

    - name: Upload prebuilt cg_clif (cross compile)
      if: matrix.env.TARGET_TRIPLE == 'x86_64-pc-windows-gnu'
      uses: actions/upload-artifact@v2
      with:
        name: cg_clif-${{ runner.os }}-cross-x86_64-mingw
        path: cg_clif.tar.xz

  build_windows:
    runs-on: windows-latest
    timeout-minutes: 60

    steps:
    - uses: actions/checkout@v2

    #- name: Cache cargo installed crates
    #  uses: actions/cache@v2
    #  with:
    #    path: ~/.cargo/bin
    #    key: ${{ runner.os }}-cargo-installed-crates

    #- name: Cache cargo registry and index
    #  uses: actions/cache@v2
    #  with:
    #    path: |
    #        ~/.cargo/registry
    #        ~/.cargo/git
    #    key: ${{ runner.os }}-cargo-registry-and-index-${{ hashFiles('**/Cargo.lock') }}

    #- name: Cache cargo target dir
    #  uses: actions/cache@v2
    #  with:
    #    path: target
    #    key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('rust-toolchain', '**/Cargo.lock') }}

    - name: Prepare dependencies
      run: |
        git config --global user.email "user@example.com"
        git config --global user.name "User"
        git config --global core.autocrlf false
        rustup set default-host x86_64-pc-windows-gnu
        rustc y.rs -o y.exe -g
        ./y.exe prepare

    - name: Build
      #name: Test
      run: |
        # Enable backtraces for easier debugging
        #export RUST_BACKTRACE=1

        # Reduce amount of benchmark runs as they are slow
        #export COMPILE_RUNS=2
        #export RUN_RUNS=2

        # Enable extra checks
        #export CG_CLIF_ENABLE_VERIFIER=1

        ./y.exe build

    #- name: Package prebuilt cg_clif
    #  run: tar cvfJ cg_clif.tar.xz build

    #- name: Upload prebuilt cg_clif
    #  uses: actions/upload-artifact@v2
    #  with:
    #    name: cg_clif-${{ runner.os }}
    #    path: cg_clif.tar.xz