diff --git a/.github/actions/build-opencl-clang/action.yml b/.github/actions/build-opencl-clang/action.yml new file mode 100644 index 00000000..43bb970e --- /dev/null +++ b/.github/actions/build-opencl-clang/action.yml @@ -0,0 +1,68 @@ +# ===--- +# Main opencl-clang building script +# ===--- + +name: Build opencl-clang +inputs: + ref_llvm: + description: 'LLVM ref to build with' + required: true + ref_translator: + description: 'SPIRV-LLVM-Translator ref to build with' + required: true + ref_opencl-clang: + description: 'opencl-clang ref to build with' + required: true + build_type: + description: 'Build type to pass to CMake' + required: false + default: Release + +runs: + using: 'composite' + steps: + + # Setup git credentials to make applying patches possible + - run: | + git config --global user.email "action@intel.com" + git config --global user.name "Action Bot" + shell: bash + + - name: Checkout LLVM + uses: actions/checkout@v3 + with: + repository: llvm/llvm-project + path: llvm-project + ref: ${{ inputs.ref_llvm }} + + - name: Checkout SPIRV-LLVM-Translator + uses: actions/checkout@v3 + with: + repository: KhronosGroup/SPIRV-LLVM-Translator + path: llvm-project/SPIRV-LLVM-Translator + ref: ${{ inputs.ref_translator }} + + - name: Checkout opencl-clang + uses: actions/checkout@v3 + with: + path: llvm-project/opencl-clang + ref: ${{ inputs.ref_opencl-clang }} + + - name: Configure + shell: bash + run: | + mkdir build && cd build + cmake ${{ github.workspace }}/llvm-project/llvm \ + -DLLVM_ENABLE_PROJECTS="clang" \ + -DLLVM_EXTERNAL_PROJECTS="llvm-spirv;opencl-clang" \ + -DLLVM_EXTERNAL_LLVM_SPIRV_SOURCE_DIR=${{ github.workspace }}/llvm-project/SPIRV-LLVM-Translator \ + -DLLVM_EXTERNAL_OPENCL_CLANG_SOURCE_DIR=${{ github.workspace }}/llvm-project/opencl-clang \ + -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} \ + -DLLVM_TARGETS_TO_BUILD="X86" \ + -G "Unix Makefiles" + + - name: Build + shell: bash + run: | + cd build + make opencl-clang -j8 diff --git a/.github/workflows/check-in-tree-build.yml b/.github/workflows/check-in-tree-build.yml deleted file mode 100644 index 029e6364..00000000 --- a/.github/workflows/check-in-tree-build.yml +++ /dev/null @@ -1,72 +0,0 @@ -name: In-tree build - -on: - push: - branches: - - 'ocl-open-*' - paths-ignore: # no need to check build for: - - 'docs/**' # documentation - - '**.md' # README - pull_request: - branches: - - 'ocl-open-*' - paths-ignore: # no need to check build for: - - 'docs/**' # documentation - - '**.md' # README - schedule: - # Weekly build on Mondays - # Ideally, we might want to simplify our regular nightly build as we - # probably don't need every configuration to be built every day: most of - # them are only necessary in pre-commits to avoid breakages - - cron: 0 0 * * 0 - -env: - LLVM_VERSION: 11 - -jobs: - build_and_test_linux: - name: Linux - strategy: - matrix: - build_type: [Release] - include: - - build_type: Release - fail-fast: false - runs-on: ubuntu-18.04 - steps: - - name: setup git config - run: | - git config --global user.email "<>" - git config --global user.name "GitHub Actions Bot" - - name: Checkout LLVM sources - uses: actions/checkout@v2 - with: - repository: llvm/llvm-project - ref: release/11.x - path: llvm-project - - name: Checkout the translator sources - uses: actions/checkout@v2 - with: - repository: KhronosGroup/SPIRV-LLVM-Translator - ref: llvm_release_110 - path: llvm-project/SPIRV-LLVM-Translator - - name: Checkout opencl-clang sources - uses: actions/checkout@v2 - with: - path: llvm-project/opencl-clang - - name: Configure - run: | - mkdir build && cd build - cmake ${{ github.workspace }}/llvm-project/llvm \ - -DLLVM_ENABLE_PROJECTS="clang" \ - -DLLVM_EXTERNAL_PROJECTS="llvm-spirv;opencl-clang" \ - -DLLVM_EXTERNAL_LLVM_SPIRV_SOURCE_DIR=${{ github.workspace }}/llvm-project/SPIRV-LLVM-Translator \ - -DLLVM_EXTERNAL_OPENCL_CLANG_SOURCE_DIR=${{ github.workspace }}/llvm-project/opencl-clang \ - -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ - -DLLVM_TARGETS_TO_BUILD="X86" \ - -G "Unix Makefiles" - - name: Build - run: | - cd build - - make opencl-clang -j2 diff --git a/.github/workflows/on-push-verification.yml b/.github/workflows/on-push-verification.yml new file mode 100644 index 00000000..ee0e04d8 --- /dev/null +++ b/.github/workflows/on-push-verification.yml @@ -0,0 +1,71 @@ +# ===--- +# Running on push & pull_request. +# This workflow parses the destination branch +# to choose correct dependencies revisions +# ===--- + +name: On push & pull-request verification +run-name: '${{ github.event_name }}: ${{ github.base_ref }} ${{ github.ref_name }}' # github.base_ref null for 'on: push' + +on: + push: + branches: + - master + - ocl-open-* + pull_request: + branches: + - master + - ocl-open-* + types: + - opened + - reopened + - synchronize # commit pushed to the PR + - ready_for_review # moved from draft state + +jobs: + + verify_default_branch: + name: Verify for `master` branch + # ref_name for 'on: push' + # base_ref for 'on: pull_request' + if: ${{ (github.event_name == 'push' && github.ref_name == 'master') || (github.event_name == 'pull_request' && github.base_ref == 'master') }} + runs-on: ubuntu-22.04 + steps: + + - name: Checkout opencl-clang sources for action files + uses: actions/checkout@v3 + + - name: Run build-opencl-clang action + uses: ./.github/actions/build-opencl-clang + with: + ref_llvm: main + ref_translator: main + ref_opencl-clang: ${{ github.ref }} + + verify_release_branch: + name: Verify for `ocl-open-*` release branch + # ref_name for 'on: push' + # base_ref for 'on: pull_request' + if: ${{ github.ref_name != 'master' && github.base_ref != 'master' }} + runs-on: ubuntu-22.04 + steps: + + - name: Checkout opencl-clang sources for action files + uses: actions/checkout@v3 + + # This step will fail when the branch naming scheme 'ocl-open-XXX' changes! + - name: Parse LLVM version from branch name + id: check-llvm-version + run: | + BRANCH="${{ github.base_ref }}" # on: pull_request, otherwise null + BRANCH=${BRANCH:-${{ github.ref_name }}} # on: push + LLVM_VERSION_LONG=$(echo $BRANCH | grep -oP '\d+') # Eg. 150 for LLVM 15 + LLVM_VERSION_SHORT=${LLVM_VERSION_LONG::-1} # Eg. 15 for LLVM 15 + echo "llvm_version=$LLVM_VERSION_SHORT" >> $GITHUB_OUTPUT + + - name: Run build-opencl-clang action + uses: ./.github/actions/build-opencl-clang + with: + ref_llvm: release/${{ steps.check-llvm-version.outputs.llvm_version }}.x + ref_translator: llvm_release_${{ steps.check-llvm-version.outputs.llvm_version }}0 + ref_opencl-clang: ${{ github.ref }}