xref: /aosp_15_r20/external/pigweed/pw_trace_tokenized/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)
17include($ENV{PW_ROOT}/pw_trace_tokenized/backend.cmake)
18
19pw_add_module_config(pw_trace_tokenized_CONFIG)
20
21pw_add_library(pw_trace_tokenized.config INTERFACE
22  HEADERS
23    public/pw_trace_tokenized/config.h
24  PUBLIC_INCLUDES
25    public
26  PUBLIC_DEPS
27    ${pw_trace_CONFIG}
28)
29
30pw_add_library(pw_trace_tokenized.fake_trace_time STATIC
31  PRIVATE_DEPS
32    pw_trace_tokenized.config
33  SOURCES
34    fake_trace_time.cc
35)
36
37pw_add_library(pw_trace_tokenized.host_trace_time STATIC
38  PRIVATE_DEPS
39    pw_trace_tokenized.config
40  SOURCES
41    host_trace_time.cc
42)
43
44pw_add_library(pw_trace_tokenized.core STATIC
45  HEADERS
46    public/pw_trace_tokenized/internal/trace_tokenized_internal.h
47    public/pw_trace_tokenized/trace_callback.h
48    public/pw_trace_tokenized/trace_tokenized.h
49    public_overrides/pw_trace_backend/trace_backend.h
50  PUBLIC_INCLUDES
51    public
52    public_overrides
53  PUBLIC_DEPS
54    pw_log
55    pw_span
56    pw_status
57    pw_tokenizer
58  SOURCES
59    trace.cc
60  PRIVATE_DEPS
61    pw_trace_tokenized.config
62    pw_assert
63    pw_ring_buffer
64    pw_trace.facade
65    pw_varint
66    ${pw_trace_tokenizer_time}
67)
68
69pw_add_library(pw_trace_tokenized INTERFACE
70  PUBLIC_DEPS
71    pw_trace_tokenized.core
72    pw_trace_tokenized.config
73  PUBLIC_INCLUDES
74    public
75    public_overrides
76  PRIVATE_DEPS
77    ${pw_trace_tokenizer_time}
78)
79
80if(("${pw_trace_BACKEND}" STREQUAL "pw_trace_tokenized") AND
81   (NOT "${pw_trace_tokenizer_time}" STREQUAL ""))
82pw_add_test(pw_trace_tokenized.trace_tokenized_test
83  SOURCES
84    trace_test.cc
85  PRIVATE_DEPS
86    pw_trace_tokenized.core
87    pw_trace
88    ${pw_trace_tokenizer_time}
89  GROUPS
90    modules
91    pw_trace_tokenized
92)
93endif()
94
95pw_add_library(pw_trace_tokenized.trace_buffer STATIC
96  HEADERS
97    public/pw_trace_tokenized/trace_buffer.h
98  PUBLIC_INCLUDES
99    public
100  SOURCES
101    trace_buffer.cc
102  PRIVATE_DEPS
103    pw_trace_tokenized.core
104  PUBLIC_DEPS
105    pw_bytes
106    pw_ring_buffer
107    pw_tokenizer
108    pw_trace_tokenized.config
109    pw_varint
110    pw_span
111  PUBLIC_DEFINES
112    PW_TRACE_BUFFER_SIZE_BYTES=${pw_trace_tokenized_BUFFER_SIZE}
113)
114
115pw_proto_library(pw_trace_tokenized.protos
116  SOURCES
117    pw_trace_protos/trace_rpc.proto
118    pw_trace_protos/trace_service.proto
119  INPUTS
120    pw_trace_protos/trace_rpc.options
121    pw_trace_protos/trace_service.options
122  DEPS
123    pw_chrono.protos
124)
125
126pw_add_library(pw_trace_tokenized.rpc_service STATIC
127  SOURCES
128    trace_rpc_service_nanopb.cc
129  PRIVATE_DEPS
130    pw_assert
131    pw_log
132    pw_ring_buffer
133    pw_trace_tokenized.trace_buffer
134    pw_trace_tokenized.protos.nanopb_rpc
135    pw_varint
136  PUBLIC_DEPS
137    pw_tokenizer
138    pw_status
139)
140
141pw_add_library(pw_trace_tokenized.base_trace_service STATIC
142  SOURCES
143    base_trace_service.cc
144  PRIVATE_DEPS
145    pw_log
146    pw_stream
147    pw_ring_buffer
148  PUBLIC_DEPS
149    pw_trace_tokenized
150    pw_trace_tokenized.trace_buffer
151)
152
153pw_add_library(pw_trace_tokenized.trace_service_pwpb STATIC
154  SOURCES
155    trace_service_pwpb.cc
156  PRIVATE_DEPS
157    pw_chrono.system_clock
158  PUBLIC_DEPS
159    pw_trace_tokenized.base_trace_service
160    pw_trace_tokenized.protos.pwpb_rpc
161)
162