250 lines
7.7 KiB
YAML
250 lines
7.7 KiB
YAML
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 -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@v6
|
|
|
|
- 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-sanitizers:
|
|
runs-on: ubuntu-24.04
|
|
|
|
env:
|
|
CC: clang
|
|
CXX: clang++
|
|
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Install Dependencies
|
|
run: |-
|
|
sudo apt-get update
|
|
sudo apt-get install cmake ninja-build clang libsdl2-dev libsdl2-image-dev libfreetype6-dev
|
|
|
|
- name: Configure CMake
|
|
run: >-
|
|
cmake -B Build -G Ninja --preset dev -Wdev -Werror=dev -DRMLUI_WARNINGS_AS_ERRORS=ON -DBUILD_SHARED_LIBS=OFF
|
|
-DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTING=ON -DBUILD_SHARED_LIBS=OFF -DRMLUI_BACKEND=SDL_GL2
|
|
-DCMAKE_C_FLAGS="-fsanitize=address,undefined"
|
|
-DCMAKE_CXX_FLAGS="-fsanitize=address,undefined"
|
|
-DCMAKE_EXE_LINKER_FLAGS="-fsanitize=address,undefined"
|
|
|
|
- name: Build
|
|
run: cmake --build Build --target rmlui_unit_tests
|
|
|
|
- name: Test
|
|
env:
|
|
ASAN_OPTIONS: detect_leaks=1:abort_on_error=1
|
|
UBSAN_OPTIONS: print_stacktrace=1:halt_on_error=1
|
|
LSAN_OPTIONS: suppressions=${{ github.workspace }}/Utilities/lsan.supp:print_suppressions=1
|
|
run: ./Build/rmlui_unit_tests
|
|
|
|
|
|
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@v6
|
|
|
|
- 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@v6
|
|
|
|
- name: Install Dependencies
|
|
run: brew install lua sdl3 sdl3_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: ${{ matrix.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
|
|
build_type: Debug
|
|
- cmake_options: -DRMLUI_BACKEND=SDL_VK -DRMLUI_LUA_BINDINGS_LIBRARY=luajit
|
|
- cmake_options: -DRMLUI_BACKEND=GLFW_VK
|
|
- cmake_options: -DRMLUI_BACKEND=Win32_DX11 -DRMLUI_PRECOMPILED_HEADERS=OFF
|
|
- cmake_options: -DRMLUI_BACKEND=GLFW_DX11 -DRMLUI_DX_DEBUG=ON
|
|
- cmake_options: -DRMLUI_BACKEND=Win32_DX12
|
|
- cmake_options: -DRMLUI_BACKEND=SDL_DX12
|
|
- cmake_options: -DRMLUI_BACKEND=GLFW_DX12 -DRMLUI_DX_DEBUG=ON
|
|
build_type: Debug
|
|
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Install Dependencies
|
|
run: C:\vcpkg\vcpkg install freetype[core] sdl3[core,vulkan] sdl3-image[core] 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@v6
|
|
|
|
- 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@v6
|
|
|
|
- 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
|