Setup the dockerfiles necessary to build serene in a container

This commit is contained in:
Sameer Rahmani 2022-02-08 17:43:29 +00:00
parent 2da5b1dedf
commit 7dc587ecbc
4 changed files with 33 additions and 23 deletions

2
.dockerignore Normal file
View File

@ -0,0 +1,2 @@
./build/
./resources/

View File

@ -133,6 +133,14 @@ function tests() {
case "$command" in
"docker-llvm")
docker build -f resources/docker/Dockerfile.llvm -t serene/llvm:15 .
;;
"docker-serene")
docker build -f resources/docker/Dockerfile.serene -t serene/build:$(git rev-parse HEAD) .
;;
"setup")
rm -rfv $ME/.git/hooks/pre-commit
ln -s $ME/scripts/pre-commit $ME/.git/hooks/pre-commit

View File

@ -1,36 +1,24 @@
FROM debian:11-slim
FROM debian:sid-slim as builder
RUN apt-get update && apt-get install -y wget gnupg
RUN apt-get update --fix-missing && apt-get install -y wget gnupg ccache cmake ccache git ninja-build build-essential binutils
RUN wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|apt-key add -
RUN echo "deb http://apt.llvm.org/bullseye/ llvm-toolchain-bullseye-13 main" >> /etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y ccache cmake ccache git ninja-build build-essential clang-13 lldb-13 lld-13
RUN echo "deb http://apt.llvm.org/unstable/ llvm-toolchain main" >> /etc/apt/sources.list
ENV CXX=clang++-13
ENV CC=clang-13
RUN apt-get update --fix-missing && apt-get install -y clang-format-15 clang-tidy-15 clang-tools-15 clang-15 clangd-15 libc++-15-dev libc++1-15 libc++abi-15-dev libc++abi1-15 libclang-15-dev libclang1-15 liblldb-15-dev lld-15 lldb-15 llvm-15-dev llvm-15-runtime llvm python3-clang-15 python3-lldb-15 mlir-15-tools libmlir-15-dev
RUN mkdir -p /opt/build
COPY ./llvm-project /usr/src/llvm-project
WORKDIR /opt/build
COPY ./ /usr/src/llvm-project
ENV LDFLAGS="-fuse-ld=lld-13"
RUN ln -s `which lld-15` /usr/bin/lld && ln -s `which lldb-15` /usr/bin/lldb
RUN cmake -G Ninja /usr/src/llvm-project/llvm \
-DCMAKE_INSTALL_PREFIX=/opt/llvm \
-DLLVM_PARALLEL_COMPILE_JOBS=7 \
-DLLVM_PARALLEL_LINK_JOBS=1 \
-DLLVM_BUILD_EXAMPLES=ON \
-DLLVM_TARGETS_TO_BUILD="X86" \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_ASSERTIONS=ON \
-DLLVM_CCACHE_BUILD=ON \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
-DLLVM_ENABLE_PROJECTS='clang;lldb;lld;mlir;clang-tools-extra;compiler-rt' \
-DCMAKE_C_COMPILER=clang-13 \
-DCMAKE_CXX_COMPILER=clang++-13 \
-DLLVM_ENABLE_LLD=ON
RUN cmake -G Ninja /usr/src/llvm-project/llvm -DCMAKE_INSTALL_PREFIX=/opt/llvm -DLLVM_PARALLEL_COMPILE_JOBS=7 -DLLVM_PARALLEL_LINK_JOBS=1 -DLLVM_TARGETS_TO_BUILD="X86" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_CCACHE_BUILD=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DLLVM_ENABLE_PROJECTS='clang;lldb;lld;mlir;clang-tools-extra;compiler-rt' -DCMAKE_C_COMPILER=clang-15 -DCMAKE_CXX_COMPILER=clang++-15 -DLLVM_ENABLE_LLD=ON
RUN cmake --build .
RUN cmake -DCMAKE_INSTALL_PREFIX=/opt/llvm -P cmake_install.cmake
FROM debian:sid-slim
COPY --from=builder /opt/llvm /opt/llvm

View File

@ -0,0 +1,12 @@
FROM serene/llvm:15
RUN apt-get update --fix-missing && apt-get install -y wget gnupg ccache cmake ccache git ninja-build build-essential binutils libncurses-dev
WORKDIR /app
COPY . .
ENV PATH="/opt/llvm/bin:$PATH"
ENV CXX=clang++
ENV CC=clang
ENV LDFLAGS="-fuse-ld=lld"
RUN LD_LIBRARY_PATH="$(clang -print-runtime-dir):$LD_LIBRARY_PATH" ./builder build