mirror of
https://github.com/vortexgpgpu/vortex.git
synced 2025-04-24 05:47:35 -04:00
80 lines
No EOL
3.2 KiB
Docker
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 |