-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathDockerfile
41 lines (31 loc) · 1.44 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# syntax=docker/dockerfile:experimental
FROM ubuntu:23.04 AS build
ENV DEBIAN_FRONTEND noninteractive
ENV CCACHE_DIR=/ccache
ENV CCACHE_MAXSIZE=25G
ARG LLVM_VERSION
ARG BASE_PATH=/llvm
RUN --mount=type=cache,id=1,target=/var/cache/apt --mount=type=cache,target=/var/lib/apt \
apt update -y \
&& apt install -y llvm-dev build-essential git cmake binutils-gold ninja-build ccache zlib1g-dev
RUN mkdir -p ${BASE_PATH} ${BASE_PATH}/build
RUN git clone https://github.com/llvm/llvm-project.git ${BASE_PATH}/llvm
RUN cd ${BASE_PATH}/llvm && \
git checkout ${LLVM_VERSION}
WORKDIR ${BASE_PATH}/llvm
COPY ./patches ${BASE_PATH}/patches
RUN ls -alh && git apply ${BASE_PATH}/patches/${LLVM_VERSION}.patch
# RelWithDebInfo
WORKDIR ${BASE_PATH}/build
RUN --mount=type=cache,target=/ccache/ \
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=on -DLLVM_USE_LINKER=gold \
-DLLVM_TARGETS_TO_BUILD=X86 -DLLVM_ENABLE_PROJECTS='clang;compiler-rt;lld' -DLLVM_INSTALL_UTILS=ON -DCMAKE_INSTALL_PREFIX=${BASE_PATH}/usr \
-DLLVM_ENABLE_DUMP=off -DLLVM_ENABLE_ZLIB=on -DLLVM_CCACHE_BUILD=on -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ../llvm/llvm
RUN ninja && ninja install
FROM ubuntu:23.04
ENV DEBIAN_FRONTEND noninteractive
ARG BASE_PATH=/llvm
COPY --from=build ${BASE_PATH}/usr ${BASE_PATH}/usr
RUN --mount=type=cache,id=1,target=/var/cache/apt --mount=type=cache,target=/var/lib/apt \
apt update -y \
&& apt install -y build-essential