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.

1155 lines
50KB

  1. name: build
  2. on:
  3. push:
  4. env:
  5. CACHE_VERSION: 32
  6. CARDINAL_UNDER_WINE: 1
  7. DEBIAN_FRONTEND: noninteractive
  8. HOMEBREW_NO_AUTO_UPDATE: 1
  9. LIBGL_ALWAYS_SOFTWARE: 'true'
  10. WITH_LTO: 'false'
  11. jobs:
  12. linux-arm64:
  13. runs-on: ubuntu-20.04
  14. steps:
  15. - uses: actions/checkout@v2
  16. with:
  17. submodules: recursive
  18. - name: Set up cache
  19. id: cache
  20. uses: actions/cache@v2
  21. with:
  22. path: |
  23. ~/PawPawBuilds
  24. src/Rack/dep/bin
  25. src/Rack/dep/include
  26. src/Rack/dep/lib
  27. src/Rack/dep/share
  28. src/Rack/dep/jansson-2.12
  29. src/Rack/dep/libarchive-3.4.3
  30. src/Rack/dep/libsamplerate-0.1.9
  31. src/Rack/dep/speexdsp-SpeexDSP-1.2rc3
  32. src/Rack/dep/zstd-1.4.5
  33. key: linux-arm64-v${{ env.CACHE_VERSION }}-${{ env.WITH_LTO }}
  34. - name: Fix GitHub's mess
  35. run: |
  36. sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
  37. sudo apt-get update -qq
  38. sudo apt-get install -yqq --allow-downgrades libpcre2-8-0/focal libpcre2-16-0/focal libpcre2-32-0/focal libpcre2-posix2/focal
  39. - name: Set up dependencies
  40. run: |
  41. sudo dpkg --add-architecture arm64
  42. sudo sed -i "s/deb http/deb [arch=amd64] http/" /etc/apt/sources.list
  43. echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports focal main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/ports-arm64.list
  44. echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports focal-updates main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/ports-arm64.list
  45. echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports focal-backports main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/ports-arm64.list
  46. sudo apt-get update -qq
  47. sudo apt-get install -yqq g++-aarch64-linux-gnu libasound2-dev:arm64 libdbus-1-dev:arm64 libgl1-mesa-dev:arm64 libglib2.0-dev:arm64 libpulse-dev:arm64 libsdl2-dev:arm64 libx11-dev:arm64 libxcursor-dev:arm64 libxext-dev:arm64 libxrandr-dev:arm64 qemu-user-static
  48. - name: Set up ccache
  49. uses: hendrikmuhs/ccache-action@v1.2
  50. with:
  51. key: ccache-linux-arm64-v${{ env.CACHE_VERSION }}-${{ env.WITH_LTO }}
  52. - name: Build extra dependencies
  53. env:
  54. PKG_CONFIG_PATH: /usr/lib/aarch64-linux-gnu/pkgconfig
  55. run: |
  56. if [ "${{ env.WITH_LTO }}" != "true" ]; then export PAWPAW_SKIP_LTO=1; fi
  57. export PATH="/usr/lib/ccache:${PATH}"
  58. ./deps/PawPaw/bootstrap-cardinal.sh linux-aarch64 && ./deps/PawPaw/.cleanup.sh linux-aarch64
  59. - name: Build linux arm64 cross-compiled
  60. run: |
  61. if [ "${{ env.WITH_LTO }}" != "true" ]; then export PAWPAW_SKIP_LTO=1; fi
  62. export PATH="/usr/lib/ccache:${PATH}"
  63. pushd deps/PawPaw; source local.env linux-aarch64; popd
  64. make features
  65. make CIBUILD=true NOOPT=true WITH_LTO=${{ env.WITH_LTO }} -j $(nproc)
  66. make unzipfx
  67. - name: Set sha8 (non-release)
  68. if: startsWith(github.ref, 'refs/tags/') != true
  69. id: slug1
  70. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  71. - name: Set sha8 (release)
  72. if: startsWith(github.ref, 'refs/tags/')
  73. id: slug2
  74. run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})"
  75. - name: Set sha8
  76. id: slug
  77. run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})"
  78. - name: Pack binaries
  79. run: |
  80. tar -c -h --hard-dereference -z -f ${{ github.event.repository.name }}-linux-arm64-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.tar.gz -C bin $(ls bin | grep -e lv2 -e vst -e clap) ../CardinalJACK ../CardinalNative
  81. - uses: actions/upload-artifact@v2
  82. with:
  83. name: ${{ github.event.repository.name }}-linux-arm64-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  84. path: |
  85. *.tar.gz
  86. - uses: softprops/action-gh-release@v1
  87. if: startsWith(github.ref, 'refs/tags/')
  88. with:
  89. tag_name: ${{ github.ref_name }}
  90. name: ${{ github.ref_name }}
  91. draft: false
  92. prerelease: false
  93. files: |
  94. *.tar.gz
  95. linux-armhf:
  96. runs-on: ubuntu-20.04
  97. steps:
  98. - uses: actions/checkout@v2
  99. with:
  100. submodules: recursive
  101. - name: Set up cache
  102. id: cache
  103. uses: actions/cache@v2
  104. with:
  105. path: |
  106. ~/PawPawBuilds
  107. src/Rack/dep/bin
  108. src/Rack/dep/include
  109. src/Rack/dep/lib
  110. src/Rack/dep/share
  111. src/Rack/dep/jansson-2.12
  112. src/Rack/dep/libarchive-3.4.3
  113. src/Rack/dep/libsamplerate-0.1.9
  114. src/Rack/dep/speexdsp-SpeexDSP-1.2rc3
  115. src/Rack/dep/zstd-1.4.5
  116. key: linux-armhf-v${{ env.CACHE_VERSION }}-${{ env.WITH_LTO }}
  117. - name: Fix GitHub's mess
  118. run: |
  119. sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
  120. sudo apt-get update -qq
  121. sudo apt-get install -yqq --allow-downgrades libpcre2-8-0/focal libpcre2-16-0/focal libpcre2-32-0/focal libpcre2-posix2/focal
  122. - name: Set up dependencies
  123. run: |
  124. sudo dpkg --add-architecture armhf
  125. sudo sed -i "s/deb http/deb [arch=amd64] http/" /etc/apt/sources.list
  126. echo "deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports focal main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/ports-armhf.list
  127. echo "deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports focal-updates main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/ports-armhf.list
  128. echo "deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports focal-backports main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/ports-armhf.list
  129. sudo apt-get update -qq
  130. sudo apt-get install -yqq g++-arm-linux-gnueabihf libasound2-dev:armhf libdbus-1-dev:armhf libgl1-mesa-dev:armhf libglib2.0-dev:armhf libpulse-dev:armhf libsdl2-dev:armhf libx11-dev:armhf libxcursor-dev:armhf libxext-dev:armhf libxrandr-dev:armhf qemu-user-static
  131. - name: Set up ccache
  132. uses: hendrikmuhs/ccache-action@v1.2
  133. with:
  134. key: ccache-linux-armhf-v${{ env.CACHE_VERSION }}-${{ env.WITH_LTO }}
  135. - name: Build extra dependencies
  136. env:
  137. PKG_CONFIG_PATH: /usr/lib/arm-linux-gnueabihf/pkgconfig
  138. run: |
  139. if [ "${{ env.WITH_LTO }}" != "true" ]; then export PAWPAW_SKIP_LTO=1; fi
  140. export PATH="/usr/lib/ccache:${PATH}"
  141. ./deps/PawPaw/bootstrap-cardinal.sh linux-armhf && ./deps/PawPaw/.cleanup.sh linux-armhf
  142. - name: Build linux armhf cross-compiled
  143. run: |
  144. if [ "${{ env.WITH_LTO }}" != "true" ]; then export PAWPAW_SKIP_LTO=1; fi
  145. export PATH="/usr/lib/ccache:${PATH}"
  146. pushd deps/PawPaw; source local.env linux-armhf; popd
  147. make features
  148. make CIBUILD=true NOOPT=true WITH_LTO=${{ env.WITH_LTO }} -j $(nproc)
  149. make unzipfx
  150. - name: Set sha8 (non-release)
  151. if: startsWith(github.ref, 'refs/tags/') != true
  152. id: slug1
  153. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  154. - name: Set sha8 (release)
  155. if: startsWith(github.ref, 'refs/tags/')
  156. id: slug2
  157. run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})"
  158. - name: Set sha8
  159. id: slug
  160. run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})"
  161. - name: Pack binaries
  162. run: |
  163. tar -c -h --hard-dereference -z -f ${{ github.event.repository.name }}-linux-armhf-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.tar.gz -C bin $(ls bin | grep -e lv2 -e vst -e clap) ../CardinalJACK ../CardinalNative
  164. - uses: actions/upload-artifact@v2
  165. with:
  166. name: ${{ github.event.repository.name }}-linux-armhf-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  167. path: |
  168. *.tar.gz
  169. - uses: softprops/action-gh-release@v1
  170. if: startsWith(github.ref, 'refs/tags/')
  171. with:
  172. tag_name: ${{ github.ref_name }}
  173. name: ${{ github.ref_name }}
  174. draft: false
  175. prerelease: false
  176. files: |
  177. *.tar.gz
  178. linux-i686:
  179. runs-on: ubuntu-20.04
  180. steps:
  181. - uses: actions/checkout@v2
  182. with:
  183. submodules: recursive
  184. - name: Set up cache
  185. id: cache
  186. uses: actions/cache@v2
  187. with:
  188. path: |
  189. ~/PawPawBuilds
  190. src/Rack/dep/bin
  191. src/Rack/dep/include
  192. src/Rack/dep/lib
  193. src/Rack/dep/share
  194. src/Rack/dep/jansson-2.12
  195. src/Rack/dep/libarchive-3.4.3
  196. src/Rack/dep/libsamplerate-0.1.9
  197. src/Rack/dep/speexdsp-SpeexDSP-1.2rc3
  198. src/Rack/dep/zstd-1.4.5
  199. key: linux-i686-v${{ env.CACHE_VERSION }}-${{ env.WITH_LTO }}
  200. - name: Fix GitHub's mess
  201. run: |
  202. sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
  203. sudo apt-get update -qq
  204. sudo apt-get install -yqq --allow-downgrades libpcre2-8-0/focal libpcre2-16-0/focal libpcre2-32-0/focal libpcre2-posix2/focal
  205. - name: Set up dependencies
  206. run: |
  207. sudo dpkg --add-architecture i386
  208. sudo apt-get update -qq
  209. sudo apt-get install -yqq g++-multilib libasound2-dev:i386 libdbus-1-dev:i386 libgl1-mesa-dev:i386 libglib2.0-dev:i386 libpulse-dev:i386 libsdl2-dev:i386 libx11-dev:i386 libxcursor-dev:i386 libxext-dev:i386 libxrandr-dev:i386
  210. - name: Set up ccache
  211. uses: hendrikmuhs/ccache-action@v1.2
  212. with:
  213. key: ccache-linux-i686-v${{ env.CACHE_VERSION }}-${{ env.WITH_LTO }}
  214. - name: Build extra dependencies
  215. env:
  216. PKG_CONFIG_PATH: /usr/lib/i386-linux-gnu/pkgconfig
  217. run: |
  218. if [ "${{ env.WITH_LTO }}" != "true" ]; then export PAWPAW_SKIP_LTO=1; fi
  219. export PATH="/usr/lib/ccache:${PATH}"
  220. ./deps/PawPaw/bootstrap-cardinal.sh linux-i686 && ./deps/PawPaw/.cleanup.sh linux-i686
  221. - name: Build linux i686
  222. run: |
  223. if [ "${{ env.WITH_LTO }}" != "true" ]; then export PAWPAW_SKIP_LTO=1; fi
  224. export PATH="/usr/lib/ccache:${PATH}"
  225. pushd deps/PawPaw; source local.env linux-i686; popd
  226. make features
  227. make CIBUILD=true NOOPT=true WITH_LTO=${{ env.WITH_LTO }} -j $(nproc)
  228. make unzipfx
  229. - name: Set sha8 (non-release)
  230. if: startsWith(github.ref, 'refs/tags/') != true
  231. id: slug1
  232. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  233. - name: Set sha8 (release)
  234. if: startsWith(github.ref, 'refs/tags/')
  235. id: slug2
  236. run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})"
  237. - name: Set sha8
  238. id: slug
  239. run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})"
  240. - name: Pack binaries
  241. run: |
  242. tar -c -h --hard-dereference -z -f ${{ github.event.repository.name }}-linux-i686-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.tar.gz -C bin $(ls bin | grep -e lv2 -e vst -e clap) ../CardinalJACK ../CardinalNative
  243. - uses: actions/upload-artifact@v2
  244. with:
  245. name: ${{ github.event.repository.name }}-linux-i686-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  246. path: |
  247. *.tar.gz
  248. - uses: softprops/action-gh-release@v1
  249. if: startsWith(github.ref, 'refs/tags/')
  250. with:
  251. tag_name: ${{ github.ref_name }}
  252. name: ${{ github.ref_name }}
  253. draft: false
  254. prerelease: false
  255. files: |
  256. *.tar.gz
  257. linux-x86_64:
  258. runs-on: ubuntu-20.04
  259. steps:
  260. - uses: actions/checkout@v2
  261. with:
  262. submodules: recursive
  263. - name: Set up cache
  264. id: cache
  265. uses: actions/cache@v2
  266. with:
  267. path: |
  268. ~/PawPawBuilds
  269. src/Rack/dep/bin
  270. src/Rack/dep/include
  271. src/Rack/dep/lib
  272. src/Rack/dep/share
  273. src/Rack/dep/jansson-2.12
  274. src/Rack/dep/libarchive-3.4.3
  275. src/Rack/dep/libsamplerate-0.1.9
  276. src/Rack/dep/speexdsp-SpeexDSP-1.2rc3
  277. src/Rack/dep/zstd-1.4.5
  278. key: linux-x86_64-v${{ env.CACHE_VERSION }}-${{ env.WITH_LTO }}
  279. - name: Set up dependencies
  280. run: |
  281. sudo apt-get update -qq
  282. sudo apt-get install -yqq libasound2-dev libdbus-1-dev libgl1-mesa-dev libglib2.0-dev libpulse-dev libsdl2-dev libx11-dev libxcursor-dev libxext-dev libxrandr-dev
  283. - name: Set up ccache
  284. uses: hendrikmuhs/ccache-action@v1.2
  285. with:
  286. key: ccache-linux-x86_64-v${{ env.CACHE_VERSION }}-${{ env.WITH_LTO }}
  287. - name: Build extra dependencies
  288. run: |
  289. if [ "${{ env.WITH_LTO }}" != "true" ]; then export PAWPAW_SKIP_LTO=1; fi
  290. export PATH="/usr/lib/ccache:${PATH}"
  291. ./deps/PawPaw/bootstrap-cardinal.sh linux && ./deps/PawPaw/.cleanup.sh linux
  292. - name: Build linux x86_64
  293. run: |
  294. if [ "${{ env.WITH_LTO }}" != "true" ]; then export PAWPAW_SKIP_LTO=1; fi
  295. export PATH="/usr/lib/ccache:${PATH}"
  296. pushd deps/PawPaw; source local.env linux; popd
  297. make features
  298. make CIBUILD=true NOOPT=true WITH_LTO=${{ env.WITH_LTO }} -j $(nproc)
  299. make unzipfx
  300. - name: Set sha8 (non-release)
  301. if: startsWith(github.ref, 'refs/tags/') != true
  302. id: slug1
  303. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  304. - name: Set sha8 (release)
  305. if: startsWith(github.ref, 'refs/tags/')
  306. id: slug2
  307. run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})"
  308. - name: Set sha8
  309. id: slug
  310. run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})"
  311. - name: Pack binaries
  312. run: |
  313. tar -c -h --hard-dereference -z -f ${{ github.event.repository.name }}-linux-x86_64-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.tar.gz -C bin $(ls bin | grep -e lv2 -e vst -e clap) ../CardinalJACK ../CardinalNative
  314. - uses: actions/upload-artifact@v2
  315. with:
  316. name: ${{ github.event.repository.name }}-linux-x86_64-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  317. path: |
  318. *.tar.gz
  319. - uses: softprops/action-gh-release@v1
  320. if: startsWith(github.ref, 'refs/tags/')
  321. with:
  322. tag_name: ${{ github.ref_name }}
  323. name: ${{ github.ref_name }}
  324. draft: false
  325. prerelease: false
  326. files: |
  327. *.tar.gz
  328. linux-x86_64-debug:
  329. runs-on: ubuntu-20.04
  330. steps:
  331. - uses: actions/checkout@v2
  332. with:
  333. submodules: recursive
  334. - name: Set up dependencies
  335. run: |
  336. sudo apt-get update -qq
  337. sudo apt-get install -yqq libasound2-dev libdbus-1-dev libgl1-mesa-dev liblo-dev libpulse-dev libsdl2-dev libx11-dev libxcursor-dev libxext-dev libxrandr-dev
  338. - name: Build linux x86_64 (debug)
  339. env:
  340. LDFLAGS: -static-libgcc -static-libstdc++
  341. run: |
  342. make features
  343. # multiple jobs for building carla, deps and plugins
  344. make DEBUG=true carla deps dgl plugins resources -j $(nproc)
  345. # single job for final build stage, otherwise we might killed due to OOM
  346. make DEBUG=true -j 1
  347. - name: Set sha8
  348. id: slug
  349. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  350. - name: Pack binaries
  351. run: |
  352. tar -c -h --hard-dereference -z -f ${{ github.event.repository.name }}-linux-x86_64-debug-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.tar.gz -C bin $(ls bin | grep -e lv2 -e vst -e clap)
  353. - uses: actions/upload-artifact@v2
  354. with:
  355. name: ${{ github.event.repository.name }}-linux-x86_64-debug-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  356. path: |
  357. *.tar.gz
  358. linux-x86_64-headless:
  359. runs-on: ubuntu-20.04
  360. steps:
  361. - uses: actions/checkout@v2
  362. with:
  363. submodules: recursive
  364. - name: Set up dependencies
  365. run: |
  366. sudo apt-get update -qq
  367. sudo apt-get remove -yqq libcairo2-dev libx11-dev libx11-dev libxext-dev
  368. sudo apt-get install -yqq liblo-dev
  369. - name: Build linux x86_64 (headless)
  370. run: |
  371. make HEADLESS=true features
  372. make HEADLESS=true -j $(nproc)
  373. linux-x86_64-sysdeps:
  374. runs-on: ubuntu-20.04
  375. steps:
  376. - uses: actions/checkout@v2
  377. with:
  378. submodules: recursive
  379. - name: Set up dependencies
  380. run: |
  381. sudo apt-get update -qq
  382. sudo apt-get install -yqq libdbus-1-dev libgl1-mesa-dev liblo-dev libx11-dev libxcursor-dev libxext-dev libxrandr-dev libarchive-dev libfftw3-dev libjansson-dev libsamplerate0-dev libsndfile1-dev libspeexdsp-dev
  383. - name: Build linux x86_64 (sysdeps)
  384. run: |
  385. make features
  386. make SYSDEPS=true -j $(nproc)
  387. macos-intel:
  388. runs-on: macos-11
  389. steps:
  390. - uses: actions/checkout@v2
  391. with:
  392. submodules: recursive
  393. - name: Set up cache
  394. id: cache
  395. uses: actions/cache@v2
  396. with:
  397. path: |
  398. ~/PawPawBuilds
  399. src/Rack/dep/bin
  400. src/Rack/dep/include
  401. src/Rack/dep/lib
  402. src/Rack/dep/share
  403. src/Rack/dep/jansson-2.12
  404. src/Rack/dep/libarchive-3.4.3
  405. src/Rack/dep/libsamplerate-0.1.9
  406. src/Rack/dep/speexdsp-SpeexDSP-1.2rc3
  407. src/Rack/dep/zstd-1.4.5
  408. key: macos-intel-v${{ env.CACHE_VERSION }}-${{ env.WITH_LTO }}
  409. - name: Build extra dependencies
  410. run: |
  411. if [ "${{ env.WITH_LTO }}" != "true" ]; then export PAWPAW_SKIP_LTO=1; fi
  412. export PATH="/usr/local/opt/ccache/libexec:${PATH}"
  413. ./deps/PawPaw/bootstrap-cardinal.sh macos && ./deps/PawPaw/.cleanup.sh macos
  414. - name: Set up ccache
  415. if: steps.cache.outputs.cache-hit == 'true'
  416. uses: hendrikmuhs/ccache-action@v1.2
  417. with:
  418. key: ccache-macos-intel-v${{ env.CACHE_VERSION }}-${{ env.WITH_LTO }}
  419. - name: Build macOS intel (base)
  420. if: steps.cache.outputs.cache-hit == 'true'
  421. run: |
  422. if [ "${{ env.WITH_LTO }}" != "true" ]; then export PAWPAW_SKIP_LTO=1; fi
  423. export PATH="/usr/local/opt/ccache/libexec:${PATH}"
  424. pushd deps/PawPaw; source local.env macos; popd
  425. make features
  426. make CIBUILD=true NOOPT=true WITH_LTO=${{ env.WITH_LTO }} -j $(sysctl -n hw.logicalcpu)
  427. - name: Build macOS intel (AU using juce)
  428. if: steps.cache.outputs.cache-hit == 'true'
  429. env:
  430. MACOSX_DEPLOYMENT_TARGET: '10.8'
  431. run: |
  432. if [ "${{ env.WITH_LTO }}" != "true" ]; then export PAWPAW_SKIP_LTO=1; fi
  433. pushd deps/PawPaw; source local.env macos; popd
  434. git clone --depth=1 -b 6.1.6 https://github.com/juce-framework/JUCE.git jucewrapper/JUCE
  435. sed -i -e 's/kAudioUnitProperty_SupportsMPE/kAudioUnitProperty_ignore_SupportsMPE/' jucewrapper/JUCE/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.h
  436. mkdir -p jucewrapper/build
  437. pushd jucewrapper/build; cmake -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_OSX_ARCHITECTURES=x86_64 -DCMAKE_OSX_DEPLOYMENT_TARGET=10.8 -DCMAKE_OSX_SYSROOT="macosx" -DCMAKE_BUILD_TYPE=Release .. && make VERBOSE=1 -j $(sysctl -n hw.logicalcpu); popd
  438. mv jucewrapper/build/*_artefacts/Release/AU/*.component bin/
  439. - name: Build macOS intel (packaging)
  440. if: steps.cache.outputs.cache-hit == 'true'
  441. env:
  442. MACOS_ARCHS: 'x86_64'
  443. run: |
  444. pushd deps/PawPaw; source local.env macos; popd
  445. ./utils/create-macos-installer.sh
  446. - name: Set sha8 (non-release)
  447. if: startsWith(github.ref, 'refs/tags/') != true
  448. id: slug1
  449. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  450. - name: Set sha8 (release)
  451. if: startsWith(github.ref, 'refs/tags/')
  452. id: slug2
  453. run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})"
  454. - name: Set sha8
  455. id: slug
  456. run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})"
  457. - name: Rename macOS bundle
  458. if: steps.cache.outputs.cache-hit == 'true'
  459. run: |
  460. mv ${{ github.event.repository.name }}-macOS.pkg ${{ github.event.repository.name }}-macOS-intel-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.pkg
  461. - uses: actions/upload-artifact@v2
  462. with:
  463. name: ${{ github.event.repository.name }}-macOS-intel-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  464. path: |
  465. ${{ github.event.repository.name }}-*.pkg
  466. - uses: softprops/action-gh-release@v1
  467. if: startsWith(github.ref, 'refs/tags/')
  468. with:
  469. tag_name: ${{ github.ref_name }}
  470. name: ${{ github.ref_name }}
  471. draft: false
  472. prerelease: false
  473. files: |
  474. ${{ github.event.repository.name }}-*.pkg
  475. macos-universal:
  476. runs-on: macos-11
  477. steps:
  478. - uses: actions/checkout@v2
  479. with:
  480. submodules: recursive
  481. - name: Set up cache
  482. id: cache
  483. uses: actions/cache@v2
  484. with:
  485. path: |
  486. ~/PawPawBuilds
  487. src/Rack/dep/bin
  488. src/Rack/dep/include
  489. src/Rack/dep/lib
  490. src/Rack/dep/share
  491. src/Rack/dep/jansson-2.12
  492. src/Rack/dep/libarchive-3.4.3
  493. src/Rack/dep/libsamplerate-0.1.9
  494. src/Rack/dep/speexdsp-SpeexDSP-1.2rc3
  495. src/Rack/dep/zstd-1.4.5
  496. key: macos-universal-v${{ env.CACHE_VERSION }}-${{ env.WITH_LTO }}
  497. - name: Build extra dependencies
  498. run: |
  499. if [ "${{ env.WITH_LTO }}" != "true" ]; then export PAWPAW_SKIP_LTO=1; fi
  500. export PATH="/usr/local/opt/ccache/libexec:${PATH}"
  501. ./deps/PawPaw/bootstrap-cardinal.sh macos-universal && ./deps/PawPaw/.cleanup.sh macos-universal
  502. - name: Set up ccache
  503. if: steps.cache.outputs.cache-hit == 'true'
  504. uses: hendrikmuhs/ccache-action@v1.2
  505. with:
  506. key: ccache-macos-universal-v${{ env.CACHE_VERSION }}-${{ env.WITH_LTO }}
  507. - name: Build macOS universal (base)
  508. if: steps.cache.outputs.cache-hit == 'true'
  509. run: |
  510. if [ "${{ env.WITH_LTO }}" != "true" ]; then export PAWPAW_SKIP_LTO=1; fi
  511. export PATH="/usr/local/opt/ccache/libexec:${PATH}"
  512. pushd deps/PawPaw; source local.env macos-universal; popd
  513. make features
  514. make CIBUILD=true NOOPT=true WITH_LTO=${{ env.WITH_LTO }} -j $(sysctl -n hw.logicalcpu)
  515. - name: Build macOS universal (AU using juce)
  516. if: steps.cache.outputs.cache-hit == 'true'
  517. env:
  518. MACOSX_DEPLOYMENT_TARGET: '10.12'
  519. run: |
  520. if [ "${{ env.WITH_LTO }}" != "true" ]; then export PAWPAW_SKIP_LTO=1; fi
  521. pushd deps/PawPaw; source local.env macos-universal; popd
  522. git clone --depth=1 -b 6.1.6 https://github.com/juce-framework/JUCE.git jucewrapper/JUCE
  523. mkdir -p jucewrapper/build
  524. pushd jucewrapper/build; cmake -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_OSX_ARCHITECTURES='arm64;x86_64' -DCMAKE_OSX_DEPLOYMENT_TARGET=10.12 -DCMAKE_OSX_SYSROOT="macosx" -DCMAKE_BUILD_TYPE=Release .. && make VERBOSE=1 -j $(sysctl -n hw.logicalcpu); popd
  525. mv jucewrapper/build/*_artefacts/Release/AU/*.component bin/
  526. - name: Build macOS universal (packaging)
  527. if: steps.cache.outputs.cache-hit == 'true'
  528. env:
  529. MACOS_ARCHS: 'arm64,x86_64'
  530. run: |
  531. pushd deps/PawPaw; source local.env macos-universal; popd
  532. ./utils/create-macos-installer.sh
  533. - name: Set sha8 (non-release)
  534. if: startsWith(github.ref, 'refs/tags/') != true
  535. id: slug1
  536. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  537. - name: Set sha8 (release)
  538. if: startsWith(github.ref, 'refs/tags/')
  539. id: slug2
  540. run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})"
  541. - name: Set sha8
  542. id: slug
  543. run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})"
  544. - name: Rename macOS bundle
  545. if: steps.cache.outputs.cache-hit == 'true'
  546. run: |
  547. mv ${{ github.event.repository.name }}-macOS.pkg ${{ github.event.repository.name }}-macOS-universal-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.pkg
  548. - uses: actions/upload-artifact@v2
  549. with:
  550. name: ${{ github.event.repository.name }}-macOS-universal-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  551. path: |
  552. ${{ github.event.repository.name }}-*.pkg
  553. - uses: softprops/action-gh-release@v1
  554. if: startsWith(github.ref, 'refs/tags/')
  555. with:
  556. tag_name: ${{ github.ref_name }}
  557. name: ${{ github.ref_name }}
  558. draft: false
  559. prerelease: false
  560. files: |
  561. ${{ github.event.repository.name }}-*.pkg
  562. modduo:
  563. runs-on: ubuntu-20.04
  564. steps:
  565. - uses: actions/checkout@v2
  566. with:
  567. submodules: recursive
  568. - name: Set up cache
  569. uses: actions/cache@v2
  570. id: mpb-cache
  571. with:
  572. path: |
  573. ~/mod-workdir
  574. key: modduo-static-v${{ env.CACHE_VERSION }}-${{ env.WITH_LTO }}
  575. - name: Set up dependencies
  576. run: |
  577. sudo apt-get update -qq
  578. sudo apt-get install -yqq acl bc curl cvs git mercurial rsync subversion wget bison bzip2 flex gawk gperf gzip help2man nano perl patch tar texinfo unzip automake binutils build-essential cpio libtool libncurses-dev pkg-config python libtool-bin liblo-dev qemu-user-static
  579. sudo apt-get install -yqq pandoc texlive-latex-recommended texlive-latex-extra
  580. - name: Bootstrap toolchain
  581. if: steps.mpb-cache.outputs.cache-hit != 'true'
  582. run: |
  583. git clone --depth=1 https://github.com/moddevices/mod-plugin-builder.git deps/mod-plugin-builder
  584. sed -i "s/CT_LOG_PROGRESS_BAR=y/CT_LOG_PROGRESS_BAR=n/" deps/mod-plugin-builder/toolchain/*.config
  585. $(pwd)/deps/mod-plugin-builder/bootstrap.sh modduo-static minimal && $(pwd)/deps/mod-plugin-builder/.clean-install.sh modduo-static
  586. - name: Build for modduo
  587. run: |
  588. make modduo HEADLESS=true WITH_LTO=${{ env.WITH_LTO }} MODDUO=true -j $(nproc)
  589. - name: Set sha8
  590. id: slug
  591. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  592. - name: Pack binaries
  593. run: |
  594. tar -c -h --hard-dereference -z -f ${{ github.event.repository.name }}-modduo-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.tar.gz -C bin $(ls bin | grep lv2)
  595. - uses: actions/upload-artifact@v2
  596. with:
  597. name: ${{ github.event.repository.name }}-modduo-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  598. path: |
  599. *.tar.gz
  600. modduox:
  601. runs-on: ubuntu-20.04
  602. steps:
  603. - uses: actions/checkout@v2
  604. with:
  605. submodules: recursive
  606. - name: Set up cache
  607. uses: actions/cache@v2
  608. id: mpb-cache
  609. with:
  610. path: |
  611. ~/mod-workdir
  612. key: modduox-v${{ env.CACHE_VERSION }}-${{ env.WITH_LTO }}
  613. - name: Set up dependencies
  614. run: |
  615. sudo apt-get update -qq
  616. sudo apt-get install -yqq acl bc curl cvs git mercurial rsync subversion wget bison bzip2 flex gawk gperf gzip help2man nano perl patch tar texinfo unzip automake binutils build-essential cpio libtool libncurses-dev pkg-config python libtool-bin liblo-dev qemu-user-static
  617. sudo apt-get install -yqq pandoc texlive-latex-recommended texlive-latex-extra
  618. - name: Bootstrap toolchain
  619. if: steps.mpb-cache.outputs.cache-hit != 'true'
  620. run: |
  621. git clone --depth=1 https://github.com/moddevices/mod-plugin-builder.git deps/mod-plugin-builder
  622. sed -i "s/CT_LOG_PROGRESS_BAR=y/CT_LOG_PROGRESS_BAR=n/" deps/mod-plugin-builder/toolchain/*.config
  623. $(pwd)/deps/mod-plugin-builder/bootstrap.sh modduox-static minimal && $(pwd)/deps/mod-plugin-builder/.clean-install.sh modduox-static
  624. - name: Build for modduox
  625. run: |
  626. make modduox HEADLESS=true WITH_LTO=${{ env.WITH_LTO }} -j $(nproc)
  627. - name: Set sha8
  628. id: slug
  629. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  630. - name: Pack binaries
  631. run: |
  632. tar -c -h --hard-dereference -z -f ${{ github.event.repository.name }}-modduox-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.tar.gz -C bin $(ls bin | grep lv2)
  633. - uses: actions/upload-artifact@v2
  634. with:
  635. name: ${{ github.event.repository.name }}-modduox-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  636. path: |
  637. *.tar.gz
  638. moddwarf:
  639. runs-on: ubuntu-20.04
  640. steps:
  641. - uses: actions/checkout@v2
  642. with:
  643. submodules: recursive
  644. - name: Set up cache
  645. uses: actions/cache@v2
  646. id: mpb-cache
  647. with:
  648. path: |
  649. ~/mod-workdir
  650. key: moddwarf-v${{ env.CACHE_VERSION }}-${{ env.WITH_LTO }}
  651. - name: Set up dependencies
  652. run: |
  653. sudo apt-get update -qq
  654. sudo apt-get install -yqq acl bc curl cvs git mercurial rsync subversion wget bison bzip2 flex gawk gperf gzip help2man nano perl patch tar texinfo unzip automake binutils build-essential cpio libtool libncurses-dev pkg-config python libtool-bin liblo-dev qemu-user-static
  655. sudo apt-get install -yqq pandoc texlive-latex-recommended texlive-latex-extra
  656. - name: Bootstrap toolchain
  657. if: steps.mpb-cache.outputs.cache-hit != 'true'
  658. run: |
  659. git clone --depth=1 https://github.com/moddevices/mod-plugin-builder.git deps/mod-plugin-builder
  660. sed -i "s/CT_LOG_PROGRESS_BAR=y/CT_LOG_PROGRESS_BAR=n/" deps/mod-plugin-builder/toolchain/*.config
  661. $(pwd)/deps/mod-plugin-builder/bootstrap.sh moddwarf minimal && $(pwd)/deps/mod-plugin-builder/.clean-install.sh moddwarf
  662. - name: Build for moddwarf
  663. run: |
  664. make moddwarf HEADLESS=true WITH_LTO=${{ env.WITH_LTO }} -j $(nproc)
  665. - name: Set sha8
  666. id: slug
  667. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  668. - name: Pack binaries
  669. run: |
  670. tar -c -h --hard-dereference -z -f ${{ github.event.repository.name }}-moddwarf-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.tar.gz -C bin $(ls bin | grep lv2)
  671. - uses: actions/upload-artifact@v2
  672. with:
  673. name: ${{ github.event.repository.name }}-moddwarf-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  674. path: |
  675. *.tar.gz
  676. #wasm:
  677. #runs-on: ubuntu-20.04
  678. #steps:
  679. #- uses: actions/checkout@v2
  680. #with:
  681. #submodules: recursive
  682. #- name: Set up cache
  683. #id: cache
  684. #uses: actions/cache@v2
  685. #with:
  686. #path: |
  687. #~/PawPawBuilds
  688. #src/Rack/dep/bin
  689. #src/Rack/dep/include
  690. #src/Rack/dep/lib
  691. #src/Rack/dep/share
  692. #src/Rack/dep/jansson-2.12
  693. #src/Rack/dep/libarchive-3.4.3
  694. #src/Rack/dep/libsamplerate-0.1.9
  695. #src/Rack/dep/speexdsp-SpeexDSP-1.2rc3
  696. #src/Rack/dep/zstd-1.4.5
  697. #key: wasm-v${{ env.CACHE_VERSION }}
  698. #- name: Set up dependencies
  699. #run: |
  700. #[ -e ~/PawPawBuilds/emsdk ] || git clone https://github.com/emscripten-core/emsdk.git ~/PawPawBuilds/emsdk
  701. #cd ~/PawPawBuilds/emsdk && ./emsdk install latest && ./emsdk activate latest
  702. #- name: Build extra dependencies
  703. #run: |
  704. #source ~/PawPawBuilds/emsdk/emsdk_env.sh
  705. #./deps/PawPaw/bootstrap-cardinal.sh wasm && ./deps/PawPaw/.cleanup.sh wasm
  706. #- name: Build wasm cross-compiled
  707. #run: |
  708. #source ~/PawPawBuilds/emsdk/emsdk_env.sh
  709. #pushd deps/PawPaw; source local.env wasm; popd
  710. #make features
  711. #make CIBUILD=true NOOPT=true USE_GLES2=true -j $(nproc)
  712. #- name: Set sha8 (non-release)
  713. #if: startsWith(github.ref, 'refs/tags/') != true
  714. #id: slug1
  715. #run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  716. #- name: Set sha8 (release)
  717. #if: startsWith(github.ref, 'refs/tags/')
  718. #id: slug2
  719. #run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})"
  720. #- name: Set sha8
  721. #id: slug
  722. #run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})"
  723. #- name: Pack binaries
  724. #run: |
  725. #cd bin; zip -r -9 ../${{ github.event.repository.name }}-wasm-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.zip $(ls *.html *.data *.js *.wasm)
  726. #- uses: actions/upload-artifact@v2
  727. #with:
  728. #name: ${{ github.event.repository.name }}-wasm-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  729. #path: |
  730. #*.zip
  731. #- uses: softprops/action-gh-release@v1
  732. #if: startsWith(github.ref, 'refs/tags/')
  733. #with:
  734. #tag_name: ${{ github.ref_name }}
  735. #name: ${{ github.ref_name }}
  736. #draft: false
  737. #prerelease: false
  738. #files: |
  739. #*.zip
  740. wasm-mini:
  741. runs-on: ubuntu-20.04
  742. steps:
  743. - uses: actions/checkout@v2
  744. with:
  745. submodules: recursive
  746. - name: Set up cache
  747. id: cache
  748. uses: actions/cache@v2
  749. with:
  750. path: |
  751. ~/emsdk
  752. src/Rack/dep/bin
  753. src/Rack/dep/include
  754. src/Rack/dep/lib
  755. src/Rack/dep/share
  756. src/Rack/dep/jansson-2.12
  757. src/Rack/dep/libarchive-3.4.3
  758. src/Rack/dep/libsamplerate-0.1.9
  759. src/Rack/dep/speexdsp-SpeexDSP-1.2rc3
  760. src/Rack/dep/zstd-1.4.5
  761. key: wasm-mini-v${{ env.CACHE_VERSION }}
  762. - name: Set up dependencies
  763. run: |
  764. [ -e ~/emsdk ] || git clone https://github.com/emscripten-core/emsdk.git ~/emsdk
  765. cd ~/emsdk && ./emsdk install latest && ./emsdk activate latest
  766. - name: Build wasm-mini cross-compiled
  767. env:
  768. AR: emar
  769. CC: emcc
  770. CXX: em++
  771. NM: emnm
  772. RANLIB: emranlib
  773. STRIP: emstrip
  774. run: |
  775. source ~/emsdk/emsdk_env.sh
  776. make features
  777. make CIBUILD=true NOPLUGINS=true STATIC_BUILD=true USE_GLES2=true -j $(nproc)
  778. - name: Set sha8 (non-release)
  779. if: startsWith(github.ref, 'refs/tags/') != true
  780. id: slug1
  781. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  782. - name: Set sha8 (release)
  783. if: startsWith(github.ref, 'refs/tags/')
  784. id: slug2
  785. run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})"
  786. - name: Set sha8
  787. id: slug
  788. run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})"
  789. - name: Pack binaries
  790. run: |
  791. cd bin; zip -r -9 ../${{ github.event.repository.name }}-wasm-mini-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.zip $(ls *.html *.data *.js *.wasm)
  792. - uses: actions/upload-artifact@v2
  793. with:
  794. name: ${{ github.event.repository.name }}-wasm-mini-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  795. path: |
  796. *.zip
  797. - uses: softprops/action-gh-release@v1
  798. if: startsWith(github.ref, 'refs/tags/')
  799. with:
  800. tag_name: ${{ github.ref_name }}
  801. name: ${{ github.ref_name }}
  802. draft: false
  803. prerelease: false
  804. files: |
  805. *.zip
  806. win32:
  807. runs-on: ubuntu-20.04
  808. steps:
  809. - uses: actions/checkout@v2
  810. with:
  811. submodules: recursive
  812. - name: Set up cache
  813. id: cache
  814. uses: actions/cache@v2
  815. with:
  816. path: |
  817. ~/PawPawBuilds
  818. src/Rack/dep/bin
  819. src/Rack/dep/include
  820. src/Rack/dep/lib
  821. src/Rack/dep/share
  822. src/Rack/dep/jansson-2.12
  823. src/Rack/dep/libarchive-3.4.3
  824. src/Rack/dep/libsamplerate-0.1.9
  825. src/Rack/dep/speexdsp-SpeexDSP-1.2rc3
  826. src/Rack/dep/zstd-1.4.5
  827. key: win32-v${{ env.CACHE_VERSION }}-${{ env.WITH_LTO }}
  828. - name: Fix GitHub's mess
  829. run: |
  830. sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
  831. sudo apt-get update -qq
  832. sudo apt-get install -yqq --allow-downgrades libgd3/focal libpcre2-8-0/focal libpcre2-16-0/focal libpcre2-32-0/focal libpcre2-posix2/focal
  833. sudo apt-get purge -yqq libmono* moby* mono* php* libgdiplus libpcre2-posix3 libzip4
  834. - name: Set up dependencies
  835. run: |
  836. sudo dpkg --add-architecture i386
  837. sudo apt-get update -qq
  838. sudo apt-get install -yqq binutils-mingw-w64-i686 g++-mingw-w64-i686 mingw-w64 wine-stable:i386 qttools5-dev qttools5-dev-tools xvfb
  839. - name: Set up ccache
  840. uses: hendrikmuhs/ccache-action@v1.2
  841. with:
  842. key: ccache-win32-v${{ env.CACHE_VERSION }}-${{ env.WITH_LTO }}
  843. - name: Build extra dependencies
  844. run: |
  845. if [ "${{ env.WITH_LTO }}" != "true" ]; then export PAWPAW_SKIP_LTO=1; fi
  846. export PATH="/usr/lib/ccache:${PATH}"
  847. ./deps/PawPaw/bootstrap-cardinal.sh win32 && ./deps/PawPaw/.cleanup.sh win32
  848. - name: Build win32 cross-compiled (base)
  849. run: |
  850. if [ "${{ env.WITH_LTO }}" != "true" ]; then export PAWPAW_SKIP_LTO=1; fi
  851. export PATH="/usr/lib/ccache:${PATH}"
  852. pushd deps/PawPaw; source local.env win32; popd
  853. make features
  854. make CIBUILD=true NOOPT=true WITH_LTO=${{ env.WITH_LTO }} -j $(nproc)
  855. - name: Build win64 cross-compiled (carla)
  856. run: |
  857. if [ "${{ env.WITH_LTO }}" != "true" ]; then export PAWPAW_SKIP_LTO=1; fi
  858. export PATH="/usr/lib/ccache:${PATH}"
  859. pushd deps/PawPaw; source local.env win32; popd
  860. make -C carla CARLA_BACKEND_NAMESPACE=Cardinal EXTERNAL_PLUGINS=true HAVE_FLUIDSYNTH=false HAVE_ZYN_DEPS=false HAVE_ZYN_UI_DEPS=false HAVE_PYQT=true HAVE_QT5=true HAVE_QT5PKG=true STATIC_PLUGIN_TARGET=true USING_CUSTOM_DPF=true CUSTOM_DPF_PATH=$(pwd)/dpf -j $(nproc)
  861. make -C carla EMBED_TARGET=true TESTING=true dist
  862. make -C carla EMBED_TARGET=true TESTING=true dist
  863. - name: Build win64 cross-compiled (packaging)
  864. run: |
  865. pushd deps/PawPaw; source local.env win32; popd
  866. xvfb-run ./utils/create-windows-installer.sh 32
  867. - name: Set sha8 (non-release)
  868. if: startsWith(github.ref, 'refs/tags/') != true
  869. id: slug1
  870. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  871. - name: Set sha8 (release)
  872. if: startsWith(github.ref, 'refs/tags/')
  873. id: slug2
  874. run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})"
  875. - name: Set sha8
  876. id: slug
  877. run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})"
  878. - name: Pack binaries
  879. run: |
  880. cd bin; zip -r -9 ../${{ github.event.repository.name }}-win32-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.zip $(ls | grep -e lv2 -e vst -e clap)
  881. - uses: actions/upload-artifact@v2
  882. with:
  883. name: ${{ github.event.repository.name }}-win32-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  884. path: |
  885. *.exe
  886. *.zip
  887. - uses: softprops/action-gh-release@v1
  888. if: startsWith(github.ref, 'refs/tags/')
  889. with:
  890. tag_name: ${{ github.ref_name }}
  891. name: ${{ github.ref_name }}
  892. draft: false
  893. prerelease: false
  894. files: |
  895. *.exe
  896. *.zip
  897. win64:
  898. runs-on: ubuntu-20.04
  899. steps:
  900. - uses: actions/checkout@v2
  901. with:
  902. submodules: recursive
  903. - name: Set up cache
  904. id: cache
  905. uses: actions/cache@v2
  906. with:
  907. path: |
  908. ~/PawPawBuilds
  909. src/Rack/dep/bin
  910. src/Rack/dep/include
  911. src/Rack/dep/lib
  912. src/Rack/dep/share
  913. src/Rack/dep/jansson-2.12
  914. src/Rack/dep/libarchive-3.4.3
  915. src/Rack/dep/libsamplerate-0.1.9
  916. src/Rack/dep/speexdsp-SpeexDSP-1.2rc3
  917. src/Rack/dep/zstd-1.4.5
  918. key: win64-v${{ env.CACHE_VERSION }}-${{ env.WITH_LTO }}
  919. - name: Fix GitHub's mess
  920. run: |
  921. sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
  922. sudo apt-get update -qq
  923. sudo apt-get install -yqq --allow-downgrades libgd3/focal libpcre2-8-0/focal libpcre2-16-0/focal libpcre2-32-0/focal libpcre2-posix2/focal
  924. sudo apt-get purge -yqq libmono* moby* mono* php* libgdiplus libpcre2-posix3 libzip4
  925. - name: Set up dependencies
  926. run: |
  927. sudo dpkg --add-architecture i386
  928. sudo apt-get update -qq
  929. sudo apt-get install -yqq binutils-mingw-w64-x86-64 g++-mingw-w64-x86-64 mingw-w64 wine-stable qttools5-dev qttools5-dev-tools xvfb
  930. - name: Set up ccache
  931. uses: hendrikmuhs/ccache-action@v1.2
  932. with:
  933. key: ccache-win64-v${{ env.CACHE_VERSION }}-${{ env.WITH_LTO }}
  934. - name: Build extra dependencies
  935. run: |
  936. if [ "${{ env.WITH_LTO }}" != "true" ]; then export PAWPAW_SKIP_LTO=1; fi
  937. export PATH="/usr/lib/ccache:${PATH}"
  938. ./deps/PawPaw/bootstrap-cardinal.sh win64 && ./deps/PawPaw/.cleanup.sh win64
  939. - name: Build win64 cross-compiled (base)
  940. run: |
  941. if [ "${{ env.WITH_LTO }}" != "true" ]; then export PAWPAW_SKIP_LTO=1; fi
  942. export PATH="/usr/lib/ccache:${PATH}"
  943. pushd deps/PawPaw; source local.env win64; popd
  944. make features
  945. make CIBUILD=true NOOPT=true WITH_LTO=${{ env.WITH_LTO }} -j $(nproc)
  946. - name: Build win64 cross-compiled (carla)
  947. run: |
  948. if [ "${{ env.WITH_LTO }}" != "true" ]; then export PAWPAW_SKIP_LTO=1; fi
  949. export PATH="/usr/lib/ccache:${PATH}"
  950. pushd deps/PawPaw; source local.env win64; popd
  951. make -C carla CARLA_BACKEND_NAMESPACE=Cardinal EXTERNAL_PLUGINS=true HAVE_FLUIDSYNTH=false HAVE_ZYN_DEPS=false HAVE_ZYN_UI_DEPS=false HAVE_PYQT=true HAVE_QT5=true HAVE_QT5PKG=true STATIC_PLUGIN_TARGET=true USING_CUSTOM_DPF=true CUSTOM_DPF_PATH=$(pwd)/dpf all win32r -j $(nproc)
  952. make -C carla EMBED_TARGET=true TESTING=true dist
  953. make -C carla EMBED_TARGET=true TESTING=true dist
  954. - name: Build win64 cross-compiled (packaging)
  955. run: |
  956. pushd deps/PawPaw; source local.env win64; popd
  957. xvfb-run ./utils/create-windows-installer.sh 64
  958. - name: Set sha8 (non-release)
  959. if: startsWith(github.ref, 'refs/tags/') != true
  960. id: slug1
  961. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  962. - name: Set sha8 (release)
  963. if: startsWith(github.ref, 'refs/tags/')
  964. id: slug2
  965. run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})"
  966. - name: Set sha8
  967. id: slug
  968. run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})"
  969. - name: Pack binaries
  970. run: |
  971. cd bin; zip -r -9 ../${{ github.event.repository.name }}-win64-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.zip $(ls | grep -e lv2 -e vst -e clap)
  972. - uses: actions/upload-artifact@v2
  973. with:
  974. name: ${{ github.event.repository.name }}-win64-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  975. path: |
  976. *.exe
  977. *.zip
  978. - uses: softprops/action-gh-release@v1
  979. if: startsWith(github.ref, 'refs/tags/')
  980. with:
  981. tag_name: ${{ github.ref_name }}
  982. name: ${{ github.ref_name }}
  983. draft: false
  984. prerelease: false
  985. files: |
  986. *.exe
  987. *.zip
  988. source-tarball:
  989. runs-on: ubuntu-20.04
  990. steps:
  991. - uses: actions/checkout@v2
  992. with:
  993. submodules: recursive
  994. - name: Set up dependencies
  995. run: |
  996. sudo apt-get update -qq
  997. sudo apt-get install -yqq liblo-dev
  998. - name: Create source tarball
  999. run: |
  1000. make HEADLESS=true tarball
  1001. make HEADLESS=true tarball+deps
  1002. - name: Set sha8 (non-release)
  1003. if: startsWith(github.ref, 'refs/tags/') != true
  1004. id: slug1
  1005. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  1006. - name: Set sha8 (release)
  1007. if: startsWith(github.ref, 'refs/tags/')
  1008. id: slug2
  1009. run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})"
  1010. - name: Set sha8
  1011. id: slug
  1012. run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})"
  1013. - uses: actions/upload-artifact@v2
  1014. with:
  1015. name: ${{ github.event.repository.name }}-source-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  1016. path: |
  1017. /home/runner/cardinal*.tar.xz
  1018. /home/runner/*/cardinal*.tar.xz
  1019. /home/runner/*/*/cardinal*.tar.xz
  1020. - uses: softprops/action-gh-release@v1
  1021. if: startsWith(github.ref, 'refs/tags/')
  1022. with:
  1023. tag_name: ${{ github.ref_name }}
  1024. name: ${{ github.ref_name }}
  1025. draft: false
  1026. prerelease: false
  1027. files: |
  1028. /home/runner/cardinal*.tar.xz
  1029. /home/runner/*/cardinal*.tar.xz
  1030. /home/runner/*/*/cardinal*.tar.xz
  1031. plugin-validation:
  1032. runs-on: ubuntu-20.04
  1033. steps:
  1034. - uses: actions/checkout@v2
  1035. with:
  1036. submodules: recursive
  1037. - name: Set up cache
  1038. id: cache
  1039. uses: actions/cache@v2
  1040. with:
  1041. path: |
  1042. src/Rack/dep/bin
  1043. src/Rack/dep/include
  1044. src/Rack/dep/lib
  1045. src/Rack/dep/share
  1046. src/Rack/dep/jansson-2.12
  1047. src/Rack/dep/libarchive-3.4.3
  1048. src/Rack/dep/libsamplerate-0.1.9
  1049. src/Rack/dep/speexdsp-SpeexDSP-1.2rc3
  1050. src/Rack/dep/zstd-1.4.5
  1051. key: pluginval-v${{ env.CACHE_VERSION }}
  1052. - name: Set up dependencies
  1053. run: |
  1054. # custom repos
  1055. wget https://launchpad.net/~kxstudio-debian/+archive/kxstudio/+files/kxstudio-repos_11.1.0_all.deb
  1056. sudo dpkg -i kxstudio-repos_11.1.0_all.deb
  1057. sudo apt-get update -qq
  1058. # build-deps
  1059. sudo apt-get install -yqq libdbus-1-dev libgl1-mesa-dev liblo-dev libx11-dev libxcursor-dev libxext-dev libxrandr-dev
  1060. # runtime testing
  1061. sudo apt-get install -yqq carla-git lilv-utils lv2-dev lv2lint kxstudio-lv2-extensions mod-lv2-extensions valgrind xvfb
  1062. - name: Set up ccache
  1063. uses: hendrikmuhs/ccache-action@v1.2
  1064. with:
  1065. key: ccache-pluginval-v${{ env.CACHE_VERSION }}
  1066. - name: Build Cardinal
  1067. env:
  1068. CFLAGS: -g
  1069. CXXFLAGS: -g -DDPF_ABORT_ON_ERROR -DDPF_RUNTIME_TESTING
  1070. LDFLAGS: -static-libgcc -static-libstdc++
  1071. run: |
  1072. export PATH="/usr/lib/ccache:${PATH}"
  1073. make features
  1074. make NOOPT=true SKIP_STRIPPING=true -j $(nproc)
  1075. - name: Run Cardinal self-tests
  1076. run: |
  1077. # --exit-on-first-error=yes
  1078. xvfb-run valgrind \
  1079. --gen-suppressions=all \
  1080. --error-exitcode=255 \
  1081. --leak-check=no \
  1082. --track-origins=yes \
  1083. --suppressions=./dpf/utils/valgrind-dpf.supp \
  1084. ./bin/Cardinal selftest
  1085. - name: Validate LV2 ttl syntax
  1086. run: |
  1087. lv2_validate \
  1088. /usr/lib/lv2/mod.lv2/*.ttl \
  1089. /usr/lib/lv2/kx-meta/*.ttl \
  1090. /usr/lib/lv2/kx-control-input-port-change-request.lv2/*.ttl \
  1091. /usr/lib/lv2/kx-programs.lv2/*.ttl \
  1092. ./bin/*.lv2/*.ttl
  1093. - name: Validate LV2 metadata and binaries
  1094. run: |
  1095. export LV2_PATH=/tmp/lv2-path
  1096. mkdir ${LV2_PATH}
  1097. cp -r bin/CardinalFX.lv2 bin/CardinalSynth.lv2 \
  1098. /usr/lib/lv2/{atom,buf-size,core,data-access,kx-control-input-port-change-request,kx-programs,instance-access,midi,mod,parameters,port-groups,port-props,options,patch,presets,resize-port,state,time,ui,units,urid,worker}.lv2 \
  1099. ${LV2_PATH}
  1100. xvfb-run lv2lint -s lv2_generate_ttl -l ld-linux-x86-64.so.2 -M nopack $(lv2ls)
  1101. - name: Test LV2 plugin
  1102. run: |
  1103. export LV2_PATH=/tmp/lv2-path
  1104. for p in $(lv2ls); do \
  1105. env CARLA_BRIDGE_DUMMY=1 CARLA_BRIDGE_TESTING=native \
  1106. xvfb-run valgrind \
  1107. --error-exitcode=255 \
  1108. --leak-check=no \
  1109. --track-origins=yes \
  1110. --suppressions=./dpf/utils/valgrind-dpf.supp \
  1111. /usr/lib/carla/carla-bridge-native lv2 "" ${p}; \
  1112. done
  1113. - name: Test VST2 plugin
  1114. run: |
  1115. for p in $(ls bin/*.vst/*.so); do \
  1116. env CARLA_BRIDGE_DUMMY=1 CARLA_BRIDGE_TESTING=native \
  1117. xvfb-run valgrind \
  1118. --error-exitcode=255 \
  1119. --leak-check=no \
  1120. --track-origins=yes \
  1121. --suppressions=./dpf/utils/valgrind-dpf.supp \
  1122. /usr/lib/carla/carla-bridge-native vst2 ./${p} ""; \
  1123. done
  1124. - name: Test VST3 plugin
  1125. run: |
  1126. for p in $(ls bin/ | grep vst3); do \
  1127. env CARLA_BRIDGE_DUMMY=1 CARLA_BRIDGE_TESTING=native \
  1128. xvfb-run valgrind \
  1129. --error-exitcode=255 \
  1130. --leak-check=no \
  1131. --track-origins=yes \
  1132. --suppressions=./dpf/utils/valgrind-dpf.supp \
  1133. /usr/lib/carla/carla-bridge-native vst3 ./bin/${p} ""; \
  1134. done