build.yml 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. name: Build
  2. on: [push, pull_request]
  3. jobs:
  4. Linux:
  5. runs-on: ubuntu-24.04
  6. env:
  7. BUILD_TYPE: Release
  8. CC: ${{ matrix.cc }}
  9. CXX: ${{ matrix.cxx }}
  10. strategy:
  11. fail-fast: false
  12. matrix:
  13. include:
  14. - cc: clang
  15. cxx: clang++
  16. cmake_options: -DRMLUI_BACKEND=GLFW_GL2 -DRMLUI_PRECOMPILED_HEADERS=OFF
  17. - cc: clang
  18. cxx: clang++
  19. cmake_options: -DRMLUI_BACKEND=SDL_VK -DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTING=ON
  20. - cmake_options: -DRMLUI_BACKEND=GLFW_GL3 -DBUILD_TESTING=ON
  21. enable_testing: true
  22. - cmake_options: -DRMLUI_BACKEND=X11_GL2 -DRMLUI_LOTTIE_PLUGIN=ON
  23. - cmake_options: -DRMLUI_BACKEND=SDL_GL2 -DRMLUI_CUSTOM_RTTI=ON -DCMAKE_CXX_FLAGS="-fno-exceptions -fno-rtti"
  24. - cmake_options: -DRMLUI_BACKEND=SFML_GL2 -DRMLUI_THIRDPARTY_CONTAINERS=OFF
  25. - cmake_options: -DRMLUI_BACKEND=GLFW_VK -DCMAKE_BUILD_TYPE=Debug -DRMLUI_VK_DEBUG=ON -DRMLUI_PRECOMPILED_HEADERS=OFF
  26. steps:
  27. - uses: actions/checkout@v4
  28. - name: Install Dependencies
  29. run: |-
  30. sudo apt-get update
  31. sudo apt-get install cmake ninja-build libsdl2-dev libsdl2-image-dev libfreetype6-dev libharfbuzz-dev liblua5.2-dev libsfml-dev librlottie-dev libglfw3-dev
  32. - name: Configure CMake
  33. run: >-
  34. cmake -B Build -G Ninja --preset samples-all -DRMLUI_SVG_PLUGIN=OFF -Wdev -Werror=dev -DRMLUI_WARNINGS_AS_ERRORS=ON
  35. ${{ matrix.cmake_options }}
  36. - name: Build
  37. run: cmake --build Build
  38. - name: Test
  39. if: ${{ matrix.enable_testing }}
  40. working-directory: ${{github.workspace}}/Build
  41. run: ctest
  42. Linux-legacy:
  43. runs-on: ubuntu-22.04
  44. env:
  45. BUILD_TYPE: Release
  46. CC: ${{ matrix.cc }}
  47. CXX: ${{ matrix.cxx }}
  48. strategy:
  49. fail-fast: false
  50. matrix:
  51. include:
  52. - cc: clang
  53. cxx: clang++
  54. cmake_options: -DRMLUI_BACKEND=GLFW_GL2 -DCMAKE_BUILD_TYPE=Debug
  55. - cc: clang
  56. cxx: clang++
  57. cmake_options: -DRMLUI_BACKEND=SDL_VK -DBUILD_TESTING=ON -DRMLUI_PRECOMPILED_HEADERS=OFF
  58. - cmake_options: -DBUILD_TESTING=ON
  59. - cmake_options: -DRMLUI_BACKEND=native -DCMAKE_BUILD_TYPE=Debug -DRMLUI_VK_DEBUG=ON
  60. steps:
  61. - uses: actions/checkout@v4
  62. - name: Install Dependencies
  63. run: |-
  64. sudo apt-get update
  65. sudo apt-get install cmake ninja-build libsdl2-dev libsdl2-image-dev libfreetype6-dev libharfbuzz-dev liblua5.2-dev libglfw3-dev
  66. - name: Configure CMake
  67. run: >-
  68. cmake -B Build -G Ninja --preset samples-all -DRMLUI_SVG_PLUGIN=OFF -DRMLUI_LOTTIE_PLUGIN=OFF -Wdev -Werror=dev -DRMLUI_WARNINGS_AS_ERRORS=ON
  69. ${{ matrix.cmake_options }}
  70. - name: Build
  71. run: cmake --build Build
  72. macOS:
  73. runs-on: macos-latest
  74. env:
  75. BUILD_TYPE: Release
  76. strategy:
  77. fail-fast: false
  78. matrix:
  79. include:
  80. - cmake_options: -DRMLUI_BACKEND=auto
  81. - cmake_options: -DRMLUI_BACKEND=GLFW_GL2
  82. steps:
  83. - uses: actions/checkout@v4
  84. - name: Install Dependencies
  85. run: brew install lua sdl2 sdl2_image glfw
  86. - name: Configure CMake
  87. run: >-
  88. cmake -B Build --preset samples -Wdev -Werror=dev -DRMLUI_WARNINGS_AS_ERRORS=ON
  89. -DCMAKE_CXX_FLAGS="-DGL_SILENCE_DEPRECATION"
  90. -DRMLUI_LUA_BINDINGS=ON
  91. ${{ matrix.cmake_options }}
  92. - name: Build
  93. run: cmake --build Build
  94. Windows:
  95. runs-on: windows-latest
  96. env:
  97. BUILD_TYPE: Release
  98. VCPKG_DEFAULT_TRIPLET: x64-windows
  99. strategy:
  100. fail-fast: false
  101. matrix:
  102. include:
  103. - cmake_options: -DRMLUI_BACKEND=auto -DRMLUI_PRECOMPILED_HEADERS=OFF
  104. - cmake_options: -DRMLUI_BACKEND=Win32_VK -DRMLUI_VK_DEBUG=ON
  105. - cmake_options: -DRMLUI_BACKEND=SDL_VK -DRMLUI_LUA_BINDINGS_LIBRARY=luajit
  106. steps:
  107. - uses: actions/checkout@v4
  108. - name: Install Dependencies
  109. run: C:\vcpkg\vcpkg install freetype[core] sdl2[core,vulkan] glfw3 lua[core] luajit
  110. - name: Configure CMake
  111. run: >-
  112. cmake -B Build --preset samples -Wdev -Werror=dev -DBUILD_SHARED_LIBS=ON
  113. -DRMLUI_LUA_BINDINGS=ON -DRMLUI_WARNINGS_AS_ERRORS=ON
  114. -DCMAKE_TOOLCHAIN_FILE="C:/vcpkg/scripts/buildsystems/vcpkg.cmake" ${{ matrix.cmake_options }}
  115. - name: Build
  116. run: cmake --build Build --config $env:BUILD_TYPE
  117. MinGW64:
  118. runs-on: windows-latest
  119. env:
  120. CHERE_INVOKING: yes
  121. MSYSTEM: MINGW64
  122. steps:
  123. - uses: actions/checkout@v4
  124. - name: Install Dependencies
  125. run: |-
  126. C:\msys64\usr\bin\bash -lc ("pacman --needed --noconfirm --sync " +
  127. "mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake mingw-w64-x86_64-freetype mingw-w64-x86_64-lua " +
  128. "mingw-w64-x86_64-SDL2 mingw-w64-x86_64-SDL2_image")
  129. - name: Configure CMake
  130. run: |-
  131. C:\msys64\usr\bin\bash -lc ("cmake -B Build --preset samples -Wdev -Werror=dev -DCMAKE_BUILD_TYPE=Release " +
  132. "-DBUILD_SHARED_LIBS=ON -DRMLUI_PRECOMPILED_HEADERS=OFF -DRMLUI_WARNINGS_AS_ERRORS=ON " +
  133. "-DRMLUI_BACKEND=SDL_GL3 -DRMLUI_LUA_BINDINGS=ON")
  134. - name: Build
  135. run: C:\msys64\usr\bin\bash -lc "cmake --build Build"
  136. - name: List files
  137. run: C:\msys64\usr\bin\bash -lc "ls Build/*.{exe,dll} -s -h -X"
  138. Emscripten:
  139. runs-on: ubuntu-24.04
  140. steps:
  141. - uses: actions/checkout@v4
  142. - name: Install Dependencies
  143. run: |-
  144. sudo apt-get update
  145. sudo apt-get install cmake
  146. wget -q https://github.com/emscripten-core/emsdk/archive/master.tar.gz
  147. tar -xvf master.tar.gz
  148. emsdk-master/emsdk update
  149. emsdk-master/emsdk install latest
  150. emsdk-master/emsdk activate latest
  151. - name: Configure CMake
  152. run: |-
  153. source emsdk-master/emsdk_env.sh
  154. emcmake cmake -B Build --preset samples -Wdev -Werror=dev -DCMAKE_BUILD_TYPE=Release \
  155. -DBUILD_SHARED_LIBS=OFF -DRMLUI_WARNINGS_AS_ERRORS=ON \
  156. -DCMAKE_MODULE_PATH=$GITHUB_WORKSPACE/CMake/Modules/Emscripten \
  157. -DRMLUI_SDL_VERSION_MAJOR=2
  158. - name: Build
  159. run: |-
  160. source emsdk-master/emsdk_env.sh
  161. cd Build
  162. emmake make -j