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.

1153 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: 'true'
  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. run: |
  459. mv ${{ github.event.repository.name }}-macOS.pkg ${{ github.event.repository.name }}-macOS-intel-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.pkg
  460. - uses: actions/upload-artifact@v2
  461. with:
  462. name: ${{ github.event.repository.name }}-macOS-intel-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  463. path: |
  464. ${{ github.event.repository.name }}-*.pkg
  465. - uses: softprops/action-gh-release@v1
  466. if: startsWith(github.ref, 'refs/tags/')
  467. with:
  468. tag_name: ${{ github.ref_name }}
  469. name: ${{ github.ref_name }}
  470. draft: false
  471. prerelease: false
  472. files: |
  473. ${{ github.event.repository.name }}-*.pkg
  474. macos-universal:
  475. runs-on: macos-11
  476. steps:
  477. - uses: actions/checkout@v2
  478. with:
  479. submodules: recursive
  480. - name: Set up cache
  481. id: cache
  482. uses: actions/cache@v2
  483. with:
  484. path: |
  485. ~/PawPawBuilds
  486. src/Rack/dep/bin
  487. src/Rack/dep/include
  488. src/Rack/dep/lib
  489. src/Rack/dep/share
  490. src/Rack/dep/jansson-2.12
  491. src/Rack/dep/libarchive-3.4.3
  492. src/Rack/dep/libsamplerate-0.1.9
  493. src/Rack/dep/speexdsp-SpeexDSP-1.2rc3
  494. src/Rack/dep/zstd-1.4.5
  495. key: macos-universal-v${{ env.CACHE_VERSION }}-${{ env.WITH_LTO }}
  496. - name: Build extra dependencies
  497. run: |
  498. if [ "${{ env.WITH_LTO }}" != "true" ]; then export PAWPAW_SKIP_LTO=1; fi
  499. export PATH="/usr/local/opt/ccache/libexec:${PATH}"
  500. ./deps/PawPaw/bootstrap-cardinal.sh macos-universal && ./deps/PawPaw/.cleanup.sh macos-universal
  501. - name: Set up ccache
  502. if: steps.cache.outputs.cache-hit == 'true'
  503. uses: hendrikmuhs/ccache-action@v1.2
  504. with:
  505. key: ccache-macos-universal-v${{ env.CACHE_VERSION }}-${{ env.WITH_LTO }}
  506. - name: Build macOS universal (base)
  507. if: steps.cache.outputs.cache-hit == 'true'
  508. run: |
  509. if [ "${{ env.WITH_LTO }}" != "true" ]; then export PAWPAW_SKIP_LTO=1; fi
  510. export PATH="/usr/local/opt/ccache/libexec:${PATH}"
  511. pushd deps/PawPaw; source local.env macos-universal; popd
  512. make features
  513. make CIBUILD=true NOOPT=true WITH_LTO=${{ env.WITH_LTO }} -j $(sysctl -n hw.logicalcpu)
  514. - name: Build macOS universal (AU using juce)
  515. if: steps.cache.outputs.cache-hit == 'true'
  516. env:
  517. MACOSX_DEPLOYMENT_TARGET: '10.12'
  518. run: |
  519. if [ "${{ env.WITH_LTO }}" != "true" ]; then export PAWPAW_SKIP_LTO=1; fi
  520. pushd deps/PawPaw; source local.env macos-universal; popd
  521. git clone --depth=1 -b 6.1.6 https://github.com/juce-framework/JUCE.git jucewrapper/JUCE
  522. mkdir -p jucewrapper/build
  523. 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
  524. mv jucewrapper/build/*_artefacts/Release/AU/*.component bin/
  525. - name: Build macOS universal (packaging)
  526. if: steps.cache.outputs.cache-hit == 'true'
  527. env:
  528. MACOS_ARCHS: 'arm64,x86_64'
  529. run: |
  530. pushd deps/PawPaw; source local.env macos-universal; popd
  531. ./utils/create-macos-installer.sh
  532. - name: Set sha8 (non-release)
  533. if: startsWith(github.ref, 'refs/tags/') != true
  534. id: slug1
  535. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  536. - name: Set sha8 (release)
  537. if: startsWith(github.ref, 'refs/tags/')
  538. id: slug2
  539. run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})"
  540. - name: Set sha8
  541. id: slug
  542. run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})"
  543. - name: Rename macOS bundle
  544. run: |
  545. mv ${{ github.event.repository.name }}-macOS.pkg ${{ github.event.repository.name }}-macOS-universal-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}.pkg
  546. - uses: actions/upload-artifact@v2
  547. with:
  548. name: ${{ github.event.repository.name }}-macOS-universal-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  549. path: |
  550. ${{ github.event.repository.name }}-*.pkg
  551. - uses: softprops/action-gh-release@v1
  552. if: startsWith(github.ref, 'refs/tags/')
  553. with:
  554. tag_name: ${{ github.ref_name }}
  555. name: ${{ github.ref_name }}
  556. draft: false
  557. prerelease: false
  558. files: |
  559. ${{ github.event.repository.name }}-*.pkg
  560. modduo:
  561. runs-on: ubuntu-20.04
  562. steps:
  563. - uses: actions/checkout@v2
  564. with:
  565. submodules: recursive
  566. - name: Set up cache
  567. uses: actions/cache@v2
  568. id: mpb-cache
  569. with:
  570. path: |
  571. ~/mod-workdir
  572. key: modduo-static-v${{ env.CACHE_VERSION }}-${{ env.WITH_LTO }}
  573. - name: Set up dependencies
  574. run: |
  575. sudo apt-get update -qq
  576. 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
  577. sudo apt-get install -yqq pandoc texlive-latex-recommended texlive-latex-extra
  578. - name: Bootstrap toolchain
  579. if: steps.mpb-cache.outputs.cache-hit != 'true'
  580. run: |
  581. git clone --depth=1 https://github.com/moddevices/mod-plugin-builder.git deps/mod-plugin-builder
  582. sed -i "s/CT_LOG_PROGRESS_BAR=y/CT_LOG_PROGRESS_BAR=n/" deps/mod-plugin-builder/toolchain/*.config
  583. $(pwd)/deps/mod-plugin-builder/bootstrap.sh modduo-static minimal && $(pwd)/deps/mod-plugin-builder/.clean-install.sh modduo-static
  584. - name: Build for modduo
  585. run: |
  586. make modduo HEADLESS=true WITH_LTO=${{ env.WITH_LTO }} MODDUO=true -j $(nproc)
  587. - name: Set sha8
  588. id: slug
  589. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  590. - name: Pack binaries
  591. run: |
  592. 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)
  593. - uses: actions/upload-artifact@v2
  594. with:
  595. name: ${{ github.event.repository.name }}-modduo-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  596. path: |
  597. *.tar.gz
  598. modduox:
  599. runs-on: ubuntu-20.04
  600. steps:
  601. - uses: actions/checkout@v2
  602. with:
  603. submodules: recursive
  604. - name: Set up cache
  605. uses: actions/cache@v2
  606. id: mpb-cache
  607. with:
  608. path: |
  609. ~/mod-workdir
  610. key: modduox-v${{ env.CACHE_VERSION }}-${{ env.WITH_LTO }}
  611. - name: Set up dependencies
  612. run: |
  613. sudo apt-get update -qq
  614. 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
  615. sudo apt-get install -yqq pandoc texlive-latex-recommended texlive-latex-extra
  616. - name: Bootstrap toolchain
  617. if: steps.mpb-cache.outputs.cache-hit != 'true'
  618. run: |
  619. git clone --depth=1 https://github.com/moddevices/mod-plugin-builder.git deps/mod-plugin-builder
  620. sed -i "s/CT_LOG_PROGRESS_BAR=y/CT_LOG_PROGRESS_BAR=n/" deps/mod-plugin-builder/toolchain/*.config
  621. $(pwd)/deps/mod-plugin-builder/bootstrap.sh modduox-static minimal && $(pwd)/deps/mod-plugin-builder/.clean-install.sh modduox-static
  622. - name: Build for modduox
  623. run: |
  624. make modduox HEADLESS=true WITH_LTO=${{ env.WITH_LTO }} -j $(nproc)
  625. - name: Set sha8
  626. id: slug
  627. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  628. - name: Pack binaries
  629. run: |
  630. 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)
  631. - uses: actions/upload-artifact@v2
  632. with:
  633. name: ${{ github.event.repository.name }}-modduox-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  634. path: |
  635. *.tar.gz
  636. moddwarf:
  637. runs-on: ubuntu-20.04
  638. steps:
  639. - uses: actions/checkout@v2
  640. with:
  641. submodules: recursive
  642. - name: Set up cache
  643. uses: actions/cache@v2
  644. id: mpb-cache
  645. with:
  646. path: |
  647. ~/mod-workdir
  648. key: moddwarf-v${{ env.CACHE_VERSION }}-${{ env.WITH_LTO }}
  649. - name: Set up dependencies
  650. run: |
  651. sudo apt-get update -qq
  652. 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
  653. sudo apt-get install -yqq pandoc texlive-latex-recommended texlive-latex-extra
  654. - name: Bootstrap toolchain
  655. if: steps.mpb-cache.outputs.cache-hit != 'true'
  656. run: |
  657. git clone --depth=1 https://github.com/moddevices/mod-plugin-builder.git deps/mod-plugin-builder
  658. sed -i "s/CT_LOG_PROGRESS_BAR=y/CT_LOG_PROGRESS_BAR=n/" deps/mod-plugin-builder/toolchain/*.config
  659. $(pwd)/deps/mod-plugin-builder/bootstrap.sh moddwarf minimal && $(pwd)/deps/mod-plugin-builder/.clean-install.sh moddwarf
  660. - name: Build for moddwarf
  661. run: |
  662. make moddwarf HEADLESS=true WITH_LTO=${{ env.WITH_LTO }} -j $(nproc)
  663. - name: Set sha8
  664. id: slug
  665. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  666. - name: Pack binaries
  667. run: |
  668. 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)
  669. - uses: actions/upload-artifact@v2
  670. with:
  671. name: ${{ github.event.repository.name }}-moddwarf-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  672. path: |
  673. *.tar.gz
  674. #wasm:
  675. #runs-on: ubuntu-20.04
  676. #steps:
  677. #- uses: actions/checkout@v2
  678. #with:
  679. #submodules: recursive
  680. #- name: Set up cache
  681. #id: cache
  682. #uses: actions/cache@v2
  683. #with:
  684. #path: |
  685. #~/PawPawBuilds
  686. #src/Rack/dep/bin
  687. #src/Rack/dep/include
  688. #src/Rack/dep/lib
  689. #src/Rack/dep/share
  690. #src/Rack/dep/jansson-2.12
  691. #src/Rack/dep/libarchive-3.4.3
  692. #src/Rack/dep/libsamplerate-0.1.9
  693. #src/Rack/dep/speexdsp-SpeexDSP-1.2rc3
  694. #src/Rack/dep/zstd-1.4.5
  695. #key: wasm-v${{ env.CACHE_VERSION }}
  696. #- name: Set up dependencies
  697. #run: |
  698. #[ -e ~/PawPawBuilds/emsdk ] || git clone https://github.com/emscripten-core/emsdk.git ~/PawPawBuilds/emsdk
  699. #cd ~/PawPawBuilds/emsdk && ./emsdk install latest && ./emsdk activate latest
  700. #- name: Build extra dependencies
  701. #run: |
  702. #source ~/PawPawBuilds/emsdk/emsdk_env.sh
  703. #./deps/PawPaw/bootstrap-cardinal.sh wasm && ./deps/PawPaw/.cleanup.sh wasm
  704. #- name: Build wasm cross-compiled
  705. #run: |
  706. #source ~/PawPawBuilds/emsdk/emsdk_env.sh
  707. #pushd deps/PawPaw; source local.env wasm; popd
  708. #make features
  709. #make CIBUILD=true NOOPT=true USE_GLES2=true -j $(nproc)
  710. #- name: Set sha8 (non-release)
  711. #if: startsWith(github.ref, 'refs/tags/') != true
  712. #id: slug1
  713. #run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  714. #- name: Set sha8 (release)
  715. #if: startsWith(github.ref, 'refs/tags/')
  716. #id: slug2
  717. #run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})"
  718. #- name: Set sha8
  719. #id: slug
  720. #run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})"
  721. #- name: Pack binaries
  722. #run: |
  723. #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)
  724. #- uses: actions/upload-artifact@v2
  725. #with:
  726. #name: ${{ github.event.repository.name }}-wasm-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  727. #path: |
  728. #*.zip
  729. #- uses: softprops/action-gh-release@v1
  730. #if: startsWith(github.ref, 'refs/tags/')
  731. #with:
  732. #tag_name: ${{ github.ref_name }}
  733. #name: ${{ github.ref_name }}
  734. #draft: false
  735. #prerelease: false
  736. #files: |
  737. #*.zip
  738. wasm-mini:
  739. runs-on: ubuntu-20.04
  740. steps:
  741. - uses: actions/checkout@v2
  742. with:
  743. submodules: recursive
  744. - name: Set up cache
  745. id: cache
  746. uses: actions/cache@v2
  747. with:
  748. path: |
  749. ~/emsdk
  750. src/Rack/dep/bin
  751. src/Rack/dep/include
  752. src/Rack/dep/lib
  753. src/Rack/dep/share
  754. src/Rack/dep/jansson-2.12
  755. src/Rack/dep/libarchive-3.4.3
  756. src/Rack/dep/libsamplerate-0.1.9
  757. src/Rack/dep/speexdsp-SpeexDSP-1.2rc3
  758. src/Rack/dep/zstd-1.4.5
  759. key: wasm-mini-v${{ env.CACHE_VERSION }}
  760. - name: Set up dependencies
  761. run: |
  762. [ -e ~/emsdk ] || git clone https://github.com/emscripten-core/emsdk.git ~/emsdk
  763. cd ~/emsdk && ./emsdk install latest && ./emsdk activate latest
  764. - name: Build wasm-mini cross-compiled
  765. env:
  766. AR: emar
  767. CC: emcc
  768. CXX: em++
  769. NM: emnm
  770. RANLIB: emranlib
  771. STRIP: emstrip
  772. run: |
  773. source ~/emsdk/emsdk_env.sh
  774. make features
  775. make CIBUILD=true NOPLUGINS=true STATIC_BUILD=true USE_GLES2=true -j $(nproc)
  776. - name: Set sha8 (non-release)
  777. if: startsWith(github.ref, 'refs/tags/') != true
  778. id: slug1
  779. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  780. - name: Set sha8 (release)
  781. if: startsWith(github.ref, 'refs/tags/')
  782. id: slug2
  783. run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})"
  784. - name: Set sha8
  785. id: slug
  786. run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})"
  787. - name: Pack binaries
  788. run: |
  789. 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)
  790. - uses: actions/upload-artifact@v2
  791. with:
  792. name: ${{ github.event.repository.name }}-wasm-mini-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  793. path: |
  794. *.zip
  795. - uses: softprops/action-gh-release@v1
  796. if: startsWith(github.ref, 'refs/tags/')
  797. with:
  798. tag_name: ${{ github.ref_name }}
  799. name: ${{ github.ref_name }}
  800. draft: false
  801. prerelease: false
  802. files: |
  803. *.zip
  804. win32:
  805. runs-on: ubuntu-20.04
  806. steps:
  807. - uses: actions/checkout@v2
  808. with:
  809. submodules: recursive
  810. - name: Set up cache
  811. id: cache
  812. uses: actions/cache@v2
  813. with:
  814. path: |
  815. ~/PawPawBuilds
  816. src/Rack/dep/bin
  817. src/Rack/dep/include
  818. src/Rack/dep/lib
  819. src/Rack/dep/share
  820. src/Rack/dep/jansson-2.12
  821. src/Rack/dep/libarchive-3.4.3
  822. src/Rack/dep/libsamplerate-0.1.9
  823. src/Rack/dep/speexdsp-SpeexDSP-1.2rc3
  824. src/Rack/dep/zstd-1.4.5
  825. key: win32-v${{ env.CACHE_VERSION }}-${{ env.WITH_LTO }}
  826. - name: Fix GitHub's mess
  827. run: |
  828. sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
  829. sudo apt-get update -qq
  830. sudo apt-get install -yqq --allow-downgrades libgd3/focal libpcre2-8-0/focal libpcre2-16-0/focal libpcre2-32-0/focal libpcre2-posix2/focal
  831. sudo apt-get purge -yqq libmono* moby* mono* php* libgdiplus libpcre2-posix3 libzip4
  832. - name: Set up dependencies
  833. run: |
  834. sudo dpkg --add-architecture i386
  835. sudo apt-get update -qq
  836. sudo apt-get install -yqq binutils-mingw-w64-i686 g++-mingw-w64-i686 mingw-w64 wine-stable:i386 qttools5-dev qttools5-dev-tools xvfb
  837. - name: Set up ccache
  838. uses: hendrikmuhs/ccache-action@v1.2
  839. with:
  840. key: ccache-win32-v${{ env.CACHE_VERSION }}-${{ env.WITH_LTO }}
  841. - name: Build extra dependencies
  842. run: |
  843. if [ "${{ env.WITH_LTO }}" != "true" ]; then export PAWPAW_SKIP_LTO=1; fi
  844. export PATH="/usr/lib/ccache:${PATH}"
  845. ./deps/PawPaw/bootstrap-cardinal.sh win32 && ./deps/PawPaw/.cleanup.sh win32
  846. - name: Build win32 cross-compiled (base)
  847. run: |
  848. if [ "${{ env.WITH_LTO }}" != "true" ]; then export PAWPAW_SKIP_LTO=1; fi
  849. export PATH="/usr/lib/ccache:${PATH}"
  850. pushd deps/PawPaw; source local.env win32; popd
  851. make features
  852. make CIBUILD=true NOOPT=true WITH_LTO=${{ env.WITH_LTO }} -j $(nproc)
  853. - name: Build win64 cross-compiled (carla)
  854. run: |
  855. if [ "${{ env.WITH_LTO }}" != "true" ]; then export PAWPAW_SKIP_LTO=1; fi
  856. export PATH="/usr/lib/ccache:${PATH}"
  857. pushd deps/PawPaw; source local.env win32; popd
  858. 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)
  859. make -C carla EMBED_TARGET=true TESTING=true dist
  860. make -C carla EMBED_TARGET=true TESTING=true dist
  861. - name: Build win64 cross-compiled (packaging)
  862. run: |
  863. pushd deps/PawPaw; source local.env win32; popd
  864. xvfb-run ./utils/create-windows-installer.sh 32
  865. - name: Set sha8 (non-release)
  866. if: startsWith(github.ref, 'refs/tags/') != true
  867. id: slug1
  868. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  869. - name: Set sha8 (release)
  870. if: startsWith(github.ref, 'refs/tags/')
  871. id: slug2
  872. run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})"
  873. - name: Set sha8
  874. id: slug
  875. run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})"
  876. - name: Pack binaries
  877. run: |
  878. 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)
  879. - uses: actions/upload-artifact@v2
  880. with:
  881. name: ${{ github.event.repository.name }}-win32-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  882. path: |
  883. *.exe
  884. *.zip
  885. - uses: softprops/action-gh-release@v1
  886. if: startsWith(github.ref, 'refs/tags/')
  887. with:
  888. tag_name: ${{ github.ref_name }}
  889. name: ${{ github.ref_name }}
  890. draft: false
  891. prerelease: false
  892. files: |
  893. *.exe
  894. *.zip
  895. win64:
  896. runs-on: ubuntu-20.04
  897. steps:
  898. - uses: actions/checkout@v2
  899. with:
  900. submodules: recursive
  901. - name: Set up cache
  902. id: cache
  903. uses: actions/cache@v2
  904. with:
  905. path: |
  906. ~/PawPawBuilds
  907. src/Rack/dep/bin
  908. src/Rack/dep/include
  909. src/Rack/dep/lib
  910. src/Rack/dep/share
  911. src/Rack/dep/jansson-2.12
  912. src/Rack/dep/libarchive-3.4.3
  913. src/Rack/dep/libsamplerate-0.1.9
  914. src/Rack/dep/speexdsp-SpeexDSP-1.2rc3
  915. src/Rack/dep/zstd-1.4.5
  916. key: win64-v${{ env.CACHE_VERSION }}-${{ env.WITH_LTO }}
  917. - name: Fix GitHub's mess
  918. run: |
  919. sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
  920. sudo apt-get update -qq
  921. sudo apt-get install -yqq --allow-downgrades libgd3/focal libpcre2-8-0/focal libpcre2-16-0/focal libpcre2-32-0/focal libpcre2-posix2/focal
  922. sudo apt-get purge -yqq libmono* moby* mono* php* libgdiplus libpcre2-posix3 libzip4
  923. - name: Set up dependencies
  924. run: |
  925. sudo dpkg --add-architecture i386
  926. sudo apt-get update -qq
  927. 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
  928. - name: Set up ccache
  929. uses: hendrikmuhs/ccache-action@v1.2
  930. with:
  931. key: ccache-win64-v${{ env.CACHE_VERSION }}-${{ env.WITH_LTO }}
  932. - name: Build extra dependencies
  933. run: |
  934. if [ "${{ env.WITH_LTO }}" != "true" ]; then export PAWPAW_SKIP_LTO=1; fi
  935. export PATH="/usr/lib/ccache:${PATH}"
  936. ./deps/PawPaw/bootstrap-cardinal.sh win64 && ./deps/PawPaw/.cleanup.sh win64
  937. - name: Build win64 cross-compiled (base)
  938. run: |
  939. if [ "${{ env.WITH_LTO }}" != "true" ]; then export PAWPAW_SKIP_LTO=1; fi
  940. export PATH="/usr/lib/ccache:${PATH}"
  941. pushd deps/PawPaw; source local.env win64; popd
  942. make features
  943. make CIBUILD=true NOOPT=true WITH_LTO=${{ env.WITH_LTO }} -j $(nproc)
  944. - name: Build win64 cross-compiled (carla)
  945. run: |
  946. if [ "${{ env.WITH_LTO }}" != "true" ]; then export PAWPAW_SKIP_LTO=1; fi
  947. export PATH="/usr/lib/ccache:${PATH}"
  948. pushd deps/PawPaw; source local.env win64; popd
  949. 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)
  950. make -C carla EMBED_TARGET=true TESTING=true dist
  951. make -C carla EMBED_TARGET=true TESTING=true dist
  952. - name: Build win64 cross-compiled (packaging)
  953. run: |
  954. pushd deps/PawPaw; source local.env win64; popd
  955. xvfb-run ./utils/create-windows-installer.sh 64
  956. - name: Set sha8 (non-release)
  957. if: startsWith(github.ref, 'refs/tags/') != true
  958. id: slug1
  959. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  960. - name: Set sha8 (release)
  961. if: startsWith(github.ref, 'refs/tags/')
  962. id: slug2
  963. run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})"
  964. - name: Set sha8
  965. id: slug
  966. run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})"
  967. - name: Pack binaries
  968. run: |
  969. 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)
  970. - uses: actions/upload-artifact@v2
  971. with:
  972. name: ${{ github.event.repository.name }}-win64-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  973. path: |
  974. *.exe
  975. *.zip
  976. - uses: softprops/action-gh-release@v1
  977. if: startsWith(github.ref, 'refs/tags/')
  978. with:
  979. tag_name: ${{ github.ref_name }}
  980. name: ${{ github.ref_name }}
  981. draft: false
  982. prerelease: false
  983. files: |
  984. *.exe
  985. *.zip
  986. source-tarball:
  987. runs-on: ubuntu-20.04
  988. steps:
  989. - uses: actions/checkout@v2
  990. with:
  991. submodules: recursive
  992. - name: Set up dependencies
  993. run: |
  994. sudo apt-get update -qq
  995. sudo apt-get install -yqq liblo-dev
  996. - name: Create source tarball
  997. run: |
  998. make HEADLESS=true tarball
  999. make HEADLESS=true tarball+deps
  1000. - name: Set sha8 (non-release)
  1001. if: startsWith(github.ref, 'refs/tags/') != true
  1002. id: slug1
  1003. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  1004. - name: Set sha8 (release)
  1005. if: startsWith(github.ref, 'refs/tags/')
  1006. id: slug2
  1007. run: echo "::set-output name=sha8::$(echo ${{ github.ref_name }})"
  1008. - name: Set sha8
  1009. id: slug
  1010. run: echo "::set-output name=sha8::$(echo ${{ steps.slug1.outputs.sha8 || steps.slug2.outputs.sha8 }})"
  1011. - uses: actions/upload-artifact@v2
  1012. with:
  1013. name: ${{ github.event.repository.name }}-source-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  1014. path: |
  1015. /home/runner/cardinal*.tar.xz
  1016. /home/runner/*/cardinal*.tar.xz
  1017. /home/runner/*/*/cardinal*.tar.xz
  1018. - uses: softprops/action-gh-release@v1
  1019. if: startsWith(github.ref, 'refs/tags/')
  1020. with:
  1021. tag_name: ${{ github.ref_name }}
  1022. name: ${{ github.ref_name }}
  1023. draft: false
  1024. prerelease: false
  1025. files: |
  1026. /home/runner/cardinal*.tar.xz
  1027. /home/runner/*/cardinal*.tar.xz
  1028. /home/runner/*/*/cardinal*.tar.xz
  1029. plugin-validation:
  1030. runs-on: ubuntu-20.04
  1031. steps:
  1032. - uses: actions/checkout@v2
  1033. with:
  1034. submodules: recursive
  1035. - name: Set up cache
  1036. id: cache
  1037. uses: actions/cache@v2
  1038. with:
  1039. path: |
  1040. src/Rack/dep/bin
  1041. src/Rack/dep/include
  1042. src/Rack/dep/lib
  1043. src/Rack/dep/share
  1044. src/Rack/dep/jansson-2.12
  1045. src/Rack/dep/libarchive-3.4.3
  1046. src/Rack/dep/libsamplerate-0.1.9
  1047. src/Rack/dep/speexdsp-SpeexDSP-1.2rc3
  1048. src/Rack/dep/zstd-1.4.5
  1049. key: pluginval-v${{ env.CACHE_VERSION }}
  1050. - name: Set up dependencies
  1051. run: |
  1052. # custom repos
  1053. wget https://launchpad.net/~kxstudio-debian/+archive/kxstudio/+files/kxstudio-repos_11.1.0_all.deb
  1054. sudo dpkg -i kxstudio-repos_11.1.0_all.deb
  1055. sudo apt-get update -qq
  1056. # build-deps
  1057. sudo apt-get install -yqq libdbus-1-dev libgl1-mesa-dev liblo-dev libx11-dev libxcursor-dev libxext-dev libxrandr-dev
  1058. # runtime testing
  1059. sudo apt-get install -yqq carla-git lilv-utils lv2-dev lv2lint kxstudio-lv2-extensions mod-lv2-extensions valgrind xvfb
  1060. - name: Set up ccache
  1061. uses: hendrikmuhs/ccache-action@v1.2
  1062. with:
  1063. key: ccache-pluginval-v${{ env.CACHE_VERSION }}
  1064. - name: Build Cardinal
  1065. env:
  1066. CFLAGS: -g
  1067. CXXFLAGS: -g -DDPF_ABORT_ON_ERROR -DDPF_RUNTIME_TESTING
  1068. LDFLAGS: -static-libgcc -static-libstdc++
  1069. run: |
  1070. export PATH="/usr/lib/ccache:${PATH}"
  1071. make features
  1072. make NOOPT=true SKIP_STRIPPING=true -j $(nproc)
  1073. - name: Run Cardinal self-tests
  1074. run: |
  1075. # --exit-on-first-error=yes
  1076. xvfb-run valgrind \
  1077. --gen-suppressions=all \
  1078. --error-exitcode=255 \
  1079. --leak-check=no \
  1080. --track-origins=yes \
  1081. --suppressions=./dpf/utils/valgrind-dpf.supp \
  1082. ./bin/Cardinal selftest
  1083. - name: Validate LV2 ttl syntax
  1084. run: |
  1085. lv2_validate \
  1086. /usr/lib/lv2/mod.lv2/*.ttl \
  1087. /usr/lib/lv2/kx-meta/*.ttl \
  1088. /usr/lib/lv2/kx-control-input-port-change-request.lv2/*.ttl \
  1089. /usr/lib/lv2/kx-programs.lv2/*.ttl \
  1090. ./bin/*.lv2/*.ttl
  1091. - name: Validate LV2 metadata and binaries
  1092. run: |
  1093. export LV2_PATH=/tmp/lv2-path
  1094. mkdir ${LV2_PATH}
  1095. cp -r bin/CardinalFX.lv2 bin/CardinalSynth.lv2 \
  1096. /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 \
  1097. ${LV2_PATH}
  1098. xvfb-run lv2lint -s lv2_generate_ttl -l ld-linux-x86-64.so.2 -M nopack $(lv2ls)
  1099. - name: Test LV2 plugin
  1100. run: |
  1101. export LV2_PATH=/tmp/lv2-path
  1102. for p in $(lv2ls); do \
  1103. env CARLA_BRIDGE_DUMMY=1 CARLA_BRIDGE_TESTING=native \
  1104. xvfb-run valgrind \
  1105. --error-exitcode=255 \
  1106. --leak-check=no \
  1107. --track-origins=yes \
  1108. --suppressions=./dpf/utils/valgrind-dpf.supp \
  1109. /usr/lib/carla/carla-bridge-native lv2 "" ${p}; \
  1110. done
  1111. - name: Test VST2 plugin
  1112. run: |
  1113. for p in $(ls bin/*.vst/*.so); do \
  1114. env CARLA_BRIDGE_DUMMY=1 CARLA_BRIDGE_TESTING=native \
  1115. xvfb-run valgrind \
  1116. --error-exitcode=255 \
  1117. --leak-check=no \
  1118. --track-origins=yes \
  1119. --suppressions=./dpf/utils/valgrind-dpf.supp \
  1120. /usr/lib/carla/carla-bridge-native vst2 ./${p} ""; \
  1121. done
  1122. - name: Test VST3 plugin
  1123. run: |
  1124. for p in $(ls bin/ | grep vst3); do \
  1125. env CARLA_BRIDGE_DUMMY=1 CARLA_BRIDGE_TESTING=native \
  1126. xvfb-run valgrind \
  1127. --error-exitcode=255 \
  1128. --leak-check=no \
  1129. --track-origins=yes \
  1130. --suppressions=./dpf/utils/valgrind-dpf.supp \
  1131. /usr/lib/carla/carla-bridge-native vst3 ./bin/${p} ""; \
  1132. done