-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dockerfile-ispc-buster
64 lines (48 loc) · 2.28 KB
/
Dockerfile-ispc-buster
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
FROM debian:buster
MAINTAINER Dmitry Babokin <dmitry.y.babokin@intel.com>
# ARG TAG=v1.9.2
ARG LLVM_VERSION=7.0
# !!! Make sure that your docker config provides enough memory to the container,
# otherwise LLVM build may fail, as it will use all the cores available to container.
# If you are behind a proxy, let apt-get know about it
#ENV http_proxy=http://proxy.yourcompany.com:888
# Packages required to build ISPC and Clang.
RUN apt-get -y update && \
apt-get install -y wget build-essential vim gcc g++ git subversion python m4 bison flex zlib1g-dev ncurses-dev libtinfo-dev libc6-dev-i386 && \
apt-get install -y cmake clang-7.0 && \
apt-get autoclean
# If you are behind a proxy, you need to configure git and svn.
#RUN git config --global --add http.proxy http://proxy.yourcompany.com:888
WORKDIR /usr/local/src
# Fork ispc on github and clone *your* fork.
#RUN git clone --branch $TAG https://github.com/ispc/ispc.git
RUN git clone https://github.com/ispc/ispc.git
# This is home for Clang builds
RUN mkdir /usr/local/src/llvm
ENV ISPC_HOME=/usr/local/src/ispc
ENV LLVM_HOME=/usr/local/src/llvm
# If you are going to run test for future platforms, go to
# http://www.intel.com/software/sde and download the latest version,
# extract it, add to path and set SDE_HOME.
WORKDIR /usr/local/src/ispc
# Build Clang with all required patches.
# Pass required LLVM_VERSION with --build-arg LLVM_VERSION=<version>.
# By default 5.0 is used.
# Note self-build options, it's required to build clang and ispc with the same compiler,
# i.e. if clang was built by gcc, you may need to use gcc to build ispc (i.e. run "make gcc"),
# or better do clang selfbuild and use it for ispc build as well (i.e. just "make").
# "rm" are just to keep docker image small.
RUN ./alloy.py -b --version=$LLVM_VERSION --selfbuild --git && \
rm -rf $LLVM_HOME/build-$LLVM_VERSION \
$LLVM_HOME/llvm-$LLVM_VERSION \
$LLVM_HOME/bin-$LLVM_VERSION_temp \
$LLVM_HOME/build-$LLVM_VERSION_temp
ENV PATH=$LLVM_HOME/bin-$LLVM_VERSION/bin:$PATH
# Configure ISPC build
RUN mkdir build_$LLVM_VERSION
WORKDIR build_$LLVM_VERSION
RUN cmake ../ -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_INSTALL_PREFIX=/usr/local/src/ispc/bin-$LLVM_VERSION
# Build ISPC
RUN make ispc -j2 && make install
WORKDIR ../
RUN rm -rf build_$LLVM_VERSION