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