[build] add Android.bp support (#6039)

Since Android 7.0, the Soong build system was introduced in Android to
replace Make. This commit adds the Android.bp to support Soong build
system.
This commit is contained in:
Zhanglong Xia
2021-01-14 10:16:31 -08:00
committed by GitHub
parent 31a91d1f5c
commit 36b16be3a4
34 changed files with 910 additions and 41 deletions
+707
View File
@@ -0,0 +1,707 @@
//
// Copyright (c) 2021, 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.
//
cc_defaults {
name : "ot_cflags_defaults",
cflags: [
"-DOPENTHREAD_CONFIG_COMMISSIONER_ENABLE=1",
"-DOPENTHREAD_CONFIG_IP6_SLAAC_ENABLE=1",
"-DOPENTHREAD_CONFIG_LOG_LEVEL_DYNAMIC_ENABLE=1",
"-DOPENTHREAD_CONFIG_MAC_FILTER_ENABLE=1",
"-DOPENTHREAD_POSIX_CONFIG_RCP_PTY_ENABLE=1",
"-DOPENTHREAD_FTD=1",
"-DOPENTHREAD_POSIX=1",
"-DOPENTHREAD_SPINEL_CONFIG_OPENTHREAD_MESSAGE_ENABLE=1",
"-DOPENTHREAD_CONFIG_ANDROID_VERSION_HEADER_ENABLE=1",
"-DPACKAGE=\"openthread\"",
"-DPACKAGE_BUGREPORT=\"[email protected]\"",
"-DPACKAGE_NAME=\"OPENTHREAD\"",
"-DPACKAGE_TARNAME=\"openthread\"",
"-DPACKAGE_URL=\"http://github.com/openthread/openthread\"",
"-DMBEDTLS_CONFIG_FILE=\"mbedtls-config.h\"",
"-DSPINEL_PLATFORM_HEADER=\"spinel_platform.h\"",
],
}
soong_config_module_type {
name: "ot_android_bp_cc_defaults",
module_type: "cc_defaults",
config_namespace: "openthread",
bool_variables: ["enable_android_bp", "disable_android_bp"],
properties: ["enabled"],
}
ot_android_bp_cc_defaults {
name: "ot_android_bp_defaults",
soong_config_variables: {
enable_android_bp: {
enabled: true,
},
disable_android_bp: {
enabled: false,
},
},
}
genrule {
name: "ot_version_header",
cmd: "$(location script/config-android-version-gen.sh) $(location .default-version) < $(in) > $(out)",
srcs: ["etc/android/openthread-config-android-version.h.in"],
out: ["openthread-config-android-version.h"],
tool_files: [
"script/config-android-version-gen.sh",
".default-version",
],
}
soong_config_module_type {
name: "ot_config_cc_defaults",
module_type: "cc_defaults",
config_namespace: "openthread",
bool_variables: ["daemon", "diag", "default_config_file"],
value_variables: ["project_core_config_file", "config_file", "config_file_local_include_dir"],
variables: ["rcp_bus"],
properties: ["cflags", "local_include_dirs"],
}
soong_config_string_variable {
name: "rcp_bus",
values: ["spi", "uart"],
}
ot_config_cc_defaults {
name: "ot_config_defaults",
soong_config_variables: {
daemon: {
cflags: [
"-DOPENTHREAD_CONFIG_PLATFORM_NETIF_ENABLE=1",
"-DOPENTHREAD_CONFIG_PLATFORM_UDP_ENABLE=1",
"-DOPENTHREAD_CONFIG_UNSECURE_TRAFFIC_MANAGED_BY_STACK_ENABLE=1",
"-DOPENTHREAD_POSIX_CONFIG_DAEMON_ENABLE=1"
],
},
diag: {
cflags: ["-DOPENTHREAD_CONFIG_DIAG_ENABLE=1"],
},
rcp_bus: {
spi: {
cflags: ["-DOPENTHREAD_POSIX_CONFIG_RCP_BUS=OT_POSIX_RCP_BUS_SPI"],
},
uart: {
cflags: ["-DOPENTHREAD_POSIX_CONFIG_RCP_BUS=OT_POSIX_RCP_BUS_UART"],
},
},
project_core_config_file: {
cflags: ["-DOPENTHREAD_PROJECT_CORE_CONFIG_FILE=%s"],
},
config_file: {
cflags: ["-DOPENTHREAD_CONFIG_FILE=%s"],
},
config_file_local_include_dir: {
local_include_dirs: ["%s"],
},
default_config_file: {
cflags: [
"-DOPENTHREAD_PROJECT_CORE_CONFIG_FILE=\"openthread-core-posix-config.h\"",
"-DOPENTHREAD_CONFIG_FILE=\"openthread-config-android.h\"",
],
},
},
}
soong_config_module_type {
name: "ot_vendor_extension_cc_defaults",
module_type: "cc_defaults",
config_namespace: "openthread",
bool_variables: ["enable_vendor_extension"],
value_variables: ["vendor_extension_local_include_dir", "vendor_extension_src"],
properties: ["cflags", "srcs", "local_include_dirs"],
}
ot_vendor_extension_cc_defaults {
name: "ot_vendor_extension_defaults",
soong_config_variables: {
enable_vendor_extension: {
cflags: ["-DOPENTHREAD_ENABLE_VENDOR_EXTENSION=1"],
},
vendor_extension_local_include_dir: {
local_include_dirs: ["%s"],
},
vendor_extension_src: {
srcs: ["%s"],
},
},
}
cc_library_static {
name: "ot-core",
vendor_available: true,
host_supported: true,
defaults: ["ot_android_bp_defaults", "ot_cflags_defaults", "ot_config_defaults", "ot_vendor_extension_defaults"],
generated_headers: ["ot_version_header"],
local_include_dirs: [
"include",
"src",
"src/cli",
"src/core",
"src/ncp",
"src/posix/platform",
"src/posix/platform/include",
"third_party",
"third_party/mbedtls",
"third_party/mbedtls/repo/include",
],
export_include_dirs: [
"include",
"src",
],
cppflags: [
"-std=c++11",
"-pedantic-errors",
],
shared_libs: [
"libcutils",
],
srcs: [
"src/core/api/backbone_router_api.cpp",
"src/core/api/backbone_router_ftd_api.cpp",
"src/core/api/border_router_api.cpp",
"src/core/api/channel_manager_api.cpp",
"src/core/api/channel_monitor_api.cpp",
"src/core/api/child_supervision_api.cpp",
"src/core/api/coap_api.cpp",
"src/core/api/commissioner_api.cpp",
"src/core/api/crypto_api.cpp",
"src/core/api/dataset_api.cpp",
"src/core/api/dataset_ftd_api.cpp",
"src/core/api/dataset_updater_api.cpp",
"src/core/api/diags_api.cpp",
"src/core/api/dns_api.cpp",
"src/core/api/icmp6_api.cpp",
"src/core/api/instance_api.cpp",
"src/core/api/ip6_api.cpp",
"src/core/api/jam_detection_api.cpp",
"src/core/api/joiner_api.cpp",
"src/core/api/link_api.cpp",
"src/core/api/link_metrics_api.cpp",
"src/core/api/link_raw_api.cpp",
"src/core/api/logging_api.cpp",
"src/core/api/message_api.cpp",
"src/core/api/multi_radio_api.cpp",
"src/core/api/netdata_api.cpp",
"src/core/api/netdiag_api.cpp",
"src/core/api/random_crypto_api.cpp",
"src/core/api/random_noncrypto_api.cpp",
"src/core/api/server_api.cpp",
"src/core/api/tasklet_api.cpp",
"src/core/api/thread_api.cpp",
"src/core/api/thread_ftd_api.cpp",
"src/core/api/udp_api.cpp",
"src/core/backbone_router/backbone_tmf.cpp",
"src/core/backbone_router/bbr_leader.cpp",
"src/core/backbone_router/bbr_local.cpp",
"src/core/backbone_router/bbr_manager.cpp",
"src/core/backbone_router/multicast_listeners_table.cpp",
"src/core/backbone_router/ndproxy_table.cpp",
"src/core/border_router/infra_if_platform.cpp",
"src/core/border_router/router_advertisement.cpp",
"src/core/border_router/routing_manager.cpp",
"src/core/coap/coap.cpp",
"src/core/coap/coap_message.cpp",
"src/core/coap/coap_secure.cpp",
"src/core/common/crc16.cpp",
"src/core/common/instance.cpp",
"src/core/common/logging.cpp",
"src/core/common/message.cpp",
"src/core/common/notifier.cpp",
"src/core/common/random_manager.cpp",
"src/core/common/settings.cpp",
"src/core/common/string.cpp",
"src/core/common/tasklet.cpp",
"src/core/common/time_ticker.cpp",
"src/core/common/timer.cpp",
"src/core/common/tlvs.cpp",
"src/core/common/trickle_timer.cpp",
"src/core/crypto/aes_ccm.cpp",
"src/core/crypto/aes_ecb.cpp",
"src/core/crypto/ecdsa.cpp",
"src/core/crypto/hkdf_sha256.cpp",
"src/core/crypto/hmac_sha256.cpp",
"src/core/crypto/mbedtls.cpp",
"src/core/crypto/pbkdf2_cmac.cpp",
"src/core/crypto/sha256.cpp",
"src/core/diags/factory_diags.cpp",
"src/core/mac/channel_mask.cpp",
"src/core/mac/data_poll_handler.cpp",
"src/core/mac/data_poll_sender.cpp",
"src/core/mac/mac.cpp",
"src/core/mac/mac_filter.cpp",
"src/core/mac/mac_frame.cpp",
"src/core/mac/mac_links.cpp",
"src/core/mac/mac_types.cpp",
"src/core/mac/sub_mac.cpp",
"src/core/mac/sub_mac_callbacks.cpp",
"src/core/meshcop/announce_begin_client.cpp",
"src/core/meshcop/border_agent.cpp",
"src/core/meshcop/commissioner.cpp",
"src/core/meshcop/dataset.cpp",
"src/core/meshcop/dataset_local.cpp",
"src/core/meshcop/dataset_manager.cpp",
"src/core/meshcop/dataset_manager_ftd.cpp",
"src/core/meshcop/dtls.cpp",
"src/core/meshcop/energy_scan_client.cpp",
"src/core/meshcop/joiner.cpp",
"src/core/meshcop/joiner_router.cpp",
"src/core/meshcop/meshcop.cpp",
"src/core/meshcop/meshcop_leader.cpp",
"src/core/meshcop/meshcop_tlvs.cpp",
"src/core/meshcop/panid_query_client.cpp",
"src/core/meshcop/timestamp.cpp",
"src/core/net/checksum.cpp",
"src/core/net/dhcp6_client.cpp",
"src/core/net/dhcp6_server.cpp",
"src/core/net/dns_client.cpp",
"src/core/net/dns_headers.cpp",
"src/core/net/icmp6.cpp",
"src/core/net/ip6.cpp",
"src/core/net/ip6_address.cpp",
"src/core/net/ip6_filter.cpp",
"src/core/net/ip6_headers.cpp",
"src/core/net/ip6_mpl.cpp",
"src/core/net/netif.cpp",
"src/core/net/udp6.cpp",
"src/core/radio/radio.cpp",
"src/core/radio/radio_callbacks.cpp",
"src/core/radio/radio_platform.cpp",
"src/core/radio/trel_interface.cpp",
"src/core/radio/trel_link.cpp",
"src/core/radio/trel_packet.cpp",
"src/core/thread/address_resolver.cpp",
"src/core/thread/announce_begin_server.cpp",
"src/core/thread/announce_sender.cpp",
"src/core/thread/child_table.cpp",
"src/core/thread/csl_tx_scheduler.cpp",
"src/core/thread/discover_scanner.cpp",
"src/core/thread/dua_manager.cpp",
"src/core/thread/energy_scan_server.cpp",
"src/core/thread/indirect_sender.cpp",
"src/core/thread/key_manager.cpp",
"src/core/thread/link_metrics.cpp",
"src/core/thread/link_quality.cpp",
"src/core/thread/lowpan.cpp",
"src/core/thread/mesh_forwarder.cpp",
"src/core/thread/mesh_forwarder_ftd.cpp",
"src/core/thread/mesh_forwarder_mtd.cpp",
"src/core/thread/mle.cpp",
"src/core/thread/mle_router.cpp",
"src/core/thread/mle_types.cpp",
"src/core/thread/mlr_manager.cpp",
"src/core/thread/neighbor_table.cpp",
"src/core/thread/network_data.cpp",
"src/core/thread/network_data_leader.cpp",
"src/core/thread/network_data_leader_ftd.cpp",
"src/core/thread/network_data_local.cpp",
"src/core/thread/network_data_notifier.cpp",
"src/core/thread/network_diagnostic.cpp",
"src/core/thread/panid_query_server.cpp",
"src/core/thread/radio_selector.cpp",
"src/core/thread/router_table.cpp",
"src/core/thread/src_match_controller.cpp",
"src/core/thread/thread_netif.cpp",
"src/core/thread/tmf.cpp",
"src/core/thread/topology.cpp",
"src/core/thread/uri_paths.cpp",
"src/core/utils/channel_manager.cpp",
"src/core/utils/channel_monitor.cpp",
"src/core/utils/child_supervision.cpp",
"src/core/utils/dataset_updater.cpp",
"src/core/utils/heap.cpp",
"src/core/utils/jam_detector.cpp",
"src/core/utils/lookup_table.cpp",
"src/core/utils/parse_cmdline.cpp",
"src/core/utils/slaac_address.cpp",
"src/lib/hdlc/hdlc.cpp",
"src/lib/platform/exit_code.c",
"src/lib/spinel/spinel.c",
"src/lib/spinel/spinel_decoder.cpp",
"src/lib/spinel/spinel_encoder.cpp",
"src/lib/url/url.cpp",
"src/posix/platform/alarm.cpp",
"src/posix/platform/backbone.cpp",
"src/posix/platform/entropy.cpp",
"src/posix/platform/hdlc_interface.cpp",
"src/posix/platform/logging.cpp",
"src/posix/platform/misc.cpp",
"src/posix/platform/multicast_routing.cpp",
"src/posix/platform/netif.cpp",
"src/posix/platform/radio.cpp",
"src/posix/platform/radio_url.cpp",
"src/posix/platform/settings.cpp",
"src/posix/platform/spi_interface.cpp",
"src/posix/platform/system.cpp",
"src/posix/platform/uart.cpp",
"src/posix/platform/udp.cpp",
"third_party/mbedtls/repo/library/aes.c",
"third_party/mbedtls/repo/library/asn1parse.c",
"third_party/mbedtls/repo/library/asn1write.c",
"third_party/mbedtls/repo/library/base64.c",
"third_party/mbedtls/repo/library/bignum.c",
"third_party/mbedtls/repo/library/ccm.c",
"third_party/mbedtls/repo/library/cipher.c",
"third_party/mbedtls/repo/library/cipher_wrap.c",
"third_party/mbedtls/repo/library/cmac.c",
"third_party/mbedtls/repo/library/ctr_drbg.c",
"third_party/mbedtls/repo/library/debug.c",
"third_party/mbedtls/repo/library/ecdh.c",
"third_party/mbedtls/repo/library/ecdsa.c",
"third_party/mbedtls/repo/library/ecjpake.c",
"third_party/mbedtls/repo/library/ecp.c",
"third_party/mbedtls/repo/library/ecp_curves.c",
"third_party/mbedtls/repo/library/entropy.c",
"third_party/mbedtls/repo/library/entropy_poll.c",
"third_party/mbedtls/repo/library/hmac_drbg.c",
"third_party/mbedtls/repo/library/md.c",
"third_party/mbedtls/repo/library/md_wrap.c",
"third_party/mbedtls/repo/library/memory_buffer_alloc.c",
"third_party/mbedtls/repo/library/oid.c",
"third_party/mbedtls/repo/library/pem.c",
"third_party/mbedtls/repo/library/pk.c",
"third_party/mbedtls/repo/library/pk_wrap.c",
"third_party/mbedtls/repo/library/pkparse.c",
"third_party/mbedtls/repo/library/pkwrite.c",
"third_party/mbedtls/repo/library/platform.c",
"third_party/mbedtls/repo/library/platform_util.c",
"third_party/mbedtls/repo/library/sha256.c",
"third_party/mbedtls/repo/library/ssl_ciphersuites.c",
"third_party/mbedtls/repo/library/ssl_cli.c",
"third_party/mbedtls/repo/library/ssl_cookie.c",
"third_party/mbedtls/repo/library/ssl_srv.c",
"third_party/mbedtls/repo/library/ssl_ticket.c",
"third_party/mbedtls/repo/library/ssl_tls.c",
"third_party/mbedtls/repo/library/threading.c",
"third_party/mbedtls/repo/library/x509.c",
"third_party/mbedtls/repo/library/x509_crt.c",
],
}
cc_library_static {
name: "libopenthread-cli",
vendor_available: true,
host_supported: true,
defaults: ["ot_android_bp_defaults", "ot_cflags_defaults", "ot_config_defaults"],
generated_headers: ["ot_version_header"],
local_include_dirs: [
"include",
"src",
"src/cli",
"src/core",
"src/posix/platform",
"src/posix/platform/include",
"third_party/mbedtls",
"third_party/mbedtls/repo/include",
],
cflags: ["-DOPENTHREAD_CONFIG_UART_CLI_RAW=1"],
cppflags: [
"-std=c++11",
"-pedantic-errors",
],
srcs: [
"src/cli/cli.cpp",
"src/cli/cli_coap.cpp",
"src/cli/cli_coap_secure.cpp",
"src/cli/cli_commissioner.cpp",
"src/cli/cli_console.cpp",
"src/cli/cli_dataset.cpp",
"src/cli/cli_joiner.cpp",
"src/cli/cli_network_data.cpp",
"src/cli/cli_uart.cpp",
"src/cli/cli_udp.cpp",
],
}
cc_binary {
name: "ot-cli",
vendor: true,
defaults: ["ot_android_bp_defaults", "ot_cflags_defaults", "ot_config_defaults"],
generated_headers: ["ot_version_header"],
local_include_dirs: [
"include",
"src",
"src/cli",
"src/core",
"src/posix/platform",
"src/posix/platform/include",
"third_party/mbedtls",
"third_party/mbedtls/repo/include",
],
cflags: ["-DOPENTHREAD_POSIX_APP_TYPE=OT_POSIX_APP_TYPE_CLI"],
cppflags: [
"-std=c++11",
"-pedantic-errors",
],
host_ldlibs: [
"-lrt",
"-lutil",
],
srcs: ["src/posix/main.c"],
static_libs: [
"libopenthread-cli",
"ot-core",
],
}
cc_library_static {
name: "libopenthread-ncp",
vendor_available: true,
host_supported: true,
defaults: ["ot_android_bp_defaults", "ot_cflags_defaults", "ot_config_defaults"],
generated_headers: ["ot_version_header"],
local_include_dirs: [
"include",
"src",
"src/core",
"src/ncp",
"src/posix/platform",
"src/posix/platform/include",
"third_party/mbedtls",
"third_party/mbedtls/repo/include",
],
cppflags: [
"-std=c++11",
"-pedantic-errors",
],
srcs: [
"src/lib/spinel/spinel_buffer.cpp",
"src/ncp/changed_props_set.cpp",
"src/ncp/ncp_base.cpp",
"src/ncp/ncp_base_mtd.cpp",
"src/ncp/ncp_base_ftd.cpp",
"src/ncp/ncp_base_dispatcher.cpp",
"src/ncp/ncp_uart.cpp",
],
}
cc_binary {
name: "ot-ncp",
vendor: true,
defaults: ["ot_android_bp_defaults", "ot_cflags_defaults", "ot_config_defaults"],
generated_headers: ["ot_version_header"],
local_include_dirs: [
"include",
"src",
"src/core",
"src/ncp",
"src/posix/platform",
"src/posix/platform/include",
"third_party/mbedtls",
"third_party/mbedtls/repo/include",
],
cflags: ["-DOPENTHREAD_POSIX_APP_TYPE=OT_POSIX_APP_TYPE_NCP"],
cppflags: [
"-std=c++11",
"-pedantic-errors",
],
srcs: [
"src/posix/main.c"],
host_ldlibs: [
"-lrt",
"-lutil",
],
static_libs: [
"libopenthread-ncp",
"ot-core",
],
}
cc_binary {
name: "ot-ctl",
vendor: true,
defaults: ["ot_android_bp_defaults", "ot_cflags_defaults", "ot_config_defaults"],
generated_headers: ["ot_version_header"],
cppflags: [
"-std=c++11",
"-pedantic-errors",
],
local_include_dirs: [
"include",
"src/",
"src/core",
"src/posix/platform",
"src/posix/platform/include",
],
srcs: ["src/posix/client.cpp"],
}
cc_binary {
name: "ot-rcp",
vendor: true,
defaults: ["ot_android_bp_defaults"],
generated_headers: ["ot_version_header"],
local_include_dirs: [
"include",
"src",
"src/core",
"src/ncp",
"src/lib/hdlc",
"src/lib/platform",
"src/lib/spinel",
"examples/platforms",
"examples/platforms/simulation",
"third_party",
"third_party/mbedtls",
"third_party/mbedtls/repo/include",
],
cflags: [
"-DOPENTHREAD_MTD=0",
"-DOPENTHREAD_FTD=0",
"-DOPENTHREAD_RADIO=1",
"-DOPENTHREAD_SPINEL_CONFIG_OPENTHREAD_MESSAGE_ENABLE=0",
"-DOPENTHREAD_EXAMPLES_SIMULATION=1",
"-D_GNU_SOURCE",
"-DSPINEL_PLATFORM_HEADER=\"spinel_platform.h\"",
"-DOPENTHREAD_PROJECT_CORE_CONFIG_FILE=\"openthread-core-simulation-config.h\"",
"-DOPENTHREAD_CONFIG_ANDROID_VERSION_HEADER_ENABLE=1",
"-DOPENTHREAD_CONFIG_FILE=<openthread-config-android.h>",
"-DPACKAGE=\"openthread\"",
"-DPACKAGE_BUGREPORT=\"[email protected]\"",
"-DPACKAGE_NAME=\"OPENTHREAD\"",
"-DPACKAGE_TARNAME=\"openthread\"",
"-DPACKAGE_URL=\"http://github.com/openthread/openthread\"",
],
cppflags: [
"-std=c++11",
"-pedantic-errors",
],
host_ldlibs: [
"-lrt",
"-lutil",
],
shared_libs: [
"libcutils",
],
srcs: [
"examples/apps/ncp/main.c",
"examples/platforms/utils/debug_uart.c",
"examples/platforms/utils/mac_frame.cpp",
"examples/platforms/utils/settings_ram.c",
"examples/platforms/utils/soft_source_match_table.c",
"examples/platforms/simulation/alarm.c",
"examples/platforms/simulation/diag.c",
"examples/platforms/simulation/entropy.c",
"examples/platforms/simulation/flash.c",
"examples/platforms/simulation/logging.c",
"examples/platforms/simulation/misc.c",
"examples/platforms/simulation/radio.c",
"examples/platforms/simulation/spi-stubs.c",
"examples/platforms/simulation/system.c",
"examples/platforms/simulation/uart.c",
"examples/platforms/simulation/virtual_time/alarm-sim.c",
"examples/platforms/simulation/virtual_time/platform-sim.c",
"src/core/api/diags_api.cpp",
"src/core/api/heap_api.cpp",
"src/core/api/instance_api.cpp",
"src/core/api/link_raw_api.cpp",
"src/core/api/logging_api.cpp",
"src/core/api/random_noncrypto_api.cpp",
"src/core/api/tasklet_api.cpp",
"src/core/common/instance.cpp",
"src/core/common/logging.cpp",
"src/core/common/random_manager.cpp",
"src/core/common/string.cpp",
"src/core/common/tasklet.cpp",
"src/core/common/timer.cpp",
"src/core/crypto/aes_ccm.cpp",
"src/core/crypto/aes_ecb.cpp",
"src/core/diags/factory_diags.cpp",
"src/core/mac/link_raw.cpp",
"src/core/mac/mac_frame.cpp",
"src/core/mac/mac_types.cpp",
"src/core/mac/sub_mac.cpp",
"src/core/mac/sub_mac_callbacks.cpp",
"src/core/radio/radio.cpp",
"src/core/radio/radio_callbacks.cpp",
"src/core/radio/radio_platform.cpp",
"src/core/thread/link_quality.cpp",
"src/core/utils/lookup_table.cpp",
"src/core/utils/parse_cmdline.cpp",
"src/lib/hdlc/hdlc.cpp",
"src/lib/platform/exit_code.c",
"src/lib/spinel/spinel.c",
"src/lib/spinel/spinel_buffer.cpp",
"src/lib/spinel/spinel_decoder.cpp",
"src/lib/spinel/spinel_encoder.cpp",
"src/ncp/changed_props_set.cpp",
"src/ncp/ncp_base.cpp",
"src/ncp/ncp_base_ftd.cpp",
"src/ncp/ncp_base_mtd.cpp",
"src/ncp/ncp_base_radio.cpp",
"src/ncp/ncp_base_dispatcher.cpp",
"src/ncp/ncp_spi.cpp",
"src/ncp/ncp_uart.cpp",
],
}
+12
View File
@@ -28,6 +28,8 @@
LOCAL_PATH := $(call my-dir)
ifeq ($(OPENTHREAD_ENABLE_ANDROID_MK),1)
OPENTHREAD_DEFAULT_VERSION := $(shell cat $(LOCAL_PATH)/.default-version)
OPENTHREAD_SOURCE_VERSION := $(shell git -C $(LOCAL_PATH) describe --always --match "[0-9].*" 2> /dev/null)
@@ -145,6 +147,14 @@ LOCAL_CPPFLAGS := \
-pedantic-errors \
$(NULL)
ifeq ($(ANDROID_NDK),1)
LOCAL_SHARED_LIBRARIES := libcutils
LOCAL_CFLAGS += \
-DOPENTHREAD_ENABLE_ANDROID_NDK=1 \
$(NULL)
endif
LOCAL_SRC_FILES := \
src/core/api/backbone_router_api.cpp \
src/core/api/backbone_router_ftd_api.cpp \
@@ -569,3 +579,5 @@ endif # ($(USE_OTBR_DAEMON), 1)
ifneq ($(OPENTHREAD_PROJECT_ANDROID_MK),)
include $(OPENTHREAD_PROJECT_ANDROID_MK)
endif
endif # ($(OPENTHREAD_ENABLE_ANDROID_MK),1)
@@ -0,0 +1,35 @@
/*
* Copyright (c) 2021, 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.
*/
/**
* @def PACKAGE_VERSION
*
* The source code version string to insert into the OpenThread version string.
*
*/
#define PACKAGE_VERSION "@OPENTHREAD_SOURCE_VERSION@"
+4
View File
@@ -26,6 +26,10 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
#ifdef OPENTHREAD_CONFIG_ANDROID_VERSION_HEADER_ENABLE
#include <openthread-config-android-version.h>
#endif
/* Define to 1 to enable the border agent feature. */
#define OPENTHREAD_CONFIG_BORDER_AGENT_ENABLE 1
+1 -1
View File
@@ -53,7 +53,7 @@ extern "C" {
* @note This number versions both OpenThread platform and user APIs.
*
*/
#define OPENTHREAD_API_VERSION (60)
#define OPENTHREAD_API_VERSION (61)
/**
* @addtogroup api-instance
+19
View File
@@ -257,6 +257,25 @@ extern "C" {
#define OT_APPLE_IGNORE_GNU_FOLDING_CONSTANT(...) __VA_ARGS__
#endif
/**
* @def OT_FALL_THROUGH
*
* Suppress fall through warning in specific compiler.
*
*/
#if defined(__cplusplus) && (__cplusplus >= 201703L)
#define OT_FALL_THROUGH [[fallthrough]]
#elif defined(__clang__)
#define OT_FALL_THROUGH [[clang::fallthrough]]
#elif defined(__GNUC__) && (__GNUC__ >= 7)
#define OT_FALL_THROUGH __attribute__((fallthrough))
#else
#define OT_FALL_THROUGH \
do \
{ \
} while (false) /* fallthrough */
#endif
/**
* @}
*
+2 -2
View File
@@ -47,8 +47,8 @@ check_targets()
main()
{
USE_OTBR_DAEMON=1 check_targets ot-cli ot-ctl ot-ncp
check_targets ot-cli ot-ncp spi-hdlc-adapter
OPENTHREAD_ENABLE_ANDROID_MK=1 ANDROID_NDK=1 USE_OTBR_DAEMON=1 check_targets ot-cli ot-ctl ot-ncp
OPENTHREAD_ENABLE_ANDROID_MK=1 ANDROID_NDK=1 check_targets ot-cli ot-ncp spi-hdlc-adapter
}
main "$@"
+52
View File
@@ -0,0 +1,52 @@
#!/bin/bash
#
# Copyright (c) 2021, 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.
#
# Description:
# This script generates the openthread version header file needed by Android.bp.
#
set -euo pipefail
main()
{
if [[ $# -ne 1 ]]; then
echo >&2 "Usage: $0 .default-version " \
"< etc/android/openthread-config-android-version.h.in > openthread-config-android-version.h"
exit 1
fi
OPENTHREAD_DEFAULT_VERSION_FILE="$1"
OPENTHREAD_SRC_PATH=$(dirname "${OPENTHREAD_DEFAULT_VERSION_FILE}")
OPENTHREAD_DEFAULT_VERSION=$(cat "${OPENTHREAD_DEFAULT_VERSION_FILE}")
OPENTHREAD_SOURCE_VERSION=$("${OPENTHREAD_SRC_PATH}"/third_party/nlbuild-autotools/repo/scripts/mkversion -b "${OPENTHREAD_DEFAULT_VERSION}" "${OPENTHREAD_SRC_PATH}")
sed -e s/@OPENTHREAD_SOURCE_VERSION@/"${OPENTHREAD_SOURCE_VERSION}"/
}
main "$@"
+28
View File
@@ -42,6 +42,14 @@
#include "common/new.hpp"
#include "radio/radio.hpp"
#ifdef __ANDROID__
#ifdef OPENTHREAD_ENABLE_ANDROID_NDK
#include <sys/system_properties.h>
#else
#include <cutils/properties.h>
#endif
#endif
using namespace ot;
#if OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE
@@ -134,6 +142,24 @@ const char *otGetVersionString(void)
* image will be undefined and may change.
*/
#ifdef __ANDROID__
#ifdef OPENTHREAD_ENABLE_ANDROID_NDK
static char sVersion[100 + PROP_VALUE_MAX];
char dateTime[PROP_VALUE_MAX];
__system_property_get("ro.build.date", dateTime);
#else
static char sVersion[100 + PROPERTY_VALUE_MAX];
char dateTime[PROPERTY_VALUE_MAX];
property_get("ro.build.date", dateTime, "Thu Jan 1 1970 UTC 00:00:00");
#endif
snprintf(sVersion, sizeof(sVersion), "%s/%s ;%s ; %s", PACKAGE_NAME, PACKAGE_VERSION,
OPENTHREAD_CONFIG_PLATFORM_INFO, dateTime);
#else
#ifdef PLATFORM_VERSION_ATTR_PREFIX
PLATFORM_VERSION_ATTR_PREFIX
#else
@@ -148,6 +174,8 @@ const char *otGetVersionString(void)
#endif
; // Trailing semicolon to end statement.
#endif
return sVersion;
}
+3 -2
View File
@@ -654,7 +654,8 @@ void CoapBase::ProcessReceivedResponse(Message &aMessage, const Ip6::MessageInfo
case kTypeConfirmable:
// Send empty ACK if it is a CON message.
IgnoreError(SendAck(aMessage, aMessageInfo));
// Fall through
OT_FALL_THROUGH;
// Handling of RFC7641 and multicast is below.
case kTypeNonConfirmable:
// Separate response or observation notification. If the request was to a multicast
@@ -707,7 +708,7 @@ void CoapBase::ProcessReceivedRequest(Message &aMessage, const Ip6::MessageInfo
cachedResponse->Finish();
error = Send(*cachedResponse, aMessageInfo);
// fall through
OT_FALL_THROUGH;
case OT_ERROR_NO_BUFS:
ExitNow();
+1 -1
View File
@@ -247,7 +247,7 @@ void DataPollHandler::HandleSentFrame(const Mac::TxFrame &aFrame, otError aError
otLogInfoMac("Indirect tx to child %04x failed, attempt %d/%d", aChild.GetRloc16(),
aChild.GetIndirectTxAttempts(), kMaxPollTriggeredTxAttempts);
// Fall through
OT_FALL_THROUGH;
case OT_ERROR_CHANNEL_ACCESS_FAILURE:
case OT_ERROR_ABORT:
+4 -4
View File
@@ -1380,7 +1380,7 @@ void Mac::RecordFrameTransmitStatus(const TxFrame &aFrame,
case OT_ERROR_NO_ACK:
frameTxSuccess = false;
// Fall through
OT_FALL_THROUGH;
case OT_ERROR_NONE:
neighbor->GetLinkInfo().AddFrameTxStatus(frameTxSuccess);
@@ -2024,7 +2024,7 @@ void Mac::HandleReceivedFrame(RxFrame *aFrame, otError aError)
srcaddr.SetExtended(neighbor->GetExtAddress());
// Fall through
OT_FALL_THROUGH;
case Address::kTypeExtended:
@@ -2084,7 +2084,7 @@ void Mac::HandleReceivedFrame(RxFrame *aFrame, otError aError)
VerifyOrExit(mOperation == kOperationWaitingForData);
// Fall through
OT_FALL_THROUGH;
case OT_ERROR_NONE:
break;
@@ -2160,7 +2160,7 @@ void Mac::HandleReceivedFrame(RxFrame *aFrame, otError aError)
ExitNow();
}
// Fall through
OT_FALL_THROUGH;
case kOperationEnergyScan:
+1 -1
View File
@@ -479,7 +479,7 @@ void SubMac::HandleTransmitDone(TxFrame &aFrame, RxFrame *aAckFrame, otError aEr
case OT_ERROR_CHANNEL_ACCESS_FAILURE:
ccaSuccess = false;
// fall through
OT_FALL_THROUGH;
case OT_ERROR_NONE:
case OT_ERROR_NO_ACK:
+1 -1
View File
@@ -313,7 +313,7 @@ exit:
case OT_ERROR_NO_BUFS:
mTimer.Start(kDelayNoBufs);
// fall through
OT_FALL_THROUGH;
default:
LogError("send Dataset set to leader", error);
+1 -1
View File
@@ -223,7 +223,7 @@ otError DatasetManager::HandleSet(Coap::Message &aMessage, const Ip6::MessageInf
}
}
// fall through
OT_FALL_THROUGH;
default:
SuccessOrExit(dataset.SetTlv(datasetTlv));
+1 -1
View File
@@ -217,7 +217,7 @@ void Joiner::Finish(otError aError)
IgnoreError(Get<Ip6::Filter>().RemoveUnsecurePort(kJoinerUdpPort));
mTimer.Stop();
// Fall through
OT_FALL_THROUGH;
case kStateDiscover:
Get<Coap::CoapSecure>().Stop();
+1 -1
View File
@@ -231,7 +231,7 @@ bool Client::HandleTrickleTimer(void)
mStartTime = TimerMilli::GetNow();
mIdentityAssociationCurrent->mStatus = kIaStatusSoliciting;
// fall through
OT_FALL_THROUGH;
case kIaStatusSoliciting:
Solicit(mIdentityAssociationCurrent->mPrefixAgentRloc);
+1 -1
View File
@@ -282,7 +282,7 @@ otError Name::ReadName(const Message &aMessage,
aOffset = iterator.mNameEndOffset;
error = OT_ERROR_NONE;
// Fall through
OT_FALL_THROUGH;
default:
ExitNow();
+1 -1
View File
@@ -284,7 +284,7 @@ void Link::HandleTimer(void)
case Mle::kRoleChild:
HandleTimer(Get<Mle::MleRouter>().GetParent());
// Fall through
OT_FALL_THROUGH;
case Mle::kRoleRouter:
case Mle::kRoleLeader:
+1 -1
View File
@@ -142,7 +142,7 @@ void AnnounceSender::CheckState(void)
}
#endif
// fall through
OT_FALL_THROUGH;
case Mle::kRoleDisabled:
case Mle::kRoleDetached:
+2 -1
View File
@@ -254,7 +254,8 @@ void CslTxScheduler::HandleSentFrame(const Mac::TxFrame &aFrame, otError aError,
aChild.ResetCslTxAttempts();
}
// Fall through
OT_FALL_THROUGH;
case OT_ERROR_CHANNEL_ACCESS_FAILURE:
case OT_ERROR_ABORT:
+1 -1
View File
@@ -234,7 +234,7 @@ void DiscoverScanner::HandleDiscoverComplete(void)
mTimer.Stop();
Get<MeshForwarder>().ResumeMessageTransmissions();
// Fall through
OT_FALL_THROUGH;
case kStateScanDone:
Get<Mac::Mac>().ClearTemporaryChannel();
+2 -1
View File
@@ -110,7 +110,8 @@ void DuaManager::HandleDomainPrefixUpdate(BackboneRouter::Leader::DomainPrefixSt
// In case removed for some reason e.g. the kDuaInvalid response from PBBR forcely
VerifyOrExit(!Get<ThreadNetif>().HasUnicastAddress(GetDomainUnicastAddress()));
// fall through
OT_FALL_THROUGH;
case BackboneRouter::Leader::kDomainPrefixRefreshed:
case BackboneRouter::Leader::kDomainPrefixAdded:
{
+3 -3
View File
@@ -234,17 +234,17 @@ uint8_t LinkQualityInfo::CalculateLinkQuality(uint8_t aLinkMargin, uint8_t aLast
case 0:
threshold1 += kHysteresisThreshold;
// fall-through
OT_FALL_THROUGH;
case 1:
threshold2 += kHysteresisThreshold;
// fall-through
OT_FALL_THROUGH;
case 2:
threshold3 += kHysteresisThreshold;
// fall-through
OT_FALL_THROUGH;
default:
break;
+2 -2
View File
@@ -350,7 +350,7 @@ otError Lowpan::Compress(Message & aMessage,
hcCtl |= kHcNextHeader;
break;
}
// fall through
OT_FALL_THROUGH;
default:
SuccessOrExit(error = buf.Write(static_cast<uint8_t>(ip6Header.GetNextHeader())));
@@ -439,7 +439,7 @@ otError Lowpan::Compress(Message & aMessage,
error = Compress(aMessage, aMacSource, aMacDest, buf);
// fall through
OT_FALL_THROUGH;
default:
ExitNow();
+1 -1
View File
@@ -542,7 +542,7 @@ Mac::TxFrame *MeshForwarder::HandleFrameRequest(Mac::TxFrames &aTxFrames)
// queue for it. The message would be then converted to a
// direct tx.
// Fall through
OT_FALL_THROUGH;
#endif
default:
+3 -3
View File
@@ -1726,7 +1726,7 @@ void Mle::HandleAttachTimer(void)
break;
}
// fall through
OT_FALL_THROUGH;
case kAttachStateAnnounce:
if (shouldAnnounce)
@@ -1738,7 +1738,7 @@ void Mle::HandleAttachTimer(void)
}
}
// fall through
OT_FALL_THROUGH;
case kAttachStateChildIdRequest:
SetAttachState(kAttachStateIdle);
@@ -3692,7 +3692,7 @@ void Mle::HandleChildUpdateResponse(const Message & aMessage,
mRetrieveNewNetworkData = true;
// fall through
OT_FALL_THROUGH;
case kRoleChild:
// Source Address
+6 -3
View File
@@ -295,7 +295,8 @@ void MleRouter::HandleChildStart(AttachMode aMode)
RemoveChildren();
}
// fall through
OT_FALL_THROUGH;
case kAttachBetter:
if (HasChildren() && mPreviousPartitionIdRouter != mLeaderData.GetPartitionId())
{
@@ -824,6 +825,8 @@ otError MleRouter::HandleLinkAccept(const Message & aMessage,
case Neighbor::kStateInvalid:
VerifyOrExit((mChallengeTimeout > 0) && (response == mChallenge), error = OT_ERROR_SECURITY);
OT_FALL_THROUGH;
case Neighbor::kStateValid:
break;
@@ -1360,7 +1363,7 @@ otError MleRouter::HandleAdvertisement(const Message & aMessage,
mRouterSelectionJitterTimeout = 1 + Random::NonCrypto::GetUint8InRange(0, mRouterSelectionJitter);
}
// fall through
OT_FALL_THROUGH;
case kRoleLeader:
router = mRouterTable.GetRouter(routerId);
@@ -1737,7 +1740,7 @@ void MleRouter::HandleTimeTick(void)
ExitNow();
}
// fall through
OT_FALL_THROUGH;
case kRoleRouter:
// verify path to leader
+1 -1
View File
@@ -121,7 +121,7 @@ void ChannelManager::StartDatasetUpdate(void)
case OT_ERROR_INVALID_STATE:
otLogInfoUtil("ChannelManager: Request to change to channel %d failed. Device is disabled", mChannel);
// Fall through
OT_FALL_THROUGH;
default:
mState = kStateIdle;
+1 -2
View File
@@ -717,8 +717,7 @@ uint8_t Buffer::OutFrameReadByte(void)
switch (mReadState)
{
case kReadStateNotActive:
// Fall through
OT_FALL_THROUGH;
case kReadStateDone:
+6 -2
View File
@@ -131,7 +131,9 @@ void NcpBase::HandleNeighborTableChanged(otNeighborTableEvent aEvent, const otNe
{
case OT_NEIGHBOR_TABLE_EVENT_CHILD_ADDED:
command = SPINEL_CMD_PROP_VALUE_INSERTED;
// Fall through
OT_FALL_THROUGH;
case OT_NEIGHBOR_TABLE_EVENT_CHILD_REMOVED:
property = SPINEL_PROP_THREAD_CHILD_TABLE;
VerifyOrExit(!aEntry.mInfo.mChild.mIsStateRestoring);
@@ -139,7 +141,9 @@ void NcpBase::HandleNeighborTableChanged(otNeighborTableEvent aEvent, const otNe
case OT_NEIGHBOR_TABLE_EVENT_ROUTER_ADDED:
command = SPINEL_CMD_PROP_VALUE_INSERTED;
// Fall through
OT_FALL_THROUGH;
case OT_NEIGHBOR_TABLE_EVENT_ROUTER_REMOVED:
property = SPINEL_PROP_THREAD_NEIGHBOR_TABLE;
break;
+2 -1
View File
@@ -125,7 +125,8 @@ static uint8_t ExternalRoutePreferenceToFlagByte(int aPreference)
break;
case OT_ROUTE_PREFERENCE_MED:
// fall through
OT_FALL_THROUGH;
default:
flags = SPINEL_ROUTE_PREFERENCE_MEDIUM;
+1 -1
View File
@@ -326,7 +326,7 @@ void NcpSpi::PrepareTxFrame(void)
case kTxStateHandlingSendDone:
mTxState = kTxStateIdle;
// Fall through
OT_FALL_THROUGH;
// to next case to prepare the next frame (if any).
case kTxStateIdle:
+3 -1
View File
@@ -158,6 +158,8 @@ void NcpUart::EncodeAndSendToUart(void)
{
mByte = txFrameBuffer.OutFrameReadByte();
OT_FALL_THROUGH;
case kEncodingFrame:
SuccessOrExit(mFrameEncoder.Encode(mByte));
@@ -181,7 +183,7 @@ void NcpUart::EncodeAndSendToUart(void)
mState = kFinalizingFrame;
// fall through
OT_FALL_THROUGH;
case kFinalizingFrame: