xref: /aosp_15_r20/external/openthread/Android.bp (revision cfb92d1480a9e65faed56933e9c12405f45898b4)
1//
2//  Copyright (c) 2021, The OpenThread Authors.
3//  All rights reserved.
4//
5//  Redistribution and use in source and binary forms, with or without
6//  modification, are permitted provided that the following conditions are met:
7//  1. Redistributions of source code must retain the above copyright
8//     notice, this list of conditions and the following disclaimer.
9//  2. Redistributions in binary form must reproduce the above copyright
10//     notice, this list of conditions and the following disclaimer in the
11//     documentation and/or other materials provided with the distribution.
12//  3. Neither the name of the copyright holder nor the
13//     names of its contributors may be used to endorse or promote products
14//     derived from this software without specific prior written permission.
15//
16//  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17//  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18//  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19//  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
20//  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21//  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22//  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23//  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24//  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25//  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26//  POSSIBILITY OF SUCH DAMAGE.
27//
28
29package {
30    default_team: "trendy_team_fwk_thread_network",
31    default_applicable_licenses: ["external_openthread_license"],
32}
33
34// Added automatically by a large-scale-change that took the approach of
35// 'apply every license found to every target'. While this makes sure we respect
36// every license restriction, it may not be entirely correct.
37//
38// e.g. GPL in an MIT project might only apply to the contrib/ directory.
39//
40// Please consider splitting the single license below into multiple licenses,
41// taking care not to lose any license_kind information, and overriding the
42// default license using the 'licenses: [...]' property on targets as needed.
43//
44// For unused files, consider creating a 'fileGroup' with "//visibility:private"
45// to attach the license to, and including a comment whether the files may be
46// used in the current project.
47//
48// large-scale-change included anything that looked like it might be a license
49// text as a license_text. e.g. LICENSE, NOTICE, COPYING etc.
50//
51// Please consider removing redundant or irrelevant files from 'license_text:'.
52// See: http://go/android-license-faq
53license {
54    name: "external_openthread_license",
55    visibility: [":__subpackages__"],
56    license_kinds: [
57        "SPDX-license-identifier-Apache-2.0",
58        "SPDX-license-identifier-BSD",
59        "SPDX-license-identifier-BSD-3-Clause",
60        "SPDX-license-identifier-GPL",
61        "SPDX-license-identifier-GPL-2.0",
62        "SPDX-license-identifier-LGPL",
63        "SPDX-license-identifier-MIT",
64        "legacy_unencumbered",
65    ],
66    license_text: [
67        "LICENSE",
68        "NOTICE",
69    ],
70}
71
72cc_defaults {
73    name: "ot_posix_cflags_defaults",
74    cflags: [
75        "-DMBEDTLS_CONFIG_FILE=\"mbedtls-config.h\"",
76        "-DOPENTHREAD_CONFIG_FILE=\"src/android/openthread-android-config.h\"",
77        "-DOPENTHREAD_PROJECT_LIB_CONFIG_FILE=\"src/android/openthread-android-spinel-config.h\"",
78        "-DOPENTHREAD_FTD=1",
79        "-DOPENTHREAD_POSIX=1",
80        "-DOPENTHREAD_POSIX_CONFIG_DAEMON_ENABLE=1",
81        "-DOPENTHREAD_PROJECT_CORE_CONFIG_FILE=\"src/android/openthread-core-android-config.h\"",
82        "-DOPENTHREAD_SPINEL_CONFIG_OPENTHREAD_MESSAGE_ENABLE=1",
83        "-DOPENTHREAD_CONFIG_JOINER_ENABLE=1",
84        "-DPACKAGE=\"openthread\"",
85        "-DPACKAGE_BUGREPORT=\"[email protected]\"",
86        "-DPACKAGE_NAME=\"OPENTHREAD\"",
87        "-DPACKAGE_TARNAME=\"openthread\"",
88        "-DPACKAGE_URL=\"http://github.com/openthread/openthread\"",
89        "-DSPINEL_PLATFORM_HEADER=\"spinel_platform.h\"",
90        "-DOPENTHREAD_POSIX_CONFIG_SPINEL_SPI_INTERFACE_ENABLE=0",
91        "-DOPENTHREAD_POSIX_CONFIG_SPINEL_VENDOR_INTERFACE_ENABLE=1",
92    ],
93}
94
95genrule {
96    name: "ot_version_header",
97    cmd: "$(location src/android/config-android-version-gen.sh) < $(in) > $(out)",
98    srcs: ["src/android/openthread-config-android-version.h.in"],
99    out: ["openthread-config-android-version.h"],
100    tool_files: [
101        "src/android/config-android-version-gen.sh",
102    ],
103}
104
105filegroup {
106    name: "openthread_core_srcs",
107    srcs: [
108        "src/core/api/backbone_router_api.cpp",
109        "src/core/api/backbone_router_ftd_api.cpp",
110        "src/core/api/border_agent_api.cpp",
111        "src/core/api/border_router_api.cpp",
112        "src/core/api/border_routing_api.cpp",
113        "src/core/api/channel_manager_api.cpp",
114        "src/core/api/channel_monitor_api.cpp",
115        "src/core/api/child_supervision_api.cpp",
116        "src/core/api/coap_api.cpp",
117        "src/core/api/coap_secure_api.cpp",
118        "src/core/api/commissioner_api.cpp",
119        "src/core/api/crypto_api.cpp",
120        "src/core/api/dataset_api.cpp",
121        "src/core/api/dataset_ftd_api.cpp",
122        "src/core/api/dataset_updater_api.cpp",
123        "src/core/api/diags_api.cpp",
124        "src/core/api/dns_api.cpp",
125        "src/core/api/dns_server_api.cpp",
126        "src/core/api/error_api.cpp",
127        "src/core/api/heap_api.cpp",
128        "src/core/api/history_tracker_api.cpp",
129        "src/core/api/icmp6_api.cpp",
130        "src/core/api/instance_api.cpp",
131        "src/core/api/ip6_api.cpp",
132        "src/core/api/jam_detection_api.cpp",
133        "src/core/api/joiner_api.cpp",
134        "src/core/api/link_api.cpp",
135        "src/core/api/link_metrics_api.cpp",
136        "src/core/api/link_raw_api.cpp",
137        "src/core/api/logging_api.cpp",
138        "src/core/api/mesh_diag_api.cpp",
139        "src/core/api/message_api.cpp",
140        "src/core/api/multi_radio_api.cpp",
141        "src/core/api/nat64_api.cpp",
142        "src/core/api/netdata_api.cpp",
143        "src/core/api/netdata_publisher_api.cpp",
144        "src/core/api/netdiag_api.cpp",
145        "src/core/api/network_time_api.cpp",
146        "src/core/api/ping_sender_api.cpp",
147        "src/core/api/radio_stats_api.cpp",
148        "src/core/api/random_crypto_api.cpp",
149        "src/core/api/random_noncrypto_api.cpp",
150        "src/core/api/server_api.cpp",
151        "src/core/api/sntp_api.cpp",
152        "src/core/api/srp_client_api.cpp",
153        "src/core/api/srp_client_buffers_api.cpp",
154        "src/core/api/srp_server_api.cpp",
155        "src/core/api/tasklet_api.cpp",
156        "src/core/api/tcp_api.cpp",
157        "src/core/api/tcp_ext_api.cpp",
158        "src/core/api/thread_api.cpp",
159        "src/core/api/thread_ftd_api.cpp",
160        "src/core/api/trel_api.cpp",
161        "src/core/api/udp_api.cpp",
162        "src/core/api/verhoeff_checksum_api.cpp",
163        "src/core/backbone_router/backbone_tmf.cpp",
164        "src/core/backbone_router/bbr_leader.cpp",
165        "src/core/backbone_router/bbr_local.cpp",
166        "src/core/backbone_router/bbr_manager.cpp",
167        "src/core/backbone_router/multicast_listeners_table.cpp",
168        "src/core/backbone_router/ndproxy_table.cpp",
169        "src/core/border_router/infra_if.cpp",
170        "src/core/border_router/routing_manager.cpp",
171        "src/core/coap/coap.cpp",
172        "src/core/coap/coap_message.cpp",
173        "src/core/coap/coap_secure.cpp",
174        "src/core/common/appender.cpp",
175        "src/core/common/binary_search.cpp",
176        "src/core/common/crc16.cpp",
177        "src/core/common/data.cpp",
178        "src/core/common/error.cpp",
179        "src/core/common/frame_builder.cpp",
180        "src/core/common/frame_data.cpp",
181        "src/core/common/heap.cpp",
182        "src/core/common/heap_data.cpp",
183        "src/core/common/heap_string.cpp",
184        "src/core/common/log.cpp",
185        "src/core/common/message.cpp",
186        "src/core/common/notifier.cpp",
187        "src/core/common/offset_range.cpp",
188        "src/core/common/preference.cpp",
189        "src/core/common/random.cpp",
190        "src/core/common/settings.cpp",
191        "src/core/common/string.cpp",
192        "src/core/common/tasklet.cpp",
193        "src/core/common/time_ticker.cpp",
194        "src/core/common/timer.cpp",
195        "src/core/common/tlvs.cpp",
196        "src/core/common/trickle_timer.cpp",
197        "src/core/common/uptime.cpp",
198        "src/core/crypto/aes_ccm.cpp",
199        "src/core/crypto/aes_ecb.cpp",
200        "src/core/crypto/crypto_platform.cpp",
201        "src/core/crypto/hkdf_sha256.cpp",
202        "src/core/crypto/hmac_sha256.cpp",
203        "src/core/crypto/mbedtls.cpp",
204        "src/core/crypto/sha256.cpp",
205        "src/core/crypto/storage.cpp",
206        "src/core/diags/factory_diags.cpp",
207        "src/core/instance/instance.cpp",
208        "src/core/mac/channel_mask.cpp",
209        "src/core/mac/data_poll_handler.cpp",
210        "src/core/mac/data_poll_sender.cpp",
211        "src/core/mac/link_raw.cpp",
212        "src/core/mac/mac.cpp",
213        "src/core/mac/mac_filter.cpp",
214        "src/core/mac/mac_frame.cpp",
215        "src/core/mac/mac_links.cpp",
216        "src/core/mac/mac_types.cpp",
217        "src/core/mac/sub_mac.cpp",
218        "src/core/mac/sub_mac_callbacks.cpp",
219        "src/core/meshcop/announce_begin_client.cpp",
220        "src/core/meshcop/border_agent.cpp",
221        "src/core/meshcop/commissioner.cpp",
222        "src/core/meshcop/dataset.cpp",
223        "src/core/meshcop/dataset_manager.cpp",
224        "src/core/meshcop/dataset_manager_ftd.cpp",
225        "src/core/meshcop/dataset_updater.cpp",
226        "src/core/meshcop/energy_scan_client.cpp",
227        "src/core/meshcop/extended_panid.cpp",
228        "src/core/meshcop/joiner.cpp",
229        "src/core/meshcop/joiner_router.cpp",
230        "src/core/meshcop/meshcop.cpp",
231        "src/core/meshcop/meshcop_leader.cpp",
232        "src/core/meshcop/meshcop_tlvs.cpp",
233        "src/core/meshcop/network_name.cpp",
234        "src/core/meshcop/panid_query_client.cpp",
235        "src/core/meshcop/secure_transport.cpp",
236        "src/core/meshcop/timestamp.cpp",
237        "src/core/net/checksum.cpp",
238        "src/core/net/dhcp6_client.cpp",
239        "src/core/net/dhcp6_server.cpp",
240        "src/core/net/dns_client.cpp",
241        "src/core/net/dns_dso.cpp",
242        "src/core/net/dns_platform.cpp",
243        "src/core/net/dns_types.cpp",
244        "src/core/net/dnssd_server.cpp",
245        "src/core/net/icmp6.cpp",
246        "src/core/net/ip4_types.cpp",
247        "src/core/net/ip6.cpp",
248        "src/core/net/ip6_address.cpp",
249        "src/core/net/ip6_filter.cpp",
250        "src/core/net/ip6_headers.cpp",
251        "src/core/net/ip6_mpl.cpp",
252        "src/core/net/nat64_translator.cpp",
253        "src/core/net/nd6.cpp",
254        "src/core/net/nd_agent.cpp",
255        "src/core/net/netif.cpp",
256        "src/core/net/sntp_client.cpp",
257        "src/core/net/socket.cpp",
258        "src/core/net/srp_client.cpp",
259        "src/core/net/srp_server.cpp",
260        "src/core/net/tcp6.cpp",
261        "src/core/net/tcp6_ext.cpp",
262        "src/core/net/udp6.cpp",
263        "src/core/radio/radio.cpp",
264        "src/core/radio/radio_callbacks.cpp",
265        "src/core/radio/radio_platform.cpp",
266        "src/core/radio/trel_interface.cpp",
267        "src/core/radio/trel_link.cpp",
268        "src/core/radio/trel_packet.cpp",
269        "src/core/thread/address_resolver.cpp",
270        "src/core/thread/announce_begin_server.cpp",
271        "src/core/thread/announce_sender.cpp",
272        "src/core/thread/anycast_locator.cpp",
273        "src/core/thread/child.cpp",
274        "src/core/thread/child_supervision.cpp",
275        "src/core/thread/child_table.cpp",
276        "src/core/thread/csl_tx_scheduler.cpp",
277        "src/core/thread/discover_scanner.cpp",
278        "src/core/thread/dua_manager.cpp",
279        "src/core/thread/energy_scan_server.cpp",
280        "src/core/thread/indirect_sender.cpp",
281        "src/core/thread/key_manager.cpp",
282        "src/core/thread/link_metrics.cpp",
283        "src/core/thread/link_metrics_types.cpp",
284        "src/core/thread/link_quality.cpp",
285        "src/core/thread/lowpan.cpp",
286        "src/core/thread/mesh_forwarder.cpp",
287        "src/core/thread/mesh_forwarder_ftd.cpp",
288        "src/core/thread/mesh_forwarder_mtd.cpp",
289        "src/core/thread/mle.cpp",
290        "src/core/thread/mle_router.cpp",
291        "src/core/thread/mle_tlvs.cpp",
292        "src/core/thread/mle_types.cpp",
293        "src/core/thread/mlr_manager.cpp",
294        "src/core/thread/neighbor.cpp",
295        "src/core/thread/neighbor_table.cpp",
296        "src/core/thread/network_data.cpp",
297        "src/core/thread/network_data_leader.cpp",
298        "src/core/thread/network_data_leader_ftd.cpp",
299        "src/core/thread/network_data_local.cpp",
300        "src/core/thread/network_data_notifier.cpp",
301        "src/core/thread/network_data_publisher.cpp",
302        "src/core/thread/network_data_service.cpp",
303        "src/core/thread/network_data_tlvs.cpp",
304        "src/core/thread/network_data_types.cpp",
305        "src/core/thread/network_diagnostic.cpp",
306        "src/core/thread/network_diagnostic_tlvs.cpp",
307        "src/core/thread/panid_query_server.cpp",
308        "src/core/thread/radio_selector.cpp",
309        "src/core/thread/router.cpp",
310        "src/core/thread/router_table.cpp",
311        "src/core/thread/src_match_controller.cpp",
312        "src/core/thread/thread_netif.cpp",
313        "src/core/thread/time_sync_service.cpp",
314        "src/core/thread/tmf.cpp",
315        "src/core/thread/uri_paths.cpp",
316        "src/core/utils/channel_manager.cpp",
317        "src/core/utils/channel_monitor.cpp",
318        "src/core/utils/flash.cpp",
319        "src/core/utils/heap.cpp",
320        "src/core/utils/history_tracker.cpp",
321        "src/core/utils/jam_detector.cpp",
322        "src/core/utils/mesh_diag.cpp",
323        "src/core/utils/otns.cpp",
324        "src/core/utils/parse_cmdline.cpp",
325        "src/core/utils/ping_sender.cpp",
326        "src/core/utils/power_calibration.cpp",
327        "src/core/utils/slaac_address.cpp",
328        "src/core/utils/srp_client_buffers.cpp",
329        "src/core/utils/verhoeff_checksum.cpp",
330    ],
331}
332
333filegroup {
334    name: "openthread_cli_srcs",
335    srcs: [
336        "src/cli/cli.cpp",
337        "src/cli/cli_bbr.cpp",
338        "src/cli/cli_br.cpp",
339        "src/cli/cli_coap.cpp",
340        "src/cli/cli_coap_secure.cpp",
341        "src/cli/cli_commissioner.cpp",
342        "src/cli/cli_dataset.cpp",
343        "src/cli/cli_dns.cpp",
344        "src/cli/cli_history.cpp",
345        "src/cli/cli_joiner.cpp",
346        "src/cli/cli_link_metrics.cpp",
347        "src/cli/cli_mac_filter.cpp",
348        "src/cli/cli_network_data.cpp",
349        "src/cli/cli_ping.cpp",
350        "src/cli/cli_srp_client.cpp",
351        "src/cli/cli_srp_server.cpp",
352        "src/cli/cli_tcp.cpp",
353        "src/cli/cli_udp.cpp",
354        "src/cli/cli_utils.cpp",
355    ],
356}
357
358filegroup {
359    name: "openthread_ncp_srcs",
360    srcs: [
361        "src/ncp/changed_props_set.cpp",
362        "src/ncp/ncp_base.cpp",
363        "src/ncp/ncp_base_dispatcher.cpp",
364        "src/ncp/ncp_base_radio.cpp",
365        "src/ncp/ncp_spi.cpp",
366        "src/ncp/ncp_hdlc.cpp",
367    ],
368}
369
370filegroup {
371    name: "openthread_simulation_srcs",
372    srcs: [
373        "examples/platforms/simulation/alarm.c",
374        "examples/platforms/simulation/crypto.c",
375        "examples/platforms/simulation/diag.c",
376        "examples/platforms/simulation/entropy.c",
377        "examples/platforms/simulation/flash.c",
378        "examples/platforms/simulation/infra_if.c",
379        "examples/platforms/simulation/misc.c",
380        "examples/platforms/simulation/radio.c",
381        "examples/platforms/simulation/simul_utils.c",
382        "examples/platforms/simulation/spi-stubs.c",
383        "examples/platforms/simulation/system.c",
384        "examples/platforms/simulation/trel.c",
385        "examples/platforms/simulation/uart.c",
386        "examples/platforms/utils/link_metrics.cpp",
387        "examples/platforms/utils/mac_frame.cpp",
388        "examples/platforms/utils/settings_ram.c",
389        "examples/platforms/utils/soft_source_match_table.c",
390        "src/android/logging.c",
391    ],
392}
393
394filegroup {
395    name: "openthread_mbedtls_srcs",
396    srcs: [
397        "third_party/mbedtls/repo/library/aes.c",
398        "third_party/mbedtls/repo/library/asn1parse.c",
399        "third_party/mbedtls/repo/library/asn1write.c",
400        "third_party/mbedtls/repo/library/base64.c",
401        "third_party/mbedtls/repo/library/bignum_core.c",
402        "third_party/mbedtls/repo/library/bignum.c",
403        "third_party/mbedtls/repo/library/ccm.c",
404        "third_party/mbedtls/repo/library/cipher.c",
405        "third_party/mbedtls/repo/library/cipher_wrap.c",
406        "third_party/mbedtls/repo/library/cmac.c",
407        "third_party/mbedtls/repo/library/constant_time.c",
408        "third_party/mbedtls/repo/library/ctr_drbg.c",
409        "third_party/mbedtls/repo/library/debug.c",
410        "third_party/mbedtls/repo/library/ecdh.c",
411        "third_party/mbedtls/repo/library/ecdsa.c",
412        "third_party/mbedtls/repo/library/ecjpake.c",
413        "third_party/mbedtls/repo/library/ecp.c",
414        "third_party/mbedtls/repo/library/ecp_curves.c",
415        "third_party/mbedtls/repo/library/entropy.c",
416        "third_party/mbedtls/repo/library/entropy_poll.c",
417        "third_party/mbedtls/repo/library/hmac_drbg.c",
418        "third_party/mbedtls/repo/library/md.c",
419        "third_party/mbedtls/repo/library/memory_buffer_alloc.c",
420        "third_party/mbedtls/repo/library/oid.c",
421        "third_party/mbedtls/repo/library/pem.c",
422        "third_party/mbedtls/repo/library/pk.c",
423        "third_party/mbedtls/repo/library/pk_ecc.c",
424        "third_party/mbedtls/repo/library/pk_wrap.c",
425        "third_party/mbedtls/repo/library/pkparse.c",
426        "third_party/mbedtls/repo/library/pkwrite.c",
427        "third_party/mbedtls/repo/library/platform.c",
428        "third_party/mbedtls/repo/library/platform_util.c",
429        "third_party/mbedtls/repo/library/sha256.c",
430        "third_party/mbedtls/repo/library/ssl_ciphersuites.c",
431        "third_party/mbedtls/repo/library/ssl_client.c",
432        "third_party/mbedtls/repo/library/ssl_cookie.c",
433        "third_party/mbedtls/repo/library/ssl_msg.c",
434        "third_party/mbedtls/repo/library/ssl_ticket.c",
435        "third_party/mbedtls/repo/library/ssl_tls.c",
436        "third_party/mbedtls/repo/library/ssl_tls12_client.c",
437        "third_party/mbedtls/repo/library/ssl_tls12_server.c",
438        "third_party/mbedtls/repo/library/ssl_tls13_client.c",
439        "third_party/mbedtls/repo/library/threading.c",
440        "third_party/mbedtls/repo/library/x509.c",
441        "third_party/mbedtls/repo/library/x509_crt.c",
442    ],
443}
444
445filegroup {
446    name: "openthread_platform_posix_srcs",
447    srcs: [
448        "src/android/logging.c",
449        "src/posix/platform/alarm.cpp",
450        "src/posix/platform/backtrace.cpp",
451        "src/posix/platform/configuration.cpp",
452        "src/posix/platform/config_file.cpp",
453        "src/posix/platform/daemon.cpp",
454        "src/posix/platform/entropy.cpp",
455        "src/posix/platform/firewall.cpp",
456        "src/posix/platform/hdlc_interface.cpp",
457        "src/posix/platform/infra_if.cpp",
458        "src/posix/platform/mainloop.cpp",
459        "src/posix/platform/memory.cpp",
460        "src/posix/platform/misc.cpp",
461        "src/posix/platform/multicast_routing.cpp",
462        "src/posix/platform/netif.cpp",
463        "src/posix/platform/power.cpp",
464        "src/posix/platform/radio.cpp",
465        "src/posix/platform/radio_url.cpp",
466        "src/posix/platform/rcp_caps_diag.cpp",
467        "src/posix/platform/resolver.cpp",
468        "src/posix/platform/settings.cpp",
469        "src/posix/platform/spi_interface.cpp",
470        "src/posix/platform/spinel_manager.cpp",
471        "src/posix/platform/system.cpp",
472        "src/posix/platform/trel.cpp",
473        "src/posix/platform/udp.cpp",
474        "src/posix/platform/utils.cpp",
475    ],
476}
477
478cc_library_static {
479    name: "ot-core",
480    apex_available: ["com.android.tethering"],
481    min_sdk_version: "30",
482    defaults: [
483        "ot-daemon-debuggable-cc-defaults",
484        "ot_posix_cflags_defaults",
485    ],
486    generated_headers: ["ot_version_header"],
487
488    local_include_dirs: [
489        "include",
490        "src",
491        "src/android/thread_network_hal",
492        "src/cli",
493        "src/core",
494        "src/ncp",
495        "src/posix/platform",
496        "src/posix/platform/include",
497        "third_party",
498        "third_party/mbedtls",
499        "third_party/mbedtls/repo/include",
500    ],
501
502    export_include_dirs: [
503        "include",
504        "src",
505    ],
506
507    cppflags: [
508        "-pedantic-errors",
509        "-Wno-non-virtual-dtor",
510        // Background: the HAL client implementation requires features which
511        // are available on only 31+, but the Tethering module requires the
512        // ot-daemon binary to support 30+.
513        // It's safe to suppress this warning because ot-daemon will never
514        // run below Android U (34).
515        "-Wno-unguarded-availability",
516        "-Wno-c99-extensions",
517    ],
518
519    vintf_fragments: ["src/android/thread_network_hal/device_manifest.xml"],
520    shared_libs: [
521        "libbase",
522        "libcutils",
523        "libutils",
524        "libbinder_ndk",
525        "android.hardware.threadnetwork-V1-ndk",
526    ],
527
528    srcs: [
529        ":openthread_core_srcs",
530        ":openthread_mbedtls_srcs",
531        ":openthread_platform_posix_srcs",
532        "src/android/thread_network_hal/hal_interface.cpp",
533        "src/android/thread_network_hal/vendor_interface.cpp",
534        "src/lib/hdlc/hdlc.cpp",
535        "src/lib/platform/exit_code.c",
536        "src/lib/spinel/logger.cpp",
537        "src/lib/spinel/radio_spinel.cpp",
538        "src/lib/spinel/spinel_buffer.cpp",
539        "src/lib/spinel/spinel_decoder.cpp",
540        "src/lib/spinel/spinel_driver.cpp",
541        "src/lib/spinel/spinel_encoder.cpp",
542        "src/lib/spinel/spinel_helper.cpp",
543        "src/lib/spinel/spinel.c",
544        "src/lib/url/url.cpp",
545    ],
546}
547
548cc_library_static {
549    name: "libopenthread-cli",
550    apex_available: ["com.android.tethering"],
551    min_sdk_version: "30",
552    defaults: [
553        "ot-daemon-debuggable-cc-defaults",
554        "ot_posix_cflags_defaults",
555    ],
556    generated_headers: ["ot_version_header"],
557
558    local_include_dirs: [
559        "include",
560        "src",
561        "src/cli",
562        "src/core",
563        "src/posix/platform",
564        "src/posix/platform/include",
565        "third_party/mbedtls",
566        "third_party/mbedtls/repo/include",
567    ],
568
569    cflags: [
570        "-DOPENTHREAD_CONFIG_CLI_UART_TX_BUFFER_SIZE=3500",
571        "-DOPENTHREAD_CONFIG_CLI_UART_RX_BUFFER_SIZE=3500",
572        "-DOPENTHREAD_CONFIG_UART_CLI_RAW=1",
573    ],
574
575    cppflags: [
576        "-std=c++11",
577        "-pedantic-errors",
578        "-Wno-c99-extensions",
579    ],
580
581    srcs: [
582        "src/cli/cli.cpp",
583        "src/cli/cli_bbr.cpp",
584        "src/cli/cli_br.cpp",
585        "src/cli/cli_coap.cpp",
586        "src/cli/cli_coap_secure.cpp",
587        "src/cli/cli_commissioner.cpp",
588        "src/cli/cli_dataset.cpp",
589        "src/cli/cli_dns.cpp",
590        "src/cli/cli_history.cpp",
591        "src/cli/cli_joiner.cpp",
592        "src/cli/cli_link_metrics.cpp",
593        "src/cli/cli_mac_filter.cpp",
594        "src/cli/cli_network_data.cpp",
595        "src/cli/cli_ping.cpp",
596        "src/cli/cli_srp_client.cpp",
597        "src/cli/cli_srp_server.cpp",
598        "src/cli/cli_tcp.cpp",
599        "src/cli/cli_udp.cpp",
600        "src/cli/cli_utils.cpp",
601    ],
602}
603
604cc_binary {
605    name: "ot-ctl",
606    defaults: ["ot_posix_cflags_defaults"],
607    generated_headers: ["ot_version_header"],
608
609    cppflags: [
610        "-pedantic-errors",
611    ],
612
613    local_include_dirs: [
614        "include",
615        "src/",
616        "src/core",
617        "src/posix/platform",
618        "src/posix/platform/include",
619    ],
620
621    srcs: ["src/posix/client.cpp"],
622}
623
624cc_defaults {
625    name: "ot_rcp_cflags_defaults",
626    cflags: [
627        "-DOPENTHREAD_RADIO=1",
628    ],
629}
630
631cc_defaults {
632    name: "ot_simulation_cflags_defaults",
633
634    local_include_dirs: [
635        "examples/platforms/simulation",
636        "examples/platforms",
637        "include",
638        "src",
639        "src/cli",
640        "src/core",
641        "src/ncp",
642        "src/lib/hdlc",
643        "third_party",
644        "third_party/mbedtls",
645        "third_party/mbedtls/repo/include",
646    ],
647
648    export_include_dirs: [
649        "include",
650        "src",
651    ],
652
653    cflags: [
654        "-DMBEDTLS_CONFIG_FILE=\"mbedtls-config.h\"",
655        "-DOPENTHREAD_CONFIG_ANDROID_VERSION_HEADER_ENABLE=1",
656        "-DOPENTHREAD_CONFIG_DIAG_ENABLE=1",
657        "-DOPENTHREAD_CONFIG_DNS_CLIENT_ENABLE=1",
658        "-DOPENTHREAD_CONFIG_ECDSA_ENABLE=1",
659        "-DOPENTHREAD_CONFIG_FILE=\"openthread-config-android-version.h\"",
660        "-DOPENTHREAD_CONFIG_LOG_LEVEL_DYNAMIC_ENABLE=1",
661        "-DOPENTHREAD_CONFIG_MAC_FILTER_ENABLE=1",
662        "-DOPENTHREAD_CONFIG_MLR_ENABLE=1",
663        "-DOPENTHREAD_CONFIG_NCP_HDLC_ENABLE=1",
664        "-DOPENTHREAD_CONFIG_PING_SENDER_ENABLE=1",
665        "-DOPENTHREAD_CONFIG_SRP_CLIENT_ENABLE=1",
666        "-DOPENTHREAD_CONFIG_PLATFORM_FLASH_API_ENABLE=0",
667        "-DOPENTHREAD_EXAMPLES_SIMULATION=1",
668        "-DOPENTHREAD_CONFIG_TCP_ENABLE=0",
669        "-DOPENTHREAD_PROJECT_CORE_CONFIG_FILE=\"examples/platforms/simulation/openthread-core-simulation-config.h\"",
670        "-DOPENTHREAD_SETTINGS_RAM=1",
671        "-DOPENTHREAD_SIMULATION_MAX_NETWORK_SIZE=128",
672        "-DPACKAGE=\"openthread\"",
673        "-DPACKAGE_BUGREPORT=\"[email protected]\"",
674        "-DPACKAGE_NAME=\"OPENTHREAD\"",
675        "-DPACKAGE_TARNAME=\"openthread\"",
676        "-DPACKAGE_URL=\"http://github.com/openthread/openthread\"",
677        "-DSPINEL_PLATFORM_HEADER=\"spinel_platform.h\"",
678        "-Wno-implicit-fallthrough",
679    ],
680}
681
682cc_library_static {
683    name: "openthread-simulation",
684    vendor_available: true,
685
686    defaults: [
687        "ot_rcp_cflags_defaults",
688        "ot_simulation_cflags_defaults",
689    ],
690
691    static_libs: [
692        "libutils",
693    ],
694
695    srcs: [
696        ":openthread_simulation_srcs",
697        "src/lib/platform/exit_code.c",
698        "third_party/mbedtls/repo/library/aes.c",
699        "third_party/mbedtls/repo/library/asn1parse.c",
700        "third_party/mbedtls/repo/library/asn1write.c",
701        "third_party/mbedtls/repo/library/base64.c",
702        "third_party/mbedtls/repo/library/bignum_core.c",
703        "third_party/mbedtls/repo/library/bignum.c",
704        "third_party/mbedtls/repo/library/ccm.c",
705        "third_party/mbedtls/repo/library/cipher.c",
706        "third_party/mbedtls/repo/library/cipher_wrap.c",
707        "third_party/mbedtls/repo/library/cmac.c",
708        "third_party/mbedtls/repo/library/ctr_drbg.c",
709        "third_party/mbedtls/repo/library/debug.c",
710        "third_party/mbedtls/repo/library/entropy.c",
711        "third_party/mbedtls/repo/library/entropy_poll.c",
712        "third_party/mbedtls/repo/library/hmac_drbg.c",
713        "third_party/mbedtls/repo/library/md.c",
714        "third_party/mbedtls/repo/library/memory_buffer_alloc.c",
715        "third_party/mbedtls/repo/library/oid.c",
716        "third_party/mbedtls/repo/library/platform.c",
717        "third_party/mbedtls/repo/library/platform_util.c",
718        "third_party/mbedtls/repo/library/sha256.c",
719    ],
720
721    cflags: [
722        "-D_BSD_SOURCE=1",
723        "-D_DEFAULT_SOURCE=1",
724    ],
725}
726
727cc_library_static {
728    name: "openthread-radio",
729    vendor_available: true,
730
731    defaults: [
732        "ot_rcp_cflags_defaults",
733        "ot_simulation_cflags_defaults",
734    ],
735
736    generated_headers: ["ot_version_header"],
737    shared_libs: [
738        "libcutils",
739    ],
740
741    srcs: [
742        "src/core/api/diags_api.cpp",
743        "src/core/api/error_api.cpp",
744        "src/core/api/instance_api.cpp",
745        "src/core/api/link_raw_api.cpp",
746        "src/core/api/logging_api.cpp",
747        "src/core/api/random_noncrypto_api.cpp",
748        "src/core/api/tasklet_api.cpp",
749        "src/core/common/binary_search.cpp",
750        "src/core/common/error.cpp",
751        "src/core/common/frame_builder.cpp",
752        "src/core/common/log.cpp",
753        "src/core/common/random.cpp",
754        "src/core/common/string.cpp",
755        "src/core/common/tasklet.cpp",
756        "src/core/common/timer.cpp",
757        "src/core/common/uptime.cpp",
758        "src/core/crypto/aes_ccm.cpp",
759        "src/core/crypto/aes_ecb.cpp",
760        "src/core/crypto/crypto_platform.cpp",
761        "src/core/crypto/storage.cpp",
762        "src/core/diags/factory_diags.cpp",
763        "src/core/instance/instance.cpp",
764        "src/core/mac/link_raw.cpp",
765        "src/core/mac/mac_frame.cpp",
766        "src/core/mac/mac_types.cpp",
767        "src/core/mac/sub_mac.cpp",
768        "src/core/mac/sub_mac_callbacks.cpp",
769        "src/core/radio/radio.cpp",
770        "src/core/radio/radio_callbacks.cpp",
771        "src/core/radio/radio_platform.cpp",
772        "src/core/thread/link_quality.cpp",
773        "src/core/utils/parse_cmdline.cpp",
774        "src/core/utils/power_calibration.cpp",
775    ],
776}
777
778cc_library_static {
779    name: "openthread-hdlc",
780    vendor_available: true,
781    defaults: [
782        "ot_rcp_cflags_defaults",
783        "ot_simulation_cflags_defaults",
784    ],
785    export_include_dirs: [
786        "include",
787        "src",
788    ],
789    srcs: [
790        "src/lib/hdlc/hdlc.cpp",
791    ],
792}
793
794cc_library_static {
795    name: "openthread-spi",
796    vendor_available: true,
797    local_include_dirs: [
798        "include",
799        "src",
800        "src/core",
801        "src/lib/platform",
802        "src/posix/platform",
803        "src/posix/platform/include",
804    ],
805    export_include_dirs: [
806        "include",
807        "src/core",
808        "src/posix/platform",
809        "src/posix/platform/include",
810    ],
811
812    cflags: [
813        "-DOPENTHREAD_POSIX_CONFIG_SPINEL_SPI_INTERFACE_ENABLE=1",
814    ],
815
816    srcs: [
817        "src/posix/platform/spi_interface.cpp",
818    ],
819}
820
821cc_library_static {
822    name: "openthread-url",
823    vendor_available: true,
824    local_include_dirs: [
825        "include",
826        "src",
827        "src/core",
828        "src/lib/url",
829    ],
830    export_include_dirs: [
831        "include",
832        "src",
833    ],
834    srcs: [
835        "src/lib/url/url.cpp",
836    ],
837}
838
839cc_library_static {
840    name: "openthread-platform",
841    vendor_available: true,
842    local_include_dirs: [
843        "include",
844        "src",
845        "src/core",
846        "src/lib/platform",
847    ],
848    export_include_dirs: [
849        "include",
850        "src",
851    ],
852    srcs: [
853        "src/lib/platform/exit_code.c",
854    ],
855}
856
857cc_library_static {
858    name: "openthread-spinel-rcp",
859    vendor_available: true,
860
861    defaults: [
862        "ot_rcp_cflags_defaults",
863        "ot_simulation_cflags_defaults",
864    ],
865
866    export_include_dirs: [
867        "include",
868        "src",
869    ],
870
871    srcs: [
872        "src/lib/spinel/radio_spinel.cpp",
873        "src/lib/spinel/spinel.c",
874        "src/lib/spinel/spinel_buffer.cpp",
875        "src/lib/spinel/spinel_decoder.cpp",
876        "src/lib/spinel/spinel_driver.cpp",
877        "src/lib/spinel/spinel_encoder.cpp",
878    ],
879}
880
881cc_library_static {
882    name: "openthread-rcp",
883    vendor_available: true,
884
885    defaults: [
886        "ot_rcp_cflags_defaults",
887        "ot_simulation_cflags_defaults",
888    ],
889
890    srcs: [
891        "src/ncp/changed_props_set.cpp",
892        "src/ncp/ncp_base.cpp",
893        "src/ncp/ncp_base_dispatcher.cpp",
894        "src/ncp/ncp_base_radio.cpp",
895        "src/ncp/ncp_spi.cpp",
896        "src/ncp/ncp_hdlc.cpp",
897    ],
898}
899
900cc_binary {
901    name: "ot-rcp",
902    vendor: true,
903    defaults: [
904        "ot_rcp_cflags_defaults",
905        "ot_simulation_cflags_defaults",
906    ],
907
908    srcs: [
909        "examples/apps/ncp/main.c",
910        "examples/apps/ncp/ncp.c",
911    ],
912
913    shared_libs: [
914        "liblog", // Required by src/android/logging.c
915    ],
916
917    static_libs: [
918        "libbase",
919        "libcutils",
920        "libutils",
921        "openthread-hdlc",
922        "openthread-radio",
923        "openthread-spinel-rcp",
924        "openthread-rcp",
925        "openthread-simulation",
926        "openthread-radio",
927    ],
928
929    stl: "c++_static",
930}
931
932cc_library_static {
933    name: "openthread-posix",
934    vendor_available: true,
935    local_include_dirs: [
936        "include",
937        "src",
938        "src/core",
939        "src/lib/platform",
940        "src/posix/platform",
941        "src/posix/platform/include",
942    ],
943    export_include_dirs: [
944        "include",
945        "src/core",
946        "src/posix/platform",
947        "src/posix/platform/include",
948    ],
949
950    cflags: [
951        "-DOPENTHREAD_POSIX_CONFIG_SPINEL_SPI_INTERFACE_ENABLE=1",
952        "-DOPENTHREAD_OSIX_CONFIG_RCP_PTY_ENABLE=1",
953    ],
954
955    cppflags: [
956        "-Wno-non-virtual-dtor",
957    ],
958
959    srcs: [
960        "src/posix/platform/alarm.cpp",
961        "src/posix/platform/mainloop.cpp",
962        "src/posix/platform/hdlc_interface.cpp",
963        "src/posix/platform/radio_url.cpp",
964        "src/posix/platform/rcp_caps_diag.cpp",
965    ],
966}
967
968cc_library_static {
969    name: "openthread-common",
970    vendor_available: true,
971    local_include_dirs: [
972        "include",
973        "src",
974        "src/core",
975    ],
976
977    export_include_dirs: [
978        "include",
979        "src/core",
980    ],
981
982    srcs: [
983        "src/core/common/error.cpp",
984        "src/core/api/error_api.cpp",
985    ],
986}
987
988cc_binary {
989    name: "ot-cli-ftd",
990    defaults: [
991        "ot_simulation_cflags_defaults",
992    ],
993
994    cflags: [
995        "-DOPENTHREAD_FTD=1",
996        "-DOPENTHREAD_CONFIG_POSIX_SETTINGS_PATH=\"/data/vendor/threadnetwork/simulation\"",
997    ],
998
999    srcs: [
1000        ":openthread_core_srcs",
1001        ":openthread_simulation_srcs",
1002        ":openthread_cli_srcs",
1003        ":openthread_mbedtls_srcs",
1004        "examples/apps/cli/cli_uart.cpp",
1005        "examples/apps/cli/main.c",
1006    ],
1007
1008    static_libs: [
1009        "openthread-platform",
1010    ],
1011
1012    shared_libs: [
1013        "libcutils", // Required by src/core/instance_api.cpp
1014        "liblog", // Required by src/android/logging.c
1015    ],
1016}
1017