+#-------------------------------------------------------------------------------
+# llvm_builder is to prepare llvm binary built from source
+FROM ubuntu:14.04 as llvm_builder
+
+ARG HTTP_PROXY
+ARG HTTPS_PROXY
+ARG UBUNTU_MIRROR
+
+RUN if [ -n "$HTTP_PROXY" ] ; then echo "Acquire::http::proxy \"${HTTP_PROXY}\";" >> /etc/apt/apt.conf ; fi
+RUN if [ -n "$HTTPS_PROXY" ] ; then echo "Acquire::https::proxy \"${HTTPS_PROXY}\";" >> /etc/apt/apt.conf ; fi
+RUN if [ -n "$UBUNTU_MIRROR" ] ; then sed "s/archive.ubuntu.com/${UBUNTU_MIRROR}/g" -i /etc/apt/sources.list ; fi
+RUN if [ -n "$HTTP_PROXY" ] || [ -n "$HTTPS_PROXY" ] ; then echo "use_proxy=yes" >> /root/.wgetrc ; fi
+RUN if [ -n "$HTTP_PROXY" ] ; then echo "http_proxy=${HTTP_PROXY}" >> /root/.wgetrc ; fi
+RUN if [ -n "$HTTPS_PROXY" ] ; then echo "https_proxy=${HTTPS_PROXY}" >> /root/.wgetrc ; fi
+
+RUN apt update
+
+# Install 'add-apt-repository'
+RUN apt-get install -y software-properties-common
+
+# Add CMake 3.5 PPA, llvm 6.0 requires at least 3.4.3
+RUN add-apt-repository -y ppa:ubuntu-toolchain-r/rust
+RUN apt update
+
+# Install base dependencies
+RUN apt install -y make cmake3 wget g++
+
+# Build llvm 6.0.1 from source
+WORKDIR /root/llvm
+RUN wget http://releases.llvm.org/6.0.1/llvm-6.0.1.src.tar.xz
+RUN tar xvf llvm-6.0.1.src.tar.xz
+WORKDIR /root/llvm/llvm_build
+RUN cmake ../llvm-6.0.1.src/ -DCMAKE_INSTALL_PREFIX=/opt/usr \
+-DCMAKE_BUILD_TYPE=Release \
+-DBUILD_SHARED_LIBS=ON \
+-DLLVM_TARGETS_TO_BUILD="X86;ARM"
+RUN make -j$(nproc)
+RUN cmake --build . --target install
+
+#-------------------------------------------------------------------------------
FROM ubuntu:14.04
ARG HTTP_PROXY
RUN apt install -y libboost-thread-dev # Caffe
RUN apt install -y libatlas-base-dev # Caffe
+# Copy installed llvm binary from llvm_builder image
+COPY --from=llvm_builder /opt/usr /usr
+
# Clean archives (to reduce image size)
RUN apt-get clean -y