diff --git a/.github/workflows/sycl_linux_build_and_test.yml b/.github/workflows/sycl_linux_build_and_test.yml new file mode 100644 index 0000000000000..ce7227b45f931 --- /dev/null +++ b/.github/workflows/sycl_linux_build_and_test.yml @@ -0,0 +1,159 @@ +name: Reusable SYCL Linux build and test workflow + +on: + pull_request: + paths: + - '.github/workflows/sycl_linux_build_and_test.yml' + workflow_call: + inputs: + cc: + type: string + required: false + default: "gcc" + cxx: + type: string + required: false + default: "g++" + build_image: + type: string + required: false + default: "ghcr.io/intel/llvm/ubuntu2004_base:latest" + build_runs_on: + type: string + required: false + default: "ubuntu-latest" + build_github_cache: + type: boolean + required: false + default: false + build_cache_root: + type: string + required: true + build_cache_suffix: + type: string + required: false + default: "default" + build_cache_size: + type: string + required: false + default: 2G + build_configure_extra_args: + type: string + required: false + default: "" + build_artifact_suffix: + type: string + required: true + build_upload_artifact: + type: boolean + required: false + default: false + +jobs: + configure: + name: Pre-build configuration + runs-on: ubuntu-latest + outputs: + params: ${{ steps.input-parameters.outputs.params }} + steps: + - id: input-parameters + env: + INPUTS: ${{ toJSON(inputs) }} + run: | + if [[ "$GITHUB_EVENT_NAME" != "workflow_call" ]]; then + INPUTS="{ + \"cc\":\"gcc\", + \"cxx\":\"g++\", + \"build_runs_on\":\"sycl-precommit-linux\", + \"build_image\":\"ghcr.io/intel/llvm/ubuntu2004_base:latest\", + \"build_github_cache\":\"false\", + \"build_cache_root\":\"/__w/\", + \"build_cache_suffix\":\"default\", + \"build_cache_size\":\"2G\", + \"build_configure_extra_args\":\"\", + \"build_artifact_suffix\":\"default\", + \"build_upload_artifact\":\"false\" + }" + fi + INPUTS="${INPUTS//'%'/'%25'}" + INPUTS="${INPUTS//$'\n'/'%0A'}" + INPUTS="${INPUTS//$'\r'/'%0D'}" + echo "::set-output name=params::$INPUTS" + echo "$INPUTS" + build: + name: Build SYCL toolchain + needs: configure + runs-on: ${{ fromJSON(needs.configure.outputs.params).build_runs_on }} + container: + image: ${{ fromJSON(needs.configure.outputs.params).build_image }} + options: -u 1001:1001 + steps: + - uses: actions/checkout@v2 + with: + path: src + - name: Setup Cache + uses: actions/cache@v2 + if: ${{ steps.parameters.build_github_cache }} + id: cache + with: + path: ${{ fromJSON(needs.configure.outputs.params).build_cache_root }}/build_cache_${{ fromJSON(needs.configure.outputs.params).build_cache_suffix }} + key: sycl-build-${{ fromJSON(needs.configure.outputs.params).build_cache_suffix }}-${{ github.sha }} + restore-keys: | + sycl-build-${{ fromJSON(needs.configure.outputs.params).build_cache_suffix }}- + - name: Configure + env: + CC: ${{ fromJSON(needs.configure.outputs.params).cc }} + CXX: ${{ fromJSON(needs.configure.outputs.params).cxx }} + CACHE_ROOT: ${{ fromJSON(needs.configure.outputs.params).build_cache_root }} + CACHE_SUFFIX: ${{ fromJSON(needs.configure.outputs.params).build_cache_suffix }} + CACHE_SIZE: ${{ fromJSON(needs.configure.outputs.params).build_cache_size }} + ARGS: ${{ fromJSON(needs.configure.outputs.params).build_configure_extra_args }} + run: | + mkdir -p $CACHE_ROOT/build_cache_$CACHE_SUFFIX + mkdir -p $GITHUB_WORKSPACE/build + cd $GITHUB_WORKSPACE/build + python3 $GITHUB_WORKSPACE/src/buildbot/configure.py -w $GITHUB_WORKSPACE \ + -s $GITHUB_WORKSPACE/src -o $GITHUB_WORKSPACE/build -t Release \ + --ci-defaults $ARGS --cmake-opt="-DLLVM_CCACHE_BUILD=ON" \ + --cmake-opt="-DLLVM_CCACHE_DIR=$CACHE_ROOT/build_cache_$CACHE_SUFFIX" \ + --cmake-opt="-DLLVM_CCACHE_MAXSIZE=$CACHE_SIZE" + - name: Compile + run: cmake --build $GITHUB_WORKSPACE/build + # TODO allow to optionally disable in-tree checks + - name: check-llvm + if: always() + run: | + cmake --build $GITHUB_WORKSPACE/build --target check-llvm + - name: check-clang + if: always() + run: | + export XDG_CACHE_HOME=$GITHUB_WORKSPACE/os_cache + cmake --build $GITHUB_WORKSPACE/build --target check-clang + - name: check-sycl + if: always() + run: | + cmake --build $GITHUB_WORKSPACE/build --target check-sycl + - name: check-llvm-spirv + if: always() + run: | + cmake --build $GITHUB_WORKSPACE/build --target check-llvm-spirv + - name: check-xptifw + if: always() + run: | + cmake --build $GITHUB_WORKSPACE/build --target check-xptifw + - name: Install + if: ${{ steps.parameters.build_upload_artifact }} + run: cmake --build $GITHUB_WORKSPACE/build --target install + - name: Pack + if: ${{ steps.parameters.build_upload_artifact }} + run: tar -czf llvm_sycl.tar.gz -C $GITHUB_WORKSPACE/build/install . + - name: Upload artifacts + uses: actions/upload-artifact@v1 + if: ${{ steps.parameters.build_upload_artifact }} + with: + name: sycl_linux_${{ fromJSON(needs.configure.outputs.params).build_artifact_suffix }} + path: llvm_sycl.tar.gz + - name: Cleanup + if: always() + run: rm -rf $GITHUB_WORKSPACE/* + diff --git a/buildbot/configure.py b/buildbot/configure.py index 74733d3b99fe1..e30b5e860c9db 100644 --- a/buildbot/configure.py +++ b/buildbot/configure.py @@ -48,6 +48,9 @@ def do_configure(args): print("# Default CI configuration will be applied. #") print("#############################################") + # For clang-format and clang-tidy + llvm_enable_projects += ";clang-tools-extra" + # replace not append, so ARM ^ X86 if args.arm: llvm_targets_to_build = 'ARM;AArch64'