xref: /aosp_15_r20/external/pigweed/pw_i2c/CMakeLists.txt (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1# Copyright 2023 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
15include($ENV{PW_ROOT}/pw_build/pigweed.cmake)
16include($ENV{PW_ROOT}/pw_protobuf_compiler/proto.cmake)
17
18pw_add_library(pw_i2c.address STATIC
19  HEADERS
20    public/pw_i2c/address.h
21  PUBLIC_INCLUDES
22    public
23  PUBLIC_DEPS
24    pw_assert
25  SOURCES
26    address.cc
27)
28
29pw_add_library(pw_i2c.initiator INTERFACE
30  HEADERS
31    public/pw_i2c/initiator.h
32  PUBLIC_INCLUDES
33    public
34  PUBLIC_DEPS
35    pw_bytes
36    pw_chrono.system_clock
37    pw_i2c.address
38    pw_status
39)
40
41pw_add_library(pw_i2c.device INTERFACE
42  HEADERS
43    public/pw_i2c/device.h
44  PUBLIC_INCLUDES
45    public
46  PUBLIC_DEPS
47    pw_bytes
48    pw_chrono.system_clock
49    pw_i2c.address
50    pw_i2c.initiator
51    pw_span
52    pw_status
53)
54
55pw_add_library(pw_i2c.register_device STATIC
56  HEADERS
57    public/pw_i2c/register_device.h
58  PUBLIC_INCLUDES
59    public
60  PUBLIC_DEPS
61    pw_bytes
62    pw_chrono.system_clock
63    pw_i2c.address
64    pw_i2c.device
65    pw_i2c.initiator
66    pw_result
67    pw_status
68  PRIVATE_DEPS
69    pw_assert
70  SOURCES
71    register_device.cc
72)
73
74pw_proto_library(pw_i2c.protos
75  SOURCES
76    i2c.proto
77  INPUTS
78    i2c.pwpb_options
79  PREFIX
80    pw_i2c
81)
82
83pw_add_library(pw_i2c.i2c_service STATIC
84  HEADERS
85    public/pw_i2c/i2c_service.h
86  PUBLIC_INCLUDES
87    public
88  PUBLIC_DEPS
89    pw_chrono.system_clock
90    pw_i2c.initiator
91    pw_i2c.protos.pwpb_rpc
92  PRIVATE_DEPS
93    pw_containers.vector
94    pw_i2c.address
95    pw_status
96  SOURCES
97    i2c_service.cc
98)
99
100pw_add_library(pw_i2c.mock STATIC
101  HEADERS
102    public/pw_i2c/initiator_mock.h
103  PUBLIC_INCLUDES
104    public
105  PUBLIC_DEPS
106    pw_bytes
107    pw_containers
108    pw_containers.to_array
109    pw_i2c.initiator
110  PRIVATE_DEPS
111    pw_assert
112    pw_unit_test
113  SOURCES
114    initiator_mock.cc
115)
116
117pw_add_library(pw_i2c.gmock INTERFACE
118  HEADERS
119    public/pw_i2c/initiator_gmock.h
120  PUBLIC_INCLUDES
121    public
122  PUBLIC_DEPS
123    pw_i2c.initiator
124    pw_third_party.googletest
125)
126
127pw_add_test(pw_i2c.address_test
128  SOURCES
129    address_test.cc
130  PRIVATE_DEPS
131    pw_i2c.address
132  GROUPS
133    modules
134    pw_i2c
135)
136
137if(NOT "${pw_chrono.system_clock_BACKEND}" STREQUAL "")
138pw_add_test(pw_i2c.device_test
139  SOURCES
140    device_test.cc
141  PRIVATE_DEPS
142    pw_containers
143    pw_i2c.device
144    pw_i2c.mock
145  GROUPS
146    modules
147    pw_i2c
148)
149
150pw_add_test(pw_i2c.register_device_test
151  SOURCES
152    register_device_test.cc
153  PRIVATE_DEPS
154    pw_assert
155    pw_i2c.register_device
156  GROUPS
157    modules
158    pw_i2c
159)
160
161pw_add_test(pw_i2c.initiator_mock_test
162  SOURCES
163    initiator_mock_test.cc
164  PUBLIC_DEPS
165    pw_containers
166    pw_i2c.mock
167  GROUPS
168    modules
169    pw_i2c
170)
171
172pw_add_test(pw_i2c.i2c_service_test
173  SOURCES
174    i2c_service_test.cc
175  PUBLIC_DEPS
176    pw_containers.vector
177    pw_i2c.i2c_service
178    pw_i2c.mock
179    pw_rpc.test_utils
180    pw_status
181  GROUPS
182    modules
183    pw_i2c
184)
185endif()
186