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