forked from bloomberg/clangmetatool
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.travis.clang7.Dockerfile
64 lines (55 loc) · 1.89 KB
/
.travis.clang7.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
FROM ubuntu:18.10
# Install build dependencies
RUN apt-get update && apt-get install -y \
gcc-7 \
g++-7 \
clang-format-7 \
clang-tools-7 \
clang-tidy-7 \
cmake \
libclang-7-dev \
libfile-spec-native-perl \
libgtest-dev
# Set up clang compilers
ENV CC=/usr/bin/gcc-7 \
CXX=/usr/bin/g++-7 \
MAKEFLAGS="-j2"
# Fix issues with gtest installation from ubuntu debian
RUN cd /usr/src/gtest && \
cmake . && \
make && \
mv libg* /usr/lib
# Fix issues with clang installation from ubuntu debian
RUN mkdir -p /usr/lib/cmake && \
ln -s /usr/share/llvm-7/cmake /usr/lib/cmake/clang && \
for hdr in /usr/lib/llvm-7/include/clang/*; do \
ln -s $hdr /usr/include/clang/$(basename $hdr); \
done && \
ln -s /usr/lib/llvm-7/include/clang-c /usr/include/clang-c && \
ln -s /usr/lib/llvm-7/include/llvm /usr/include/llvm && \
ln -s /usr/lib/llvm-7/include/llvm-c /usr/include/llvm-c && \
for lib in /usr/lib/llvm-7/lib/*; do \
ln -s $lib /usr/lib/$(basename $lib); \
done && \
for bin in /usr/bin/*-7; do \
ln -s $bin /usr/bin/$(basename $bin | rev | cut -d '-' -f2- | rev); \
done
COPY . clangmetatool/
WORKDIR clangmetatool
# Build tool, run tests, and do a test install
RUN mkdir build && cd build && \
cmake -DClang_DIR=/usr/share/llvm-7/cmake .. && \
make all test && \
make install && \
cd .. && rm -rf build
# Fix includes for clangmetatool (due to ubuntu debian's clang)
RUN ln -s /usr/lib/llvm-7/include/clangmetatool /usr/include/clangmetatool
# Build skeleton
RUN mkdir skeleton/build && cd skeleton/build && \
cmake -DClang_DIR=/usr/lib/llvm-7/lib/cmake/clang \
-Dclangmetatool_DIR=/usr/lib/llvm-7/lib/cmake/clang .. && \
make all && \
make install && \
cd - && rm -rf skeleton/build
# Run the tool on itself
RUN yourtoolname $(find src skeleton -name '*.cpp') -- -std=gnu++14