cgo: support function-like macros #5838
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | |
outputs: | |
version: ${{ steps.version.outputs.version }} | |
steps: | |
- name: Configure pagefile | |
uses: al-cheb/configure-pagefile-action@v1.4 | |
with: | |
minimum-size: 8GB | |
maximum-size: 24GB | |
disk-root: "C:" | |
- uses: brechtm/setup-scoop@v2 | |
with: | |
scoop_update: 'false' | |
- name: Install Dependencies | |
shell: bash | |
run: | | |
scoop install ninja binaryen | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Extract TinyGo version | |
id: version | |
shell: bash | |
run: ./.github/workflows/tinygo-extract-version.sh | tee -a "$GITHUB_OUTPUT" | |
- name: Install Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.23' | |
cache: true | |
- name: Restore cached LLVM source | |
uses: actions/cache/restore@v4 | |
id: cache-llvm-source | |
with: | |
key: llvm-source-18-windows-v1 | |
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: Save cached LLVM source | |
uses: actions/cache/save@v4 | |
if: steps.cache-llvm-source.outputs.cache-hit != 'true' | |
with: | |
key: ${{ steps.cache-llvm-source.outputs.cache-primary-key }} | |
path: | | |
llvm-project/clang/lib/Headers | |
llvm-project/clang/include | |
llvm-project/compiler-rt | |
llvm-project/lld/include | |
llvm-project/llvm/include | |
- name: Restore cached LLVM build | |
uses: actions/cache/restore@v4 | |
id: cache-llvm-build | |
with: | |
key: llvm-build-18-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: Save cached LLVM build | |
uses: actions/cache/save@v4 | |
if: steps.cache-llvm-build.outputs.cache-hit != 'true' | |
with: | |
key: ${{ steps.cache-llvm-build.outputs.cache-primary-key }} | |
path: llvm-build | |
- name: Cache wasi-libc sysroot | |
uses: actions/cache@v4 | |
id: cache-wasi-libc | |
with: | |
key: wasi-libc-sysroot-v5 | |
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@14.0.4 | |
- name: make gen-device | |
run: make -j3 gen-device | |
- name: Test TinyGo | |
shell: bash | |
run: make test GOTESTFLAGS="-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 tinygo${{ steps.version.outputs.version }}.windows-amd64.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@v4 | |
with: | |
name: windows-amd64-double-zipped-${{ steps.version.outputs.version }} | |
path: build/release/tinygo${{ steps.version.outputs.version }}.windows-amd64.zip | |
smoke-test-windows: | |
runs-on: windows-2022 | |
needs: build-windows | |
steps: | |
- name: Configure pagefile | |
uses: al-cheb/configure-pagefile-action@v1.4 | |
with: | |
minimum-size: 8GB | |
maximum-size: 24GB | |
disk-root: "C:" | |
- uses: brechtm/setup-scoop@v2 | |
with: | |
scoop_update: 'false' | |
- name: Install Dependencies | |
shell: bash | |
run: | | |
scoop install binaryen | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.23' | |
cache: true | |
- name: Download TinyGo build | |
uses: actions/download-artifact@v4 | |
with: | |
name: windows-amd64-double-zipped-${{ needs.build-windows.outputs.version }} | |
path: build/ | |
- name: Unzip TinyGo build | |
shell: bash | |
working-directory: build | |
run: 7z x tinygo*.windows-amd64.zip -r | |
- name: Smoke tests | |
shell: bash | |
run: make smoketest TINYGO=$(PWD)/build/tinygo/bin/tinygo | |
stdlib-test-windows: | |
runs-on: windows-2022 | |
needs: build-windows | |
steps: | |
- name: Configure pagefile | |
uses: al-cheb/configure-pagefile-action@v1.4 | |
with: | |
minimum-size: 8GB | |
maximum-size: 24GB | |
disk-root: "C:" | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.23' | |
cache: true | |
- name: Download TinyGo build | |
uses: actions/download-artifact@v4 | |
with: | |
name: windows-amd64-double-zipped-${{ needs.build-windows.outputs.version }} | |
path: build/ | |
- name: Unzip TinyGo build | |
shell: bash | |
working-directory: build | |
run: 7z x tinygo*.windows-amd64.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: | |
- name: Configure pagefile | |
uses: al-cheb/configure-pagefile-action@v1.4 | |
with: | |
minimum-size: 8GB | |
maximum-size: 24GB | |
disk-root: "C:" | |
- uses: brechtm/setup-scoop@v2 | |
with: | |
scoop_update: 'false' | |
- name: Install Dependencies | |
shell: bash | |
run: | | |
scoop install binaryen && scoop install wasmtime@14.0.4 | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: '1.23' | |
cache: true | |
- name: Download TinyGo build | |
uses: actions/download-artifact@v4 | |
with: | |
name: windows-amd64-double-zipped-${{ needs.build-windows.outputs.version }} | |
path: build/ | |
- name: Unzip TinyGo build | |
shell: bash | |
working-directory: build | |
run: 7z x tinygo*.windows-amd64.zip -r | |
- name: Test stdlib packages on wasip1 | |
run: make tinygo-test-wasip1-fast TINYGO=$(PWD)/build/tinygo/bin/tinygo |