1 # Copyright 2020 The Pigweed Authors
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
7 # https://www.apache.org/licenses/LICENSE-2.0
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
15 import("//build_overrides/pigweed.gni")
17 import("$dir_pw_build/module_config.gni")
18 import("$dir_pw_docgen/docs.gni")
19 import("$dir_pw_unit_test/test.gni")
22 # The build target that overrides the default configuration options for this
23 # module. This should point to a source set that provides defines through a
24 # public config (which may -include a file or add defines directly).
25 pw_trace_CONFIG = pw_build_DEFAULT_MODULE_CONFIG
27 # Tokenizer trace time, gets included if provided
28 pw_trace_tokenizer_time = ""
30 # Trace buffer size in bytes. Set to 0 to disable.
31 pw_trace_tokenized_BUFFER_SIZE = 256
34 config("public_include_path") {
35 include_dirs = [ "public" ]
39 config("backend_config") {
40 include_dirs = [ "public_overrides" ]
43 pw_source_set("config") {
44 public_deps = [ pw_trace_CONFIG ]
45 public_configs = [ ":public_include_path" ]
46 public = [ "public/pw_trace_tokenized/config.h" ]
49 pw_test_group("tests") {
51 ":trace_tokenized_test",
52 ":tokenized_trace_buffer_test",
53 ":tokenized_trace_buffer_log_test",
57 pw_source_set("pw_trace_tokenized") {
60 ":public_include_path",
64 ":pw_trace_tokenized_core",
67 if (pw_trace_tokenizer_time != "") {
68 deps = [ "$pw_trace_tokenizer_time" ]
71 public = [ "public_overrides/pw_trace_backend/trace_backend.h" ]
74 pw_test("trace_tokenized_test") {
75 enable_if = pw_trace_tokenizer_time != ""
77 ":pw_trace_tokenized_core",
81 sources = [ "trace_test.cc" ]
84 config("trace_buffer_size") {
85 defines = [ "PW_TRACE_BUFFER_SIZE_BYTES=${pw_trace_tokenized_BUFFER_SIZE}" ]
88 pw_source_set("tokenized_trace_buffer") {
89 deps = [ ":pw_trace_tokenized_core" ]
92 "$dir_pw_ring_buffer",
96 sources = [ "trace_buffer.cc" ]
98 ":public_include_path",
101 public = [ "public/pw_trace_tokenized/trace_buffer.h" ]
104 pw_test("tokenized_trace_buffer_test") {
105 enable_if = pw_trace_tokenizer_time != ""
107 ":tokenized_trace_buffer",
111 sources = [ "trace_buffer_test.cc" ]
114 pw_source_set("tokenized_trace_buffer_log") {
120 public_deps = [ ":tokenized_trace_buffer" ]
121 sources = [ "trace_buffer_log.cc" ]
122 public = [ "public/pw_trace_tokenized/trace_buffer_log.h" ]
125 pw_test("tokenized_trace_buffer_log_test") {
126 enable_if = pw_trace_tokenizer_time != ""
128 ":tokenized_trace_buffer_log",
131 sources = [ "trace_buffer_log_test.cc" ]
134 pw_source_set("fake_trace_time") {
135 deps = [ ":pw_trace_tokenized_core" ]
136 sources = [ "fake_trace_time.cc" ]
139 pw_source_set("host_trace_time") {
140 deps = [ ":pw_trace_tokenized_core" ]
141 sources = [ "host_trace_time.cc" ]
144 pw_source_set("pw_trace_tokenized_core") {
147 ":public_include_path",
156 "$dir_pw_ring_buffer",
157 "$dir_pw_trace:facade",
161 "public/pw_trace_tokenized/internal/trace_tokenized_internal.h",
162 "public/pw_trace_tokenized/trace_callback.h",
163 "public/pw_trace_tokenized/trace_tokenized.h",
165 sources = [ "trace.cc" ]
168 pw_doc_group("docs") {
169 sources = [ "docs.rst" ]
172 config("trace_example_config") {
173 include_dirs = [ "example/public" ]
176 pw_source_set("trace_example_to_file") {
177 deps = [ ":pw_trace_tokenized" ]
178 public_configs = [ ":trace_example_config" ]
179 public = [ "example/public/pw_trace_tokenized/example/trace_to_file.h" ]
182 # Builds trace examples
183 pw_executable("trace_tokenized_example_basic") {
185 ":trace_example_to_file",
188 "$dir_pw_trace:trace_sample_app",
190 sources = [ "example/basic.cc" ]
193 pw_executable("trace_tokenized_example_trigger") {
195 ":trace_example_to_file",
198 "$dir_pw_trace:trace_sample_app",
200 sources = [ "example/trigger.cc" ]
203 pw_executable("trace_tokenized_example_filter") {
205 ":trace_example_to_file",
208 "$dir_pw_trace:trace_sample_app",
210 sources = [ "example/filter.cc" ]