Skip to content

[ci] Add ids workflow for checking llvm apis have been annotated with LLVM_ABI #67

[ci] Add ids workflow for checking llvm apis have been annotated with LLVM_ABI

[ci] Add ids workflow for checking llvm apis have been annotated with LLVM_ABI #67

Workflow file for this run

name: ids-check
on:
pull_request:
types:
- opened
- synchronize
- reopened
- closed
push:
branches:
- 'main'
- 'release/**'
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
cancel-in-progress: true
jobs:
build:
if: github.repository_owner == 'llvm'
name: ids-check
runs-on: windows-11-arm
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
repository: compnerd/ids
path: ${{ github.workspace }}/ids
fetch-depth: 0
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
path: ${{ github.workspace }}/llvm-project
fetch-depth: 2
- name: Install dependencies
shell: pwsh
run: |
Invoke-WebRequest -Uri "https://github.com/llvm/llvm-project/releases/download/llvmorg-20.1.8/clang+llvm-20.1.8-aarch64-pc-windows-msvc.tar.xz" -OutFile "clang20.tar.xz"
& "C:\Program Files\Git\usr\bin\tar.exe" -xf .\clang20.tar.xz
choco install visualstudio2022community
pip install lit filecheck
- name: Configure and build minimal LLVM for use by ids
shell: bash
run: |
cmake -B C:/a/llvm-project/llvm-project/llvm-project/build/ \
-D CMAKE_BUILD_TYPE=Release \
-S C:/a/llvm-project/llvm-project/llvm-project/llvm/ \
-D LLVM_ENABLE_PROJECTS=clang \
-D CMAKE_C_COMPILER=clang \
-D CMAKE_CXX_COMPILER=clang++ \
-D LLVM_TARGETS_TO_BUILD="host" \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
-G Ninja
cd C:/a/llvm-project/llvm-project/llvm-project/build/
ninja -t targets all | grep "CommonTableGen: phony$" | grep -v "/" | sed 's/:.*//'
- name: Configure ids
shell: bash
run: |
cmake -B C:/a/llvm-project/llvm-project/ids/build/ \
-S C:/a/llvm-project/llvm-project/ids/ \
-D CMAKE_BUILD_TYPE=Release \
-D CMAKE_C_COMPILER=clang \
-D CMAKE_CXX_COMPILER=clang++ \
-D CMAKE_EXE_LINKER_FLAGS=-fuse-ld=lld \
-D LLVM_DIR="C:/a/llvm-project/llvm-project/clang+llvm-20.1.8-aarch64-pc-windows-msvc/lib/cmake/llvm/" \
-D Clang_DIR="C:/a/llvm-project/llvm-project/clang+llvm-20.1.8-aarch64-pc-windows-msvc/lib/cmake/clang/" \
-D FILECHECK_EXECUTABLE=$(which filecheck) \
-D LIT_EXECUTABLE=$(which lit) \
-G Ninja
- name: Build ids
shell: bash
run: |
cmake --build C:/a/llvm-project/llvm-project/ids/build \
--config Release \
--parallel $(nproc --all)
- name: Run ids over compilation database
shell: bash
run: |
cd C:/a/llvm-project/llvm-project/llvm-project
export H_OR_CPP_FILES_CHANGED_LAST_COMMIT=$(git diff --name-only HEAD~1 HEAD -- 'llvm/include/llvm/**/*.h' ':!llvm/include/llvm/Debuginfod/' ':!llvm/include/llvm/Demangle/' )
if [ ! -z "${H_OR_CPP_FILES_CHANGED_LAST_COMMIT}" ]; then
for file in $H_OR_CPP_FILES_CHANGED_LAST_COMMIT; do
${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --export-macro=LLVM_ABI --include-header="llvm/Support/Compiler.h" --extra-arg="-DLLVM_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
done
fi
export H_OR_CPP_FILES_CHANGED_LAST_COMMIT=$(git diff --name-only HEAD~1 HEAD -- 'llvm/include/llvm-c/**/*.h' )
if [ ! -z "${H_OR_CPP_FILES_CHANGED_LAST_COMMIT}" ]; then
for file in $H_OR_CPP_FILES_CHANGED_LAST_COMMIT; do
${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --export-macro=LLVM_C_ABI --include-header="llvm-c/Visibility.h" --extra-arg="-DLLVM_C_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
done
fi
export H_OR_CPP_FILES_CHANGED_LAST_COMMIT=$(git diff --name-only HEAD~1 HEAD -- 'llvm/include/llvm/Demangle/**/*.h' )
if [ ! -z "${H_OR_CPP_FILES_CHANGED_LAST_COMMIT}" ]; then
for file in $H_OR_CPP_FILES_CHANGED_LAST_COMMIT; do
${{ github.workspace }}/ids/build/bin/idt -p ${{ github.workspace }}/llvm-project/build/compile_commands.json --export-macro=DEMANGLE_ABI --include-header="llvm/Demangle/Visibility.h" --extra-arg="-DEMANGLE_ABI=__attribute__((visibility(\"default\")))" --extra-arg="-Wno-macro-redefined" $file
done
fi