############################################################################## # Travis version specific build environment specification ############################################################################## # The "precise" build environment on Travis is in the process of being decommissioned # see https://blog.travis-ci.com/2017-08-31-trusty-as-default-status # The "precise=true"+"sudo=required" environment seems to lack IPv6 support. # According to some tests, all "sudo=required" environments do not support IPv6, see # https://github.com/travis-ci/travis-ci/issues/8361#issuecomment-328263113 # The container environments for "sudo=false" support IPv6 localhost [::1] # connections for server/client test. Thus, all tests with ENABLE_IPV6=YES # ############################################################################## # Project specific settings ############################################################################## language: c cache: directories: - $HOME/third-party osx_image: xcode8 addons: apt: packages: - cmake - openssl - libssl-dev sources: - kubuntu-backports before_install: - if [ "${TRAVIS_OS_NAME}" == "linux" ]; then mkdir $HOME/usr; export PATH="$HOME/usr/bin:$PATH"; wget https://cmake.org/files/v3.7/cmake-3.7.2-Linux-x86_64.sh --no-check-certificate; chmod +x cmake-3.7.2-Linux-x86_64.sh; ./cmake-3.7.2-Linux-x86_64.sh --prefix=$HOME/usr --exclude-subdir --skip-license; fi - cmake --version install: - if [ "${BUILD_TYPE}" == "Coverage" -a "${TRAVIS_OS_NAME}" == "linux" ]; then PATH=~/.local/bin:${PATH}; pip install --user --upgrade pip; pip install --user cpp-coveralls; fi before_script: # Check some settings of the build server (operating system, IPv6 availability, directory) - uname -a - ifconfig - pwd - ls -la - if [ "${TRAVIS_OS_NAME}" == "linux" ]; then apt-cache search gcc | grep "GNU C compiler"; apt-cache search clang | grep compiler; fi - if [[ "${BUILD_TYPE}" == "OSX_OPENSSL_1_1" ]]; then brew install openssl@1.1 ;fi # Generate the build scripts with CMake - mkdir output - gcc test/cgi_test.c -o output/cgi_test.cgi - cd output - cmake --version - cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DBUILD_SHARED_LIBS=${BUILD_SHARED} "-DCIVETWEB_THIRD_PARTY_DIR=${HOME}/third-party" -DCIVETWEB_ENABLE_THIRD_PARTY_OUTPUT=YES -DCIVETWEB_ENABLE_SSL=${ENABLE_SSL} -DCIVETWEB_DISABLE_CGI=${NO_CGI} -DCIVETWEB_SERVE_NO_FILES=${NO_FILES} -DCIVETWEB_ENABLE_SSL_DYNAMIC_LOADING=${ENABLE_SSL_DYNAMIC_LOADING} -DCIVETWEB_SSL_OPENSSL_API_1_1=${OPENSSL_1_1} -DCIVETWEB_ENABLE_WEBSOCKETS=${ENABLE_WEBSOCKETS} -DCIVETWEB_ENABLE_CXX=${ENABLE_CXX} -DCIVETWEB_ENABLE_IPV6=${ENABLE_IPV6} -DCIVETWEB_ENABLE_SERVER_STATS=${ENABLE_SERVER_STATS} -DCIVETWEB_ENABLE_LUA=${ENABLE_LUA} -DCIVETWEB_ENABLE_LUA_SHARED=${ENABLE_LUA_SHARED} -DCIVETWEB_ENABLE_DUKTAPE=${ENABLE_DUKTAPE} -DCIVETWEB_DISABLE_CACHING=${NO_CACHING} -DCIVETWEB_C_STANDARD=${C_STANDARD} -DCIVETWEB_CXX_STANDARD=${CXX_STANDARD} -DCIVETWEB_ALLOW_WARNINGS=${ALLOW_WARNINGS} ${ADDITIONAL_CMAKE_ARGS} .. - ls -la script: - if [ "${MACOSX_PACKAGE}" == "1" ]; then cd "${TRAVIS_BUILD_DIR}"; make -f Makefile.osx package; else CTEST_OUTPUT_ON_FAILURE=1 make all test; fi # Coveralls options: https://github.com/eddyxu/cpp-coveralls/blob/master/README.md after_success: - if [ "${BUILD_TYPE}" == "Coverage" -a "${TRAVIS_OS_NAME}" == "linux" ]; then coveralls --include src --exclude src/main.c --exclude src/third_party --include include --gcov-options '\-lp' --root .. --build-root .; bash <(curl -s https://codecov.io/bash); fi ############################################################################## # build matrix (auto generated) ############################################################################## matrix: fast_finish: false include: - dist: trusty sudo: false os: linux compiler: clang addons: apt: sources: - ubuntu-toolchain-r-test - llvm-toolchain-precise-3.8 packages: - clang-3.8 env: idx=1 N=Clang3.8-Linux-Minimal-Debug MATRIX_EVAL="CC=clang-3.8 && CXX=clang++-3.8" BUILD_TYPE=Debug ENABLE_SSL_DYNAMIC_LOADING=YES OPENSSL_1_1=NO ENABLE_CXX=NO ENABLE_LUA_SHARED=NO C_STANDARD=auto CXX_STANDARD=auto FEATURES=0 BUILD_SHARED=NO NO_FILES=YES ENABLE_SSL=NO NO_CGI=YES ENABLE_IPV6=NO ENABLE_WEBSOCKETS=NO ENABLE_SERVER_STATS=NO ENABLE_LUA=NO ENABLE_DUKTAPE=NO NO_CACHING=NO ALLOW_WARNINGS=YES - dist: trusty sudo: false os: linux compiler: clang addons: apt: sources: - ubuntu-toolchain-r-test - llvm-toolchain-precise-3.8 packages: - clang-3.8 env: idx=2 N=Clang3.8-Linux-Default-Release MATRIX_EVAL="CC=clang-3.8 && CXX=clang++-3.8" BUILD_TYPE=Release ENABLE_SSL_DYNAMIC_LOADING=YES OPENSSL_1_1=NO ENABLE_CXX=NO ENABLE_LUA_SHARED=NO C_STANDARD=auto CXX_STANDARD=auto FEATURES=7 BUILD_SHARED=NO NO_FILES=NO ENABLE_SSL=YES NO_CGI=NO ENABLE_IPV6=NO ENABLE_WEBSOCKETS=NO ENABLE_SERVER_STATS=NO ENABLE_LUA=NO ENABLE_DUKTAPE=NO NO_CACHING=NO NO_CACHING=NO ALLOW_WARNINGS=YES - dist: trusty sudo: false os: linux compiler: clang addons: apt: sources: - ubuntu-toolchain-r-test - llvm-toolchain-precise-3.8 packages: - clang-3.8 env: idx=3 N=Clang3.8-Linux-Default-Release MATRIX_EVAL="CC=clang-3.8 && CXX=clang++-3.8" BUILD_TYPE=Release ENABLE_SSL_DYNAMIC_LOADING=YES OPENSSL_1_1=NO ENABLE_CXX=NO ENABLE_LUA_SHARED=NO C_STANDARD=auto CXX_STANDARD=auto FEATURES=7 BUILD_SHARED=NO NO_FILES=NO ENABLE_SSL=YES NO_CGI=NO ENABLE_IPV6=NO ENABLE_WEBSOCKETS=NO ENABLE_SERVER_STATS=NO ENABLE_LUA=NO ENABLE_DUKTAPE=NO NO_CACHING=NO ALLOW_WARNINGS=YES - dist: trusty sudo: false os: linux compiler: clang addons: apt: sources: - ubuntu-toolchain-r-test - llvm-toolchain-precise-3.8 packages: - clang-3.8 env: idx=4 N=Clang3.8-Linux-Complete-NoLua-Release MATRIX_EVAL="CC=clang-3.8 && CXX=clang++-3.8" BUILD_TYPE=Release ENABLE_SSL_DYNAMIC_LOADING=YES OPENSSL_1_1=NO ENABLE_CXX=NO ENABLE_LUA_SHARED=NO C_STANDARD=auto CXX_STANDARD=auto FEATURES=31 BUILD_SHARED=NO NO_FILES=NO ENABLE_SSL=YES NO_CGI=NO ENABLE_IPV6=YES ENABLE_WEBSOCKETS=YES ENABLE_SERVER_STATS=YES ENABLE_LUA=NO ENABLE_DUKTAPE=NO NO_CACHING=YES ALLOW_WARNINGS=YES - dist: trusty sudo: false os: linux compiler: gcc addons: apt: sources: - ubuntu-toolchain-r-test packages: - g++-5 env: idx=5 N=GCC5-Linux-Complete-NoLua-Release MATRIX_EVAL="CC=gcc-5 && CXX=g++-5" BUILD_TYPE=Release ENABLE_SSL_DYNAMIC_LOADING=YES OPENSSL_1_1=NO ENABLE_CXX=NO ENABLE_LUA_SHARED=NO C_STANDARD=auto CXX_STANDARD=auto FEATURES=31 BUILD_SHARED=NO NO_FILES=NO ENABLE_SSL=YES NO_CGI=NO ENABLE_IPV6=YES ENABLE_WEBSOCKETS=YES ENABLE_SERVER_STATS=YES ENABLE_LUA=NO ENABLE_DUKTAPE=NO NO_CACHING=YES ALLOW_WARNINGS=YES - os: linux compiler: gcc env: idx=6 N=GCCAnyVersion-Linux-Coverage BUILD_TYPE=Coverage ENABLE_SSL_DYNAMIC_LOADING=YES OPENSSL_1_1=NO ENABLE_CXX=NO ENABLE_LUA_SHARED=NO C_STANDARD=auto CXX_STANDARD=auto FEATURES=31 BUILD_SHARED=NO NO_FILES=NO ENABLE_SSL=YES NO_CGI=NO ENABLE_IPV6=YES ENABLE_WEBSOCKETS=YES ENABLE_SERVER_STATS=YES ENABLE_LUA=NO ENABLE_DUKTAPE=NO NO_CACHING=NO ALLOW_WARNINGS=YES - os: osx compiler: clang env: idx=7 N=Clang-OSX-Complete-NoLua-Release BUILD_TYPE=Release ENABLE_SSL_DYNAMIC_LOADING=YES OPENSSL_1_1=NO ENABLE_CXX=NO ENABLE_LUA_SHARED=NO C_STANDARD=auto CXX_STANDARD=auto FEATURES=31 BUILD_SHARED=NO NO_FILES=NO ENABLE_SSL=YES NO_CGI=NO ENABLE_IPV6=YES ENABLE_WEBSOCKETS=YES ENABLE_SERVER_STATS=YES ENABLE_LUA=NO ENABLE_DUKTAPE=NO NO_CACHING=YES ALLOW_WARNINGS=YES - os: osx compiler: clang env: idx=8 N=Clang-OSX-Complete-NoLua-Release-OpenSSL_1_1_NoDynLoad BUILD_TYPE=OSX_OPENSSL_1_1 ENABLE_SSL_DYNAMIC_LOADING=NO OPENSSL_1_1=YES ENABLE_CXX=NO ENABLE_LUA_SHARED=NO C_STANDARD=auto CXX_STANDARD=auto FEATURES=31 BUILD_SHARED=NO NO_FILES=NO ENABLE_SSL=YES NO_CGI=NO ENABLE_IPV6=YES ENABLE_WEBSOCKETS=YES ENABLE_SERVER_STATS=YES ENABLE_LUA=NO ENABLE_DUKTAPE=NO NO_CACHING=YES ALLOW_WARNINGS=YES OPENSSL_ROOT_DIR="/usr/local/opt/openssl@1.1" LDFLAGS="-L${OPENSSL_ROOT_DIR}/lib" CFLAGS="-I${OPENSSL_ROOT_DIR}/include" ADDITIONAL_CMAKE_ARGS="-DCMAKE_SHARED_LINKER_FLAGS=${LDFLAGS} -DCMAKE_C_FLAGS=${CFLAGS}" PATH="${OPENSSL_ROOT_DIR}/bin:$PATH" DYLD_LIBRARY_PATH="${OPENSSL_ROOT_DIR}/lib:${DYLD_LIBRARY_PATH}" - dist: trusty sudo: false os: linux compiler: clang addons: apt: sources: - ubuntu-toolchain-r-test - llvm-toolchain-trusty-5.0 packages: - clang-5.0 env: idx=9 N=Clang50-Linux-Default-Shared BUILD_TYPE=Debug ENABLE_SSL_DYNAMIC_LOADING=YES OPENSSL_1_1=NO ENABLE_CXX=NO ENABLE_LUA_SHARED=NO C_STANDARD=auto CXX_STANDARD=auto FEATURES=7 BUILD_SHARED=YES NO_FILES=NO ENABLE_SSL=YES NO_CGI=NO ENABLE_IPV6=NO ENABLE_WEBSOCKETS=NO ENABLE_SERVER_STATS=NO ENABLE_LUA=NO ENABLE_DUKTAPE=NO NO_CACHING=NO ALLOW_WARNINGS=YES MATRIX_EVAL="CC=clang-3.8 && CXX=clang++-3.8" - os: linux dist: precise sudo: required compiler: clang env: idx=10 N=Precise-Clang-Linux-Default BUILD_TYPE=Debug ENABLE_SSL_DYNAMIC_LOADING=YES OPENSSL_1_1=NO ENABLE_CXX=NO ENABLE_LUA_SHARED=NO C_STANDARD=auto CXX_STANDARD=auto FEATURES=7 BUILD_SHARED=NO NO_FILES=NO ENABLE_SSL=YES NO_CGI=NO ENABLE_IPV6=NO ENABLE_WEBSOCKETS=NO ENABLE_SERVER_STATS=NO ENABLE_LUA=NO ENABLE_DUKTAPE=NO NO_CACHING=NO ALLOW_WARNINGS=YES - os: osx compiler: clang env: idx=11 N=OSX-Package BUILD_TYPE=Release ENABLE_SSL_DYNAMIC_LOADING=YES OPENSSL_1_1=NO ENABLE_CXX=NO ENABLE_LUA_SHARED=NO C_STANDARD=auto CXX_STANDARD=auto FEATURES=31 BUILD_SHARED=NO NO_FILES=NO ENABLE_SSL=YES NO_CGI=NO ENABLE_IPV6=YES ENABLE_WEBSOCKETS=YES ENABLE_SERVER_STATS=NO ENABLE_LUA=NO ENABLE_DUKTAPE=NO NO_CACHING=NO ALLOW_WARNINGS=YES MACOSX_PACKAGE=1 - dist: trusty sudo: false os: linux compiler: clang addons: apt: sources: - ubuntu-toolchain-r-test - llvm-toolchain-trusty-3.8 packages: - clang-3.8 env: idx=12 N=Clang-Linux-32bit-Complete-NoLua-Release ARCH=x86 BUILD_TYPE=Release ENABLE_SSL_DYNAMIC_LOADING=YES OPENSSL_1_1=NO ENABLE_CXX=NO ENABLE_LUA_SHARED=NO C_STANDARD=auto CXX_STANDARD=auto FEATURES=31 BUILD_SHARED=NO NO_FILES=NO ENABLE_SSL=YES NO_CGI=NO ENABLE_IPV6=YES ENABLE_WEBSOCKETS=YES ENABLE_SERVER_STATS=YES ENABLE_LUA=NO ENABLE_DUKTAPE=NO NO_CACHING=YES ALLOW_WARNINGS=YES MATRIX_EVAL="CC=clang-3.8 && CXX=clang++-3.8" ### Test all build types: # According to CMakeLists, options are: # None Debug Release RelWithDebInfo MinSizeRel Coverage - os: linux compiler: clang env: idx=13 N=NoSslDynamicLoading BUILD_TYPE=Release ENABLE_SSL_DYNAMIC_LOADING=NO OPENSSL_1_1=NO ENABLE_CXX=NO C_STANDARD=auto CXX_STANDARD=auto ENABLE_LUA_SHARED=NO FEATURES=31 BUILD_SHARED=NO NO_FILES=NO ENABLE_SSL=YES NO_CGI=NO ENABLE_IPV6=YES ENABLE_WEBSOCKETS=YES ENABLE_LUA=NO ENABLE_DUKTAPE=NO NO_CACHING=NO ALLOW_WARNINGS=YES MATRIX_EVAL="CC=clang-3.8 && CXX=clang++-3.8" - os: linux compiler: gcc env: idx=14 N=GCCLinuxDefault_Debug BUILD_TYPE=Debug ENABLE_SSL_DYNAMIC_LOADING=YES OPENSSL_1_1=NO ENABLE_CXX=NO ENABLE_LUA_SHARED=NO C_STANDARD=auto CXX_STANDARD=auto FEATURES=7 BUILD_SHARED=NO NO_FILES=NO ENABLE_SSL=YES NO_CGI=NO ENABLE_IPV6=NO ENABLE_WEBSOCKETS=NO ENABLE_LUA=NO ENABLE_DUKTAPE=NO NO_CACHING=NO ALLOW_WARNINGS=YES - os: linux compiler: gcc env: idx=15 N=GCCLinuxDefault_RelWithDebInfo BUILD_TYPE=RelWithDebInfo ENABLE_SSL_DYNAMIC_LOADING=YES OPENSSL_1_1=NO ENABLE_CXX=NO ENABLE_LUA_SHARED=NO C_STANDARD=auto CXX_STANDARD=auto FEATURES=7 BUILD_SHARED=NO NO_FILES=NO ENABLE_SSL=YES NO_CGI=NO ENABLE_IPV6=NO ENABLE_WEBSOCKETS=NO ENABLE_LUA=NO ENABLE_DUKTAPE=NO NO_CACHING=NO ALLOW_WARNINGS=YES - os: linux compiler: gcc env: idx=16 N=GCCLinuxDefault_MinSizeRel BUILD_TYPE=MinSizeRel ENABLE_SSL_DYNAMIC_LOADING=YES OPENSSL_1_1=NO ENABLE_CXX=NO ENABLE_LUA_SHARED=NO C_STANDARD=auto CXX_STANDARD=auto FEATURES=7 BUILD_SHARED=NO NO_FILES=NO ENABLE_SSL=YES NO_CGI=NO ENABLE_IPV6=NO ENABLE_WEBSOCKETS=NO ENABLE_LUA=NO ENABLE_DUKTAPE=NO NO_CACHING=NO ALLOW_WARNINGS=YES - os: linux compiler: gcc env: idx=17 N=GCCLinuxDefault_None BUILD_TYPE=None ENABLE_SSL_DYNAMIC_LOADING=YES OPENSSL_1_1=NO ENABLE_CXX=NO ENABLE_LUA_SHARED=NO C_STANDARD=auto CXX_STANDARD=auto FEATURES=7 BUILD_SHARED=NO NO_FILES=NO ENABLE_SSL=YES NO_CGI=NO ENABLE_IPV6=NO ENABLE_WEBSOCKETS=NO ENABLE_LUA=NO ENABLE_DUKTAPE=NO NO_CACHING=NO ALLOW_WARNINGS=YES #### Now all define combinations, but only for Linux clang ##### Generated with Lua: # # function YN(i,b) # local bits = {} # while (i > 0.5) do # i = math.floor(i) # bits[#bits+1] = (math.mod(i, 2) == 1) # i = i/2 # end # if (bits[b]) then # return "YES" # end # return "NO" # end # function INV(t) # if t=="YES" then # return "NO" # elseif t=="NO" then # return "YES" # else # assert("ERROR in INV!") # end # end # for i=0,511 do # if (YN(i, 6)=="NO") and (YN(i, 7)=="NO") then # print(" -") # print(" os: linux") # print(" compiler: clang") # print(" env:") # print(" N=C" .. tostring(i) .. "_") # print(" BUILD_TYPE=Release") # print(" ENABLE_SSL_DYNAMIC_LOADING=YES") # print(" OPENSSL_1_1=NO") # print(" ENABLE_CXX=NO") # print(" C_STANDARD=auto") # print(" CXX_STANDARD=auto") # print(" ENABLE_LUA_SHARED=NO") # print(" FEATURES=" .. tostring(i)) # print(" BUILD_SHARED=NO") # print(" NO_FILES=" .. INV(YN(i, 1))) # print(" ENABLE_SSL=" .. YN(i, 2)) # print(" NO_CGI=" .. INV(YN(i, 3))) # print(" ENABLE_IPV6=" .. YN(i, 4)) # print(" ENABLE_WEBSOCKETS=" .. YN(i, 5)) # print(" ENABLE_LUA=" .. YN(i, 6)) # print(" ENABLE_DUKTAPE=" .. YN(i, 7)) # print(" NO_CACHING=" .. INV(YN(i, 8))) # print(" ENABLE_SERVER_STATS=" .. YN(i, 9)) # print("") # end # end # # TODO: Regenerate this matrix, once a stable Travis build is re-established