vortex/miscs/docker/pocl/Dockerfile
2020-04-14 19:46:53 -04:00

80 lines
No EOL
3.2 KiB
Docker

.
#
# Dockerfile for Vortex POCL compiler
#
# set base OS
FROM ubuntu:18.04
# set build variables
ARG LOGIN=user:pass
ARG RISC_GNU_TOOLS_PATH=/opt/riscv_gnu_toolchain
ARG LLVM_HOME=/opt/llvm-10
ARG POCL_CC_PATH=/opt/pocl_cc
ARG POCL_RT_PATH=/opt/pocl_rt
ARG VORTEX_HOME=/home/vortex
ARG VORTEX_DRIVER_INC=$VORTEX_HOME/driver/sw/include
ARG VORTEX_DRIVER_LIB=$VORTEX_HOME/driver/sw/stub/libvortex.so
ARG VORTEX_RUNTIME_PATH=$VORTEX_HOME/runtime
# system update
RUN apt update
RUN apt upgrade -y
# install GNU RISC-V Tools dependencies
RUN apt-get -y install \
binutils build-essential libtool texinfo \
gzip zip unzip patchutils curl git \
make cmake ninja-build automake bison flex gperf \
grep sed gawk python bc \
zlib1g-dev libexpat1-dev libmpc-dev \
libglib2.0-dev libfdt-dev libpixman-1-dev
# install GNU RISC-V Tools dependencies
RUN git clone https://github.com/riscv/riscv-gnu-toolchain /tmp/riscv-gnu-toolchain
RUN cd /tmp/riscv-gnu-toolchain; \
git submodule update --init --recursive
RUN cd /tmp/riscv-gnu-toolchain; \
mkdir build
RUN cd /tmp/riscv-gnu-toolchain/build; \
../configure --prefix=$RISC_GNU_TOOLS_PATH --with-arch=rv32im --with-abi=ilp32;
RUN cd /tmp/riscv-gnu-toolchain/build; \
make -j`nproc`; \
make -j`nproc` build-qemu
RUN rm -rf /tmp/riscv-gnu-toolchain
# install LLVM 10
RUN git clone -b release/10.x https://github.com/llvm/llvm-project.git /tmp/llvm-project
RUN cd /tmp/llvm-project; \
mkdir build
RUN cd /tmp/llvm-project/build; \
cmake -G Ninja -DLLVM_ENABLE_PROJECTS="clang" -DBUILD_SHARED_LIBS=True -DLLVM_USE_SPLIT_DWARF=True -DCMAKE_INSTALL_PREFIX=$LLVM_HOME -DLLVM_OPTIMIZED_TABLEGEN=True -DLLVM_BUILD_TESTS=True -DDEFAULT_SYSROOT=$RISC_GNU_TOOLS_PATH/riscv32-unknown-elf -DLLVM_DEFAULT_TARGET_TRIPLE="riscv32-unknown-elf" -DLLVM_TARGETS_TO_BUILD="RISCV" ../llvm
RUN cd /tmp/llvm-project/build; \
cmake --build . --target install
RUN rm -rf /tmp/llvm-project
# install Vortex
RUN git clone -b fpga_synthesis https://$LOGIN@github.gatech.edu/casl/Vortex.git $VORTEX_HOME
RUN cd $VORTEX_HOME; \
make -C rtl build_config; \
make -C runtime build_config; \
make -C driver/sw/stub
# install POCL
RUN git clone https://$LOGIN@github.gatech.edu/casl/pocl.git /tmp/pocl
RUN cd /tmp/pocl; \
mkdir build_cc
RUN cd /tmp/pocl/build_cc; \
cmake -G Ninja -DCMAKE_INSTALL_PREFIX=$POCL_CC_PATH -DOCS_AVAILABLE=ON -DWITH_LLVM_CONFIG=$LLVM_HOME/bin/llvm-config -DENABLE_VORTEX=ON -DVORTEX_RUNTIME_PATH=$VORTEX_RUNTIME_PATH -DVORTEX_DRIVER_INC=$VORTEX_DRIVER_INC -DVORTEX_DRIVER_LIB=$VORTEX_DRIVER_LIB -DBUILD_TESTS=OFF -DPOCL_DEBUG_MESSAGES=ON ..
RUN cd /tmp/pocl/build_cc; \
cmake --build . --target install
RUN cd /tmp/pocl; \
mkdir build_rt
RUN cd /tmp/pocl/build_rt; \
cmake -G Ninja -DCMAKE_INSTALL_PREFIX=$POCL_RT_PATH -DOCS_AVAILABLE=OFF -DHOST_DEVICE_BUILD_HASH=riscv32-unknown-unknown-elf -DENABLE_VORTEX=ON -DVORTEX_RUNTIME_PATH=$VORTEX_RUNTIME_PATH -DVORTEX_DRIVER_INC=$VORTEX_DRIVER_INC -DVORTEX_DRIVER_LIB=$VORTEX_DRIVER_LIB -DBUILD_TESTS=OFF -DPOCL_DEBUG_MESSAGES=ON ..
RUN cd /tmp/pocl/build_rt; \
cmake --build . --target install
RUN rm -rf /tmp/pocl
# Set the working directory to /mnt.
WORKDIR /mnt