blob: 86403f842ecc72e21208804c569e9716ef543d14 [file] [log] [blame]
Robert Oliver21dcf272020-05-12 15:41:52 -04001# 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
Robert Oliver21dcf272020-05-12 15:41:52 -040015import("//build_overrides/pigweed.gni")
16
Robert Oliver19468fb2020-10-19 14:56:07 -040017import("$dir_pw_build/module_config.gni")
Rob Oliver9d663372021-02-05 11:02:05 -050018import("$dir_pw_build/target_types.gni")
Robert Oliver21dcf272020-05-12 15:41:52 -040019import("$dir_pw_docgen/docs.gni")
Rob Oliver9d663372021-02-05 11:02:05 -050020import("$dir_pw_protobuf_compiler/proto.gni")
21import("$dir_pw_third_party/nanopb/nanopb.gni")
Robert Oliver21dcf272020-05-12 15:41:52 -040022import("$dir_pw_unit_test/test.gni")
Wyatt Heplerd49f8fe2020-10-15 10:13:47 -070023
Robert Oliver21dcf272020-05-12 15:41:52 -040024declare_args() {
Robert Oliver19468fb2020-10-19 14:56:07 -040025 # The build target that overrides the default configuration options for this
26 # module. This should point to a source set that provides defines through a
27 # public config (which may -include a file or add defines directly).
28 pw_trace_CONFIG = pw_build_DEFAULT_MODULE_CONFIG
29
Robert Oliver21dcf272020-05-12 15:41:52 -040030 # Tokenizer trace time, gets included if provided
31 pw_trace_tokenizer_time = ""
Paul Mathieu54d63ec2020-08-13 17:27:47 +020032
33 # Trace buffer size in bytes. Set to 0 to disable.
34 pw_trace_tokenized_BUFFER_SIZE = 256
Robert Oliver21dcf272020-05-12 15:41:52 -040035}
36
Robert Oliver19468fb2020-10-19 14:56:07 -040037config("public_include_path") {
Robert Oliver21dcf272020-05-12 15:41:52 -040038 include_dirs = [ "public" ]
Robert Oliver19468fb2020-10-19 14:56:07 -040039 visibility = [ ":*" ]
Robert Oliver21dcf272020-05-12 15:41:52 -040040}
41
42config("backend_config") {
43 include_dirs = [ "public_overrides" ]
44}
45
Robert Oliver19468fb2020-10-19 14:56:07 -040046pw_source_set("config") {
47 public_deps = [ pw_trace_CONFIG ]
48 public_configs = [ ":public_include_path" ]
49 public = [ "public/pw_trace_tokenized/config.h" ]
50}
51
Robert Oliver21dcf272020-05-12 15:41:52 -040052pw_test_group("tests") {
Robert Oliver81e6e3e2020-06-25 14:43:40 -040053 tests = [
54 ":trace_tokenized_test",
55 ":tokenized_trace_buffer_test",
Prashanth Swaminathan0a9129c2020-09-14 16:27:24 -070056 ":tokenized_trace_buffer_log_test",
Robert Oliver81e6e3e2020-06-25 14:43:40 -040057 ]
Robert Oliver21dcf272020-05-12 15:41:52 -040058}
59
60pw_source_set("pw_trace_tokenized") {
61 public_configs = [
62 ":backend_config",
Robert Oliver19468fb2020-10-19 14:56:07 -040063 ":public_include_path",
Robert Oliver21dcf272020-05-12 15:41:52 -040064 ]
65 public_deps = [
Robert Oliver19468fb2020-10-19 14:56:07 -040066 ":config",
Wyatt Hepler752d7d32021-03-02 09:02:23 -080067 ":core",
Robert Oliver21dcf272020-05-12 15:41:52 -040068 "$dir_pw_tokenizer",
69 ]
Robert Oliver21dcf272020-05-12 15:41:52 -040070 if (pw_trace_tokenizer_time != "") {
71 deps = [ "$pw_trace_tokenizer_time" ]
72 }
73
74 public = [ "public_overrides/pw_trace_backend/trace_backend.h" ]
Robert Oliver21dcf272020-05-12 15:41:52 -040075}
76
77pw_test("trace_tokenized_test") {
78 enable_if = pw_trace_tokenizer_time != ""
79 deps = [
Wyatt Hepler752d7d32021-03-02 09:02:23 -080080 ":core",
Robert Oliver21dcf272020-05-12 15:41:52 -040081 "$dir_pw_trace",
82 ]
83
84 sources = [ "trace_test.cc" ]
85}
86
Paul Mathieu54d63ec2020-08-13 17:27:47 +020087config("trace_buffer_size") {
88 defines = [ "PW_TRACE_BUFFER_SIZE_BYTES=${pw_trace_tokenized_BUFFER_SIZE}" ]
89}
90
Rob Oliver9d663372021-02-05 11:02:05 -050091pw_proto_library("trace_rpc_service_proto") {
92 sources = [ "pw_trace_protos/trace_rpc.proto" ]
93 inputs = [ "pw_trace_protos/trace_rpc.options" ]
94}
95
96pw_source_set("trace_rpc_service") {
97 public_configs = [ ":public_include_path" ]
98 public_deps = [ ":trace_rpc_service_proto.nanopb_rpc" ]
99 deps = [
Wyatt Hepler752d7d32021-03-02 09:02:23 -0800100 ":core",
Rob Oliver9d663372021-02-05 11:02:05 -0500101 ":tokenized_trace_buffer",
102 "$dir_pw_log",
103 "$dir_pw_trace",
104 ]
105 sources = [
106 "public/pw_trace_tokenized/trace_rpc_service_nanopb.h",
107 "trace_rpc_service_nanopb.cc",
108 ]
109}
110
Robert Oliver81e6e3e2020-06-25 14:43:40 -0400111pw_source_set("tokenized_trace_buffer") {
Wyatt Hepler752d7d32021-03-02 09:02:23 -0800112 deps = [ ":core" ]
Robert Oliver81e6e3e2020-06-25 14:43:40 -0400113 public_deps = [
Robert Oliver19468fb2020-10-19 14:56:07 -0400114 ":config",
Robert Oliver81e6e3e2020-06-25 14:43:40 -0400115 "$dir_pw_ring_buffer",
Paul Mathieu54d63ec2020-08-13 17:27:47 +0200116 "$dir_pw_tokenizer",
Robert Oliver81e6e3e2020-06-25 14:43:40 -0400117 "$dir_pw_varint",
118 ]
119 sources = [ "trace_buffer.cc" ]
Paul Mathieu54d63ec2020-08-13 17:27:47 +0200120 public_configs = [
Robert Oliver19468fb2020-10-19 14:56:07 -0400121 ":public_include_path",
Paul Mathieu54d63ec2020-08-13 17:27:47 +0200122 ":trace_buffer_size",
123 ]
Robert Oliver81e6e3e2020-06-25 14:43:40 -0400124 public = [ "public/pw_trace_tokenized/trace_buffer.h" ]
125}
126
127pw_test("tokenized_trace_buffer_test") {
128 enable_if = pw_trace_tokenizer_time != ""
129 deps = [
130 ":tokenized_trace_buffer",
131 "$dir_pw_trace",
132 ]
133
134 sources = [ "trace_buffer_test.cc" ]
135}
136
Prashanth Swaminathan0a9129c2020-09-14 16:27:24 -0700137pw_source_set("tokenized_trace_buffer_log") {
138 deps = [
139 "$dir_pw_base64",
140 "$dir_pw_log",
141 "$dir_pw_string",
142 ]
143 public_deps = [ ":tokenized_trace_buffer" ]
144 sources = [ "trace_buffer_log.cc" ]
145 public = [ "public/pw_trace_tokenized/trace_buffer_log.h" ]
146}
147
148pw_test("tokenized_trace_buffer_log_test") {
149 enable_if = pw_trace_tokenizer_time != ""
150 deps = [
151 ":tokenized_trace_buffer_log",
152 "$dir_pw_trace",
153 ]
154 sources = [ "trace_buffer_log_test.cc" ]
155}
156
Robert Oliver21dcf272020-05-12 15:41:52 -0400157pw_source_set("fake_trace_time") {
Wyatt Hepler752d7d32021-03-02 09:02:23 -0800158 deps = [ ":core" ]
Robert Oliver21dcf272020-05-12 15:41:52 -0400159 sources = [ "fake_trace_time.cc" ]
160}
161
Robert Oliver6d05de12020-07-13 15:10:42 -0400162pw_source_set("host_trace_time") {
Wyatt Hepler752d7d32021-03-02 09:02:23 -0800163 deps = [ ":core" ]
Robert Oliver6d05de12020-07-13 15:10:42 -0400164 sources = [ "host_trace_time.cc" ]
165}
166
Wyatt Hepler752d7d32021-03-02 09:02:23 -0800167pw_source_set("core") {
Robert Oliver21dcf272020-05-12 15:41:52 -0400168 public_configs = [
169 ":backend_config",
Robert Oliver19468fb2020-10-19 14:56:07 -0400170 ":public_include_path",
Robert Oliver21dcf272020-05-12 15:41:52 -0400171 ]
Robert Oliver5077c7c2020-10-19 15:06:34 -0400172 public_deps = [
173 "$dir_pw_status",
174 "$dir_pw_tokenizer",
175 ]
Robert Oliver21dcf272020-05-12 15:41:52 -0400176 deps = [
Robert Oliver19468fb2020-10-19 14:56:07 -0400177 ":config",
Robert Oliver21dcf272020-05-12 15:41:52 -0400178 "$dir_pw_assert",
179 "$dir_pw_ring_buffer",
Robert Oliver21dcf272020-05-12 15:41:52 -0400180 "$dir_pw_trace:facade",
181 "$dir_pw_varint",
182 ]
183 public = [
184 "public/pw_trace_tokenized/internal/trace_tokenized_internal.h",
185 "public/pw_trace_tokenized/trace_callback.h",
186 "public/pw_trace_tokenized/trace_tokenized.h",
187 ]
Wyatt Hepler7e3f1d92020-08-07 14:09:03 -0700188 sources = [ "trace.cc" ]
Wyatt Hepler752d7d32021-03-02 09:02:23 -0800189 visibility = [ ":*" ]
Robert Oliver21dcf272020-05-12 15:41:52 -0400190}
191
192pw_doc_group("docs") {
193 sources = [ "docs.rst" ]
194}
Robert Oliver6d05de12020-07-13 15:10:42 -0400195
196config("trace_example_config") {
197 include_dirs = [ "example/public" ]
198}
199
200pw_source_set("trace_example_to_file") {
201 deps = [ ":pw_trace_tokenized" ]
202 public_configs = [ ":trace_example_config" ]
203 public = [ "example/public/pw_trace_tokenized/example/trace_to_file.h" ]
204}
205
206# Builds trace examples
207pw_executable("trace_tokenized_example_basic") {
208 deps = [
209 ":trace_example_to_file",
210 "$dir_pw_log",
211 "$dir_pw_trace",
212 "$dir_pw_trace:trace_sample_app",
213 ]
214 sources = [ "example/basic.cc" ]
215}
Robert Oliver19146912020-07-14 10:49:48 -0400216
217pw_executable("trace_tokenized_example_trigger") {
218 deps = [
219 ":trace_example_to_file",
220 "$dir_pw_log",
221 "$dir_pw_trace",
222 "$dir_pw_trace:trace_sample_app",
223 ]
224 sources = [ "example/trigger.cc" ]
225}
Robert Oliver0cc20752020-07-14 15:24:22 -0400226
227pw_executable("trace_tokenized_example_filter") {
228 deps = [
229 ":trace_example_to_file",
230 "$dir_pw_log",
231 "$dir_pw_trace",
232 "$dir_pw_trace:trace_sample_app",
233 ]
234 sources = [ "example/filter.cc" ]
235}
Rob Oliver9d663372021-02-05 11:02:05 -0500236
237if (dir_pw_third_party_nanopb == "") {
238 group("trace_tokenized_example_rpc") {
239 }
240} else {
241 pw_executable("trace_tokenized_example_rpc") {
242 sources = [ "example/rpc.cc" ]
243 deps = [
244 ":trace_rpc_service",
245 "$dir_pw_hdlc",
246 "$dir_pw_log",
247 "$dir_pw_rpc:server",
248 "$dir_pw_rpc/system_server",
249 "$dir_pw_trace",
250 "$dir_pw_trace:trace_sample_app",
251 ]
252 }
253}