xref: /aosp_15_r20/external/pigweed/pw_async/BUILD.gn (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1# Copyright 2022 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
15import("//build_overrides/pigweed.gni")
16
17import("$dir_pw_async/async.gni")
18import("$dir_pw_async/backend.gni")
19import("$dir_pw_async/fake_dispatcher_fixture.gni")
20import("$dir_pw_async/fake_dispatcher_test.gni")
21import("$dir_pw_async/heap_dispatcher.gni")
22import("$dir_pw_build/facade.gni")
23import("$dir_pw_build/target_types.gni")
24import("$dir_pw_chrono/backend.gni")
25import("$dir_pw_docgen/docs.gni")
26
27config("public_include_path") {
28  include_dirs = [ "public" ]
29}
30
31pw_source_set("dispatcher") {
32  public_configs = [ ":public_include_path" ]
33  public_deps = [
34    ":types",
35    "$dir_pw_chrono:system_clock",
36    dir_pw_function,
37    dir_pw_status,
38  ]
39  public = [
40    "public/pw_async/dispatcher.h",
41    "public/pw_async/function_dispatcher.h",
42  ]
43  visibility = [
44                 ":*",
45                 "$dir_pw_async_basic:*",
46                 "$dir_pw_bluetooth_sapphire/*",
47                 "$dir_pw_grpc/*",
48               ] + pw_async_EXPERIMENTAL_MODULE_VISIBILITY
49}
50
51pw_facade("task") {
52  backend = pw_async_TASK_BACKEND
53  public_configs = [ ":public_include_path" ]
54  public_deps = [
55    ":types",
56    "$dir_pw_chrono:system_clock",
57    dir_pw_function,
58    dir_pw_status,
59  ]
60  public = [ "public/pw_async/task.h" ]
61  visibility = [
62                 ":*",
63                 "$dir_pw_async_basic:*",
64                 "$dir_pw_bluetooth_sapphire/*",
65                 "$dir_pw_grpc/*",
66               ] + pw_async_EXPERIMENTAL_MODULE_VISIBILITY
67}
68
69pw_source_set("types") {
70  public_configs = [ ":public_include_path" ]
71  public_deps = [
72    dir_pw_function,
73    dir_pw_status,
74  ]
75  public = [
76    "public/pw_async/context.h",
77    "public/pw_async/task_function.h",
78  ]
79  visibility = [
80                 ":*",
81                 "$dir_pw_async_basic:*",
82               ] + pw_async_EXPERIMENTAL_MODULE_VISIBILITY
83}
84
85pw_facade("fake_dispatcher") {
86  backend = pw_async_FAKE_DISPATCHER_BACKEND
87  public_configs = [ ":public_include_path" ]
88  public = [ "public/pw_async/fake_dispatcher.h" ]
89  public_deps = [ ":dispatcher" ]
90  visibility = [
91                 ":*",
92                 "$dir_pw_async_basic:*",
93                 "$dir_pw_bluetooth_sapphire/*",
94               ] + pw_async_EXPERIMENTAL_MODULE_VISIBILITY
95}
96
97fake_dispatcher_fixture("fake_dispatcher_fixture") {
98  backend = ":fake_dispatcher"
99  visibility = [
100                 ":*",
101                 "$dir_pw_async_basic:*",
102                 "$dir_pw_bluetooth_sapphire/*",
103               ] + pw_async_EXPERIMENTAL_MODULE_VISIBILITY
104}
105
106pw_async_heap_dispatcher_source_set("heap_dispatcher") {
107  task_backend = ":task"
108  visibility = [
109                 ":*",
110                 "$dir_pw_async_basic:*",
111                 "$dir_pw_bluetooth_sapphire/*",
112               ] + pw_async_EXPERIMENTAL_MODULE_VISIBILITY
113}
114
115pw_test_group("tests") {
116}
117
118pw_doc_group("docs") {
119  sources = [
120    "backends.rst",
121    "docs.rst",
122  ]
123}
124
125# Satisfy source_is_in_build_files presubmit step
126pw_source_set("satisfy_presubmit") {
127  sources = [
128    "fake_dispatcher_test.cc",
129    "heap_dispatcher.cc",
130    "public/pw_async/fake_dispatcher_fixture.h",
131    "public/pw_async/heap_dispatcher.h",
132  ]
133  visibility = []
134}
135