aboutsummaryrefslogtreecommitdiffhomepage
path: root/.github/workflows/windows.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/windows.yml')
-rw-r--r--.github/workflows/windows.yml85
1 files changed, 85 insertions, 0 deletions
diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml
new file mode 100644
index 000000000..7dc5adad0
--- /dev/null
+++ b/.github/workflows/windows.yml
@@ -0,0 +1,85 @@
+name: Windows
+
+on: push
+
+jobs:
+ build-windows:
+ runs-on: windows-2016
+ steps:
+ - name: Install Go
+ uses: actions/setup-go@v2
+ with:
+ go-version: '1.17'
+ - name: Install QEMU
+ shell: bash
+ run: |
+ choco install qemu --version=2020.06.12
+ echo "C:\Program Files\QEMU" >> $GITHUB_PATH
+ - name: Checkout
+ uses: actions/checkout@v2
+ with:
+ submodules: true
+ - name: Cache LLVM source
+ uses: actions/cache@v2
+ id: cache-llvm-source
+ with:
+ key: llvm-source-11-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-11-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
+ # install dependencies
+ choco install ninja
+ # 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-v1
+ 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
+ - 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=build/tinygo AVR=0 XTENSA=0