#
#  Licensed to the Apache Software Foundation (ASF) under one or more
#  contributor license agreements.  See the NOTICE file distributed with
#  this work for additional information regarding copyright ownership.
#  The ASF licenses this file to You under the Apache License, Version 2.0
#  (the "License"); you may not use this file except in compliance with
#  the License.  You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.
#
language: java

matrix:
  include:

    # This job tests x64 and i386 builds. Tests x64 for proper execution.
    # Can't use --no-transfer-progress before Maven 3.6.1.
    - name: "x64,i386 / Ubuntu 14.04 / Java 8 / OpenSSL 1.0.x"
      arch: amd64
      os: linux
      dist: trusty
      jdk: openjdk8
      addons:
        apt:
          packages:
            - gcc-multilib
            - g++-multilib
      env:
         - OPENSSL_HOME=/usr/
      install: |
        sudo ln -s /usr/include/x86_64-linux-gnu /usr/include/i386-linux-gnu
        mvn -version
        mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -V
        mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -V -Plinux32

    # Job tests win32,win64 builds. But cannot test execution.
    - name: "win32,win64 / Ubuntu 14.04 / Java 8 / OpenSSL 1.0.x"
      arch: amd64
      os: linux
      dist: trusty
      jdk: openjdk8
      addons:
        apt:
          packages:
            - gcc-mingw-w64
            - g++-mingw-w64
            - libssl-dev
      env:
         - OPENSSL_HOME=/usr/
      install: |
        sudo ln -s /usr/include/x86_64-linux-gnu/openssl/opensslconf.h /usr/include/openssl/opensslconf.h
        mvn -version
        mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -V -Pwin64
        mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -V -Pwin32
      script: echo DONE
      after_success: echo DONE

    - name: "x64 / Ubuntu 18.04 / Java 8 / OpenSSL 1.1.x"
      arch: amd64
      os: linux
      dist: bionic
      jdk: openjdk8

    - name: "aarch64 / Ubuntu 16.04 / Java 8 / OpenSSL 1.0.x"
      arch: arm64
      os: linux
      dist: xenial
      jdk: openjdk8
      env:
        - JAVA_HOME=/usr/lib/jvm/java-8-openjdk-arm64
      addons:
        apt:
          packages:
            - openjdk-8-jdk-headless
            - maven

    - name: "aarch64 / Ubuntu 18.04 / Java 8 / OpenSSL 1.1.x"
      arch: arm64
      os: linux
      dist: bionic
      jdk: openjdk8
      env:
        - JAVA_HOME=/usr/lib/jvm/java-8-openjdk-arm64
      addons:
        apt:
          packages:
            - openjdk-8-jdk-headless
            - maven

    - name: "ppc64le / Ubuntu 16.04 / Java 8 / OpenSSL 1.0.x"
      arch: ppc64le
      os: linux
      dist: xenial
      jdk: openjdk8
      env:
        - JAVA_HOME=/usr/lib/jvm/java-8-openjdk-ppc64el
      addons:
        apt:
          packages:
            - openjdk-8-jdk-headless
            - maven

    - name: "ppc64le / Ubuntu 18.04 / Java 8 / OpenSSL 1.1.x"
      arch: ppc64le
      os: linux
      dist: bionic
      jdk: openjdk8
      env:
        - JAVA_HOME=/usr/lib/jvm/java-8-openjdk-ppc64el
      addons:
        apt:
          packages:
            - openjdk-8-jdk-headless
            - maven

    - name: "OS X / Java 8 / LibreSSL 2.2.x"
      os: osx
      osx_image: xcode9.3
      jdk: oraclejdk8
      env:
        - JAVA_HOME=$(/usr/libexec/java_home)

before_install:
  - |
    curl -L --cookie 'oraclelicense=accept-securebackup-cookie;' http://download.oracle.com/otn-pub/java/jce/8/jce_policy-8.zip -o /tmp/policy.zip
    sudo unzip -j -o /tmp/policy.zip *.jar -d $JAVA_HOME/jre/lib/security
    rm /tmp/policy.zip
  - openssl version -a
install: mvn install -DskipTests=true -Dmaven.javadoc.skip=true -Denforcer.skip=true -B -V
script: mvn test jacoco:report coveralls:report -Denforcer.skip=true -B -V
after_success: mvn site -Denforcer.skip=true -B -V

cache:
  directories:
    - $HOME/.m2
