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