forked from MerHS/compiler-explorer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dockerfile
118 lines (100 loc) · 3.71 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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
FROM ubuntu:20.04
ENV TZ=Asia/Seoul
RUN apt-get -y update \
&& ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# install common build packages
WORKDIR /root
RUN apt-get -y install build-essential git-all wget curl vim software-properties-common m4
# install python/pip
RUN add-apt-repository ppa:deadsnakes/ppa \
&& apt-get -y install python3.9 \
&& update-alternatives --install /usr/bin/python python /usr/bin/python3.9 3 \
&& apt-get -y install python3-distutils \
&& curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py \
&& python get-pip.py \
&& rm get-pip.py \
&& python -m pip install toml
# install cmake
RUN mkdir -p /root/lib/cmake \
&& wget https://github.com/Kitware/CMake/releases/download/v3.21.3/cmake-3.21.3-linux-x86_64.sh \
&& bash ./cmake-3.21.3-linux-x86_64.sh --skip-license --prefix=/root/lib/cmake \
&& rm cmake-3.21.3-linux-x86_64.sh
ENV PATH "$PATH:/root/lib/cmake/bin"
# install ninja-build
RUN apt-get -y install ninja-build
# install clang/llvm
RUN wget https://apt.llvm.org/llvm.sh \
&& bash llvm.sh 13 \
&& rm llvm.sh
ENV PATH "$PATH:/usr/lib/llvm-13/bin"
# install node
ENV NVM_DIR /root/.nvm
ENV NODE_VERSION 12.22.6
RUN curl https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash \
&& . $NVM_DIR/nvm.sh \
&& nvm install $NODE_VERSION \
&& nvm alias default $NODE_VERSION \
&& nvm use default
ENV NODE_PATH $NVM_DIR/versions/node/v$NODE_VERSION/lib/node_modules
ENV PATH $NVM_DIR/versions/node/v$NODE_VERSION/bin:$PATH
# install jvm
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xB1998361219BD9C9 \
&& curl -O https://cdn.azul.com/zulu/bin/zulu-repo_1.0.0-2_all.deb \
&& apt-get -y install ./zulu-repo_1.0.0-2_all.deb \
&& apt-get update \
&& apt-get -y install zulu11-jdk \
&& rm ./zulu-repo_1.0.0-2_all.deb
# make build paths
RUN mkdir -p /root/lib/llvm \
&& mkdir -p /root/lib/z3 \
&& mkdir -p /root/lib/cvc5
# build llvm
RUN git clone --depth=1 https://github.com/llvm/llvm-project.git && mkdir -p /root/llvm-project/build
WORKDIR /root/llvm-project/build
RUN cmake -G Ninja ../llvm \
-DLLVM_ENABLE_PROJECTS='clang;libcxx;libcxxabi;mlir' \
-DLLVM_BUILD_EXAMPLES=ON \
-DLLVM_TARGETS_TO_BUILD="X86;NVPTX;AMDGPU" \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_ASSERTIONS=ON \
-DCMAKE_INSTALL_PREFIX=/root/lib/llvm \
-DCMAKE_C_COMPILER=clang \
-DCMAKE_CXX_COMPILER=clang++ \
-DLLVM_ENABLE_LLD=ON
RUN cmake --build .
RUN cmake --build . --target install
# build z3
WORKDIR /root
RUN git clone --depth=1 https://github.com/Z3Prover/z3 && mkdir -p /root/z3/build
RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 3
WORKDIR /root/z3
RUN CXX=clang++ CC=clang python scripts/mk_make.py --prefix=/root/lib/z3
WORKDIR /root/z3/build
RUN make -j8 && make install
# build cvc5
WORKDIR /root
RUN git clone --depth=1 https://github.com/cvc5/cvc5 && mkdir -p /root/cvc5/build
WORKDIR /root/cvc5
RUN bash ./configure.sh --prefix=/root/lib/cvc5 --auto-download
WORKDIR /root/cvc5/build
RUN make -j8 && make check && make install
# clean repositories
RUN rm -rf /root/llvm-project /root/cvc5 /root/z3
# build mlir-tv
WORKDIR /root
RUN git clone https://github.com/aqjune/mlir-tv && mkdir -p /root/mlir-tv/build
WORKDIR /root/mlir-tv/build
RUN cmake -DMLIR_DIR=/root/lib/llvm \
-DZ3_DIR=/root/lib/z3 \
-DCVC5_DIR=/root/lib/cvc5 \
-DCMAKE_BUILD_TYPE=RELEASE \
..
RUN cmake --build .
# run compiler explorer
WORKDIR /root
RUN git clone https://github.com/MerHS/compiler-explorer
WORKDIR /root/compiler-explorer
RUN echo '#!/usr/bin/bash\ncd /root/compiler-explorer\nmake EXTRA_ARGS="--language mlir-tv"' > /root/run.sh \
&& chmod +x /root/run.sh
EXPOSE 10240
CMD ["/root/run.sh"]