2 ##############################################################################
3 # Project specific settings
4 ##############################################################################
25 - if [ "${TRAVIS_OS_NAME}" == "linux" ]; then
27 export PATH="$HOME/usr/bin:$PATH";
28 wget https://cmake.org/files/v3.7/cmake-3.7.2-Linux-x86_64.sh --no-check-certificate;
29 chmod +x cmake-3.7.2-Linux-x86_64.sh;
30 ./cmake-3.7.2-Linux-x86_64.sh --prefix=$HOME/usr --exclude-subdir --skip-license;
36 - if [ "${BUILD_TYPE}" == "Coverage" -a "${TRAVIS_OS_NAME}" == "linux" ]; then
37 PATH=~/.local/bin:${PATH};
38 pip install --user --upgrade pip;
39 pip install --user cpp-coveralls;
40 pip install --user codecov;
41 pip install --user coverage;
45 # Add an IPv6 config - see the corresponding Travis issue
46 # https://github.com/travis-ci/travis-ci/issues/8361
47 - if [ "${ENABLE_IPV6}" == "YES" -a "${TRAVIS_OS_NAME}" == "linux" ]; then
48 echo "Activating IPv6 on Travis";
49 sudo sh -c 'echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6';
51 # Check some settings of the build server (operating system, IPv6 availability, directory)
53 - if [ "${TRAVIS_OS_NAME}" == "linux" ]; then
55 cat /etc/network/interfaces || true;
60 - if [ "${TRAVIS_OS_NAME}" == "linux" ]; then
61 apt-cache search gcc | grep "GNU C compiler";
62 apt-cache search clang | grep compiler;
64 - if [[ "${BUILD_TYPE}" == "OSX_OPENSSL_1_1" ]]; then HOMEBREW_NO_AUTO_UPDATE=1 brew install openssl@1.1 ;fi
65 # Generate the build scripts with CMake
70 - gcc unittest/cgi_test.c -o output/cgi_test.cgi
74 -DCMAKE_BUILD_TYPE=${BUILD_TYPE}
75 -DBUILD_SHARED_LIBS=${BUILD_SHARED}
76 "-DCIVETWEB_THIRD_PARTY_DIR=${HOME}/third-party"
77 -DCIVETWEB_ENABLE_THIRD_PARTY_OUTPUT=YES
78 -DCIVETWEB_ENABLE_SSL=${ENABLE_SSL}
79 -DCIVETWEB_DISABLE_CGI=${NO_CGI}
80 -DCIVETWEB_SERVE_NO_FILES=${NO_FILES}
81 -DCIVETWEB_ENABLE_SSL_DYNAMIC_LOADING=${ENABLE_SSL_DYNAMIC_LOADING}
82 -DCIVETWEB_SSL_OPENSSL_API_1_0=${OPENSSL_1_0}
83 -DCIVETWEB_SSL_OPENSSL_API_1_1=${OPENSSL_1_1}
84 -DCIVETWEB_ENABLE_WEBSOCKETS=${ENABLE_WEBSOCKETS}
85 -DCIVETWEB_ENABLE_CXX=${ENABLE_CXX}
86 -DCIVETWEB_ENABLE_SERVER_STATS=${ENABLE_SERVER_STATS}
87 -DCIVETWEB_ENABLE_LUA=${ENABLE_LUA}
88 -DCIVETWEB_ENABLE_LUA_SHARED=${ENABLE_LUA_SHARED}
89 -DCIVETWEB_ENABLE_DUKTAPE=${ENABLE_DUKTAPE}
90 -DCIVETWEB_DISABLE_CACHING=${NO_CACHING}
91 -DCIVETWEB_C_STANDARD=${C_STANDARD}
92 -DCIVETWEB_CXX_STANDARD=${CXX_STANDARD}
93 -DCIVETWEB_ALLOW_WARNINGS=${ALLOW_WARNINGS}
94 -DCIVETWEB_ENABLE_IPV6=${ENABLE_IPV6}
95 ${ADDITIONAL_CMAKE_ARGS}
99 -DCMAKE_BUILD_TYPE=${BUILD_TYPE}
100 -DBUILD_SHARED_LIBS=${BUILD_SHARED}
101 "-DCIVETWEB_THIRD_PARTY_DIR=${HOME}/third-party"
102 -DCIVETWEB_ENABLE_THIRD_PARTY_OUTPUT=YES
103 -DCIVETWEB_ENABLE_SSL=${ENABLE_SSL}
104 -DCIVETWEB_DISABLE_CGI=${NO_CGI}
105 -DCIVETWEB_SERVE_NO_FILES=${NO_FILES}
106 -DCIVETWEB_ENABLE_SSL_DYNAMIC_LOADING=${ENABLE_SSL_DYNAMIC_LOADING}
107 -DCIVETWEB_SSL_OPENSSL_API_1_0=${OPENSSL_1_0}
108 -DCIVETWEB_SSL_OPENSSL_API_1_1=${OPENSSL_1_1}
109 -DCIVETWEB_ENABLE_WEBSOCKETS=${ENABLE_WEBSOCKETS}
110 -DCIVETWEB_ENABLE_CXX=${ENABLE_CXX}
111 -DCIVETWEB_ENABLE_SERVER_STATS=${ENABLE_SERVER_STATS}
112 -DCIVETWEB_ENABLE_LUA=${ENABLE_LUA}
113 -DCIVETWEB_ENABLE_LUA_SHARED=${ENABLE_LUA_SHARED}
114 -DCIVETWEB_ENABLE_DUKTAPE=${ENABLE_DUKTAPE}
115 -DCIVETWEB_DISABLE_CACHING=${NO_CACHING}
116 -DCIVETWEB_C_STANDARD=${C_STANDARD}
117 -DCIVETWEB_CXX_STANDARD=${CXX_STANDARD}
118 -DCIVETWEB_ALLOW_WARNINGS=${ALLOW_WARNINGS}
119 -DCIVETWEB_ENABLE_IPV6=${ENABLE_IPV6}
120 ${ADDITIONAL_CMAKE_ARGS}
124 # Modifications due to Travis IPv6 issues:
125 # https://github.com/travis-ci/travis-ci/issues/8711
126 # https://github.com/travis-ci/travis-ci/issues/8361
127 # DCIVETWEB_ENABLE_IPV6=${ENABLE_IPV6} or =NO
130 - if [ "${MACOSX_PACKAGE}" == "1" ]; then
131 cd "${TRAVIS_BUILD_DIR}";
132 make -f Makefile.osx package;
134 - if [ "${RUN_UNITTEST}" == "1" ]; then
135 CTEST_OUTPUT_ON_FAILURE=1 make all test;
139 - echo "Show all test logs:"
140 - if [ "${RUN_UNITTEST}" == "1" ]; then
141 for f in unittest/test-*.log; do printf "\n$f:\n"; cat $f; done;
142 for f in unittest/test-*.xml; do printf "\n$f:\n"; cat $f; done;
144 - echo "Build and test script DONE"
146 # Coveralls options: https://github.com/eddyxu/cpp-coveralls/blob/master/README.md
148 - if [ "${BUILD_TYPE}" == "Coverage" -a "${TRAVIS_OS_NAME}" == "linux" ]; then
149 echo "Preparing coverage tests";
150 echo "Creating coveralls coverage report";
151 coveralls --include src --exclude src/main.c --exclude src/third_party --include include --gcov-options '\-lp' --root .. --build-root .;
152 echo "Creating codecov coverage report";
153 bash <(curl -s https://codecov.io/bash);
154 echo "All coverage reports created";
157 conan-linux: &conan-linux
168 - ./conan/travis/install.sh
172 - ./conan/travis/build.sh
176 conan-osx: &conan-osx
183 - ./conan/travis/install.sh
187 - ./conan/travis/build.sh
192 #########################################################################################
193 #########################################################################################
194 ##### START OF BUILD MATRIX #########################################################
195 #########################################################################################
196 #########################################################################################
203 #########################################################################################
204 ##### TRUSTY ########################################################################
205 #########################################################################################
214 - ubuntu-toolchain-r-test
215 - llvm-toolchain-precise-3.8
220 N=Clang3.8-Linux-Minimal-Debug
221 MATRIX_EVAL="CC=clang-3.8 && CXX=clang++-3.8"
223 ENABLE_SSL_DYNAMIC_LOADING=YES
236 ENABLE_SERVER_STATS=NO
249 - ubuntu-toolchain-r-test
250 - llvm-toolchain-precise-3.8
255 N=Clang3.8-Linux-Default-Release
256 MATRIX_EVAL="CC=clang-3.8 && CXX=clang++-3.8"
258 ENABLE_SSL_DYNAMIC_LOADING=YES
271 ENABLE_SERVER_STATS=NO
284 - ubuntu-toolchain-r-test
289 N=GCC5-Linux-Complete-NoLua-Release
290 MATRIX_EVAL="CC=gcc-5 && CXX=g++-5"
292 ENABLE_SSL_DYNAMIC_LOADING=YES
304 ENABLE_WEBSOCKETS=YES
305 ENABLE_SERVER_STATS=YES
313 #########################################################################################
314 ##### COVERAGE ######################################################################
315 #########################################################################################
322 N=GCCAnyVersion-Linux-Coverage
324 ENABLE_SSL_DYNAMIC_LOADING=YES
336 ENABLE_WEBSOCKETS=YES
337 ENABLE_SERVER_STATS=YES
344 #########################################################################################
345 ##### SHARED ########################################################################
346 #########################################################################################
353 N=Clang-Linux-Default-Shared
355 ENABLE_SSL_DYNAMIC_LOADING=YES
368 ENABLE_SERVER_STATS=NO
375 #########################################################################################
376 ##### BUILD TYPES ###################################################################
377 #########################################################################################
379 # According to CMakeLists, options are:
380 # None Debug Release RelWithDebInfo MinSizeRel Coverage
387 N=GCCLinuxDefault_RelWithDebInfo
388 BUILD_TYPE=RelWithDebInfo
389 ENABLE_SSL_DYNAMIC_LOADING=YES
412 N=GCCLinuxDefault_MinSizeRel
413 BUILD_TYPE=MinSizeRel
414 ENABLE_SSL_DYNAMIC_LOADING=YES
437 N=GCCLinuxDefault_None
439 ENABLE_SSL_DYNAMIC_LOADING=YES
457 #########################################################################################
458 ##### XENIAL, BIONIC, FOCAL #########################################################
459 #########################################################################################
467 N=GCCLinuxDefault_xenial
469 ENABLE_SSL_DYNAMIC_LOADING=YES
493 N=GCCLinuxDefault_bionic
495 ENABLE_SSL_DYNAMIC_LOADING=YES
523 N=GCCLinuxDefault_focal
525 ENABLE_SSL_DYNAMIC_LOADING=YES
545 #########################################################################################
546 ##### OSX BUILD #####################################################################
547 #########################################################################################
555 N=Clang-OSX-Complete-NoLua-Release-OpenSSL_1_1_NoDynLoad
556 BUILD_TYPE=OSX_OPENSSL_1_1
557 ENABLE_SSL_DYNAMIC_LOADING=NO
569 ENABLE_WEBSOCKETS=YES
570 ENABLE_SERVER_STATS=YES
575 OPENSSL_ROOT_DIR="/usr/local/opt/openssl@1.1"
576 LDFLAGS="-L${OPENSSL_ROOT_DIR}/lib"
577 CFLAGS="-I${OPENSSL_ROOT_DIR}/include"
578 ADDITIONAL_CMAKE_ARGS="-DCMAKE_SHARED_LINKER_FLAGS=${LDFLAGS} -DCMAKE_C_FLAGS=${CFLAGS}"
579 PATH="${OPENSSL_ROOT_DIR}/bin:$PATH"
580 DYLD_LIBRARY_PATH="${OPENSSL_ROOT_DIR}/lib:${DYLD_LIBRARY_PATH}"
591 ENABLE_SSL_DYNAMIC_LOADING=YES
603 ENABLE_WEBSOCKETS=YES
604 ENABLE_SERVER_STATS=NO
611 #########################################################################################
612 #########################################################################################
613 ##### END OF BUILD MATRIX ###########################################################
614 #########################################################################################
615 #########################################################################################
618 env: CONAN_GCC_VERSIONS=4.9 CONAN_DOCKER_IMAGE=conanio/gcc49 CONAN_DOCKER_32_IMAGES=1
620 env: CONAN_GCC_VERSIONS=5 CONAN_DOCKER_IMAGE=conanio/gcc5 CONAN_DOCKER_32_IMAGES=1
622 env: CONAN_GCC_VERSIONS=6 CONAN_DOCKER_IMAGE=conanio/gcc6 CONAN_DOCKER_32_IMAGES=1
624 env: CONAN_GCC_VERSIONS=7 CONAN_DOCKER_IMAGE=conanio/gcc7 CONAN_DOCKER_32_IMAGES=1
626 env: CONAN_GCC_VERSIONS=8 CONAN_DOCKER_IMAGE=conanio/gcc8 CONAN_DOCKER_32_IMAGES=1
628 env: CONAN_CLANG_VERSIONS=3.9 CONAN_DOCKER_IMAGE=conanio/clang39 CONAN_DOCKER_32_IMAGES=1
630 env: CONAN_CLANG_VERSIONS=4.0 CONAN_DOCKER_IMAGE=conanio/clang40 CONAN_DOCKER_32_IMAGES=1
632 env: CONAN_CLANG_VERSIONS=5.0 CONAN_DOCKER_IMAGE=conanio/clang50 CONAN_DOCKER_32_IMAGES=1
634 env: CONAN_CLANG_VERSIONS=6.0 CONAN_DOCKER_IMAGE=conanio/clang60 CONAN_DOCKER_32_IMAGES=1
637 env: CONAN_APPLE_CLANG_VERSIONS=8.1
640 env: CONAN_APPLE_CLANG_VERSIONS=9.0
643 env: CONAN_APPLE_CLANG_VERSIONS=9.1
646 env: CONAN_APPLE_CLANG_VERSIONS=10.0
648 # Remove Lua build, until someone knows how to fix the CMake files
657 # - ubuntu-toolchain-r-test
658 # - llvm-toolchain-precise-3.8
664 # N=Clang3.8-Linux-Complete-WithLua-Debug
665 # MATRIX_EVAL="CC=clang-3.8 && CXX=clang++-3.8"
667 # ENABLE_SSL_DYNAMIC_LOADING=YES
671 # ENABLE_LUA_SHARED=YES
679 # ENABLE_WEBSOCKETS=YES
680 # ENABLE_SERVER_STATS=YES
682 # ENABLE_LUA_SHARED=YES