name: Build on: [push, pull_request] jobs: Linux: runs-on: ubuntu-24.04 env: BUILD_TYPE: Release CC: ${{ matrix.cc }} CXX: ${{ matrix.cxx }} strategy: fail-fast: false matrix: include: - cc: clang cxx: clang++ cmake_options: -DRMLUI_BACKEND=GLFW_GL2 -DRMLUI_PRECOMPILED_HEADERS=OFF - cc: clang cxx: clang++ cmake_options: -DRMLUI_BACKEND=SDL_VK -DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTING=ON - cmake_options: -DRMLUI_BACKEND=GLFW_GL3 -DBUILD_TESTING=ON enable_testing: true - cmake_options: -DRMLUI_BACKEND=X11_GL2 -DRMLUI_LOTTIE_PLUGIN=ON - cmake_options: -DRMLUI_BACKEND=SDL_GL2 -DRMLUI_CUSTOM_RTTI=ON -DCMAKE_CXX_FLAGS="-fno-exceptions -fno-rtti" - cmake_options: -DRMLUI_BACKEND=SFML_GL2 -DRMLUI_THIRDPARTY_CONTAINERS=OFF - cmake_options: -DRMLUI_BACKEND=GLFW_VK -DCMAKE_BUILD_TYPE=Debug -DRMLUI_VK_DEBUG=ON -DRMLUI_PRECOMPILED_HEADERS=OFF steps: - uses: actions/checkout@v4 - name: Install Dependencies run: |- sudo apt-get update 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 - name: Configure CMake run: >- cmake -B Build -G Ninja --preset samples-all -DRMLUI_SVG_PLUGIN=OFF -Wdev -Werror=dev -DRMLUI_WARNINGS_AS_ERRORS=ON ${{ matrix.cmake_options }} - name: Build run: cmake --build Build - name: Test if: ${{ matrix.enable_testing }} working-directory: ${{github.workspace}}/Build run: ctest Linux-legacy: runs-on: ubuntu-22.04 env: BUILD_TYPE: Release CC: ${{ matrix.cc }} CXX: ${{ matrix.cxx }} strategy: fail-fast: false matrix: include: - cc: clang cxx: clang++ cmake_options: -DRMLUI_BACKEND=GLFW_GL2 -DCMAKE_BUILD_TYPE=Debug - cc: clang cxx: clang++ cmake_options: -DRMLUI_BACKEND=SDL_VK -DBUILD_TESTING=ON -DRMLUI_PRECOMPILED_HEADERS=OFF - cmake_options: -DBUILD_TESTING=ON - cmake_options: -DRMLUI_BACKEND=native -DCMAKE_BUILD_TYPE=Debug -DRMLUI_VK_DEBUG=ON steps: - uses: actions/checkout@v4 - name: Install Dependencies run: |- sudo apt-get update sudo apt-get install cmake ninja-build libsdl2-dev libsdl2-image-dev libfreetype6-dev libharfbuzz-dev liblua5.2-dev libglfw3-dev - name: Configure CMake run: >- cmake -B Build -G Ninja --preset samples-all -DRMLUI_SVG_PLUGIN=OFF -DRMLUI_LOTTIE_PLUGIN=OFF -Wdev -Werror=dev -DRMLUI_WARNINGS_AS_ERRORS=ON ${{ matrix.cmake_options }} - name: Build run: cmake --build Build macOS: runs-on: macos-latest env: BUILD_TYPE: Release strategy: fail-fast: false matrix: include: - cmake_options: -DRMLUI_BACKEND=auto - cmake_options: -DRMLUI_BACKEND=GLFW_GL2 steps: - uses: actions/checkout@v4 - name: Install Dependencies run: brew install lua sdl2 sdl2_image glfw - name: Configure CMake run: >- cmake -B Build --preset samples -Wdev -Werror=dev -DRMLUI_WARNINGS_AS_ERRORS=ON -DCMAKE_CXX_FLAGS="-DGL_SILENCE_DEPRECATION" -DRMLUI_LUA_BINDINGS=ON ${{ matrix.cmake_options }} - name: Build run: cmake --build Build Windows: runs-on: windows-latest env: BUILD_TYPE: Release VCPKG_DEFAULT_TRIPLET: x64-windows strategy: fail-fast: false matrix: include: - cmake_options: -DRMLUI_BACKEND=auto -DRMLUI_PRECOMPILED_HEADERS=OFF - cmake_options: -DRMLUI_BACKEND=Win32_VK -DRMLUI_VK_DEBUG=ON - cmake_options: -DRMLUI_BACKEND=SDL_VK -DRMLUI_LUA_BINDINGS_LIBRARY=luajit steps: - uses: actions/checkout@v4 - name: Install Dependencies run: C:\vcpkg\vcpkg install freetype[core] sdl2[core,vulkan] glfw3 lua[core] luajit - name: Configure CMake run: >- cmake -B Build --preset samples -Wdev -Werror=dev -DBUILD_SHARED_LIBS=ON -DRMLUI_LUA_BINDINGS=ON -DRMLUI_WARNINGS_AS_ERRORS=ON -DCMAKE_TOOLCHAIN_FILE="C:/vcpkg/scripts/buildsystems/vcpkg.cmake" ${{ matrix.cmake_options }} - name: Build run: cmake --build Build --config $env:BUILD_TYPE MinGW64: runs-on: windows-latest env: CHERE_INVOKING: yes MSYSTEM: MINGW64 steps: - uses: actions/checkout@v4 - name: Install Dependencies run: |- C:\msys64\usr\bin\bash -lc ("pacman --needed --noconfirm --sync " + "mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake mingw-w64-x86_64-freetype mingw-w64-x86_64-lua " + "mingw-w64-x86_64-SDL2 mingw-w64-x86_64-SDL2_image") - name: Configure CMake run: |- C:\msys64\usr\bin\bash -lc ("cmake -B Build --preset samples -Wdev -Werror=dev -DCMAKE_BUILD_TYPE=Release " + "-DBUILD_SHARED_LIBS=ON -DRMLUI_PRECOMPILED_HEADERS=OFF -DRMLUI_WARNINGS_AS_ERRORS=ON " + "-DRMLUI_BACKEND=SDL_GL3 -DRMLUI_LUA_BINDINGS=ON") - name: Build run: C:\msys64\usr\bin\bash -lc "cmake --build Build" - name: List files run: C:\msys64\usr\bin\bash -lc "ls Build/*.{exe,dll} -s -h -X" Emscripten: runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - name: Install Dependencies run: |- sudo apt-get update sudo apt-get install cmake wget -q https://github.com/emscripten-core/emsdk/archive/master.tar.gz tar -xvf master.tar.gz emsdk-master/emsdk update emsdk-master/emsdk install latest emsdk-master/emsdk activate latest - name: Configure CMake run: |- source emsdk-master/emsdk_env.sh emcmake cmake -B Build --preset samples -Wdev -Werror=dev -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SHARED_LIBS=OFF -DRMLUI_WARNINGS_AS_ERRORS=ON \ -DCMAKE_MODULE_PATH=$GITHUB_WORKSPACE/CMake/Modules/Emscripten \ -DRMLUI_SDL_VERSION_MAJOR=2 - name: Build run: |- source emsdk-master/emsdk_env.sh cd Build emmake make -j