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.

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