1*cfb92d14SAndroid Build Coastguard Worker# 2*cfb92d14SAndroid Build Coastguard Worker# Copyright (c) 2020, The OpenThread Authors. 3*cfb92d14SAndroid Build Coastguard Worker# All rights reserved. 4*cfb92d14SAndroid Build Coastguard Worker# 5*cfb92d14SAndroid Build Coastguard Worker# Redistribution and use in source and binary forms, with or without 6*cfb92d14SAndroid Build Coastguard Worker# modification, are permitted provided that the following conditions are met: 7*cfb92d14SAndroid Build Coastguard Worker# 1. Redistributions of source code must retain the above copyright 8*cfb92d14SAndroid Build Coastguard Worker# notice, this list of conditions and the following disclaimer. 9*cfb92d14SAndroid Build Coastguard Worker# 2. Redistributions in binary form must reproduce the above copyright 10*cfb92d14SAndroid Build Coastguard Worker# notice, this list of conditions and the following disclaimer in the 11*cfb92d14SAndroid Build Coastguard Worker# documentation and/or other materials provided with the distribution. 12*cfb92d14SAndroid Build Coastguard Worker# 3. Neither the name of the copyright holder nor the 13*cfb92d14SAndroid Build Coastguard Worker# names of its contributors may be used to endorse or promote products 14*cfb92d14SAndroid Build Coastguard Worker# derived from this software without specific prior written permission. 15*cfb92d14SAndroid Build Coastguard Worker# 16*cfb92d14SAndroid Build Coastguard Worker# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 17*cfb92d14SAndroid Build Coastguard Worker# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18*cfb92d14SAndroid Build Coastguard Worker# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19*cfb92d14SAndroid Build Coastguard Worker# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 20*cfb92d14SAndroid Build Coastguard Worker# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21*cfb92d14SAndroid Build Coastguard Worker# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22*cfb92d14SAndroid Build Coastguard Worker# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 23*cfb92d14SAndroid Build Coastguard Worker# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 24*cfb92d14SAndroid Build Coastguard Worker# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 25*cfb92d14SAndroid Build Coastguard Worker# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26*cfb92d14SAndroid Build Coastguard Worker# POSSIBILITY OF SUCH DAMAGE. 27*cfb92d14SAndroid Build Coastguard Worker# 28*cfb92d14SAndroid Build Coastguard Worker 29*cfb92d14SAndroid Build Coastguard Workerset(COMMON_INCLUDES 30*cfb92d14SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/include 31*cfb92d14SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src 32*cfb92d14SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/core 33*cfb92d14SAndroid Build Coastguard Worker) 34*cfb92d14SAndroid Build Coastguard Worker 35*cfb92d14SAndroid Build Coastguard Workerset(COMMON_INCLUDES_RCP 36*cfb92d14SAndroid Build Coastguard Worker ${COMMON_INCLUDES} 37*cfb92d14SAndroid Build Coastguard Worker ${PROJECT_SOURCE_DIR}/src/core/radio 38*cfb92d14SAndroid Build Coastguard Worker) 39*cfb92d14SAndroid Build Coastguard Worker 40*cfb92d14SAndroid Build Coastguard Workerset(COMMON_COMPILE_OPTIONS 41*cfb92d14SAndroid Build Coastguard Worker -DOPENTHREAD_FTD=1 42*cfb92d14SAndroid Build Coastguard Worker -DOPENTHREAD_MTD=0 43*cfb92d14SAndroid Build Coastguard Worker -DOPENTHREAD_RADIO=0 44*cfb92d14SAndroid Build Coastguard Worker -DOPENTHREAD_SPINEL_CONFIG_OPENTHREAD_MESSAGE_ENABLE=1 45*cfb92d14SAndroid Build Coastguard Worker) 46*cfb92d14SAndroid Build Coastguard Worker 47*cfb92d14SAndroid Build Coastguard Workerset(COMMON_COMPILE_OPTIONS_RCP 48*cfb92d14SAndroid Build Coastguard Worker -DOPENTHREAD_FTD=0 49*cfb92d14SAndroid Build Coastguard Worker -DOPENTHREAD_MTD=0 50*cfb92d14SAndroid Build Coastguard Worker -DOPENTHREAD_RADIO=1 51*cfb92d14SAndroid Build Coastguard Worker -DOPENTHREAD_SPINEL_CONFIG_OPENTHREAD_MESSAGE_ENABLE=1 52*cfb92d14SAndroid Build Coastguard Worker -DOPENTHREAD_CONFIG_PLATFORM_UDP_ENABLE=0 53*cfb92d14SAndroid Build Coastguard Worker) 54*cfb92d14SAndroid Build Coastguard Worker 55*cfb92d14SAndroid Build Coastguard Workerset(MULTIPAN_RCP_COMPILE_OPTIONS 56*cfb92d14SAndroid Build Coastguard Worker -DOPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE=1 57*cfb92d14SAndroid Build Coastguard Worker -DOPENTHREAD_CONFIG_MULTIPLE_STATIC_INSTANCE_ENABLE=1 58*cfb92d14SAndroid Build Coastguard Worker -DOPENTHREAD_CONFIG_LOG_PREPEND_UPTIME=0 59*cfb92d14SAndroid Build Coastguard Worker -DOPENTHREAD_CONFIG_MAC_SOFTWARE_CSMA_BACKOFF_ENABLE=0 # used to skip backoff and request tx from platform directly. 60*cfb92d14SAndroid Build Coastguard Worker -DOPENTHREAD_CONFIG_MULTIPAN_RCP_ENABLE=1 61*cfb92d14SAndroid Build Coastguard Worker) 62*cfb92d14SAndroid Build Coastguard Worker 63*cfb92d14SAndroid Build Coastguard Workeradd_library(ot-test-platform-ftd 64*cfb92d14SAndroid Build Coastguard Worker test_platform.cpp 65*cfb92d14SAndroid Build Coastguard Worker test_util.cpp 66*cfb92d14SAndroid Build Coastguard Worker) 67*cfb92d14SAndroid Build Coastguard Workeradd_library(ot-test-platform-rcp 68*cfb92d14SAndroid Build Coastguard Worker test_platform.cpp 69*cfb92d14SAndroid Build Coastguard Worker test_util.cpp 70*cfb92d14SAndroid Build Coastguard Worker) 71*cfb92d14SAndroid Build Coastguard Worker 72*cfb92d14SAndroid Build Coastguard Workertarget_include_directories(ot-test-platform-ftd 73*cfb92d14SAndroid Build Coastguard Worker PRIVATE 74*cfb92d14SAndroid Build Coastguard Worker ${COMMON_INCLUDES} 75*cfb92d14SAndroid Build Coastguard Worker) 76*cfb92d14SAndroid Build Coastguard Worker 77*cfb92d14SAndroid Build Coastguard Workertarget_include_directories(ot-test-platform-rcp 78*cfb92d14SAndroid Build Coastguard Worker PRIVATE 79*cfb92d14SAndroid Build Coastguard Worker ${COMMON_INCLUDES} 80*cfb92d14SAndroid Build Coastguard Worker) 81*cfb92d14SAndroid Build Coastguard Worker 82*cfb92d14SAndroid Build Coastguard Workertarget_compile_options(ot-test-platform-ftd 83*cfb92d14SAndroid Build Coastguard Worker PRIVATE 84*cfb92d14SAndroid Build Coastguard Worker ${COMMON_COMPILE_OPTIONS} 85*cfb92d14SAndroid Build Coastguard Worker) 86*cfb92d14SAndroid Build Coastguard Worker 87*cfb92d14SAndroid Build Coastguard Workertarget_compile_options(ot-test-platform-rcp 88*cfb92d14SAndroid Build Coastguard Worker PRIVATE 89*cfb92d14SAndroid Build Coastguard Worker ${COMMON_COMPILE_OPTIONS_RCP} 90*cfb92d14SAndroid Build Coastguard Worker) 91*cfb92d14SAndroid Build Coastguard Worker 92*cfb92d14SAndroid Build Coastguard Workerif(OT_MULTIPAN_RCP) 93*cfb92d14SAndroid Build Coastguard Worker target_compile_options(ot-test-platform-rcp 94*cfb92d14SAndroid Build Coastguard Worker PRIVATE 95*cfb92d14SAndroid Build Coastguard Worker "-DOPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE=1" 96*cfb92d14SAndroid Build Coastguard Worker "-DOPENTHREAD_CONFIG_MULTIPLE_STATIC_INSTANCE_ENABLE=1" 97*cfb92d14SAndroid Build Coastguard Worker "-DOPENTHREAD_CONFIG_MULTIPAN_RCP_ENABLE=1" 98*cfb92d14SAndroid Build Coastguard Worker ) 99*cfb92d14SAndroid Build Coastguard Workerendif() 100*cfb92d14SAndroid Build Coastguard Worker 101*cfb92d14SAndroid Build Coastguard Workertarget_link_libraries(ot-test-platform-ftd 102*cfb92d14SAndroid Build Coastguard Worker PRIVATE 103*cfb92d14SAndroid Build Coastguard Worker ot-config 104*cfb92d14SAndroid Build Coastguard Worker ${OT_MBEDTLS} 105*cfb92d14SAndroid Build Coastguard Worker) 106*cfb92d14SAndroid Build Coastguard Worker 107*cfb92d14SAndroid Build Coastguard Workertarget_link_libraries(ot-test-platform-rcp 108*cfb92d14SAndroid Build Coastguard Worker PRIVATE 109*cfb92d14SAndroid Build Coastguard Worker ot-config 110*cfb92d14SAndroid Build Coastguard Worker ${OT_MBEDTLS} 111*cfb92d14SAndroid Build Coastguard Worker) 112*cfb92d14SAndroid Build Coastguard Worker 113*cfb92d14SAndroid Build Coastguard Workerset(COMMON_LIBS 114*cfb92d14SAndroid Build Coastguard Worker openthread-spinel-ncp 115*cfb92d14SAndroid Build Coastguard Worker openthread-hdlc 116*cfb92d14SAndroid Build Coastguard Worker ot-test-platform-ftd 117*cfb92d14SAndroid Build Coastguard Worker openthread-ftd 118*cfb92d14SAndroid Build Coastguard Worker ot-test-platform-ftd 119*cfb92d14SAndroid Build Coastguard Worker ${OT_MBEDTLS} 120*cfb92d14SAndroid Build Coastguard Worker ot-config 121*cfb92d14SAndroid Build Coastguard Worker openthread-ftd 122*cfb92d14SAndroid Build Coastguard Worker openthread-url 123*cfb92d14SAndroid Build Coastguard Worker) 124*cfb92d14SAndroid Build Coastguard Worker 125*cfb92d14SAndroid Build Coastguard Workerset(COMMON_LIBS_RCP 126*cfb92d14SAndroid Build Coastguard Worker ot-test-platform-rcp 127*cfb92d14SAndroid Build Coastguard Worker openthread-rcp 128*cfb92d14SAndroid Build Coastguard Worker ${OT_MBEDTLS} 129*cfb92d14SAndroid Build Coastguard Worker ot-config 130*cfb92d14SAndroid Build Coastguard Worker) 131*cfb92d14SAndroid Build Coastguard Worker 132*cfb92d14SAndroid Build Coastguard Worker#---------------------------------------------------------------------------------------------------------------------- 133*cfb92d14SAndroid Build Coastguard Worker 134*cfb92d14SAndroid Build Coastguard Workermacro(ot_unit_test name) 135*cfb92d14SAndroid Build Coastguard Worker 136*cfb92d14SAndroid Build Coastguard Worker # Macro to add an OpenThread unit test. 137*cfb92d14SAndroid Build Coastguard Worker # 138*cfb92d14SAndroid Build Coastguard Worker # Unit test name will be `ot-test-{name}`. Test source file of 139*cfb92d14SAndroid Build Coastguard Worker # `test_{name}.cpp` is used. Optional extra arguments can be 140*cfb92d14SAndroid Build Coastguard Worker # passed to provide additional source files. 141*cfb92d14SAndroid Build Coastguard Worker 142*cfb92d14SAndroid Build Coastguard Worker add_executable(ot-test-${name} 143*cfb92d14SAndroid Build Coastguard Worker test_${name}.cpp ${ARGN} 144*cfb92d14SAndroid Build Coastguard Worker ) 145*cfb92d14SAndroid Build Coastguard Worker 146*cfb92d14SAndroid Build Coastguard Worker target_include_directories(ot-test-${name} 147*cfb92d14SAndroid Build Coastguard Worker PRIVATE 148*cfb92d14SAndroid Build Coastguard Worker ${COMMON_INCLUDES} 149*cfb92d14SAndroid Build Coastguard Worker ) 150*cfb92d14SAndroid Build Coastguard Worker 151*cfb92d14SAndroid Build Coastguard Worker target_link_libraries(ot-test-${name} 152*cfb92d14SAndroid Build Coastguard Worker PRIVATE 153*cfb92d14SAndroid Build Coastguard Worker ${COMMON_LIBS} 154*cfb92d14SAndroid Build Coastguard Worker ) 155*cfb92d14SAndroid Build Coastguard Worker 156*cfb92d14SAndroid Build Coastguard Worker target_compile_options(ot-test-${name} 157*cfb92d14SAndroid Build Coastguard Worker PRIVATE 158*cfb92d14SAndroid Build Coastguard Worker ${COMMON_COMPILE_OPTIONS} 159*cfb92d14SAndroid Build Coastguard Worker ) 160*cfb92d14SAndroid Build Coastguard Worker 161*cfb92d14SAndroid Build Coastguard Worker add_test(NAME ot-test-${name} COMMAND ot-test-${name}) 162*cfb92d14SAndroid Build Coastguard Workerendmacro() 163*cfb92d14SAndroid Build Coastguard Worker 164*cfb92d14SAndroid Build Coastguard Worker#---------------------------------------------------------------------------------------------------------------------- 165*cfb92d14SAndroid Build Coastguard Worker# Unit tests 166*cfb92d14SAndroid Build Coastguard Worker 167*cfb92d14SAndroid Build Coastguard Workerot_unit_test(address_sanitizer) 168*cfb92d14SAndroid Build Coastguard Workerot_unit_test(aes) 169*cfb92d14SAndroid Build Coastguard Workerot_unit_test(array) 170*cfb92d14SAndroid Build Coastguard Workerot_unit_test(binary_search) 171*cfb92d14SAndroid Build Coastguard Workerot_unit_test(checksum) 172*cfb92d14SAndroid Build Coastguard Workerot_unit_test(child) 173*cfb92d14SAndroid Build Coastguard Workerot_unit_test(child_table) 174*cfb92d14SAndroid Build Coastguard Workerot_unit_test(cmd_line_parser) 175*cfb92d14SAndroid Build Coastguard Workerot_unit_test(data) 176*cfb92d14SAndroid Build Coastguard Workerot_unit_test(dataset) 177*cfb92d14SAndroid Build Coastguard Workerot_unit_test(dns) 178*cfb92d14SAndroid Build Coastguard Workerot_unit_test(dns_client) 179*cfb92d14SAndroid Build Coastguard Workerot_unit_test(dnssd_discovery_proxy) 180*cfb92d14SAndroid Build Coastguard Workerot_unit_test(dso) 181*cfb92d14SAndroid Build Coastguard Workerot_unit_test(ecdsa) 182*cfb92d14SAndroid Build Coastguard Workerot_unit_test(flash) 183*cfb92d14SAndroid Build Coastguard Workerot_unit_test(frame_builder) 184*cfb92d14SAndroid Build Coastguard Workerot_unit_test(hdlc) 185*cfb92d14SAndroid Build Coastguard Workerot_unit_test(heap) 186*cfb92d14SAndroid Build Coastguard Workerot_unit_test(heap_array) 187*cfb92d14SAndroid Build Coastguard Workerot_unit_test(heap_string) 188*cfb92d14SAndroid Build Coastguard Workerot_unit_test(hkdf_sha256) 189*cfb92d14SAndroid Build Coastguard Workerot_unit_test(hmac_sha256) 190*cfb92d14SAndroid Build Coastguard Workerot_unit_test(ip4_header) 191*cfb92d14SAndroid Build Coastguard Workerot_unit_test(ip6_header) 192*cfb92d14SAndroid Build Coastguard Workerot_unit_test(ip_address) 193*cfb92d14SAndroid Build Coastguard Workerot_unit_test(link_metrics_manager) 194*cfb92d14SAndroid Build Coastguard Workerot_unit_test(link_quality) 195*cfb92d14SAndroid Build Coastguard Workerot_unit_test(linked_list) 196*cfb92d14SAndroid Build Coastguard Workerot_unit_test(lowpan) 197*cfb92d14SAndroid Build Coastguard Workerot_unit_test(mac_frame) 198*cfb92d14SAndroid Build Coastguard Workerot_unit_test(macros) 199*cfb92d14SAndroid Build Coastguard Workerot_unit_test(mdns) 200*cfb92d14SAndroid Build Coastguard Workerot_unit_test(meshcop) 201*cfb92d14SAndroid Build Coastguard Workerot_unit_test(message) 202*cfb92d14SAndroid Build Coastguard Workerot_unit_test(message_queue) 203*cfb92d14SAndroid Build Coastguard Workerot_unit_test(mle) 204*cfb92d14SAndroid Build Coastguard Workerot_unit_test(multicast_listeners_table) 205*cfb92d14SAndroid Build Coastguard Workerot_unit_test(nat64) 206*cfb92d14SAndroid Build Coastguard Workerot_unit_test(ndproxy_table) 207*cfb92d14SAndroid Build Coastguard Workerot_unit_test(netif) 208*cfb92d14SAndroid Build Coastguard Workerot_unit_test(network_data) 209*cfb92d14SAndroid Build Coastguard Workerot_unit_test(network_name) 210*cfb92d14SAndroid Build Coastguard Workerot_unit_test(offset_range) 211*cfb92d14SAndroid Build Coastguard Workerot_unit_test(pool) 212*cfb92d14SAndroid Build Coastguard Workerot_unit_test(power_calibration) 213*cfb92d14SAndroid Build Coastguard Workerot_unit_test(priority_queue) 214*cfb92d14SAndroid Build Coastguard Workerot_unit_test(pskc) 215*cfb92d14SAndroid Build Coastguard Workerot_unit_test(routing_manager) 216*cfb92d14SAndroid Build Coastguard Workerot_unit_test(serial_number) 217*cfb92d14SAndroid Build Coastguard Workerot_unit_test(smart_ptrs) 218*cfb92d14SAndroid Build Coastguard Workerot_unit_test(spinel_buffer) 219*cfb92d14SAndroid Build Coastguard Workerot_unit_test(spinel_decoder) 220*cfb92d14SAndroid Build Coastguard Workerot_unit_test(spinel_encoder) 221*cfb92d14SAndroid Build Coastguard Workerot_unit_test(srp_adv_proxy) 222*cfb92d14SAndroid Build Coastguard Workerot_unit_test(srp_server) 223*cfb92d14SAndroid Build Coastguard Workerot_unit_test(string) 224*cfb92d14SAndroid Build Coastguard Workerot_unit_test(tcat) 225*cfb92d14SAndroid Build Coastguard Workerot_unit_test(timer) 226*cfb92d14SAndroid Build Coastguard Workerot_unit_test(tlv) 227*cfb92d14SAndroid Build Coastguard Workerot_unit_test(toolchain test_toolchain_c.c) 228*cfb92d14SAndroid Build Coastguard Workerot_unit_test(trickle_timer) 229*cfb92d14SAndroid Build Coastguard Workerot_unit_test(url) 230*cfb92d14SAndroid Build Coastguard Worker 231*cfb92d14SAndroid Build Coastguard Worker# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 232*cfb92d14SAndroid Build Coastguard Worker 233*cfb92d14SAndroid Build Coastguard Workerif(OT_MULTIPAN_RCP) 234*cfb92d14SAndroid Build Coastguard Worker add_executable(ot-test-multipan-rcp-instances 235*cfb92d14SAndroid Build Coastguard Worker test_multipan_rcp_instances.cpp 236*cfb92d14SAndroid Build Coastguard Worker ) 237*cfb92d14SAndroid Build Coastguard Worker 238*cfb92d14SAndroid Build Coastguard Worker target_include_directories(ot-test-multipan-rcp-instances 239*cfb92d14SAndroid Build Coastguard Worker PRIVATE 240*cfb92d14SAndroid Build Coastguard Worker ${COMMON_INCLUDES_RCP} 241*cfb92d14SAndroid Build Coastguard Worker ) 242*cfb92d14SAndroid Build Coastguard Worker 243*cfb92d14SAndroid Build Coastguard Worker target_compile_options(ot-test-multipan-rcp-instances 244*cfb92d14SAndroid Build Coastguard Worker PRIVATE 245*cfb92d14SAndroid Build Coastguard Worker ${COMMON_COMPILE_OPTIONS_RCP} 246*cfb92d14SAndroid Build Coastguard Worker ${MULTIPAN_RCP_COMPILE_OPTIONS} 247*cfb92d14SAndroid Build Coastguard Worker ) 248*cfb92d14SAndroid Build Coastguard Worker 249*cfb92d14SAndroid Build Coastguard Worker target_compile_definitions(ot-test-multipan-rcp-instances 250*cfb92d14SAndroid Build Coastguard Worker PRIVATE 251*cfb92d14SAndroid Build Coastguard Worker "OPENTHREAD_CONFIG_MULTIPAN_RCP_ENABLE=1" 252*cfb92d14SAndroid Build Coastguard Worker ) 253*cfb92d14SAndroid Build Coastguard Worker 254*cfb92d14SAndroid Build Coastguard Worker target_compile_options(ot-config-radio 255*cfb92d14SAndroid Build Coastguard Worker INTERFACE 256*cfb92d14SAndroid Build Coastguard Worker "-DOPENTHREAD_CONFIG_MAC_SOFTWARE_CSMA_BACKOFF_ENABLE=0" # used to skip backoff and request tx from platform directly. 257*cfb92d14SAndroid Build Coastguard Worker ) 258*cfb92d14SAndroid Build Coastguard Worker 259*cfb92d14SAndroid Build Coastguard Worker target_link_libraries(ot-test-multipan-rcp-instances 260*cfb92d14SAndroid Build Coastguard Worker PRIVATE 261*cfb92d14SAndroid Build Coastguard Worker ${COMMON_LIBS_RCP} 262*cfb92d14SAndroid Build Coastguard Worker ) 263*cfb92d14SAndroid Build Coastguard Worker 264*cfb92d14SAndroid Build Coastguard Worker add_test(NAME ot-test-multipan-rcp-instances COMMAND ot-test-multipan-rcp-instances) 265*cfb92d14SAndroid Build Coastguard Worker endif() 266