blob: 6ed2a0ba4774dcca7d6608348aea25ea4ca8d41e [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
Rob Oliver9d663372021-02-05 11:02:05 -050017import("$dir_pw_build/target_types.gni")
Robert Oliver21dcf272020-05-12 15:41:52 -040018import("$dir_pw_docgen/docs.gni")
Rob Oliver9d663372021-02-05 11:02:05 -050019import("$dir_pw_protobuf_compiler/proto.gni")
20import("$dir_pw_third_party/nanopb/nanopb.gni")
Robert Oliver21dcf272020-05-12 15:41:52 -040021import("$dir_pw_unit_test/test.gni")
Armando Montanez8104e8f2021-03-06 15:09:52 -080022import("config.gni")
Robert Oliver21dcf272020-05-12 15:41:52 -040023
Robert Oliver19468fb2020-10-19 14:56:07 -040024config("public_include_path") {
Robert Oliver21dcf272020-05-12 15:41:52 -040025 include_dirs = [ "public" ]
Robert Oliver19468fb2020-10-19 14:56:07 -040026 visibility = [ ":*" ]
Robert Oliver21dcf272020-05-12 15:41:52 -040027}
28
29config("backend_config") {
30 include_dirs = [ "public_overrides" ]
31}
32
Robert Oliver19468fb2020-10-19 14:56:07 -040033pw_source_set("config") {
34 public_deps = [ pw_trace_CONFIG ]
35 public_configs = [ ":public_include_path" ]
36 public = [ "public/pw_trace_tokenized/config.h" ]
37}
38
Robert Oliver21dcf272020-05-12 15:41:52 -040039pw_test_group("tests") {
Robert Oliver81e6e3e2020-06-25 14:43:40 -040040 tests = [
41 ":trace_tokenized_test",
42 ":tokenized_trace_buffer_test",
Prashanth Swaminathan0a9129c2020-09-14 16:27:24 -070043 ":tokenized_trace_buffer_log_test",
Robert Oliver81e6e3e2020-06-25 14:43:40 -040044 ]
Robert Oliver21dcf272020-05-12 15:41:52 -040045}
46
47pw_source_set("pw_trace_tokenized") {
48 public_configs = [
49 ":backend_config",
Robert Oliver19468fb2020-10-19 14:56:07 -040050 ":public_include_path",
Robert Oliver21dcf272020-05-12 15:41:52 -040051 ]
52 public_deps = [
Robert Oliver19468fb2020-10-19 14:56:07 -040053 ":config",
Wyatt Hepler752d7d32021-03-02 09:02:23 -080054 ":core",
Robert Oliver21dcf272020-05-12 15:41:52 -040055 "$dir_pw_tokenizer",
56 ]
Robert Oliver21dcf272020-05-12 15:41:52 -040057 if (pw_trace_tokenizer_time != "") {
58 deps = [ "$pw_trace_tokenizer_time" ]
59 }
60
61 public = [ "public_overrides/pw_trace_backend/trace_backend.h" ]
Robert Oliver21dcf272020-05-12 15:41:52 -040062}
63
64pw_test("trace_tokenized_test") {
65 enable_if = pw_trace_tokenizer_time != ""
66 deps = [
Wyatt Hepler752d7d32021-03-02 09:02:23 -080067 ":core",
Robert Oliver21dcf272020-05-12 15:41:52 -040068 "$dir_pw_trace",
69 ]
70
71 sources = [ "trace_test.cc" ]
72}
73
Paul Mathieu54d63ec2020-08-13 17:27:47 +020074config("trace_buffer_size") {
75 defines = [ "PW_TRACE_BUFFER_SIZE_BYTES=${pw_trace_tokenized_BUFFER_SIZE}" ]
76}
77
Rob Oliver9d663372021-02-05 11:02:05 -050078pw_proto_library("trace_rpc_service_proto") {
79 sources = [ "pw_trace_protos/trace_rpc.proto" ]
80 inputs = [ "pw_trace_protos/trace_rpc.options" ]
81}
82
83pw_source_set("trace_rpc_service") {
84 public_configs = [ ":public_include_path" ]
85 public_deps = [ ":trace_rpc_service_proto.nanopb_rpc" ]
86 deps = [
Wyatt Hepler752d7d32021-03-02 09:02:23 -080087 ":core",
Rob Oliver9d663372021-02-05 11:02:05 -050088 ":tokenized_trace_buffer",
89 "$dir_pw_log",
90 "$dir_pw_trace",
91 ]
92 sources = [
93 "public/pw_trace_tokenized/trace_rpc_service_nanopb.h",
94 "trace_rpc_service_nanopb.cc",
95 ]
96}
97
Robert Oliver81e6e3e2020-06-25 14:43:40 -040098pw_source_set("tokenized_trace_buffer") {
Wyatt Hepler752d7d32021-03-02 09:02:23 -080099 deps = [ ":core" ]
Robert Oliver81e6e3e2020-06-25 14:43:40 -0400100 public_deps = [
Robert Oliver19468fb2020-10-19 14:56:07 -0400101 ":config",
Robert Oliver81e6e3e2020-06-25 14:43:40 -0400102 "$dir_pw_ring_buffer",
Paul Mathieu54d63ec2020-08-13 17:27:47 +0200103 "$dir_pw_tokenizer",
Robert Oliver81e6e3e2020-06-25 14:43:40 -0400104 "$dir_pw_varint",
105 ]
106 sources = [ "trace_buffer.cc" ]
Paul Mathieu54d63ec2020-08-13 17:27:47 +0200107 public_configs = [
Robert Oliver19468fb2020-10-19 14:56:07 -0400108 ":public_include_path",
Paul Mathieu54d63ec2020-08-13 17:27:47 +0200109 ":trace_buffer_size",
110 ]
Robert Oliver81e6e3e2020-06-25 14:43:40 -0400111 public = [ "public/pw_trace_tokenized/trace_buffer.h" ]
112}
113
114pw_test("tokenized_trace_buffer_test") {
115 enable_if = pw_trace_tokenizer_time != ""
116 deps = [
117 ":tokenized_trace_buffer",
118 "$dir_pw_trace",
119 ]
120
121 sources = [ "trace_buffer_test.cc" ]
122}
123
Prashanth Swaminathan0a9129c2020-09-14 16:27:24 -0700124pw_source_set("tokenized_trace_buffer_log") {
125 deps = [
126 "$dir_pw_base64",
127 "$dir_pw_log",
128 "$dir_pw_string",
129 ]
130 public_deps = [ ":tokenized_trace_buffer" ]
131 sources = [ "trace_buffer_log.cc" ]
132 public = [ "public/pw_trace_tokenized/trace_buffer_log.h" ]
133}
134
135pw_test("tokenized_trace_buffer_log_test") {
136 enable_if = pw_trace_tokenizer_time != ""
137 deps = [
138 ":tokenized_trace_buffer_log",
139 "$dir_pw_trace",
140 ]
141 sources = [ "trace_buffer_log_test.cc" ]
142}
143
Robert Oliver21dcf272020-05-12 15:41:52 -0400144pw_source_set("fake_trace_time") {
Wyatt Hepler752d7d32021-03-02 09:02:23 -0800145 deps = [ ":core" ]
Robert Oliver21dcf272020-05-12 15:41:52 -0400146 sources = [ "fake_trace_time.cc" ]
147}
148
Robert Oliver6d05de12020-07-13 15:10:42 -0400149pw_source_set("host_trace_time") {
Wyatt Hepler752d7d32021-03-02 09:02:23 -0800150 deps = [ ":core" ]
Robert Oliver6d05de12020-07-13 15:10:42 -0400151 sources = [ "host_trace_time.cc" ]
152}
153
Wyatt Hepler752d7d32021-03-02 09:02:23 -0800154pw_source_set("core") {
Robert Oliver21dcf272020-05-12 15:41:52 -0400155 public_configs = [
156 ":backend_config",
Robert Oliver19468fb2020-10-19 14:56:07 -0400157 ":public_include_path",
Robert Oliver21dcf272020-05-12 15:41:52 -0400158 ]
Robert Oliver5077c7c2020-10-19 15:06:34 -0400159 public_deps = [
160 "$dir_pw_status",
161 "$dir_pw_tokenizer",
162 ]
Robert Oliver21dcf272020-05-12 15:41:52 -0400163 deps = [
Robert Oliver19468fb2020-10-19 14:56:07 -0400164 ":config",
Robert Oliver21dcf272020-05-12 15:41:52 -0400165 "$dir_pw_assert",
166 "$dir_pw_ring_buffer",
Robert Oliver21dcf272020-05-12 15:41:52 -0400167 "$dir_pw_trace:facade",
168 "$dir_pw_varint",
169 ]
170 public = [
171 "public/pw_trace_tokenized/internal/trace_tokenized_internal.h",
172 "public/pw_trace_tokenized/trace_callback.h",
173 "public/pw_trace_tokenized/trace_tokenized.h",
174 ]
Wyatt Hepler7e3f1d92020-08-07 14:09:03 -0700175 sources = [ "trace.cc" ]
Wyatt Hepler752d7d32021-03-02 09:02:23 -0800176 visibility = [ ":*" ]
Robert Oliver21dcf272020-05-12 15:41:52 -0400177}
178
179pw_doc_group("docs") {
180 sources = [ "docs.rst" ]
181}
Robert Oliver6d05de12020-07-13 15:10:42 -0400182
183config("trace_example_config") {
184 include_dirs = [ "example/public" ]
185}
186
187pw_source_set("trace_example_to_file") {
188 deps = [ ":pw_trace_tokenized" ]
189 public_configs = [ ":trace_example_config" ]
190 public = [ "example/public/pw_trace_tokenized/example/trace_to_file.h" ]
191}
192
193# Builds trace examples
194pw_executable("trace_tokenized_example_basic") {
195 deps = [
196 ":trace_example_to_file",
197 "$dir_pw_log",
198 "$dir_pw_trace",
199 "$dir_pw_trace:trace_sample_app",
200 ]
201 sources = [ "example/basic.cc" ]
202}
Robert Oliver19146912020-07-14 10:49:48 -0400203
204pw_executable("trace_tokenized_example_trigger") {
205 deps = [
206 ":trace_example_to_file",
207 "$dir_pw_log",
208 "$dir_pw_trace",
209 "$dir_pw_trace:trace_sample_app",
210 ]
211 sources = [ "example/trigger.cc" ]
212}
Robert Oliver0cc20752020-07-14 15:24:22 -0400213
214pw_executable("trace_tokenized_example_filter") {
215 deps = [
216 ":trace_example_to_file",
217 "$dir_pw_log",
218 "$dir_pw_trace",
219 "$dir_pw_trace:trace_sample_app",
220 ]
221 sources = [ "example/filter.cc" ]
222}
Rob Oliver9d663372021-02-05 11:02:05 -0500223
224if (dir_pw_third_party_nanopb == "") {
225 group("trace_tokenized_example_rpc") {
226 }
227} else {
228 pw_executable("trace_tokenized_example_rpc") {
229 sources = [ "example/rpc.cc" ]
230 deps = [
231 ":trace_rpc_service",
232 "$dir_pw_hdlc",
233 "$dir_pw_log",
234 "$dir_pw_rpc:server",
235 "$dir_pw_rpc/system_server",
236 "$dir_pw_trace",
237 "$dir_pw_trace:trace_sample_app",
238 ]
239 }
240}