| 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.4.357.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 |