• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2021 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
15load(
16    "//pw_build:pigweed.bzl",
17    "pw_cc_library",
18)
19
20package(default_visibility = ["//visibility:public"])
21
22licenses(["notice"])
23
24pw_cc_library(
25    name = "binary_semaphore_headers",
26    hdrs = [
27        "public/pw_sync_embos/binary_semaphore_inline.h",
28        "public/pw_sync_embos/binary_semaphore_native.h",
29        "public_overrides/pw_sync_backend/binary_semaphore_inline.h",
30        "public_overrides/pw_sync_backend/binary_semaphore_native.h",
31    ],
32    includes = [
33        "public",
34        "public_overrides",
35    ],
36    target_compatible_with = [
37        "//pw_build/constraints/rtos:embos",
38    ],
39    deps = [
40        # TODO(b/234876414): This should depend on embOS but our third parties
41        # currently do not have Bazel support.
42        "//pw_chrono:system_clock",
43        "//pw_chrono_embos:system_clock_headers",
44    ],
45)
46
47pw_cc_library(
48    name = "binary_semaphore",
49    srcs = [
50        "binary_semaphore.cc",
51    ],
52    target_compatible_with = [
53        "//pw_build/constraints/rtos:embos",
54    ],
55    deps = [
56        ":binary_semaphore_headers",
57        "//pw_interrupt:context",
58        "//pw_sync:binary_semaphore_facade",
59    ],
60)
61
62pw_cc_library(
63    name = "counting_semaphore_headers",
64    hdrs = [
65        "public/pw_sync_embos/counting_semaphore_inline.h",
66        "public/pw_sync_embos/counting_semaphore_native.h",
67        "public_overrides/pw_sync_backend/counting_semaphore_inline.h",
68        "public_overrides/pw_sync_backend/counting_semaphore_native.h",
69    ],
70    includes = [
71        "public",
72        "public_overrides",
73    ],
74    target_compatible_with = [
75        "//pw_build/constraints/rtos:embos",
76    ],
77    deps = [
78        # TODO(b/234876414): This should depend on embOS but our third parties
79        # currently do not have Bazel support.
80        "//pw_chrono:system_clock",
81        "//pw_chrono_embos:system_clock_headers",
82    ],
83)
84
85pw_cc_library(
86    name = "counting_semaphore",
87    srcs = [
88        "counting_semaphore.cc",
89    ],
90    target_compatible_with = [
91        "//pw_build/constraints/rtos:embos",
92    ],
93    deps = [
94        ":counting_semaphore_headers",
95        "//pw_interrupt:context",
96        "//pw_sync:counting_semaphore_facade",
97    ],
98)
99
100pw_cc_library(
101    name = "mutex_headers",
102    hdrs = [
103        "public/pw_sync_embos/mutex_inline.h",
104        "public/pw_sync_embos/mutex_native.h",
105        "public_overrides/pw_sync_backend/mutex_inline.h",
106        "public_overrides/pw_sync_backend/mutex_native.h",
107    ],
108    includes = [
109        "public",
110        "public_overrides",
111    ],
112    target_compatible_with = [
113        "//pw_build/constraints/rtos:embos",
114    ],
115    deps = [
116        # TODO(b/234876414): This should depend on embOS but our third parties
117        # currently do not have Bazel support.
118        "//pw_sync:mutex_facade",
119    ],
120)
121
122pw_cc_library(
123    name = "mutex",
124    target_compatible_with = [
125        "//pw_build/constraints/rtos:embos",
126    ],
127    deps = [
128        ":mutex_headers",
129        "//pw_sync:mutex_facade",
130    ],
131)
132
133pw_cc_library(
134    name = "timed_mutex_headers",
135    hdrs = [
136        "public/pw_sync_embos/timed_mutex_inline.h",
137        "public_overrides/pw_sync_backend/timed_mutex_inline.h",
138    ],
139    includes = [
140        "public",
141        "public_overrides",
142    ],
143    target_compatible_with = [
144        "//pw_build/constraints/rtos:embos",
145    ],
146    deps = [
147        # TODO(b/234876414): This should depend on embOS but our third parties
148        # currently do not have Bazel support.
149        "//pw_chrono:system_clock",
150        "//pw_sync:timed_mutex_facade",
151    ],
152)
153
154pw_cc_library(
155    name = "timed_mutex",
156    srcs = [
157        "timed_mutex.cc",
158    ],
159    target_compatible_with = [
160        "//pw_build/constraints/rtos:embos",
161    ],
162    deps = [
163        ":timed_mutex_headers",
164        "//pw_chrono_embos:system_clock_headers",
165        "//pw_interrupt:context",
166        "//pw_sync:timed_mutex_facade",
167    ],
168)
169
170pw_cc_library(
171    name = "interrupt_spin_lock_headers",
172    hdrs = [
173        "public/pw_sync_embos/interrupt_spin_lock_inline.h",
174        "public/pw_sync_embos/interrupt_spin_lock_native.h",
175        "public_overrides/pw_sync_backend/interrupt_spin_lock_inline.h",
176        "public_overrides/pw_sync_backend/interrupt_spin_lock_native.h",
177    ],
178    includes = [
179        "public",
180        "public_overrides",
181    ],
182    target_compatible_with = [
183        "//pw_build/constraints/rtos:embos",
184    ],
185    # TODO(b/234876414): This should depend on embOS but our third parties
186    # currently do not have Bazel support.
187)
188
189pw_cc_library(
190    name = "interrupt_spin_lock",
191    srcs = [
192        "interrupt_spin_lock.cc",
193    ],
194    target_compatible_with = [
195        "//pw_build/constraints/rtos:embos",
196    ],
197    deps = [
198        ":interrupt_spin_lock_headers",
199        "//pw_sync:interrupt_spin_lock_facade",
200    ],
201)
202