DISTRHO Plugin Framework
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.

150 lines
3.9KB

  1. name: build
  2. on:
  3. push:
  4. branches:
  5. - '*'
  6. pull_request:
  7. branches:
  8. - '*'
  9. jobs:
  10. build:
  11. strategy:
  12. matrix:
  13. os:
  14. - macos-13
  15. - macos-14
  16. - macos-15
  17. # webgui failure
  18. # - ubuntu-20.04
  19. - ubuntu-22.04
  20. - ubuntu-24.04
  21. runs-on: ${{ matrix.os }}
  22. steps:
  23. - uses: actions/checkout@v4
  24. with:
  25. submodules: recursive
  26. - name: Set up dependencies
  27. if: ${{ runner.os == 'Linux' }}
  28. env:
  29. DEBIAN_FRONTEND: noninteractive
  30. run: |
  31. sudo apt-get update -qq
  32. sudo apt-get install -yq libasound2-dev libcairo2-dev libdbus-1-dev libgl1-mesa-dev liblo-dev libpulse-dev libsdl2-dev libx11-dev libxcursor-dev libxext-dev libxrandr-dev xvfb
  33. - name: Set num jobs
  34. if: ${{ runner.os == 'Linux' }}
  35. run: echo "JOBS=$(nproc)" >> $GITHUB_ENV
  36. - name: Set num jobs
  37. if: ${{ runner.os != 'Linux' }}
  38. run: echo "JOBS=$(sysctl -n hw.logicalcpu)" >> $GITHUB_ENV
  39. - name: Without any warnings
  40. env:
  41. CFLAGS: -Werror
  42. CXXFLAGS: -Werror
  43. run: |
  44. make clean >/dev/null
  45. make -j ${{ env.JOBS }}
  46. - name: Run tests
  47. if: ${{ runner.os == 'Linux' }}
  48. run: |
  49. xvfb-run make -C tests run
  50. - name: As C++98 mode
  51. env:
  52. CFLAGS: -Werror
  53. CXXFLAGS: -Werror -std=gnu++98
  54. run: |
  55. make clean >/dev/null
  56. make -j ${{ env.JOBS }}
  57. - name: As C++11 mode
  58. env:
  59. CFLAGS: -Werror
  60. CXXFLAGS: -Werror -std=gnu++11
  61. run: |
  62. make clean >/dev/null
  63. make -j ${{ env.JOBS }}
  64. - name: As C++14 mode
  65. env:
  66. CFLAGS: -Werror
  67. CXXFLAGS: -Werror -std=gnu++14
  68. run: |
  69. make clean >/dev/null
  70. make -j ${{ env.JOBS }}
  71. - name: As C++17 mode
  72. env:
  73. CFLAGS: -Werror
  74. CXXFLAGS: -Werror -std=gnu++17
  75. run: |
  76. make clean >/dev/null
  77. make -j ${{ env.JOBS }}
  78. - name: As C++20 mode
  79. env:
  80. CFLAGS: -Werror
  81. CXXFLAGS: -Werror -std=gnu++20
  82. run: |
  83. make clean >/dev/null
  84. make -j ${{ env.JOBS }}
  85. - name: No namespace
  86. env:
  87. CFLAGS: -Werror
  88. CXXFLAGS: -Werror -DDONT_SET_USING_DISTRHO_NAMESPACE -DDONT_SET_USING_DGL_NAMESPACE
  89. run: |
  90. make clean >/dev/null
  91. make -j ${{ env.JOBS }}
  92. - name: Custom namespace
  93. env:
  94. CFLAGS: -Werror
  95. CXXFLAGS: -Werror -DDISTRHO_NAMESPACE=WubbWubb -DDGL_NAMESPACE=DabDab
  96. run: |
  97. make clean >/dev/null
  98. make -j ${{ env.JOBS }}
  99. - name: Without Cairo
  100. env:
  101. CFLAGS: -Werror
  102. CXXFLAGS: -Werror
  103. run: |
  104. make clean >/dev/null
  105. make -j ${{ env.JOBS }} HAVE_CAIRO=false
  106. - name: Without OpenGL
  107. env:
  108. CFLAGS: -Werror
  109. CXXFLAGS: -Werror
  110. run: |
  111. make clean >/dev/null
  112. make -j ${{ env.JOBS }} HAVE_OPENGL=false
  113. - name: With UI_TYPE=generic
  114. env:
  115. CFLAGS: -Werror
  116. CXXFLAGS: -Werror
  117. run: |
  118. make clean >/dev/null
  119. make -j ${{ env.JOBS }} -C examples/Parameters UI_TYPE=generic
  120. - name: With UI_TYPE=gles2
  121. env:
  122. CFLAGS: -Werror
  123. CXXFLAGS: -Werror
  124. run: |
  125. make clean >/dev/null
  126. make -j ${{ env.JOBS }} -C examples/Parameters UI_TYPE=gles2
  127. - name: With UI_TYPE=gles3
  128. env:
  129. CFLAGS: -Werror
  130. CXXFLAGS: -Werror
  131. run: |
  132. make clean >/dev/null
  133. make -j ${{ env.JOBS }} -C examples/Parameters UI_TYPE=gles3
  134. - name: With UI_TYPE=opengl
  135. env:
  136. CFLAGS: -Werror
  137. CXXFLAGS: -Werror
  138. run: |
  139. make clean >/dev/null
  140. make -j ${{ env.JOBS }} -C examples/Parameters UI_TYPE=opengl
  141. - name: With UI_TYPE=opengl3
  142. env:
  143. CFLAGS: -Werror
  144. CXXFLAGS: -Werror
  145. run: |
  146. make clean >/dev/null
  147. make -j ${{ env.JOBS }} -C examples/Parameters UI_TYPE=opengl3