summaryrefslogtreecommitdiff
path: root/.github/workflows/build.yml
blob: 58d714a4d2aa1a3855b8ad62f8bd9c92af765cd8 (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
name: build

on:
  push:
    branches:
      - '*'
  pull_request:
    branches:
      - '*'
env:
  DEBIAN_FRONTEND: noninteractive
  HOMEBREW_NO_AUTO_UPDATE: 1
  PAWPAW_VERSION: 8c69660ab10b75cd7a488f41386dbcb4c8802c5a

jobs:
  # macOS native intel build
  macos:
    runs-on: macos-10.15
    steps:
    - uses: actions/checkout@v2
      with:
        submodules: recursive
    - name: Set up cache
      uses: actions/cache@v2
      with:
        path: |
          ~/PawPawBuilds/builds
          ~/PawPawBuilds/downloads
          ~/PawPawBuilds/targets
        key: cache-macos
    - name: Set up dependencies
      run: |
        brew install cmake jq meson
    - name: Bootstrap macOS intel
      shell: bash
      run: |
        if [ ! -d PawPaw ]; then
            git clone https://github.com/DISTRHO/PawPaw.git
            git -C PawPaw checkout ${PAWPAW_VERSION}
        fi
        ./PawPaw/bootstrap-jack2.sh macos && ./PawPaw/.cleanup.sh macos
    - name: Build jack2
      shell: bash
      run: |
        pushd PawPaw && source local.env macos && popd
        python ./waf configure --platform=darwin --prefix=/usr/local
        python ./waf build -j $(sysctl -n hw.logicalcpu)
        python ./waf install --destdir="$(pwd)/destdir"

  # macOS native universal build
  macos_universal:
    runs-on: macos-10.15
    steps:
    - uses: actions/checkout@v2
      with:
        submodules: recursive
    - name: Set up cache
      uses: actions/cache@v2
      with:
        path: |
          ~/PawPawBuilds/builds
          ~/PawPawBuilds/downloads
          ~/PawPawBuilds/targets
        key: cache-macos-universal
    - name: Set up dependencies
      run: |
        brew install cmake jq meson
    - name: Fix up Xcode
      run: |
        sudo rm -Rf /Library/Developer/CommandLineTools/SDKs/*
        sudo xcode-select -s "/Applications/Xcode_12.3.app"
    - name: Bootstrap macOS universal
      shell: bash
      run: |
        if [ ! -d PawPaw ]; then
            git clone https://github.com/DISTRHO/PawPaw.git
            git -C PawPaw checkout ${PAWPAW_VERSION}
        fi
        ./PawPaw/bootstrap-jack2.sh macos-universal && ./PawPaw/.cleanup.sh macos-universal

  # linux with win32 cross-compilation
  win32:
    runs-on: ubuntu-20.04
    steps:
    - uses: actions/checkout@v2
      with:
        submodules: recursive
    - name: Set up cache
      uses: actions/cache@v2
      with:
        path: |
          ~/PawPawBuilds/builds
          ~/PawPawBuilds/downloads
          ~/PawPawBuilds/targets
          /var/cache/apt/archives
        key: cache-win32
    - name: Set up dependencies
      run: |
        wget -qO- https://dl.winehq.org/wine-builds/winehq.key | sudo apt-key add - && \
        sudo dpkg --add-architecture i386 && \
        sudo apt-add-repository -y 'deb https://dl.winehq.org/wine-builds/ubuntu/ focal main' && \
        sudo apt-get install -y autopoint build-essential curl cmake jq llvm mingw-w64 qttools5-dev-tools winehq-stable xvfb \
          binutils-mingw-w64-i686 g++-mingw-w64-i686
    - name: Bootstrap win32 cross-compiled
      shell: bash
      run: |
        if [ ! -d PawPaw ]; then
            git clone https://github.com/DISTRHO/PawPaw.git
            git -C PawPaw checkout ${PAWPAW_VERSION}
        fi
        ./PawPaw/bootstrap-jack2.sh win32 && ./PawPaw/.cleanup.sh win32
    - name: Build jack2
      shell: bash
      run: |
        pushd PawPaw && source local.env win32 && popd
        wine ~/PawPawBuilds/targets/win32/bin/python3.exe ./waf configure --platform=win32 --prefix="$(pwd)/destdir" --static
        wine ~/PawPawBuilds/targets/macos/bin/python3.exe ./waf build -j $(nproc)
        wine ~/PawPawBuilds/targets/macos/bin/python3.exe ./waf install

  # linux with win64 cross-compilation
  win64:
    runs-on: ubuntu-20.04
    steps:
    - uses: actions/checkout@v2
      with:
        submodules: recursive
    - name: Set up cache
      uses: actions/cache@v2
      with:
        path: |
          ~/PawPawBuilds/builds
          ~/PawPawBuilds/downloads
          ~/PawPawBuilds/targets
          /var/cache/apt/archives
        key: cache-win64
    - name: Set up dependencies
      run: |
        wget -qO- https://dl.winehq.org/wine-builds/winehq.key | sudo apt-key add - && \
        sudo dpkg --add-architecture i386 && \
        sudo apt-add-repository -y 'deb https://dl.winehq.org/wine-builds/ubuntu/ focal main' && \
        sudo apt-get install -y autopoint build-essential curl cmake jq llvm mingw-w64 qttools5-dev-tools winehq-stable xvfb \
          binutils-mingw-w64-x86-64 g++-mingw-w64-x86-64
    - name: Bootstrap win64 cross-compiled
      shell: bash
      run: |
        if [ ! -d PawPaw ]; then
            git clone https://github.com/DISTRHO/PawPaw.git
            git -C PawPaw checkout ${PAWPAW_VERSION}
        fi
        ./PawPaw/bootstrap-jack2.sh win64 && ./PawPaw/.cleanup.sh win64