#!/bin/sh
#
#  Copyright (c) 2016, The OpenThread Authors.
#  All rights reserved.
#
#  Redistribution and use in source and binary forms, with or without
#  modification, are permitted provided that the following conditions are met:
#  1. Redistributions of source code must retain the above copyright
#     notice, this list of conditions and the following disclaimer.
#  2. Redistributions in binary form must reproduce the above copyright
#     notice, this list of conditions and the following disclaimer in the
#     documentation and/or other materials provided with the distribution.
#  3. Neither the name of the copyright holder nor the
#     names of its contributors may be used to endorse or promote products
#     derived from this software without specific prior written permission.
#
#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
#  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
#  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
#  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
#  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
#  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
#  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
#  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
#  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
#  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
#  POSSIBILITY OF SUCH DAMAGE.
#

die() {
	echo " *** ERROR: " $*
	exit 1
}

set -x

python --version || die

[ $BUILD_TARGET != scan-build ] || {
    ./bootstrap || die

    export CPPFLAGS="-DMBEDTLS_DEBUG_C"
    export CPPFLAGS="${CPPFLAGS} -I${TRAVIS_BUILD_DIR}/third_party/mbedtls"
    export CPPFLAGS="${CPPFLAGS} -I${TRAVIS_BUILD_DIR}/third_party/mbedtls/repo/include"
    export CPPFLAGS="${CPPFLAGS} -DMBEDTLS_CONFIG_FILE=\\\"mbedtls-config.h\\\""

    # UART transport
    export CPPFLAGS="${CPPFLAGS}                          \
        -DOPENTHREAD_CONFIG_BORDER_AGENT_ENABLE=1         \
        -DOPENTHREAD_CONFIG_BORDER_ROUTER_ENABLE=1        \
        -DOPENTHREAD_CONFIG_CHANNEL_MANAGER_ENABLE=1      \
        -DOPENTHREAD_CONFIG_CHANNEL_MONITOR_ENABLE=1      \
        -DOPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE=1    \
        -DOPENTHREAD_CONFIG_COAP_API_ENABLE=1             \
        -DOPENTHREAD_CONFIG_COAP_SECURE_API_ENABLE=1      \
        -DOPENTHREAD_CONFIG_COMMISSIONER_ENABLE=1         \
        -DOPENTHREAD_CONFIG_DHCP6_CLIENT_ENABLE=1         \
        -DOPENTHREAD_CONFIG_DHCP6_SERVER_ENABLE=1         \
        -DOPENTHREAD_CONFIG_DIAG_ENABLE=1                 \
        -DOPENTHREAD_CONFIG_DNS_CLIENT_ENABLE=1           \
        -DOPENTHREAD_CONFIG_ECDSA_ENABLE=1                \
        -DOPENTHREAD_CONFIG_IP6_FRAGMENTATION_ENABLE=1    \
        -DOPENTHREAD_CONFIG_LEGACY_ENABLE=1               \
        -DOPENTHREAD_CONFIG_JAM_DETECTION_ENABLE=1        \
        -DOPENTHREAD_CONFIG_JOINER_ENABLE=1               \
        -DOPENTHREAD_CONFIG_LINK_RAW_ENABLE=1             \
        -DOPENTHREAD_CONFIG_MAC_FILTER_ENABLE=1           \
        -DOPENTHREAD_CONFIG_NCP_UART_ENABLE=1             \
        -DOPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE=1     \
        -DOPENTHREAD_CONFIG_SNTP_CLIENT_ENABLE=1          \
        -DOPENTHREAD_CONFIG_TMF_NETDATA_SERVICE_ENABLE=1  \
        -DOPENTHREAD_CONFIG_TMF_NETWORK_DIAG_MTD_ENABLE=1 \
        -DOPENTHREAD_CONFIG_UDP_FORWARD_ENABLE=1"

    scan-build ./configure                \
        --enable-builtin-mbedtls=no       \
        --enable-cli                      \
        --enable-executable=no            \
        --enable-ftd                      \
        --enable-mtd                      \
        --enable-ncp                      \
        --enable-radio-only               \
        --with-examples=posix || die

    scan-build --status-bugs -analyze-headers -v make -j2 || die

    # SPI transport
    scan-build ./configure                \
        --enable-builtin-mbedtls=no       \
        --enable-cli                      \
        --enable-executable=no            \
        --enable-ftd                      \
        --enable-mtd                      \
        --enable-ncp                      \
        --enable-radio-only               \
        --with-examples=posix || die

    scan-build --status-bugs -analyze-headers -v make -j2 || die
}

[ $BUILD_TARGET != android-build ] || {
    (cd .. && ${TRAVIS_BUILD_DIR}/.travis/check-android-build) || die
}

build_cc1352() {
    git checkout -- . || die
    git clean -xfd || die
    ./bootstrap || die
    COMMISSIONER=1 JOINER=1 SLAAC=1 DHCP6_CLIENT=1 DHCP6_SERVER=1 DNS_CLIENT=1 make -f examples/Makefile-cc1352 || die
    arm-none-eabi-size  output/cc1352/bin/ot-cli-ftd || die
    arm-none-eabi-size  output/cc1352/bin/ot-cli-mtd || die
    arm-none-eabi-size  output/cc1352/bin/ot-ncp-ftd || die
    arm-none-eabi-size  output/cc1352/bin/ot-ncp-mtd || die
}

build_cc2538() {
    git checkout -- . || die
    git clean -xfd || die
    ./bootstrap || die
    COMMISSIONER=1 JOINER=1 SLAAC=1 DHCP6_CLIENT=1 DHCP6_SERVER=1 DNS_CLIENT=1 make -f examples/Makefile-cc2538 || die
    arm-none-eabi-size  output/cc2538/bin/ot-cli-ftd || die
    arm-none-eabi-size  output/cc2538/bin/ot-cli-mtd || die
    arm-none-eabi-size  output/cc2538/bin/ot-ncp-ftd || die
    arm-none-eabi-size  output/cc2538/bin/ot-ncp-mtd || die
}

build_cc2650() {
    git checkout -- . || die
    git clean -xfd || die
    ./bootstrap || die
    make -f examples/Makefile-cc2650 || die
    arm-none-eabi-size  output/cc2650/bin/ot-cli-mtd || die
    arm-none-eabi-size  output/cc2650/bin/ot-ncp-mtd || die
}

build_cc2652() {
    git checkout -- . || die
    git clean -xfd || die
    ./bootstrap || die
    COMMISSIONER=1 JOINER=1 SLAAC=1 DHCP6_CLIENT=1 DHCP6_SERVER=1 DNS_CLIENT=1 make -f examples/Makefile-cc2652 || die
    arm-none-eabi-size  output/cc2652/bin/ot-cli-ftd || die
    arm-none-eabi-size  output/cc2652/bin/ot-cli-mtd || die
    arm-none-eabi-size  output/cc2652/bin/ot-ncp-ftd || die
    arm-none-eabi-size  output/cc2652/bin/ot-ncp-mtd || die
}

build_kw41z() {
    git checkout -- . || die
    git clean -xfd || die
    ./bootstrap || die
    COMMISSIONER=1 JOINER=1 SLAAC=1 DHCP6_CLIENT=1 DHCP6_SERVER=1 DNS_CLIENT=1 make -f examples/Makefile-kw41z || die
    arm-none-eabi-size  output/kw41z/bin/ot-cli-ftd || die
    arm-none-eabi-size  output/kw41z/bin/ot-cli-mtd || die
    arm-none-eabi-size  output/kw41z/bin/ot-ncp-ftd || die
    arm-none-eabi-size  output/kw41z/bin/ot-ncp-mtd || die
}

build_nrf52811() {
    # Default OpenThread switches for nRF52811 platform
    OPENTHREAD_FLAGS="BORDER_ROUTER=1 COAP=1 DNS_CLIENT=1 LINK_RAW=1 MAC_FILTER=1 MTD_NETDIAG=1"

    # UART transport
    git checkout -- . || die
    git clean -xfd || die
    ./bootstrap || die
    make -f examples/Makefile-nrf52811 $OPENTHREAD_FLAGS || die
    arm-none-eabi-size  output/nrf52811/bin/ot-cli-mtd || die
    arm-none-eabi-size  output/nrf52811/bin/ot-ncp-mtd || die
    arm-none-eabi-size  output/nrf52811/bin/ot-rcp || die

    # SPI transport for NCP
    git checkout -- . || die
    git clean -xfd || die
    ./bootstrap || die
    NCP_SPI=1 make -f examples/Makefile-nrf52811 $OPENTHREAD_FLAGS || die
    arm-none-eabi-size  output/nrf52811/bin/ot-ncp-mtd || die
    arm-none-eabi-size  output/nrf52811/bin/ot-rcp || die

    # Build without transport (no CLI or NCP applications)
    git checkout -- . || die
    git clean -xfd || die
    ./bootstrap || die
    DISABLE_TRANSPORTS=1 make -f examples/Makefile-nrf52811 || die
}

build_nrf52840() {
    # Default OpenThread switches for nRF52840 platform
    OPENTHREAD_FLAGS="BORDER_AGENT=1 BORDER_ROUTER=1 COAP=1 COAPS=1 COMMISSIONER=1 DEBUG=1 DHCP6_CLIENT=1 DHCP6_SERVER=1 DNS_CLIENT=1 ECDSA=1 FULL_LOGS=1 IP6_FRAGM=1 JOINER=1 LINK_RAW=1 MAC_FILTER=1 MTD_NETDIAG=1 SERVICE=1 SLAAC=1 SNTP_CLIENT=1 UDP_FORWARD=1"

    # UART transport
    git checkout -- . || die
    git clean -xfd || die
    ./bootstrap || die
    make -f examples/Makefile-nrf52840 $OPENTHREAD_FLAGS || die
    arm-none-eabi-size  output/nrf52840/bin/ot-cli-ftd || die
    arm-none-eabi-size  output/nrf52840/bin/ot-cli-mtd || die
    arm-none-eabi-size  output/nrf52840/bin/ot-ncp-ftd || die
    arm-none-eabi-size  output/nrf52840/bin/ot-ncp-mtd || die
    arm-none-eabi-size  output/nrf52840/bin/ot-rcp || die

    # USB transport with bootloader e.g. to support PCA10059 dongle
    git checkout -- . || die
    git clean -xfd || die
    ./bootstrap || die
    USB=1 BOOTLOADER=1 make -f examples/Makefile-nrf52840 $OPENTHREAD_FLAGS || die
    arm-none-eabi-size  output/nrf52840/bin/ot-cli-ftd || die
    arm-none-eabi-size  output/nrf52840/bin/ot-cli-mtd || die
    arm-none-eabi-size  output/nrf52840/bin/ot-ncp-ftd || die
    arm-none-eabi-size  output/nrf52840/bin/ot-ncp-mtd || die
    arm-none-eabi-size  output/nrf52840/bin/ot-rcp || die

    # SPI transport for NCP
    git checkout -- . || die
    git clean -xfd || die
    ./bootstrap || die
    NCP_SPI=1 make -f examples/Makefile-nrf52840 $OPENTHREAD_FLAGS || die
    arm-none-eabi-size  output/nrf52840/bin/ot-ncp-ftd || die
    arm-none-eabi-size  output/nrf52840/bin/ot-ncp-mtd || die
    arm-none-eabi-size  output/nrf52840/bin/ot-rcp || die

    # Build without transport (no CLI or NCP applications)
    git checkout -- . || die
    git clean -xfd || die
    ./bootstrap || die
    DISABLE_TRANSPORTS=1 make -f examples/Makefile-nrf52840 $OPENTHREAD_FLAGS || die

    # Software cryptography
    git checkout -- . || die
    git clean -xfd || die
    ./bootstrap || die
    DISABLE_BUILTIN_MBEDTLS=0 make -f examples/Makefile-nrf52840 $OPENTHREAD_FLAGS || die
    arm-none-eabi-size  output/nrf52840/bin/ot-cli-ftd || die
    arm-none-eabi-size  output/nrf52840/bin/ot-cli-mtd || die
    arm-none-eabi-size  output/nrf52840/bin/ot-ncp-ftd || die
    arm-none-eabi-size  output/nrf52840/bin/ot-ncp-mtd || die
    arm-none-eabi-size  output/nrf52840/bin/ot-rcp || die

    # Software cryptography with threading support
    git checkout -- . || die
    git clean -xfd || die
    ./bootstrap || die
    DISABLE_BUILTIN_MBEDTLS=0 MBEDTLS_THREADING=1 make -f examples/Makefile-nrf52840 $OPENTHREAD_FLAGS || die
    arm-none-eabi-size  output/nrf52840/bin/ot-cli-ftd || die
    arm-none-eabi-size  output/nrf52840/bin/ot-cli-mtd || die
    arm-none-eabi-size  output/nrf52840/bin/ot-ncp-ftd || die
    arm-none-eabi-size  output/nrf52840/bin/ot-ncp-mtd || die
    arm-none-eabi-size  output/nrf52840/bin/ot-rcp || die
}

build_qpg6095() {
    git checkout -- . || die
    git clean -xfd || die
    ./bootstrap || die
    COMMISSIONER=1 JOINER=1 SLAAC=1 DHCP6_CLIENT=1 DHCP6_SERVER=1 DNS_CLIENT=1 make -f examples/Makefile-qpg6095 || die
    arm-none-eabi-size  output/qpg6095/bin/ot-cli-ftd || die
    arm-none-eabi-size  output/qpg6095/bin/ot-cli-mtd || die
    arm-none-eabi-size  output/qpg6095/bin/ot-ncp-ftd || die
    arm-none-eabi-size  output/qpg6095/bin/ot-ncp-mtd || die
}

build_samr21() {
    git checkout -- . || die
    git clean -xfd || die
    wget http://ww1.microchip.com/downloads/en/DeviceDoc/asf-standalone-archive-3.45.0.85.zip || die
    unzip -qq asf-standalone-archive-3.45.0.85.zip || die
    mv xdk-asf-3.45.0 third_party/microchip/asf || die
    ./bootstrap || die
    COMMISSIONER=1 JOINER=1 SLAAC=1 DHCP6_CLIENT=1 DHCP6_SERVER=1 DNS_CLIENT=1 make -f examples/Makefile-samr21 || die
    arm-none-eabi-size  output/samr21/bin/ot-cli-ftd || die
    arm-none-eabi-size  output/samr21/bin/ot-cli-mtd || die
    arm-none-eabi-size  output/samr21/bin/ot-ncp-ftd || die
    arm-none-eabi-size  output/samr21/bin/ot-ncp-mtd || die
}

[ $BUILD_TARGET != arm-gcc-4 ] || {
    export PATH=/tmp/gcc-arm-none-eabi-4_9-2015q3/bin:$PATH || die

    build_cc1352
    build_cc2538
    build_cc2650
    build_cc2652
    build_kw41z
    build_nrf52811
    build_nrf52840
    build_qpg6095
    build_samr21
}

[ $BUILD_TARGET != arm-gcc-5 ] || {
    export PATH=/tmp/gcc-arm-none-eabi-5_4-2016q3/bin:$PATH || die

    build_cc1352
    build_cc2538
    build_cc2650
    build_cc2652
    build_kw41z
    build_nrf52811
    build_nrf52840
    build_qpg6095
    build_samr21
}

[ $BUILD_TARGET != arm-gcc-6 ] || {
    export PATH=/tmp/gcc-arm-none-eabi-6-2017-q2-update/bin:$PATH || die

    build_cc1352
    build_cc2538
    build_cc2650
    build_cc2652
    build_kw41z
    build_nrf52811
    build_nrf52840
    build_qpg6095
    build_samr21
}

[ $BUILD_TARGET != arm-gcc-7 ] || {
    export PATH=/tmp/gcc-arm-none-eabi-7-2018-q2-update/bin:$PATH || die

    build_cc1352
    build_cc2538
    build_cc2650
    build_cc2652
    build_kw41z
    build_nrf52811
    build_nrf52840
    build_qpg6095
    build_samr21
}

[ $BUILD_TARGET != arm-gcc-8 ] || {
    export PATH=/tmp/gcc-arm-none-eabi-8-2018-q4-major/bin:$PATH || die

    build_cc1352
    build_cc2538
    build_cc2650
    build_cc2652
    build_kw41z
    build_nrf52811
    build_nrf52840
    build_qpg6095
    build_samr21
}

[ $BUILD_TARGET != posix ] || {
    git checkout -- . || die
    git clean -xfd || die
    ./bootstrap || die
    CPPFLAGS=-DOPENTHREAD_CONFIG_LOG_LEVEL=OT_LOG_LEVEL_NONE make -f examples/Makefile-posix || die

    git checkout -- . || die
    git clean -xfd || die
    ./bootstrap || die
    CPPFLAGS=-DOPENTHREAD_CONFIG_LOG_LEVEL=OT_LOG_LEVEL_DEBG make -f examples/Makefile-posix || die

    export CPPFLAGS="                                    \
        -DOPENTHREAD_CONFIG_BORDER_ROUTER_ENABLE=1       \
        -DOPENTHREAD_CONFIG_CHANNEL_MANAGER_ENABLE=1     \
        -DOPENTHREAD_CONFIG_CHANNEL_MONITOR_ENABLE=1     \
        -DOPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE=1   \
        -DOPENTHREAD_CONFIG_DIAG_ENABLE=1                \
        -DOPENTHREAD_CONFIG_JAM_DETECTION_ENABLE=1       \
        -DOPENTHREAD_CONFIG_LEGACY_ENABLE=1              \
        -DOPENTHREAD_CONFIG_MAC_FILTER_ENABLE=1          \
        -DOPENTHREAD_CONFIG_NCP_SPI_ENABLE=1             \
        -DOPENTHREAD_CONFIG_TMF_NETDATA_SERVICE_ENABLE=1"

    git checkout -- . || die
    git clean -xfd || die
    ./bootstrap || die
    CPPFLAGS=-DOPENTHREAD_CONFIG_HEAP_EXTERNAL_ENABLE=1 make -f examples/Makefile-posix || die

    git checkout -- . || die
    git clean -xfd || die
    ./bootstrap || die
    ./configure                             \
        --enable-ncp                        \
        --enable-ftd                        \
        --enable-mtd                        \
        --with-examples=posix               \
        --disable-docs                      \
        --disable-tests                     \
        --with-vendor-extension=./src/core/common/extension_example.cpp || die
    make -j 8 || die

    git checkout -- . || die
    git clean -xfd || die
    ./bootstrap || die
    ./configure                             \
        --enable-cli                        \
        --enable-mtd                        \
        --with-examples=posix               \
        --disable-docs                      \
        --disable-tests || die
    make -j 8 || die

    export CPPFLAGS="                               \
        -DOPENTHREAD_CONFIG_ANOUNCE_SENDER_ENABLE=1 \
        -DOPENTHREAD_CONFIG_TIME_SYNC_ENABLE=1      \
        -DOPENTHREAD_CONFIG_NCP_UART_ENABLE=1"

    git checkout -- . || die
    git clean -xfd || die
    ./bootstrap || die
    ./configure                             \
        --enable-cli                        \
        --enable-ncp                        \
        --enable-ftd                        \
        --enable-mtd                        \
        --enable-radio-only                 \
        --with-examples=posix || die
    make -j 8 || die
}

[ $BUILD_TARGET != posix-distcheck ] || {
    export ASAN_SYMBOLIZER_PATH=`which llvm-symbolizer` || die
    export ASAN_OPTIONS=symbolize=1 || die
    export DISTCHECK_CONFIGURE_FLAGS= CPPFLAGS=-DOPENTHREAD_POSIX_VIRTUAL_TIME=1 || die
    ./bootstrap || die
    REFERENCE_DEVICE=1 make -f examples/Makefile-posix distcheck || die
}

[ $BUILD_TARGET != posix-32-bit ] || {
    ./bootstrap || die
    REFERENCE_DEVICE=1 COVERAGE=1 CFLAGS=-m32 CXXFLAGS=-m32 LDFLAGS=-m32 make -f examples/Makefile-posix check || die
}

[ $BUILD_TARGET != posix-app-cli ] || {
    ./bootstrap || die
    # enable code coverage for OpenThread transceiver only
    COVERAGE=1 VIRTUAL_TIME_UART=1 make -f examples/Makefile-posix || die
    # readline supports pipe, editline does not
    REFERENCE_DEVICE=1 COVERAGE=1 READLINE=readline make -f src/posix/Makefile-posix || die
    REFERENCE_DEVICE=1 COVERAGE=1 PYTHONUNBUFFERED=1 OT_CLI_PATH="$(pwd)/$(ls output/posix/*/bin/ot-cli) -v" RADIO_DEVICE="$(pwd)/$(ls output/*/bin/ot-rcp)" make -f src/posix/Makefile-posix check || die
}

[ $BUILD_TARGET != posix-app-pty ] || {
    ./bootstrap
    .travis/check-posix-app-pty || die
}

[ $BUILD_TARGET != posix-mtd ] || {
    ./bootstrap || die
    REFERENCE_DEVICE=1 COVERAGE=1 CFLAGS=-m32 CXXFLAGS=-m32 LDFLAGS=-m32 USE_MTD=1 make -f examples/Makefile-posix check || die
}

[ $BUILD_TARGET != posix-ncp-spi ] || {
    CPPFLAGS="-DOPENTHREAD_CONFIG_NCP_SPI_ENABLE=1"

    ./bootstrap || die
    make -f examples/Makefile-posix check configure_OPTIONS="--enable-ncp --enable-ftd --with-examples=posix" || die
}

[ $BUILD_TARGET != posix-app-ncp ] || {
    ./bootstrap || die
    REFERENCE_DEVICE=1 COVERAGE=1 VIRTUAL_TIME_UART=1 make -f examples/Makefile-posix || die
    # enable code coverage for OpenThread posix radio
    REFERENCE_DEVICE=1 COVERAGE=1 READLINE=readline make -f src/posix/Makefile-posix || die
    REFERENCE_DEVICE=1 COVERAGE=1 PYTHONUNBUFFERED=1 OT_NCP_PATH="$(pwd)/$(ls output/posix/*/bin/ot-ncp)" RADIO_DEVICE="$(pwd)/$(ls output/*/bin/ot-rcp)" NODE_TYPE=ncp-sim make -f src/posix/Makefile-posix check || die
}

[ $BUILD_TARGET != posix-ncp ] || {
    ./bootstrap || die
    REFERENCE_DEVICE=1 COVERAGE=1 PYTHONUNBUFFERED=1 NODE_TYPE=ncp-sim make -f examples/Makefile-posix check || die
}

[ $BUILD_TARGET != toranj-test-framework ] || {
    ./tests/toranj/start.sh || die
}

[ $BUILD_TARGET != osx ] || {
    git checkout -- . || die
    git clean -xfd || die
    ./bootstrap || die
    make -f examples/Makefile-posix || die

    git checkout -- . || die
    git clean -xfd || die
    ./bootstrap || die
    make -f src/posix/Makefile-posix || die
}
