Skip to content

add build in CI

add build in CI #20

Workflow file for this run

name: Presubmit
on:
push:
branches:
- main
pull_request:
jobs:
format:
name: Check code formatting
runs-on: ubuntu-22.04
steps:
- name: Install clang-format
run: |
sudo apt-get update
sudo apt-get install -y clang-format clang-format-15
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Check format
run: |
git-clang-format --binary clang-format-15 --diff origin/main --extensions cpp,hpp > output.txt
cat output.txt
grep "no modified files to format" output.txt
build:
name: Build
needs: format
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install ninja-build libvulkan-dev clang-15
- name: Build SPIRV-Tools
run: |
git clone --depth 1 --branch vksp https://github.com/rjodinchr/SPIRV-Tools.git third_party/spirv-tools
git clone --depth 1 --branch vksp https://github.com/rjodinchr/SPIRV-Headers.git third_party/spirv-tools/external/spirv-headers
mkdir install
cmake -B third_party/spirv-tools/build -S third_party/spirv-tools/ -G Ninja \
-DCMAKE_INSTALL_PREFIX=install \
-DCMAKE_CXX_COMPILER="$(which clang++)"
cmake --build third_party/spirv-tools/build --target install
- name: Build Perfetto
run: |
git clone --depth 1 --branch v39.0 https://android.googlesource.com/platform/external/perfetto third_party/perfetto
$(pwd)/third_party/perfetto/tools/install-build-deps
$(pwd)/third_party/perfetto/tools/setup_all_configs.py
$(pwd)/third_party/perfetto/tools/ninja -C $(pwd)/third_party/perfetto/out/linux_clang_release libtrace_processor.a
- name: Build debug
run: |
cmake -B build_debug -S . -G Ninja \
-DPERFETTO_SDK_PATH="$(pwd)/third_party/perfetto/sdk" \
-DPERFETTO_INTERNAL_INCLUDE_PATH="$(pwd)/third_party/perfetto/include" \
-DPERFETTO_GEN_INCLUDE_PATH="$(pwd)/third_party/perfetto/out/linux_clang_release/gen/build_config" \
-DPERFETTO_TRACE_PROCESSOR_LIB="$(pwd)/third_party/perfetto/out/linux_clang_release/libtrace_processor.a" \
-DPERFETTO_CXX_CONFIG_INCLUDE_PATH="$(pwd)/third_party/perfetto/buildtools/libcxx_config" \
-DPERFETTO_CXX_SYSTEM_INCLUDE_PATH="$(pwd)/third_party/perfetto/buildtools/libcxx/include" \
-DEXTRACTOR_NOSTDINCXX=1 \
-DCMAKE_PREFIX_PATH="${CMAKE_PREFIX_PATH};$(pwd)/install/lib/cmake/SPIRV-Tools-opt;$(pwd)/install/lib/cmake/SPIRV-Tools" \
-DCMAKE_CXX_COMPILER="$(which clang++)" \
-DCMAKE_BUILD_TYPE=Debug
cmake --build build_debug
- name: Build release
run: |
cmake -B build_release -S . -G Ninja \
-DPERFETTO_SDK_PATH="$(pwd)/third_party/perfetto/sdk" \
-DPERFETTO_INTERNAL_INCLUDE_PATH="$(pwd)/third_party/perfetto/include" \
-DPERFETTO_GEN_INCLUDE_PATH="$(pwd)/third_party/perfetto/out/linux_clang_release/gen/build_config" \
-DPERFETTO_TRACE_PROCESSOR_LIB="$(pwd)/third_party/perfetto/out/linux_clang_release/libtrace_processor.a" \
-DPERFETTO_CXX_CONFIG_INCLUDE_PATH="$(pwd)/third_party/perfetto/buildtools/libcxx_config" \
-DPERFETTO_CXX_SYSTEM_INCLUDE_PATH="$(pwd)/third_party/perfetto/buildtools/libcxx/include" \
-DEXTRACTOR_NOSTDINCXX=1 \
-DCMAKE_PREFIX_PATH="${CMAKE_PREFIX_PATH};$(pwd)/install/lib/cmake/SPIRV-Tools-opt;$(pwd)/install/lib/cmake/SPIRV-Tools" \
-DCMAKE_CXX_COMPILER="$(which clang++)" \
-DCMAKE_BUILD_TYPE=Release
cmake --build build_release
- name: Tests
run: |
$(pwd)/build_release/runner/vulkan-shader-profiler-runner -i $(pwd)/tests/example.spvasm
$(pwd)/build_release/runner/vulkan-shader-profiler-runner -i $(pwd)/tests/example-with-counter.spvasm | grep "my_counter"
$(pwd)/third_party/perfetto/out/linux_clang_release/traced &
$(pwd)/third_party/perfetto/out/linux_clang_release/perfetto -c $(pwd)/tests/perfetto_config --txt -o trace &
sleep 1
LD_LIBRARY_PATH=$(pwd)/build_release/layer:${LD_LIBRARY_PATH} VK_ADD_LAYER_PATH="$(pwd)/manifest/" VK_LOADER_LAYERS_ENABLE="VK_LAYER_SHADER_PROFILER" $(pwd)/build_release/runner/vulkan-shader-profiler-runner -i $(pwd)/tests/example.spvasm
pkill -x perfetto
while [[ -n $(pgrep -x perfetto) ]]; do sleep 0.2; done
$(pwd)/build_release/extractor/vulkan-shader-profiler-extractor -i trace -o trace.spvasm -d 0
diff trace.spvasm $(pwd)/tests/expected.spvasm