
sudo: required
group: deprecated-2017Q2

language: c

env:
    global:
        - COVERITY_SCAN_BUILD_COMMAND="make"
        - COVERITY_SCAN_PROJECT_NAME="Apache Celix"
        - COVERITY_SCAN_NOTIFICATION_EMAIL="bpetri@apache.org"
        - COVERITY_SCAN_BRANCH_PATTERN="develop"
        - COVERITY_SCAN_TOKEN="iomLSuaE8KOZLDog-KK7Ug"
        - COVERITY_SCAN_BUILD_URL="https://scan.coverity.com/scripts/travisci_build_coverity_scan.sh"
        - COVERITY_SCAN_BUILD="curl -s $COVERITY_SCAN_BUILD_URL | sed 's/https:\/\/scan.coverity.com\/builds/https:\/\/scan.coverity.com\/builds?project=Apache+Celix/g' | bash"
        - COVERITY_SCAN_ALWAYS_ON="n"
        - MACOSX_DEPLOYMENT_TARGET=10.11

matrix:
    include:
       - os: linux
         dist: trusty
         compiler: gcc
       - os: linux
         dist: trusty
         compiler: clang
       - os: osx
         osx_image: xcode10.2
         compiler: clang
         env: MACOSX_DEPLOYMENT_TARGET=10.14
       - os: linux
         dist: trusty
         compiler: gcc
         env: SANITIZE=1

#DISABLED ANDROID BUILD
#       - os: linux
#dist: trusty
#compiler: clang
#env: ANDROID=1
#services: docker

before_install:
  - if [ "$TRAVIS_OS_NAME" = "linux" ] &&  [ -z "$ANDROID" ]; then sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y && sudo apt-get -qq update && sudo apt-get install -y uuid-dev libxml2-dev lcov libffi-dev gcc-4.8 g++-4.8; fi
  - if [ "$TRAVIS_OS_NAME" = "osx" ]; then brew update && brew install lcov libffi zeromq czmq openssl && brew link --force libffi; fi

before_script:
    - wget https://github.com/cpputest/cpputest/releases/download/v3.8/cpputest-3.8.tar.gz -O /tmp/cpputest.tar.gz
    - tar -xzvf /tmp/cpputest.tar.gz -C /tmp
    - if [ "$CC" = "clang" ]; then export CXX="clang++"; fi && cd /tmp/cpputest-* && ./configure --prefix=/usr/local && make && sudo make install && cd -
    - cd /tmp/cpputest-* && ./configure --prefix=/usr/local && make && sudo make install && cd -
    - wget https://github.com/zeromq/libzmq/releases/download/v4.3.1/zeromq-4.3.1.tar.gz -O /tmp/zeromq.tar.gz
    - tar -xzvf /tmp/zeromq.tar.gz -C /tmp && cd /tmp/zeromq-* && mkdir build && cd build
    - if [ "$TRAVIS_OS_NAME" = "linux" ] &&  [ -z "$ANDROID" ]; then cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DENABLE_CURVE=ON .. && make && sudo make install; fi 
    - cd $TRAVIS_BUILD_DIR
    - wget https://github.com/zeromq/czmq/releases/download/v4.2.0/czmq-4.2.0.tar.gz -O /tmp/czmq.tar.gz
    - tar -xzvf /tmp/czmq.tar.gz -C /tmp && cd /tmp/czmq-* && mkdir build && cd build
    - if [ "$TRAVIS_OS_NAME" = "linux" ] &&  [ -z "$ANDROID" ]; then cmake -DCMAKE_INSTALL_PREFIX=/usr/local .. && make && sudo make install; fi
    - cd $TRAVIS_BUILD_DIR
    - git clone https://github.com/akheron/jansson.git jansson-build
    - cd jansson-build && git checkout 2.7
    - cmake -DJANSSON_BUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/usr/local . && make
    - sudo make install
    - cd -
    - mkdir build install
    - export BUILD_OPTIONS=" \
        -DBUILD_REMOTE_SERVICE_ADMIN=OFF \
        -DBUILD_RSA_REMOTE_SERVICE_ADMIN_DFI=OFF \
        -DBUILD_DEPLOYMENT_ADMIN=ON \
        -DBUILD_DEPENDENCY_MANAGER=ON \
        -DBUILD_EXAMPLES=ON -DBUILD_LOG_SERVICE=ON \
        -DBUILD_LOG_WRITER=ON \
        -DBUILD_RSA_DISCOVERY_CONFIGURED=ON \
        -DBUILD_RSA_DISCOVERY_ETCD=ON \
        -DBUILD_RSA_EXAMPLES=ON \
        -DBUILD_REMOTE_SHELL=ON \
        -DBUILD_SHELL=ON \
        -DBUILD_SHELL_TUI=ON -DBUILD_DEVICE_ACCESS=ON \
        -DBUILD_DEVICE_ACCESS_EXAMPLE=ON \
        -DBUILD_HTTP_ADMIN=ON "
    - export BUILD_OPTIONS_LINUX=" \
        -DBUILD_RSA_REMOTE_SERVICE_ADMIN_SHM=OFF \
        -DBUILD_PUBSUB=ON \
        -DBUILD_PUBSUB_PSA_ZMQ=ON \
        -DBUILD_PUBSUB_TESTS=ON \
        -DBUILD_RSA_DISCOVERY_SHM=ON "
    - export BUILD_OPTIONS_OSX=" \
        -DBUILD_RSA_REMOTE_SERVICE_ADMIN_SHM=OFF \
        -DBUILD_PUBSUB=OFF \
        -DBUILD_PUBSUB_PSA_ZMQ=OFF \
        -DBUILD_RSA_DISCOVERY_SHM=OFF "
    - export BUILD_OPTIONS_SANITIZE=" -DENABLE_ADDRESS_SANITIZER=ON"

script:
    #- if [ "$SANITIZE" == 1 ]; then export CC=/usr/bin/gcc-4.8 CXX=/usr/bin/g++-4.8 CFLAGS="-lasan -fsanitize=address"  CXXFLAGS="-lasan -fsanitize=address" ASAN_OPTIONS="symbolize=1" ASAN_SYMBOLIZER_PATH="/usr/local/clang-3.4/bin/llvm-symbolizer"; fi
    - if [ "$SANITIZE" == 1 ]; then export BUILD_OPTIONS="${BUILD_OPTIONS} ${BUILD_OPTIONS_SANITIZE}"; fi
     # the following setup is broken:
     # RSA_DISCOVERY_SHM is only working on linux, but both compilers (see CELIX-277)
     # RSA_SHM is only working on linux, but both compilers (see CELIX-277)
    - cd build
    - if [ "$CC" = "gcc" ] && [ "$TRAVIS_OS_NAME" = "linux" ]; then export BUILD_OPTS="${BUILD_OPTS} -DENABLE_CODE_COVERAGE=ON"; fi
    - if [ "$TRAVIS_OS_NAME" = "linux" ] && [ -z "$ANDROID" ]; then cmake -DCMAKE_BUILD_TYPE=Debug ${BUILD_OPTIONS} ${BUILD_OPTIONS_LINUX} -DBUILD_FRAMEWORK_TESTS=ON -DBUILD_UTILS-TESTS=ON -DENABLE_TESTING=ON ${BUILD_OPTS} -DCMAKE_INSTALL_PREFIX=../install ..; fi
    - if [ "$TRAVIS_OS_NAME" = "osx" ]; then cmake -DCMAKE_BUILD_TYPE=Debug ${BUILD_OPTIONS} ${BUILD_OPTIONS_OSX} -DBUILD_FRAMEWORK_TESTS=ON -DBUILD_UTILS-TESTS=ON -DENABLE_TESTING=ON -DFFI_LIBRARY=/usr/local/opt/libffi/lib/libffi.dylib ${BUILD_OPTS} -DCMAKE_INSTALL_PREFIX=../install ..; fi
    - if [ -z "$ANDROID" ]; then make all && make deploy && sudo make install; else cd .. && docker build -t celixandroid - < misc/Dockerfile.Android ; fi
    - if [ -z "$ANDROID" ]; then export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH:`pwd`/utils:`pwd`/framework:`pwd`/dfi && make test ARGS="-V"; else docker run celixandroid; fi 

after_success:
    - if [ "$CC" = "gcc" ] && [ "$TRAVIS_OS_NAME" = "linux" ]; then 
        cd ${TRAVIS_BUILD_DIR}/build;
        gem install coveralls-lcov &&
        make coverage &&
        lcx="lcov --output-file=coverage.info " && for i in `find . -name "*.info.cleaned"`; do lcx+=" --add-tracefile=$i"; done && $lcx && coveralls-lcov --repo-token=9dpeTAjiGoQU5hgXFe0ezk65iu40oc3WY coverage.info;
        if [ $(( $TRAVIS_BUILD_NUMBER  % 5 )) -eq 0 -o ${COVERITY_SCAN_ALWAYS_ON} = "y" ]; then make clean & eval "$COVERITY_SCAN_BUILD"; fi
      fi;


