# Avoid lengthy LLVM rebuilds on each newly pushed branch. Pull requests will # be built anyway. trigger: - master - dev jobs: - job: Build timeoutInMinutes: 240 # 4h pool: vmImage: 'VS2017-Win2016' steps: - task: GoTool@0 inputs: version: '1.14.1' - checkout: self - task: CacheBeta@0 displayName: Cache LLVM source inputs: key: llvm-source-10-windows-v0 path: llvm-project - task: Bash@3 displayName: Download LLVM source inputs: targetType: inline script: make llvm-source - task: CacheBeta@0 displayName: Cache LLVM build inputs: key: llvm-build-10-windows-v0 path: llvm-build - task: Bash@3 displayName: Build LLVM inputs: targetType: inline script: | if [ ! -f llvm-build/lib/liblldELF.a ] then choco install ninja make llvm-build fi - task: Bash@3 displayName: Install QEMU inputs: targetType: inline script: choco install qemu - task: CacheBeta@0 displayName: Cache wasi-libc sysroot inputs: key: wasi-libc-sysroot-v2 path: lib/wasi-libc/sysroot - task: Bash@3 displayName: Build wasi-libc inputs: targetType: inline script: PATH=/usr/bin:$PATH make wasi-libc - task: Bash@3 displayName: Test TinyGo inputs: targetType: inline script: | export PATH="$PATH:./llvm-build/bin:/c/Program Files/qemu" unset GOROOT make test - task: Bash@3 displayName: Build TinyGo release tarball inputs: targetType: inline script: | export PATH="$PATH:./llvm-build/bin:/c/Program Files/qemu" unset GOROOT make build/release -j4 - publish: $(System.DefaultWorkingDirectory)/build/release/tinygo displayName: Publish zip as artifact artifact: tinygo - task: Bash@3 displayName: Smoke tests inputs: targetType: inline script: | export PATH="$PATH:./llvm-build/bin:/c/Program Files/qemu" unset GOROOT make smoketest TINYGO=build/tinygo AVR=0