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

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

@ -44,12 +44,12 @@ commands:
steps:
- restore_cache:
keys:
- llvm-source-8-v5
- llvm-source-9-v0
- run:
name: "Fetch LLVM source"
command: make llvm-source
- save_cache:
key: llvm-source-8-v5
key: llvm-source-9-v0
paths:
- llvm-project
test-linux:
@ -57,7 +57,7 @@ commands:
- checkout
- submodules
- apt-dependencies:
llvm: "-8"
llvm: "-9"
- install-node
- restore_cache:
keys:
@ -101,7 +101,7 @@ commands:
- llvm-source-linux
- restore_cache:
keys:
- llvm-build-8-linux-v7-assert
- llvm-build-9-linux-v0-assert
- run:
name: "Build LLVM"
command: |
@ -119,15 +119,15 @@ commands:
make ASSERT=1 llvm-build
fi
- save_cache:
key: llvm-build-8-linux-v7-assert
key: llvm-build-9-linux-v0-assert
paths:
llvm-build
- run:
name: "Create LLVM symlinks"
command: |
ln -s $PWD/llvm-build/bin/clang-8 /go/bin/clang-8
ln -s $PWD/llvm-build/bin/ld.lld /go/bin/ld.lld-8
ln -s $PWD/llvm-build/bin/wasm-ld /go/bin/wasm-ld-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-9
ln -s $PWD/llvm-build/bin/wasm-ld /go/bin/wasm-ld-9
- run: make ASSERT=1
- run:
name: "Test TinyGo"
@ -166,7 +166,7 @@ commands:
- llvm-source-linux
- restore_cache:
keys:
- llvm-build-8-linux-v7
- llvm-build-9-linux-v0
- run:
name: "Build LLVM"
command: |
@ -184,15 +184,15 @@ commands:
make llvm-build
fi
- save_cache:
key: llvm-build-8-linux-v7
key: llvm-build-9-linux-v0
paths:
llvm-build
- run:
name: "Create LLVM symlinks"
command: |
ln -s $PWD/llvm-build/bin/clang-8 /go/bin/clang-8
ln -s $PWD/llvm-build/bin/ld.lld /go/bin/ld.lld-8
ln -s $PWD/llvm-build/bin/wasm-ld /go/bin/wasm-ld-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-9
ln -s $PWD/llvm-build/bin/wasm-ld /go/bin/wasm-ld-9
- run:
name: "Test TinyGo"
command: make test
@ -239,17 +239,17 @@ commands:
- go-cache-macos-v2-{{ checksum "go.mod" }}
- restore_cache:
keys:
- llvm-source-8-macos-v5
- llvm-source-9-macos-v0
- run:
name: "Fetch LLVM source"
command: make llvm-source
- save_cache:
key: llvm-source-8-macos-v5
key: llvm-source-9-macos-v0
paths:
- llvm-project
- restore_cache:
keys:
- llvm-build-8-macos-v6
- llvm-build-9-macos-v0
- run:
name: "Build LLVM"
command: |
@ -261,13 +261,13 @@ commands:
make llvm-build
fi
- save_cache:
key: llvm-build-8-macos-v6
key: llvm-build-9-macos-v0
paths:
llvm-build
- run:
name: "Create LLVM symlinks"
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:
name: "Test TinyGo"
command: make test
@ -300,17 +300,17 @@ commands:
jobs:
test-llvm8-go111:
test-llvm9-go111:
docker:
- image: circleci/golang:1.11-stretch
steps:
- test-linux
test-llvm8-go112:
test-llvm9-go112:
docker:
- image: circleci/golang:1.12-stretch
steps:
- test-linux
test-llvm8-go113:
test-llvm9-go113:
docker:
- image: circleci/golang:1.13-stretch
steps:
@ -337,9 +337,9 @@ jobs:
workflows:
test-all:
jobs:
- test-llvm8-go111
- test-llvm8-go112
- test-llvm8-go113
- test-llvm9-go111
- test-llvm9-go112
- test-llvm9-go113
- build-linux
- build-macos
- 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
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 install -y llvm-8-dev libclang-8-dev git
apt-get install -y llvm-9-dev libclang-9-dev git
COPY . /tinygo
@ -25,9 +25,9 @@ COPY --from=tinygo-base /tinygo/src /tinygo/src
COPY --from=tinygo-base /tinygo/targets /tinygo/targets
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 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.
FROM tinygo-base AS tinygo-avr
@ -59,7 +59,7 @@ COPY --from=tinygo-base /tinygo/lib /tinygo/lib
RUN cd /tinygo/ && \
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 && \
apt-get remove -y python3 && \
apt-get autoremove -y && \
@ -74,7 +74,7 @@ COPY --from=tinygo-base /tinygo/lib /tinygo/lib
RUN cd /tinygo/ && \
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 && \
apt-get remove -y python3 && \
apt-get autoremove -y && \

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

@ -120,13 +120,13 @@ gen-device-stm32:
# Get LLVM sources.
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
# Configure LLVM.
TINYGO_SOURCE_DIR=$(shell pwd)
$(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.
$(LLVM_BUILDDIR): $(LLVM_BUILDDIR)/build.ninja

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

@ -14,7 +14,7 @@ jobs:
- task: CacheBeta@0
displayName: Cache LLVM source
inputs:
key: llvm-source-8-windows-v0
key: llvm-source-9-windows-v0
path: llvm-project
- task: Bash@3
displayName: Download LLVM source
@ -24,7 +24,7 @@ jobs:
- task: CacheBeta@0
displayName: Cache LLVM build
inputs:
key: llvm-build-8-windows-v1
key: llvm-build-9-windows-v0
path: llvm-build
- task: Bash@3
displayName: Build LLVM
@ -34,6 +34,10 @@ jobs:
if [ ! -f llvm-build/lib/liblldELF.a ]
then
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
fi
- task: Bash@3

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

@ -13,18 +13,18 @@ import (
// distributions or may not even exist in $PATH, in which case absolute paths
// may be used.
var commands = map[string][]string{
"clang": {"clang-8"},
"ld.lld": {"ld.lld-8", "ld.lld"},
"wasm-ld": {"wasm-ld-8", "wasm-ld"},
"clang": {"clang-9"},
"ld.lld": {"ld.lld-9", "ld.lld"},
"wasm-ld": {"wasm-ld-9", "wasm-ld"},
}
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).
if runtime.GOOS == "darwin" {
commands["clang"] = append(commands["clang"], "/usr/local/opt/llvm@8/bin/clang-8")
commands["ld.lld"] = append(commands["ld.lld"], "/usr/local/opt/llvm@8/bin/ld.lld")
commands["wasm-ld"] = append(commands["wasm-ld"], "/usr/local/opt/llvm@8/bin/wasm-ld")
commands["clang"] = append(commands["clang"], "/usr/local/opt/llvm@9/bin/clang-9")
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@9/bin/wasm-ld")
}
// 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

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

@ -96,9 +96,9 @@ func getClangHeaderPath(TINYGOROOT string) string {
return ""
}
// Example executable:
// /usr/lib/llvm-8/bin/clang
// /usr/lib/llvm-9/bin/clang
// 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))
clangVersionRoot := filepath.Join(llvmRoot, "lib", "clang")
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 <stdint.h>

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

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

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

@ -3,7 +3,7 @@
// are slightly different from the ones defined in libclang.go, but they
// 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) {
return clang_getTranslationUnitCursor(tu);

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

@ -9,5 +9,5 @@ require (
go.bug.st/serial.v1 v0.0.0-20180827123349-5f7892a7bb45
golang.org/x/sys v0.0.0-20191010194322-b09406accb47 // indirect
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-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-20191113125529-bad6d01809e8 h1:9Bfvso+tTVQg16UzOA614NaYA4x8vsRBNtd3eBrXwp0=
tinygo.org/x/go-llvm v0.0.0-20191113125529-bad6d01809e8/go.mod h1:fv1F0BSNpxMfCL0zF3M4OPFbgYHnhtB6ST0HvUtu/LE=