@@ -23,8 +23,9 @@ RUN echo "check_certificate = off" > /etc/wgetrc
2323
2424# We use C++ 17 for UnitTestBot, it is available in gcc-9; default gcc for ubuntu:18.04 is gcc-7
2525RUN add-apt-repository ppa:ubuntu-toolchain-r/test
26- RUN apt update && apt install -y --no-install-recommends gcc-9 g++-9
27- # Skip 32bits libs installation before LLVM compilation
26+ RUN apt update && apt install -y --no-install-recommends gcc-9 g++-9 gcc-multilib g++-multilib gcc-9-multilib g++-9-multilib
27+ 
28+ # Set gcc-9 as default gcc version
2829RUN sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 100
2930RUN sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 100
3031RUN sudo update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-9 100
@@ -69,29 +70,34 @@ WORKDIR /home/utbot
6970USER root
7071ARG LLVM_VERSION_MAJOR
7172RUN mkdir $UTBOT_ALL/llvm_gold_plugin
72- COPY building_dependencies /llvm_gold_plugin/ plugin-api.h $UTBOT_ALL/llvm_gold_plugin 
73+ RUN wget -P $UTBOT_ALL /llvm_gold_plugin https://raw.githubusercontent.com/bminor/binutils-gdb/fd67aa1129fd006ad49ed5ecb2b063705211553a/include/ plugin-api.h
7374RUN git clone --single-branch --branch "release/${LLVM_VERSION_MAJOR}.x" --depth 1 "https://github.com/llvm/llvm-project.git" $UTBOT_ALL/llvm-project
7475WORKDIR $UTBOT_ALL/llvm-project
7576RUN mkdir build && cd build \
7677    && $UTBOT_CMAKE_BINARY \
77-     -DCMAKE_BUILD_TYPE=MinSizeRel  \
78+     -DCMAKE_BUILD_TYPE=Release  \
7879    -DCMAKE_INSTALL_PREFIX=$UTBOT_INSTALL_DIR \
7980    -DLLVM_INCLUDE_TESTS=OFF \
8081    -DLLVM_BINUTILS_INCDIR=$UTBOT_ALL/llvm_gold_plugin \
8182    -DLLVM_ENABLE_RTTI=ON \
8283    -DLLVM_ENABLE_EH=ON \
8384    -DLLVM_TARGETS_TO_BUILD="host" \
84-     -DLLVM_ENABLE_PROJECTS="clang;compiler-rt;libc;libclc;libcxx;libcxxabi;lld;lldb;clang-tools-extra" -G "Ninja" ../llvm \
85+     -DLLVM_INSTALL_UTILS=ON \
86+     -DLLVM_ENABLE_PROJECTS="clang;libclc;lld;lldb;clang-tools-extra" \
87+     -DLLVM_ENABLE_RUNTIMES="compiler-rt;libc;libcxx;libcxxabi" \
88+     -G "Ninja" ../llvm \
8589    && $UTBOT_CMAKE_BINARY --build . --target install
8690
87- 
8891# Install KLEE dependencies
8992ENV CURL_CA_BUNDLE=""
9093RUN sudo -E pip3 install tabulate==0.8.7 \
9194                         typing==3.7.4.3 \
9295                         lit==0.11.0.post1 \
9396                         wllvm==1.3.1
9497
98+ ENV CFLAGS="-gdwarf-4"
99+ ENV CXXFLAGS="-gdwarf-4"
100+ 
95101WORKDIR $UTBOT_ALL/llvm-project
96102RUN mkdir libcxx_build && cd libcxx_build \
97103    && export CC=wllvm \
@@ -125,7 +131,7 @@ RUN cd $UTBOT_ALL/grpc && git submodule update --init
125131RUN cd $UTBOT_ALL/grpc \
126132  && mkdir -p cmake/build \
127133  && cd cmake/build \
128-   && $UTBOT_CMAKE_BINARY -DgRPC_INSTALL=ON -DgRPC_BUILD_TESTS=OFF -DCMAKE_BUILD_TYPE=MinSizeRel  -DCMAKE_INSTALL_PREFIX=$UTBOT_INSTALL_DIR ../.. \
134+   && $UTBOT_CMAKE_BINARY -DgRPC_INSTALL=ON -DgRPC_BUILD_TESTS=OFF -DCMAKE_BUILD_TYPE=Release  -DCMAKE_INSTALL_PREFIX=$UTBOT_INSTALL_DIR ../.. \
129135  && make -j`nproc` \
130136  && make install \
131137  && cd $UTBOT_ALL \
@@ -205,13 +211,16 @@ RUN wget https://github.com/agauniyal/rang/releases/download/v3.1.0/rang.hpp -P
205211COPY building_dependencies/runtime_env.sh /home/utbot/.bashrc
206212COPY building_dependencies/runtime_env.sh /root/.bashrc
207213
208- # Install uclibc
209- RUN git clone -b klee_uclibc_v1.2 https://github.com/klee/klee-uclibc.git $UTBOT_ALL/klee-uclibc
210- WORKDIR $UTBOT_ALL/klee-uclibc
211- RUN ./configure --make-llvm-lib && make -j`nproc`
214+ # We need to install version 32 and 64 for klee.
215+ # Install uclibc-32
216+ RUN git clone -b klee_uclibc_v1.2 https://github.com/klee/klee-uclibc.git $UTBOT_ALL/klee-uclibc-32
217+ WORKDIR $UTBOT_ALL/klee-uclibc-32
218+ RUN ./configure --make-llvm-lib && make KLEE_CFLAGS="-m32" -j`nproc`
212219
213- # Install 32bits libs AFTER LLVM compilation
214- RUN apt update && apt install -y --no-install-recommends gcc-multilib g++-multilib gcc-9-multilib g++-9-multilib
220+ # Install uclibc-64
221+ RUN git clone -b klee_uclibc_v1.2 https://github.com/klee/klee-uclibc.git $UTBOT_ALL/klee-uclibc-64
222+ WORKDIR $UTBOT_ALL/klee-uclibc-64
223+ RUN ./configure --make-llvm-lib && make -j`nproc`
215224
216225# Download library for access private members
217226RUN git clone https://github.com/martong/access_private.git $UTBOT_ALL/access_private
0 commit comments