mirror of https://github.com/xemu-project/xemu.git
113 lines
3.5 KiB
YAML
113 lines
3.5 KiB
YAML
name: Build code
|
|
|
|
on:
|
|
push:
|
|
pull_request:
|
|
types: [opened, synchronize, reopened]
|
|
|
|
jobs:
|
|
linux:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
cxx: [g++-12, clang++-15]
|
|
build_type: [Debug, Release]
|
|
include:
|
|
- cxx: g++-12
|
|
install: sudo apt install g++-12
|
|
- cxx: clang++-15
|
|
cxxflags: -stdlib=libc++
|
|
install: sudo apt install clang-15 libc++-15-dev libc++abi-15-dev
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set Vulkan SDK Version
|
|
id: set-version
|
|
run: echo "VULKAN_SDK_VERSION=1.3.283.0" >> $GITHUB_ENV
|
|
|
|
- name: Create Build Environment
|
|
run: |
|
|
sudo apt update
|
|
${{matrix.install}}
|
|
cmake -E make_directory ${{runner.workspace}}/build
|
|
|
|
- name: Check for Vulkan SDK Cache
|
|
id: cache-vulkan
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: vulkan_sdk
|
|
key: vulkan-sdk-${{env.VULKAN_SDK_VERSION}}
|
|
|
|
- name: Download Vulkan SDK
|
|
if: steps.cache-vulkan.outputs.cache-hit != 'true'
|
|
run: |
|
|
curl -LS -o vulkansdk.tar.xz https://sdk.lunarg.com/sdk/download/${{env.VULKAN_SDK_VERSION}}/linux/vulkansdk-linux-x86_64-${{env.VULKAN_SDK_VERSION}}.tar.xz
|
|
mkdir -p vulkan_sdk
|
|
tar xf vulkansdk.tar.xz -C vulkan_sdk
|
|
|
|
- name: Set environment variables
|
|
run: |
|
|
export VULKAN_SDK=$GITHUB_WORKSPACE/vulkan_sdk/${{env.VULKAN_SDK_VERSION}}/x86_64
|
|
echo "VULKAN_SDK=$VULKAN_SDK" >> $GITHUB_ENV
|
|
echo "PATH=$VULKAN_SDK/bin:$PATH" >> $GITHUB_ENV
|
|
echo "LD_LIBRARY_PATH=$VULKAN_SDK/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV
|
|
echo "VK_ICD_FILENAMES=$VULKAN_SDK/etc/vulkan/icd.d" >> $GITHUB_ENV
|
|
echo "VK_LAYER_PATH=$VULKAN_SDK/etc/vulkan/layer.d" >> $GITHUB_ENV
|
|
|
|
- name: Configure
|
|
working-directory: ${{runner.workspace}}/build
|
|
env:
|
|
CXX: ${{matrix.cxx}}
|
|
CXXFLAGS: ${{matrix.cxxflags}}
|
|
run: |
|
|
cmake -DCMAKE_BUILD_TYPE=${{matrix.build_type}} \
|
|
-DVMA_BUILD_SAMPLES=YES \
|
|
-DCMAKE_CXX_FLAGS="$CXXFLAGS \
|
|
-Wall \
|
|
-Wextra \
|
|
-Wpedantic \
|
|
-Wconversion \
|
|
-Wsign-conversion \
|
|
-Wshadow \
|
|
-Wnull-dereference \
|
|
-Wdouble-promotion \
|
|
-Wformat=2 \
|
|
-Wimplicit-fallthrough \
|
|
-Wundef \
|
|
-Wcast-align \
|
|
-Woverloaded-virtual \
|
|
-Wnon-virtual-dtor \
|
|
-Wstrict-overflow=5 \
|
|
-Wuseless-cast \
|
|
-Wduplicated-cond \
|
|
-Wduplicated-branches \
|
|
-Wlogical-op \
|
|
-Wredundant-decls \
|
|
-Wstrict-null-sentinel \
|
|
-Wold-style-cast" \
|
|
-Wcast-qual \
|
|
-Wconversion-extra \
|
|
-Wstack-usage=2048 \
|
|
-Wsuggest-final-types \
|
|
-Wsuggest-final-methods \
|
|
-Wsuggest-override \
|
|
-Wvector-operation-performance \
|
|
-Wzero-as-null-pointer-constant \
|
|
-Wextra-semi \
|
|
-Wmissing-declarations \
|
|
-Wmissing-include-dirs \
|
|
-Winit-self \
|
|
-Wuninitialized \
|
|
-Wunused \
|
|
-Wunused-parameter \
|
|
-Wshadow=local \
|
|
$GITHUB_WORKSPACE
|
|
|
|
- name: Build
|
|
working-directory: ${{runner.workspace}}/build
|
|
run: |
|
|
threads=`nproc`
|
|
cmake --build . --config ${{matrix.build_type}} --parallel $threads
|