
The Espressif fork of LLVM now has Xtensa support in the linker LLD. (This support was written mosly by me). This means we don't have to use the Espressif GNU toolchain anymore and makes installing TinyGo simpler. In the future, this also paves the way for ThinLTO support. Right now it is mostly just a way to simplify TinyGo installation and speed up CI slightly.
181 строка
5,2 КиБ
YAML
181 строка
5,2 КиБ
YAML
name: Windows
|
|
|
|
on:
|
|
pull_request:
|
|
push:
|
|
branches:
|
|
- dev
|
|
- release
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
build-windows:
|
|
runs-on: windows-2022
|
|
steps:
|
|
- uses: brechtm/setup-scoop@v2
|
|
with:
|
|
scoop_update: 'false'
|
|
- name: Install Dependencies
|
|
shell: bash
|
|
run: |
|
|
scoop install ninja binaryen
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
with:
|
|
submodules: true
|
|
- name: Install Go
|
|
uses: actions/setup-go@v3
|
|
with:
|
|
go-version: '1.19'
|
|
cache: true
|
|
- name: Cache LLVM source
|
|
uses: actions/cache@v3
|
|
id: cache-llvm-source
|
|
with:
|
|
key: llvm-source-15-windows-v2
|
|
path: |
|
|
llvm-project/clang/lib/Headers
|
|
llvm-project/clang/include
|
|
llvm-project/compiler-rt
|
|
llvm-project/lld/include
|
|
llvm-project/llvm/include
|
|
- name: Download LLVM source
|
|
if: steps.cache-llvm-source.outputs.cache-hit != 'true'
|
|
run: make llvm-source
|
|
- name: Cache LLVM build
|
|
uses: actions/cache@v3
|
|
id: cache-llvm-build
|
|
with:
|
|
key: llvm-build-15-windows-v2
|
|
path: llvm-build
|
|
- name: Build LLVM
|
|
if: steps.cache-llvm-build.outputs.cache-hit != 'true'
|
|
shell: bash
|
|
run: |
|
|
# fetch LLVM source
|
|
rm -rf llvm-project
|
|
make llvm-source
|
|
# build!
|
|
make llvm-build CCACHE=OFF
|
|
# Remove unnecessary object files (to reduce cache size).
|
|
find llvm-build -name CMakeFiles -prune -exec rm -r '{}' \;
|
|
- name: Cache wasi-libc sysroot
|
|
uses: actions/cache@v3
|
|
id: cache-wasi-libc
|
|
with:
|
|
key: wasi-libc-sysroot-v4
|
|
path: lib/wasi-libc/sysroot
|
|
- name: Build wasi-libc
|
|
if: steps.cache-wasi-libc.outputs.cache-hit != 'true'
|
|
run: make wasi-libc
|
|
- name: Install wasmtime
|
|
run: |
|
|
scoop install wasmtime
|
|
- name: Test TinyGo
|
|
shell: bash
|
|
run: make test GOTESTFLAGS="-v -short"
|
|
- name: Build TinyGo release tarball
|
|
shell: bash
|
|
run: make build/release -j4
|
|
- name: Make release artifact
|
|
shell: bash
|
|
working-directory: build/release
|
|
run: 7z -tzip a release.zip tinygo
|
|
- name: Publish release artifact
|
|
# Note: this release artifact is double-zipped, see:
|
|
# https://github.com/actions/upload-artifact/issues/39
|
|
# We can essentially pick one of these:
|
|
# - have a dobule-zipped artifact when downloaded from the UI
|
|
# - have a very slow artifact upload
|
|
# We're doing the former here, to keep artifact uploads fast.
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: release-double-zipped
|
|
path: build/release/release.zip
|
|
|
|
smoke-test-windows:
|
|
runs-on: windows-2022
|
|
needs: build-windows
|
|
steps:
|
|
- uses: brechtm/setup-scoop@v2
|
|
with:
|
|
scoop_update: 'false'
|
|
- name: Install Dependencies
|
|
shell: bash
|
|
run: |
|
|
scoop install binaryen
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
- name: Install Go
|
|
uses: actions/setup-go@v3
|
|
with:
|
|
go-version: '1.19'
|
|
cache: true
|
|
- name: Download TinyGo build
|
|
uses: actions/download-artifact@v2
|
|
with:
|
|
name: release-double-zipped
|
|
path: build/
|
|
- name: Unzip TinyGo build
|
|
shell: bash
|
|
working-directory: build
|
|
run: 7z x release.zip -r
|
|
- name: Smoke tests
|
|
shell: bash
|
|
run: make smoketest TINYGO=$(PWD)/build/tinygo/bin/tinygo AVR=0
|
|
|
|
stdlib-test-windows:
|
|
runs-on: windows-2022
|
|
needs: build-windows
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
- name: Install Go
|
|
uses: actions/setup-go@v3
|
|
with:
|
|
go-version: '1.19'
|
|
cache: true
|
|
- name: Download TinyGo build
|
|
uses: actions/download-artifact@v2
|
|
with:
|
|
name: release-double-zipped
|
|
path: build/
|
|
- name: Unzip TinyGo build
|
|
shell: bash
|
|
working-directory: build
|
|
run: 7z x release.zip -r
|
|
- name: Test stdlib packages
|
|
run: make tinygo-test TINYGO=$(PWD)/build/tinygo/bin/tinygo
|
|
|
|
stdlib-wasi-test-windows:
|
|
runs-on: windows-2022
|
|
needs: build-windows
|
|
steps:
|
|
- uses: brechtm/setup-scoop@v2
|
|
with:
|
|
scoop_update: 'false'
|
|
- name: Install Dependencies
|
|
shell: bash
|
|
run: |
|
|
scoop install binaryen wasmtime
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
- name: Install Go
|
|
uses: actions/setup-go@v3
|
|
with:
|
|
go-version: '1.19'
|
|
cache: true
|
|
- name: Download TinyGo build
|
|
uses: actions/download-artifact@v2
|
|
with:
|
|
name: release-double-zipped
|
|
path: build/
|
|
- name: Unzip TinyGo build
|
|
shell: bash
|
|
working-directory: build
|
|
run: 7z x release.zip -r
|
|
- name: Test stdlib packages on wasi
|
|
run: make tinygo-test-wasi-fast TINYGO=$(PWD)/build/tinygo/bin/tinygo
|