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

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

language: c

addons:
  apt:
    packages:
    - cppcheck
    - sloccount
    - sparse
    - bc
    - build-essential
    - libsdl1.2-dev

cache:
 - apt

install:
 # install latest device tree compiler
 - git clone --depth=1 https://git.kernel.org/pub/scm/utils/dtc/dtc.git /tmp/dtc
 - make -j4 -C /tmp/dtc
 # prepare buildman environment
 - export BUILDMAN_ROOT="root:"
 - export BUILDMAN_PPC="ppc:"
 - export BUILDMAN_ARM="arm:"
 - export BUILDMAN_SANDBOX="sandbox:"
 - echo -e "[toolchain]\n${BUILDMAN_ROOT} /\n" > ~/.buildman
 - echo -e "${BUILDMAN_PPC} /opt/eldk-5.4/powerpc/sysroots/i686-eldk-linux/usr/bin/powerpc-linux/\n" >> ~/.buildman
 - echo -e "${BUILDMAN_ARM} /opt/eldk-5.4/armv5te/sysroots/i686-eldk-linux/usr/bin/armv5te-linux-gnueabi/\n" >> ~/.buildman
 - echo -e "${BUILDMAN_SANDBOX} /usr/bin/gcc\n" >> ~/.buildman
 - export BUILDMAN_ALIAS="x86:"
 - export BUILDMAN_ALIAS_ARM="arm:"
 - echo -e "\n\n[toolchain-alias]\n${BUILDMAN_ALIAS} i386\n" >> ~/.buildman
 - echo -e "${BUILDMAN_ALIAS_ARM} armv5te\n" >> ~/.buildman
 - cat ~/.buildman

env:
  global:
    - PATH=/tmp/dtc:$PATH
    - BUILD_DIR=build
    - HOSTCC="cc"
    - HOSTCXX="c++"

before_script:
  # install toolchains based on TOOLCHAIN} variable
  - if [[ "${TOOLCHAIN}" == *aarch64* ]]; then ./tools/buildman/buildman --fetch-arch aarch64 ; fi
  - if [[ "${TOOLCHAIN}" == *arm* ]]; then wget ftp://ftp.denx.de/pub/eldk/5.4/targets/armv5te/eldk-eglibc-i686-arm-toolchain-gmae-5.4.sh ; fi
  - if [[ "${TOOLCHAIN}" == *arm* ]]; then sh eldk-eglibc-i686-arm-toolchain-gmae-5.4.sh -y ; fi
  - if [[ "${TOOLCHAIN}" == *avr32* ]]; then ./tools/buildman/buildman --fetch-arch avr32 ; fi
  - if [[ "${TOOLCHAIN}" == *i386* ]]; then ./tools/buildman/buildman sandbox --fetch-arch i386 ; fi
  - if [[ "${TOOLCHAIN}" == *m68k* ]]; then ./tools/buildman/buildman --fetch-arch m68k ; fi
  - if [[ "${TOOLCHAIN}" == *mips* ]]; then ./tools/buildman/buildman --fetch-arch mips ; fi
  - if [[ "${TOOLCHAIN}" == *ppc* ]]; then wget ftp://ftp.denx.de/pub/eldk/5.4/targets/powerpc/eldk-eglibc-i686-powerpc-toolchain-gmae-5.4.sh ; fi
  - if [[ "${TOOLCHAIN}" == *ppc* ]]; then sh eldk-eglibc-i686-powerpc-toolchain-gmae-5.4.sh -y ; fi

script:
 # the execution sequence for each test
 - if [[ "${TEST_CMD}" != "" ]]; then
     ${TEST_CMD};
   fi
 - if [[ "${BUILDMAN}" != "" ]]; then
     tools/buildman/buildman ${BUILDMAN};
   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="arm1136"
          TOOLCHAIN="arm"
    - env:
        - BUILDMAN="arm1136"
          TOOLCHAIN="arm"
    - env:
        - BUILDMAN="arm1176"
          TOOLCHAIN="arm"
    - env:
        - BUILDMAN="arm720t"
          TOOLCHAIN="arm"
    - env:
        - BUILDMAN="arm920t"
          TOOLCHAIN="arm"
    - env:
        - BUILDMAN="atmel -x avr32"
          TOOLCHAIN="arm"
    - env:
        - BUILDMAN="avr32"
          TOOLCHAIN="avr32"
    - env:
        - BUILDMAN="davinci"
          TOOLCHAIN="arm"
    - env:
        - BUILDMAN="denx"
          TOOLCHAIN="arm"
    - env:
        - BUILDMAN="freescale -x powerpc,m68k,aarch64"
          TOOLCHAIN="arm"
    - env:
        - BUILDMAN="sandbox x86"
          TOOLCHAIN="i386"
    - env:
        - BUILDMAN="kirkwood"
          TOOLCHAIN="arm"
    - env:
        - BUILDMAN="m68k"
          TOOLCHAIN="m68k"
    - env:
        - BUILDMAN="mips"
          TOOLCHAIN="mips"
    - env:
        - BUILDMAN="mpc512x"
          TOOLCHAIN="ppc"
    - env:
        - BUILDMAN="mpc5xx"
          TOOLCHAIN="ppc"
    - env:
        - BUILDMAN="mpc5xxx"
          TOOLCHAIN="ppc"
    - env:
        - BUILDMAN="mpc8260"
          TOOLCHAIN="ppc"
    - env:
        - BUILDMAN="mpc83xx"
          TOOLCHAIN="ppc"
    - env:
        - BUILDMAN="mpc85xx -x freescale"
          TOOLCHAIN="ppc"
    - 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*"
          TOOLCHAIN="ppc"
    - env:
        - BUILDMAN="t208xrdb t4qds t102*"
          TOOLCHAIN="ppc"
    - env:
        - BUILDMAN="p1_p2_rdb_pc p1010rdb"
          TOOLCHAIN="ppc"
    - env:
        - BUILDMAN="corenet_ds b4860qds sbc8548 bsc91*"
          TOOLCHAIN="ppc"
    - env:
        - BUILDMAN="mpc86xx"
          TOOLCHAIN="ppc"
    - env:
        - BUILDMAN="mpc8xx"
          TOOLCHAIN="ppc"
    - env:
        - BUILDMAN="siemens"
          TOOLCHAIN="arm"
    - env:
        - BUILDMAN="ti"
          TOOLCHAIN="arm"
    - env:
        - BUILDMAN="aarch64"
          TOOLCHAIN="aarch64"

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

# TODO make it perfect ;-r
