xref: /aosp_15_r20/external/openthread/tests/unit/CMakeLists.txt (revision cfb92d1480a9e65faed56933e9c12405f45898b4)
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