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.

381 lines
16KB

  1. name: build
  2. on:
  3. push:
  4. branches:
  5. - '*'
  6. pull_request:
  7. branches:
  8. - '*'
  9. env:
  10. DEBIAN_FRONTEND: noninteractive
  11. HOMEBREW_NO_AUTO_UPDATE: 1
  12. jobs:
  13. linux-arm64:
  14. runs-on: ubuntu-18.04
  15. steps:
  16. - uses: actions/checkout@v2
  17. with:
  18. submodules: recursive
  19. - name: Set up dependencies
  20. run: |
  21. sudo dpkg --add-architecture arm64
  22. sudo sed -i "s/deb http/deb [arch=amd64] http/" /etc/apt/sources.list
  23. echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports bionic main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/ports-arm64.list
  24. echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports bionic-updates main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/ports-arm64.list
  25. echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports bionic-backports main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/ports-arm64.list
  26. sudo apt-get update -qq
  27. sudo apt-get install -yq g++-aarch64-linux-gnu libasound2-dev:arm64 libcairo2-dev:arm64 libgl1-mesa-dev:arm64 liblo-dev:arm64 libpulse-dev:arm64 libx11-dev:arm64 libxcursor-dev:arm64 libxext-dev:arm64 libxrandr-dev:arm64 qemu-user-static
  28. # extra for vcv deps
  29. sudo apt-get install -yq libxi-dev:arm64 libxinerama-dev:arm64
  30. # fix broken Ubuntu packages missing pkg-config file in multi-arch package
  31. sudo apt-get install -yq libasound2-dev libgl1-mesa-dev liblo-dev libpulse-dev libxcursor-dev libxrandr-dev
  32. sudo ln -s /usr/lib/aarch64-linux-gnu/liblo.so.7 /usr/lib/aarch64-linux-gnu/liblo.so
  33. sudo cp /usr/lib/x86_64-linux-gnu/pkgconfig/liblo.pc /usr/lib/aarch64-linux-gnu/pkgconfig/liblo.pc
  34. sudo sed -i "s/x86_64-linux-gnu/aarch64-linux-gnu/" /usr/lib/aarch64-linux-gnu/pkgconfig/liblo.pc
  35. - name: Build linux arm64 cross-compiled
  36. env:
  37. CC: aarch64-linux-gnu-gcc
  38. CXX: aarch64-linux-gnu-g++
  39. LDFLAGS: -static-libgcc -static-libstdc++
  40. run: |
  41. make features
  42. make WITH_LTO=true -j $(nproc)
  43. - name: Set sha8
  44. id: slug
  45. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  46. - uses: actions/upload-artifact@v2
  47. with:
  48. name: ${{ github.event.repository.name }}-linux-arm64-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  49. path: |
  50. bin/*
  51. !bin/Cardinal
  52. !bin/CardinalSynth
  53. linux-armhf:
  54. runs-on: ubuntu-18.04
  55. steps:
  56. - uses: actions/checkout@v2
  57. with:
  58. submodules: recursive
  59. - name: Set up dependencies
  60. run: |
  61. sudo dpkg --add-architecture armhf
  62. sudo sed -i "s/deb http/deb [arch=amd64] http/" /etc/apt/sources.list
  63. echo "deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports bionic main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/ports-armhf.list
  64. echo "deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports bionic-updates main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/ports-armhf.list
  65. echo "deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports bionic-backports main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/ports-armhf.list
  66. sudo apt-get update -qq
  67. sudo apt-get install -yq g++-arm-linux-gnueabihf libasound2-dev:armhf libcairo2-dev:armhf libgl1-mesa-dev:armhf liblo-dev:armhf libpulse-dev:armhf libx11-dev:armhf libxcursor-dev:armhf libxext-dev:armhf libxrandr-dev:armhf qemu-user-static
  68. # extra for vcv deps
  69. sudo apt-get install -yq libxi-dev:armhf libxinerama-dev:armhf
  70. # fix broken Ubuntu packages missing pkg-config file in multi-arch package
  71. sudo apt-get install -yq libasound2-dev libgl1-mesa-dev liblo-dev libpulse-dev libxcursor-dev libxrandr-dev
  72. sudo ln -s /usr/lib/arm-linux-gnueabihf/liblo.so.7 /usr/lib/arm-linux-gnueabihf/liblo.so
  73. sudo cp /usr/lib/x86_64-linux-gnu/pkgconfig/liblo.pc /usr/lib/arm-linux-gnueabihf/pkgconfig/liblo.pc
  74. sudo sed -i "s/x86_64-linux-gnu/arm-linux-gnueabihf/" /usr/lib/arm-linux-gnueabihf/pkgconfig/liblo.pc
  75. - name: Build linux armhf cross-compiled
  76. env:
  77. CC: arm-linux-gnueabihf-gcc
  78. CXX: arm-linux-gnueabihf-g++
  79. LDFLAGS: -static-libgcc -static-libstdc++
  80. run: |
  81. make features
  82. make WITH_LTO=true -j $(nproc)
  83. - name: Set sha8
  84. id: slug
  85. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  86. - uses: actions/upload-artifact@v2
  87. with:
  88. name: ${{ github.event.repository.name }}-linux-armhf-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  89. path: |
  90. bin/*
  91. !bin/Cardinal
  92. !bin/CardinalSynth
  93. linux-x86:
  94. runs-on: ubuntu-18.04
  95. steps:
  96. - uses: actions/checkout@v2
  97. with:
  98. submodules: recursive
  99. - name: Set up dependencies
  100. run: |
  101. sudo dpkg --add-architecture i386
  102. sudo apt-get update -qq
  103. sudo apt-get install -yq g++-i686-linux-gnu libasound2-dev:i386 libcairo2-dev:i386 libgl1-mesa-dev:i386 liblo-dev:i386 libpulse-dev:i386 libx11-dev:i386 libxcursor-dev:i386 libxext-dev:i386 libxrandr-dev:i386
  104. # extra for vcv deps
  105. sudo apt-get install -yq libxi-dev:i386 libxinerama-dev:i386
  106. - name: Build linux x86
  107. env:
  108. CC: i686-linux-gnu-gcc
  109. CXX: i686-linux-gnu-g++
  110. CFLAGS: -m32
  111. CXXFLAGS: -m32
  112. LDFLAGS: -m32 -static-libgcc -static-libstdc++
  113. PKG_CONFIG_PATH: /usr/lib/i386-linux-gnu/pkgconfig
  114. run: |
  115. make features
  116. make WITH_LTO=true -j $(nproc)
  117. - name: Set sha8
  118. id: slug
  119. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  120. - uses: actions/upload-artifact@v2
  121. with:
  122. name: ${{ github.event.repository.name }}-linux-x86-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  123. path: |
  124. bin/*
  125. !bin/Cardinal
  126. !bin/CardinalSynth
  127. linux-x86_64:
  128. runs-on: ubuntu-18.04
  129. steps:
  130. - uses: actions/checkout@v2
  131. with:
  132. submodules: recursive
  133. - name: Set up dependencies
  134. run: |
  135. sudo apt-get update -qq
  136. sudo apt-get install -yq libasound2-dev libcairo2-dev libgl1-mesa-dev liblo-dev libpulse-dev libx11-dev libxcursor-dev libxext-dev libxrandr-dev
  137. # extra for vcv deps
  138. sudo apt-get install -yq libxi-dev libxinerama-dev
  139. - name: Build linux x86_64
  140. env:
  141. LDFLAGS: -static-libgcc -static-libstdc++
  142. run: |
  143. make features
  144. make WITH_LTO=true -j $(nproc)
  145. - name: Set sha8
  146. id: slug
  147. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  148. - uses: actions/upload-artifact@v2
  149. with:
  150. name: ${{ github.event.repository.name }}-linux-x86_64-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  151. path: |
  152. bin/*
  153. !bin/Cardinal
  154. !bin/CardinalSynth
  155. linux-x86_64-debug:
  156. runs-on: ubuntu-18.04
  157. steps:
  158. - uses: actions/checkout@v2
  159. with:
  160. submodules: recursive
  161. - name: Set up dependencies
  162. run: |
  163. sudo apt-get update -qq
  164. sudo apt-get install -yq libasound2-dev libcairo2-dev libgl1-mesa-dev liblo-dev libpulse-dev libx11-dev libxcursor-dev libxext-dev libxrandr-dev
  165. # extra for vcv deps
  166. sudo apt-get install -yq libxi-dev libxinerama-dev
  167. - name: Build linux x86_64 (debug)
  168. env:
  169. LDFLAGS: -static-libgcc -static-libstdc++
  170. run: |
  171. make features
  172. make DEBUG=true -j $(nproc)
  173. - name: Set sha8
  174. id: slug
  175. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  176. - uses: actions/upload-artifact@v2
  177. with:
  178. name: ${{ github.event.repository.name }}-linux-x86_64-debug-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  179. path: |
  180. bin/*
  181. !bin/Cardinal
  182. !bin/CardinalSynth
  183. macos-universal:
  184. runs-on: macos-10.15
  185. steps:
  186. - uses: actions/checkout@v2
  187. with:
  188. submodules: recursive
  189. - name: Fix up Xcode
  190. run: |
  191. sudo rm -Rf /Library/Developer/CommandLineTools/SDKs/*
  192. sudo xcode-select -s "/Applications/Xcode_12.3.app"
  193. - name: Build macOS universal
  194. env:
  195. CFLAGS: -arch x86_64 -arch arm64 -DMAC_OS_X_VERSION_MAX_ALLOWED=MAC_OS_X_VERSION_10_12 -mmacosx-version-min=10.12 -mtune=generic -msse -msse2
  196. CXXFLAGS: -arch x86_64 -arch arm64 -DMAC_OS_X_VERSION_MAX_ALLOWED=MAC_OS_X_VERSION_10_12 -mmacosx-version-min=10.12 -mtune=generic -msse -msse2
  197. LDFLAGS: -arch x86_64 -arch arm64 -mmacosx-version-min=10.12
  198. run: |
  199. make features
  200. make NOOPT=true -j $(sysctl -n hw.logicalcpu)
  201. ./dpf/utils/package-osx-bundles.sh
  202. - name: Set sha8
  203. id: slug
  204. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  205. - uses: actions/upload-artifact@v2
  206. with:
  207. name: ${{ github.event.repository.name }}-macOS-universal-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  208. path: |
  209. *-macOS.pkg
  210. win32:
  211. runs-on: ubuntu-20.04
  212. steps:
  213. - uses: actions/checkout@v2
  214. with:
  215. submodules: recursive
  216. - name: Set up dependencies
  217. run: |
  218. sudo dpkg --add-architecture i386
  219. sudo apt-get update -qq
  220. sudo apt-get install -yq binutils-mingw-w64-i686 g++-mingw-w64-i686 mingw-w64 wine-stable:i386
  221. - name: Build win32 cross-compiled
  222. env:
  223. CC: i686-w64-mingw32-gcc
  224. CXX: i686-w64-mingw32-g++
  225. EXE_WRAPPER: wine
  226. PKG_CONFIG: "false"
  227. WINEDEBUG: "-all"
  228. run: |
  229. make features
  230. make WITH_LTO=true -j $(nproc)
  231. - name: Set sha8
  232. id: slug
  233. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  234. - uses: actions/upload-artifact@v2
  235. with:
  236. name: ${{ github.event.repository.name }}-win32-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  237. path: |
  238. bin/*
  239. !bin/*-ladspa.dll
  240. !bin/*-dssi.dll
  241. !bin/*.exe
  242. win64:
  243. runs-on: ubuntu-20.04
  244. steps:
  245. - uses: actions/checkout@v2
  246. with:
  247. submodules: recursive
  248. - name: Set up dependencies
  249. run: |
  250. sudo apt-get update -qq
  251. sudo apt-get install -yq binutils-mingw-w64-x86-64 g++-mingw-w64-x86-64 mingw-w64 wine-stable
  252. - name: Build win64 cross-compiled
  253. env:
  254. CC: x86_64-w64-mingw32-gcc
  255. CXX: x86_64-w64-mingw32-g++
  256. EXE_WRAPPER: wine
  257. PKG_CONFIG: "false"
  258. WINEDEBUG: "-all"
  259. run: |
  260. make features
  261. make WITH_LTO=true -j $(nproc)
  262. - name: Set sha8
  263. id: slug
  264. run: echo "::set-output name=sha8::$(echo ${{ github.sha }} | cut -c1-8)"
  265. - uses: actions/upload-artifact@v2
  266. with:
  267. name: ${{ github.event.repository.name }}-win64-${{ github.event.pull_request.number || steps.slug.outputs.sha8 }}
  268. path: |
  269. bin/*
  270. !bin/*-ladspa.dll
  271. !bin/*-dssi.dll
  272. !bin/*.exe
  273. plugin-validation:
  274. runs-on: ubuntu-20.04
  275. steps:
  276. - uses: actions/checkout@v2
  277. with:
  278. submodules: recursive
  279. - name: Set up dependencies
  280. run: |
  281. # custom repos
  282. wget https://launchpad.net/~kxstudio-debian/+archive/kxstudio/+files/kxstudio-repos_10.0.3_all.deb
  283. sudo dpkg -i kxstudio-repos_10.0.3_all.deb
  284. sudo apt-get update -qq
  285. # build-deps
  286. sudo apt-get install -yq libasound2-dev libcairo2-dev libgl1-mesa-dev liblo-dev libpulse-dev libx11-dev libxcursor-dev libxext-dev libxrandr-dev
  287. # extra for vcv deps
  288. sudo apt-get install -yq libxi-dev libxinerama-dev
  289. # runtime testing
  290. sudo apt-get install -yq carla-git lilv-utils lv2-dev lv2lint valgrind
  291. - name: Build plugins
  292. env:
  293. CFLAGS: -g
  294. CXXFLAGS: -g -DDPF_ABORT_ON_ERROR
  295. LDFLAGS: -static-libgcc -static-libstdc++
  296. run: |
  297. make features
  298. make NOOPT=true SKIP_STRIPPING=true -j $(nproc)
  299. - name: Validate LV2 ttl syntax
  300. run: |
  301. lv2_validate \
  302. /usr/lib/lv2/mod.lv2/*.ttl \
  303. /usr/lib/lv2/kx-meta/*.ttl \
  304. /usr/lib/lv2/kx-control-input-port-change-request.lv2/*.ttl \
  305. /usr/lib/lv2/kx-programs.lv2/*.ttl \
  306. ./bin/*.lv2/*.ttl
  307. - name: Validate LV2 metadata and binaries
  308. run: |
  309. export LV2_PATH=/tmp/lv2-path
  310. mkdir ${LV2_PATH}
  311. cp -r bin/*.lv2 \
  312. /usr/lib/lv2/{atom,buf-size,core,data-access,kx-control-input-port-change-request,kx-programs,instance-access,midi,parameters,port-groups,port-props,options,patch,presets,resize-port,state,time,ui,units,urid,worker}.lv2 \
  313. ${LV2_PATH}
  314. lv2lint -s lv2_generate_ttl -l ld-linux-x86-64.so.2 -M nopack $(lv2ls)
  315. - name: Test LADSPA plugins
  316. run: |
  317. for p in $(ls bin/ | grep ladspa.so); do \
  318. env CARLA_BRIDGE_DUMMY=1 CARLA_BRIDGE_TESTING=native \
  319. valgrind \
  320. --error-exitcode=255 \
  321. --leak-check=no \
  322. --track-origins=yes \
  323. --suppressions=./dpf/utils/valgrind-dpf.supp \
  324. /usr/lib/carla/carla-bridge-native ladspa ./bin/${p} "" 1>/dev/null; \
  325. done
  326. - name: Test DSSI plugins
  327. run: |
  328. for p in $(ls bin/ | grep dssi.so); do \
  329. env CARLA_BRIDGE_DUMMY=1 CARLA_BRIDGE_TESTING=native \
  330. valgrind \
  331. --error-exitcode=255 \
  332. --leak-check=no \
  333. --track-origins=yes \
  334. --suppressions=./dpf/utils/valgrind-dpf.supp \
  335. /usr/lib/carla/carla-bridge-native dssi ./bin/${p} "" 1>/dev/null; \
  336. done
  337. - name: Test LV2 plugins
  338. run: |
  339. export LV2_PATH=/tmp/lv2-path
  340. for p in $(lv2ls); do \
  341. env CARLA_BRIDGE_DUMMY=1 CARLA_BRIDGE_TESTING=native \
  342. valgrind \
  343. --error-exitcode=255 \
  344. --leak-check=no \
  345. --track-origins=yes \
  346. --suppressions=./dpf/utils/valgrind-dpf.supp \
  347. /usr/lib/carla/carla-bridge-native lv2 "" ${p} 1>/dev/null; \
  348. done
  349. - name: Test VST2 plugins
  350. run: |
  351. for p in $(ls bin/ | grep vst.so); do \
  352. env CARLA_BRIDGE_DUMMY=1 CARLA_BRIDGE_TESTING=native \
  353. valgrind \
  354. --error-exitcode=255 \
  355. --leak-check=no \
  356. --track-origins=yes \
  357. --suppressions=./dpf/utils/valgrind-dpf.supp \
  358. /usr/lib/carla/carla-bridge-native vst2 ./bin/${p} "" 1>/dev/null; \
  359. done
  360. - name: Test VST3 plugins
  361. run: |
  362. for p in $(ls bin/ | grep vst3); do \
  363. env CARLA_BRIDGE_DUMMY=1 CARLA_BRIDGE_TESTING=native \
  364. valgrind \
  365. --error-exitcode=255 \
  366. --leak-check=no \
  367. --track-origins=yes \
  368. --suppressions=./dpf/utils/valgrind-dpf.supp \
  369. /usr/lib/carla/carla-bridge-native vst3 ./bin/${p} "" 1>/dev/null; \
  370. done