mirror of
https://github.com/tillitis/tillitis-key1.git
synced 2024-12-25 15:39:27 -05:00
167 lines
5.6 KiB
Docker
167 lines
5.6 KiB
Docker
FROM docker.io/library/ubuntu:24.04 as base
|
|
|
|
RUN apt-get -qq update -y \
|
|
&& DEBIAN_FRONTEND=noninteractive \
|
|
apt-get install -y --no-install-recommends \
|
|
autoconf \
|
|
bash-completion \
|
|
bison \
|
|
build-essential \
|
|
ca-certificates \
|
|
clang \
|
|
clang-format \
|
|
clang-tidy \
|
|
cmake \
|
|
flex \
|
|
g++ \
|
|
gawk \
|
|
gcc \
|
|
git \
|
|
gperf \
|
|
graphviz \
|
|
help2man \
|
|
less \
|
|
libboost-dev \
|
|
libboost-filesystem-dev \
|
|
libboost-iostreams-dev \
|
|
libboost-program-options-dev \
|
|
libboost-python-dev \
|
|
libboost-system-dev \
|
|
libboost-thread-dev \
|
|
libeigen3-dev \
|
|
libffi-dev \
|
|
libfl-dev \
|
|
libftdi-dev \
|
|
libpython3-dev \
|
|
libusb-1.0-0-dev \
|
|
libreadline-dev \
|
|
lld \
|
|
llvm \
|
|
make \
|
|
nano \
|
|
ncdu \
|
|
perl \
|
|
pkg-config \
|
|
psmisc \
|
|
python-is-python3 \
|
|
python3 \
|
|
python3-full \
|
|
python3-dev \
|
|
python3-pip \
|
|
python3-pytest \
|
|
sdcc \
|
|
splint \
|
|
tcl-dev \
|
|
vim \
|
|
xdot \
|
|
zlib1g-dev \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Enable bash completion
|
|
RUN sed -i '/#if ! shopt -oq posix; then/ s/^#//' /etc/bash.bashrc
|
|
RUN sed -i '/# if \[ -f \/usr\/share\/bash-completion\/bash_completion \]; then/ s/^#//' /etc/bash.bashrc
|
|
RUN sed -i '/# . \/usr\/share\/bash-completion\/bash_completion/ s/^#//' /etc/bash.bashrc
|
|
RUN sed -i '/# elif \[ -f \/etc\/bash_completion \]; then/ s/^#//' /etc/bash.bashrc
|
|
RUN sed -i '/# . \/etc\/bash_completion/ s/^#//' /etc/bash.bashrc
|
|
RUN sed -i '/# fi/ s/^#//' /etc/bash.bashrc
|
|
RUN sed -i '/#fi/ s/^#//' /etc/bash.bashrc
|
|
|
|
FROM base as toolsbuilder
|
|
|
|
RUN git clone --depth=1 https://github.com/YosysHQ/icestorm /src
|
|
WORKDIR /src
|
|
RUN git checkout 738af822905fdcf0466e9dd784b9ae4b0b34987f \
|
|
&& make -j$(nproc --ignore=2) \
|
|
&& make install \
|
|
&& git describe --all --always --long --dirty > /usr/local/repo-commit-icestorm
|
|
WORKDIR /
|
|
RUN rm -rf /src
|
|
|
|
# Custom iceprog for the RPi 2040-based programmer (will be upstreamed).
|
|
RUN git clone -b interfaces --depth=1 https://github.com/tillitis/icestorm /src
|
|
WORKDIR /src/iceprog
|
|
RUN make -j$(nproc --ignore=2) \
|
|
&& make PROGRAM_PREFIX=tillitis- install \
|
|
&& git describe --all --always --long --dirty > /usr/local/repo-commit-tillitis--icestorm
|
|
WORKDIR /
|
|
RUN rm -rf /src
|
|
|
|
RUN git clone -b 0.45 --depth=1 https://github.com/YosysHQ/yosys /src
|
|
WORKDIR /src
|
|
RUN git submodule update --init \
|
|
&& make -j$(nproc --ignore=2) \
|
|
&& make install \
|
|
&& git describe --all --always --long --dirty > /usr/local/repo-commit-yosys
|
|
WORKDIR /
|
|
RUN rm -rf /src
|
|
|
|
RUN git clone -b nextpnr-0.7 https://github.com/YosysHQ/nextpnr /src
|
|
WORKDIR /src
|
|
# Add "Fix handling of RNG seed" #1369
|
|
RUN git cherry-pick --no-commit 6ca64526bb18ace8690872b09ca1251567c116de
|
|
# Add early exit if place fails on timing
|
|
RUN sed -i \
|
|
'345i \ \ \ \ general.add_options()("exit-on-failed-target-frequency",' \
|
|
common/kernel/command.cc
|
|
RUN sed -i \
|
|
'346i \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "exit if target frequency is not achieved (use together with "' \
|
|
common/kernel/command.cc
|
|
RUN sed -i \
|
|
'347i \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "--randomize-seed option)");' \
|
|
common/kernel/command.cc
|
|
RUN sed -i \
|
|
'348i \\' \
|
|
common/kernel/command.cc
|
|
RUN sed -i \
|
|
'662s/if (do_route) {/if (do_route \&\& (vm.count("exit-on-failed-target-frequency") ? !had_nonfatal_error : true)) {/' \
|
|
common/kernel/command.cc
|
|
RUN sed -i \
|
|
'244s/bool warn_on_failure = false/bool warn_on_failure = true/' \
|
|
common/kernel/timing.h
|
|
RUN cmake -DARCH=ice40 . \
|
|
&& make -j$(nproc --ignore=2) \
|
|
&& make install \
|
|
&& git describe --all --always --long --dirty > /usr/local/repo-commit-nextpnr
|
|
WORKDIR /
|
|
RUN rm -rf /src
|
|
|
|
RUN git clone -b v12_0 --depth=1 https://github.com/steveicarus/iverilog /src
|
|
WORKDIR /src
|
|
RUN sh autoconf.sh \
|
|
&& ./configure \
|
|
&& make -j$(nproc --ignore=2) \
|
|
&& make install \
|
|
&& git describe --all --always --long --dirty > /usr/local/repo-commit-iverilog
|
|
WORKDIR /
|
|
RUN rm -rf /src
|
|
|
|
RUN git clone -b v5.028 --depth=1 https://github.com/verilator/verilator /src
|
|
WORKDIR /src
|
|
RUN autoconf \
|
|
&& ./configure \
|
|
&& make -j$(nproc --ignore=2) \
|
|
&& make test \
|
|
&& make install \
|
|
&& git describe --all --always --long --dirty > /usr/local/repo-commit-verilator
|
|
WORKDIR /
|
|
RUN rm -rf /src
|
|
|
|
ADD https://github.com/chipsalliance/verible/releases/download/v0.0-3795-gf4d72375/verible-v0.0-3795-gf4d72375-linux-static-x86_64.tar.gz /src/verible.tar.gz
|
|
WORKDIR /src
|
|
RUN tar xvf verible.tar.gz
|
|
RUN mv -v verible*/bin/* /usr/local/bin
|
|
RUN verible-verilog-format --version | head -1 > /usr/local/repo-commit-verible
|
|
WORKDIR /
|
|
RUN rm -rf /src
|
|
|
|
RUN git clone -b v1.9.1 https://github.com/cocotb/cocotb.git /src
|
|
WORKDIR /src
|
|
RUN pip install . --break-system-packages \
|
|
&& git describe --all --always --long --dirty > /usr/local/repo-commit-cocotb
|
|
WORKDIR /
|
|
RUN rm -rf /src
|
|
|
|
FROM base
|
|
LABEL org.opencontainers.image.description="Toolchain for building TKey FPGA bitstream"
|
|
COPY --from=toolsbuilder /usr/local/ /usr/local
|