• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2020 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_threadx/binary_semaphore_inline.h",
28        "public/pw_sync_threadx/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:threadx",
38    ],
39    deps = [
40        # TODO(b/234876414): This should depend on ThreadX but our third parties
41        # currently do not have Bazel support.
42        "//pw_chrono:system_clock",
43    ],
44)
45
46pw_cc_library(
47    name = "binary_semaphore",
48    srcs = [
49        "binary_semaphore.cc",
50    ],
51    target_compatible_with = [
52        "//pw_build/constraints/rtos:threadx",
53    ],
54    deps = [
55        ":binary_semaphore_headers",
56        "//pw_chrono_threadx:system_clock_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_threadx/counting_semaphore_inline.h",
66        "public/pw_sync_threadx/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:threadx",
76    ],
77    deps = [
78        # TODO(b/234876414): This should depend on ThreadX but our third parties
79        # currently do not have Bazel support.
80        # do not have Bazel support.
81        "//pw_chrono:system_clock",
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:threadx",
92    ],
93    deps = [
94        ":counting_semaphore_headers",
95        "//pw_chrono_threadx:system_clock_headers",
96        "//pw_interrupt:context",
97        "//pw_sync:counting_semaphore_facade",
98    ],
99)
100
101pw_cc_library(
102    name = "mutex_headers",
103    hdrs = [
104        "public/pw_sync_threadx/mutex_inline.h",
105        "public/pw_sync_threadx/mutex_native.h",
106        "public_overrides/pw_sync_backend/mutex_inline.h",
107        "public_overrides/pw_sync_backend/mutex_native.h",
108    ],
109    includes = [
110        "public",
111        "public_overrides",
112    ],
113    target_compatible_with = [
114        "//pw_build/constraints/rtos:threadx",
115    ],
116    deps = [
117        # TODO(b/234876414): This should depend on ThreadX but our third parties currently
118        # do not have Bazel support.
119        "//pw_sync:mutex_facade",
120    ],
121)
122
123pw_cc_library(
124    name = "mutex",
125    target_compatible_with = [
126        "//pw_build/constraints/rtos:threadx",
127    ],
128    deps = [
129        ":mutex_headers",
130        "//pw_sync:mutex_facade",
131    ],
132)
133
134pw_cc_library(
135    name = "timed_mutex_headers",
136    hdrs = [
137        "public/pw_sync_threadx/timed_mutex_inline.h",
138        "public_overrides/pw_sync_backend/timed_mutex_inline.h",
139    ],
140    includes = [
141        "public",
142        "public_overrides",
143    ],
144    target_compatible_with = [
145        "//pw_build/constraints/rtos:threadx",
146    ],
147    deps = [
148        # TODO(b/234876414): This should depend on ThreadX but our third parties currently
149        # do not have Bazel support.
150        "//pw_chrono:system_clock",
151        "//pw_sync:timed_mutex_facade",
152    ],
153)
154
155pw_cc_library(
156    name = "timed_mutex",
157    srcs = [
158        "timed_mutex.cc",
159    ],
160    target_compatible_with = [
161        "//pw_build/constraints/rtos:threadx",
162    ],
163    deps = [
164        ":timed_mutex_headers",
165        "//pw_chrono_threadx:system_clock_headers",
166        "//pw_interrupt:context",
167        "//pw_sync:timed_mutex_facade",
168    ],
169)
170
171pw_cc_library(
172    name = "interrupt_spin_lock_headers",
173    hdrs = [
174        "public/pw_sync_threadx/interrupt_spin_lock_inline.h",
175        "public/pw_sync_threadx/interrupt_spin_lock_native.h",
176        "public_overrides/pw_sync_backend/interrupt_spin_lock_inline.h",
177        "public_overrides/pw_sync_backend/interrupt_spin_lock_native.h",
178    ],
179    includes = [
180        "public",
181        "public_overrides",
182    ],
183    # TODO(b/234876414): This should depend on ThreadX but our third parties currently
184    # do not have Bazel support.
185    target_compatible_with = [
186        "//pw_build/constraints/rtos:threadx",
187    ],
188)
189
190pw_cc_library(
191    name = "interrupt_spin_lock",
192    srcs = [
193        "interrupt_spin_lock.cc",
194    ],
195    target_compatible_with = [
196        "//pw_build/constraints/rtos:threadx",
197    ],
198    deps = [
199        ":interrupt_spin_lock_headers",
200        "//pw_sync:interrupt_spin_lock_facade",
201    ],
202)
203