#!/bin/bash # # Copyright (c) 2018, 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. # display_usage() { echo "" echo "Toranj Build script " echo "" echo "Usage: $(basename "$0") [options] " echo " can be:" echo " ncp : Build OpenThread NCP FTD mode with simulation platform" echo " ncp-15.4 : Build OpenThread NCP FTD mode with simulation platform - 15.4 radio" echo " ncp-trel : Build OpenThread NCP FTD mode with simulation platform - TREL radio " echo " ncp-15.4+trel : Build OpenThread NCP FTD mode with simulation platform - multi radio (15.4+TREL)" echo " cli : Build OpenThread CLI FTD mode with simulation platform" echo " cli-15.4 : Build OpenThread CLI FTD mode with simulation platform - 15.4 radio" echo " cli-trel : Build OpenThread CLI FTD mode with simulation platform - TREL radio " echo " cli-15.4+trel : Build OpenThread CLI FTD mode with simulation platform - multi radio (15.4+TREL)" echo " rcp : Build OpenThread RCP (NCP in radio mode) with simulation platform" echo " posix : Build OpenThread POSIX NCP" echo " posix-15.4 : Build OpenThread POSIX NCP - 15.4 radio" echo " posix-trel : Build OpenThread POSIX NCP - TREL radio " echo " posix-15.4+trel : Build OpenThread POSIX NCP - multi radio (15.4+TREL)" echo " cmake : Configure and build OpenThread using cmake/ninja (RCP and NCP) only" echo " cmake-posix: : Configure and build OpenThread POSIX using cmake/ninja" echo "" echo "Options:" echo " -c/--enable-coverage Enable code coverage" echo " -t/--enable-tests Enable tests" echo "" } die() { echo " *** ERROR: " "$*" exit 1 } cd "$(dirname "$0")" || die "cd failed" cd ../.. || die "cd failed" coverage=no tests=no while [ $# -ge 2 ]; do case $1 in -c | --enable-coverage) coverage=yes shift ;; -t | --enable-tests) tests=yes shift ;; "") shift ;; *) echo "Error: Unknown option \"$1\"" display_usage exit 1 ;; esac done if [ "$#" -ne 1 ]; then display_usage exit 1 fi build_config=$1 ncp_configure_options=( "--disable-docs" "--enable-tests=$tests" "--enable-coverage=$coverage" "--enable-ftd" "--enable-ncp" ) cli_configure_options=( "--disable-docs" "--enable-tests=$tests" "--enable-coverage=$coverage" "--enable-ftd" "--enable-cli" ) posix_configure_options=( "--disable-docs" "--enable-tests=$tests" "--enable-coverage=$coverage" "--enable-ftd" "--enable-cli" ) if [ -n "${top_builddir}" ]; then top_srcdir=$(pwd) mkdir -p "${top_builddir}" else top_srcdir=. top_builddir=. fi case ${build_config} in ncp | ncp-) echo "===================================================================================================" echo "Building OpenThread NCP FTD mode with simulation platform (radios determined by config)" echo "===================================================================================================" ./bootstrap || die "bootstrap failed" cd "${top_builddir}" || die "cd failed" cppflags_config='-DOPENTHREAD_PROJECT_CORE_CONFIG_FILE=\"../tests/toranj/openthread-core-toranj-config-simulation.h\"' ${top_srcdir}/configure \ CPPFLAGS="$cppflags_config" \ --with-examples=simulation \ "${ncp_configure_options[@]}" || die make -j 8 || die ;; ncp-15.4) echo "===================================================================================================" echo "Building OpenThread NCP FTD mode with simulation platform - 15.4 radio" echo "===================================================================================================" cppflags_config='-DOPENTHREAD_PROJECT_CORE_CONFIG_FILE=\"../tests/toranj/openthread-core-toranj-config-simulation.h\"' cppflags_config="${cppflags_config} -DOPENTHREAD_CONFIG_RADIO_LINK_IEEE_802_15_4_ENABLE=1" cppflags_config="${cppflags_config} -DOPENTHREAD_CONFIG_RADIO_LINK_TREL_ENABLE=0" ./bootstrap || die "bootstrap failed" cd "${top_builddir}" || die "cd failed" ${top_srcdir}/configure \ CPPFLAGS="$cppflags_config" \ --with-examples=simulation \ "${ncp_configure_options[@]}" || die make -j 8 || die cp -p ${top_builddir}/examples/apps/ncp/ot-ncp-ftd ${top_builddir}/examples/apps/ncp/ot-ncp-ftd-15.4 ;; ncp-trel) echo "===================================================================================================" echo "Building OpenThread NCP FTD mode with simulation platform - TREL radio" echo "===================================================================================================" cppflags_config='-DOPENTHREAD_PROJECT_CORE_CONFIG_FILE=\"../tests/toranj/openthread-core-toranj-config-simulation.h\"' cppflags_config="${cppflags_config} -DOPENTHREAD_CONFIG_RADIO_LINK_IEEE_802_15_4_ENABLE=0" cppflags_config="${cppflags_config} -DOPENTHREAD_CONFIG_RADIO_LINK_TREL_ENABLE=1" ./bootstrap || die "bootstrap failed" cd "${top_builddir}" || die "cd failed" ${top_srcdir}/configure \ CPPFLAGS="$cppflags_config" \ --with-examples=simulation \ "${ncp_configure_options[@]}" || die make -j 8 || die cp -p ${top_builddir}/examples/apps/ncp/ot-ncp-ftd ${top_builddir}/examples/apps/ncp/ot-ncp-ftd-trel ;; ncp-15.4+trel | ncp-trel+15.4) echo "===================================================================================================" echo "Building OpenThread NCP FTD mode with simulation platform - multi radio (15.4 + TREL)" echo "===================================================================================================" cppflags_config='-DOPENTHREAD_PROJECT_CORE_CONFIG_FILE=\"../tests/toranj/openthread-core-toranj-config-simulation.h\"' cppflags_config="${cppflags_config} -DOPENTHREAD_CONFIG_RADIO_LINK_IEEE_802_15_4_ENABLE=1" cppflags_config="${cppflags_config} -DOPENTHREAD_CONFIG_RADIO_LINK_TREL_ENABLE=1" ./bootstrap || die "bootstrap failed" cd "${top_builddir}" || die "cd failed" ${top_srcdir}/configure \ CPPFLAGS="$cppflags_config" \ --with-examples=simulation \ "${ncp_configure_options[@]}" || die make -j 8 || die cp -p ${top_builddir}/examples/apps/ncp/ot-ncp-ftd ${top_builddir}/examples/apps/ncp/ot-ncp-ftd-15.4-trel ;; cli | cli-) echo "===================================================================================================" echo "Building OpenThread CLI FTD mode with simulation platform (radios determined by config)" echo "===================================================================================================" ./bootstrap || die "bootstrap failed" cd "${top_builddir}" || die "cd failed" cppflags_config='-DOPENTHREAD_PROJECT_CORE_CONFIG_FILE=\"../tests/toranj/openthread-core-toranj-config-simulation.h\"' ${top_srcdir}/configure \ CPPFLAGS="$cppflags_config" \ --with-examples=simulation \ "${cli_configure_options[@]}" || die make -j 8 || die ;; cli-15.4) echo "===================================================================================================" echo "Building OpenThread CLI FTD mode with simulation platform - 15.4 radio" echo "===================================================================================================" cppflags_config='-DOPENTHREAD_PROJECT_CORE_CONFIG_FILE=\"../tests/toranj/openthread-core-toranj-config-simulation.h\"' cppflags_config="${cppflags_config} -DOPENTHREAD_CONFIG_RADIO_LINK_IEEE_802_15_4_ENABLE=1" cppflags_config="${cppflags_config} -DOPENTHREAD_CONFIG_RADIO_LINK_TREL_ENABLE=0" ./bootstrap || die "bootstrap failed" cd "${top_builddir}" || die "cd failed" ${top_srcdir}/configure \ CPPFLAGS="$cppflags_config" \ --with-examples=simulation \ "${cli_configure_options[@]}" || die make -j 8 || die cp -p ${top_builddir}/examples/apps/cli/ot-cli-ftd ${top_builddir}/examples/apps/cli/ot-cli-ftd-15.4 ;; cli-trel) echo "===================================================================================================" echo "Building OpenThread CLI FTD mode with simulation platform - TREL radio" echo "===================================================================================================" cppflags_config='-DOPENTHREAD_PROJECT_CORE_CONFIG_FILE=\"../tests/toranj/openthread-core-toranj-config-simulation.h\"' cppflags_config="${cppflags_config} -DOPENTHREAD_CONFIG_RADIO_LINK_IEEE_802_15_4_ENABLE=0" cppflags_config="${cppflags_config} -DOPENTHREAD_CONFIG_RADIO_LINK_TREL_ENABLE=1" ./bootstrap || die "bootstrap failed" cd "${top_builddir}" || die "cd failed" ${top_srcdir}/configure \ CPPFLAGS="$cppflags_config" \ --with-examples=simulation \ "${cli_configure_options[@]}" || die make -j 8 || die cp -p ${top_builddir}/examples/apps/cli/ot-cli-ftd ${top_builddir}/examples/apps/cli/ot-cli-ftd-trel ;; cli-15.4+trel | cli-trel+15.4) echo "===================================================================================================" echo "Building OpenThread NCP FTD mode with simulation platform - multi radio (15.4 + TREL)" echo "===================================================================================================" cppflags_config='-DOPENTHREAD_PROJECT_CORE_CONFIG_FILE=\"../tests/toranj/openthread-core-toranj-config-simulation.h\"' cppflags_config="${cppflags_config} -DOPENTHREAD_CONFIG_RADIO_LINK_IEEE_802_15_4_ENABLE=1" cppflags_config="${cppflags_config} -DOPENTHREAD_CONFIG_RADIO_LINK_TREL_ENABLE=1" ./bootstrap || die "bootstrap failed" cd "${top_builddir}" || die "cd failed" ${top_srcdir}/configure \ CPPFLAGS="$cppflags_config" \ --with-examples=simulation \ "${cli_configure_options[@]}" || die make -j 8 || die cp -p ${top_builddir}/examples/apps/cli/ot-cli-ftd ${top_builddir}/examples/apps/cli/ot-cli-ftd-15.4-trel ;; rcp) echo "====================================================================================================" echo "Building OpenThread RCP (NCP in radio mode) with simulation platform" echo "====================================================================================================" ./bootstrap || die "bootstrap failed" cd "${top_builddir}" || die "cd failed" cppflags_config='-DOPENTHREAD_PROJECT_CORE_CONFIG_FILE=\"../tests/toranj/openthread-core-toranj-config-simulation.h\"' ${top_srcdir}/configure \ CPPFLAGS="$cppflags_config " \ --enable-coverage=${coverage} \ --enable-ncp \ --enable-radio-only \ --with-examples=simulation \ --disable-docs \ --enable-tests=$tests || die make -j 8 || die ;; posix | posix-) echo "====================================================================================================" echo "Building OpenThread POSIX (radios determined by config)" echo "====================================================================================================" cppflags_config='-DOPENTHREAD_PROJECT_CORE_CONFIG_FILE=\"../tests/toranj/openthread-core-toranj-config-posix.h\"' ./bootstrap || die "bootstrap failed" cd "${top_builddir}" || die "cd failed" ${top_srcdir}/configure \ CPPFLAGS="$cppflags_config" \ --with-platform=posix \ "${posix_configure_options[@]}" || die make -j 8 || die ;; posix-15.4) echo "====================================================================================================" echo "Building OpenThread POSIX - 15.4 radio" echo "====================================================================================================" cppflags_config='-DOPENTHREAD_PROJECT_CORE_CONFIG_FILE=\"../tests/toranj/openthread-core-toranj-config-posix.h\"' cppflags_config="${cppflags_config} -DOPENTHREAD_CONFIG_RADIO_LINK_IEEE_802_15_4_ENABLE=1" cppflags_config="${cppflags_config} -DOPENTHREAD_CONFIG_RADIO_LINK_TREL_ENABLE=0" ./bootstrap || die "bootstrap failed" cd "${top_builddir}" || die "cd failed" ${top_srcdir}/configure \ CPPFLAGS="$cppflags_config" \ --with-platform=posix \ "${posix_configure_options[@]}" || die make -j 8 || die ;; posix-trel) echo "====================================================================================================" echo "Building OpenThread POSIX - TREL radio" echo "====================================================================================================" cppflags_config='-DOPENTHREAD_PROJECT_CORE_CONFIG_FILE=\"../tests/toranj/openthread-core-toranj-config-posix.h\"' cppflags_config="${cppflags_config} -DOPENTHREAD_CONFIG_RADIO_LINK_IEEE_802_15_4_ENABLE=0" cppflags_config="${cppflags_config} -DOPENTHREAD_CONFIG_RADIO_LINK_TREL_ENABLE=1" ./bootstrap || die "bootstrap failed" cd "${top_builddir}" || die "cd failed" ${top_srcdir}/configure \ CPPFLAGS="$cppflags_config" \ --with-platform=posix \ "${posix_configure_options[@]}" || die make -j 8 || die ;; posix-trel+15.4 | posix-15.4+trel) echo "====================================================================================================" echo "Building OpenThread POSIX - multi radio link (15.4 + TREL)" echo "====================================================================================================" cppflags_config='-DOPENTHREAD_PROJECT_CORE_CONFIG_FILE=\"../tests/toranj/openthread-core-toranj-config-posix.h\"' cppflags_config="${cppflags_config} -DOPENTHREAD_CONFIG_RADIO_LINK_IEEE_802_15_4_ENABLE=1" cppflags_config="${cppflags_config} -DOPENTHREAD_CONFIG_RADIO_LINK_TREL_ENABLE=1" ./bootstrap || die "bootstrap failed" cd "${top_builddir}" || die "cd failed" ${top_srcdir}/configure \ CPPFLAGS="$cppflags_config" \ --with-platform=posix \ "${posix_configure_options[@]}" || die make -j 8 || die ;; cmake) echo "====================================================================================================" echo "Building OpenThread (NCP/CLI for FTD/MTD/RCP mode) with simulation platform using cmake" echo "====================================================================================================" cd "${top_builddir}" || die "cd failed" cmake -GNinja -DOT_PLATFORM=simulation -DOT_COMPILE_WARNING_AS_ERROR=on -DOT_APP_CLI=on \ -DOT_CONFIG=../tests/toranj/openthread-core-toranj-config-simulation.h \ "${top_srcdir}" || die ninja || die ;; cmake-posix-host | cmake-posix | cmake-p) echo "====================================================================================================" echo "Building OpenThread POSIX using cmake" echo "====================================================================================================" cd "${top_builddir}" || die "cd failed" cmake -GNinja -DOT_PLATFORM=posix -DOT_COMPILE_WARNING_AS_ERROR=on -DOT_APP_CLI=off \ -DOT_CONFIG=../tests/toranj/openthread-core-toranj-config-posix.h \ "${top_srcdir}" || die ninja || die ;; *) echo "Error: Unknown configuration \"$1\"" display_usage exit 1 ;; esac exit 0