|
| 1 | +name: build run sanitizers |
| 2 | +description: build run sanitizers |
| 3 | + |
| 4 | +inputs: |
| 5 | + san_type: |
| 6 | + description: 'sanitizer type: tsan OR aubsan' |
| 7 | + type: string |
| 8 | + required: true |
| 9 | + llvm_branch: |
| 10 | + description: 'The actual llvm branch to check out e.g. release/19.x' |
| 11 | + type: string |
| 12 | + required: true |
| 13 | + |
| 14 | +runs: |
| 15 | + using: "composite" |
| 16 | + steps: |
| 17 | + |
| 18 | + - name: Set sanitizer vars |
| 19 | + id: sanitizer_vars |
| 20 | + shell: 'bash' |
| 21 | + run: | |
| 22 | + if [ "${{ inputs.san_type }}" = "tsan" ]; then |
| 23 | + echo "build_type=SanitizeThread" >> "$GITHUB_OUTPUT" |
| 24 | + echo "ninja_options=-j3" >> "$GITHUB_OUTPUT" |
| 25 | + echo "ca_options=-DCA_ENABLE_EXTENDED_CHECKS=OFF" >> "$GITHUB_OUTPUT" |
| 26 | + else # aubsan |
| 27 | + echo "build_type=SanitizeAddress,Undefined" >> "$GITHUB_OUTPUT" |
| 28 | + echo "ninja_options=-j2" >> "$GITHUB_OUTPUT" |
| 29 | + echo "ca_options=" >> "$GITHUB_OUTPUT" |
| 30 | + fi |
| 31 | + cat $GITHUB_OUTPUT |
| 32 | +
|
| 33 | + - name: Install clang |
| 34 | + shell: 'bash' |
| 35 | + run: | |
| 36 | + sudo apt update |
| 37 | + sudo apt install -y clang-19 |
| 38 | +
|
| 39 | + - name: Checkout llvm/llvm-project |
| 40 | + uses: actions/checkout@v4 |
| 41 | + with: |
| 42 | + repository: llvm/llvm-project |
| 43 | + ref: ${{ inputs.llvm_branch }} |
| 44 | + path: external/llvm-project |
| 45 | + |
| 46 | + - name: Build llvm |
| 47 | + shell: 'bash' |
| 48 | + run: | |
| 49 | + echo Build LLVM |
| 50 | + cd external |
| 51 | + cmake llvm-project/llvm \ |
| 52 | + -GNinja \ |
| 53 | + -Bbuild \ |
| 54 | + -DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/external/llvm_install \ |
| 55 | + -DCA_LLVM_PROJECT_DIR=$GITHUB_WORKSPACE/external/llvm-project \ |
| 56 | + -DCA_LLVM_SPIRV_PROJECT_DIR=$GITHUB_WORKSPACE/external/llvm-spirv \ |
| 57 | + -DLLVM_ENABLE_ZLIB=FALSE \ |
| 58 | + -DLLVM_ENABLE_Z3_SOLVER=FALSE \ |
| 59 | + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ |
| 60 | + -DLLVM_USE_SANITIZER=Thread \ |
| 61 | + -DLLVM_BUILD_LLVM_DYLIB=ON \ |
| 62 | + -DLLVM_LINK_LLVM_DYLIB=ON \ |
| 63 | + -DLLVM_ENABLE_DIA_SDK=OFF \ |
| 64 | + -DLLVM_ENABLE_ZSTD=FALSE \ |
| 65 | + -DLLVM_ENABLE_PROJECTS="clang;lld" \ |
| 66 | + -DCMAKE_BUILD_TYPE=Release \ |
| 67 | + -DCMAKE_C_COMPILER=/usr/bin/clang-19 \ |
| 68 | + -DCMAKE_CXX_COMPILER=/usr/bin/clang++-19 |
| 69 | + echo Install LLVM |
| 70 | + cmake --build $GITHUB_WORKSPACE/external/build --target install -- -j2 |
| 71 | +
|
| 72 | + - name: Build OCK |
| 73 | + shell: 'bash' |
| 74 | + run: | |
| 75 | + echo Build OCK |
| 76 | + cmake \ |
| 77 | + -Bbuild \ |
| 78 | + -GNinja \ |
| 79 | + -DCA_ENABLE_HOST_IMAGE_SUPPORT=OFF \ |
| 80 | + -DOCL_EXTENSION_cl_khr_command_buffer=ON \ |
| 81 | + -DOCL_EXTENSION_cl_khr_command_buffer_mutable_dispatch=ON \ |
| 82 | + ${{ steps.sanitizer_vars.outputs.ca_options }} \ |
| 83 | + -DCMAKE_INSTALL_PREFIX=$GITHUB_WORKSPACE/install \ |
| 84 | + -DCA_LLVM_INSTALL_DIR=$GITHUB_WORKSPACE/external/llvm_install \ |
| 85 | + -DCMAKE_BUILD_TYPE=Debug \ |
| 86 | + -DCA_USE_SANITIZER=Thread \ |
| 87 | + -DCMAKE_C_COMPILER=/usr/bin/clang-19 \ |
| 88 | + -DCMAKE_CXX_COMPILER=/usr/bin/clang++-19 \ |
| 89 | + -DCA_ENABLE_DEBUG_SUPPORT=ON \ |
| 90 | + -DCA_BUILTINS_TOOLS_DIR=$GITHUB_WORKSPACE/external/llvm_install/bin \ |
| 91 | + -DCMAKE_C_COMPILER_LAUNCHER=ccache \ |
| 92 | + -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ |
| 93 | + -DCA_GTEST_LAUNCHER="/usr/bin/python3;-u;$GITHUB_WORKSPACE/scripts/gtest-terse-runner.py" \ |
| 94 | + . |
| 95 | + echo Build OCK all config=${{ steps.sanitizer_vars.outputs.build_type }} |
| 96 | + cmake --build $GITHUB_WORKSPACE/build --target all --config ${{ steps.sanitizer_vars.outputs.build_type }} |
| 97 | +
|
| 98 | + - name: Test OCK |
| 99 | + shell: 'bash' |
| 100 | + run: | |
| 101 | + echo Test OCK ninja |
| 102 | + ninja -C build ${{ steps.sanitizer_vars.outputs.ninja_options }} check-ock |
0 commit comments