1 language: android 2 3 env: 4 global: 5 - BORINGSSL_HOME="$HOME/boringssl" 6 - CC=clang 7 - CXX=clang++ 8 - GOOGLE_JAVA_FORMAT_VERSION=1.1 9 10 cache: 11 directories: 12 - $HOME/.gradle/caches/ 13 - $HOME/.gradle/wrapper/dists/ 14 15 matrix: 16 include: 17 ### 18 ### Linux build is the only platform that builds Android here. 19 ### 20 - os: linux 21 jdk: oraclejdk8 22 sudo: false 23 24 env: 25 - ANDROID_TOOLS_URL="https://dl.google.com/android/repository/tools_r25.2.3-linux.zip" 26 - ANDROID_HOME="$HOME/android-sdk-linux" 27 - ANDROID_NDK_HOME="$ANDROID_HOME/ndk-bundle" 28 29 before_install: 30 - curl -L $ANDROID_TOOLS_URL -o $HOME/tools.zip 31 - unzip -q $HOME/tools.zip -d $ANDROID_HOME 32 - mkdir $ANDROID_HOME/licenses 33 - echo -ne "\n8933bad161af4178b1185d1a37fbf41ea5269c55" >> $ANDROID_HOME/licenses/android-sdk-license 34 - echo -ne "\n84831b9409646a918e30573bab4c9c91346d8abd\n504667f4c0de7af1a06de9f4b1727b84351f2910" >> $ANDROID_HOME/licenses/android-sdk-preview-license 35 - $ANDROID_HOME/tools/bin/sdkmanager tools 36 - $ANDROID_HOME/tools/bin/sdkmanager platform-tools 37 - $ANDROID_HOME/tools/bin/sdkmanager 'build-tools;25.0.0' 38 - $ANDROID_HOME/tools/bin/sdkmanager 'platforms;android-25' 39 - $ANDROID_HOME/tools/bin/sdkmanager 'extras;android;m2repository' 40 - $ANDROID_HOME/tools/bin/sdkmanager --channel=1 ndk-bundle 41 - $ANDROID_HOME/tools/bin/sdkmanager 'cmake;3.6.4111459' 42 43 addons: 44 apt: 45 sources: 46 - kalakris-cmake 47 - llvm-toolchain-precise-3.8 # for clang-format-3.8 48 - ubuntu-toolchain-r-test 49 packages: 50 - clang 51 - clang-format-3.8 # for style checks 52 - cmake 53 - g++-multilib 54 - gcc-multilib 55 - libc6-dev-i386 56 - libc6-dev:i386 57 - ninja-build 58 59 ### 60 ### MacOS build only does x86-64. 61 ### 62 - os: osx 63 osx_image: xcode8 64 before_install: 65 - brew update 66 - brew install ninja 67 - export JAVA_HOME=`/usr/libexec/java_home -v 1.8` 68 69 before_cache: 70 - find $HOME/.gradle -name "*.lock" -exec rm {} \; 71 - rm -rf $HOME/.gradle/caches/[1-9]* 72 73 before_script: 74 # Get Google Java Format 75 - curl -L https://github.com/google/google-java-format/releases/download/google-java-format-1.1/google-java-format-${GOOGLE_JAVA_FORMAT_VERSION}-all-deps.jar -o $HOME/gjf.jar 76 77 # get BoringSSL 78 - mkdir $BORINGSSL_HOME 79 - git clone --depth 1 https://boringssl.googlesource.com/boringssl $BORINGSSL_HOME 80 81 # Build BoringSSL for 64-bit 82 - mkdir $BORINGSSL_HOME/build64 && pushd $BORINGSSL_HOME/build64 83 - cmake -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE -DCMAKE_BUILD_TYPE=Release -DCMAKE_ASM_FLAGS=-Wa,--noexecstack -GNinja .. 84 - ninja 85 - popd 86 87 # Get git-clang-format 88 - mkdir $HOME/bin 89 - curl -L https://llvm.org/svn/llvm-project/cfe/trunk/tools/clang-format/git-clang-format -o $HOME/bin/git-clang-format 90 - chmod 0755 $HOME/bin/git-clang-format 91 - export PATH="$HOME/bin:$PATH" 92 93 # TODO(nathanmittler): Need to figure out how to make 32-bit builds work 94 # Build BoringSSL for 32-bit 95 # - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; 96 # then 97 # mkdir $BORINGSSL_HOME/build32; 98 # pushd $BORINGSSL_HOME/build32; 99 # cmake -DCMAKE_TOOLCHAIN_FILE=../util/32-bit-toolchain.cmake -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE -DCMAKE_BUILD_TYPE=Release -DCMAKE_ASM_FLAGS="-Wa,--noexecstack -m32 -msse2" -GNinja ..; 100 # ninja; 101 # popd; 102 # fi 103 104 # We need this to find the merge-base 105 - if [[ "$TRAVIS_OS_NAME" == "linux" && "$TRAVIS_PULL_REQUEST" != "false" ]]; 106 then 107 git fetch origin +refs/heads/${TRAVIS_BRANCH}:refs/remotes/origin/${TRAVIS_BRANCH}; 108 fi 109 110 script: 111 # MacOS (BSD) xargs is missing some nice features that make this easy, so skip it. 112 - if [[ "$TRAVIS_OS_NAME" == "linux" && "$TRAVIS_PULL_REQUEST" != "false" ]]; 113 then 114 git rev-list $(git merge-base HEAD origin/master)..HEAD | xargs -i git clang-format --binary=$(which clang-format-3.8) --style=file --diff {}^ {} | ( git apply; true ) && git diff --exit-code || { git reset --hard; false; } 115 fi 116 - if [[ "$TRAVIS_OS_NAME" == "linux" && "$TRAVIS_PULL_REQUEST" != "false" ]]; 117 then 118 git rev-list $(git merge-base HEAD origin/master)..HEAD | xargs -i git diff-tree --no-commit-id --name-only -r {} | grep -E '\.java$' | xargs -r git ls-files | xargs -r java -jar $HOME/gjf.jar -a -i --fix-imports-only && git diff --exit-code || { git reset --hard; false; } 119 fi 120 121 - ./gradlew build 122 123 after_script: 124 - "[ -f android/build/outputs/lint-results-debug.xml ] && cat android/build/outputs/lint-results-debug.xml" 125