Blob Blame History Raw
language: generic
os: linux
dist: trusty

matrix:
  include:
    - compiler: gcc
      env:
        - CXX=g++-4.8

    - compiler: gcc
      addons:
        apt:
          sources: ['ubuntu-toolchain-r-test']
          packages: ['g++-4.9']
      env:
        - CXX=g++-4.9

    - compiler: gcc
      addons:
        apt:
          sources: ['ubuntu-toolchain-r-test']
          packages: ['g++-5']
      env:
        - CXX=g++-5

    - compiler: gcc
      addons:
        apt:
          sources: ['ubuntu-toolchain-r-test']
          packages: ['g++-5']
      env:
        - CXX=g++-5
        - CXXSTD=-std=c++14

    - compiler: gcc
      addons:
        apt:
          sources: ['ubuntu-toolchain-r-test']
          packages: ['g++-6']
      env:
        - CXX=g++-6

    - compiler: gcc
      addons:
        apt:
          sources: ['ubuntu-toolchain-r-test']
          packages: ['g++-7']
      env:
        - CXX=g++-7

    - compiler: gcc
      addons:
        apt:
          sources: ['ubuntu-toolchain-r-test']
          packages: ['g++-7']
      env:
        - CXX=g++-7
        - CXXSTD=-std=c++17

    - compiler: gcc
      addons:
        apt:
          sources: ['ubuntu-toolchain-r-test']
          packages: ['g++-8']
      env:
        - CXX=g++-8

    - compiler: gcc
      addons:
        apt:
          sources: ['ubuntu-toolchain-r-test']
          packages: ['g++-8']
      env:
        - CXX=g++-8
        - CXXSTD=-std=c++17

    - dist: precise
      compiler: clang
      env:
        - CXX=clang++

    - compiler: clang
      addons:
        apt:
          packages: ['clang-3.5']
      env:
        - CXX=clang++-3.5

    - compiler: clang
      addons:
        apt:
          packages: ['clang-3.6']
      env:
        - CXX=clang++-3.6

    - dist: precise
      compiler: clang
      addons:
        apt:
          sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.7']
          packages: ['clang-3.7']
      env:
        - CXX=clang++-3.7

    - compiler: clang
      addons:
        apt:
          packages: ['clang-3.8']
      env:
        - CXX=clang++-3.8

    - compiler: clang
      addons:
        apt:
          packages: ['clang-3.9']
      env:
        - CXX=clang++-3.9

    - compiler: clang
      addons:
        apt:
          sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-4.0']
          packages: ['clang-4.0']
      env:
        - CXX=clang++-4.0

    - compiler: clang
      addons:
        apt:
          sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-4.0']
          packages: ['clang-4.0']
      env:
        - CXX=clang++-4.0
        - CXXSTD=-std=c++14

    - compiler: clang
      addons:
        apt:
          sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-5.0']
          packages: ['clang-5.0']
      env:
        - CXX=clang++-5.0

    - compiler: clang
      addons:
        apt:
          sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-6.0']
          packages: ['clang-6.0']
      env:
        - CXX=clang++-6.0

    - compiler: clang
      addons:
        apt:
          sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-6.0']
          packages: ['clang-6.0']
      env:
        - CXX=clang++-6.0
        - CPPFLAGS=-fms-extensions

    - compiler: clang
      addons:
        apt:
          sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-6.0']
          packages: ['clang-6.0']
      env:
        - CXX=clang++-6.0
        - CXXSTD=-std=c++17

    - os: osx
      osx_image: xcode6.4
      compiler: clang
      env:
        - CXX=clang++

    - os: osx
      osx_image: xcode7.3
      compiler: clang
      env:
        - CXX=clang++

    - os: osx
      osx_image: xcode8.3
      compiler: clang
      env:
        - CXX=clang++

    - os: osx
      osx_image: xcode9.3
      compiler: clang
      env:
        - CXX=clang++

    - language: android
      jdk: openjdk8
      android:
        components:
          - tools
          - platform-tools
          - build-tools-23.0.3
          - extra-android-support
          - extra-android-m2repository
          - android-19
          - sys-img-armeabi-v7a-android-19
          # Unfortunately travis uses the old android sdk tool instead of the new sdkmanager.
          # In this deprecated android sdk tool there is no ndk-bundle or cmake package!
        licenses:
          - '.+'
      before_install:
        # Install NDK and cmake via android sdkmanager. Unfortunately to acknowledge the licenses
        # takes a while. Looks like the "echo y" solution is not working. Needs improvement!
        - export TERM=dumb
        - touch ~/.android/repositories.cfg
        - mkdir -p /usr/local/android-sdk/licenses
        - echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > /usr/local/android-sdk/licenses/android-sdk-license
        - echo -e "\nd56f5187479451eabf01fb78af6dfcb131a6481e" >> /usr/local/android-sdk/licenses/android-sdk-license
        # Install NDK and cmake via android sdkmanager.
        - /usr/local/android-sdk/tools/bin/sdkmanager --update > /dev/null
        - echo "y" | /usr/local/android-sdk/tools/bin/sdkmanager "emulator" "ndk-bundle" "cmake;3.6.4111459" > /dev/null
      before_script:
        - export TERM=dumb
        - export _NO_CHECK_SIGNATURE=true
        - echo no | /usr/local/android-sdk/tools/bin/avdmanager create avd -n test -k "system-images;android-19;default;armeabi-v7a"
        - /usr/local/android-sdk/emulator/emulator -avd test -no-audio -no-window -dns-server 8.8.8.8 &
        - android-wait-for-emulator || android-wait-for-emulator
        - /usr/local/android-sdk/platform-tools/adb shell input keyevent 82 &
      script:
        # Using the ninja build command. Is much faster then make build command.
        - /usr/local/android-sdk/cmake/3.6.4111459/bin/cmake -G'Android Gradle - Ninja' -DANDROID_ABI=armeabi-v7a -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=/usr/local/android-sdk/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_PLATFORM=android-19 -DCMAKE_MAKE_PROGRAM=/usr/local/android-sdk/cmake/3.6.4111459/bin/ninja -DPEGTL_BUILD_EXAMPLES=OFF
        - /usr/local/android-sdk/cmake/3.6.4111459/bin/cmake --build . --target all
        - /usr/local/android-sdk/cmake/3.6.4111459/bin/ctest --output-on-failure


    - language: android
      jdk: openjdk8
      android:
        components:
          - tools
          - platform-tools
          - build-tools-23.0.3
          - extra-android-support
          - extra-android-m2repository
          - android-22
          - sys-img-armeabi-v7a-android-22
          # Unfortunately travis uses the old android sdk tool instead of the new sdkmanager.
          # In this deprecated android sdk tool there is no ndk-bundle or cmake package!
        licenses:
          - '.+'
      before_install:
        # Install NDK and cmake via android sdkmanager. Unfortunately to acknowledge the licenses
        # takes a while. Looks like the "echo y" solution is not working. Needs improvement!
        - export TERM=dumb
        - touch ~/.android/repositories.cfg
        - mkdir -p /usr/local/android-sdk/licenses
        - echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > /usr/local/android-sdk/licenses/android-sdk-license
        - echo -e "\nd56f5187479451eabf01fb78af6dfcb131a6481e" >> /usr/local/android-sdk/licenses/android-sdk-license
        # Install NDK and cmake via android sdkmanager.
        - /usr/local/android-sdk/tools/bin/sdkmanager --update > /dev/null
        - echo "y" | /usr/local/android-sdk/tools/bin/sdkmanager "emulator" "ndk-bundle" "cmake;3.6.4111459" > /dev/null
      before_script:
        - export TERM=dumb
        - export _NO_CHECK_SIGNATURE=true
        - echo no | /usr/local/android-sdk/tools/bin/avdmanager create avd -n test -k "system-images;android-22;default;armeabi-v7a"
        - /usr/local/android-sdk/emulator/emulator -avd test -no-audio -no-window -dns-server 8.8.8.8 &
        - android-wait-for-emulator || android-wait-for-emulator
        - /usr/local/android-sdk/platform-tools/adb shell input keyevent 82 &
      script:
        # Using the ninja build command. Is much faster then make build command.
        - /usr/local/android-sdk/cmake/3.6.4111459/bin/cmake -G'Android Gradle - Ninja' -DANDROID_ABI=armeabi-v7a -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=/usr/local/android-sdk/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_PLATFORM=android-22 -DCMAKE_MAKE_PROGRAM=/usr/local/android-sdk/cmake/3.6.4111459/bin/ninja -DPEGTL_BUILD_EXAMPLES=OFF
        - /usr/local/android-sdk/cmake/3.6.4111459/bin/cmake --build . --target all
        - /usr/local/android-sdk/cmake/3.6.4111459/bin/ctest --output-on-failure

    - language: android
      jdk: openjdk8
      android:
        components:
          - tools
          - platform-tools
          - build-tools-23.0.3
          - extra-android-support
          - extra-android-m2repository
          - android-23
          # Unfortunately travis uses the old android sdk tool instead of the new sdkmanager.
          # In this deprecated android sdk tool there is no ndk-bundle or cmake package!
        licenses:
          - '.+'
      before_install:
        # Install NDK and cmake via android sdkmanager. Unfortunately to acknowledge the licenses
        # takes a while. Looks like the "echo y" solution is not working. Needs improvement!
        - export TERM=dumb
        - touch ~/.android/repositories.cfg
        - mkdir -p /usr/local/android-sdk/licenses
        - echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > /usr/local/android-sdk/licenses/android-sdk-license
        - echo -e "\nd56f5187479451eabf01fb78af6dfcb131a6481e" >> /usr/local/android-sdk/licenses/android-sdk-license
        # Install NDK and cmake via android sdkmanager.
        - /usr/local/android-sdk/tools/bin/sdkmanager --update > /dev/null
        - echo "y" | /usr/local/android-sdk/tools/bin/sdkmanager "emulator" "ndk-bundle" "cmake;3.6.4111459" "system-images;android-23;google_apis;armeabi-v7a" > /dev/null
      before_script:
        - export TERM=dumb
        - export _NO_CHECK_SIGNATURE=true
        - echo no | /usr/local/android-sdk/tools/bin/avdmanager create avd -n test -k "system-images;android-23;google_apis;armeabi-v7a"
        - /usr/local/android-sdk/emulator/emulator -avd test -no-audio -no-window -dns-server 8.8.8.8 &
        - android-wait-for-emulator || android-wait-for-emulator
        - /usr/local/android-sdk/platform-tools/adb shell input keyevent 82 &
      script:
        # Using the ninja build command. Is much faster then make build command.
        - /usr/local/android-sdk/cmake/3.6.4111459/bin/cmake -G'Android Gradle - Ninja' -DANDROID_ABI=armeabi-v7a -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=/usr/local/android-sdk/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_PLATFORM=android-23 -DCMAKE_MAKE_PROGRAM=/usr/local/android-sdk/cmake/3.6.4111459/bin/ninja -DPEGTL_BUILD_EXAMPLES=OFF
        - /usr/local/android-sdk/cmake/3.6.4111459/bin/cmake --build . --target all
        - /usr/local/android-sdk/cmake/3.6.4111459/bin/ctest --output-on-failure

    - language: android
      jdk: openjdk8
      android:
        components:
          - tools
          - platform-tools
          - build-tools-23.0.3
          - extra-android-support
          - extra-android-m2repository
          - android-24
          - sys-img-armeabi-v7a-android-24
          # Unfortunately travis uses the old android sdk tool instead of the new sdkmanager.
          # In this deprecated android sdk tool there is no ndk-bundle or cmake package!
        licenses:
          - '.+'
      before_install:
        # Install NDK and cmake via android sdkmanager. Unfortunately to acknowledge the licenses
        # takes a while. Looks like the "echo y" solution is not working. Needs improvement!
        - export TERM=dumb
        - touch ~/.android/repositories.cfg
        - mkdir -p /usr/local/android-sdk/licenses
        - echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > /usr/local/android-sdk/licenses/android-sdk-license
        - echo -e "\nd56f5187479451eabf01fb78af6dfcb131a6481e" >> /usr/local/android-sdk/licenses/android-sdk-license
        # Install NDK and cmake via android sdkmanager.
        - /usr/local/android-sdk/tools/bin/sdkmanager --update > /dev/null
        - echo "y" | /usr/local/android-sdk/tools/bin/sdkmanager "emulator" "ndk-bundle" "cmake;3.6.4111459" > /dev/null
      before_script:
        - export TERM=dumb
        - export _NO_CHECK_SIGNATURE=true
        - echo no | /usr/local/android-sdk/tools/bin/avdmanager create avd -n test -k "system-images;android-24;default;armeabi-v7a"
        - /usr/local/android-sdk/emulator/emulator -avd test -no-audio -no-window -dns-server 8.8.8.8 &
        - android-wait-for-emulator || android-wait-for-emulator
        - /usr/local/android-sdk/platform-tools/adb shell input keyevent 82 &
      script:
        # Using the ninja build command. Is much faster then make build command.
        - /usr/local/android-sdk/cmake/3.6.4111459/bin/cmake -G'Android Gradle - Ninja' -DANDROID_ABI=armeabi-v7a -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=/usr/local/android-sdk/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_PLATFORM=android-24 -DCMAKE_MAKE_PROGRAM=/usr/local/android-sdk/cmake/3.6.4111459/bin/ninja -DPEGTL_BUILD_EXAMPLES=OFF
        - /usr/local/android-sdk/cmake/3.6.4111459/bin/cmake --build . --target all
        - /usr/local/android-sdk/cmake/3.6.4111459/bin/ctest --output-on-failure

    - compiler: gcc
      addons:
        apt:
          sources: ['ubuntu-toolchain-r-test']
          packages: ['g++-7']
      env:
        - CXX=g++-7
        - CXXFLAGS="-O0 --coverage"
      before_script:
        - pip install --user cpp-coveralls
      script:
        - make -kj3 check
        - coveralls --gcov gcov-7 --gcov-options '\-lp' --exclude src

    - compiler: gcc
      addons:
        apt:
          sources: ['ubuntu-toolchain-r-test']
          packages: ['g++-8']
      env:
        - CXX=g++-8
        - CPPFLAGS="-fsanitize=undefined -fuse-ld=gold"

    - compiler: gcc
      sudo: true
      addons:
        apt:
          sources: ['ubuntu-toolchain-r-test']
          packages: ['g++-8']
      env:
        - CXX=g++-8
        - CPPFLAGS="-fsanitize=address -fuse-ld=gold"

    - compiler: clang
      addons:
        apt:
          sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-6.0']
          packages: ['clang-6.0']
      env:
        - CXX=clang++-6.0
        - CPPFLAGS=-fsanitize=undefined

    - compiler: clang
      sudo: true
      addons:
        apt:
          sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-6.0']
          packages: ['clang-6.0']
      env:
        - CXX=clang++-6.0
        - CPPFLAGS=-fsanitize=address

    - compiler: gcc
      addons:
        apt:
          sources: ['ubuntu-toolchain-r-test']
          packages: ['g++-8', 'valgrind']
      env:
        - CXX=g++-8
        - SPECIAL=valgrind
      script:
        - make -kj3 valgrind

    - compiler: gcc
      addons:
        apt:
          sources: ['ubuntu-toolchain-r-test']
          packages: ['g++-8', 'cppcheck']
      env:
        - CXX=g++-8
        - SPECIAL=cppcheck
      script:
        - make -kj3 cppcheck

    - compiler: clang
      addons:
        apt:
          sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-trusty-6.0']
          packages: ['clang-6.0', 'clang-tidy-6.0']
      env:
        - CXX=clang++-6.0
        - CLANG_TIDY=clang-tidy-6.0
      script:
        - "sed -i 's#TAO_PEGTL_NAMESPACE#pegtl#g' $(find . -name '*.[hc]pp')"
        - make -kj3 clang-tidy

    - language: python
      python:
        - "3.6"
      sudo: required
      install:
        - pip install conan conan-package-tools
      env:
        - CONAN_GCC_VERSIONS=7
        - CONAN_DOCKER_IMAGE=lasote/conangcc7
      script:
        - python .conan/build.py

script:
  - $CXX --version
  - make -j3 build/src/test/pegtl/tester
  - build/src/test/pegtl/tester
  - make -kj3