blob: 2dd926cff5cdcb26f8a88d2c5177a1a09d41e8cd [file] [log] [blame]
##############################################################################
# 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