xref: /aosp_15_r20/external/pigweed/pw_unit_test/CMakeLists.txt (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1# Copyright 2020 The Pigweed Authors
2#
3# Licensed under the Apache License, Version 2.0 (the "License"); you may not
4# use this file except in compliance with the License. You may obtain a copy of
5# the License at
6#
7#     https://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12# License for the specific language governing permissions and limitations under
13# the License.
14
15include($ENV{PW_ROOT}/pw_build/pigweed.cmake)
16include($ENV{PW_ROOT}/pw_protobuf_compiler/proto.cmake)
17
18include($ENV{PW_ROOT}/pw_unit_test/backend.cmake)
19
20pw_add_module_config(pw_unit_test_CONFIG)
21
22pw_add_library(pw_unit_test.config INTERFACE
23  HEADERS
24    public/pw_unit_test/config.h
25  PUBLIC_INCLUDES
26    public
27  PUBLIC_DEPS
28    ${pw_unit_test_CONFIG}
29    pw_polyfill
30)
31
32add_library(pw_unit_test INTERFACE)
33target_include_directories(pw_unit_test
34  INTERFACE
35    public
36)
37
38# Temporarily redirect deprecated googletest pointer to new pointer.
39if("${pw_unit_test_GOOGLETEST_BACKEND}" STREQUAL "pw_third_party.googletest")
40  message(DEPRECATION
41    "pw_unit_test_GOOGLETEST_BACKEND is deprecated. Set pw_unit_test_BACKEND "
42    "to pw_unit_test.googletest instead."
43  )
44  target_link_libraries(pw_unit_test
45    INTERFACE
46      pw_unit_test.googletest
47  )
48else()
49  target_link_libraries(pw_unit_test
50    INTERFACE
51      "${pw_unit_test_BACKEND}"
52  )
53endif()
54
55pw_add_library(pw_unit_test.light STATIC
56  HEADERS
57    light_public_overrides/pw_unit_test/framework_backend.h
58  SOURCES
59    framework_light.cc
60  PUBLIC_DEPS
61    pw_bytes.alignment
62    pw_polyfill
63    pw_preprocessor
64    pw_result
65    pw_status
66    pw_string.builder
67    pw_unit_test.config
68  PRIVATE_DEPS
69    pw_assert
70  PUBLIC_INCLUDES
71    light_public_overrides
72    public
73    public_overrides
74)
75
76pw_add_library(pw_unit_test.googletest INTERFACE
77  HEADERS
78    googletest_public_overrides/pw_unit_test/framework_backend.h
79  PUBLIC_INCLUDES
80    googletest_public_overrides
81  PUBLIC_DEPS
82    pw_third_party.googletest
83    pw_result
84    pw_status
85)
86
87pw_add_library(pw_unit_test.googletest_handler_adapter STATIC
88  SOURCES
89    googletest_handler_adapter.cc
90  PUBLIC_DEPS
91    pw_unit_test.event_handler
92    pw_third_party.googletest
93  PUBLIC_INCLUDES
94    public
95)
96
97pw_add_test(pw_unit_test.framework_test
98    SOURCES
99      framework_test.cc
100    PRIVATE_DEPS
101      pw_assert
102      pw_status
103    GROUPS
104      pw_unit_test
105  )
106
107if(${pw_unit_test_BACKEND} STREQUAL "pw_unit_test.light")
108  pw_add_test(pw_unit_test.framework_light_test
109    SOURCES
110      framework_light_test.cc
111    PRIVATE_DEPS
112      pw_string
113    GROUPS
114      pw_unit_test
115  )
116endif()
117
118pw_add_library(pw_unit_test.static_library_support STATIC
119  HEADERS
120    public/pw_unit_test/static_library_support.h
121  PUBLIC_INCLUDES
122    public
123  SOURCES
124    static_library_support.cc
125  PUBLIC_DEPS
126    pw_unit_test.light
127)
128
129pw_add_library(pw_unit_test.event_handler INTERFACE
130  HEADERS
131    public/pw_unit_test/event_handler.h
132  PUBLIC_INCLUDES
133    public
134)
135
136pw_add_library(pw_unit_test.status_macros INTERFACE
137  HEADERS
138    public/pw_unit_test/status_macros.h
139  PUBLIC_INCLUDES
140    public
141)
142
143pw_add_library(pw_unit_test.googletest_style_event_handler STATIC
144  HEADERS
145    public/pw_unit_test/googletest_style_event_handler.h
146  PUBLIC_INCLUDES
147    public
148  PUBLIC_DEPS
149    pw_unit_test.event_handler
150    pw_preprocessor
151  SOURCES
152    googletest_style_event_handler.cc
153)
154
155if(${pw_unit_test_BACKEND} STREQUAL "pw_unit_test.googletest")
156  pw_add_library(pw_unit_test.googletest_test_matchers INTERFACE
157    HEADERS
158      public/pw_unit_test/googletest_test_matchers.h
159    PUBLIC_INCLUDES
160      public
161    PUBLIC_DEPS
162      pw_result
163      pw_status
164      pw_third_party.googletest
165  )
166  pw_add_test(pw_unit_test.googletest_test_matchers_test
167    SOURCES
168      googletest_test_matchers_test.cc
169    PRIVATE_DEPS
170      pw_unit_test.googletest_test_matchers
171    GROUPS
172      pw_unit_test
173  )
174endif()
175
176pw_add_library(pw_unit_test.simple_printing_main STATIC
177  SOURCES
178    simple_printing_main.cc
179    simple_printing_event_handler.cc
180  PRIVATE_DEPS
181    pw_unit_test
182    pw_unit_test.googletest_style_event_handler
183    pw_preprocessor
184    pw_string
185    pw_sys_io
186)
187
188pw_add_library(pw_unit_test.logging_event_handler STATIC
189  HEADERS
190    public/pw_unit_test/logging_event_handler.h
191  PUBLIC_INCLUDES
192    public
193  PUBLIC_DEPS
194    pw_log
195    pw_unit_test.googletest_style_event_handler
196  SOURCES
197    logging_event_handler.cc
198)
199
200pw_add_library(pw_unit_test.logging_main STATIC
201  SOURCES
202    logging_main.cc
203  PRIVATE_DEPS
204    pw_unit_test.logging_event_handler
205    pw_unit_test
206)
207
208pw_add_library(pw_unit_test.multi_event_handler INTERFACE
209  HEADERS
210    public/pw_unit_test/multi_event_handler.h
211  PUBLIC_INCLUDES
212    public
213  PUBLIC_DEPS
214    pw_unit_test.event_handler
215)
216
217pw_add_test(pw_unit_test.multi_event_handler_test
218  SOURCES
219    multi_event_handler_test.cc
220  PRIVATE_DEPS
221    pw_unit_test.multi_event_handler
222  GROUPS
223    pw_unit_test
224)
225
226pw_add_library(pw_unit_test.test_record_event_handler INTERFACE
227  HEADERS
228    public/pw_unit_test/internal/test_record_trie.h
229    public/pw_unit_test/test_record_event_handler.h
230  PUBLIC_INCLUDES
231    public
232  PUBLIC_DEPS
233    pw_assert
234    pw_json.builder
235    pw_unit_test.event_handler
236)
237
238pw_add_test(pw_unit_test.test_record_event_handler_test
239  SOURCES
240    test_record_event_handler_test.cc
241  PRIVATE_DEPS
242    pw_unit_test.test_record_event_handler
243  GROUPS
244    pw_unit_test
245)
246
247pw_proto_library(pw_unit_test.unit_test_proto
248  SOURCES
249    pw_unit_test_proto/unit_test.proto
250)
251
252if("${pw_unit_test_BACKEND}" STREQUAL "pw_unit_test.light")
253  pw_add_library(pw_unit_test.rpc_service STATIC
254    PUBLIC_DEPS
255      pw_unit_test.config
256      pw_unit_test.event_handler
257      pw_unit_test
258      pw_unit_test.unit_test_proto.pwpb
259      pw_unit_test.unit_test_proto.raw_rpc
260      pw_containers.vector
261    PRIVATE_DEPS
262      pw_log
263    PUBLIC_INCLUDES
264      public
265      rpc_light_public
266    HEADERS
267      public/pw_unit_test/unit_test_service.h
268      rpc_light_public/pw_unit_test/internal/rpc_event_handler.h
269    SOURCES
270      unit_test_service.cc
271      rpc_light_event_handler.cc
272  )
273else()
274  pw_add_library(pw_unit_test.rpc_service STATIC
275    PUBLIC_DEPS
276      pw_unit_test.config
277      pw_unit_test.event_handler
278      pw_unit_test
279      pw_unit_test.unit_test_proto.pwpb
280      pw_unit_test.unit_test_proto.raw_rpc
281      pw_containers.vector
282    PRIVATE_DEPS
283      pw_log
284    PUBLIC_INCLUDES
285      public
286      rpc_gtest_public
287    HEADERS
288      public/pw_unit_test/unit_test_service.h
289      rpc_light_public/pw_unit_test/internal/rpc_event_handler.h
290      rpc_gtest_public/pw_unit_test/internal/rpc_event_handler.h
291    SOURCES
292      unit_test_service.cc
293      rpc_gtest_event_handler.cc
294  )
295endif()
296