Этот коммит содержится в:
Ayke van Laethem 2019-11-01 21:53:21 +01:00 коммит произвёл Ayke
родитель 172efc26a7
коммит 118af9df69
11 изменённых файлов: 57 добавлений и 51 удалений

Просмотреть файл

@ -44,12 +44,12 @@ commands:
steps: steps:
- restore_cache: - restore_cache:
keys: keys:
- llvm-source-8-v5 - llvm-source-9-v0
- run: - run:
name: "Fetch LLVM source" name: "Fetch LLVM source"
command: make llvm-source command: make llvm-source
- save_cache: - save_cache:
key: llvm-source-8-v5 key: llvm-source-9-v0
paths: paths:
- llvm-project - llvm-project
test-linux: test-linux:
@ -57,7 +57,7 @@ commands:
- checkout - checkout
- submodules - submodules
- apt-dependencies: - apt-dependencies:
llvm: "-8" llvm: "-9"
- install-node - install-node
- restore_cache: - restore_cache:
keys: keys:
@ -101,7 +101,7 @@ commands:
- llvm-source-linux - llvm-source-linux
- restore_cache: - restore_cache:
keys: keys:
- llvm-build-8-linux-v7-assert - llvm-build-9-linux-v0-assert
- run: - run:
name: "Build LLVM" name: "Build LLVM"
command: | command: |
@ -119,15 +119,15 @@ commands:
make ASSERT=1 llvm-build make ASSERT=1 llvm-build
fi fi
- save_cache: - save_cache:
key: llvm-build-8-linux-v7-assert key: llvm-build-9-linux-v0-assert
paths: paths:
llvm-build llvm-build
- run: - run:
name: "Create LLVM symlinks" name: "Create LLVM symlinks"
command: | command: |
ln -s $PWD/llvm-build/bin/clang-8 /go/bin/clang-8 ln -s $PWD/llvm-build/bin/clang-9 /go/bin/clang-9
ln -s $PWD/llvm-build/bin/ld.lld /go/bin/ld.lld-8 ln -s $PWD/llvm-build/bin/ld.lld /go/bin/ld.lld-9
ln -s $PWD/llvm-build/bin/wasm-ld /go/bin/wasm-ld-8 ln -s $PWD/llvm-build/bin/wasm-ld /go/bin/wasm-ld-9
- run: make ASSERT=1 - run: make ASSERT=1
- run: - run:
name: "Test TinyGo" name: "Test TinyGo"
@ -166,7 +166,7 @@ commands:
- llvm-source-linux - llvm-source-linux
- restore_cache: - restore_cache:
keys: keys:
- llvm-build-8-linux-v7 - llvm-build-9-linux-v0
- run: - run:
name: "Build LLVM" name: "Build LLVM"
command: | command: |
@ -184,15 +184,15 @@ commands:
make llvm-build make llvm-build
fi fi
- save_cache: - save_cache:
key: llvm-build-8-linux-v7 key: llvm-build-9-linux-v0
paths: paths:
llvm-build llvm-build
- run: - run:
name: "Create LLVM symlinks" name: "Create LLVM symlinks"
command: | command: |
ln -s $PWD/llvm-build/bin/clang-8 /go/bin/clang-8 ln -s $PWD/llvm-build/bin/clang-9 /go/bin/clang-9
ln -s $PWD/llvm-build/bin/ld.lld /go/bin/ld.lld-8 ln -s $PWD/llvm-build/bin/ld.lld /go/bin/ld.lld-9
ln -s $PWD/llvm-build/bin/wasm-ld /go/bin/wasm-ld-8 ln -s $PWD/llvm-build/bin/wasm-ld /go/bin/wasm-ld-9
- run: - run:
name: "Test TinyGo" name: "Test TinyGo"
command: make test command: make test
@ -239,17 +239,17 @@ commands:
- go-cache-macos-v2-{{ checksum "go.mod" }} - go-cache-macos-v2-{{ checksum "go.mod" }}
- restore_cache: - restore_cache:
keys: keys:
- llvm-source-8-macos-v5 - llvm-source-9-macos-v0
- run: - run:
name: "Fetch LLVM source" name: "Fetch LLVM source"
command: make llvm-source command: make llvm-source
- save_cache: - save_cache:
key: llvm-source-8-macos-v5 key: llvm-source-9-macos-v0
paths: paths:
- llvm-project - llvm-project
- restore_cache: - restore_cache:
keys: keys:
- llvm-build-8-macos-v6 - llvm-build-9-macos-v0
- run: - run:
name: "Build LLVM" name: "Build LLVM"
command: | command: |
@ -261,13 +261,13 @@ commands:
make llvm-build make llvm-build
fi fi
- save_cache: - save_cache:
key: llvm-build-8-macos-v6 key: llvm-build-9-macos-v0
paths: paths:
llvm-build llvm-build
- run: - run:
name: "Create LLVM symlinks" name: "Create LLVM symlinks"
command: | command: |
ln -s $PWD/llvm-build/bin/clang-8 /usr/local/bin/clang-8 ln -s $PWD/llvm-build/bin/clang-9 /usr/local/bin/clang-9
- run: - run:
name: "Test TinyGo" name: "Test TinyGo"
command: make test command: make test
@ -300,17 +300,17 @@ commands:
jobs: jobs:
test-llvm8-go111: test-llvm9-go111:
docker: docker:
- image: circleci/golang:1.11-stretch - image: circleci/golang:1.11-stretch
steps: steps:
- test-linux - test-linux
test-llvm8-go112: test-llvm9-go112:
docker: docker:
- image: circleci/golang:1.12-stretch - image: circleci/golang:1.12-stretch
steps: steps:
- test-linux - test-linux
test-llvm8-go113: test-llvm9-go113:
docker: docker:
- image: circleci/golang:1.13-stretch - image: circleci/golang:1.13-stretch
steps: steps:
@ -337,9 +337,9 @@ jobs:
workflows: workflows:
test-all: test-all:
jobs: jobs:
- test-llvm8-go111 - test-llvm9-go111
- test-llvm8-go112 - test-llvm9-go112
- test-llvm8-go113 - test-llvm9-go113
- build-linux - build-linux
- build-macos - build-macos
- assert-test-linux - assert-test-linux

Просмотреть файл

@ -1,10 +1,10 @@
# TinyGo base stage installs Go 1.13, LLVM 8 and the TinyGo compiler itself. # TinyGo base stage installs Go 1.13, LLVM 9 and the TinyGo compiler itself.
FROM golang:1.13 AS tinygo-base FROM golang:1.13 AS tinygo-base
RUN wget -O- https://apt.llvm.org/llvm-snapshot.gpg.key| apt-key add - && \ RUN wget -O- https://apt.llvm.org/llvm-snapshot.gpg.key| apt-key add - && \
echo "deb http://apt.llvm.org/buster/ llvm-toolchain-buster-8 main" >> /etc/apt/sources.list && \ echo "deb http://apt.llvm.org/buster/ llvm-toolchain-buster-9 main" >> /etc/apt/sources.list && \
apt-get update && \ apt-get update && \
apt-get install -y llvm-8-dev libclang-8-dev git apt-get install -y llvm-9-dev libclang-9-dev git
COPY . /tinygo COPY . /tinygo
@ -25,9 +25,9 @@ COPY --from=tinygo-base /tinygo/src /tinygo/src
COPY --from=tinygo-base /tinygo/targets /tinygo/targets COPY --from=tinygo-base /tinygo/targets /tinygo/targets
RUN wget -O- https://apt.llvm.org/llvm-snapshot.gpg.key| apt-key add - && \ RUN wget -O- https://apt.llvm.org/llvm-snapshot.gpg.key| apt-key add - && \
echo "deb http://apt.llvm.org/buster/ llvm-toolchain-buster-8 main" >> /etc/apt/sources.list && \ echo "deb http://apt.llvm.org/buster/ llvm-toolchain-buster-9 main" >> /etc/apt/sources.list && \
apt-get update && \ apt-get update && \
apt-get install -y libllvm8 lld-8 apt-get install -y libllvm9 lld-9
# tinygo-avr stage installs the needed dependencies to compile TinyGo programs for AVR microcontrollers. # tinygo-avr stage installs the needed dependencies to compile TinyGo programs for AVR microcontrollers.
FROM tinygo-base AS tinygo-avr FROM tinygo-base AS tinygo-avr
@ -59,7 +59,7 @@ COPY --from=tinygo-base /tinygo/lib /tinygo/lib
RUN cd /tinygo/ && \ RUN cd /tinygo/ && \
apt-get update && \ apt-get update && \
apt-get install -y apt-utils python3 make clang-8 && \ apt-get install -y apt-utils python3 make clang-9 && \
make gen-device-nrf && make gen-device-stm32 && \ make gen-device-nrf && make gen-device-stm32 && \
apt-get remove -y python3 && \ apt-get remove -y python3 && \
apt-get autoremove -y && \ apt-get autoremove -y && \
@ -74,7 +74,7 @@ COPY --from=tinygo-base /tinygo/lib /tinygo/lib
RUN cd /tinygo/ && \ RUN cd /tinygo/ && \
apt-get update && \ apt-get update && \
apt-get install -y apt-utils python3 make clang-8 binutils-avr gcc-avr avr-libc && \ apt-get install -y apt-utils python3 make clang-9 binutils-avr gcc-avr avr-libc && \
make gen-device && \ make gen-device && \
apt-get remove -y python3 && \ apt-get remove -y python3 && \
apt-get autoremove -y && \ apt-get autoremove -y && \

Просмотреть файл

@ -120,13 +120,13 @@ gen-device-stm32:
# Get LLVM sources. # Get LLVM sources.
llvm-project/README.md: llvm-project/README.md:
git clone -b release/8.x https://github.com/llvm/llvm-project git clone -b release/9.x https://github.com/llvm/llvm-project
llvm-source: llvm-project/README.md llvm-source: llvm-project/README.md
# Configure LLVM. # Configure LLVM.
TINYGO_SOURCE_DIR=$(shell pwd) TINYGO_SOURCE_DIR=$(shell pwd)
$(LLVM_BUILDDIR)/build.ninja: llvm-source $(LLVM_BUILDDIR)/build.ninja: llvm-source
mkdir -p $(LLVM_BUILDDIR); cd $(LLVM_BUILDDIR); cmake -G Ninja $(TINYGO_SOURCE_DIR)/llvm-project/llvm "-DLLVM_TARGETS_TO_BUILD=X86;ARM;AArch64;WebAssembly" "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=AVR;RISCV" -DCMAKE_BUILD_TYPE=Release -DLIBCLANG_BUILD_STATIC=ON -DLLVM_ENABLE_TERMINFO=OFF -DLLVM_ENABLE_ZLIB=OFF -DLLVM_ENABLE_PROJECTS="clang;lld" -DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF $(LLVM_OPTION) mkdir -p $(LLVM_BUILDDIR); cd $(LLVM_BUILDDIR); cmake -G Ninja $(TINYGO_SOURCE_DIR)/llvm-project/llvm "-DLLVM_TARGETS_TO_BUILD=X86;ARM;AArch64;RISCV;WebAssembly" "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=AVR" -DCMAKE_BUILD_TYPE=Release -DLIBCLANG_BUILD_STATIC=ON -DLLVM_ENABLE_TERMINFO=OFF -DLLVM_ENABLE_ZLIB=OFF -DLLVM_ENABLE_PROJECTS="clang;lld" -DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF $(LLVM_OPTION)
# Build LLVM. # Build LLVM.
$(LLVM_BUILDDIR): $(LLVM_BUILDDIR)/build.ninja $(LLVM_BUILDDIR): $(LLVM_BUILDDIR)/build.ninja

Просмотреть файл

@ -14,7 +14,7 @@ jobs:
- task: CacheBeta@0 - task: CacheBeta@0
displayName: Cache LLVM source displayName: Cache LLVM source
inputs: inputs:
key: llvm-source-8-windows-v0 key: llvm-source-9-windows-v0
path: llvm-project path: llvm-project
- task: Bash@3 - task: Bash@3
displayName: Download LLVM source displayName: Download LLVM source
@ -24,7 +24,7 @@ jobs:
- task: CacheBeta@0 - task: CacheBeta@0
displayName: Cache LLVM build displayName: Cache LLVM build
inputs: inputs:
key: llvm-build-8-windows-v1 key: llvm-build-9-windows-v0
path: llvm-build path: llvm-build
- task: Bash@3 - task: Bash@3
displayName: Build LLVM displayName: Build LLVM
@ -34,6 +34,10 @@ jobs:
if [ ! -f llvm-build/lib/liblldELF.a ] if [ ! -f llvm-build/lib/liblldELF.a ]
then then
choco install ninja choco install ninja
# LLVM 9 cannot be built with MinGW 8.
# For details: https://reviews.llvm.org/D70266
choco uninstall mingw
choco install mingw --version=7.3.0
make llvm-build make llvm-build
fi fi
- task: Bash@3 - task: Bash@3

Просмотреть файл

@ -13,18 +13,18 @@ import (
// distributions or may not even exist in $PATH, in which case absolute paths // distributions or may not even exist in $PATH, in which case absolute paths
// may be used. // may be used.
var commands = map[string][]string{ var commands = map[string][]string{
"clang": {"clang-8"}, "clang": {"clang-9"},
"ld.lld": {"ld.lld-8", "ld.lld"}, "ld.lld": {"ld.lld-9", "ld.lld"},
"wasm-ld": {"wasm-ld-8", "wasm-ld"}, "wasm-ld": {"wasm-ld-9", "wasm-ld"},
} }
func init() { func init() {
// Add the path to a Homebrew-installed LLVM 8 for ease of use (no need to // Add the path to a Homebrew-installed LLVM 9 for ease of use (no need to
// manually set $PATH). // manually set $PATH).
if runtime.GOOS == "darwin" { if runtime.GOOS == "darwin" {
commands["clang"] = append(commands["clang"], "/usr/local/opt/llvm@8/bin/clang-8") commands["clang"] = append(commands["clang"], "/usr/local/opt/llvm@9/bin/clang-9")
commands["ld.lld"] = append(commands["ld.lld"], "/usr/local/opt/llvm@8/bin/ld.lld") commands["ld.lld"] = append(commands["ld.lld"], "/usr/local/opt/llvm@9/bin/ld.lld")
commands["wasm-ld"] = append(commands["wasm-ld"], "/usr/local/opt/llvm@8/bin/wasm-ld") commands["wasm-ld"] = append(commands["wasm-ld"], "/usr/local/opt/llvm@9/bin/wasm-ld")
} }
// Add the path for when LLVM was installed with the installer from // Add the path for when LLVM was installed with the installer from
// llvm.org, which by default doesn't add LLVM to the $PATH environment // llvm.org, which by default doesn't add LLVM to the $PATH environment

Просмотреть файл

@ -96,9 +96,9 @@ func getClangHeaderPath(TINYGOROOT string) string {
return "" return ""
} }
// Example executable: // Example executable:
// /usr/lib/llvm-8/bin/clang // /usr/lib/llvm-9/bin/clang
// Example include path: // Example include path:
// /usr/lib/llvm-8/lib/clang/8.0.1/include/ // /usr/lib/llvm-9/lib/clang/9.0.1/include/
llvmRoot := filepath.Dir(filepath.Dir(binpath)) llvmRoot := filepath.Dir(filepath.Dir(binpath))
clangVersionRoot := filepath.Join(llvmRoot, "lib", "clang") clangVersionRoot := filepath.Join(llvmRoot, "lib", "clang")
dirs, err := ioutil.ReadDir(clangVersionRoot) dirs, err := ioutil.ReadDir(clangVersionRoot)

Просмотреть файл

@ -15,7 +15,7 @@ import (
) )
/* /*
#include <clang-c/Index.h> // if this fails, install libclang-8-dev #include <clang-c/Index.h> // if this fails, install libclang-9-dev
#include <stdlib.h> #include <stdlib.h>
#include <stdint.h> #include <stdint.h>

Просмотреть файл

@ -3,9 +3,9 @@
package cgo package cgo
/* /*
#cgo linux CFLAGS: -I/usr/lib/llvm-8/include #cgo linux CFLAGS: -I/usr/lib/llvm-9/include
#cgo darwin CFLAGS: -I/usr/local/opt/llvm@8/include #cgo darwin CFLAGS: -I/usr/local/opt/llvm@9/include
#cgo linux LDFLAGS: -L/usr/lib/llvm-8/lib -lclang #cgo linux LDFLAGS: -L/usr/lib/llvm-9/lib -lclang
#cgo darwin LDFLAGS: -L/usr/local/opt/llvm@8/lib -lclang -lffi #cgo darwin LDFLAGS: -L/usr/local/opt/llvm@9/lib -lclang -lffi
*/ */
import "C" import "C"

Просмотреть файл

@ -3,7 +3,7 @@
// are slightly different from the ones defined in libclang.go, but they // are slightly different from the ones defined in libclang.go, but they
// should be ABI compatible. // should be ABI compatible.
#include <clang-c/Index.h> // if this fails, install libclang-8-dev #include <clang-c/Index.h> // if this fails, install libclang-9-dev
CXCursor tinygo_clang_getTranslationUnitCursor(CXTranslationUnit tu) { CXCursor tinygo_clang_getTranslationUnitCursor(CXTranslationUnit tu) {
return clang_getTranslationUnitCursor(tu); return clang_getTranslationUnitCursor(tu);

2
go.mod
Просмотреть файл

@ -9,5 +9,5 @@ require (
go.bug.st/serial.v1 v0.0.0-20180827123349-5f7892a7bb45 go.bug.st/serial.v1 v0.0.0-20180827123349-5f7892a7bb45
golang.org/x/sys v0.0.0-20191010194322-b09406accb47 // indirect golang.org/x/sys v0.0.0-20191010194322-b09406accb47 // indirect
golang.org/x/tools v0.0.0-20190227180812-8dcc6e70cdef golang.org/x/tools v0.0.0-20190227180812-8dcc6e70cdef
tinygo.org/x/go-llvm v0.0.0-20191103200204-37e93e3f04e2 tinygo.org/x/go-llvm v0.0.0-20191113125529-bad6d01809e8
) )

2
go.sum
Просмотреть файл

@ -24,3 +24,5 @@ tinygo.org/x/go-llvm v0.0.0-20191103182207-90b6e4bdc0b9 h1:d6rAX39a3C0pKrY5HcojE
tinygo.org/x/go-llvm v0.0.0-20191103182207-90b6e4bdc0b9/go.mod h1:fv1F0BSNpxMfCL0zF3M4OPFbgYHnhtB6ST0HvUtu/LE= tinygo.org/x/go-llvm v0.0.0-20191103182207-90b6e4bdc0b9/go.mod h1:fv1F0BSNpxMfCL0zF3M4OPFbgYHnhtB6ST0HvUtu/LE=
tinygo.org/x/go-llvm v0.0.0-20191103200204-37e93e3f04e2 h1:Q5Hv3e5cLMGkiYwYgZL1Zrv6nb/EY+DJpRWrdO6ws6o= tinygo.org/x/go-llvm v0.0.0-20191103200204-37e93e3f04e2 h1:Q5Hv3e5cLMGkiYwYgZL1Zrv6nb/EY+DJpRWrdO6ws6o=
tinygo.org/x/go-llvm v0.0.0-20191103200204-37e93e3f04e2/go.mod h1:fv1F0BSNpxMfCL0zF3M4OPFbgYHnhtB6ST0HvUtu/LE= tinygo.org/x/go-llvm v0.0.0-20191103200204-37e93e3f04e2/go.mod h1:fv1F0BSNpxMfCL0zF3M4OPFbgYHnhtB6ST0HvUtu/LE=
tinygo.org/x/go-llvm v0.0.0-20191113125529-bad6d01809e8 h1:9Bfvso+tTVQg16UzOA614NaYA4x8vsRBNtd3eBrXwp0=
tinygo.org/x/go-llvm v0.0.0-20191113125529-bad6d01809e8/go.mod h1:fv1F0BSNpxMfCL0zF3M4OPFbgYHnhtB6ST0HvUtu/LE=