Files
llvm-mingw/.github/workflows/test-llvm.yml
T
Martin Storsjö 848bf53fe0 github: Pass -D__USE_MINGW_ANSI_STDIO=1 for test-llvm on x86
This is required for properly formatting long doubles on x86
with UCRT (which doesn't use the mingw builtin printfs by default).

This fixes running the LLVM testsuite on x86 after commit
9bf7d04c4386daf1ef0acf95782a59855c98474a in llvm-project.
2025-07-29 22:38:25 +03:00

105 lines
3.7 KiB
YAML

name: Run LLVM tests
on:
workflow_dispatch:
inputs:
ref:
description: 'Ref to extract from'
type: string
default: 'master'
pipeline_type:
description: 'Pipeline type'
required: true
default: 'push'
type: choice
options:
- push
- schedule
schedule:
- cron: '30 13 * * 0' # 13:30 UTC on Sundays
jobs:
prepare:
if: (github.event_name != 'schedule') || (github.repository == 'mstorsjo/llvm-mingw')
runs-on: ubuntu-latest
outputs:
LLVM_VERSION: ${{steps.get-parameters.outputs.LLVM_VERSION}}
steps:
- name: Download build parameters
uses: dawidd6/action-download-artifact@v10
with:
workflow: build.yml
workflow_conclusion: success
ref: ${{github.event_name == 'schedule' && 'master' || inputs.ref}}
event: ${{github.event_name == 'schedule' && 'schedule' || inputs.pipeline_type}}
name: parameters
- name: Get build parameters
id: get-parameters
run: |
cat parameters.txt >> $GITHUB_OUTPUT
cat $GITHUB_OUTPUT
test-llvm:
needs: [prepare]
strategy:
fail-fast: false
matrix:
arch:
- x86_64
- aarch64
runs-on: ${{startsWith(matrix.arch, 'a') && 'windows-11-arm' || 'windows-latest'}}
steps:
- name: Install dependencies
run: |
choco install ninja
- name: Download toolchain
uses: dawidd6/action-download-artifact@v10
with:
workflow: build.yml
workflow_conclusion: success
ref: ${{github.event_name == 'schedule' && 'master' || inputs.ref}}
event: ${{github.event_name == 'schedule' && 'schedule' || inputs.pipeline_type}}
name: windows-ucrt-${{matrix.arch}}-toolchain
- name: Unpack toolchain
run: |
Expand-Archive llvm-mingw-*.zip -DestinationPath .
del llvm-mingw-*.zip
mv llvm-mingw-* c:\llvm-mingw
echo "c:\llvm-mingw\bin" | Out-File -FilePath $Env:GITHUB_PATH -Encoding utf8 -Append
echo "c:\llvm-mingw\python\bin" | Out-File -FilePath $Env:GITHUB_PATH -Encoding utf8 -Append
echo "PYTHON_EXE=c:/llvm-mingw/python/bin/python3.exe" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
- uses: actions/checkout@v4
- name: Checkout llvm-project
env:
LLVM_VERSION: ${{needs.prepare.outputs.LLVM_VERSION}}
run: |
git config --global core.autocrlf false
bash -c "CHECKOUT_ONLY=1 ./build-llvm.sh"
# Not passing -DPython3_EXECUTABLE="$Env:PYTHON_EXE" here. The bundled Python doesn't normally have
# zlib enabled, which some tests require.
- name: Build the project and unittests
run: |
cd llvm-project
mkdir build
cd build
cmake ../llvm `
-G Ninja `
-DCMAKE_BUILD_TYPE=Release `
-DLLVM_HOST_TRIPLE=${{matrix.arch}}-w64-windows-gnu `
-DCMAKE_SYSTEM_PROCESSOR=${{matrix.arch}} `
-DCMAKE_SYSTEM_NAME=Windows `
-DLLVM_TARGETS_TO_BUILD="AArch64;X86" `
-DLLVM_ENABLE_PROJECTS="clang;lld;clang-tools-extra" `
-DLLVM_WINDOWS_PREFER_FORWARD_SLASH=OFF `
-DCMAKE_C_COMPILER=clang `
-DCMAKE_CXX_COMPILER=clang++ `
-DCMAKE_CXX_FLAGS="-D__USE_MINGW_ANSI_STDIO=${{startsWith(matrix.arch, 'a') && '0' || '1'}}" `
-DLLVM_LIT_ARGS="-v --time-tests"
ninja test-depends
cp c:\llvm-mingw\bin\libc++.dll bin
cp c:\llvm-mingw\bin\libunwind.dll bin
- name: Run tests
run: |
cd llvm-project
cd build
ninja check