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"])  # Apache License 2.0
23
24pw_cc_library(
25    name = "binary_semaphore_headers",
26    hdrs = [
27        "public/pw_sync_freertos/binary_semaphore_inline.h",
28        "public/pw_sync_freertos/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    deps = [
37        # TODO: This should depend on FreeRTOS but our third parties currently
38        # do not have Bazel support.
39        "//pw_chrono:system_clock",
40        "//pw_chrono_freertos:system_clock_headers",
41    ],
42)
43
44pw_cc_library(
45    name = "binary_semaphore",
46    srcs = [
47        "binary_semaphore.cc",
48    ],
49    deps = [
50        ":binary_semaphore_headers",
51        "//pw_interrupt:context",
52        "//pw_sync:binary_semaphore_facade",
53    ],
54)
55
56pw_cc_library(
57    name = "counting_semaphore_headers",
58    hdrs = [
59        "public/pw_sync_freertos/counting_semaphore_inline.h",
60        "public/pw_sync_freertos/counting_semaphore_native.h",
61        "public_overrides/pw_sync_backend/counting_semaphore_inline.h",
62        "public_overrides/pw_sync_backend/counting_semaphore_native.h",
63    ],
64    includes = [
65        "public",
66        "public_overrides",
67    ],
68    deps = [
69        # TODO: This should depend on FreeRTOS but our third parties currently
70        # do not have Bazel support.
71        "//pw_chrono:system_clock",
72        "//pw_chrono_freertos:system_clock_headers",
73    ],
74)
75
76pw_cc_library(
77    name = "counting_semaphore",
78    srcs = [
79        "counting_semaphore.cc",
80    ],
81    deps = [
82        ":counting_semaphore_headers",
83        "//pw_interrupt:context",
84        "//pw_sync:counting_semaphore_facade",
85    ],
86)
87
88pw_cc_library(
89    name = "mutex_headers",
90    hdrs = [
91        "public/pw_sync_freertos/mutex_inline.h",
92        "public/pw_sync_freertos/mutex_native.h",
93        "public_overrides/pw_sync_backend/mutex_inline.h",
94        "public_overrides/pw_sync_backend/mutex_native.h",
95    ],
96    includes = [
97        "public",
98        "public_overrides",
99    ],
100    deps = [
101        # TODO: This should depend on FreeRTOS but our third parties currently
102        # do not have Bazel support.
103        "//pw_sync:mutex_facade",
104    ],
105)
106
107pw_cc_library(
108    name = "mutex",
109    deps = [
110        ":mutex_headers",
111        "//pw_sync:mutex_facade",
112    ],
113)
114
115pw_cc_library(
116    name = "timed_mutex_headers",
117    hdrs = [
118        "public/pw_sync_freertos/timed_mutex_inline.h",
119        "public_overrides/pw_sync_backend/timed_mutex_inline.h",
120    ],
121    includes = [
122        "public",
123        "public_overrides",
124    ],
125    deps = [
126        # TODO: This should depend on FreeRTOS but our third parties currently
127        # do not have Bazel support.
128        "//pw_chrono:system_clock",
129        "//pw_chrono_freertos:system_clock_headers",
130        "//pw_sync:timed_mutex_facade",
131    ],
132)
133
134pw_cc_library(
135    name = "timed_mutex",
136    srcs = [
137        "timed_mutex.cc",
138    ],
139    deps = [
140        ":timed_mutex_headers",
141        "//pw_interrupt:context",
142        "//pw_sync:timed_mutex_facade",
143    ],
144)
145
146pw_cc_library(
147    name = "interrupt_spin_lock_headers",
148    hdrs = [
149        "public/pw_sync_freertos/interrupt_spin_lock_inline.h",
150        "public/pw_sync_freertos/interrupt_spin_lock_native.h",
151        "public_overrides/pw_sync_backend/interrupt_spin_lock_inline.h",
152        "public_overrides/pw_sync_backend/interrupt_spin_lock_native.h",
153    ],
154    includes = [
155        "public",
156        "public_overrides",
157    ],
158    # TODO: This should depend on FreeRTOS but our third parties currently
159    # do not have Bazel support.
160)
161
162pw_cc_library(
163    name = "interrupt_spin_lock",
164    srcs = [
165        "interrupt_spin_lock.cc",
166    ],
167    deps = [
168        ":interrupt_spin_lock_headers",
169        "//pw_interrupt:context",
170        "//pw_sync:interrupt_spin_lock_facade",
171    ],
172)
173