name: libclang ABI Tests

on:
  push:
    branches:
      - 'release/**'
    paths:
      - 'clang/**'
      - '.github/workflows/libclang-abi-tests.yml'
  pull_request:
    paths:
      - 'clang/**'
      - '.github/workflows/libclang-abi-tests.yml'

jobs:
  abi-dump-setup:
    runs-on: ubuntu-latest
    outputs:
      BASELINE_REF: ${{ steps.vars.outputs.BASELINE_REF }}
      ABI_HEADERS: ${{ steps.vars.outputs.ABI_HEADERS }}
      ABI_LIBS: ${{ steps.vars.outputs.ABI_LIBS }}
      BASELINE_VERSION_MAJOR: ${{ steps.vars.outputs.BASELINE_VERSION_MAJOR }}
      LLVM_VERSION_MAJOR: ${{ steps.version.outputs.LLVM_VERSION_MAJOR }}
      LLVM_VERSION_MINOR: ${{ steps.version.outputs.LLVM_VERSION_MINOR }}
      LLVM_VERSION_PATCH: ${{ steps.version.outputs.LLVM_VERSION_PATCH }}
    steps:
      - name: Checkout source
        uses: actions/checkout@v1
        with:
          fetch-depth: 1

      - name: Get LLVM version
        id: version
        uses: llvm/actions/get-llvm-version@main

      - name: Setup Variables
        id: vars
        run: |
          if [ ${{ steps.version.outputs.LLVM_VERSION_MINOR }} -ne 0 -o ${{ steps.version.outputs.LLVM_VERSION_PATCH }} -eq 0 ]; then
            echo ::set-output name=BASELINE_VERSION_MAJOR::$(( ${{ steps.version.outputs.LLVM_VERSION_MAJOR }} - 1))
            echo ::set-output name=ABI_HEADERS::clang-c
            echo ::set-output name=ABI_LIBS::libclang.so
          else
            echo ::set-output name=BASELINE_VERSION_MAJOR::${{ steps.version.outputs.LLVM_VERSION_MAJOR }}
            echo ::set-output name=ABI_HEADERS::.
            echo ::set-output name=ABI_LIBS::libclang.so libclang-cpp.so
          fi

  abi-dump:
    needs: abi-dump-setup
    runs-on: ubuntu-latest
    strategy:
      matrix:
        name:
          - build-baseline
          - build-latest
        include:
          - name: build-baseline
            llvm_version_major: ${{ needs.abi-dump-setup.outputs.BASELINE_VERSION_MAJOR }}
            ref: llvmorg-${{ needs.abi-dump-setup.outputs.BASELINE_VERSION_MAJOR }}.0.0
            repo: llvm/llvm-project
          - name: build-latest
            llvm_version_major: ${{ needs.abi-dump-setup.outputs.LLVM_VERSION_MAJOR }}
            ref: ${{ github.sha }}
            repo: ${{ github.repository }}
    steps:
    - name: Install Ninja
      uses: llvm/actions/install-ninja@main
    - name: Install abi-compliance-checker
      run: |
        sudo apt-get install abi-dumper autoconf pkg-config
    - name: Install universal-ctags
      run: |
        git clone https://github.com/universal-ctags/ctags.git
        cd ctags
        ./autogen.sh
        ./configure
        sudo make install
    - name: Download source code
      uses: llvm/actions/get-llvm-project-src@main
      with:
        ref: ${{ matrix.ref }}
        repo: ${{ matrix.repo }}
    - name: Configure
      run: |
        mkdir install
        cmake -B build -S llvm -G Ninja -DLLVM_ENABLE_PROJECTS=clang -DCMAKE_BUILD_TYPE=Debug -DLLVM_TARGETS_TO_BUILD="" -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON -DCMAKE_C_FLAGS_DEBUG="-g -Og" -DCMAKE_CXX_FLAGS_DEBUG="-g -Og" -DCMAKE_INSTALL_PREFIX=`pwd`/install llvm
    - name: Build
      run: ninja -C build/ ${{ needs.abi-dump-setup.outputs.ABI_LIBS }} install-clang-headers
    - name: Dump ABI
      run: |
        parallel abi-dumper -lver ${{ matrix.ref }} -skip-cxx -public-headers ./install/include/${{ needs.abi-dump-setup.outputs.ABI_HEADERS }} -o {}-${{ matrix.ref }}.abi ./build/lib/{} ::: ${{ needs.abi-dump-setup.outputs.ABI_LIBS }}
        for lib in ${{ needs.abi-dump-setup.outputs.ABI_LIBS }}; do
          # Remove symbol versioning from dumps, so we can compare across major versions.
          sed -i 's/LLVM_${{ matrix.llvm_version_major }}/LLVM_NOVERSION/' $lib-${{ matrix.ref }}.abi
          tar -czf $lib-${{ matrix.ref }}.abi.tar.gz $lib-${{ matrix.ref }}.abi
        done
    - name: Upload ABI file
      uses: actions/upload-artifact@v2
      with:
        name: ${{ matrix.name }}
        path: "*${{ matrix.ref }}.abi.tar.gz"

  abi-compare:
    runs-on: ubuntu-latest
    needs:
      - abi-dump-setup
      - abi-dump
    steps:
      - name: Download baseline
        uses: actions/download-artifact@v1
        with:
          name: build-baseline
      - name: Download latest
        uses: actions/download-artifact@v1
        with:
          name: build-latest

      - name: Install abi-compliance-checker
        run: sudo apt-get install abi-compliance-checker
      - name: Compare ABI
        run: |
          for lib in ${{ needs.abi-dump-setup.outputs.ABI_LIBS }}; do
            abi-compliance-checker -lib $lib -old build-baseline/$lib*.abi.tar.gz -new build-latest/$lib*.abi.tar.gz
          done
      - name: Upload ABI Comparison
        if: always()
        uses: actions/upload-artifact@v2
        with:
          name: compat-report-${{ github.sha }}
          path: compat_reports/

