|
|
|
# TinyGo base stage just installs LLVM 8 and the TinyGo compiler itself.
|
|
|
|
FROM golang:latest 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 && \
|
|
|
|
apt-get update && \
|
|
|
|
apt-get install -y llvm-8-dev libclang-8-dev git
|
|
|
|
|
|
|
|
RUN wget -O- https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
|
|
|
|
|
|
|
|
COPY . /go/src/github.com/tinygo-org/tinygo
|
|
|
|
|
|
|
|
# remove submodules directories and re-init them to fix any hard-coded paths
|
|
|
|
# after copying the tinygo directory in the previous step.
|
|
|
|
RUN cd /go/src/github.com/tinygo-org/tinygo/ && \
|
|
|
|
rm -rf ./lib/* && \
|
|
|
|
git submodule update --init --recursive --force
|
|
|
|
|
|
|
|
RUN cd /go/src/github.com/tinygo-org/tinygo/ && \
|
|
|
|
dep ensure --vendor-only && \
|
|
|
|
go install /go/src/github.com/tinygo-org/tinygo/
|
|
|
|
|
|
|
|
# tinygo-wasm stage installs the needed dependencies to compile TinyGo programs for WASM.
|
|
|
|
FROM tinygo-base AS tinygo-wasm
|
|
|
|
|
|
|
|
COPY --from=tinygo-base /go/bin/tinygo /go/bin/tinygo
|
|
|
|
COPY --from=tinygo-base /go/src/github.com/tinygo-org/tinygo/src /go/src/github.com/tinygo-org/tinygo/src
|
|
|
|
COPY --from=tinygo-base /go/src/github.com/tinygo-org/tinygo/targets /go/src/github.com/tinygo-org/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 && \
|
|
|
|
apt-get update && \
|
|
|
|
apt-get install -y libllvm8 lld-8
|
|
|
|
|
|
|
|
# tinygo-avr stage installs the needed dependencies to compile TinyGo programs for AVR microcontrollers.
|
|
|
|
FROM tinygo-base AS tinygo-avr
|
|
|
|
|
|
|
|
COPY --from=tinygo-base /go/bin/tinygo /go/bin/tinygo
|
|
|
|
COPY --from=tinygo-base /go/src/github.com/tinygo-org/tinygo/src /go/src/github.com/tinygo-org/tinygo/src
|
|
|
|
COPY --from=tinygo-base /go/src/github.com/tinygo-org/tinygo/targets /go/src/github.com/tinygo-org/tinygo/targets
|
|
|
|
COPY --from=tinygo-base /go/src/github.com/tinygo-org/tinygo/Makefile /go/src/github.com/tinygo-org/tinygo/
|
|
|
|
COPY --from=tinygo-base /go/src/github.com/tinygo-org/tinygo/tools /go/src/github.com/tinygo-org/tinygo/tools
|
|
|
|
COPY --from=tinygo-base /go/src/github.com/tinygo-org/tinygo/lib /go/src/github.com/tinygo-org/tinygo/lib
|
|
|
|
|
|
|
|
RUN cd /go/src/github.com/tinygo-org/tinygo/ && \
|
|
|
|
apt-get update && \
|
|
|
|
apt-get install -y apt-utils python3 make binutils-avr gcc-avr avr-libc && \
|
|
|
|
make gen-device-avr && \
|
|
|
|
apt-get remove -y python3 && \
|
|
|
|
apt-get autoremove -y && \
|
|
|
|
apt-get clean
|
|
|
|
|
|
|
|
# tinygo-arm stage installs the needed dependencies to compile TinyGo programs for ARM microcontrollers.
|
|
|
|
FROM tinygo-base AS tinygo-arm
|
|
|
|
|
|
|
|
COPY --from=tinygo-base /go/bin/tinygo /go/bin/tinygo
|
|
|
|
COPY --from=tinygo-base /go/src/github.com/tinygo-org/tinygo/src /go/src/github.com/tinygo-org/tinygo/src
|
|
|
|
COPY --from=tinygo-base /go/src/github.com/tinygo-org/tinygo/targets /go/src/github.com/tinygo-org/tinygo/targets
|
|
|
|
COPY --from=tinygo-base /go/src/github.com/tinygo-org/tinygo/Makefile /go/src/github.com/tinygo-org/tinygo/
|
|
|
|
COPY --from=tinygo-base /go/src/github.com/tinygo-org/tinygo/tools /go/src/github.com/tinygo-org/tinygo/tools
|
|
|
|
COPY --from=tinygo-base /go/src/github.com/tinygo-org/tinygo/lib /go/src/github.com/tinygo-org/tinygo/lib
|
|
|
|
|
|
|
|
RUN cd /go/src/github.com/tinygo-org/tinygo/ && \
|
|
|
|
apt-get update && \
|
|
|
|
apt-get install -y apt-utils python3 make clang-8 && \
|
|
|
|
make gen-device-nrf && make gen-device-stm32 && \
|
|
|
|
apt-get remove -y python3 && \
|
|
|
|
apt-get autoremove -y && \
|
|
|
|
apt-get clean
|
|
|
|
|
|
|
|
# tinygo-all stage installs the needed dependencies to compile TinyGo programs for all platforms.
|
|
|
|
FROM tinygo-wasm AS tinygo-all
|
|
|
|
|
|
|
|
COPY --from=tinygo-base /go/src/github.com/tinygo-org/tinygo/Makefile /go/src/github.com/tinygo-org/tinygo/
|
|
|
|
COPY --from=tinygo-base /go/src/github.com/tinygo-org/tinygo/tools /go/src/github.com/tinygo-org/tinygo/tools
|
|
|
|
COPY --from=tinygo-base /go/src/github.com/tinygo-org/tinygo/lib /go/src/github.com/tinygo-org/tinygo/lib
|
|
|
|
|
|
|
|
RUN cd /go/src/github.com/tinygo-org/tinygo/ && \
|
|
|
|
apt-get update && \
|
|
|
|
apt-get install -y apt-utils python3 make clang-8 binutils-avr gcc-avr avr-libc && \
|
|
|
|
make gen-device && \
|
|
|
|
apt-get remove -y python3 && \
|
|
|
|
apt-get autoremove -y && \
|
|
|
|
apt-get clean
|
|
|
|
|
|
|
|
CMD ["tinygo"]
|