|
|
|
version: 2.1
|
|
|
|
|
|
|
|
commands:
|
|
|
|
submodules:
|
|
|
|
steps:
|
|
|
|
- run:
|
|
|
|
name: "Pull submodules"
|
|
|
|
command: git submodule update --init
|
|
|
|
apt-dependencies:
|
|
|
|
parameters:
|
|
|
|
llvm:
|
|
|
|
type: string
|
|
|
|
steps:
|
|
|
|
- run:
|
|
|
|
name: "Install apt dependencies"
|
|
|
|
command: |
|
|
|
|
echo 'deb http://apt.llvm.org/stretch/ llvm-toolchain-stretch<<parameters.llvm>> main' | sudo tee /etc/apt/sources.list.d/llvm.list
|
|
|
|
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add -
|
|
|
|
sudo apt-get update
|
|
|
|
sudo apt-get install \
|
|
|
|
llvm<<parameters.llvm>>-dev \
|
|
|
|
clang<<parameters.llvm>> \
|
|
|
|
libclang<<parameters.llvm>>-dev \
|
|
|
|
lld<<parameters.llvm>> \
|
|
|
|
gcc-arm-linux-gnueabihf \
|
|
|
|
gcc-aarch64-linux-gnu \
|
|
|
|
qemu-system-arm \
|
|
|
|
qemu-user \
|
|
|
|
gcc-avr \
|
|
|
|
avr-libc
|
|
|
|
install-node:
|
|
|
|
steps:
|
|
|
|
- run:
|
|
|
|
name: "Install node.js"
|
|
|
|
command: |
|
|
|
|
wget https://nodejs.org/dist/v10.15.1/node-v10.15.1-linux-x64.tar.xz
|
|
|
|
sudo tar -C /usr/local -xf node-v10.15.1-linux-x64.tar.xz
|
|
|
|
sudo ln -s /usr/local/node-v10.15.1-linux-x64/bin/node /usr/bin/node
|
|
|
|
rm node-v10.15.1-linux-x64.tar.xz
|
|
|
|
llvm-source-linux:
|
|
|
|
steps:
|
|
|
|
- restore_cache:
|
|
|
|
keys:
|
|
|
|
- llvm-source-9-v0
|
|
|
|
- run:
|
|
|
|
name: "Fetch LLVM source"
|
|
|
|
command: make llvm-source
|
|
|
|
- save_cache:
|
|
|
|
key: llvm-source-9-v0
|
|
|
|
paths:
|
|
|
|
- llvm-project
|
|
|
|
build-wasi-libc:
|
|
|
|
steps:
|
|
|
|
- restore_cache:
|
|
|
|
keys:
|
|
|
|
- wasi-libc-sysroot-v0
|
|
|
|
- run:
|
|
|
|
name: "Build wasi-libc"
|
|
|
|
command: make wasi-libc CLANG=$PWD/llvm-build/bin/clang LLVM_AR=$PWD/llvm-build/bin/llvm-ar LLVM_NM=$PWD/llvm-build/bin/llvm-nm
|
|
|
|
- save_cache:
|
|
|
|
key: wasi-libc-sysroot-v0
|
|
|
|
paths:
|
|
|
|
- lib/wasi-libc/sysroot
|
|
|
|
test-linux:
|
|
|
|
steps:
|
|
|
|
- checkout
|
|
|
|
- submodules
|
|
|
|
- apt-dependencies:
|
|
|
|
llvm: "-9"
|
|
|
|
- install-node
|
|
|
|
- restore_cache:
|
|
|
|
keys:
|
|
|
|
- go-cache-v2-{{ checksum "go.mod" }}-{{ .Environment.CIRCLE_PREVIOUS_BUILD_NUM }}
|
|
|
|
- go-cache-v2-{{ checksum "go.mod" }}
|
|
|
|
- llvm-source-linux
|
|
|
|
- run: go install .
|
|
|
|
- restore_cache:
|
|
|
|
keys:
|
|
|
|
- wasi-libc-sysroot-systemclang-v0
|
|
|
|
- run: make wasi-libc
|
|
|
|
- save_cache:
|
|
|
|
key: wasi-libc-sysroot-systemclang-v0
|
|
|
|
paths:
|
|
|
|
- lib/wasi-libc/sysroot
|
|
|
|
- run: go test -v ./cgo ./compileopts ./interp ./transform .
|
|
|
|
- run: make gen-device -j4
|
|
|
|
- run: make smoketest
|
|
|
|
- save_cache:
|
|
|
|
key: go-cache-v2-{{ checksum "go.mod" }}-{{ .Environment.CIRCLE_BUILD_NUM }}
|
|
|
|
paths:
|
|
|
|
- ~/.cache/go-build
|
|
|
|
- ~/.cache/tinygo
|
|
|
|
- /go/pkg/mod
|
|
|
|
- run: make fmt-check
|
|
|
|
assert-test-linux:
|
|
|
|
steps:
|
|
|
|
- checkout
|
|
|
|
- submodules
|
|
|
|
- run:
|
|
|
|
name: "Install apt dependencies"
|
|
|
|
command: |
|
|
|
|
sudo apt-get install \
|
|
|
|
gcc-arm-linux-gnueabihf \
|
|
|
|
binutils-arm-none-eabi \
|
|
|
|
libc6-dev-armel-cross \
|
|
|
|
gcc-aarch64-linux-gnu \
|
|
|
|
libc6-dev-arm64-cross \
|
|
|
|
qemu-system-arm \
|
|
|
|
qemu-user \
|
|
|
|
gcc-avr \
|
|
|
|
avr-libc
|
|
|
|
- install-node
|
|
|
|
- restore_cache:
|
|
|
|
keys:
|
|
|
|
- go-cache-v2-{{ checksum "go.mod" }}-{{ .Environment.CIRCLE_PREVIOUS_BUILD_NUM }}
|
|
|
|
- go-cache-v2-{{ checksum "go.mod" }}
|
|
|
|
- llvm-source-linux
|
|
|
|
- restore_cache:
|
|
|
|
keys:
|
|
|
|
- llvm-build-9-linux-v0-assert
|
|
|
|
- run:
|
|
|
|
name: "Build LLVM"
|
|
|
|
command: |
|
|
|
|
if [ ! -f llvm-build/lib/liblldELF.a ]
|
|
|
|
then
|
|
|
|
# install dependencies
|
|
|
|
sudo apt-get install cmake clang ninja-build
|
|
|
|
# make build faster
|
|
|
|
export CC=clang
|
|
|
|
export CXX=clang++
|
|
|
|
# hack ninja to use less jobs
|
|
|
|
echo -e '#!/bin/sh\n/usr/bin/ninja -j3 "$@"' > /go/bin/ninja
|
|
|
|
chmod +x /go/bin/ninja
|
|
|
|
# build!
|
|
|
|
make ASSERT=1 llvm-build
|
|
|
|
fi
|
|
|
|
- save_cache:
|
|
|
|
key: llvm-build-9-linux-v0-assert
|
|
|
|
paths:
|
|
|
|
llvm-build
|
|
|
|
- run: make ASSERT=1
|
|
|
|
- build-wasi-libc
|
|
|
|
- run:
|
|
|
|
name: "Test TinyGo"
|
|
|
|
command: make ASSERT=1 test
|
|
|
|
- save_cache:
|
|
|
|
key: go-cache-v2-{{ checksum "go.mod" }}-{{ .Environment.CIRCLE_BUILD_NUM }}
|
|
|
|
paths:
|
|
|
|
- ~/.cache/go-build
|
|
|
|
- ~/.cache/tinygo
|
|
|
|
- /go/pkg/mod
|
|
|
|
- run: make gen-device -j4
|
|
|
|
- run: make smoketest TINYGO=build/tinygo
|
|
|
|
build-linux:
|
|
|
|
steps:
|
|
|
|
- checkout
|
|
|
|
- submodules
|
|
|
|
- run:
|
|
|
|
name: "Install apt dependencies"
|
|
|
|
command: |
|
|
|
|
sudo apt-get install \
|
|
|
|
gcc-arm-linux-gnueabihf \
|
|
|
|
binutils-arm-none-eabi \
|
|
|
|
libc6-dev-armel-cross \
|
|
|
|
gcc-aarch64-linux-gnu \
|
|
|
|
libc6-dev-arm64-cross \
|
|
|
|
qemu-system-arm \
|
|
|
|
qemu-user \
|
|
|
|
gcc-avr \
|
|
|
|
avr-libc
|
|
|
|
- install-node
|
|
|
|
- restore_cache:
|
|
|
|
keys:
|
|
|
|
- go-cache-v2-{{ checksum "go.mod" }}-{{ .Environment.CIRCLE_PREVIOUS_BUILD_NUM }}
|
|
|
|
- go-cache-v2-{{ checksum "go.mod" }}
|
|
|
|
- llvm-source-linux
|
|
|
|
- restore_cache:
|
|
|
|
keys:
|
|
|
|
- llvm-build-9-linux-v0
|
|
|
|
- run:
|
|
|
|
name: "Build LLVM"
|
|
|
|
command: |
|
|
|
|
if [ ! -f llvm-build/lib/liblldELF.a ]
|
|
|
|
then
|
|
|
|
# install dependencies
|
|
|
|
sudo apt-get install cmake clang ninja-build
|
|
|
|
# make build faster
|
|
|
|
export CC=clang
|
|
|
|
export CXX=clang++
|
|
|
|
# hack ninja to use less jobs
|
|
|
|
echo -e '#!/bin/sh\n/usr/bin/ninja -j3 "$@"' > /go/bin/ninja
|
|
|
|
chmod +x /go/bin/ninja
|
|
|
|
# build!
|
|
|
|
make llvm-build
|
|
|
|
fi
|
|
|
|
- save_cache:
|
|
|
|
key: llvm-build-9-linux-v0
|
|
|
|
paths:
|
|
|
|
llvm-build
|
|
|
|
- build-wasi-libc
|
|
|
|
- run:
|
|
|
|
name: "Test TinyGo"
|
|
|
|
command: make test
|
|
|
|
- run:
|
|
|
|
name: "Build TinyGo release"
|
|
|
|
command: |
|
|
|
|
make release -j3
|
|
|
|
cp -p build/release.tar.gz /tmp/tinygo.linux-amd64.tar.gz
|
|
|
|
- store_artifacts:
|
|
|
|
path: /tmp/tinygo.linux-amd64.tar.gz
|
|
|
|
- save_cache:
|
|
|
|
key: go-cache-v2-{{ checksum "go.mod" }}-{{ .Environment.CIRCLE_BUILD_NUM }}
|
|
|
|
paths:
|
|
|
|
- ~/.cache/go-build
|
|
|
|
- ~/.cache/tinygo
|
|
|
|
- /go/pkg/mod
|
|
|
|
- run:
|
|
|
|
name: "Extract release tarball"
|
|
|
|
command: |
|
|
|
|
mkdir -p ~/lib
|
|
|
|
tar -C ~/lib -xf /tmp/tinygo.linux-amd64.tar.gz
|
|
|
|
ln -s ~/lib/tinygo/bin/tinygo /go/bin/tinygo
|
|
|
|
tinygo version
|
|
|
|
- run: make smoketest
|
|
|
|
build-macos:
|
|
|
|
steps:
|
|
|
|
- checkout
|
|
|
|
- submodules
|
|
|
|
- run:
|
|
|
|
name: "Install dependencies"
|
|
|
|
command: |
|
|
|
|
curl https://dl.google.com/go/go1.13.darwin-amd64.tar.gz -o go1.13.darwin-amd64.tar.gz
|
|
|
|
sudo tar -C /usr/local -xzf go1.13.darwin-amd64.tar.gz
|
|
|
|
ln -s /usr/local/go/bin/go /usr/local/bin/go
|
|
|
|
HOMEBREW_NO_AUTO_UPDATE=1 brew install qemu
|
|
|
|
- restore_cache:
|
|
|
|
keys:
|
|
|
|
- go-cache-macos-v2-{{ checksum "go.mod" }}-{{ .Environment.CIRCLE_PREVIOUS_BUILD_NUM }}
|
|
|
|
- go-cache-macos-v2-{{ checksum "go.mod" }}
|
|
|
|
- restore_cache:
|
|
|
|
keys:
|
|
|
|
- llvm-source-9-macos-v0
|
|
|
|
- run:
|
|
|
|
name: "Fetch LLVM source"
|
|
|
|
command: make llvm-source
|
|
|
|
- save_cache:
|
|
|
|
key: llvm-source-9-macos-v0
|
|
|
|
paths:
|
|
|
|
- llvm-project
|
|
|
|
- restore_cache:
|
|
|
|
keys:
|
|
|
|
- llvm-build-9-macos-v0
|
|
|
|
- run:
|
|
|
|
name: "Build LLVM"
|
|
|
|
command: |
|
|
|
|
if [ ! -f llvm-build/lib/liblldELF.a ]
|
|
|
|
then
|
|
|
|
# install dependencies
|
|
|
|
HOMEBREW_NO_AUTO_UPDATE=1 brew install cmake ninja
|
|
|
|
# build!
|
|
|
|
make llvm-build
|
|
|
|
fi
|
|
|
|
- save_cache:
|
|
|
|
key: llvm-build-9-macos-v0
|
|
|
|
paths:
|
|
|
|
llvm-build
|
|
|
|
- restore_cache:
|
|
|
|
keys:
|
|
|
|
- wasi-libc-sysroot-macos-v0
|
|
|
|
- run:
|
|
|
|
name: "Build wasi-libc"
|
|
|
|
command: make wasi-libc CLANG=$PWD/llvm-build/bin/clang LLVM_AR=$PWD/llvm-build/bin/llvm-ar LLVM_NM=$PWD/llvm-build/bin/llvm-nm
|
|
|
|
- save_cache:
|
|
|
|
key: wasi-libc-sysroot-macos-v0
|
|
|
|
paths:
|
|
|
|
- lib/wasi-libc/sysroot
|
|
|
|
- run:
|
|
|
|
name: "Test TinyGo"
|
|
|
|
command: make test
|
|
|
|
- run:
|
|
|
|
name: "Build TinyGo release"
|
|
|
|
command: |
|
|
|
|
make release -j3
|
|
|
|
cp -p build/release.tar.gz /tmp/tinygo.darwin-amd64.tar.gz
|
|
|
|
- store_artifacts:
|
|
|
|
path: /tmp/tinygo.darwin-amd64.tar.gz
|
|
|
|
- run:
|
|
|
|
name: "Extract release tarball"
|
|
|
|
command: |
|
|
|
|
mkdir -p ~/lib
|
|
|
|
tar -C /usr/local/opt -xf /tmp/tinygo.darwin-amd64.tar.gz
|
|
|
|
ln -s /usr/local/opt/tinygo/bin/tinygo /usr/local/bin/tinygo
|
|
|
|
tinygo version
|
|
|
|
- run:
|
|
|
|
name: "Download SiFive GNU toolchain"
|
|
|
|
command: |
|
|
|
|
curl -O https://static.dev.sifive.com/dev-tools/riscv64-unknown-elf-gcc-8.2.0-2019.05.3-x86_64-apple-darwin.tar.gz
|
|
|
|
sudo tar -C /usr/local --strip-components=1 -xf riscv64-unknown-elf-gcc-8.2.0-2019.05.3-x86_64-apple-darwin.tar.gz
|
|
|
|
- run: make smoketest AVR=0
|
|
|
|
- save_cache:
|
|
|
|
key: go-cache-macos-v2-{{ checksum "go.mod" }}-{{ .Environment.CIRCLE_BUILD_NUM }}
|
|
|
|
paths:
|
|
|
|
- ~/.cache/go-build
|
|
|
|
- ~/.cache/tinygo
|
|
|
|
- /go/pkg/mod
|
|
|
|
|
|
|
|
|
|
|
|
jobs:
|
|
|
|
test-llvm9-go111:
|
|
|
|
docker:
|
|
|
|
- image: circleci/golang:1.11-stretch
|
|
|
|
steps:
|
|
|
|
- test-linux
|
|
|
|
test-llvm9-go112:
|
|
|
|
docker:
|
|
|
|
- image: circleci/golang:1.12-stretch
|
|
|
|
steps:
|
|
|
|
- test-linux
|
|
|
|
test-llvm9-go113:
|
|
|
|
docker:
|
|
|
|
- image: circleci/golang:1.13-stretch
|
|
|
|
steps:
|
|
|
|
- test-linux
|
|
|
|
assert-test-linux:
|
|
|
|
docker:
|
|
|
|
- image: circleci/golang:1.13-stretch
|
|
|
|
steps:
|
|
|
|
- assert-test-linux
|
|
|
|
build-linux:
|
|
|
|
docker:
|
|
|
|
- image: circleci/golang:1.13-stretch
|
|
|
|
steps:
|
|
|
|
- build-linux
|
|
|
|
build-macos:
|
|
|
|
macos:
|
|
|
|
xcode: "10.1.0"
|
|
|
|
steps:
|
|
|
|
- build-macos
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
workflows:
|
|
|
|
test-all:
|
|
|
|
jobs:
|
|
|
|
- test-llvm9-go111
|
|
|
|
- test-llvm9-go112
|
|
|
|
- test-llvm9-go113
|
|
|
|
- build-linux
|
|
|
|
- build-macos
|
|
|
|
- assert-test-linux
|