xref: /aosp_15_r20/external/pigweed/pw_i2c/BUILD.gn (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1*61c4878aSAndroid Build Coastguard Worker# Copyright 2020 The Pigweed Authors
2*61c4878aSAndroid Build Coastguard Worker#
3*61c4878aSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); you may not
4*61c4878aSAndroid Build Coastguard Worker# use this file except in compliance with the License. You may obtain a copy of
5*61c4878aSAndroid Build Coastguard Worker# the License at
6*61c4878aSAndroid Build Coastguard Worker#
7*61c4878aSAndroid Build Coastguard Worker#     https://www.apache.org/licenses/LICENSE-2.0
8*61c4878aSAndroid Build Coastguard Worker#
9*61c4878aSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
10*61c4878aSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11*61c4878aSAndroid Build Coastguard Worker# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12*61c4878aSAndroid Build Coastguard Worker# License for the specific language governing permissions and limitations under
13*61c4878aSAndroid Build Coastguard Worker# the License.
14*61c4878aSAndroid Build Coastguard Worker
15*61c4878aSAndroid Build Coastguard Workerimport("//build_overrides/pigweed.gni")
16*61c4878aSAndroid Build Coastguard Worker
17*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_build/target_types.gni")
18*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_chrono/backend.gni")
19*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_docgen/docs.gni")
20*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_protobuf_compiler/proto.gni")
21*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_unit_test/test.gni")
22*61c4878aSAndroid Build Coastguard Worker
23*61c4878aSAndroid Build Coastguard Workerconfig("public_include_path") {
24*61c4878aSAndroid Build Coastguard Worker  include_dirs = [ "public" ]
25*61c4878aSAndroid Build Coastguard Worker}
26*61c4878aSAndroid Build Coastguard Worker
27*61c4878aSAndroid Build Coastguard Workerpw_source_set("address") {
28*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
29*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_i2c/address.h" ]
30*61c4878aSAndroid Build Coastguard Worker  deps = [ "$dir_pw_assert" ]
31*61c4878aSAndroid Build Coastguard Worker  sources = [ "address.cc" ]
32*61c4878aSAndroid Build Coastguard Worker}
33*61c4878aSAndroid Build Coastguard Worker
34*61c4878aSAndroid Build Coastguard Workerpw_source_set("initiator") {
35*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
36*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_i2c/initiator.h" ]
37*61c4878aSAndroid Build Coastguard Worker  public_deps = [
38*61c4878aSAndroid Build Coastguard Worker    ":address",
39*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_bytes",
40*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_chrono:system_clock",
41*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_status",
42*61c4878aSAndroid Build Coastguard Worker  ]
43*61c4878aSAndroid Build Coastguard Worker}
44*61c4878aSAndroid Build Coastguard Worker
45*61c4878aSAndroid Build Coastguard Workerpw_source_set("device") {
46*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
47*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_i2c/device.h" ]
48*61c4878aSAndroid Build Coastguard Worker  public_deps = [
49*61c4878aSAndroid Build Coastguard Worker    ":address",
50*61c4878aSAndroid Build Coastguard Worker    ":initiator",
51*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_bytes",
52*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_chrono:system_clock",
53*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_status",
54*61c4878aSAndroid Build Coastguard Worker    dir_pw_span,
55*61c4878aSAndroid Build Coastguard Worker  ]
56*61c4878aSAndroid Build Coastguard Worker}
57*61c4878aSAndroid Build Coastguard Worker
58*61c4878aSAndroid Build Coastguard Workerpw_source_set("register_device") {
59*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
60*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_i2c/register_device.h" ]
61*61c4878aSAndroid Build Coastguard Worker  public_deps = [
62*61c4878aSAndroid Build Coastguard Worker    ":address",
63*61c4878aSAndroid Build Coastguard Worker    ":device",
64*61c4878aSAndroid Build Coastguard Worker    ":initiator",
65*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_bytes",
66*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_chrono:system_clock",
67*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_result",
68*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_status",
69*61c4878aSAndroid Build Coastguard Worker  ]
70*61c4878aSAndroid Build Coastguard Worker  sources = [ "register_device.cc" ]
71*61c4878aSAndroid Build Coastguard Worker  deps = [ "$dir_pw_assert" ]
72*61c4878aSAndroid Build Coastguard Worker}
73*61c4878aSAndroid Build Coastguard Worker
74*61c4878aSAndroid Build Coastguard Workerpw_proto_library("protos") {
75*61c4878aSAndroid Build Coastguard Worker  sources = [ "i2c.proto" ]
76*61c4878aSAndroid Build Coastguard Worker  inputs = [ "i2c.pwpb_options" ]
77*61c4878aSAndroid Build Coastguard Worker  prefix = "pw_i2c"
78*61c4878aSAndroid Build Coastguard Worker}
79*61c4878aSAndroid Build Coastguard Worker
80*61c4878aSAndroid Build Coastguard Workerpw_source_set("i2c_service") {
81*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_i2c/i2c_service.h" ]
82*61c4878aSAndroid Build Coastguard Worker  sources = [ "i2c_service.cc" ]
83*61c4878aSAndroid Build Coastguard Worker  public_deps = [
84*61c4878aSAndroid Build Coastguard Worker    ":protos.pwpb_rpc",
85*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_chrono:system_clock",
86*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_i2c:initiator",
87*61c4878aSAndroid Build Coastguard Worker  ]
88*61c4878aSAndroid Build Coastguard Worker  deps = [
89*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_containers:vector",
90*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_i2c:address",
91*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_status",
92*61c4878aSAndroid Build Coastguard Worker  ]
93*61c4878aSAndroid Build Coastguard Worker}
94*61c4878aSAndroid Build Coastguard Worker
95*61c4878aSAndroid Build Coastguard Workerpw_source_set("mock") {
96*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
97*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_i2c/initiator_mock.h" ]
98*61c4878aSAndroid Build Coastguard Worker  sources = [ "initiator_mock.cc" ]
99*61c4878aSAndroid Build Coastguard Worker  public_deps = [
100*61c4878aSAndroid Build Coastguard Worker    ":initiator",
101*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_bytes",
102*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_containers",
103*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_containers:to_array",
104*61c4878aSAndroid Build Coastguard Worker  ]
105*61c4878aSAndroid Build Coastguard Worker  deps = [
106*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_assert",
107*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_unit_test",
108*61c4878aSAndroid Build Coastguard Worker  ]
109*61c4878aSAndroid Build Coastguard Worker}
110*61c4878aSAndroid Build Coastguard Worker
111*61c4878aSAndroid Build Coastguard Workerpw_source_set("gmock") {
112*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
113*61c4878aSAndroid Build Coastguard Worker  public_deps = [
114*61c4878aSAndroid Build Coastguard Worker    ":initiator",
115*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_third_party/googletest",
116*61c4878aSAndroid Build Coastguard Worker  ]
117*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_i2c/initiator_gmock.h" ]
118*61c4878aSAndroid Build Coastguard Worker}
119*61c4878aSAndroid Build Coastguard Worker
120*61c4878aSAndroid Build Coastguard Worker# TODO: add mock_test here once chrono backend is supported for stm32f429i-disc1
121*61c4878aSAndroid Build Coastguard Workerpw_test_group("tests") {
122*61c4878aSAndroid Build Coastguard Worker  tests = [
123*61c4878aSAndroid Build Coastguard Worker    ":address_test",
124*61c4878aSAndroid Build Coastguard Worker    ":device_test",
125*61c4878aSAndroid Build Coastguard Worker    ":initiator_mock_test",
126*61c4878aSAndroid Build Coastguard Worker    ":register_device_test",
127*61c4878aSAndroid Build Coastguard Worker    ":i2c_service_test",
128*61c4878aSAndroid Build Coastguard Worker  ]
129*61c4878aSAndroid Build Coastguard Worker}
130*61c4878aSAndroid Build Coastguard Worker
131*61c4878aSAndroid Build Coastguard Workerpw_test("address_test") {
132*61c4878aSAndroid Build Coastguard Worker  sources = [ "address_test.cc" ]
133*61c4878aSAndroid Build Coastguard Worker  deps = [ ":address" ]
134*61c4878aSAndroid Build Coastguard Worker}
135*61c4878aSAndroid Build Coastguard Worker
136*61c4878aSAndroid Build Coastguard Workerpw_test("device_test") {
137*61c4878aSAndroid Build Coastguard Worker  enable_if = pw_chrono_SYSTEM_CLOCK_BACKEND != ""
138*61c4878aSAndroid Build Coastguard Worker  sources = [ "device_test.cc" ]
139*61c4878aSAndroid Build Coastguard Worker  deps = [
140*61c4878aSAndroid Build Coastguard Worker    ":device",
141*61c4878aSAndroid Build Coastguard Worker    ":mock",
142*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_chrono:system_clock",
143*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_containers",
144*61c4878aSAndroid Build Coastguard Worker  ]
145*61c4878aSAndroid Build Coastguard Worker}
146*61c4878aSAndroid Build Coastguard Worker
147*61c4878aSAndroid Build Coastguard Workerpw_test("register_device_test") {
148*61c4878aSAndroid Build Coastguard Worker  enable_if = pw_chrono_SYSTEM_CLOCK_BACKEND != ""
149*61c4878aSAndroid Build Coastguard Worker  sources = [ "register_device_test.cc" ]
150*61c4878aSAndroid Build Coastguard Worker  deps = [
151*61c4878aSAndroid Build Coastguard Worker    ":register_device",
152*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_assert",
153*61c4878aSAndroid Build Coastguard Worker  ]
154*61c4878aSAndroid Build Coastguard Worker
155*61c4878aSAndroid Build Coastguard Worker  # TODO: https://pwbug.dev/325509758 - Doesn't work on the Pico yet; hangs
156*61c4878aSAndroid Build Coastguard Worker  # indefinitely.
157*61c4878aSAndroid Build Coastguard Worker  if (pw_build_EXECUTABLE_TARGET_TYPE == "pico_executable") {
158*61c4878aSAndroid Build Coastguard Worker    enable_if = false
159*61c4878aSAndroid Build Coastguard Worker  }
160*61c4878aSAndroid Build Coastguard Worker}
161*61c4878aSAndroid Build Coastguard Worker
162*61c4878aSAndroid Build Coastguard Workerpw_test("initiator_mock_test") {
163*61c4878aSAndroid Build Coastguard Worker  enable_if = pw_chrono_SYSTEM_CLOCK_BACKEND != ""
164*61c4878aSAndroid Build Coastguard Worker  sources = [ "initiator_mock_test.cc" ]
165*61c4878aSAndroid Build Coastguard Worker  deps = [
166*61c4878aSAndroid Build Coastguard Worker    ":mock",
167*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_chrono:system_clock",
168*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_containers",
169*61c4878aSAndroid Build Coastguard Worker  ]
170*61c4878aSAndroid Build Coastguard Worker}
171*61c4878aSAndroid Build Coastguard Worker
172*61c4878aSAndroid Build Coastguard Workerpw_test("i2c_service_test") {
173*61c4878aSAndroid Build Coastguard Worker  enable_if = pw_chrono_SYSTEM_CLOCK_BACKEND != ""
174*61c4878aSAndroid Build Coastguard Worker  sources = [ "i2c_service_test.cc" ]
175*61c4878aSAndroid Build Coastguard Worker  deps = [
176*61c4878aSAndroid Build Coastguard Worker    ":i2c_service",
177*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_chrono:system_clock",
178*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_containers:vector",
179*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_i2c:mock",
180*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_rpc/pwpb:test_method_context",
181*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_status",
182*61c4878aSAndroid Build Coastguard Worker  ]
183*61c4878aSAndroid Build Coastguard Worker
184*61c4878aSAndroid Build Coastguard Worker  # TODO: https://pwbug.dev/325509758 - Doesn't work on the Pico yet; hangs
185*61c4878aSAndroid Build Coastguard Worker  # indefinitely.
186*61c4878aSAndroid Build Coastguard Worker  if (pw_build_EXECUTABLE_TARGET_TYPE == "pico_executable") {
187*61c4878aSAndroid Build Coastguard Worker    enable_if = false
188*61c4878aSAndroid Build Coastguard Worker  }
189*61c4878aSAndroid Build Coastguard Worker}
190*61c4878aSAndroid Build Coastguard Worker
191*61c4878aSAndroid Build Coastguard Workerpw_doc_group("docs") {
192*61c4878aSAndroid Build Coastguard Worker  sources = [
193*61c4878aSAndroid Build Coastguard Worker    "backends.rst",
194*61c4878aSAndroid Build Coastguard Worker    "docs.rst",
195*61c4878aSAndroid Build Coastguard Worker    "guides.rst",
196*61c4878aSAndroid Build Coastguard Worker    "reference.rst",
197*61c4878aSAndroid Build Coastguard Worker  ]
198*61c4878aSAndroid Build Coastguard Worker}
199