1*61c4878aSAndroid Build Coastguard Worker# Copyright 2024 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 Workerimport("$dir_pw_build/target_types.gni") 17*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_docgen/docs.gni") 18*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_unit_test/test.gni") 19*61c4878aSAndroid Build Coastguard Worker 20*61c4878aSAndroid Build Coastguard Workerconfig("public_includes") { 21*61c4878aSAndroid Build Coastguard Worker include_dirs = [ "public" ] 22*61c4878aSAndroid Build Coastguard Worker} 23*61c4878aSAndroid Build Coastguard Worker 24*61c4878aSAndroid Build Coastguard Workerpw_source_set("pw_digital_io_linux") { 25*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":public_includes" ] 26*61c4878aSAndroid Build Coastguard Worker public = [ 27*61c4878aSAndroid Build Coastguard Worker "public/pw_digital_io_linux/digital_io.h", 28*61c4878aSAndroid Build Coastguard Worker "public/pw_digital_io_linux/internal/owned_fd.h", 29*61c4878aSAndroid Build Coastguard Worker "public/pw_digital_io_linux/notifier.h", 30*61c4878aSAndroid Build Coastguard Worker ] 31*61c4878aSAndroid Build Coastguard Worker public_deps = [ 32*61c4878aSAndroid Build Coastguard Worker "$dir_pw_digital_io", 33*61c4878aSAndroid Build Coastguard Worker "$dir_pw_result", 34*61c4878aSAndroid Build Coastguard Worker "$dir_pw_status", 35*61c4878aSAndroid Build Coastguard Worker "$dir_pw_sync:lock_annotations", 36*61c4878aSAndroid Build Coastguard Worker "$dir_pw_sync:mutex", 37*61c4878aSAndroid Build Coastguard Worker "$dir_pw_thread:thread", 38*61c4878aSAndroid Build Coastguard Worker ] 39*61c4878aSAndroid Build Coastguard Worker deps = [ "$dir_pw_log" ] 40*61c4878aSAndroid Build Coastguard Worker sources = [ 41*61c4878aSAndroid Build Coastguard Worker "digital_io.cc", 42*61c4878aSAndroid Build Coastguard Worker "log_errno.h", 43*61c4878aSAndroid Build Coastguard Worker "notifier.cc", 44*61c4878aSAndroid Build Coastguard Worker ] 45*61c4878aSAndroid Build Coastguard Worker} 46*61c4878aSAndroid Build Coastguard Worker 47*61c4878aSAndroid Build Coastguard Workerpw_executable("pw_digital_io_linux_cli") { 48*61c4878aSAndroid Build Coastguard Worker sources = [ "digital_io_cli.cc" ] 49*61c4878aSAndroid Build Coastguard Worker deps = [ 50*61c4878aSAndroid Build Coastguard Worker ":pw_digital_io_linux", 51*61c4878aSAndroid Build Coastguard Worker "$dir_pw_log", 52*61c4878aSAndroid Build Coastguard Worker ] 53*61c4878aSAndroid Build Coastguard Worker} 54*61c4878aSAndroid Build Coastguard Worker 55*61c4878aSAndroid Build Coastguard Worker# TODO(b/328262654): Move this to a more appropriate module. 56*61c4878aSAndroid Build Coastguard Workerpw_source_set("mock_vfs") { 57*61c4878aSAndroid Build Coastguard Worker public_configs = [ ":public_includes" ] 58*61c4878aSAndroid Build Coastguard Worker public = [ "mock_vfs.h" ] 59*61c4878aSAndroid Build Coastguard Worker public_deps = [ "$dir_pw_log" ] 60*61c4878aSAndroid Build Coastguard Worker sources = [ 61*61c4878aSAndroid Build Coastguard Worker "log_errno.h", 62*61c4878aSAndroid Build Coastguard Worker "mock_vfs.cc", 63*61c4878aSAndroid Build Coastguard Worker ] 64*61c4878aSAndroid Build Coastguard Worker deps = [ "$dir_pw_assert" ] 65*61c4878aSAndroid Build Coastguard Worker} 66*61c4878aSAndroid Build Coastguard Worker 67*61c4878aSAndroid Build Coastguard Workerpw_test("digital_io_test") { 68*61c4878aSAndroid Build Coastguard Worker enable_if = current_os == "linux" 69*61c4878aSAndroid Build Coastguard Worker sources = [ "digital_io_test.cc" ] 70*61c4878aSAndroid Build Coastguard Worker deps = [ 71*61c4878aSAndroid Build Coastguard Worker ":mock_vfs", 72*61c4878aSAndroid Build Coastguard Worker ":pw_digital_io_linux", 73*61c4878aSAndroid Build Coastguard Worker "$dir_pw_assert", 74*61c4878aSAndroid Build Coastguard Worker "$dir_pw_log", 75*61c4878aSAndroid Build Coastguard Worker "$dir_pw_sync:mutex", 76*61c4878aSAndroid Build Coastguard Worker "$dir_pw_sync:timed_thread_notification", 77*61c4878aSAndroid Build Coastguard Worker "$dir_pw_thread:thread", 78*61c4878aSAndroid Build Coastguard Worker "$dir_pw_thread_stl:thread", 79*61c4878aSAndroid Build Coastguard Worker ] 80*61c4878aSAndroid Build Coastguard Worker ldflags = [ 81*61c4878aSAndroid Build Coastguard Worker "-Wl,--wrap=close", 82*61c4878aSAndroid Build Coastguard Worker "-Wl,--wrap=ioctl", 83*61c4878aSAndroid Build Coastguard Worker "-Wl,--wrap=read", 84*61c4878aSAndroid Build Coastguard Worker ] 85*61c4878aSAndroid Build Coastguard Worker} 86*61c4878aSAndroid Build Coastguard Worker 87*61c4878aSAndroid Build Coastguard Workerpw_test("notifier_test") { 88*61c4878aSAndroid Build Coastguard Worker enable_if = current_os == "linux" 89*61c4878aSAndroid Build Coastguard Worker sources = [ 90*61c4878aSAndroid Build Coastguard Worker "log_errno.h", 91*61c4878aSAndroid Build Coastguard Worker "notifier_test.cc", 92*61c4878aSAndroid Build Coastguard Worker ] 93*61c4878aSAndroid Build Coastguard Worker deps = [ 94*61c4878aSAndroid Build Coastguard Worker ":pw_digital_io_linux", 95*61c4878aSAndroid Build Coastguard Worker "$dir_pw_assert", 96*61c4878aSAndroid Build Coastguard Worker "$dir_pw_log", 97*61c4878aSAndroid Build Coastguard Worker "$dir_pw_sync:counting_semaphore", 98*61c4878aSAndroid Build Coastguard Worker "$dir_pw_thread:thread", 99*61c4878aSAndroid Build Coastguard Worker "$dir_pw_thread_stl:thread", 100*61c4878aSAndroid Build Coastguard Worker ] 101*61c4878aSAndroid Build Coastguard Worker} 102*61c4878aSAndroid Build Coastguard Worker 103*61c4878aSAndroid Build Coastguard Workerpw_test_group("tests") { 104*61c4878aSAndroid Build Coastguard Worker tests = [ 105*61c4878aSAndroid Build Coastguard Worker ":digital_io_test", 106*61c4878aSAndroid Build Coastguard Worker ":notifier_test", 107*61c4878aSAndroid Build Coastguard Worker ] 108*61c4878aSAndroid Build Coastguard Worker group_deps = [ "examples" ] 109*61c4878aSAndroid Build Coastguard Worker} 110*61c4878aSAndroid Build Coastguard Worker 111*61c4878aSAndroid Build Coastguard Workerpw_doc_group("docs") { 112*61c4878aSAndroid Build Coastguard Worker inputs = [ 113*61c4878aSAndroid Build Coastguard Worker "examples/input.cc", 114*61c4878aSAndroid Build Coastguard Worker "examples/output.cc", 115*61c4878aSAndroid Build Coastguard Worker "examples/interrupt.cc", 116*61c4878aSAndroid Build Coastguard Worker ] 117*61c4878aSAndroid Build Coastguard Worker sources = [ "docs.rst" ] 118*61c4878aSAndroid Build Coastguard Worker} 119