1334e3c466
This commit updates the NDK version to latest available at the time. The expectation from this change is to resolve issues with code modernisation and to allow us to use C++ 17 features on Android. This shouldn't affect devices supported as we're not changing the API level. For more details see: https://developer.android.com/ndk/downloads/revision_history
108 lines
6.3 KiB
YAML
108 lines
6.3 KiB
YAML
name: CI
|
|
|
|
on: [push, pull_request]
|
|
|
|
jobs:
|
|
build:
|
|
name: ${{ matrix.platform.name }} ${{ matrix.config.name }}
|
|
runs-on: ${{ matrix.platform.os }}
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
platform:
|
|
- { name: Windows VS2019, os: windows-2019 }
|
|
- { name: Windows VS2022, os: windows-2022 }
|
|
- { name: Linux GCC, os: ubuntu-latest }
|
|
- { name: Linux Clang, os: ubuntu-latest, flags: -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ }
|
|
- { name: MacOS XCode, os: macos-latest }
|
|
config:
|
|
- { name: Shared, flags: -DBUILD_SHARED_LIBS=TRUE }
|
|
- { name: Static, flags: -DBUILD_SHARED_LIBS=FALSE }
|
|
|
|
include:
|
|
- platform: { name: Windows VS2022, os: windows-2022 }
|
|
config: { name: Unity, flags: -DBUILD_SHARED_LIBS=TRUE -DCMAKE_UNITY_BUILD=ON }
|
|
- platform: { name: MacOS XCode, os: macos-latest }
|
|
config: { name: Frameworks, flags: -DSFML_BUILD_FRAMEWORKS=TRUE }
|
|
- platform: { name: MacOS XCode, os: macos-latest }
|
|
config: { name: iOS, flags: -DCMAKE_TOOLCHAIN_FILE=$GITHUB_WORKSPACE/cmake/toolchains/iOS.toolchain.cmake -DIOS_PLATFORM=SIMULATOR }
|
|
- platform: { name: Android, os: ubuntu-latest }
|
|
config: { name: x86, flags: -DCMAKE_ANDROID_ARCH_ABI=x86 -DCMAKE_SYSTEM_NAME=Android -DSFML_BUILD_TEST_SUITE=FALSE -DCMAKE_ANDROID_NDK=$GITHUB_WORKSPACE/android-ndk-r23b -DCMAKE_ANDROID_NDK_TOOLCHAIN_VERSION=clang -DCMAKE_ANDROID_STL_TYPE=c++_shared -DCMAKE_ANDROID_API=26 }
|
|
- platform: { name: Android, os: ubuntu-latest }
|
|
config: { name: armeabi-v7a, flags: -DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a -DCMAKE_SYSTEM_NAME=Android -DSFML_BUILD_TEST_SUITE=FALSE -DCMAKE_ANDROID_NDK=$GITHUB_WORKSPACE/android-ndk-r23b -DCMAKE_ANDROID_NDK_TOOLCHAIN_VERSION=clang -DCMAKE_ANDROID_STL_TYPE=c++_shared -DCMAKE_ANDROID_API=26 }
|
|
steps:
|
|
- name: Checkout Code
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Detect Linux Clang Version
|
|
if: runner.os == 'Linux'
|
|
run: clang++ --version | sed -n 's/.*version \([0-9]\+\)\..*/clang_version=\1/p' >> $GITHUB_ENV
|
|
|
|
- name: Install Linux Tools and Dependencies
|
|
if: runner.os == 'Linux'
|
|
run: sudo apt-get update && sudo apt-get install gcovr llvm-${{ env.clang_version }} libxrandr-dev libxcursor-dev libudev-dev libopenal-dev libflac-dev libvorbis-dev libgl1-mesa-dev libegl1-mesa-dev
|
|
|
|
- name: Install macOS Tools and Dependencies
|
|
if: runner.os == 'macOS'
|
|
run: brew install gcovr
|
|
|
|
- name: Install OpenCppCoverage and add to PATH
|
|
if: runner.os == 'Windows'
|
|
run: |
|
|
choco install OpenCppCoverage -y
|
|
echo "C:\Program Files\OpenCppCoverage" >> $env:GITHUB_PATH
|
|
|
|
- name: Install Android Components
|
|
if: matrix.platform.name == 'Android'
|
|
run: |
|
|
echo "y" | /usr/local/lib/android/sdk/tools/bin/sdkmanager --install "cmake;3.10.2.4988404" --sdk_root=ANDROID_SDK_ROOT
|
|
sudo ln -sf /usr/local/lib/android/sdk/cmake/3.10.2.4988404/bin/cmake /usr/bin/cmake
|
|
wget -nv https://dl.google.com/android/repository/android-ndk-r23b-linux.zip -P $GITHUB_WORKSPACE
|
|
unzip -qq -d $GITHUB_WORKSPACE android-ndk-r23b-linux.zip
|
|
|
|
- name: Configure CMake
|
|
shell: bash
|
|
run: cmake -S $GITHUB_WORKSPACE -B $GITHUB_WORKSPACE/build -DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install -DSFML_BUILD_EXAMPLES=TRUE -DCMAKE_VERBOSE_MAKEFILE=ON -DSFML_BUILD_TEST_SUITE=TRUE -DSFML_ENABLE_COVERAGE=TRUE ${{matrix.platform.flags}} ${{matrix.config.flags}}
|
|
|
|
- name: Build
|
|
shell: bash
|
|
run: cmake --build $GITHUB_WORKSPACE/build --config Release --target install
|
|
|
|
- name: Generate OpenCppCoverage Coverage Report
|
|
if: matrix.platform.name == 'Windows VS2019' || matrix.platform.name == 'Windows VS2022'
|
|
shell: bash
|
|
run: cmake --build $GITHUB_WORKSPACE/build --config Debug --target runtests
|
|
|
|
- name: Generate GCC Gcov Coverage Report
|
|
if: matrix.platform.name == 'Linux GCC'
|
|
shell: bash
|
|
run: |
|
|
cmake -S $GITHUB_WORKSPACE -B $GITHUB_WORKSPACE/build -DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install -DCMAKE_BUILD_TYPE=Debug -DSFML_BUILD_EXAMPLES=TRUE -DCMAKE_VERBOSE_MAKEFILE=ON -DSFML_BUILD_TEST_SUITE=TRUE -DSFML_ENABLE_COVERAGE=TRUE ${{matrix.platform.flags}} ${{matrix.config.flags}}
|
|
cmake --build $GITHUB_WORKSPACE/build --target runtests
|
|
gcovr -r $GITHUB_WORKSPACE -x $GITHUB_WORKSPACE/build/coverage.out -s -f 'src/SFML/.*' -f 'include/SFML/.*' $GITHUB_WORKSPACE
|
|
|
|
- name: Generate Clang Gcov Coverage Report
|
|
if: matrix.platform.name == 'Linux Clang'
|
|
shell: bash
|
|
run: |
|
|
cmake -S $GITHUB_WORKSPACE -B $GITHUB_WORKSPACE/build -DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install -DCMAKE_BUILD_TYPE=Debug -DSFML_BUILD_EXAMPLES=TRUE -DCMAKE_VERBOSE_MAKEFILE=ON -DSFML_BUILD_TEST_SUITE=TRUE -DSFML_ENABLE_COVERAGE=TRUE ${{matrix.platform.flags}} ${{matrix.config.flags}}
|
|
cmake --build $GITHUB_WORKSPACE/build --target runtests
|
|
gcovr --gcov-executable="llvm-cov-${{ env.clang_version }} gcov" -r $GITHUB_WORKSPACE -x $GITHUB_WORKSPACE/build/coverage.out -s -f 'src/SFML/.*' -f 'include/SFML/.*' $GITHUB_WORKSPACE
|
|
|
|
- name: Generate Apple Clang Gcov Coverage Report
|
|
if: matrix.platform.name == 'MacOS XCode' && (matrix.config.name == 'Shared' || matrix.config.name == 'Static')
|
|
shell: bash
|
|
run: |
|
|
cmake -S $GITHUB_WORKSPACE -B $GITHUB_WORKSPACE/build -DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install -DCMAKE_BUILD_TYPE=Debug -DSFML_BUILD_EXAMPLES=TRUE -DCMAKE_VERBOSE_MAKEFILE=ON -DSFML_BUILD_TEST_SUITE=TRUE -DSFML_ENABLE_COVERAGE=TRUE ${{matrix.platform.flags}} ${{matrix.config.flags}}
|
|
cmake --build $GITHUB_WORKSPACE/build --target runtests
|
|
gcovr -r $GITHUB_WORKSPACE -x $GITHUB_WORKSPACE/build/coverage.out -s -f 'src/SFML/.*' -f 'include/SFML/.*' $GITHUB_WORKSPACE
|
|
|
|
- name: Upload Coverage Report to Codecov
|
|
if: matrix.platform.name == 'Windows VS2019' || matrix.platform.name == 'Windows VS2022' || matrix.platform.name == 'Linux GCC' || matrix.platform.name == 'Linux Clang' || (matrix.platform.name == 'MacOS XCode' && (matrix.config.name == 'Shared' || matrix.config.name == 'Static'))
|
|
uses: codecov/codecov-action@v2
|
|
with:
|
|
directory: ./build
|
|
files: ./build/coverage.out
|
|
fail_ci_if_error: true
|