You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

202 lines
6.9KB

  1. name: build
  2. on: [push, pull_request]
  3. env:
  4. CACHE_VERSION: 2
  5. DEBIAN_FRONTEND: noninteractive
  6. PAWPAW_CI: 1
  7. PAWPAW_SKIP_LTO: 1
  8. PAWPAW_SKIP_FFTW: 1
  9. PAWPAW_SKIP_GLIB: 1
  10. PAWPAW_SKIP_LV2: 1
  11. PAWPAW_SKIP_SAMPLERATE: 1
  12. PAWPAW_SKIP_TESTS: 1
  13. WITH_LTO: false
  14. jobs:
  15. linux:
  16. strategy:
  17. matrix:
  18. target: [aarch64, armhf, i686, riscv64, x86_64]
  19. runs-on: ubuntu-latest
  20. container:
  21. image: ubuntu:20.04
  22. steps:
  23. - name: Install git
  24. run: |
  25. apt-get update -qq && apt-get install -yqq --no-install-recommends ca-certificates curl git openssl
  26. curl -sLO https://launchpad.net/~kxstudio-debian/+archive/ubuntu/toolchain/+files/git_2.34.1-1ubuntu1~bpo20.04.1~ppa1_amd64.deb
  27. curl -sLO https://launchpad.net/~kxstudio-debian/+archive/ubuntu/toolchain/+files/git-man_2.34.1-1ubuntu1~bpo20.04.1~ppa1_all.deb
  28. dpkg -i *.deb
  29. rm *.deb
  30. - uses: actions/checkout@v4
  31. with:
  32. submodules: recursive
  33. - name: Set up cache
  34. uses: actions/cache@v4
  35. with:
  36. path: |
  37. ~/PawPawBuilds
  38. key: linux-${{ matrix.target }}-v${{ env.CACHE_VERSION }}
  39. - name: Set up dependencies
  40. run: |
  41. git clone --depth=1 https://github.com/DISTRHO/PawPaw.git
  42. ./PawPaw/.github/workflows/bootstrap-deps.sh linux-${{ matrix.target }}
  43. - name: Set up dependencies x86_64 extra
  44. if: ${{ matrix.target == 'x86_64' }}
  45. run: |
  46. dpkg --add-architecture i386
  47. apt-get update -qq
  48. apt-get install -yqq g++-multilib libx11-dev:i386
  49. apt-get install -yqq binutils-mingw-w64-i686 binutils-mingw-w64-x86-64 g++-mingw-w64-i686 g++-mingw-w64-x86-64 mingw-w64 wine-stable wine64-tools
  50. - name: Build extra dependencies
  51. run: |
  52. ./PawPaw/bootstrap-cardinal.sh linux-${{ matrix.target }} && ./PawPaw/.cleanup.sh linux-${{ matrix.target }}
  53. - name: Build linux
  54. shell: bash
  55. run: |
  56. source PawPaw/local.env linux-${{ matrix.target }}
  57. make features
  58. make NOOPT=true -j $(nproc)
  59. - name: Build linux x86_64 extra (part1)
  60. if: ${{ matrix.target == 'x86_64' }}
  61. shell: bash
  62. run: |
  63. source PawPaw/local.env linux-${{ matrix.target }}
  64. make NOOPT=true all extra-posix32 extra-win32 extra-win64 extra-wine64 -j $(nproc)
  65. - name: Build linux x86_64 extra (part2)
  66. if: ${{ matrix.target == 'x86_64' }}
  67. shell: bash
  68. run: |
  69. apt-get install -yqq libwine-dev:i386
  70. source PawPaw/local.env linux
  71. make NOOPT=true extra-wine32 -j $(nproc)
  72. make CARLA_EXTRA_TARGETS=true NOOPT=true -j $(nproc)
  73. - name: Set sha8
  74. run: |
  75. echo "SHA8=$(echo ${{ github.sha }} | cut -c1-8)" >> $GITHUB_ENV
  76. - uses: actions/upload-artifact@v4
  77. with:
  78. name: ${{ github.event.repository.name }}-linux-${{ matrix.target }}-${{ github.event.pull_request.number || env.SHA8 }}
  79. path: |
  80. bin/*
  81. !bin/Ildaeil
  82. macos:
  83. strategy:
  84. matrix:
  85. target: [intel, universal]
  86. runs-on: macos-14
  87. steps:
  88. - uses: actions/checkout@v4
  89. with:
  90. submodules: recursive
  91. - name: Set up cache
  92. uses: actions/cache@v4
  93. with:
  94. path: |
  95. ~/PawPawBuilds
  96. key: macos-${{ matrix.target }}-v${{ env.CACHE_VERSION }}
  97. - name: Set up dependencies
  98. run: |
  99. brew uninstall --ignore-dependencies -f cmake
  100. git clone --depth=1 https://github.com/DISTRHO/PawPaw.git
  101. ./PawPaw/.github/workflows/bootstrap-deps.sh macos-${{ matrix.target }}
  102. - name: Build extra dependencies
  103. run: |
  104. ./PawPaw/bootstrap-cardinal.sh macos-${{ matrix.target }} && ./PawPaw/.cleanup.sh macos-${{ matrix.target }}
  105. - name: Build macOS
  106. run: |
  107. source PawPaw/local.env macos-${{ matrix.target }}
  108. make features
  109. make NOOPT=true -j $(sysctl -n hw.logicalcpu)
  110. - name: Pack macOS
  111. env:
  112. MACOS_APP_CERTIFICATE: ${{ secrets.MACOS_APP_CERTIFICATE }}
  113. MACOS_INSTALLER_CERTIFICATE: ${{ secrets.MACOS_INSTALLER_CERTIFICATE }}
  114. MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
  115. MACOS_NOTARIZATION_USER: ${{ secrets.MACOS_NOTARIZATION_USER }}
  116. MACOS_NOTARIZATION_PASS: ${{ secrets.MACOS_NOTARIZATION_PASS }}
  117. MACOS_NOTARIZATION_TEAM: ${{ secrets.MACOS_NOTARIZATION_TEAM }}
  118. run: |
  119. source PawPaw/local.env macos-${{ matrix.target }}
  120. ./dpf/utils/package-osx-bundles.sh
  121. - name: Set sha8
  122. run: |
  123. echo "SHA8=$(echo ${{ github.sha }} | cut -c1-8)" >> $GITHUB_ENV
  124. - uses: actions/upload-artifact@v4
  125. with:
  126. name: ${{ github.event.repository.name }}-macOS-${{ matrix.target }}-${{ github.event.pull_request.number || env.SHA8 }}
  127. path: |
  128. *-macOS.pkg
  129. bin/*
  130. !bin/pkg
  131. !bin/*.clap
  132. !bin/*.component
  133. !bin/*.lv2
  134. !bin/*.vst
  135. !bin/*.vst3
  136. windows:
  137. strategy:
  138. matrix:
  139. target: [win32, win64]
  140. runs-on: ubuntu-22.04
  141. steps:
  142. - uses: actions/checkout@v4
  143. with:
  144. submodules: recursive
  145. - name: Set up cache
  146. uses: actions/cache@v4
  147. with:
  148. path: |
  149. ~/PawPawBuilds
  150. key: ${{ matrix.target }}-v${{ env.CACHE_VERSION }}
  151. - name: Fix GitHub's mess
  152. run: |
  153. sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
  154. sudo dpkg --add-architecture i386
  155. sudo apt-get update -qq
  156. - name: Set up dependencies
  157. run: |
  158. git clone --depth=1 https://github.com/DISTRHO/PawPaw.git
  159. ./PawPaw/.github/workflows/bootstrap-deps.sh ${{ matrix.target }}
  160. - name: Build extra dependencies
  161. run: |
  162. ./PawPaw/bootstrap-cardinal.sh ${{ matrix.target }} && ./PawPaw/.cleanup.sh ${{ matrix.target }}
  163. - name: Build cross-compiled
  164. run: |
  165. source PawPaw/local.env ${{ matrix.target }}
  166. make features
  167. make CARLA_EXTRA_TARGETS=true NOOPT=true -j $(nproc)
  168. - name: Set sha8
  169. run: |
  170. echo "SHA8=$(echo ${{ github.sha }} | cut -c1-8)" >> $GITHUB_ENV
  171. - uses: actions/upload-artifact@v4
  172. with:
  173. name: ${{ github.event.repository.name }}-${{ matrix.target }}-${{ github.event.pull_request.number || env.SHA8 }}
  174. path: |
  175. bin/*
  176. !bin/*.exe
  177. pluginval:
  178. runs-on: ubuntu-22.04
  179. steps:
  180. - uses: actions/checkout@v4
  181. with:
  182. submodules: recursive
  183. - uses: distrho/dpf-makefile-action@v1
  184. with:
  185. target: pluginval
  186. source:
  187. runs-on: ubuntu-22.04
  188. steps:
  189. - uses: actions/checkout@v4
  190. with:
  191. submodules: recursive
  192. - uses: distrho/dpf-makefile-action@v1
  193. with:
  194. target: source