#=================
# Update clang to a version with improved tsan and fuzzing capabilities

RUN apt-get update && apt-get -y install python cmake && apt-get clean

RUN git clone -n -b release_38 http://llvm.org/git/llvm.git && ${'\\'}
  cd llvm && git checkout ad57503 && cd ..
RUN git clone -n -b release_38 http://llvm.org/git/clang.git && ${'\\'}
  cd clang && git checkout ad2c56e && cd ..
RUN git clone -n -b release_38 http://llvm.org/git/compiler-rt.git && ${'\\'}
  cd compiler-rt && git checkout 3176922 && cd ..
RUN git clone -n -b release_38 ${'\\'}
  http://llvm.org/git/clang-tools-extra.git && cd clang-tools-extra && ${'\\'}
  git checkout c288525 && cd ..
RUN git clone -n -b release_38 http://llvm.org/git/libcxx.git && ${'\\'}
  cd libcxx && git checkout fda3549  && cd ..
RUN git clone -n -b release_38 http://llvm.org/git/libcxxabi.git && ${'\\'}
  cd libcxxabi && git checkout 8d4e51d && cd ..

RUN mv clang llvm/tools
RUN mv compiler-rt llvm/projects
RUN mv clang-tools-extra llvm/tools/clang/tools
RUN mv libcxx llvm/projects
RUN mv libcxxabi llvm/projects

RUN mkdir llvm-build
RUN cd llvm-build && cmake ${'\\'}
  -DCMAKE_BUILD_TYPE:STRING=Release ${'\\'}
  -DCMAKE_INSTALL_PREFIX:STRING=/usr ${'\\'}
  -DLLVM_TARGETS_TO_BUILD:STRING=X86 ${'\\'}
  ../llvm
RUN make -C llvm-build -j 12 && make -C llvm-build install && rm -rf llvm-build
