Add RISC-V to cmake linux #4684
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Check a pull request | |
on: [pull_request] | |
env: | |
QT_VERSION: 5.12.12 | |
jobs: | |
build_linux: | |
strategy: | |
matrix: | |
configuration: [Debug, Release] | |
compiler: [gcc-9, gcc-13, clang-16] | |
cmake_options: [""] | |
include: | |
# Also include configurations that check if the code compiles without the graphics backends | |
- configuration: Debug | |
compiler: gcc-13 | |
cmake_options: -DFSO_BUILD_WITH_OPENGL=OFF -DFSO_BUILD_WITH_VULKAN=OFF | |
- configuration: Release | |
compiler: gcc-13 | |
cmake_options: -DFSO_BUILD_WITH_OPENGL=OFF -DFSO_BUILD_WITH_VULKAN=OFF | |
name: Linux | |
runs-on: ubuntu-latest | |
container: ghcr.io/scp-fs2open/linux_build:sha-1ff82e8 | |
steps: | |
- uses: actions/checkout@v1 | |
name: Checkout | |
with: | |
submodules: true | |
fetch-depth: 0 | |
- name: ccache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ runner.os }}-${{ matrix.configuration }}-${{ matrix.compiler }} | |
save: false # Caches are created by a separate job and only restored for PRs | |
verbose: 1 | |
- name: Configure ccache | |
run: ccache --set-config=sloppiness=pch_defines,time_macros | |
- name: Configure CMake | |
env: | |
CONFIGURATION: ${{ matrix.configuration }} | |
COMPILER: ${{ matrix.compiler }} | |
JOB_CMAKE_OPTIONS: ${{ matrix.cmake_options }} | |
CCACHE_PATH: /usr/local/bin/ccache | |
ENABLE_QTFRED: ON | |
Qt5_DIR: /qt/${{ env.QT_VERSION }}/gcc_64/lib/cmake/Qt5 | |
run: $GITHUB_WORKSPACE/ci/linux/configure_cmake.sh | |
- name: Compile | |
working-directory: ./build | |
run: LD_LIBRARY_PATH=$Qt5_DIR/lib:$LD_LIBRARY_PATH ninja -k 20 all | |
- name: Run Tests | |
working-directory: ./build | |
env: | |
CONFIGURATION: ${{ matrix.configuration }} | |
XDG_RUNTIME_DIR: /root | |
run: $GITHUB_WORKSPACE/ci/linux/run_tests.sh | |
- name: Show CCache statistics | |
run: ccache --show-stats | |
- name: Run Clang Tidy | |
# Clang-tidy reuses the precompiled headers so this only makes sense for the clang compilers | |
if: startsWith(matrix.compiler, 'clang-') | |
run: $GITHUB_WORKSPACE/ci/linux/clang_tidy.sh ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} | |
- name: Process clang-tidy warnings | |
if: startsWith(matrix.compiler, 'clang-') | |
uses: asarium/clang-tidy-action@v1 | |
with: | |
fixesFile: clang-fixes.yaml | |
build_windows: | |
strategy: | |
matrix: | |
configuration: [Debug, Release] | |
compiler: [MSVC] | |
arch: [Win32, x64] | |
name: Windows | |
runs-on: windows-2019 | |
steps: | |
- name: Prepare Environment | |
run: choco install ninja | |
- uses: actions/checkout@v1 | |
name: Checkout | |
with: | |
submodules: true | |
# - name: Cache Qt | |
# id: cache-qt-win | |
# uses: actions/cache@v1 | |
# with: | |
# path: ${{ github.workspace }}/../Qt | |
# key: ${{ runner.os }}-${{ matrix.arch }}-QtCache-${{ env.QT_VERSION }} | |
# - name: Install Qt (32 bit) | |
# uses: jurplel/install-qt-action@v2 | |
# if: ${{ matrix.compiler == 'MSVC' && matrix.arch == 'Win32' }} | |
# with: | |
# version: ${{ env.QT_VERSION }} | |
# dir: ${{ github.workspace }}/.. | |
# arch: win32_msvc2017 | |
# cached: ${{ steps.cache-qt-win.outputs.cache-hit }} | |
# aqtversion: ==0.8 | |
# - name: Install Qt (64 bit) | |
# uses: jurplel/install-qt-action@v2 | |
# if: ${{ matrix.compiler == 'MSVC' && matrix.arch == 'x64' }} | |
# with: | |
# version: ${{ env.QT_VERSION }} | |
# dir: ${{ github.workspace }}/.. | |
# arch: win64_msvc2017_64 | |
# cached: ${{ steps.cache-qt-win.outputs.cache-hit }} | |
# aqtversion: ==0.8 | |
- name: Prepare Vulkan SDK | |
uses: humbletim/[email protected] | |
with: | |
vulkan-query-version: 1.3.204.0 | |
vulkan-components: Vulkan-Headers, Vulkan-Loader | |
vulkan-use-cache: true | |
- name: Configure CMake | |
env: | |
CONFIGURATION: ${{ matrix.configuration }} | |
COMPILER: ${{ matrix.compiler }} | |
ARCHITECTURE: ${{ matrix.arch }} | |
shell: bash | |
run: | | |
mkdir build | |
cd build | |
if [ "$COMPILER" = "MinGW" ]; then | |
if [ "$ARCHITECTURE" = "Win32" ]; then | |
cmake -DFSO_USE_SPEECH="OFF" -DFSO_FATAL_WARNINGS="ON" -DFSO_USE_VOICEREC="OFF" -DFSO_BUILD_TESTS="ON" \ | |
-DFSO_BUILD_FRED2="OFF" -DFSO_BUILD_WITH_VULKAN="OFF" -DCMAKE_BUILD_TYPE=$CONFIGURATION -G "Ninja" .. | |
else | |
cmake -DFSO_USE_SPEECH="OFF" -DFSO_FATAL_WARNINGS="ON" -DFSO_USE_VOICEREC="OFF" -DFSO_BUILD_TESTS="ON" \ | |
-DFSO_BUILD_FRED2="OFF" -DCMAKE_BUILD_TYPE=$CONFIGURATION -G "Ninja" .. | |
fi | |
else | |
if [ "$ARCHITECTURE" = "Win32" ]; then | |
cmake -DFSO_USE_SPEECH="ON" -DFSO_FATAL_WARNINGS="ON" -DFSO_USE_VOICEREC="OFF" -DFSO_BUILD_TESTS="ON" \ | |
-DMSVC_SIMD_INSTRUCTIONS=SSE2 -DFSO_BUILD_FRED2="ON" -DFSO_BUILD_WITH_VULKAN="OFF" -G "Visual Studio 16 2019" \ | |
-DFSO_BUILD_QTFRED=OFF -T "v142" -A "$ARCHITECTURE" .. | |
else | |
cmake -DFSO_USE_SPEECH="ON" -DFSO_FATAL_WARNINGS="ON" -DFSO_USE_VOICEREC="OFF" -DFSO_BUILD_TESTS="ON" \ | |
-DMSVC_SIMD_INSTRUCTIONS=SSE2 -DFSO_BUILD_FRED2="ON" -G "Visual Studio 16 2019" \ | |
-DFSO_BUILD_QTFRED=OFF -T "v142" -A "$ARCHITECTURE" .. | |
fi | |
fi | |
- name: Compile | |
working-directory: ./build | |
env: | |
CONFIGURATION: ${{ matrix.configuration }} | |
COMPILER: ${{ matrix.compiler }} | |
shell: bash | |
run: | | |
if [ "$COMPILER" = "MinGW" ]; then | |
cmake --build . --config "$CONFIGURATION" | |
else | |
cmake --build . --config "$CONFIGURATION" -- /verbosity:minimal | |
fi | |
- name: Run Tests | |
working-directory: ./build | |
env: | |
CONFIGURATION: ${{ matrix.configuration }} | |
COMPILER: ${{ matrix.compiler }} | |
shell: bash | |
run: | | |
if [ "$COMPILER" = "MinGW" ]; then | |
./bin/unittests --gtest_shuffle | |
else | |
"./bin/$CONFIGURATION/unittests" --gtest_shuffle | |
fi | |
build_mac: | |
strategy: | |
matrix: | |
configuration: [Debug, Release] | |
compiler: [clang] | |
arch: [x86_64, arm64] | |
cmake_options: [""] | |
name: Mac | |
runs-on: macos-latest | |
steps: | |
# - name: Cache Qt | |
# id: cache-qt-mac | |
# uses: actions/cache@v1 | |
# with: | |
# path: ${{ github.workspace }}/../Qt | |
# key: ${{ runner.os }}-QtCache-${{ env.QT_VERSION }} | |
# - name: Install Qt | |
# uses: jurplel/install-qt-action@v2 | |
# with: | |
# version: ${{ env.QT_VERSION }} | |
# dir: ${{ github.workspace }}/.. | |
# cached: ${{ steps.cache-qt-mac.outputs.cache-hit }} | |
# setup-python: 'false' | |
# aqtversion: ==1.1.3 | |
# py7zrversion: '==0.19.*' | |
- uses: actions/checkout@v1 | |
name: Checkout | |
with: | |
submodules: true | |
fetch-depth: 0 | |
- name: ccache | |
uses: hendrikmuhs/ccache-action@v1 | |
with: | |
key: ${{ runner.os }}-${{ matrix.configuration }}-${{ matrix.compiler }}-${{ matrix.arch }} | |
save: false # Caches are created by a separate job and only restored for PRs | |
- name: Prepare Vulkan SDK | |
uses: humbletim/[email protected] | |
with: | |
vulkan-query-version: 1.3.204.0 | |
vulkan-components: Vulkan-Headers, Vulkan-Loader | |
vulkan-use-cache: true | |
- name: Configure CMake | |
env: | |
CONFIGURATION: ${{ matrix.configuration }} | |
COMPILER: ${{ matrix.compiler }} | |
ARCHITECTURE: ${{ matrix.arch }} | |
JOB_CMAKE_OPTIONS: ${{ matrix.cmake_options }} | |
ENABLE_QTFRED: OFF | |
run: $GITHUB_WORKSPACE/ci/linux/configure_cmake.sh | |
- name: Compile | |
working-directory: ./build | |
run: LD_LIBRARY_PATH=$Qt5_DIR/lib:$LD_LIBRARY_PATH ninja all | |
- name: Run Tests | |
working-directory: ./build | |
env: | |
CONFIGURATION: ${{ matrix.configuration }} | |
ARCH: ${{ matrix.arch }} | |
XDG_RUNTIME_DIR: /root | |
run: $GITHUB_WORKSPACE/ci/linux/run_tests.sh | |
- name: Run Clang Tidy | |
# Clang-tidy reuses the precompiled headers so this only makes sense for the clang compilers | |
if: startsWith(matrix.compiler, 'clang-') | |
run: $GITHUB_WORKSPACE/ci/linux/clang_tidy.sh ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} | |
- name: Process clang-tidy warnings | |
if: startsWith(matrix.compiler, 'clang-') | |
uses: asarium/clang-tidy-action@v1 | |
with: | |
fixesFile: clang-fixes.yaml |