blob: c031e89976b1ccb59152c965eda38a23f758068e [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")
Robert Oliver21dcf272020-05-12 15:41:52 -040018import("$dir_pw_docgen/docs.gni")
19import("$dir_pw_unit_test/test.gni")
Wyatt Heplerd49f8fe2020-10-15 10:13:47 -070020
Robert Oliver21dcf272020-05-12 15:41:52 -040021declare_args() {
Robert Oliver19468fb2020-10-19 14:56:07 -040022 # 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
26
Robert Oliver21dcf272020-05-12 15:41:52 -040027 # Tokenizer trace time, gets included if provided
28 pw_trace_tokenizer_time = ""
Paul Mathieu54d63ec2020-08-13 17:27:47 +020029
30 # Trace buffer size in bytes. Set to 0 to disable.
31 pw_trace_tokenized_BUFFER_SIZE = 256
Robert Oliver21dcf272020-05-12 15:41:52 -040032}
33
Robert Oliver19468fb2020-10-19 14:56:07 -040034config("public_include_path") {
Robert Oliver21dcf272020-05-12 15:41:52 -040035 include_dirs = [ "public" ]
Robert Oliver19468fb2020-10-19 14:56:07 -040036 visibility = [ ":*" ]
Robert Oliver21dcf272020-05-12 15:41:52 -040037}
38
39config("backend_config") {
40 include_dirs = [ "public_overrides" ]
41}
42
Robert Oliver19468fb2020-10-19 14:56:07 -040043pw_source_set("config") {
44 public_deps = [ pw_trace_CONFIG ]
45 public_configs = [ ":public_include_path" ]
46 public = [ "public/pw_trace_tokenized/config.h" ]
47}
48
Robert Oliver21dcf272020-05-12 15:41:52 -040049pw_test_group("tests") {
Robert Oliver81e6e3e2020-06-25 14:43:40 -040050 tests = [
51 ":trace_tokenized_test",
52 ":tokenized_trace_buffer_test",
Prashanth Swaminathan0a9129c2020-09-14 16:27:24 -070053 ":tokenized_trace_buffer_log_test",
Robert Oliver81e6e3e2020-06-25 14:43:40 -040054 ]
Robert Oliver21dcf272020-05-12 15:41:52 -040055}
56
57pw_source_set("pw_trace_tokenized") {
58 public_configs = [
59 ":backend_config",
Robert Oliver19468fb2020-10-19 14:56:07 -040060 ":public_include_path",
Robert Oliver21dcf272020-05-12 15:41:52 -040061 ]
62 public_deps = [
Robert Oliver19468fb2020-10-19 14:56:07 -040063 ":config",
Robert Oliver21dcf272020-05-12 15:41:52 -040064 ":pw_trace_tokenized_core",
65 "$dir_pw_tokenizer",
66 ]
Robert Oliver21dcf272020-05-12 15:41:52 -040067 if (pw_trace_tokenizer_time != "") {
68 deps = [ "$pw_trace_tokenizer_time" ]
69 }
70
71 public = [ "public_overrides/pw_trace_backend/trace_backend.h" ]
Robert Oliver21dcf272020-05-12 15:41:52 -040072}
73
74pw_test("trace_tokenized_test") {
75 enable_if = pw_trace_tokenizer_time != ""
76 deps = [
77 ":pw_trace_tokenized_core",
78 "$dir_pw_trace",
79 ]
80
81 sources = [ "trace_test.cc" ]
82}
83
Paul Mathieu54d63ec2020-08-13 17:27:47 +020084config("trace_buffer_size") {
85 defines = [ "PW_TRACE_BUFFER_SIZE_BYTES=${pw_trace_tokenized_BUFFER_SIZE}" ]
86}
87
Robert Oliver81e6e3e2020-06-25 14:43:40 -040088pw_source_set("tokenized_trace_buffer") {
89 deps = [ ":pw_trace_tokenized_core" ]
90 public_deps = [
Robert Oliver19468fb2020-10-19 14:56:07 -040091 ":config",
Robert Oliver81e6e3e2020-06-25 14:43:40 -040092 "$dir_pw_ring_buffer",
Paul Mathieu54d63ec2020-08-13 17:27:47 +020093 "$dir_pw_tokenizer",
Robert Oliver81e6e3e2020-06-25 14:43:40 -040094 "$dir_pw_varint",
95 ]
96 sources = [ "trace_buffer.cc" ]
Paul Mathieu54d63ec2020-08-13 17:27:47 +020097 public_configs = [
Robert Oliver19468fb2020-10-19 14:56:07 -040098 ":public_include_path",
Paul Mathieu54d63ec2020-08-13 17:27:47 +020099 ":trace_buffer_size",
100 ]
Robert Oliver81e6e3e2020-06-25 14:43:40 -0400101 public = [ "public/pw_trace_tokenized/trace_buffer.h" ]
102}
103
104pw_test("tokenized_trace_buffer_test") {
105 enable_if = pw_trace_tokenizer_time != ""
106 deps = [
107 ":tokenized_trace_buffer",
108 "$dir_pw_trace",
109 ]
110
111 sources = [ "trace_buffer_test.cc" ]
112}
113
Prashanth Swaminathan0a9129c2020-09-14 16:27:24 -0700114pw_source_set("tokenized_trace_buffer_log") {
115 deps = [
116 "$dir_pw_base64",
117 "$dir_pw_log",
118 "$dir_pw_string",
119 ]
120 public_deps = [ ":tokenized_trace_buffer" ]
121 sources = [ "trace_buffer_log.cc" ]
122 public = [ "public/pw_trace_tokenized/trace_buffer_log.h" ]
123}
124
125pw_test("tokenized_trace_buffer_log_test") {
126 enable_if = pw_trace_tokenizer_time != ""
127 deps = [
128 ":tokenized_trace_buffer_log",
129 "$dir_pw_trace",
130 ]
131 sources = [ "trace_buffer_log_test.cc" ]
132}
133
Robert Oliver21dcf272020-05-12 15:41:52 -0400134pw_source_set("fake_trace_time") {
135 deps = [ ":pw_trace_tokenized_core" ]
136 sources = [ "fake_trace_time.cc" ]
137}
138
Robert Oliver6d05de12020-07-13 15:10:42 -0400139pw_source_set("host_trace_time") {
140 deps = [ ":pw_trace_tokenized_core" ]
141 sources = [ "host_trace_time.cc" ]
142}
143
Robert Oliver21dcf272020-05-12 15:41:52 -0400144pw_source_set("pw_trace_tokenized_core") {
145 public_configs = [
146 ":backend_config",
Robert Oliver19468fb2020-10-19 14:56:07 -0400147 ":public_include_path",
Robert Oliver21dcf272020-05-12 15:41:52 -0400148 ]
Robert Oliver5077c7c2020-10-19 15:06:34 -0400149 public_deps = [
150 "$dir_pw_status",
151 "$dir_pw_tokenizer",
152 ]
Robert Oliver21dcf272020-05-12 15:41:52 -0400153 deps = [
Robert Oliver19468fb2020-10-19 14:56:07 -0400154 ":config",
Robert Oliver21dcf272020-05-12 15:41:52 -0400155 "$dir_pw_assert",
156 "$dir_pw_ring_buffer",
Robert Oliver21dcf272020-05-12 15:41:52 -0400157 "$dir_pw_trace:facade",
158 "$dir_pw_varint",
159 ]
160 public = [
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",
164 ]
Wyatt Hepler7e3f1d92020-08-07 14:09:03 -0700165 sources = [ "trace.cc" ]
Robert Oliver21dcf272020-05-12 15:41:52 -0400166}
167
168pw_doc_group("docs") {
169 sources = [ "docs.rst" ]
170}
Robert Oliver6d05de12020-07-13 15:10:42 -0400171
172config("trace_example_config") {
173 include_dirs = [ "example/public" ]
174}
175
176pw_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" ]
180}
181
182# Builds trace examples
183pw_executable("trace_tokenized_example_basic") {
184 deps = [
185 ":trace_example_to_file",
186 "$dir_pw_log",
187 "$dir_pw_trace",
188 "$dir_pw_trace:trace_sample_app",
189 ]
190 sources = [ "example/basic.cc" ]
191}
Robert Oliver19146912020-07-14 10:49:48 -0400192
193pw_executable("trace_tokenized_example_trigger") {
194 deps = [
195 ":trace_example_to_file",
196 "$dir_pw_log",
197 "$dir_pw_trace",
198 "$dir_pw_trace:trace_sample_app",
199 ]
200 sources = [ "example/trigger.cc" ]
201}
Robert Oliver0cc20752020-07-14 15:24:22 -0400202
203pw_executable("trace_tokenized_example_filter") {
204 deps = [
205 ":trace_example_to_file",
206 "$dir_pw_log",
207 "$dir_pw_trace",
208 "$dir_pw_trace:trace_sample_app",
209 ]
210 sources = [ "example/filter.cc" ]
211}