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.

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