# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. # # 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. # # # Declare autoconf version requirements # AC_PREREQ([2.68]) # # Initialize autoconf for the package # AC_INIT([OPENTHREAD], m4_esyscmd([third_party/nlbuild-autotools/repo/scripts/mkversion -b `cat .default-version` .]), [openthread-devel@googlegroups.com], [openthread], [http://github.com/openthread/openthread]) # Tell the rest of the build system the absolute path where the # nlbuild-autotools repository is rooted at. AC_SUBST(nlbuild_autotools_stem,[third_party/nlbuild-autotools/repo]) AC_SUBST(abs_top_nlbuild_autotools_dir,[\${abs_top_srcdir}/\${nlbuild_autotools_stem}]) # # OPENTHREAD interface current, revision, and age versions. # # Maintainters: Please manage these fields as follows: # # Interfaces removed: CURRENT++, AGE = 0, REVISION = 0 # Interfaces added: CURRENT++, AGE++, REVISION = 0 # No interfaces changed: REVISION++ # # AC_SUBST(LIBOPENTHREAD_VERSION_CURRENT, [0]) AC_SUBST(LIBOPENTHREAD_VERSION_AGE, [5]) AC_SUBST(LIBOPENTHREAD_VERSION_REVISION, [0]) AC_SUBST(LIBOPENTHREAD_VERSION_INFO, [${LIBOPENTHREAD_VERSION_CURRENT}:${LIBOPENTHREAD_VERSION_REVISION}:${LIBOPENTHREAD_VERSION_AGE}]) # # Check the sanity of the source directory by checking for the # presence of a key watch file # AC_CONFIG_SRCDIR([include/openthread/openthread.h]) # # Tell autoconf where to find auxilliary build tools (e.g. config.guess, # install-sh, missing, etc.) # AC_CONFIG_AUX_DIR([third_party/nlbuild-autotools/repo/third_party/autoconf]) # # Tell autoconf where to find auxilliary M4 macros # AC_CONFIG_MACRO_DIRS([third_party/nlbuild-autotools/repo/third_party/autoconf/m4 third_party/nlbuild-autotools/repo/autoconf/m4]) # # Tell autoconf what file the package is using to aggregate C preprocessor # defines. # AC_CONFIG_HEADERS([include/openthread-config-generic.h]) # # Figure out what the canonical build and host tuples are. # AC_CANONICAL_BUILD AC_CANONICAL_HOST # # Mac OS X / Darwin ends up putting some versioning cruft on the end of its # tuple that we don't care about in this script. Create "clean" variables # devoid of it. # NL_FILTERED_CANONICAL_BUILD NL_FILTERED_CANONICAL_HOST # # Configure automake with the desired options, indicating that this is not # a native GNU package, that we want "silent" build rules, and that we want # objects built in the same subdirectory as their source rather than collapsed # together at the top-level directory. # # Disable silent build rules by either passing --disable-silent-rules to # configure or passing V=1 to make # AM_INIT_AUTOMAKE([1.14 foreign silent-rules subdir-objects tar-pax]) # # Silent build rules requires at least automake-1.11. Employ # techniques for not breaking earlier versions of automake. # m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) AM_SILENT_RULES([yes]) # # Enable maintainer mode to prevent the package from constantly trying # to rebuild configure, Makefile.in, etc. Rebuilding such files rarely, # if ever, needs to be done "in the field". # # Use the included 'bootstrap' script instead when necessary. # AM_MAINTAINER_MODE # # Host-os-specific checks # case ${host_os} in *darwin*) OPENTHREAD_TARGET=darwin OPENTHREAD_TARGET_DEFINES="-DOPENTHREAD_TARGET_DARWIN" ;; *linux*) OPENTHREAD_TARGET=linux OPENTHREAD_TARGET_DEFINES="-DOPENTHREAD_TARGET_LINUX" ;; esac AC_SUBST(OPENTHREAD_TARGET_DARWIN) AM_CONDITIONAL([OPENTHREAD_TARGET_DARWIN], [test "${OPENTHREAD_TARGET}" = "darwin"]) AC_SUBST(OPENTHREAD_TARGET_LINUX) AM_CONDITIONAL([OPENTHREAD_TARGET_LINUX], [test "${OPENTHREAD_TARGET}" = "linux"]) AC_SUBST(OPENTHREAD_TARGET_DEFINES) # # Checks for build host programs # # This is a hack to restore some old broken behavior that was # removed in pull request #1527. It's use is highly discouraged, # you should try to fix your build environment instead. AC_ARG_ENABLE(no-executables-hack, [AS_HELP_STRING([--enable-no-executables-hack], [Enable hack that prevents link checks at configure time. Highly discouraged.])]) AC_MSG_CHECKING([whether to disable executable checking]) if test "${enable_no_executables_hack}" = "yes" then AC_MSG_RESULT([yes]) AC_NO_EXECUTABLES # Here we guess conservative values for tests that require link checks # to test for these features. This will prevent these checks from # being performed later in the configuration process. ac_cv_func_strlcat=${ac_cv_func_strlcat-no} ac_cv_func_strlcpy=${ac_cv_func_strlcpy-no} ac_cv_func_strnlen=${ac_cv_func_strnlen-no} else AC_MSG_RESULT([no]) fi # Passing -Werror to GCC-based or -compatible compilers breaks some # autoconf tests (see # http://lists.gnu.org/archive/html/autoconf-patches/2008-09/msg00014.html). # # If -Werror has been passed transform it into -Wno-error. We'll # transform it back later with NL_RESTORE_WERROR. NL_SAVE_WERROR # Check for compilers. # # These should be checked BEFORE we check for and, implicitly, # initialize libtool such that libtool knows what languages it has to # work with. AC_PROG_CPP AC_PROG_CPP_WERROR AC_PROG_CC AC_PROG_CC_C_O AC_PROG_CXXCPP AC_PROG_CXX AC_PROG_CXX_C_O AM_PROG_AS # Check for other compiler toolchain tools. AC_CHECK_TOOL(AR, ar) AC_CHECK_TOOL(RANLIB, ranlib) AC_CHECK_TOOL(OBJCOPY, objcopy) AC_CHECK_TOOL(STRIP, strip) # Check for other host tools. AC_PROG_INSTALL AC_PROG_LN_S AC_PATH_PROG(CMP, cmp) # # Checks for specific compiler characteristics # # # Common compiler flags we would like to have. # # -Wall CC, CXX # PROSPECTIVE_CFLAGS="-Wall -Wextra -Wshadow -Werror -std=c99 -pedantic-errors" PROSPECTIVE_CXXFLAGS="-Wall -Wextra -Wshadow -Werror -std=gnu++98 -Wno-c++14-compat" AC_CACHE_CHECK([whether $CC is Clang], [nl_cv_clang], [nl_cv_clang=no if test "x${GCC}" = "xyes"; then AC_EGREP_CPP([NL_CC_IS_CLANG], [/* Note: Clang 2.7 lacks __clang_[a-z]+__ */ # if defined(__clang__) && defined(__llvm__) NL_CC_IS_CLANG # endif ], [nl_cv_clang=yes]) fi ]) if test "${nl_cv_clang}" = "yes"; then PROSPECTIVE_CFLAGS="${PROSPECTIVE_CFLAGS} -Wconversion" PROSPECTIVE_CXXFLAGS="${PROSPECTIVE_CXXFLAGS} -Wconversion" fi AX_CHECK_COMPILER_OPTIONS([C], ${PROSPECTIVE_CFLAGS}) AX_CHECK_COMPILER_OPTIONS([C++], ${PROSPECTIVE_CXXFLAGS}) # Check for and initialize libtool LT_INIT AC_PROG_LIBTOOL # Disable building shared libraries by default (can be enabled with --enable-shared) AC_DISABLE_SHARED # # Debug instances # AC_MSG_NOTICE([checking whether to build debug instances]) # Debug NL_ENABLE_DEBUG([no]) AM_CONDITIONAL([OPENTHREAD_BUILD_DEBUG], [test "${nl_cv_build_debug}" = "yes"]) # # Code coverage and compiler optimization # # Coverage NL_ENABLE_COVERAGE([no]) AM_CONDITIONAL([OPENTHREAD_BUILD_COVERAGE], [test "${nl_cv_build_coverage}" = "yes"]) NL_ENABLE_COVERAGE_REPORTS([auto]) AM_CONDITIONAL([OPENTHREAD_BUILD_COVERAGE_REPORTS], [test "${nl_cv_build_coverage_reports}" = "yes"]) # Optimization NL_ENABLE_OPTIMIZATION([yes]) AM_CONDITIONAL([OPENTHREAD_BUILD_OPTIMIZED], [test "${nl_cv_build_optimized}" = "yes"]) # Fuzz Targets AC_MSG_CHECKING([whether to build fuzz targets]) AC_ARG_ENABLE(fuzz-targets, [AS_HELP_STRING([--enable-fuzz-targets],[Enable building of fuzz targets @<:@default=no@:>@.])], [ case "${enableval}" in no|yes) enable_fuzz_targets=${enableval} ;; *) AC_MSG_ERROR([Invalid value ${enableval} for --enable-fuzz-targets]) ;; esac ], [enable_fuzz_targets=no]) AC_MSG_RESULT(${enable_fuzz_targets}) AM_CONDITIONAL([OPENTHREAD_ENABLE_FUZZ_TARGETS], [test "${enable_fuzz_targets}" = "yes"]) # Address Sanitizer AC_MSG_CHECKING([whether to build with Address Sanitizer support]) AC_ARG_ENABLE(address-sanitizer, [AS_HELP_STRING([--enable-address-sanitizer],[Enable Address Sanitizer support @<:@default=no@:>@.])], [ case "${enableval}" in no|yes) enable_address_sanitizer=${enableval} ;; *) AC_MSG_ERROR([Invalid value ${enableval} for --enable-address-sanitizer]) ;; esac ], [enable_address_sanitizer=no]) AC_MSG_RESULT(${enable_address_sanitizer}) AM_CONDITIONAL([OPENTHREAD_WITH_ADDRESS_SANITIZER], [test "${enable_address_sanitizer}" = "yes"]) if test "${enable_address_sanitizer}" = "yes" ; then PROSPECTIVE_CFLAGS="-fsanitize=address" # Check if the compilers support address sanitizer AX_CHECK_COMPILER_OPTIONS([C], ${PROSPECTIVE_CFLAGS}) AX_CHECK_COMPILER_OPTIONS([C++], ${PROSPECTIVE_CFLAGS}) fi # # Code style # AC_SUBST(PRETTY, ["\${abs_top_srcdir}/script/clang-format.sh"]) AC_SUBST(PRETTY_ARGS, ["-style=file -i"]) AC_SUBST(PRETTY_CHECK, ["\${abs_top_srcdir}/script/clang-format-check.sh"]) AC_SUBST(PRETTY_CHECK_ARGS, [""]) # # Tests # AC_MSG_NOTICE([checking whether to build tests]) # Tests NL_ENABLE_TESTS([yes]) AM_CONDITIONAL([OPENTHREAD_BUILD_TESTS], [test "${nl_cv_build_tests}" = "yes"]) # # CLI Library # AC_ARG_ENABLE(cli-app, [AS_HELP_STRING([--enable-cli-app],[Enable CLI support (no|mtd|ftd|all) @<:@default=no@:>@.])], [ case "${enableval}" in all|both) enable_cli_app=yes enable_cli_app_mtd=yes enable_cli_app_ftd=yes ;; no|yes) enable_cli_app=${enableval} enable_cli_app_mtd=${enableval} enable_cli_app_ftd=${enableval} ;; mtd) enable_cli_app=yes enable_cli_app_mtd=yes enable_cli_app_ftd=no ;; ftd) enable_cli_app=yes enable_cli_app_mtd=no enable_cli_app_ftd=yes ;; *) AC_MSG_ERROR([Invalid value ${enableval} for --enable-cli-app]) ;; esac ], [ enable_cli_app=no enable_cli_app_mtd=no enable_cli_app_ftd=no]) AC_MSG_CHECKING([cli-app modes]) AC_MSG_RESULT(${enable_cli_app}) AM_CONDITIONAL([OPENTHREAD_ENABLE_CLI], [test "${enable_cli_app}" == "yes"]) AM_CONDITIONAL([OPENTHREAD_ENABLE_CLI_MTD], [test "${enable_cli_app_mtd}" == "yes"]) AM_CONDITIONAL([OPENTHREAD_ENABLE_CLI_FTD], [test "${enable_cli_app_ftd}" == "yes"]) AC_SUBST(OPENTHREAD_ENABLE_CLI) AC_SUBST(OPENTHREAD_ENABLE_CLI_FTD) AC_SUBST(OPENTHREAD_ENABLE_CLI_MTD) # # NCP app # AC_ARG_ENABLE(ncp-app, [AS_HELP_STRING([--enable-ncp-app],[Enable NCP support (no|mtd|ftd|radio|all) @<:@default=no@:>@.])], [ # Map all & both to yes case "${enableval}" in all) enableval=yes ;; *) ;; esac case "${enableval}" in no|yes) enable_ncp_app=${enableval} enable_ncp_app_mtd=${enableval} enable_ncp_app_ftd=${enableval} enable_ncp_app_radio=${enableval} ;; mtd) enable_ncp_app=yes enable_ncp_app_mtd=yes enable_ncp_app_ftd=no enable_ncp_app_radio=no ;; ftd) enable_ncp_app=yes enable_ncp_app_mtd=no enable_ncp_app_ftd=yes enable_ncp_app_radio=no ;; radio) enable_ncp_app=yes enable_ncp_app_mtd=no enable_ncp_app_ftd=no enable_ncp_app_radio=yes ;; *) AC_MSG_ERROR([Invalid value ${enableval} for --enable-ncp-app]) ;; esac ], [ enable_ncp_app=no enable_ncp_app_ftd=no enable_ncp_app_mtd=no enable_ncp_app_radio=no ] ) AC_MSG_CHECKING([ncp-app modes]) AC_MSG_RESULT(${enable_ncp_app}) AC_MSG_CHECKING([should NCP support ftd]) AC_MSG_RESULT(${enable_ncp_app_ftd}) AC_MSG_CHECKING([should NCP support mtd]) AC_MSG_RESULT(${enable_ncp_app_mtd}) AC_MSG_CHECKING([should NCP support radio-only]) AC_MSG_RESULT(${enable_ncp_app_radio}) AC_SUBST(OPENTHREAD_ENABLE_NCP) AC_SUBST(OPENTHREAD_ENABLE_NCP_MTD) AC_SUBST(OPENTHREAD_ENABLE_NCP_FTD) AC_SUBST(OPENTHREAD_ENABLE_NCP_RADIO) AM_CONDITIONAL([OPENTHREAD_ENABLE_NCP], [test "${enable_ncp_app}" == "yes"]) AM_CONDITIONAL([OPENTHREAD_ENABLE_NCP_MTD], [test "${enable_ncp_app_mtd}" == "yes"]) AM_CONDITIONAL([OPENTHREAD_ENABLE_NCP_FTD], [test "${enable_ncp_app_ftd}" == "yes"]) AM_CONDITIONAL([OPENTHREAD_ENABLE_NCP_RADIO], [test "${enable_ncp_app_radio}" == "yes"]) # # NCP BUS - how does the NCP talk to the host? # AC_ARG_WITH( [ncp-bus], [AS_HELP_STRING([--with-ncp-bus],[Specify the NCP bus (none|spi|uart) @<:@default=none@:>@.])], [ case "${with_ncp_bus}" in "none") OPENTHREAD_ENABLE_NCP_SPI=0 OPENTHREAD_ENABLE_NCP_UART=0 ;; "spi") OPENTHREAD_ENABLE_NCP_SPI=1 OPENTHREAD_ENABLE_NCP_UART=0 ;; "uart") OPENTHREAD_ENABLE_NCP_SPI=0 OPENTHREAD_ENABLE_NCP_UART=1 ;; *) AC_MSG_ERROR([unexpected --with-ncp-bus=${with_ncp_bus}]) ;; esac ], [ OPENTHREAD_ENABLE_NCP_SPI=0 OPENTHREAD_ENABLE_NCP_UART=0 ]) AC_SUBST(OPENTHREAD_ENABLE_NCP_SPI) AM_CONDITIONAL([OPENTHREAD_ENABLE_NCP_SPI], [test "${with_ncp_bus}" = "spi"]) AC_DEFINE_UNQUOTED([OPENTHREAD_ENABLE_NCP_SPI],[${OPENTHREAD_ENABLE_NCP_SPI}],[Define to 1 to enable the NCP SPI interface.]) AC_MSG_CHECKING([should NCP support SPI]) AC_MSG_RESULT([${OPENTHREAD_ENABLE_SPI}]) AC_SUBST(OPENTHREAD_ENABLE_NCP_UART) AM_CONDITIONAL([OPENTHREAD_ENABLE_NCP_UART], [test "${with_ncp_bus}" = "uart"]) AC_DEFINE_UNQUOTED([OPENTHREAD_ENABLE_NCP_UART],[${OPENTHREAD_ENABLE_NCP_UART}],[Define to 1 to enable the NCP UART interface.]) AC_MSG_CHECKING([should NCP support UART]) AC_MSG_RESULT([${OPENTHREAD_ENABLE_UART}]) # # Multiple OpenThread Instances # AC_ARG_ENABLE(multiple-instances, [AS_HELP_STRING([--enable-multiple-instances],[Enable support for multiple OpenThread instances @<:@default=no@:>@.])], [ case "${enableval}" in no|yes) enable_multiple_instances=${enableval} ;; *) AC_MSG_ERROR([Invalid value ${enable_multiple_instances} for --enable-multiple-instances]) ;; esac ], [enable_multiple_instances=no]) if test "$enable_multiple_instances" = "yes"; then OPENTHREAD_ENABLE_MULTIPLE_INSTANCES=1 else OPENTHREAD_ENABLE_MULTIPLE_INSTANCES=0 fi AC_MSG_RESULT(${enable_multiple_instances}) AC_SUBST(OPENTHREAD_ENABLE_MULTIPLE_INSTANCES) AM_CONDITIONAL([OPENTHREAD_ENABLE_MULTIPLE_INSTANCES], [test "${enable_multiple_instances}" = "yes"]) AC_DEFINE_UNQUOTED([OPENTHREAD_ENABLE_MULTIPLE_INSTANCES],[${OPENTHREAD_ENABLE_MULTIPLE_INSTANCES}],[Define to 1 if you want to enable support for multiple OpenThread instances.]) # # Builtin mbedtls # AC_ARG_ENABLE(builtin-mbedtls, [AS_HELP_STRING([--enable-builtin-mbedtls],[Enable builtin mbedtls @<:@default=yes@:>@.])], [ case "${enableval}" in no|yes) enable_builtin_mbedtls=${enableval} ;; *) AC_MSG_ERROR([Invalid value ${enable_builtin_mbedtls} for --enable-builtin-mbedtls]) ;; esac ], [enable_builtin_mbedtls=yes]) if test "$enable_builtin_mbedtls" = "yes" -a ! "${MBEDTLS_CPPFLAGS}"; then MBEDTLS_CPPFLAGS="-I\${abs_top_srcdir}/third_party/mbedtls" MBEDTLS_CPPFLAGS="${MBEDTLS_CPPFLAGS} -I\${abs_top_srcdir}/third_party/mbedtls/repo/include" MBEDTLS_CPPFLAGS="${MBEDTLS_CPPFLAGS} -I\${abs_top_srcdir}/third_party/mbedtls/repo/include/mbedtls" MBEDTLS_CPPFLAGS="${MBEDTLS_CPPFLAGS} -DMBEDTLS_CONFIG_FILE=\\\"mbedtls-config.h\\\"" fi AC_MSG_CHECKING([whether mbed TLS should be enabled]) AC_MSG_RESULT(${enable_builtin_mbedtls}) AM_CONDITIONAL([OPENTHREAD_ENABLE_BUILTIN_MBEDTLS], [test "${enable_builtin_mbedtls}" = "yes"]) # # Thread TMF Proxy # AC_MSG_CHECKING([whether to enable TMF proxy]) AC_ARG_ENABLE(tmf_proxy, [AS_HELP_STRING([--enable-tmf-proxy],[Enable TMF proxy support @<:@default=no@:>@.])], [ case "${enableval}" in no|yes) enable_tmf_proxy=${enableval} ;; *) AC_MSG_ERROR([Invalid value ${enable_tmf_proxy} for --enable-tmf-proxy]) ;; esac ], [enable_tmf_proxy=no]) if test "$enable_tmf_proxy" = "yes"; then OPENTHREAD_ENABLE_TMF_PROXY=1 else OPENTHREAD_ENABLE_TMF_PROXY=0 fi AC_MSG_RESULT(${enable_tmf_proxy}) AC_SUBST(OPENTHREAD_ENABLE_TMF_PROXY) AM_CONDITIONAL([OPENTHREAD_ENABLE_TMF_PROXY], [test "${enable_tmf_proxy}" = "yes"]) AC_DEFINE_UNQUOTED([OPENTHREAD_ENABLE_TMF_PROXY],[${OPENTHREAD_ENABLE_TMF_PROXY}],[Define to 1 to enable the TMF proxy feature.]) # # Thread Network Diagnostic for MTD # AC_ARG_ENABLE(mtd_network_diagnostic, [AS_HELP_STRING([--enable-mtd-network-diagnostic],[Enable network diagnostic support for MTD @<:@default=no@:>@.])], [ case "${enableval}" in no|yes) enable_mtd_network_diagnostic=${enableval} ;; *) AC_MSG_ERROR([Invalid value ${enable_mtd_network_diagnostic} for --enable-mtd-network-diagnostic]) ;; esac ], [enable_mtd_network_diagnostic=no]) if test "$enable_mtd_network_diagnostic" = "yes"; then OPENTHREAD_ENABLE_MTD_NETWORK_DIAGNOSTIC=1 else OPENTHREAD_ENABLE_MTD_NETWORK_DIAGNOSTIC=0 fi AC_MSG_CHECKING([whether to enable the network diagnostic for MTD]) AC_MSG_RESULT(${enable_mtd_network_diagnostic}) AC_SUBST(OPENTHREAD_ENABLE_MTD_NETWORK_DIAGNOSTIC) AM_CONDITIONAL([OPENTHREAD_ENABLE_MTD_NETWORK_DIAGNOSTIC], [test "${enable_mtd_network_diagnostic}" = "yes"]) AC_DEFINE_UNQUOTED([OPENTHREAD_ENABLE_MTD_NETWORK_DIAGNOSTIC],[${OPENTHREAD_ENABLE_MTD_NETWORK_DIAGNOSTIC}],[Define to 1 to enable network diagnostic for MTD.]) # # Thread Commissioner # AC_ARG_ENABLE(commissioner, [AS_HELP_STRING([--enable-commissioner],[Enable commissioner support @<:@default=no@:>@.])], [ case "${enableval}" in no|yes) enable_commissioner=${enableval} ;; *) AC_MSG_ERROR([Invalid value ${enable_commissioner} for --enable-commissioner]) ;; esac ], [enable_commissioner=no]) if test "$enable_commissioner" = "yes"; then OPENTHREAD_ENABLE_COMMISSIONER=1 else OPENTHREAD_ENABLE_COMMISSIONER=0 fi AC_MSG_CHECKING([whether to enable the commissioner]) AC_MSG_RESULT(${enable_commissioner}) AC_SUBST(OPENTHREAD_ENABLE_COMMISSIONER) AM_CONDITIONAL([OPENTHREAD_ENABLE_COMMISSIONER], [test "${enable_commissioner}" = "yes"]) AC_DEFINE_UNQUOTED([OPENTHREAD_ENABLE_COMMISSIONER],[${OPENTHREAD_ENABLE_COMMISSIONER}],[Define to 1 to enable the commissioner role.]) # # Thread Joiner # AC_ARG_ENABLE(joiner, [AS_HELP_STRING([--enable-joiner],[Enable joiner support @<:@default=no@:>@.])], [ case "${enableval}" in no|yes) enable_joiner=${enableval} ;; *) AC_MSG_ERROR([Invalid value ${enable_joiner} for --enable-joiner]) ;; esac ], [enable_joiner=no]) if test "$enable_joiner" = "yes"; then OPENTHREAD_ENABLE_JOINER=1 else OPENTHREAD_ENABLE_JOINER=0 fi AC_MSG_CHECKING([whether to enable the joiner feature]) AC_MSG_RESULT(${enable_joiner}) AC_SUBST(OPENTHREAD_ENABLE_JOINER) AM_CONDITIONAL([OPENTHREAD_ENABLE_JOINER], [test "${enable_joiner}" = "yes"]) AC_DEFINE_UNQUOTED([OPENTHREAD_ENABLE_JOINER],[${OPENTHREAD_ENABLE_JOINER}],[Define to 1 to enable the joiner role.]) if test "${enable_commissioner}" = "yes" -o "${enable_joiner}" = "yes"; then enable_dtls="yes" OPENTHREAD_ENABLE_DTLS=1 else enable_dtls="no" OPENTHREAD_ENABLE_DTLS=0 fi AC_MSG_CHECKING([whether to enable DTLS due to joiner/commissioner]) AC_MSG_RESULT(${enable_dtls}) AC_SUBST(OPENTHREAD_ENABLE_DTLS) AM_CONDITIONAL([OPENTHREAD_ENABLE_DTLS], [test "${enable_dtls}" = "yes"]) AC_DEFINE_UNQUOTED([OPENTHREAD_ENABLE_DTLS],[${OPENTHREAD_ENABLE_DTLS}],[Define to 1 to enable dtls support.]) # # Jam Detection # AC_ARG_ENABLE(jam_detection, [AS_HELP_STRING([--enable-jam-detection],[Enable Jam Detection support @<:@default=no@:>@.])], [ case "${enableval}" in no|yes) enable_jam_detection=${enableval} ;; *) AC_MSG_ERROR([Invalid value ${enable_jam_detection} for --enable-jam-detection]) ;; esac ], [enable_jam_detection=no]) if test "$enable_jam_detection" = "yes"; then OPENTHREAD_ENABLE_JAM_DETECTION=1 else OPENTHREAD_ENABLE_JAM_DETECTION=0 fi AC_MSG_CHECKING([whether to enable jam detection]) AC_MSG_RESULT(${enable_jam_detection}) AC_SUBST(OPENTHREAD_ENABLE_JAM_DETECTION) AM_CONDITIONAL([OPENTHREAD_ENABLE_JAM_DETECTION], [test "${enable_jam_detection}" = "yes"]) AC_DEFINE_UNQUOTED([OPENTHREAD_ENABLE_JAM_DETECTION],[${OPENTHREAD_ENABLE_JAM_DETECTION}],[Define to 1 if you want to use jam detection feature]) # # Channel Monitor # AC_ARG_ENABLE(channel_monitor, [AS_HELP_STRING([--enable-channel-monitor],[Enable Channel Monitor support @<:@default=no@:>@.])], [ case "${enableval}" in no|yes) enable_channel_monitor=${enableval} ;; *) AC_MSG_ERROR([Invalid value ${enable_channel_monitor} for --enable-channel-monitor]) ;; esac ], [enable_channel_monitor=no]) if test "$enable_channel_monitor" = "yes"; then OPENTHREAD_ENABLE_CHANNEL_MONITOR=1 else OPENTHREAD_ENABLE_CHANNEL_MONITOR=0 fi AC_MSG_CHECKING([whether to enable channel monitor]) AC_MSG_RESULT(${enable_channel_monitor}) AC_SUBST(OPENTHREAD_ENABLE_CHANNEL_MONITOR) AM_CONDITIONAL([OPENTHREAD_ENABLE_CHANNEL_MONITOR], [test "${enable_channel_monitor}" = "yes"]) AC_DEFINE_UNQUOTED([OPENTHREAD_ENABLE_CHANNEL_MONITOR],[${OPENTHREAD_ENABLE_CHANNEL_MONITOR}],[Define to 1 if you want to use channel monitor feature]) # # Channel Manager # AC_ARG_ENABLE(channel_manager, [AS_HELP_STRING([--enable-channel-manager],[Enable Channel Manager support @<:@default=no@:>@.])], [ case "${enableval}" in no|yes) enable_channel_manager=${enableval} ;; *) AC_MSG_ERROR([Invalid value ${enable_channel_manager} for --enable-channel-manager]) ;; esac ], [enable_channel_manager=no]) if test "$enable_channel_manager" = "yes"; then OPENTHREAD_ENABLE_CHANNEL_MANAGER=1 else OPENTHREAD_ENABLE_CHANNEL_MANAGER=0 fi AC_MSG_CHECKING([whether to enable channel manager]) AC_MSG_RESULT(${enable_channel_manager}) AC_SUBST(OPENTHREAD_ENABLE_CHANNEL_MANAGER) AM_CONDITIONAL([OPENTHREAD_ENABLE_CHANNEL_MANAGER], [test "${enable_channel_manager}" = "yes"]) AC_DEFINE_UNQUOTED([OPENTHREAD_ENABLE_CHANNEL_MANAGER],[${OPENTHREAD_ENABLE_CHANNEL_MANAGER}],[Define to 1 if you want to enable channel manager feature]) # # MAC Filter (include AddressFilter and RssInFilter) # AC_ARG_ENABLE(mac_filter, [AS_HELP_STRING([--enable-mac-filter],[Enable MAC filter support @<:@default=no@:>@.])], [ case "${enableval}" in no|yes) enable_mac_filter=${enableval} ;; *) AC_MSG_ERROR([Invalid value ${enable_mac_filter} for --enable-mac-filter]) ;; esac ], [enable_mac_filter=no]) if test "$enable_mac_filter" = "yes"; then OPENTHREAD_ENABLE_MAC_FILTER=1 else OPENTHREAD_ENABLE_MAC_FILTER=0 fi AC_MSG_CHECKING([whether to enable mac filter]) AC_MSG_RESULT(${enable_mac_filter}) AC_SUBST(OPENTHREAD_ENABLE_MAC_FILTER) AM_CONDITIONAL([OPENTHREAD_ENABLE_MAC_FILTER], [test "${enable_mac_filter}" = "yes"]) AC_DEFINE_UNQUOTED([OPENTHREAD_ENABLE_MAC_FILTER],[${OPENTHREAD_ENABLE_MAC_FILTER}],[Define to 1 if you want to use MAC filter feature]) # # Diagnostics Library # AC_ARG_ENABLE(diag, [AS_HELP_STRING([--enable-diag],[Enable diagnostics support @<:@default=no@:>@.])], [ case "${enableval}" in no|yes) enable_diag=${enableval} ;; *) AC_MSG_ERROR([Invalid value ${enable_diag} for --enable-diag]) ;; esac ], [enable_diag=no]) if test "$enable_diag" = "yes"; then OPENTHREAD_ENABLE_DIAG=1 else OPENTHREAD_ENABLE_DIAG=0 fi AC_MSG_CHECKING([whether to enable diag]) AC_MSG_RESULT(${enable_diag}) AC_SUBST(OPENTHREAD_ENABLE_DIAG) AM_CONDITIONAL([OPENTHREAD_ENABLE_DIAG], [test "${enable_diag}" = "yes"]) AC_DEFINE_UNQUOTED([OPENTHREAD_ENABLE_DIAG],[${OPENTHREAD_ENABLE_DIAG}],[Define to 1 if you want to use diagnostics module]) # # Legacy Network # AC_ARG_ENABLE(legacy, [AS_HELP_STRING([--enable-legacy],[Enable legacy network support @<:@default=no@:>@.])], [ case "${enableval}" in no|yes) enable_legacy=${enableval} ;; *) AC_MSG_ERROR([Invalid value ${enable_legacy} for --enable-legacy]) ;; esac ], [enable_legacy=no]) if test "$enable_legacy" = "yes"; then OPENTHREAD_ENABLE_LEGACY=1 else OPENTHREAD_ENABLE_LEGACY=0 fi AC_MSG_CHECKING([whether to enable legacy]) AC_MSG_RESULT(${enable_legacy}) AC_SUBST(OPENTHREAD_ENABLE_LEGACY) AM_CONDITIONAL([OPENTHREAD_ENABLE_LEGACY], [test "${enable_legacy}" = "yes"]) AC_DEFINE_UNQUOTED([OPENTHREAD_ENABLE_LEGACY],[${OPENTHREAD_ENABLE_LEGACY}],[Define to 1 if you want to use legacy network support]) # # NCP Vendor Hook Source - Specify a C++ file that implements the NCP vendor hook. # AC_ARG_WITH( [ncp-vendor-hook-source], [AS_HELP_STRING([--with-ncp-vendor-hook-source=],[Specify a C++ file that implements the NCP vendor hook. @<:@default=none@:>@.])], [ if test "${withval}" = "no" then OPENTHREAD_ENABLE_NCP_VENDOR_HOOK=0 elif test '!' -f "${withval}" then AC_MSG_ERROR([Can't open ${withval} for --with-ncp-vendor-hook-source]) else OPENTHREAD_ENABLE_NCP_VENDOR_HOOK=1 # Get the absolute path. OPENTHREAD_NCP_VENDOR_HOOK_SOURCE=$(cd `dirname ${withval}` && pwd)/$(basename ${withval}) fi ], [ OPENTHREAD_ENABLE_NCP_VENDOR_HOOK=0 with_ncp_vendor_hook_source=none ]) AC_MSG_CHECKING([for NCP vendor hook source]) AC_MSG_RESULT(${OPENTHREAD_NCP_VENDOR_HOOK_SOURCE-none}) AC_SUBST(OPENTHREAD_NCP_VENDOR_HOOK_SOURCE) AC_DEFINE_UNQUOTED([OPENTHREAD_ENABLE_NCP_VENDOR_HOOK],[${OPENTHREAD_ENABLE_NCP_VENDOR_HOOK}],[Define to 1 if using NCP vendor hook]) AM_CONDITIONAL([OPENTHREAD_ENABLE_NCP_VENDOR_HOOK], [test "${OPENTHREAD_ENABLE_NCP_VENDOR_HOOK}" = "1"]) # # NCP Spinel Encrypter # AC_ARG_WITH( [ncp-spinel-encrypter-libs], [AS_HELP_STRING([--with-ncp-spinel-encrypter-libs=],[Specify library files (absolute paths) implementing the NCP Spinel Encrypter. @<:@default=none@:>@.])], [ if test "${withval}" = "no" then OPENTHREAD_ENABLE_NCP_SPINEL_ENCRYPTER=0 else OPENTHREAD_ENABLE_NCP_SPINEL_ENCRYPTER=1 OPENTHREAD_NCP_SPINEL_ENCRYPTER_LIBS=${withval} fi ], [ OPENTHREAD_ENABLE_NCP_SPINEL_ENCRYPTER=0 with_ncp_spinel_encrypter_libs=none ]) AC_MSG_CHECKING([for NCP Spinel Encrypter]) AC_MSG_RESULT(${OPENTHREAD_NCP_SPINEL_ENCRYPTER_LIBS-none}) AC_SUBST(OPENTHREAD_NCP_SPINEL_ENCRYPTER_LIBS) AC_DEFINE_UNQUOTED([OPENTHREAD_ENABLE_NCP_SPINEL_ENCRYPTER],[${OPENTHREAD_ENABLE_NCP_SPINEL_ENCRYPTER}],[Define to 1 if using NCP Spinel Encrypter]) AM_CONDITIONAL([OPENTHREAD_ENABLE_NCP_SPINEL_ENCRYPTER], [test "${OPENTHREAD_ENABLE_NCP_SPINEL_ENCRYPTER}" = "1"]) # # Child Supervision # AC_ARG_ENABLE(child_supervision, [AS_HELP_STRING([--enable-child-supervision],[Enable child supervision feature @<:@default=no@:>@.])], [ case "${enableval}" in no|yes) enable_child_supervision=${enableval} ;; *) AC_MSG_ERROR([Invalid value ${enable_child_supervision} for --enable-child-supervision]) ;; esac ], [enable_child_supervision=no]) if test "$enable_child_supervision" = "yes"; then OPENTHREAD_ENABLE_CHILD_SUPERVISION=1 else OPENTHREAD_ENABLE_CHILD_SUPERVISION=0 fi AC_MSG_RESULT(${enable_child_supervision}) AC_SUBST(OPENTHREAD_ENABLE_CHILD_SUPERVISION) AM_CONDITIONAL([OPENTHREAD_ENABLE_CHILD_SUPERVISION], [test "${enable_child_supervision}" = "yes"]) AC_DEFINE_UNQUOTED([OPENTHREAD_ENABLE_CHILD_SUPERVISION],[${OPENTHREAD_ENABLE_CHILD_SUPERVISION}],[Define to 1 if you want to use child supervision feature]) # # Log for certification test # AC_ARG_ENABLE(cert_log, [AS_HELP_STRING([--enable-cert-log],[Enable certification log support @<:@default=no@:>@.])], [ case "${enableval}" in no|yes) enable_cert_log=${enableval} ;; *) AC_MSG_ERROR([Invalid value ${enable_cert_log} for --enable-cert-log]) ;; esac ], [enable_cert_log=no]) if test "$enable_cert_log" = "yes"; then OPENTHREAD_ENABLE_CERT_LOG=1 else OPENTHREAD_ENABLE_CERT_LOG=0 fi AC_SUBST(OPENTHREAD_ENABLE_CERT_LOG) AM_CONDITIONAL([OPENTHREAD_ENABLE_CERT_LOG], [test "${enable_cert_log}" = "yes"]) AC_DEFINE_UNQUOTED([OPENTHREAD_ENABLE_CERT_LOG],[${OPENTHREAD_ENABLE_CERT_LOG}],[Define to 1 if you want to enable log for certification test]) # # DHCPv6 Client # AC_ARG_ENABLE(dhcp6_client, [AS_HELP_STRING([--enable-dhcp6-client],[Enable DHCPv6 client support @<:@default=no@:>@.])], [ case "${enableval}" in no|yes) enable_dhcp6_client=${enableval} ;; *) AC_MSG_ERROR([Invalid value ${enable_dhcp6_client} for --enable-dhcp6-client]) ;; esac ], [enable_dhcp6_client=no]) if test "$enable_dhcp6_client" = "yes"; then OPENTHREAD_ENABLE_DHCP6_CLIENT=1 else OPENTHREAD_ENABLE_DHCP6_CLIENT=0 fi AC_SUBST(OPENTHREAD_ENABLE_DHCP6_CLIENT) AM_CONDITIONAL([OPENTHREAD_ENABLE_DHCP6_CLIENT], [test "${enable_dhcp6_client}" = "yes"]) AC_DEFINE_UNQUOTED([OPENTHREAD_ENABLE_DHCP6_CLIENT],[${OPENTHREAD_ENABLE_DHCP6_CLIENT}],[Define to 1 if you want to enable DHCPv6 Client]) # # DHCPv6 Server # AC_ARG_ENABLE(dhcp6_server, [AS_HELP_STRING([--enable-dhcp6-server],[Enable DHCPv6 server support @<:@default=no@:>@.])], [ case "${enableval}" in no|yes) enable_dhcp6_server=${enableval} ;; *) AC_MSG_ERROR([Invalid value ${enable_dhcp6_server} for --enable-dhcp6-server]) ;; esac ], [enable_dhcp6_server=no]) if test "$enable_dhcp6_server" = "yes"; then OPENTHREAD_ENABLE_DHCP6_SERVER=1 else OPENTHREAD_ENABLE_DHCP6_SERVER=0 fi AC_SUBST(OPENTHREAD_ENABLE_DHCP6_SERVER) AM_CONDITIONAL([OPENTHREAD_ENABLE_DHCP6_SERVER], [test "${enable_dhcp6_server}" = "yes"]) AC_DEFINE_UNQUOTED([OPENTHREAD_ENABLE_DHCP6_SERVER],[${OPENTHREAD_ENABLE_DHCP6_SERVER}],[Define to 1 if you want to enable DHCPv6 Server]) # # DNS Client # AC_ARG_ENABLE(dns_client, [AS_HELP_STRING([--enable-dns-client],[Enable DNS client support @<:@default=no@:>@.])], [ case "${enableval}" in no|yes) enable_dns_client=${enableval} ;; *) AC_MSG_ERROR([Invalid value ${enable_dns_client} for --enable-dns-client]) ;; esac ], [enable_dns_client=no]) if test "$enable_dns_client" = "yes"; then OPENTHREAD_ENABLE_DNS_CLIENT=1 else OPENTHREAD_ENABLE_DNS_CLIENT=0 fi AC_SUBST(OPENTHREAD_ENABLE_DNS_CLIENT) AM_CONDITIONAL([OPENTHREAD_ENABLE_DNS_CLIENT], [test "${enable_dns_client}" = "yes"]) AC_DEFINE_UNQUOTED([OPENTHREAD_ENABLE_DNS_CLIENT],[${OPENTHREAD_ENABLE_DNS_CLIENT}],[Define to 1 if you want to enable DNS Client]) # # Application CoAP # AC_ARG_ENABLE(application_coap, [AS_HELP_STRING([--enable-application-coap],[Enable CoAP to an application.@<:@default=no@:>@.])], [ case "${enableval}" in no|yes) enable_application_coap=${enableval} ;; *) AC_MSG_ERROR([Invalid value ${enable_application_coap} for --enable-application-coap]) ;; esac ], [enable_application_coap=no]) if test "$enable_application_coap" = "yes"; then OPENTHREAD_ENABLE_APPLICATION_COAP=1 else OPENTHREAD_ENABLE_APPLICATION_COAP=0 fi AC_SUBST(OPENTHREAD_ENABLE_APPLICATION_COAP) AM_CONDITIONAL([OPENTHREAD_ENABLE_APPLICATION_COAP], [test "${enable_application_coap}" = "yes"]) AC_DEFINE_UNQUOTED([OPENTHREAD_ENABLE_APPLICATION_COAP],[${OPENTHREAD_ENABLE_APPLICATION_COAP}],[Define to 1 if you want to enable CoAP to an application.]) # # otLinkRaw API # AC_ARG_ENABLE(raw_link_api, [AS_HELP_STRING([--enable-raw-link-api],[Enable raw link-layer API support @<:@default=no@:>@.])], [ case "${enableval}" in no|yes) enable_raw_link_api=${enableval} ;; *) AC_MSG_ERROR([Invalid value ${enable_raw_link_api} for --enable-raw-link-api]) ;; esac ], [enable_raw_link_api=no]) if test "$enable_raw_link_api" = "yes"; then OPENTHREAD_ENABLE_RAW_LINK_API=1 else OPENTHREAD_ENABLE_RAW_LINK_API=0 fi AC_SUBST(OPENTHREAD_ENABLE_RAW_LINK_API) AM_CONDITIONAL([OPENTHREAD_ENABLE_RAW_LINK_API], [test "${enable_raw_link_api}" = "yes"]) AC_DEFINE_UNQUOTED([OPENTHREAD_ENABLE_RAW_LINK_API],[${OPENTHREAD_ENABLE_RAW_LINK_API}],[Define to 1 if you want to enable raw link-layer API]) # # Border Router # AC_ARG_ENABLE(border_router, [AS_HELP_STRING([--enable-border-router],[Enable Border Router support @<:@default=no@:>@.])], [ case "${enableval}" in no|yes) enable_border_router=${enableval} ;; *) AC_MSG_ERROR([Invalid value ${enable_border_router} for --enable-border-router]) ;; esac ], [enable_border_router=no]) if test "$enable_border_router" = "yes"; then OPENTHREAD_ENABLE_BORDER_ROUTER=1 else OPENTHREAD_ENABLE_BORDER_ROUTER=0 fi AC_SUBST(OPENTHREAD_ENABLE_BORDER_ROUTER) AM_CONDITIONAL([OPENTHREAD_ENABLE_BORDER_ROUTER], [test "${enable_border_router}" = "yes"]) AC_DEFINE_UNQUOTED([OPENTHREAD_ENABLE_BORDER_ROUTER],[${OPENTHREAD_ENABLE_BORDER_ROUTER}],[Define to 1 if you want to enable Border Router]) # # Service # AC_ARG_ENABLE(service, [AS_HELP_STRING([--enable-service],[Enable Service @<:@default=no@:>@.])], [ case "${enableval}" in no|yes) enable_service=${enableval} ;; *) AC_MSG_ERROR([Invalid value ${enable_service} for --enable-service]) ;; esac ], [enable_service=no]) if test "$enable_service" = "yes"; then OPENTHREAD_ENABLE_SERVICE=1 else OPENTHREAD_ENABLE_SERVICE=0 fi AC_SUBST(OPENTHREAD_ENABLE_SERVICE) AM_CONDITIONAL([OPENTHREAD_ENABLE_SERVICE], [test "${enable_service}" = "yes"]) AC_DEFINE_UNQUOTED([OPENTHREAD_ENABLE_SERVICE],[${OPENTHREAD_ENABLE_SERVICE}],[Define to 1 if you want to enable Service]) # # Linker Map Output # AC_ARG_ENABLE(linker-map, [AS_HELP_STRING([--enable-linker-map],[Enable linker map output @<:@default=no@:>@.])], [ case "${enableval}" in no|yes) enable_linker_map=${enableval} ;; *) AC_MSG_ERROR([Invalid value ${enable_linker_map} for --enable-linker-map]) ;; esac ], [enable_linker_map=no]) AC_MSG_CHECKING([whether to enable linker map output]) AC_MSG_RESULT(${enable_linker_map}) AM_CONDITIONAL([OPENTHREAD_ENABLE_LINKER_MAP], [test "${enable_linker_map}" = "yes"]) # # Examples # AC_ARG_WITH(examples, [AS_HELP_STRING([--with-examples=TARGET], [Specify the examples from one of: none, posix, cc2538, cc2650, cc2652, da15000, efr32, emsk, gp712, kw41z, nrf52840, samr21 @<:@default=none@:>@.])], [ case "${with_examples}" in none|posix|cc2538|cc2650|cc2652|da15000|efr32|emsk|gp712|kw41z|nrf52840|samr21) ;; *) AC_MSG_ERROR([Invalid value ${with_examples} for --with-examples]) ;; esac ], [with_examples=none]) OPENTHREAD_EXAMPLES=${with_examples} case ${with_examples} in posix) OPENTHREAD_EXAMPLES_POSIX=1 AC_DEFINE_UNQUOTED([OPENTHREAD_EXAMPLES_POSIX],[${OPENTHREAD_EXAMPLES_POSIX}],[Define to 1 if you want to use posix examples]) ;; cc2538) OPENTHREAD_EXAMPLES_CC2538=1 AC_DEFINE_UNQUOTED([OPENTHREAD_EXAMPLES_CC2538],[${OPENTHREAD_EXAMPLES_CC2538}],[Define to 1 if you want to use cc2538 examples]) ;; cc2650) OPENTHREAD_EXAMPLES_CC2650=1 AC_DEFINE_UNQUOTED([OPENTHREAD_EXAMPLES_CC2650],[${OPENTHREAD_EXAMPLES_CC2650}],[Define to 1 if you want to use cc2650 examples]) ;; cc2652) OPENTHREAD_EXAMPLES_CC2652=1 AC_DEFINE_UNQUOTED([OPENTHREAD_EXAMPLES_CC2652],[${OPENTHREAD_EXAMPLES_CC2652}],[Define to 1 if you want to use cc2652 examples]) ;; da15000) OPENTHREAD_EXAMPLES_DA15000=1 AC_DEFINE_UNQUOTED([OPENTHREAD_EXAMPLES_DA15000],[${OPENTHREAD_EXAMPLES_DA15000}],[Define to 1 if you want to use da15000 examples]) ;; efr32) OPENTHREAD_EXAMPLES_EFR32=1 AC_DEFINE_UNQUOTED([OPENTHREAD_EXAMPLES_EFR32],[${OPENTHREAD_EXAMPLES_EFR32}],[Define to 1 if you want to use efr32 examples]) ;; emsk) OPENTHREAD_EXAMPLES_EMSK=1 AC_DEFINE_UNQUOTED([OPENTHREAD_EXAMPLES_EMSK],[${OPENTHREAD_EXAMPLES_EMSK}],[Define to 1 if you want to use emsk examples]) ;; gp712) OPENTHREAD_EXAMPLES_GP712=1 AC_DEFINE_UNQUOTED([OPENTHREAD_EXAMPLES_GP712],[${OPENTHREAD_EXAMPLES_GP712}],[Define to 1 if you want to use gp712 examples]) ;; kw41z) OPENTHREAD_EXAMPLES_KW41Z=1 AC_DEFINE_UNQUOTED([OPENTHREAD_EXAMPLES_KW41Z],[${OPENTHREAD_EXAMPLES_KW41Z}],[Define to 1 if you want to use kw41z examples]) ;; nrf52840) OPENTHREAD_EXAMPLES_NRF52840=1 AC_DEFINE_UNQUOTED([OPENTHREAD_EXAMPLES_NRF52840],[${OPENTHREAD_EXAMPLES_NRF52840}],[Define to 1 if you want to use nrf52840 examples]) ;; samr21) OPENTHREAD_EXAMPLES_SAMR21=1 AC_DEFINE_UNQUOTED([OPENTHREAD_EXAMPLES_SAMR21],[${OPENTHREAD_EXAMPLES_SAMR21}],[Define to 1 if you want to use samr21 examples]) ;; esac AC_MSG_CHECKING([whether to enable examples]) AC_MSG_RESULT(${OPENTHREAD_EXAMPLES}) AC_SUBST(OPENTHREAD_EXAMPLES) AM_CONDITIONAL([OPENTHREAD_EXAMPLES], [test ${with_examples} != "none"]) AC_DEFINE_UNQUOTED([OPENTHREAD_EXAMPLES],[${OPENTHREAD_EXAMPLES}],[OpenThread examples]) AC_SUBST(OPENTHREAD_EXAMPLES_POSIX) AM_CONDITIONAL([OPENTHREAD_EXAMPLES_POSIX], [test "${OPENTHREAD_EXAMPLES}" = "posix"]) AC_SUBST(OPENTHREAD_EXAMPLES_CC2538) AM_CONDITIONAL([OPENTHREAD_EXAMPLES_CC2538], [test "${OPENTHREAD_EXAMPLES}" = "cc2538"]) AC_SUBST(OPENTHREAD_EXAMPLES_CC2650) AM_CONDITIONAL([OPENTHREAD_EXAMPLES_CC2650], [test "${OPENTHREAD_EXAMPLES}" = "cc2650"]) AC_SUBST(OPENTHREAD_EXAMPLES_CC2652) AM_CONDITIONAL([OPENTHREAD_EXAMPLES_CC2652], [test "${OPENTHREAD_EXAMPLES}" = "cc2652"]) AC_SUBST(OPENTHREAD_EXAMPLES_DA15000) AM_CONDITIONAL([OPENTHREAD_EXAMPLES_DA15000], [test "${OPENTHREAD_EXAMPLES}" = "da15000"]) AC_SUBST(OPENTHREAD_EXAMPLES_EFR32) AM_CONDITIONAL([OPENTHREAD_EXAMPLES_EFR32], [test "${OPENTHREAD_EXAMPLES}" = "efr32"]) AC_SUBST(OPENTHREAD_EXAMPLES_EMSK) AM_CONDITIONAL([OPENTHREAD_EXAMPLES_EMSK], [test "${OPENTHREAD_EXAMPLES}" = "emsk"]) AC_SUBST(OPENTHREAD_EXAMPLES_GP712) AM_CONDITIONAL([OPENTHREAD_EXAMPLES_GP712], [test "${OPENTHREAD_EXAMPLES}" = "gp712"]) AC_SUBST(OPENTHREAD_EXAMPLES_KW41Z) AM_CONDITIONAL([OPENTHREAD_EXAMPLES_KW41Z], [test "${OPENTHREAD_EXAMPLES}" = "kw41z"]) AC_SUBST(OPENTHREAD_EXAMPLES_NRF52840) AM_CONDITIONAL([OPENTHREAD_EXAMPLES_NRF52840], [test "${OPENTHREAD_EXAMPLES}" = "nrf52840"]) AC_SUBST(OPENTHREAD_EXAMPLES_SAMR21) AM_CONDITIONAL([OPENTHREAD_EXAMPLES_SAMR21], [test "${OPENTHREAD_EXAMPLES}" = "samr21"]) # # Tools # AC_MSG_CHECKING([whether to build tools]) AC_ARG_ENABLE(tools, [AS_HELP_STRING([--disable-tools],[Disable building of tools @<:@default=no@:>@.])], [ case "${enableval}" in no|yes) build_tools=${enableval} ;; *) AC_MSG_ERROR([Invalid value ${enableval} for --enable-tools]) ;; esac ], [build_tools=yes]) AC_MSG_RESULT(${build_tools}) AM_CONDITIONAL([OPENTHREAD_BUILD_TOOLS], [test "${build_tools}" = "yes"]) # # Documentation # # Determine whether or not documentation (via Doxygen) should be built # or not, with 'auto' as the default and establish a default support # value for GraphViz 'dot' support. NL_ENABLE_DOCS([auto],[NO]) AM_CONDITIONAL(OPENTHREAD_BUILD_DOCS, [test "${nl_cv_build_docs}" = "yes"]) # # Checks for libraries and packages. # # At minimum, the following packages are optional, depending on # configuration: # # * TBD # AC_MSG_NOTICE([checking required package dependencies]) # NL_WITH_PACKAGE(...) # # Check for headers # #--------------------------------------------------- # Enable BSD Security Features # This enables strlcpy() and other friends in GNU land. # While the references below generally speak of: "glibc" # The ARM Embedded platform uses the nano instance of NEWLIB # Which greatly follows and mirrors glibc. # -------------------------------------------------- # # References: # 1) http://stackoverflow.com/questions/29201515/what-does-d-default-source-do # 2) http://man7.org/linux/man-pages/man7/feature_test_macros.7.html # CFLAGS="${CFLAGS} -D_BSD_SOURCE=1 -D_DEFAULT_SOURCE=1" CXXFLAGS="${CXXFLAGS} -D_BSD_SOURCE=1 -D_DEFAULT_SOURCE=1" OLD_CFLAGS="${CFLAGS}" CFLAGS="${CFLAGS} -Wno-error=address" AC_HEADER_STDBOOL CFLAGS="${OLD_CFLAGS}" AC_HEADER_STDC AC_CHECK_HEADERS([stdint.h]) AC_CHECK_HEADERS([string.h]) # # Missing Functions # AC_CHECK_FUNC([strlcpy], [AC_DEFINE([HAVE_STRLCPY], [1], [Define if strlcpy exists.])]) AC_CHECK_FUNC([strlcat], [AC_DEFINE([HAVE_STRLCAT], [1], [Define if strlcat exists.])]) AC_CHECK_FUNC([strnlen], [AC_DEFINE([HAVE_STRNLEN], [1], [Define if strnlen exists.])]) # # Check for types and structures # AC_TYPE_INT8_T AC_TYPE_INT16_T AC_TYPE_INT32_T AC_TYPE_INT64_T AC_TYPE_UINT8_T AC_TYPE_UINT16_T AC_TYPE_UINT32_T AC_TYPE_UINT64_T # # Checks for library functions # if test "${ac_no_link}" != "yes"; then AC_CHECK_FUNCS([memcpy]) fi # Add any mbedtls CPPFLAGS CPPFLAGS="${CPPFLAGS} ${MBEDTLS_CPPFLAGS}" # Add any code coverage CPPFLAGS and LDFLAGS CPPFLAGS="${CPPFLAGS} ${NL_COVERAGE_CPPFLAGS}" LIBS="${LIBS} ${NL_COVERAGE_LIBS}" # At this point, we can restore the compiler flags to whatever the # user passed in, now that we're clear of an -Werror issues by # transforming -Wno-error back to -Werror. NL_RESTORE_WERROR # # Identify the various makefiles and auto-generated files for the package # AC_CONFIG_FILES([ Makefile include/Makefile include/openthread/Makefile include/openthread/platform/Makefile src/Makefile src/cli/Makefile src/ncp/Makefile src/core/Makefile src/diag/Makefile third_party/Makefile third_party/mbedtls/Makefile examples/Makefile examples/apps/Makefile examples/apps/cli/Makefile examples/apps/ncp/Makefile examples/platforms/Makefile examples/platforms/cc2538/Makefile examples/platforms/cc2650/Makefile examples/platforms/cc2652/Makefile examples/platforms/da15000/Makefile examples/platforms/efr32/Makefile examples/platforms/emsk/Makefile examples/platforms/gp712/Makefile examples/platforms/kw41z/Makefile examples/platforms/nrf52840/Makefile examples/platforms/samr21/Makefile examples/platforms/posix/Makefile examples/platforms/utils/Makefile tools/Makefile tools/harness-automation/Makefile tools/harness-thci/Makefile tools/spi-hdlc-adapter/Makefile tests/Makefile tests/fuzz/Makefile tests/scripts/Makefile tests/scripts/thread-cert/Makefile tests/unit/Makefile doc/Makefile ]) # # Generate the auto-generated files for the package # AC_OUTPUT # # Summarize the package configuration # AC_MSG_NOTICE([ Configuration Summary --------------------- Package : ${PACKAGE_NAME} Version : ${PACKAGE_VERSION} Interface : ${LIBOPENTHREAD_VERSION_INFO//:/.} Build system : ${build} Host system : ${host} Host architecture : ${host_cpu} Host OS : ${host_os} Cross compiling : ${cross_compiling} Build shared libraries : ${enable_shared} Build static libraries : ${enable_static} Build debug libraries : ${nl_cv_build_debug} Build optimized libraries : ${nl_cv_build_optimized} Build coverage libraries : ${nl_cv_build_coverage} Build coverage reports : ${nl_cv_build_coverage_reports} Address sanitizer support : ${enable_address_sanitizer} Lcov : ${LCOV:--} Genhtml : ${GENHTML:--} Build tests : ${nl_cv_build_tests} Build fuzz targets : ${enable_fuzz_targets} Build tools : ${build_tools} OpenThread tests : ${with_tests} Prefix : ${prefix} Documentation support : ${nl_cv_build_docs} Doxygen : ${DOXYGEN:--} GraphViz dot : ${DOT:--} C Preprocessor : ${CPP} C Compiler : ${CC} C++ Preprocessor : ${CXXCPP} C++ Compiler : ${CXX} Assembler Compiler : ${CCAS} Archiver : ${AR} Archive Indexer : ${RANLIB} Symbol Stripper : ${STRIP} Object Copier : ${OBJCOPY} C Preprocessor flags : ${CPPFLAGS:--} C Compile flags : ${CFLAGS:--} C++ Compile flags : ${CXXFLAGS:--} Assembler flags : ${CCASFLAGS:--} Link flags : ${LDFLAGS:--} Link libraries : ${LIBS} Link maps : ${enable_linker_map} Pretty : ${PRETTY:--} Pretty args : ${PRETTY_ARGS:--} Pretty check : ${PRETTY_CHECK:--} Pretty check args : ${PRETTY_CHECK_ARGS:--} OpenThread CLI support : ${enable_cli_app} OpenThread CLI-MTD support : ${enable_cli_app_mtd} OpenThread CLI-FTD support : ${enable_cli_app_ftd} OpenThread NCP support : ${enable_ncp_app} OpenThread NCP-MTD support : ${enable_ncp_app_mtd} OpenThread NCP-FTD support : ${enable_ncp_app_ftd} OpenThread NCP-BUS Configuration : ${with_ncp_bus} OpenThread NCP Vendor Hook Source : ${with_ncp_vendor_hook_source} OpenThread NCP Spinel Encrypter : ${with_ncp_spinel_encrypter_libs} OpenThread Multiple Instances support : ${enable_multiple_instances} OpenThread MTD Network Diagnostic support : ${enable_mtd_network_diagnostic} OpenThread builtin mbedtls support : ${enable_builtin_mbedtls} OpenThread TMF Proxy support : ${enable_tmf_proxy} OpenThread Commissioner support : ${enable_commissioner} OpenThread Joiner support : ${enable_joiner} OpenThread DTLS support : ${enable_dtls} OpenThread Jam Detection support : ${enable_jam_detection} OpenThread Channel Monitor support : ${enable_channel_monitor} OpenThread Channel Manager support : ${enable_channel_manager} OpenThread MAC Filter support : ${enable_mac_filter} OpenThread Diagnostics support : ${enable_diag} OpenThread Child Supervision support : ${enable_child_supervision} OpenThread Legacy network support : ${enable_legacy} OpenThread Certification log support : ${enable_cert_log} OpenThread DHCPv6 Server support : ${enable_dhcp6_server} OpenThread DHCPv6 Client support : ${enable_dhcp6_client} OpenThread DNS Client support : ${enable_dns_client} OpenThread Application CoAP support : ${enable_application_coap} OpenThread Raw Link-Layer support : ${enable_raw_link_api} OpenThread Border Router support : ${enable_border_router} OpenThread Service support : ${enable_service} OpenThread examples : ${OPENTHREAD_EXAMPLES} ])