language: c git: depth: 5 addons: apt: packages: - libssl-dev - libevent-dev - libexpat-dev - clang homebrew: packages: - openssl - libevent - expat update: true jobs: include: - os: linux name: GCC on Linux, Amd64 compiler: gcc arch: amd64 env: - CONFIG_OPTS="--enable-debug --disable-flto" - os: linux name: Clang on Linux, Amd64 compiler: clang arch: amd64 env: - CONFIG_OPTS="--enable-debug --disable-flto" - os: osx name: Clang on OS X, Amd64 compiler: clang arch: amd64 env: - TEST_OSX=yes - CONFIG_OPTS="--enable-debug --disable-flto --with-ssl=/usr/local/opt/openssl/" - os: linux name: Libevent, GCC on Linux, Amd64 compiler: gcc arch: amd64 env: - TEST_LIBEVENT=yes - CONFIG_OPTS="--with-libevent" - os: linux name: Libevent, Clang on Linux, Amd64 compiler: clang arch: amd64 env: - TEST_LIBEVENT=yes - CONFIG_OPTS="--with-libevent" - os: osx name: Libevent, Clang on OS X, Amd64 compiler: clang arch: amd64 env: - TEST_OSX=yes - TEST_LIBEVENT=yes - CONFIG_OPTS="--with-ssl=/usr/local/opt/openssl/ --with-libevent=/usr/local/opt/libevent/" - os: linux name: UBsan, GCC on Linux, Amd64 compiler: gcc arch: amd64 dist: bionic env: - TEST_UBSAN=yes - os: linux name: UBsan, Clang on Linux, Amd64 compiler: clang arch: amd64 dist: bionic env: - TEST_UBSAN=yes - os: linux name: Asan, GCC on Linux, Amd64 compiler: gcc arch: amd64 dist: bionic env: - TEST_ASAN=yes - os: linux name: Asan, Clang on Linux, Amd64 compiler: clang arch: amd64 dist: bionic env: - TEST_ASAN=yes - os: linux name: GCC on Linux, Aarch64 compiler: gcc arch: arm64 dist: bionic env: - CONFIG_OPTS="--enable-debug --disable-flto" - os: linux name: Clang on Linux, Aarch64 compiler: clang arch: arm64 dist: bionic env: - CONFIG_OPTS="--enable-debug --disable-flto" - os: linux name: GCC on Linux, PowerPC64 compiler: gcc arch: ppc64le dist: bionic env: - CONFIG_OPTS="--enable-debug --disable-flto" - os: linux name: Clang on Linux, PowerPC64 compiler: clang arch: ppc64le dist: bionic env: - CONFIG_OPTS="--enable-debug --disable-flto" - os: linux name: GCC on Linux, s390x compiler: gcc arch: s390x dist: bionic env: - CONFIG_OPTS="--enable-debug --disable-flto" - os: linux name: Clang on Linux, s390x compiler: clang arch: s390x dist: bionic env: - CONFIG_OPTS="--enable-debug --disable-flto" - os: osx osx_image: xcode10 name: Apple iPhone on iOS, armv7 compiler: clang env: - TEST_IOS=yes - AUTOTOOLS_HOST=armv7-apple-ios - OPENSSL_HOST=ios-cross - IOS_SDK=iPhoneOS - IOS_CPU=armv7s - IOS_PREFIX="$HOME/$IOS_SDK-$IOS_CPU" - os: osx osx_image: xcode10 name: Apple iPhone on iOS, arm64 compiler: clang env: - TEST_IOS=yes - AUTOTOOLS_HOST=aarch64-apple-ios - OPENSSL_HOST=ios64-cross - IOS_SDK=iPhoneOS - IOS_CPU=arm64 - IOS_PREFIX="$HOME/$IOS_SDK-$IOS_CPU" - os: osx osx_image: xcode10 name: Apple TV on iOS, arm64 compiler: clang env: - TEST_IOS=yes - AUTOTOOLS_HOST=aarch64-apple-ios - OPENSSL_HOST=ios64-cross - IOS_SDK=AppleTVOS - IOS_CPU=arm64 - IOS_PREFIX="$HOME/$IOS_SDK-$IOS_CPU" - os: osx osx_image: xcode10 name: Apple Watch on iOS, armv7 compiler: clang env: - TEST_IOS=yes - AUTOTOOLS_HOST=armv7-apple-ios - OPENSSL_HOST=ios-cross - IOS_SDK=WatchOS - IOS_CPU=armv7k - IOS_PREFIX="$HOME/$IOS_SDK-$IOS_CPU" - os: osx osx_image: xcode10 name: iPhoneSimulator on OS X, i386 env: - TEST_IOS=yes - AUTOTOOLS_HOST=i386-apple-ios - OPENSSL_HOST=iphoneos-cross - IOS_CPU=i386 - IOS_SDK=iPhoneSimulator - IOS_PREFIX="$HOME/$IOS_SDK-$IOS_CPU" - os: osx osx_image: xcode10 name: iPhoneSimulator on OS X, x86_64 env: - TEST_IOS=yes - AUTOTOOLS_HOST=x86_64-apple-ios - OPENSSL_HOST=iphoneos-cross - IOS_CPU=x86_64 - IOS_SDK=iPhoneSimulator - IOS_PREFIX="$HOME/$IOS_SDK-$IOS_CPU" - os: osx osx_image: xcode10 name: AppleTVSimulator on OS X, x86_64 env: - TEST_IOS=yes - AUTOTOOLS_HOST=x86_64-apple-ios - OPENSSL_HOST=iphoneos-cross - IOS_CPU=x86_64 - IOS_SDK=AppleTVSimulator - IOS_PREFIX="$HOME/$IOS_SDK-$IOS_CPU" - os: osx osx_image: xcode10 name: WatchSimulator on OS X, i386 env: - TEST_IOS=yes - AUTOTOOLS_HOST=i386-apple-ios - OPENSSL_HOST=iphoneos-cross - IOS_CPU=i386 - IOS_SDK=WatchSimulator - IOS_PREFIX="$HOME/$IOS_SDK-$IOS_CPU" - os: linux name: Android armv7a, Linux, Amd64 compiler: clang arch: amd64 dist: bionic env: - TEST_ANDROID=yes - AUTOTOOLS_HOST=armv7a-linux-androideabi - OPENSSL_HOST=android-arm - ANDROID_CPU=armv7a - ANDROID_API=23 - ANDROID_PREFIX="$HOME/android$ANDROID_API-$ANDROID_CPU" - ANDROID_SDK_ROOT="$HOME/android-sdk" - ANDROID_NDK_ROOT="$HOME/android-ndk" - os: linux name: Android aarch64, Linux, Amd64 compiler: clang arch: amd64 dist: bionic env: - TEST_ANDROID=yes - AUTOTOOLS_HOST=aarch64-linux-android - OPENSSL_HOST=android-arm64 - ANDROID_CPU=aarch64 - ANDROID_API=23 - ANDROID_PREFIX="$HOME/android$ANDROID_API-$ANDROID_CPU" - ANDROID_SDK_ROOT="$HOME/android-sdk" - ANDROID_NDK_ROOT="$HOME/android-ndk" - os: linux name: Android x86, Linux, Amd64 compiler: clang arch: amd64 dist: bionic env: - TEST_ANDROID=yes - AUTOTOOLS_HOST=i686-linux-android - OPENSSL_HOST=android-x86 - ANDROID_CPU=x86 - ANDROID_API=23 - ANDROID_PREFIX="$HOME/android$ANDROID_API-$ANDROID_CPU" - ANDROID_SDK_ROOT="$HOME/android-sdk" - ANDROID_NDK_ROOT="$HOME/android-ndk" - os: linux name: Android x86_64, Linux, Amd64 compiler: clang arch: amd64 dist: bionic env: - TEST_ANDROID=yes - AUTOTOOLS_HOST=x86_64-linux-android - OPENSSL_HOST=android-x86_64 - ANDROID_CPU=x86_64 - ANDROID_API=23 - ANDROID_PREFIX="$HOME/android$ANDROID_API-$ANDROID_CPU" - ANDROID_SDK_ROOT="$HOME/android-sdk" - ANDROID_NDK_ROOT="$HOME/android-ndk" allow_failures: - os: linux name: Android armv7a, Linux, Amd64 - os: linux name: Android aarch64, Linux, Amd64 - os: linux name: Android x86, Linux, Amd64 - os: linux name: Android x86_64, Linux, Amd64 before_script: - | if [ "$TEST_ANDROID" = "yes" ]; then ./contrib/android/install_tools.sh elif [ "$TEST_IOS" = "yes" ]; then ./contrib/ios/install_tools.sh fi # The Travis docs say to avoid calling exit in the script. It leads to # some code duplication to avoid failures in cross-compiles. Also see # https://docs.travis-ci.com/user/job-lifecycle/ in the Travis docs. script: - | if [ "$TEST_UBSAN" = "yes" ]; then export CFLAGS="-DNDEBUG -g2 -O3 -fsanitize=undefined -fno-sanitize-recover" ./configure make -j 2 make test elif [ "$TEST_ASAN" = "yes" ]; then export CFLAGS="-DNDEBUG -g2 -O3 -fsanitize=address" ./configure make -j 2 make test elif [ "$TEST_IOS" = "yes" ]; then export AUTOTOOLS_BUILD="$(./config.guess)" export PKG_CONFIG_PATH="$IOS_PREFIX/lib/pkgconfig" source ./contrib/ios/setenv_ios.sh ./contrib/ios/install_openssl.sh ./contrib/ios/install_expat.sh ./configure \ --build="$AUTOTOOLS_BUILD" --host="$AUTOTOOLS_HOST" \ --prefix="$IOS_PREFIX" \ --with-ssl="$IOS_PREFIX" --disable-gost \ --with-libexpat="$IOS_PREFIX"; make -j 2 make install elif [ "$TEST_ANDROID" = "yes" ]; then export AUTOTOOLS_BUILD="$(./config.guess)" export PKG_CONFIG_PATH="$ANDROID_PREFIX/lib/pkgconfig" ./contrib/android/install_ndk.sh source ./contrib/android/setenv_android.sh ./contrib/android/install_openssl.sh ./contrib/android/install_expat.sh ./configure \ --build="$AUTOTOOLS_BUILD" --host="$AUTOTOOLS_HOST" \ --prefix="$ANDROID_PREFIX" \ --with-ssl="$ANDROID_PREFIX" --disable-gost \ --with-libexpat="$ANDROID_PREFIX"; make -j 2 make install elif [ "$TEST_OSX" = "yes" ]; then ./configure --enable-debug --disable-flto --with-ssl=/usr/local/opt/openssl/ make -j 2 make test (cd testdata/clang-analysis.tdir; bash clang-analysis.test) else ./configure ${CONFIG_OPTS} make -j 2 make test (cd testdata/clang-analysis.tdir; bash clang-analysis.test) fi