xref: /aosp_15_r20/external/pigweed/pw_sync_stl/CMakeLists.txt (revision 61c4878ac05f98d0ceed94b57d316916de578985)
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
15include($ENV{PW_ROOT}/pw_build/pigweed.cmake)
16
17# This target provides the backend for pw::sync::BinarySemaphore.
18pw_add_library(pw_sync_stl.binary_semaphore_backend STATIC
19  HEADERS
20    public/pw_sync_stl/binary_semaphore_inline.h
21    public/pw_sync_stl/binary_semaphore_native.h
22    public_overrides/pw_sync_backend/binary_semaphore_inline.h
23    public_overrides/pw_sync_backend/binary_semaphore_native.h
24  PUBLIC_INCLUDES
25    public
26    public_overrides
27  PUBLIC_DEPS
28    pw_sync.binary_semaphore.facade
29  SOURCES
30    binary_semaphore.cc
31  PRIVATE_DEPS
32    pw_assert
33    pw_chrono.system_clock
34)
35
36pw_add_library(pw_sync_stl.condition_variable_backend INTERFACE
37  HEADERS
38    public/pw_sync_stl/condition_variable_inline.h
39    public/pw_sync_stl/condition_variable_native.h
40    public_overrides/pw_sync_backend/condition_variable_inline.h
41    public_overrides/pw_sync_backend/condition_variable_native.h
42  PUBLIC_INCLUDES
43    public
44    public_overrides
45  PUBLIC_DEPS
46    pw_sync.condition_variable.facade
47)
48
49# This target provides the backend for pw::sync::CountingSemaphore.
50pw_add_library(pw_sync_stl.counting_semaphore_backend STATIC
51  HEADERS
52    public/pw_sync_stl/counting_semaphore_inline.h
53    public/pw_sync_stl/counting_semaphore_native.h
54    public_overrides/pw_sync_backend/counting_semaphore_inline.h
55    public_overrides/pw_sync_backend/counting_semaphore_native.h
56  PUBLIC_INCLUDES
57    public
58    public_overrides
59  PUBLIC_DEPS
60    pw_sync.counting_semaphore.facade
61  SOURCES
62    counting_semaphore.cc
63  PRIVATE_DEPS
64    pw_assert
65    pw_chrono.system_clock
66)
67
68# This target provides the backend for pw::sync::Mutex.
69pw_add_library(pw_sync_stl.mutex_backend STATIC
70  HEADERS
71    public/pw_sync_stl/mutex_inline.h
72    public/pw_sync_stl/mutex_native.h
73    public_overrides/pw_sync_backend/mutex_inline.h
74    public_overrides/pw_sync_backend/mutex_native.h
75  PUBLIC_INCLUDES
76    public
77    public_overrides
78  PUBLIC_DEPS
79    pw_sync.mutex.facade
80  SOURCES
81    mutex.cc
82  PRIVATE_DEPS
83    pw_assert
84)
85
86# This target provides the backend for pw::sync::TimedMutex.
87pw_add_library(pw_sync_stl.timed_mutex_backend INTERFACE
88  HEADERS
89    public/pw_sync_stl/timed_mutex_inline.h
90    public_overrides/pw_sync_backend/timed_mutex_inline.h
91  PUBLIC_INCLUDES
92    public
93    public_overrides
94  PUBLIC_DEPS
95    pw_sync.mutex
96    pw_chrono.system_clock
97    pw_sync.timed_mutex.facade
98)
99
100pw_add_library(pw_sync_stl.interrupt_spin_lock INTERFACE
101  HEADERS
102    public/pw_sync_stl/interrupt_spin_lock_inline.h
103    public/pw_sync_stl/interrupt_spin_lock_native.h
104    public_overrides/pw_sync_backend/interrupt_spin_lock_inline.h
105    public_overrides/pw_sync_backend/interrupt_spin_lock_native.h
106  PUBLIC_INCLUDES
107    public
108    public_overrides
109  PUBLIC_DEPS
110    pw_sync.interrupt_spin_lock.facade
111    pw_sync.yield_core
112)
113