
This means that it will be possible to generate a Darwin binary on any platform (Windows, Linux, and MacOS of course), including CGo. Of course, the resulting binaries can only run on MacOS itself. The binary links against libSystem.dylib, which is a shared library. The macos-minimal-sdk repository contains open source header files and generated symbol stubs so we can generate a stub libSystem.dylib without copying any closed source code.
97 строки
3 КиБ
YAML
97 строки
3 КиБ
YAML
name: Windows
|
|
|
|
on:
|
|
pull_request:
|
|
push:
|
|
branches:
|
|
- dev
|
|
- release
|
|
|
|
jobs:
|
|
build-windows:
|
|
runs-on: windows-2019
|
|
steps:
|
|
- name: Install Go
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: '1.17'
|
|
- uses: MinoruSekine/setup-scoop@v1
|
|
- name: Install Dependencies
|
|
shell: bash
|
|
run: |
|
|
scoop install ninja binaryen
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
with:
|
|
submodules: true
|
|
- name: Cache Go
|
|
uses: actions/cache@v2
|
|
with:
|
|
key: go-cache-windows-v1-${{ hashFiles('go.mod') }}
|
|
path: |
|
|
~/AppData/Local/go-build
|
|
~/go/pkg/mod
|
|
- name: Cache LLVM source
|
|
uses: actions/cache@v2
|
|
id: cache-llvm-source
|
|
with:
|
|
key: llvm-source-13-windows-v1
|
|
path: |
|
|
llvm-project/clang/lib/Headers
|
|
llvm-project/clang/include
|
|
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@v2
|
|
id: cache-llvm-build
|
|
with:
|
|
key: llvm-build-13-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
|
|
# 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@v2
|
|
id: cache-wasi-libc
|
|
with:
|
|
key: wasi-libc-sysroot-v2
|
|
path: lib/wasi-libc/sysroot
|
|
- name: Build wasi-libc
|
|
if: steps.cache-wasi-libc.outputs.cache-hit != 'true'
|
|
run: make wasi-libc
|
|
- name: Test TinyGo
|
|
shell: bash
|
|
run: make test GOTESTFLAGS="-v -short"
|
|
- name: Build TinyGo release tarball
|
|
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@v2
|
|
with:
|
|
name: release-double-zipped
|
|
path: build/release/release.zip
|
|
- name: Smoke tests
|
|
shell: bash
|
|
run: make smoketest TINYGO=$(PWD)/build/tinygo AVR=0 XTENSA=0
|
|
- name: Test stdlib packages
|
|
run: make tinygo-test
|