blob: 1e524f646f9162b192c46d98f540a5e38a99ff40 [file] [log] [blame]
Ewout van Bekkum6dc23f72022-01-19 16:48:21 -08001# 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
15include($ENV{PW_ROOT}/pw_build/pigweed.cmake)
16
17pw_add_module_config(pw_thread_freertos_CONFIG)
18
19pw_add_module_library(pw_thread_freertos.config
20 HEADERS
21 public/pw_thread_freertos/config.h
22 PUBLIC_INCLUDES
23 public
24 PUBLIC_DEPS
25 pw_third_party.freertos
26 ${pw_thread_freertos_CONFIG}
27)
28
29# This target provides the backend for pw::thread::Id & pw::this_thread::get_id.
30pw_add_module_library(pw_thread_freertos.id
31 IMPLEMENTS_FACADES
32 pw_thread.id
33 HEADERS
34 public/pw_thread_freertos/id_inline.h
35 public/pw_thread_freertos/id_native.h
36 public_overrides/pw_thread_backend/id_inline.h
37 public_overrides/pw_thread_backend/id_native.h
38 PUBLIC_INCLUDES
39 public
40 public_overrides
41 PUBLIC_DEPS
42 pw_assert
43 pw_interrupt.context
44 pw_third_party.freertos
45)
46
47# This target provides the backend for pw::this_thread::sleep_{for,until}.
48pw_add_module_library(pw_thread_freertos.sleep
49 IMPLEMENTS_FACADES
50 pw_thread.sleep
51 HEADERS
52 public/pw_thread_freertos/sleep_inline.h
53 public_overrides/pw_thread_backend/sleep_inline.h
54 PUBLIC_INCLUDES
55 public
56 public_overrides
57 PUBLIC_DEPS
58 pw_chrono.system_clock
59 SOURCES
60 sleep.cc
61 PRIVATE_DEPS
62 pw_assert
63 pw_chrono_freertos.system_clock
64 pw_third_party.freertos
65 pw_thread.id
66)
67
68# This target provides the backend for pw::thread::Thread and the headers needed
69# for thread creation.
70pw_add_module_library(pw_thread_freertos.thread
71 IMPLEMENTS_FACADES
72 pw_thread.thread
73 HEADERS
74 public/pw_thread_freertos/context.h
75 public/pw_thread_freertos/options.h
76 public/pw_thread_freertos/thread_inline.h
77 public/pw_thread_freertos/thread_native.h
78 public_overrides/pw_thread_backend/thread_inline.h
79 public_overrides/pw_thread_backend/thread_native.h
80 PUBLIC_INCLUDES
81 public
82 public_overrides
83 PUBLIC_DEPS
84 pw_assert
85 pw_polyfill.span
86 pw_string
87 pw_third_party.freertos
88 pw_thread.id
89 pw_thread_freertos.config
90 SOURCES
91 thread.cc
92)
93
94# This target provides the backend for pw::this_thread::yield.
95pw_add_module_library(pw_thread_freertos.yield
96 IMPLEMENTS_FACADES
97 pw_thread.yield
98 HEADERS
99 public/pw_thread_freertos/yield_inline.h
100 public_overrides/pw_thread_backend/yield_inline.h
101 PUBLIC_INCLUDES
102 public
103 public_overrides
104 PUBLIC_DEPS
105 pw_assert
106 pw_third_party.freertos
107 pw_thread.id
108)
109
110pw_add_module_library(pw_thread_freertos.util
111 HEADERS
112 public/pw_thread_freertos/util.h
113 PUBLIC_INCLUDES
114 public
115 PUBLIC_DEPS
116 pw_third_party.freertos
117 pw_function
118 pw_polyfill.span
119 pw_status
120 SOURCES
121 util.cc
122 PRIVATE_DEPS
123 pw_log
124)
125
126pw_add_module_library(pw_thread_freertos.snapshot
127 HEADERS
128 public/pw_thread_freertos/snapshot.h
129 PUBLIC_INCLUDES
130 public
131 PUBLIC_DEPS
132 pw_function
133 pw_polyfill.span
134 pw_protobuf
135 pw_status
136 pw_third_party.freertos
137 pw_thread.protos.pwpb
138 pw_thread.snapshot
139 pw_thread_freertos.config
140 SOURCES
141 snapshot.cc
142 PRIVATE_DEPS
143 pw_thread_freertos.freertos_tsktcb
144 pw_thread_freertos.util
145 pw_log
146)
147
148pw_add_facade(pw_thread_freertos.freertos_tsktcb
149 HEADERS
150 public/pw_thread_freertos/freertos_tsktcb.h
151 PUBLIC_INCLUDES
152 public
153 PUBLIC_DEPS
154 pw_third_party.freertos
155)