summaryrefslogtreecommitdiffstats
path: root/.github/workflows/build.yml
blob: 1d567a934aded488437dff6eb4bafb65f2f486e9 (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
name: build

on: [push]

jobs:
  build-linux-ubuntu:
    runs-on: ubuntu-latest
    steps:
    - name: install dependencies
      run: |
          sudo apt-get install libusb-1.0-0-dev
    - name: prepare environment
      run: |
          echo "target_triplet=`gcc -dumpmachine`" >> $GITHUB_ENV
    - uses: actions/checkout@v2
    - name: autogen
      run: |
          export LDFLAGS="-Wl,-rpath=/usr/local/lib"
          ./autogen.sh
    - name: make
      run: make
    - name: make install
      run: sudo make install
    - name: prepare artifact
      run: |
          mkdir -p dest
          DESTDIR=`pwd`/dest make install
          tar -C dest -cf libirecovery.tar lib usr
    - name: publish artifact
      uses: actions/upload-artifact@v2
      with:
        name: libirecovery-latest_${{env.target_triplet}}
        path: libirecovery.tar
  build-macOS:
    runs-on: macOS-latest
    steps:
    - name: install dependencies
      run: |
          if test -x "`which port`"; then
            sudo port install libtool autoconf automake
          else
            brew install libtool autoconf automake
          fi
      shell: bash
    - uses: actions/checkout@v2
    - name: autogen
      run: |
          SDKDIR=`xcrun --sdk macosx --show-sdk-path`
          TESTARCHS="arm64 x86_64"
          USEARCHS=
          for ARCH in $TESTARCHS; do
            if echo "int main(int argc, char **argv) { return 0; }" |clang -arch $ARCH -o /dev/null -isysroot $SDKDIR -x c - 2>/dev/null; then
              USEARCHS="$USEARCHS -arch $ARCH"
            fi
          done
          export CFLAGS="$USEARCHS -isysroot $SDKDIR"
          echo "Using CFLAGS: $CFLAGS"
          ./autogen.sh
    - name: make
      run: make
    - name: make install
      run: sudo make install
    - name: prepare artifact
      run: |
          mkdir -p dest
          DESTDIR=`pwd`/dest make install
          tar -C dest -cf libirecovery.tar usr
    - name: publish artifact
      uses: actions/upload-artifact@v2
      with:
        name: libirecovery-latest_macOS
        path: libirecovery.tar
  build-windows:
    runs-on: windows-latest
    defaults:
      run:
        shell: msys2 {0}
    strategy:
      fail-fast: false
      matrix:
        include: [
          { msystem: MINGW64, arch: x86_64 },
          { msystem: MINGW32, arch: i686   }
        ]
    steps:
    - uses: msys2/setup-msys2@v2
      with:
        msystem: ${{ matrix.msystem }}
        release: false
        update: false
        install: >-
          base-devel
          git
          mingw-w64-${{ matrix.arch }}-gcc
          make
          libtool
          autoconf
          automake-wrapper
    - name: prepare environment
      run: |
          dest=`echo ${{ matrix.msystem }} |tr [:upper:] [:lower:]`
          echo "dest=$dest" >> $GITHUB_ENV
          echo "target_triplet=`gcc -dumpmachine`" >> $GITHUB_ENV
    - uses: actions/checkout@v2
    - name: autogen
      run: ./autogen.sh CC=gcc CXX=g++
    - name: make
      run: make
    - name: make install
      run: make install
    - name: prepare artifact
      run: |
          mkdir -p dest
          DESTDIR=`pwd`/dest make install
          tar -C dest -cf libirecovery.tar ${{ env.dest }}
    - name: publish artifact
      uses: actions/upload-artifact@v2
      with:
        name: libirecovery-latest_${{ matrix.arch }}-${{ env.dest }}
        path: libirecovery.tar