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.
105 lines
3.7 KiB
YAML
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
|