# Copyright Roger Meier <r.meier@siemens.com>
# SPDX-License-Identifier:	GPL-2.0+

# build U-Boot on Travis CI - https://travis-ci.org/

sudo: required
dist: trusty

language: c

addons:
  apt:
    packages:
    - cppcheck
    - sloccount
    - sparse
    - bc
    - build-essential
    - libsdl1.2-dev
    - python
    - python-virtualenv
    - swig
    - libpython-dev
    - gcc-powerpc-linux-gnu
    - iasl
    - grub-efi-ia32-bin
    - rpm2cpio
    - wget
    - device-tree-compiler

install:
 # install latest device tree compiler
 #- git clone --depth=1 git://git.kernel.org/pub/scm/utils/dtc/dtc.git /tmp/dtc
 #- make -j4 -C /tmp/dtc
 # Clone uboot-test-hooks
 - git clone --depth=1 git://github.com/swarren/uboot-test-hooks.git /tmp/uboot-test-hooks
 - ln -s travis-ci /tmp/uboot-test-hooks/bin/`hostname`
 - ln -s travis-ci /tmp/uboot-test-hooks/py/`hostname`
 # prepare buildman environment
 - echo -e "[toolchain]\nroot = /usr" > ~/.buildman
 - echo -e "aarch64 = /tmp/gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu" >> ~/.buildman
 - echo -e "arm = /tmp/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf" >> ~/.buildman
 - echo -e "arc = /tmp/arc_gnu_2016.09_prebuilt_uclibc_le_archs_linux_install" >> ~/.buildman
 - echo -e "\n[toolchain-alias]\nsh = sh4\nopenrisc = or32" >> ~/.buildman
 - cat ~/.buildman
 - virtualenv /tmp/venv
 - . /tmp/venv/bin/activate
 - pip install pytest
 - grub-mkimage -o ~/grub_x86.efi -O i386-efi normal  echo lsefimmap lsefi lsefisystab efinet tftp minicmd
 - mkdir ~/grub2-arm
 - ( cd ~/grub2-arm; wget -O - http://download.opensuse.org/ports/armv7hl/distribution/leap/42.2/repo/oss/suse/armv7hl/grub2-arm-efi-2.02~beta2-87.1.armv7hl.rpm | rpm2cpio | cpio -di )

env:
  global:
    - PATH=/tmp/dtc:/tmp/qemu-install/bin:/tmp/uboot-test-hooks/bin:$PATH
    - PYTHONPATH=/tmp/uboot-test-hooks/py/travis-ci
    - BUILD_DIR=build
    - HOSTCC="cc"
    - HOSTCXX="c++"

before_script:
  # install toolchains based on TOOLCHAIN} variable
  - if [[ "${TOOLCHAIN}" == *avr32* ]]; then ./tools/buildman/buildman --fetch-arch avr32 ; fi
  - if [[ "${TOOLCHAIN}" == *m68k* ]]; then ./tools/buildman/buildman --fetch-arch m68k ; fi
  - if [[ "${TOOLCHAIN}" == *microblaze* ]]; then ./tools/buildman/buildman --fetch-arch microblaze ; fi
  - if [[ "${TOOLCHAIN}" == *mips* ]]; then ./tools/buildman/buildman --fetch-arch mips ; fi
  - if [[ "${TOOLCHAIN}" == *or32* ]]; then ./tools/buildman/buildman --fetch-arch or32 ; fi
  - if [[ "${TOOLCHAIN}" == *sh4* ]]; then ./tools/buildman/buildman --fetch-arch sh4 ; fi
  - if [[ "${TOOLCHAIN}" == *x86_64* ]]; then
      ./tools/buildman/buildman --fetch-arch x86_64;
      echo -e "\n[toolchain-prefix]\nx86 = ${HOME}/.buildman-toolchains/gcc-4.9.0-nolibc/x86_64-linux/bin/x86_64-linux-" >> ~/.buildman;
    fi
  - if [[ "${TOOLCHAIN}" == arc ]]; then
       wget https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases/download/arc-2016.09-release/arc_gnu_2016.09_prebuilt_uclibc_le_archs_linux_install.tar.gz &&
       tar -C /tmp -xf arc_gnu_2016.09_prebuilt_uclibc_le_archs_linux_install.tar.gz;
    fi
  - if [[ "${TOOLCHAIN}" == *xtensa* ]]; then ./tools/buildman/buildman --fetch-arch xtensa ; fi
  # If TOOLCHAIN is unset, we're on some flavour of ARM.
  - if [[ "${TOOLCHAIN}" == "" ]]; then
       wget http://releases.linaro.org/components/toolchain/binaries/6.3-2017.02/aarch64-linux-gnu/gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu.tar.xz &&
       wget http://releases.linaro.org/components/toolchain/binaries/6.3-2017.02/arm-linux-gnueabihf/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf.tar.xz &&
       tar -C /tmp -xf gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu.tar.xz &&
       tar -C /tmp -xf gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf.tar.xz;
    fi
  - if [[ "${QEMU_TARGET}" != "" ]]; then
       git clone git://git.qemu.org/qemu.git /tmp/qemu;
       pushd /tmp/qemu;
       git submodule update --init dtc &&
       git checkout v2.8.0-rc3 &&
       ./configure --prefix=/tmp/qemu-install --target-list=${QEMU_TARGET} &&
       make -j4 all install;
       popd;
    fi

script:
 # Comments must be outside the command strings below, or the Travis parser
 # will get confused.
 #
 # Exit code 129 means warnings only.
 - if [[ "${BUILDMAN}" != "" ]]; then
     set +e;
     tools/buildman/buildman -P ${BUILDMAN};
     ret=$?;
     if [[ $ret -ne 0 && $ret -ne 129 ]]; then
       tools/buildman/buildman -sdeP ${BUILDMAN};
       exit $ret;
     fi;
   fi
 # "not a_test_which_does_not_exist" is a dummy -k parameter which will
 # never prevent any test from running. That way, we can always pass
 # "-k something" even when $TEST_PY_TEST_SPEC doesnt need a custom
 # value.
 - export UBOOT_TRAVIS_BUILD_DIR=`cd .. && pwd`/.bm-work/${TEST_PY_BD};
   cp ~/grub_x86.efi $UBOOT_TRAVIS_BUILD_DIR/;
   cp ~/grub2-arm/usr/lib/grub2/arm-efi/grub.efi $UBOOT_TRAVIS_BUILD_DIR/grub_arm.efi;
   if [[ "${TEST_PY_BD}" != "" ]]; then
     ./test/py/test.py --bd ${TEST_PY_BD} ${TEST_PY_ID}
       -k "${TEST_PY_TEST_SPEC:-not a_test_which_does_not_exist}"
       --build-dir "$UBOOT_TRAVIS_BUILD_DIR";
   fi

matrix:
  include:
  # we need to build by vendor due to 50min time limit for builds
  # each env setting here is a dedicated build
    - env:
        - BUILDMAN="arc"
          TOOLCHAIN="arc"
    - env:
        - BUILDMAN="arm11"
    - env:
        - BUILDMAN="arm7"
    - env:
        - BUILDMAN="arm920t"
    - env:
        - JOB="arm926ejs"
          BUILDMAN="arm926ejs -x mx,siemens,atmel"
    - env:
        - BUILDMAN="arm946es"
    - env:
        - BUILDMAN="atmel -x avr32"
    - env:
        - BUILDMAN="avr32"
          TOOLCHAIN="avr32"
    - env:
        - BUILDMAN="denx"
    - env:
        - JOB="Freescale ARM32"
          BUILDMAN="freescale -x powerpc,m68k,aarch64"
    - env:
        - JOB="Freescale AArch64"
          BUILDMAN="freescale&aarch64"
    - env:
        - JOB="i.MX6 (non-Freescale)"
          BUILDMAN="mx6 -x freescale"
    - env:
        - JOB="i.MX (non-Freescale, non-i.MX6)"
          BUILDMAN="mx -x freescale,mx6"
    - env:
        - BUILDMAN="samsung"
    - env:
        - BUILDMAN="sun4i"
    - env:
        - BUILDMAN="sun5i"
    - env:
        - BUILDMAN="sun6i"
    - env:
        - BUILDMAN="sun7i"
    - env:
        - BUILDMAN="sun8i"
    - env:
        - BUILDMAN="sun9i"
    - env:
        - BUILDMAN="sun50i"
    - env:
        - JOB="Catch-all ARM"
          BUILDMAN="arm -x arm11,arm7,arm9,aarch64,atmel,denx,freescale,kirkwood,mvebu,siemens,tegra,uniphier,mx,samsung,sunxi,am33xx,omap3,omap4,omap5,pxa,rockchip"
    - env:
        - BUILDMAN="sandbox x86"
          TOOLCHAIN="x86_64"
    - env:
        - BUILDMAN="kirkwood"
    - env:
        - BUILDMAN="mvebu"
    - env:
        - BUILDMAN="pxa"
    - env:
        - BUILDMAN="m68k"
          TOOLCHAIN="m68k"
    - env:
        - BUILDMAN="microblaze"
          TOOLCHAIN="microblaze"
    - env:
        - BUILDMAN="mips"
          TOOLCHAIN="mips"
    - env:
        - BUILDMAN="mpc512x"
    - env:
        - BUILDMAN="mpc5xx"
    - env:
        - BUILDMAN="mpc5xxx"
    - env:
        - BUILDMAN="mpc8260"
    - env:
        - BUILDMAN="mpc83xx"
    - env:
        - BUILDMAN="mpc85xx -x freescale"
    - env:
        - BUILDMAN="mpc85xx -x t208xrdb -x t4qds -x t102* -x p1_p2_rdb_pc -x p1010rdb -x corenet_ds -x b4860qds -x sbc8548 -x bsc91*"
    - env:
        - BUILDMAN="t208xrdb t4qds t102*"
    - env:
        - BUILDMAN="p1_p2_rdb_pc"
    - env:
        - BUILDMAN="p1010rdb"
    - env:
        - BUILDMAN="corenet_ds b4860qds sbc8548 bsc91*"
    - env:
        - BUILDMAN="mpc86xx"
    - env:
        - BUILDMAN="mpc8xx"
    - env:
        - BUILDMAN="siemens"
    - env:
        - BUILDMAN="tegra"
    - env:
        - JOB="am33xx"
          BUILDMAN="am33xx -x siemens"
    - env:
        - BUILDMAN="omap3"
    - env:
        - BUILDMAN="omap4"
    - env:
        - BUILDMAN="omap5"
    - env:
        - BUILDMAN="uniphier"
    - env:
        - BUILDMAN="aarch64 -x tegra,freescale,mvebu,uniphier,sunxi,samsung,rockchip"
    - env:
        - BUILDMAN="rockchip"
    - env:
        - BUILDMAN="sh4"
          TOOLCHAIN="sh4"
    - env:
        - BUILDMAN="xtensa"
          TOOLCHAIN="xtensa"

    # QA jobs for code analytics
    # static code analysis with cppcheck (we can add --enable=all later)
    - env:
        - JOB="cppcheck"
      script:
        - cppcheck --force --quiet --inline-suppr .
    # search for TODO within source tree
    - env:
        - JOB="grep TODO"
      script:
        - grep -r TODO .
    # search for FIXME within source tree
    - env:
        - JOB="grep FIXME HACK"
      script:
        - grep -r FIXME .
    # search for HACK within source tree and ignore HACKKIT board
      script:
        - grep -r HACK . | grep -v HACKKIT
    # some statistics about the code base
    - env:
        - JOB="sloccount"
      script:
        - sloccount .

    # test/py
    - env:
        - TEST_PY_BD="sandbox"
          BUILDMAN="^sandbox$"
          TOOLCHAIN="x86_64"
    - env:
        - TEST_PY_BD="vexpress_ca15_tc2"
          TEST_PY_ID="--id qemu"
          QEMU_TARGET="arm-softmmu"
          BUILDMAN="^vexpress_ca15_tc2$"
    - env:
        - TEST_PY_BD="vexpress_ca9x4"
          TEST_PY_ID="--id qemu"
          QEMU_TARGET="arm-softmmu"
          BUILDMAN="^vexpress_ca9x4$"
    - env:
        - TEST_PY_BD="integratorcp_cm926ejs"
          TEST_PY_TEST_SPEC="not sleep"
          TEST_PY_ID="--id qemu"
          QEMU_TARGET="arm-softmmu"
          BUILDMAN="^integratorcp_cm926ejs$"
    - env:
        - TEST_PY_BD="qemu_mips"
          TEST_PY_TEST_SPEC="not sleep"
          QEMU_TARGET="mips-softmmu"
          BUILDMAN="^qemu_mips$"
          TOOLCHAIN="mips"
    - env:
        - TEST_PY_BD="qemu_mipsel"
          TEST_PY_TEST_SPEC="not sleep"
          QEMU_TARGET="mipsel-softmmu"
          BUILDMAN="^qemu_mipsel$"
          TOOLCHAIN="mips"
    - env:
        - TEST_PY_BD="qemu_mips64"
          TEST_PY_TEST_SPEC="not sleep"
          QEMU_TARGET="mips64-softmmu"
          BUILDMAN="^qemu_mips64$"
          TOOLCHAIN="mips"
    - env:
        - TEST_PY_BD="qemu_mips64el"
          TEST_PY_TEST_SPEC="not sleep"
          QEMU_TARGET="mips64el-softmmu"
          BUILDMAN="^qemu_mips64el$"
          TOOLCHAIN="mips"
    - env:
        - TEST_PY_BD="qemu-ppce500"
          TEST_PY_TEST_SPEC="not sleep"
          QEMU_TARGET="ppc-softmmu"
          BUILDMAN="^qemu-ppce500$"
    - env:
        - TEST_PY_BD="qemu-x86"
          TEST_PY_TEST_SPEC="not sleep"
          QEMU_TARGET="i386-softmmu"
          BUILDMAN="^qemu-x86$"
          TOOLCHAIN="x86_64"
          BUILD_ROM="yes"
    - env:
        - TEST_PY_BD="zynq_zc702"
          TEST_PY_TEST_SPEC="not sleep"
          QEMU_TARGET="arm-softmmu"
          TEST_PY_ID="--id qemu"
          BUILDMAN="^zynq_zc702$"

# TODO make it perfect ;-r
