1111 - LINKING="static"
1212before_install :
1313 - eval "${MATRIX_EVAL}"
14+ # Installing iwyu manually because clang and iwyu paths won't match on Ubuntu otherwise.
15+ - if [ "$IWYU" = "iwyu" ]; then
16+ CLANG_VERSION=`clang --version | grep version | cut -f3 -d' ' | cut -f1 -d'-'` ;
17+ CLANG_PKG_VERSION=`echo $CLANG_VERSION | cut -f1,2 -d'.'`
18+ CLANG_PREFIX_PATH="/usr/local/clang-${CLANG_VERSION}/lib/clang/${CLANG_VERSION}" ;
19+ CLANG_BIN_PATH="/usr/local/clang-${CLANG_VERSION}/bin" ;
20+ git clone https://github.com/include-what-you-use/include-what-you-use.git ;
21+ cd include-what-you-use ;
22+ echo "$CLANG_PKG_VERSION" | grep '\.[0-9]$' ;
23+ if [ $? -eq 0 ]; then
24+ git checkout clang_${CLANG_PKG_VERSION} ;
25+ else
26+ git checkout clang_${CLANG_PKG_VERSION}.0 ;
27+ fi;
28+ cd .. ;
29+ mkdir build_iwyu ;
30+ cd build_iwyu ;
31+ cmake -G "Unix Makefiles" -DCMAKE_PREFIX_PATH=$CLANG_PREFIX_PATH -DCMAKE_C_COMPILER=$CLANG_BIN_PATH/clang -DCMAKE_CXX_COMPILER=$CLANG_BIN_PATH/clang++ ../include-what-you-use ;
32+ make ;
33+ sudo make install ;
34+ cd .. ;
35+ fi
1436 - export LDFLAGS="$LDFLAGS -L/usr/local/lib -L/usr/lib"
1537 - export PATH=$PATH:/usr/local/lib
1638 - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
@@ -37,21 +59,32 @@ install:
3759 - ./bootstrap
3860 - mkdir build
3961 - cd build
40- - if [ "$LINKING" = "static" ]; then
62+ - |
63+ if [ "$LINKING" = "static" ]; then
4164 ../configure --enable-static --disable-fastopen;
4265 elif [ "$DEBUG" = "debug" ] && [ "$COVERAGE" = "coverage" ]; then
4366 ../configure --enable-debug --enable-coverage --disable-shared --disable-fastopen;
4467 elif [ "$DEBUG" = "debug" ]; then
4568 ../configure --enable-debug --disable-shared --disable-fastopen;
4669 elif [ "$VALGRIND" = "valgrind" ]; then
4770 ../configure --enable-debug --disable-fastopen --disable-valgrind-helgrind --disable-valgrind-drd --disable-valgrind-sgcheck;
71+ elif [ "$IWYU" = "iwyu" ]; then
72+ ../configure --disable-examples;
4873 else
4974 ../configure --disable-fastopen;
5075 fi
51- - make
76+ # Make or run iwyu. If running iwyu, check for the result code to be 2 (IWYU always returns an error code, if it is 2, no corrections are necessary).
77+ - |
78+ if [ "$IWYU" = "iwyu" ]; then
79+ make -k CXX='/usr/local/bin/include-what-you-use -Xiwyu --mapping_file=${top_builddir}/../custom_iwyu.imp' CXXFLAGS="-isystem ${CLANG_PREFIX_PATH}/include -std=c++11 -DHTTPSERVER_COMPILATION -D_REENTRANT $CXXFLAGS" ;
80+ if [ $? -ne 2 ]; then
81+ return 1;
82+ fi
83+ else
84+ make;
85+ fi
5286script :
53- - make check
54- - cat test/test-suite.log
87+ - if [ "$IWYU" != "iwyu" ]; then make check; cat test/test-suite.log; fi
5588 - if [ "$VALGRIND" = "valgrind" ]; then make check-valgrind; fi;
5689 - if [ "$VALGRIND" = "valgrind" ]; then cat test/test-suite-memcheck.log; fi;
5790 - if [ "$TRAVIS_OS_NAME" = "linux" ]; then cd ../src/; cppcheck --error-exitcode=1 .; cd ../build; fi
@@ -309,3 +342,17 @@ matrix:
309342 - clang-9
310343 env :
311344 - MATRIX_EVAL="CC=clang-9 && CXX=clang++-9"
345+ - os : linux
346+ compiler : clang
347+ addons :
348+ apt :
349+ sources :
350+ - llvm-toolchain-xenial-7
351+ - ubuntu-toolchain-r-test
352+ packages :
353+ - iwyu
354+ - cmake
355+ - llvm-dev
356+ - libclang-dev
357+ env :
358+ - MATRIX_EVAL="IWYU=iwyu"
0 commit comments