123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462 |
- dist: xenial
- language: c
- env:
- global:
- - secure: "QD09MuUxftXRXtz7ZrB7S0NV/3O9yVhjvIlCSbXN8B87rNSDC8wxMThKMT7iZewnqGk53m+Up19PiMw5ERlHose5tm2cmY1FO/l+c9oAyWZaAL+4XNXryq6zI5F5FX5I61NbfqV3xcnfLTI2QIJF6WqDojNxhPjTbNzQGxIDuqw="
- matrix:
- include:
- # linux build
- - os: linux
- env:
- - TEST="linux (gcc)"
- addons:
- apt:
- sources:
- - ubuntu-toolchain-r-test
- packages:
- - gcc-6
- - valgrind
- install:
- - pyenv global 3.7.1
- - pip3 install meson ninja
- script:
- - CC=gcc-6 EXTRA_CFLAGS=-Werror ./configure
- - make
- - make runtest
- - make runtest-valgrind
- - make distclean
- - mkdir build && cd build
- - cmake -DBUILD_WITH_SANITIZERS=TRUE ..
- - make
- - CTEST_OUTPUT_ON_FAILURE=1 make test
- - cd ..
- - CC=gcc-6 meson setup --werror builddir
- - meson compile -C builddir
- - meson test -v -C builddir
- # linux build with openssl
- - os: linux
- env:
- - TEST="linux openssl (gcc)"
- addons:
- apt:
- sources:
- - ubuntu-toolchain-r-test
- packages:
- - gcc-6
- - valgrind
- install:
- - pyenv global 3.7.1
- - pip3 install meson ninja
- script:
- - CC=gcc-6 EXTRA_CFLAGS=-Werror ./configure --enable-openssl
- - make
- - make runtest
- - make runtest-valgrind
- - make distclean
- - mkdir build && cd build
- - cmake -DENABLE_OPENSSL=ON -DBUILD_WITH_SANITIZERS=TRUE ..
- - make
- - CTEST_OUTPUT_ON_FAILURE=1 make test
- - cd ..
- - mkdir build_shared && cd build_shared
- - cmake -DENABLE_OPENSSL=ON -DBUILD_SHARED_LIBS=ON ..
- - make
- - make test
- - cd ..
- - meson setup --werror -Dcrypto-library=openssl builddir
- - meson compile -C builddir
- - meson test -v -C builddir
- # linux build with openssl and clang
- - os: linux
- env:
- - TEST="linux openssl (clang)"
- addons:
- apt:
- packages:
- - clang
- install:
- - pyenv global 3.7.1
- - pip3 install meson ninja
- script:
- - CC=clang EXTRA_CFLAGS=-Werror ./configure --enable-openssl
- - make
- - make runtest
- - CC=clang meson setup --werror -Dcrypto-library=openssl builddir
- - meson compile -C builddir
- - meson test -v -C builddir
- # linux build with nss
- - os: linux
- env:
- - TEST="linux nss (gcc / valgrind)"
- addons:
- apt:
- sources:
- - ubuntu-toolchain-r-test
- packages:
- - gcc-6
- - valgrind
- - libnss3-dev
- install:
- - pyenv global 3.7.1
- - pip3 install meson ninja
- script:
- - CC=gcc-6 EXTRA_CFLAGS=-Werror ./configure --enable-nss
- - make
- - make runtest
- - make runtest-valgrind
- - mkdir build && cd build
- - cmake -DENABLE_NSS=ON -DBUILD_WITH_SANITIZERS=TRUE ..
- - make
- - CTEST_OUTPUT_ON_FAILURE=1 make test
- - cd ..
- - CC=gcc-6 meson setup --werror -Dcrypto-library=nss builddir
- - meson compile -C builddir
- - meson test -v -C builddir
- # linux build with mbedtls
- - os: linux
- env:
- - TEST="linux mbedtls (gcc)"
- addons:
- apt:
- sources:
- - ubuntu-toolchain-r-test
- packages:
- - gcc-6
- - libmbedtls-dev
- script:
- - mkdir build && cd build
- - cmake -DENABLE_MBEDTLS=ON -DBUILD_WITH_SANITIZERS=TRUE ..
- - make
- - CTEST_OUTPUT_ON_FAILURE=1 make test
- - cd ..
- # default osx build
- - os: osx
- env:
- - TEST="osx"
- before_install:
- - pip3 install meson ninja
- script:
- - EXTRA_CFLAGS=-Werror ./configure
- - make
- - make runtest
- - make distclean
- - mkdir build && cd build
- - cmake ..
- - make
- - make test
- - cd ..
- - meson setup --werror builddir
- - meson compile -C builddir
- - meson test -v -C builddir
- # osx build with openssl
- - os: osx
- osx_image: xcode11.2
- env:
- - TEST="osx openssl"
- before_install:
- - pip3 install meson ninja
- - brew install openssl@1.1
- script:
- - PKG_CONFIG_PATH=$(brew --prefix openssl@1.1)/lib/pkgconfig EXTRA_CFLAGS=-Werror ./configure --enable-openssl
- - make
- - make runtest
- - make distclean
- - mkdir build && cd build
- - cmake -DOPENSSL_ROOT_DIR=$(brew --prefix openssl@1.1) -DENABLE_OPENSSL=ON ..
- - make
- - make test
- - cd ..
- - PKG_CONFIG_PATH=$(brew --prefix openssl@1.1)/lib/pkgconfig meson setup --werror -Dcrypto-library=openssl builddir
- - meson compile -C builddir
- - meson test -v -C builddir
- # osx build with nss
- - os: osx
- osx_image: xcode11.2
- env:
- - TEST="osx nss"
- before_install:
- - pip3 install meson ninja
- script:
- - PKG_CONFIG_PATH=$(brew --prefix nss)/lib/pkgconfig EXTRA_CFLAGS=-Werror ./configure --enable-nss
- - make
- - make runtest
- - PKG_CONFIG_PATH=$(brew --prefix nss)/lib/pkgconfig meson setup --werror -Dcrypto-library=nss builddir
- - meson compile -C builddir
- - meson test -v -C builddir
- # osx build for Apple Silicon
- - os: osx
- osx_image: xcode12u
- env:
- - TEST="osx Apple Silicon"
- script:
- - mkdir build && cd build
- - cmake "-DCMAKE_OSX_ARCHITECTURES=arm64;x86_64" ..
- - make
- - lipo -info srtp_driver
- - make test
- # code format check
- - os: linux
- env:
- - TEST="clang-format"
- addons:
- apt:
- packages:
- - clang-format-3.9
- script:
- - CLANG_FORMAT=clang-format-3.9 ./format.sh -d
- # big-endian
- - os: linux
- env:
- - TEST="big-endian"
- services:
- - docker
- addons:
- apt:
- packages:
- - qemu-user-static
- - qemu-system-mips
- before_install:
- - sudo docker run --volume $(pwd):/src --workdir /src --name mipsX --tty --detach ubuntu:16.04 tail
- - sudo docker exec --tty mipsX apt-get update
- - sudo docker exec --tty mipsX apt-get install build-essential -y
- - sudo docker exec --tty mipsX apt-get install qemu-user-static qemu-system-mips gcc-mips-linux-gnu python3-pip -y
- - sudo docker exec --tty mipsX pip3 install meson==0.56.2 ninja
- script:
- - sudo docker exec --tty mipsX bash -c 'EXTRA_CFLAGS=-static CC=mips-linux-gnu-gcc ./configure --host=mips-linux-gnu'
- - sudo docker exec --tty mipsX make
- - file test/srtp_driver
- - make runtest
- - |
- cat > mips-cross-file.txt <<EOF
- [host_machine]
- system = 'linux'
- cpu_family = 'mips'
- cpu = 'mips'
- endian = 'big'
- [properties]
- c_args = ['-static', '-static-libgcc']
- c_link_args = ['-static', '-static-libgcc']
- [binaries]
- ar = 'mips-linux-gnu-gcc-ar'
- c = 'mips-linux-gnu-gcc'
- ranlib = 'mips-linux-gnu-gcc-ranlib'
- exe_wrapper = 'qemu-mips-static'
- pkgconfig = 'false'
- EOF
- #- sudo docker exec --tty mipsX meson setup --cross-file mips-cross-file.txt -Ddefault_library=static -Db_staticpic=false builddir
- #- sudo docker exec --tty mipsX meson compile -C builddir
- #- sudo docker exec --tty mipsX meson test -v --timeout-multiplier 10 -C builddir
- - sudo docker kill mipsX
- # linux build of fuzzer
- - os: linux
- env:
- - TEST="fuzzer (build only)"
- addons:
- apt:
- packages:
- - clang
- script:
- - CC=clang CXX=clang++ CXXFLAGS="-fsanitize=fuzzer-no-link,address,undefined -g -O3" CFLAGS="-fsanitize=fuzzer-no-link,address,undefined -g -O3" LDFLAGS="-fsanitize=fuzzer-no-link,address,undefined" ./configure
- - LIBFUZZER="-fsanitize=fuzzer" make srtp-fuzzer
- # coverity scan
- - os: linux
- env:
- - TEST="Coverity Scan"
- addons:
- coverity_scan:
- project:
- name: "cisco-libSRTP"
- description: "Build submitted via Travis CI"
- version: 2
- notification_email: pabuhler@cisco.com
- build_command_prepend: "./configure"
- build_command: "make"
- branch_pattern: master
- script:
- - echo -n | openssl s_client -connect scan.coverity.com:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | sudo tee -a /etc/ssl/certs/ca-
- # windows build
- - os: windows
- before_install:
- - choco install python --version 3.8.0
- - choco install ninja
- - pip3 install meson
- env:
- - TEST="windows"
- - PATH=/c/Python38:/c/Python38/Scripts:$PATH
- script:
- - export PATH="c:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin":$PATH
- - mkdir build && cd build
- - cmake -G "Visual Studio 15 2017" ..
- - msbuild.exe libsrtp2.sln -p:Configuration=Release
- - msbuild.exe RUN_TESTS.vcxproj -p:Configuration=Release
- - cd ..
- - mkdir build_shared && cd build_shared
- - cmake -G "Visual Studio 15 2017" -DBUILD_SHARED_LIBS=ON ..
- - msbuild.exe libsrtp2.sln -p:Configuration=Release
- - msbuild.exe RUN_TESTS.vcxproj -p:Configuration=Release
- # Test mingw build
- - cd ..
- - meson setup builddir-gcc
- - meson compile -C builddir-gcc
- - meson test -v -C builddir-gcc
- # Test MSVC 64-bit build
- - cmd.exe //C 'C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvarsall.bat' amd64 \& set CC=cl \& meson setup --werror builddir-msvc-amd64 \& meson compile -C builddir-msvc-amd64 \& meson test -v -C builddir-msvc-amd64
- # Test MSVC 32-bit build
- - cmd.exe //C 'C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvarsall.bat' x86 \& set CC=cl \& meson setup --werror builddir-msvc-x86 \& meson compile -C builddir-msvc-x86 \& meson test -v -C builddir-msvc-x86
- # Test MSVC 64-bit UWP build. This is a cross build because we cannot run UWP binaries natively.
- - |
- cat > uwp-amd64-cross-file.txt <<EOF
- [host_machine]
- system = 'windows'
- cpu_family = 'x86_64'
- cpu = 'x86_64'
- endian = 'little'
- [properties]
- c_args = ['-DWINAPI_FAMILY=WINAPI_FAMILY_APP']
- c_link_args = ['-APPCONTAINER', 'WindowsApp.lib']
- needs_exe_wrapper = true
- [binaries]
- ar = 'lib'
- c = 'cl'
- cpp = 'cl'
- pkgconfig = 'false'
- EOF
- - cmd.exe //C 'C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvarsall.bat' amd64 uwp \& meson setup --werror --cross-file uwp-amd64-cross-file.txt builddir-uwp-amd64 \& meson compile -C builddir-uwp-amd64
- # Test MSVC ARM64 UWP build. This is a cross build.
- - |
- cat > uwp-arm64-cross-file.txt <<EOF
- [host_machine]
- system = 'windows'
- cpu_family = 'aarch64'
- cpu = 'aarch64'
- endian = 'little'
- [properties]
- c_args = ['-DWINAPI_FAMILY=WINAPI_FAMILY_APP']
- c_link_args = ['-APPCONTAINER', 'WindowsApp.lib']
- needs_exe_wrapper = true
- [binaries]
- ar = 'lib'
- c = 'cl'
- cpp = 'cl'
- pkgconfig = 'false'
- EOF
- - cmd.exe //C 'C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvarsall.bat' amd64_arm64 uwp \& meson setup --werror --cross-file uwp-arm64-cross-file.txt builddir-uwp-arm64 \& meson compile -C builddir-uwp-arm64
- # android build
- - os: linux
- env:
- - TEST="android"
- install:
- - pyenv global 3.7.1
- - pip3 install meson ninja
- script:
- - wget -q https://dl.google.com/android/repository/android-ndk-r20b-linux-x86_64.zip
- - unzip -qq android-ndk-r20b-linux-x86_64.zip
- - ANDROID_NDK=`pwd`/android-ndk-r20b
- - mkdir build_android
- - cd build_android
- - cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a ..
- - make
- - cd ..
- - TOOLCHAIN=$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64
- - AR=$TOOLCHAIN/bin/aarch64-linux-android-ar
- AS=$TOOLCHAIN/bin/aarch64-linux-android-as
- CC=$TOOLCHAIN/bin/aarch64-linux-android21-clang
- CXX=$TOOLCHAIN/bin/aarch64-linux-android21-clang++
- LD=$TOOLCHAIN/bin/aarch64-linux-android-ld
- RANLIB=$TOOLCHAIN/bin/aarch64-linux-android-ranlib
- STRIP=$TOOLCHAIN/bin/aarch64-linux-android-strip
- ./configure --host aarch64-linux-android
- - make
- - |
- cat > android-cross-file.txt <<EOF
- [host_machine]
- system = 'android'
- cpu_family = 'aarch64'
- cpu = 'aarch64'
- endian = 'little'
- [properties]
- sys_root = '$ANDROID_NDK/sysroot'
- [binaries]
- ar = '$TOOLCHAIN/bin/aarch64-linux-android-ar'
- c = '$TOOLCHAIN/bin/aarch64-linux-android21-clang'
- cpp = '$TOOLCHAIN/bin/aarch64-linux-android21-clang++'
- ranlib = '$TOOLCHAIN/bin/aarch64-linux-android-ranlib'
- strip = '$TOOLCHAIN/bin/aarch64-linux-android-strip'
- pkgconfig = 'false'
- EOF
- - meson setup --werror --cross-file android-cross-file.txt builddir
- - meson compile -C builddir
- # ios build
- - os: osx
- osx_image: xcode11.2
- env:
- - TEST="ios"
- before_install:
- - pip3 install meson ninja
- script:
- - wget -q https://raw.githubusercontent.com/leetal/ios-cmake/master/ios.toolchain.cmake
- - mkdir build && cd build
- - cmake -DCMAKE_TOOLCHAIN_FILE=../ios.toolchain.cmake -DPLATFORM=OS64 ..
- - make
- - cd ..
- - CFLAGS="-arch arm64 --sysroot=$(xcrun --sdk iphoneos --show-sdk-path) -miphoneos-version-min=8.0 -fembed-bitcode"
- LDFLAGS="-arch arm64 --sysroot=$(xcrun --sdk iphoneos --show-sdk-path) -miphoneos-version-min=8.0 -fembed-bitcode"
- AR="$(xcrun --find --sdk iphoneos ar)"
- AS="$(xcrun --find --sdk iphoneos as)"
- CC="$(xcrun --find --sdk iphoneos clang)"
- CXX="$(xcrun --find --sdk iphoneos clang++)"
- LD="$(xcrun --find --sdk iphoneos ld)"
- RANLIB="$(xcrun --find --sdk iphoneos ranlib)"
- STRIP="$(xcrun --find --sdk iphoneos strip)"
- ./configure --host arm-apple-darwin
- - make
- - make shared_library
- - |
- cat > ios-cross-file.txt <<EOF
- [host_machine]
- system = 'darwin'
- cpu_family = 'aarch64'
- cpu = 'aarch64'
- endian = 'little'
- [properties]
- c_args = ['-arch', 'arm64', '--sysroot=$(xcrun --sdk iphoneos --show-sdk-path)', '-miphoneos-version-min=8.0']
- c_link_args = ['-arch', 'arm64', '--sysroot=$(xcrun --sdk iphoneos --show-sdk-path)', '-miphoneos-version-min=8.0']
- [binaries]
- ar = '$(xcrun --find --sdk iphoneos ar)'
- c = '$(xcrun --find --sdk iphoneos clang)'
- cpp = '$(xcrun --find --sdk iphoneos clang++)'
- ranlib = '$(xcrun --find --sdk iphoneos ranlib)'
- strip = '$(xcrun --find --sdk iphoneos strip)'
- pkgconfig = 'false'
- EOF
- - meson setup --werror -Db_bitcode=true --cross-file ios-cross-file.txt builddir
- - meson compile -C builddir
|