# Avoid lengthy LLVM rebuilds on each newly pushed branch. Pull requests will # be built anyway. trigger: - release - dev jobs: - job: Build timeoutInMinutes: 240 # 4h pool: vmImage: 'VS2017-Win2016' steps: - task: GoTool@0 inputs: version: '1.16' - checkout: self fetchDepth: 1 - task: Cache@2 displayName: Cache LLVM source inputs: key: llvm-source-11-windows-v1 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-11-windows-v4 path: llvm-build - task: Bash@3 displayName: Build LLVM inputs: targetType: inline script: | if [ ! -f llvm-build/lib/liblldELF.a ] then # install dependencies choco install ninja # hack ninja to use fewer jobs echo -e 'C:\\ProgramData\\Chocolatey\\bin\\ninja -j4 %*' > /usr/bin/ninja.bat # build! make llvm-build fi - task: Bash@3 displayName: Install QEMU inputs: targetType: inline script: choco install qemu --version=2020.06.12 - task: CacheBeta@0 displayName: Cache wasi-libc sysroot inputs: key: wasi-libc-sysroot-v4 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 XTENSA=0