Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
150 changes: 150 additions & 0 deletions .github/workflows/sycl_linux_build_and_test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
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

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\":\"$GITHUB_WORKSPACE\",
\"build_cache_suffix\":\"default\",
\"build_cache_size\":\"2G\",
\"build_configure_extra_args\":\"\",
\"build_artifact_suffix\":\"default\"
}"
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 }}
volumes:
- ${{ github.workspace }}:${{ github.workspace }}
steps:
- uses: actions/checkout@v2
with:
path: src
- name: Setup Cache
uses: actions/cache@v2
if: ${{ steps.parameters.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()
# GitHub Actions requires Docker containers to use default root user to
# run scripts. It also overrides default entry point for containers. Below
# is a workaround, that switches users for tests.
run: |
/docker_entrypoint.sh cmake --build $GITHUB_WORKSPACE/build --target check-llvm
- name: check-clang
if: always()
run: |
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
run: cmake --build $GITHUB_WORKSPACE/build --target install
- name: Pack
run: tar -czvf llvm_sycl.tar.gz -C $GITHUB_WORKSPACE/install .
- name: Upload artifacts
uses: actions/upload-artifact@v1
with:
name: sycl_linux_${{ fromJSON(needs.configure.outputs.params).build_artifact_suffix }}
path: llvm_sycl.tar.gz

3 changes: 3 additions & 0 deletions buildbot/configure.py
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand Down