All checks were successful
Build documentation / build-and-deploy (push) Successful in 1m53s
128 lines
3.6 KiB
YAML
128 lines
3.6 KiB
YAML
# Simplified CMake Build Tests
|
|
name: CMake Build Tests
|
|
|
|
on:
|
|
push:
|
|
branches: ['dev', 'release', '*cmake*']
|
|
pull_request:
|
|
branches: ['dev', 'release']
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
concurrency:
|
|
cancel-in-progress: true
|
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
|
|
|
jobs:
|
|
# Core functionality test - multi-platform
|
|
cmake-core-tests:
|
|
name: Core Tests (${{ matrix.os }}, ${{ matrix.build_type }})
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- os: ubuntu-latest
|
|
build_type: Release
|
|
generator: ""
|
|
- os: ubuntu-latest
|
|
build_type: Debug
|
|
generator: ""
|
|
- os: windows-latest
|
|
build_type: Release
|
|
generator: '-G "Visual Studio 17 2022" -A x64'
|
|
- os: macos-latest
|
|
build_type: Release
|
|
generator: ""
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v6.0.2
|
|
|
|
- name: Set up MSVC (Windows)
|
|
if: runner.os == 'Windows'
|
|
uses: microsoft/setup-msbuild@v2
|
|
|
|
- name: Set up CMake
|
|
uses: jwlawson/actions-setup-cmake@v2
|
|
with:
|
|
cmake-version: latest
|
|
|
|
- name: Configure and Build
|
|
shell: bash
|
|
run: |
|
|
mkdir cmakebuild && cd cmakebuild
|
|
cmake ../build/cmake ${{ matrix.generator }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
|
|
cmake --build . --config ${{ matrix.build_type }}
|
|
|
|
- name: Test Installation (Linux only)
|
|
if: runner.os == 'Linux'
|
|
shell: bash
|
|
run: |
|
|
cd cmakebuild
|
|
cmake --install . --prefix install-test
|
|
test -f "install-test/lib/liblz4.a" || test -f "install-test/lib/liblz4.so"
|
|
test -f "install-test/include/lz4.h"
|
|
|
|
# CMake compatibility and integration tests
|
|
cmake-extended-tests:
|
|
name: Extended Tests
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
test_type:
|
|
- cmake_versions
|
|
- static_lib
|
|
- integration
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v6.0.2
|
|
|
|
- name: Set up CMake
|
|
uses: jwlawson/actions-setup-cmake@v2
|
|
with:
|
|
cmake-version: ${{ matrix.test_type == 'cmake_versions' && '3.10.0' || 'latest' }}
|
|
|
|
- name: CMake Version Compatibility Test
|
|
if: matrix.test_type == 'cmake_versions'
|
|
run: |
|
|
mkdir cmakebuild && cd cmakebuild
|
|
cmake ../build/cmake
|
|
cmake --build .
|
|
|
|
- name: Static Library Test
|
|
if: matrix.test_type == 'static_lib'
|
|
run: |
|
|
# Build and install static library
|
|
CFLAGS="-Werror -O1" cmake -S build/cmake -B build -DBUILD_STATIC_LIBS=ON -DCMAKE_INSTALL_PREFIX=$PWD/install
|
|
cmake --build build --target install
|
|
|
|
# Test find_package with static library
|
|
cmake -S tests/cmake -B build_test -DCMAKE_PREFIX_PATH=$PWD/install
|
|
cmake --build build_test
|
|
|
|
- name: Integration Test
|
|
if: matrix.test_type == 'integration'
|
|
run: |
|
|
# Build and install
|
|
cmake -S build/cmake -B build -DCMAKE_INSTALL_PREFIX=$PWD/install
|
|
cmake --build build --target install
|
|
|
|
# Test find_package
|
|
cmake -S tests/cmake -B test_build -DCMAKE_PREFIX_PATH=$PWD/install
|
|
cmake --build test_build
|
|
cd test_build && ctest -V
|
|
|
|
# Makefile wrapper test
|
|
make-cmake-test:
|
|
name: Make CMake
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v6.0.2
|
|
- name: Test via Makefile
|
|
run: make clean && make cmakebuild
|