Skip to content

Add Android CMake build preset #325

Add Android CMake build preset

Add Android CMake build preset #325

name: CMake Build
on:
push:
branches: [ "main", "develop" ]
pull_request:
branches: [ "main", "develop" ]
env:
cpm_cache_name: cpm-src-cache
jobs:
build-linux-gcc:
name: Linux build (GCC)
strategy:
fail-fast: true
matrix:
cmconfig: [ Debug, Release ]
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: CPM source code cache
uses: actions/cache@v4
with:
path: ${{github.workspace}}/build/_deps/*-src
key: ${{env.cpm_cache_name}}-${{ hashFiles('CMakeLists.txt', '**/CMakeLists.txt', 'cmake/**') }}
restore-keys: |
${{env.cpm_cache_name}}-
- name: CPM build output cache
uses: actions/cache@v4
with:
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
key: ${{env.cpm_cache_name}}-gcc-${{hashFiles('CMakeLists.txt', '**/CMakeLists.txt', 'cmake/**')}}
restore-keys: |
${{env.cpm_cache_name}}-gcc
- name: Set up APT packages
uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: cmake build-essential libwayland-dev libxkbcommon-dev wayland-protocols extra-cmake-modules xorg-dev libasound2-dev clang-tidy clang-tools cppcheck lsb-release wget software-properties-common gnupg ninja-build
version: 1.0
- name: Configure CMake
run: |
cmake -B ${{github.workspace}}/build \
-G "Ninja Multi-Config" \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
-DCERLIB_ENABLE_TESTS=ON \
-DCERLIB_ENABLE_RENDERING_TESTS=OFF
- name: Build
run: cmake --build ${{github.workspace}}/build --config ${{matrix.cmconfig}} --parallel
- name: Run Tests
run: ${{github.workspace}}/build/bin/${{matrix.cmconfig}}/cerlibTests
build-linux-clang:
name: Linux build (Clang)
strategy:
fail-fast: true
matrix:
cmconfig: [ Debug, Release ]
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: CPM source code cache
uses: actions/cache@v4
with:
path: ${{github.workspace}}/build/_deps/*-src
key: ${{env.cpm_cache_name}}-${{ hashFiles('CMakeLists.txt', '**/CMakeLists.txt', 'cmake/**') }}
restore-keys: |
${{env.cpm_cache_name}}-
- name: CPM build output cache
uses: actions/cache@v4
with:
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
key: ${{env.cpm_cache_name}}-clang-${{hashFiles('CMakeLists.txt', '**/CMakeLists.txt', 'cmake/**')}}
restore-keys: |
${{env.cpm_cache_name}}-clang
- name: Set up APT packages
uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: cmake clang-16 build-essential libwayland-dev libxkbcommon-dev wayland-protocols extra-cmake-modules xorg-dev libasound2-dev clang-tidy clang-tools cppcheck lsb-release wget software-properties-common gnupg ninja-build
version: 1.0
- name: Configure CMake
run: |
cmake -B ${{github.workspace}}/build \
-G "Ninja Multi-Config" \
-DCMAKE_C_COMPILER=clang-16 \
-DCMAKE_CXX_COMPILER=clang++-16 \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
-DCERLIB_ENABLE_TESTS=ON \
-DCERLIB_ENABLE_RENDERING_TESTS=OFF
- name: Run Cppcheck
run: python3 cppcheck.py ${{github.workspace}}/build
- name: Build
run: cmake --build ${{github.workspace}}/build --config ${{matrix.cmconfig}} --parallel
- name: Run Tests
run: ${{github.workspace}}/build/bin/${{matrix.cmconfig}}/cerlibTests
build-windows:
name: Windows build
strategy:
fail-fast: true
matrix:
os: [ 2022 ]
cmconfig: [ Debug, Release ]
runs-on: windows-${{matrix.os}}
steps:
- uses: actions/checkout@v4
- name: CPM source code cache
uses: actions/cache@v4
with:
path: ${{github.workspace}}/build/_deps/*-src
key: ${{env.cpm_cache_name}}-${{ hashFiles('CMakeLists.txt', '**/CMakeLists.txt', 'cmake/**') }}
restore-keys: |
${{env.cpm_cache_name}}-
- name: CPM build output cache
uses: actions/cache@v4
with:
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
key: ${{env.cpm_cache_name}}-windows-${{hashFiles('CMakeLists.txt', '**/CMakeLists.txt', 'cmake/**')}}
restore-keys: |
${{env.cpm_cache_name}}-windows
- name: Configure CMake
run: |
cmake -B ${{github.workspace}}/build -DCERLIB_ENABLE_TESTS=ON -DCERLIB_ENABLE_RENDERING_TESTS=OFF
- name: Build
run: cmake --build ${{github.workspace}}/build --config ${{matrix.cmconfig}} --parallel
- name: Run Tests
run: ${{github.workspace}}\build\bin\${{matrix.cmconfig}}\cerlibTests.exe
build-macos:
name: macOS build
strategy:
fail-fast: true
matrix:
os: [ 13, 14, 15 ]
cmconfig: [ Debug, Release ]
runs-on: macos-${{matrix.os}}
steps:
- uses: actions/checkout@v4
- name: Install prerequisites
run: |
brew install ninja
- name: CPM source code cache
uses: actions/cache@v4
with:
path: ${{github.workspace}}/build/_deps/*-src
key: ${{env.cpm_cache_name}}-${{ hashFiles('CMakeLists.txt', '**/CMakeLists.txt', 'cmake/**') }}
restore-keys: |
${{env.cpm_cache_name}}-
- name: CPM build output cache
uses: actions/cache@v4
with:
path: |
${{github.workspace}}/build/_deps/*-build
${{github.workspace}}/build/_deps/*-subbuild
key: ${{env.cpm_cache_name}}-macos-${{matrix.os}}-ninja-${{hashFiles('CMakeLists.txt', '**/CMakeLists.txt', 'cmake/**')}}
restore-keys: |
${{env.cpm_cache_name}}-macos-${{matrix.os}}-ninja
- name: Configure CMake
run: |
cmake -B ${{github.workspace}}/build -G "Ninja Multi-Config" -DCERLIB_ENABLE_TESTS=ON -DCERLIB_ENABLE_RENDERING_TESTS=OFF
- name: Build
run: cmake --build ${{github.workspace}}/build --config ${{matrix.cmconfig}} --parallel
- name: Run Tests
run: ${{github.workspace}}/build/bin/${{matrix.cmconfig}}/cerlibTests