LLVMのビルド環境とRISC-Vのビルド環境をDocker上に構築するためにいろいろ試行している。
Dockerfileの作成自体はあまり経験がないのでTrial&Error状態だ。 構築したいのは
- Ubuntu 18.04LTSを使った古い環境を用いたLLVMビルド環境。LLVM+RISC-V本の環境に限りなく近い
- Ubuntu 22.04LTSを使って、最新のRISC-Vツールやシミュレーション環境を使うもの
まず、Ubuntu18.04LTSを使った環境だが、これは限りなくLLVM-RISC-V本の環境に近づけたいので、
- Chipyard は1.3.0のタグを使う
- 古いriscv-toolsを使ってみるやりビルドする
という方針で行く。一方で、Ubuntu 22.04LTSを使ったっ環境だが、これは最新版の環境でも動作することを確認したいので、
- Chipyardは1.7.1のタグを使う
- なるべく最新のriscv-toolsのサブモジュールを使用する
という方針にしようと思う。まず、riscv-toolsを可能な限りビルドできるようにするために、Dockerfileに以下を追加してriscv-toolsのビルドを改良する。
つまり、OpenCOCDなどのツールは可能な限りインストールしない。riscv-testsもビルドが通らないのでインストールしない。
WORKDIR /tmp/riscv-tools RUN sed -i '/check_version automake/s/^/#/g' build.sh RUN sed -i '/check_version autoconf/s/^/#/g' build.sh RUN sed -i '/build_project riscv-openocd/s/^/#/g' build.sh RUN sed -i '/build_project riscv-tests/s/^/#/g' build.sh RUN MAKEFLAGS="-j$(nproc)" ./build.sh
GCCのツールチェインのダウンロードも古いものに合わせる。
WORKDIR /llvm_book/ RUN curl -L https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2021.03.06/riscv64-elf-ubuntu-18.04-nightly-2021.03.06-nightly.tar.gz | tar xz RUN curl -L https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2021.03.06/riscv64-glibc-ubuntu-18.04-nightly-2021.03.06-nightly.tar.gz | tar xz RUN mv /llvm_book/riscv $RISCV
一方で最新版のものは、riscv-tools
を使用せずにここのツールをダウンロードしてビルドする。
WORKDIR /tmp RUN git clone https://github.com/riscv-software-src/riscv-isa-sim.git --recurse-submodules && \ cd riscv-isa-sim && \ ./configure --prefix=$RISCV && \ make -j$(nproc) && \ make install RUN git clone https://github.com/riscv-software-src/riscv-pk.git --recurse-submodules && \ cd riscv-pk && \ mkdir -p build && \ cd build && \ ../configure --prefix=$RISCV --host riscv64-unknown-elf && \ make -j$(nproc) && \ make install
GCCのツールチェインも最新版をダウンロードする。
WORKDIR /llvm_book/ RUN curl -L https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2022.08.08/riscv64-elf-ubuntu-20.04-nightly-2022.08.08-nightly.tar.gz | tar xz RUN curl -L https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2022.08.08/riscv64-glibc-ubuntu-20.04-nightly-2022.08.08-nightly.tar.gz | tar xz RUN curl -L https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/2022.08.08/riscv64-musl-ubuntu-20.04-nightly-2022.08.08-nightly.tar.gz | tar xz RUN mv /llvm_book/riscv $RISCV