xref: /aosp_15_r20/external/pigweed/pw_allocator/BUILD.gn (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1*61c4878aSAndroid Build Coastguard Worker# Copyright 2023 The Pigweed Authors
2*61c4878aSAndroid Build Coastguard Worker#
3*61c4878aSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); you may not
4*61c4878aSAndroid Build Coastguard Worker# use this file except in compliance with the License. You may obtain a copy of
5*61c4878aSAndroid Build Coastguard Worker# the License at
6*61c4878aSAndroid Build Coastguard Worker#
7*61c4878aSAndroid Build Coastguard Worker#     https://www.apache.org/licenses/LICENSE-2.0
8*61c4878aSAndroid Build Coastguard Worker#
9*61c4878aSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
10*61c4878aSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11*61c4878aSAndroid Build Coastguard Worker# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12*61c4878aSAndroid Build Coastguard Worker# License for the specific language governing permissions and limitations under
13*61c4878aSAndroid Build Coastguard Worker# the License.
14*61c4878aSAndroid Build Coastguard Worker
15*61c4878aSAndroid Build Coastguard Workerimport("//build_overrides/pigweed.gni")
16*61c4878aSAndroid Build Coastguard Worker
17*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_bloat/bloat.gni")
18*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_build/module_config.gni")
19*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_build/target_types.gni")
20*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_docgen/docs.gni")
21*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_fuzzer/fuzz_test.gni")
22*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_sync/backend.gni")
23*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_thread/backend.gni")
24*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_unit_test/test.gni")
25*61c4878aSAndroid Build Coastguard Worker
26*61c4878aSAndroid Build Coastguard Workergroup("pw_allocator") {
27*61c4878aSAndroid Build Coastguard Worker  public_deps = [ ":allocator" ]
28*61c4878aSAndroid Build Coastguard Worker}
29*61c4878aSAndroid Build Coastguard Worker
30*61c4878aSAndroid Build Coastguard Worker# Module configuration
31*61c4878aSAndroid Build Coastguard Worker
32*61c4878aSAndroid Build Coastguard Workerdeclare_args() {
33*61c4878aSAndroid Build Coastguard Worker  # The build target that overrides the default configuration options for this
34*61c4878aSAndroid Build Coastguard Worker  # module. This should point to a source set that provides defines through a
35*61c4878aSAndroid Build Coastguard Worker  # public config (which may -include a file or add defines directly).
36*61c4878aSAndroid Build Coastguard Worker  pw_allocator_CONFIG = pw_build_DEFAULT_MODULE_CONFIG
37*61c4878aSAndroid Build Coastguard Worker}
38*61c4878aSAndroid Build Coastguard Worker
39*61c4878aSAndroid Build Coastguard Workerconfig("public_include_path") {
40*61c4878aSAndroid Build Coastguard Worker  include_dirs = [ "public" ]
41*61c4878aSAndroid Build Coastguard Worker  visibility = [ ":*" ]
42*61c4878aSAndroid Build Coastguard Worker}
43*61c4878aSAndroid Build Coastguard Worker
44*61c4878aSAndroid Build Coastguard Workerpw_source_set("config") {
45*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_allocator/config.h" ]
46*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
47*61c4878aSAndroid Build Coastguard Worker  public_deps = [ pw_allocator_CONFIG ]
48*61c4878aSAndroid Build Coastguard Worker}
49*61c4878aSAndroid Build Coastguard Worker
50*61c4878aSAndroid Build Coastguard Workerconfig("test_config") {
51*61c4878aSAndroid Build Coastguard Worker  defines = [
52*61c4878aSAndroid Build Coastguard Worker    "PW_ALLOCATOR_STRICT_VALIDATION=1",
53*61c4878aSAndroid Build Coastguard Worker    "PW_ALLOCATOR_BLOCK_POISON_INTERVAL=4",
54*61c4878aSAndroid Build Coastguard Worker  ]
55*61c4878aSAndroid Build Coastguard Worker}
56*61c4878aSAndroid Build Coastguard Worker
57*61c4878aSAndroid Build Coastguard Worker# Libraries
58*61c4878aSAndroid Build Coastguard Worker
59*61c4878aSAndroid Build Coastguard Workerpw_source_set("allocator") {
60*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
61*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_allocator/allocator.h" ]
62*61c4878aSAndroid Build Coastguard Worker  public_deps = [
63*61c4878aSAndroid Build Coastguard Worker    ":deallocator",
64*61c4878aSAndroid Build Coastguard Worker    dir_pw_result,
65*61c4878aSAndroid Build Coastguard Worker  ]
66*61c4878aSAndroid Build Coastguard Worker  sources = [ "allocator.cc" ]
67*61c4878aSAndroid Build Coastguard Worker}
68*61c4878aSAndroid Build Coastguard Worker
69*61c4878aSAndroid Build Coastguard Workerpw_source_set("allocator_as_pool") {
70*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
71*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_allocator/allocator_as_pool.h" ]
72*61c4878aSAndroid Build Coastguard Worker  public_deps = [
73*61c4878aSAndroid Build Coastguard Worker    ":allocator",
74*61c4878aSAndroid Build Coastguard Worker    ":pool",
75*61c4878aSAndroid Build Coastguard Worker    dir_pw_status,
76*61c4878aSAndroid Build Coastguard Worker  ]
77*61c4878aSAndroid Build Coastguard Worker  sources = [ "allocator_as_pool.cc" ]
78*61c4878aSAndroid Build Coastguard Worker}
79*61c4878aSAndroid Build Coastguard Worker
80*61c4878aSAndroid Build Coastguard Workerpw_source_set("best_fit") {
81*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
82*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_allocator/best_fit.h" ]
83*61c4878aSAndroid Build Coastguard Worker  public_deps = [
84*61c4878aSAndroid Build Coastguard Worker    ":block_allocator",
85*61c4878aSAndroid Build Coastguard Worker    ":config",
86*61c4878aSAndroid Build Coastguard Worker    "block:detailed_block",
87*61c4878aSAndroid Build Coastguard Worker    "bucket:fast_sorted",
88*61c4878aSAndroid Build Coastguard Worker    "bucket:sorted",
89*61c4878aSAndroid Build Coastguard Worker  ]
90*61c4878aSAndroid Build Coastguard Worker}
91*61c4878aSAndroid Build Coastguard Worker
92*61c4878aSAndroid Build Coastguard Worker# TODO(b/376730645): Remove deprecated interfaces.
93*61c4878aSAndroid Build Coastguard Workerpw_source_set("best_fit_block_allocator") {
94*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
95*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_allocator/best_fit_block_allocator.h" ]
96*61c4878aSAndroid Build Coastguard Worker  public_deps = [ ":best_fit" ]
97*61c4878aSAndroid Build Coastguard Worker}
98*61c4878aSAndroid Build Coastguard Worker
99*61c4878aSAndroid Build Coastguard Workerpw_source_set("block_allocator") {
100*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
101*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_allocator/block_allocator.h" ]
102*61c4878aSAndroid Build Coastguard Worker  public_deps = [
103*61c4878aSAndroid Build Coastguard Worker    ":allocator",
104*61c4878aSAndroid Build Coastguard Worker    ":fragmentation",
105*61c4878aSAndroid Build Coastguard Worker    "block:allocatable",
106*61c4878aSAndroid Build Coastguard Worker    "block:basic",
107*61c4878aSAndroid Build Coastguard Worker    "block:iterable",
108*61c4878aSAndroid Build Coastguard Worker    "block:poisonable",
109*61c4878aSAndroid Build Coastguard Worker    "block:with_layout",
110*61c4878aSAndroid Build Coastguard Worker    dir_pw_bytes,
111*61c4878aSAndroid Build Coastguard Worker    dir_pw_result,
112*61c4878aSAndroid Build Coastguard Worker    dir_pw_status,
113*61c4878aSAndroid Build Coastguard Worker  ]
114*61c4878aSAndroid Build Coastguard Worker  deps = [ dir_pw_assert ]
115*61c4878aSAndroid Build Coastguard Worker  sources = [ "block_allocator.cc" ]
116*61c4878aSAndroid Build Coastguard Worker}
117*61c4878aSAndroid Build Coastguard Worker
118*61c4878aSAndroid Build Coastguard Workerpw_source_set("bucket_allocator") {
119*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
120*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_allocator/bucket_allocator.h" ]
121*61c4878aSAndroid Build Coastguard Worker  public_deps = [
122*61c4878aSAndroid Build Coastguard Worker    ":block_allocator",
123*61c4878aSAndroid Build Coastguard Worker    "block:detailed_block",
124*61c4878aSAndroid Build Coastguard Worker    "bucket:unordered",
125*61c4878aSAndroid Build Coastguard Worker    dir_pw_status,
126*61c4878aSAndroid Build Coastguard Worker  ]
127*61c4878aSAndroid Build Coastguard Worker}
128*61c4878aSAndroid Build Coastguard Worker
129*61c4878aSAndroid Build Coastguard Worker# TODO(b/376730645): Remove deprecated interfaces.
130*61c4878aSAndroid Build Coastguard Workerpw_source_set("bucket_block_allocator") {
131*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
132*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_allocator/bucket_block_allocator.h" ]
133*61c4878aSAndroid Build Coastguard Worker  public_deps = [ ":bucket_allocator" ]
134*61c4878aSAndroid Build Coastguard Worker}
135*61c4878aSAndroid Build Coastguard Worker
136*61c4878aSAndroid Build Coastguard Workerpw_source_set("buddy_allocator") {
137*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
138*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_allocator/buddy_allocator.h" ]
139*61c4878aSAndroid Build Coastguard Worker  public_deps = [
140*61c4878aSAndroid Build Coastguard Worker    ":allocator",
141*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_containers:vector",
142*61c4878aSAndroid Build Coastguard Worker    "block:basic",
143*61c4878aSAndroid Build Coastguard Worker    "bucket:unordered",
144*61c4878aSAndroid Build Coastguard Worker    dir_pw_bytes,
145*61c4878aSAndroid Build Coastguard Worker    dir_pw_status,
146*61c4878aSAndroid Build Coastguard Worker  ]
147*61c4878aSAndroid Build Coastguard Worker  deps = [
148*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_bytes:alignment",
149*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_third_party/fuchsia:stdcompat",
150*61c4878aSAndroid Build Coastguard Worker    dir_pw_assert,
151*61c4878aSAndroid Build Coastguard Worker  ]
152*61c4878aSAndroid Build Coastguard Worker  sources = [ "buddy_allocator.cc" ]
153*61c4878aSAndroid Build Coastguard Worker}
154*61c4878aSAndroid Build Coastguard Worker
155*61c4878aSAndroid Build Coastguard Workerpw_source_set("buffer") {
156*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
157*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_allocator/buffer.h" ]
158*61c4878aSAndroid Build Coastguard Worker  public_deps = [
159*61c4878aSAndroid Build Coastguard Worker    dir_pw_bytes,
160*61c4878aSAndroid Build Coastguard Worker    dir_pw_result,
161*61c4878aSAndroid Build Coastguard Worker  ]
162*61c4878aSAndroid Build Coastguard Worker  deps = [
163*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_bytes:alignment",
164*61c4878aSAndroid Build Coastguard Worker    dir_pw_assert,
165*61c4878aSAndroid Build Coastguard Worker  ]
166*61c4878aSAndroid Build Coastguard Worker}
167*61c4878aSAndroid Build Coastguard Worker
168*61c4878aSAndroid Build Coastguard Workerpw_source_set("bump_allocator") {
169*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
170*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_allocator/bump_allocator.h" ]
171*61c4878aSAndroid Build Coastguard Worker  public_deps = [
172*61c4878aSAndroid Build Coastguard Worker    ":allocator",
173*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_bytes:alignment",
174*61c4878aSAndroid Build Coastguard Worker    dir_pw_bytes,
175*61c4878aSAndroid Build Coastguard Worker  ]
176*61c4878aSAndroid Build Coastguard Worker  deps = [ ":buffer" ]
177*61c4878aSAndroid Build Coastguard Worker  sources = [ "bump_allocator.cc" ]
178*61c4878aSAndroid Build Coastguard Worker}
179*61c4878aSAndroid Build Coastguard Worker
180*61c4878aSAndroid Build Coastguard Workerpw_source_set("chunk_pool") {
181*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
182*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_allocator/chunk_pool.h" ]
183*61c4878aSAndroid Build Coastguard Worker  public_deps = [
184*61c4878aSAndroid Build Coastguard Worker    ":pool",
185*61c4878aSAndroid Build Coastguard Worker    dir_pw_bytes,
186*61c4878aSAndroid Build Coastguard Worker    dir_pw_result,
187*61c4878aSAndroid Build Coastguard Worker  ]
188*61c4878aSAndroid Build Coastguard Worker  deps = [
189*61c4878aSAndroid Build Coastguard Worker    ":buffer",
190*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_assert:check",
191*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_bytes:alignment",
192*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_third_party/fuchsia:stdcompat",
193*61c4878aSAndroid Build Coastguard Worker  ]
194*61c4878aSAndroid Build Coastguard Worker  sources = [ "chunk_pool.cc" ]
195*61c4878aSAndroid Build Coastguard Worker}
196*61c4878aSAndroid Build Coastguard Worker
197*61c4878aSAndroid Build Coastguard Workerpw_source_set("deallocator") {
198*61c4878aSAndroid Build Coastguard Worker  sources = [ "unique_ptr.cc" ]
199*61c4878aSAndroid Build Coastguard Worker  public = [
200*61c4878aSAndroid Build Coastguard Worker    "public/pw_allocator/capability.h",
201*61c4878aSAndroid Build Coastguard Worker    "public/pw_allocator/deallocator.h",
202*61c4878aSAndroid Build Coastguard Worker    "public/pw_allocator/layout.h",
203*61c4878aSAndroid Build Coastguard Worker    "public/pw_allocator/unique_ptr.h",
204*61c4878aSAndroid Build Coastguard Worker  ]
205*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
206*61c4878aSAndroid Build Coastguard Worker  public_deps = [
207*61c4878aSAndroid Build Coastguard Worker    dir_pw_assert,
208*61c4878aSAndroid Build Coastguard Worker    dir_pw_preprocessor,
209*61c4878aSAndroid Build Coastguard Worker    dir_pw_result,
210*61c4878aSAndroid Build Coastguard Worker    dir_pw_status,
211*61c4878aSAndroid Build Coastguard Worker  ]
212*61c4878aSAndroid Build Coastguard Worker}
213*61c4878aSAndroid Build Coastguard Worker
214*61c4878aSAndroid Build Coastguard Worker# TODO(b/376730645): Remove deprecated interfaces.
215*61c4878aSAndroid Build Coastguard Workerpw_source_set("dual_first_fit_block_allocator") {
216*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
217*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_allocator/dual_first_fit_block_allocator.h" ]
218*61c4878aSAndroid Build Coastguard Worker  public_deps = [ ":first_fit" ]
219*61c4878aSAndroid Build Coastguard Worker}
220*61c4878aSAndroid Build Coastguard Worker
221*61c4878aSAndroid Build Coastguard Workerpw_source_set("fallback_allocator") {
222*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
223*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_allocator/fallback_allocator.h" ]
224*61c4878aSAndroid Build Coastguard Worker  public_deps = [
225*61c4878aSAndroid Build Coastguard Worker    ":allocator",
226*61c4878aSAndroid Build Coastguard Worker    ":deallocator",
227*61c4878aSAndroid Build Coastguard Worker    dir_pw_result,
228*61c4878aSAndroid Build Coastguard Worker    dir_pw_status,
229*61c4878aSAndroid Build Coastguard Worker  ]
230*61c4878aSAndroid Build Coastguard Worker  sources = [ "fallback_allocator.cc" ]
231*61c4878aSAndroid Build Coastguard Worker  deps = [ "$dir_pw_assert:check" ]
232*61c4878aSAndroid Build Coastguard Worker}
233*61c4878aSAndroid Build Coastguard Worker
234*61c4878aSAndroid Build Coastguard Workerpw_source_set("first_fit") {
235*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
236*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_allocator/first_fit.h" ]
237*61c4878aSAndroid Build Coastguard Worker  public_deps = [
238*61c4878aSAndroid Build Coastguard Worker    ":block_allocator",
239*61c4878aSAndroid Build Coastguard Worker    ":config",
240*61c4878aSAndroid Build Coastguard Worker    "block:detailed_block",
241*61c4878aSAndroid Build Coastguard Worker    "bucket:sequenced",
242*61c4878aSAndroid Build Coastguard Worker  ]
243*61c4878aSAndroid Build Coastguard Worker}
244*61c4878aSAndroid Build Coastguard Worker
245*61c4878aSAndroid Build Coastguard Worker# TODO(b/376730645): Remove deprecated interfaces.
246*61c4878aSAndroid Build Coastguard Workerpw_source_set("first_fit_block_allocator") {
247*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
248*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_allocator/first_fit_block_allocator.h" ]
249*61c4878aSAndroid Build Coastguard Worker  public_deps = [ ":first_fit" ]
250*61c4878aSAndroid Build Coastguard Worker}
251*61c4878aSAndroid Build Coastguard Worker
252*61c4878aSAndroid Build Coastguard Workerpw_source_set("fragmentation") {
253*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
254*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_allocator/fragmentation.h" ]
255*61c4878aSAndroid Build Coastguard Worker  sources = [ "fragmentation.cc" ]
256*61c4878aSAndroid Build Coastguard Worker}
257*61c4878aSAndroid Build Coastguard Worker
258*61c4878aSAndroid Build Coastguard Workerpw_source_set("freelist_heap") {
259*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
260*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_allocator/freelist_heap.h" ]
261*61c4878aSAndroid Build Coastguard Worker  public_deps = [
262*61c4878aSAndroid Build Coastguard Worker    ":bucket_allocator",
263*61c4878aSAndroid Build Coastguard Worker    dir_pw_assert,
264*61c4878aSAndroid Build Coastguard Worker    dir_pw_bytes,
265*61c4878aSAndroid Build Coastguard Worker    dir_pw_preprocessor,
266*61c4878aSAndroid Build Coastguard Worker  ]
267*61c4878aSAndroid Build Coastguard Worker}
268*61c4878aSAndroid Build Coastguard Worker
269*61c4878aSAndroid Build Coastguard Worker# TODO(b/376730645): Remove deprecated interfaces.
270*61c4878aSAndroid Build Coastguard Workerpw_source_set("last_fit_block_allocator") {
271*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
272*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_allocator/last_fit_block_allocator.h" ]
273*61c4878aSAndroid Build Coastguard Worker  public_deps = [ ":first_fit" ]
274*61c4878aSAndroid Build Coastguard Worker}
275*61c4878aSAndroid Build Coastguard Worker
276*61c4878aSAndroid Build Coastguard Workerpw_source_set("libc_allocator") {
277*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
278*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_allocator/libc_allocator.h" ]
279*61c4878aSAndroid Build Coastguard Worker  public_deps = [ ":allocator" ]
280*61c4878aSAndroid Build Coastguard Worker  sources = [ "libc_allocator.cc" ]
281*61c4878aSAndroid Build Coastguard Worker}
282*61c4878aSAndroid Build Coastguard Worker
283*61c4878aSAndroid Build Coastguard Workerpw_source_set("null_allocator") {
284*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
285*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_allocator/null_allocator.h" ]
286*61c4878aSAndroid Build Coastguard Worker  public_deps = [ ":allocator" ]
287*61c4878aSAndroid Build Coastguard Worker  sources = [ "null_allocator.cc" ]
288*61c4878aSAndroid Build Coastguard Worker}
289*61c4878aSAndroid Build Coastguard Worker
290*61c4878aSAndroid Build Coastguard Workerpw_source_set("pmr_allocator") {
291*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
292*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_allocator/pmr_allocator.h" ]
293*61c4878aSAndroid Build Coastguard Worker  public_deps = [
294*61c4878aSAndroid Build Coastguard Worker    ":allocator",
295*61c4878aSAndroid Build Coastguard Worker    ":config",
296*61c4878aSAndroid Build Coastguard Worker  ]
297*61c4878aSAndroid Build Coastguard Worker  sources = [ "pmr_allocator.cc" ]
298*61c4878aSAndroid Build Coastguard Worker}
299*61c4878aSAndroid Build Coastguard Worker
300*61c4878aSAndroid Build Coastguard Workerpw_source_set("pool") {
301*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
302*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_allocator/pool.h" ]
303*61c4878aSAndroid Build Coastguard Worker  public_deps = [
304*61c4878aSAndroid Build Coastguard Worker    ":deallocator",
305*61c4878aSAndroid Build Coastguard Worker    dir_pw_bytes,
306*61c4878aSAndroid Build Coastguard Worker    dir_pw_result,
307*61c4878aSAndroid Build Coastguard Worker  ]
308*61c4878aSAndroid Build Coastguard Worker}
309*61c4878aSAndroid Build Coastguard Worker
310*61c4878aSAndroid Build Coastguard Workerpw_source_set("synchronized_allocator") {
311*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
312*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_allocator/synchronized_allocator.h" ]
313*61c4878aSAndroid Build Coastguard Worker  public_deps = [
314*61c4878aSAndroid Build Coastguard Worker    ":allocator",
315*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_sync:borrow",
316*61c4878aSAndroid Build Coastguard Worker  ]
317*61c4878aSAndroid Build Coastguard Worker}
318*61c4878aSAndroid Build Coastguard Worker
319*61c4878aSAndroid Build Coastguard Workerpw_source_set("tracking_allocator") {
320*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
321*61c4878aSAndroid Build Coastguard Worker  public = [
322*61c4878aSAndroid Build Coastguard Worker    "public/pw_allocator/metrics.h",
323*61c4878aSAndroid Build Coastguard Worker    "public/pw_allocator/tracking_allocator.h",
324*61c4878aSAndroid Build Coastguard Worker  ]
325*61c4878aSAndroid Build Coastguard Worker  public_deps = [
326*61c4878aSAndroid Build Coastguard Worker    ":allocator",
327*61c4878aSAndroid Build Coastguard Worker    dir_pw_metric,
328*61c4878aSAndroid Build Coastguard Worker    dir_pw_status,
329*61c4878aSAndroid Build Coastguard Worker  ]
330*61c4878aSAndroid Build Coastguard Worker  deps = [ dir_pw_assert ]
331*61c4878aSAndroid Build Coastguard Worker}
332*61c4878aSAndroid Build Coastguard Worker
333*61c4878aSAndroid Build Coastguard Workerpw_source_set("typed_pool") {
334*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
335*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_allocator/typed_pool.h" ]
336*61c4878aSAndroid Build Coastguard Worker  public_deps = [
337*61c4878aSAndroid Build Coastguard Worker    ":allocator",
338*61c4878aSAndroid Build Coastguard Worker    ":chunk_pool",
339*61c4878aSAndroid Build Coastguard Worker    dir_pw_bytes,
340*61c4878aSAndroid Build Coastguard Worker    dir_pw_result,
341*61c4878aSAndroid Build Coastguard Worker  ]
342*61c4878aSAndroid Build Coastguard Worker}
343*61c4878aSAndroid Build Coastguard Worker
344*61c4878aSAndroid Build Coastguard Workerpw_source_set("worst_fit") {
345*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
346*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_allocator/worst_fit.h" ]
347*61c4878aSAndroid Build Coastguard Worker  public_deps = [
348*61c4878aSAndroid Build Coastguard Worker    ":block_allocator",
349*61c4878aSAndroid Build Coastguard Worker    ":config",
350*61c4878aSAndroid Build Coastguard Worker    "block:detailed_block",
351*61c4878aSAndroid Build Coastguard Worker    "bucket:fast_sorted",
352*61c4878aSAndroid Build Coastguard Worker    "bucket:sorted",
353*61c4878aSAndroid Build Coastguard Worker  ]
354*61c4878aSAndroid Build Coastguard Worker}
355*61c4878aSAndroid Build Coastguard Worker
356*61c4878aSAndroid Build Coastguard Worker# TODO(b/376730645): Remove deprecated interfaces.
357*61c4878aSAndroid Build Coastguard Workerpw_source_set("worst_fit_block_allocator") {
358*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
359*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_allocator/worst_fit_block_allocator.h" ]
360*61c4878aSAndroid Build Coastguard Worker  public_deps = [ ":worst_fit" ]
361*61c4878aSAndroid Build Coastguard Worker}
362*61c4878aSAndroid Build Coastguard Worker
363*61c4878aSAndroid Build Coastguard Worker# Test support
364*61c4878aSAndroid Build Coastguard Worker
365*61c4878aSAndroid Build Coastguard Workerpw_source_set("testing") {
366*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":test_config" ]
367*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_allocator/testing.h" ]
368*61c4878aSAndroid Build Coastguard Worker  public_deps = [
369*61c4878aSAndroid Build Coastguard Worker    ":allocator",
370*61c4878aSAndroid Build Coastguard Worker    ":buffer",
371*61c4878aSAndroid Build Coastguard Worker    ":first_fit",
372*61c4878aSAndroid Build Coastguard Worker    ":tracking_allocator",
373*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_sync:interrupt_spin_lock",
374*61c4878aSAndroid Build Coastguard Worker    dir_pw_bytes,
375*61c4878aSAndroid Build Coastguard Worker    dir_pw_result,
376*61c4878aSAndroid Build Coastguard Worker    dir_pw_status,
377*61c4878aSAndroid Build Coastguard Worker    dir_pw_unit_test,
378*61c4878aSAndroid Build Coastguard Worker  ]
379*61c4878aSAndroid Build Coastguard Worker  deps = [ dir_pw_assert ]
380*61c4878aSAndroid Build Coastguard Worker}
381*61c4878aSAndroid Build Coastguard Worker
382*61c4878aSAndroid Build Coastguard Workerpw_source_set("block_allocator_testing") {
383*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_allocator/block_allocator_testing.h" ]
384*61c4878aSAndroid Build Coastguard Worker  public_deps = [
385*61c4878aSAndroid Build Coastguard Worker    ":block_allocator",
386*61c4878aSAndroid Build Coastguard Worker    "block:testing",
387*61c4878aSAndroid Build Coastguard Worker    dir_pw_unit_test,
388*61c4878aSAndroid Build Coastguard Worker  ]
389*61c4878aSAndroid Build Coastguard Worker  deps = [
390*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_bytes:alignment",
391*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_third_party/fuchsia:stdcompat",
392*61c4878aSAndroid Build Coastguard Worker    "block:detailed_block",
393*61c4878aSAndroid Build Coastguard Worker    dir_pw_assert,
394*61c4878aSAndroid Build Coastguard Worker    dir_pw_status,
395*61c4878aSAndroid Build Coastguard Worker  ]
396*61c4878aSAndroid Build Coastguard Worker  sources = [ "block_allocator_testing.cc" ]
397*61c4878aSAndroid Build Coastguard Worker}
398*61c4878aSAndroid Build Coastguard Worker
399*61c4878aSAndroid Build Coastguard Workerpw_source_set("test_harness") {
400*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_allocator/test_harness.h" ]
401*61c4878aSAndroid Build Coastguard Worker  public_deps = [
402*61c4878aSAndroid Build Coastguard Worker    ":allocator",
403*61c4878aSAndroid Build Coastguard Worker    dir_pw_containers,
404*61c4878aSAndroid Build Coastguard Worker    dir_pw_random,
405*61c4878aSAndroid Build Coastguard Worker  ]
406*61c4878aSAndroid Build Coastguard Worker  deps = [
407*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_third_party/fuchsia:stdcompat",
408*61c4878aSAndroid Build Coastguard Worker    dir_pw_assert,
409*61c4878aSAndroid Build Coastguard Worker  ]
410*61c4878aSAndroid Build Coastguard Worker  sources = [ "test_harness.cc" ]
411*61c4878aSAndroid Build Coastguard Worker}
412*61c4878aSAndroid Build Coastguard Worker
413*61c4878aSAndroid Build Coastguard Workerpw_source_set("fuzzing") {
414*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_allocator/fuzzing.h" ]
415*61c4878aSAndroid Build Coastguard Worker  public_deps = [
416*61c4878aSAndroid Build Coastguard Worker    ":test_harness",
417*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_fuzzer:fuzztest",
418*61c4878aSAndroid Build Coastguard Worker  ]
419*61c4878aSAndroid Build Coastguard Worker  sources = [ "fuzzing.cc" ]
420*61c4878aSAndroid Build Coastguard Worker}
421*61c4878aSAndroid Build Coastguard Worker
422*61c4878aSAndroid Build Coastguard Worker# Tests
423*61c4878aSAndroid Build Coastguard Worker
424*61c4878aSAndroid Build Coastguard Workerpw_test("allocator_as_pool_test") {
425*61c4878aSAndroid Build Coastguard Worker  deps = [
426*61c4878aSAndroid Build Coastguard Worker    ":allocator_as_pool",
427*61c4878aSAndroid Build Coastguard Worker    ":testing",
428*61c4878aSAndroid Build Coastguard Worker  ]
429*61c4878aSAndroid Build Coastguard Worker  sources = [ "allocator_as_pool_test.cc" ]
430*61c4878aSAndroid Build Coastguard Worker}
431*61c4878aSAndroid Build Coastguard Worker
432*61c4878aSAndroid Build Coastguard Workerpw_test("allocator_test") {
433*61c4878aSAndroid Build Coastguard Worker  deps = [
434*61c4878aSAndroid Build Coastguard Worker    ":allocator",
435*61c4878aSAndroid Build Coastguard Worker    ":testing",
436*61c4878aSAndroid Build Coastguard Worker  ]
437*61c4878aSAndroid Build Coastguard Worker  sources = [ "allocator_test.cc" ]
438*61c4878aSAndroid Build Coastguard Worker}
439*61c4878aSAndroid Build Coastguard Worker
440*61c4878aSAndroid Build Coastguard Workerpw_test("best_fit_test") {
441*61c4878aSAndroid Build Coastguard Worker  deps = [
442*61c4878aSAndroid Build Coastguard Worker    ":best_fit",
443*61c4878aSAndroid Build Coastguard Worker    ":best_fit_block_allocator",
444*61c4878aSAndroid Build Coastguard Worker    ":block_allocator_testing",
445*61c4878aSAndroid Build Coastguard Worker  ]
446*61c4878aSAndroid Build Coastguard Worker  sources = [ "best_fit_test.cc" ]
447*61c4878aSAndroid Build Coastguard Worker}
448*61c4878aSAndroid Build Coastguard Worker
449*61c4878aSAndroid Build Coastguard Workerpw_test("bucket_allocator_test") {
450*61c4878aSAndroid Build Coastguard Worker  deps = [
451*61c4878aSAndroid Build Coastguard Worker    ":block_allocator_testing",
452*61c4878aSAndroid Build Coastguard Worker    ":bucket_allocator",
453*61c4878aSAndroid Build Coastguard Worker    ":bucket_block_allocator",
454*61c4878aSAndroid Build Coastguard Worker  ]
455*61c4878aSAndroid Build Coastguard Worker  sources = [ "bucket_allocator_test.cc" ]
456*61c4878aSAndroid Build Coastguard Worker}
457*61c4878aSAndroid Build Coastguard Worker
458*61c4878aSAndroid Build Coastguard Workerpw_test("buddy_allocator_test") {
459*61c4878aSAndroid Build Coastguard Worker  deps = [
460*61c4878aSAndroid Build Coastguard Worker    ":buddy_allocator",
461*61c4878aSAndroid Build Coastguard Worker    ":testing",
462*61c4878aSAndroid Build Coastguard Worker  ]
463*61c4878aSAndroid Build Coastguard Worker  sources = [ "buddy_allocator_test.cc" ]
464*61c4878aSAndroid Build Coastguard Worker}
465*61c4878aSAndroid Build Coastguard Worker
466*61c4878aSAndroid Build Coastguard Workerpw_test("buffer_test") {
467*61c4878aSAndroid Build Coastguard Worker  deps = [
468*61c4878aSAndroid Build Coastguard Worker    ":buffer",
469*61c4878aSAndroid Build Coastguard Worker    ":testing",
470*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_third_party/fuchsia:stdcompat",
471*61c4878aSAndroid Build Coastguard Worker    dir_pw_bytes,
472*61c4878aSAndroid Build Coastguard Worker    dir_pw_result,
473*61c4878aSAndroid Build Coastguard Worker  ]
474*61c4878aSAndroid Build Coastguard Worker  sources = [ "buffer_test.cc" ]
475*61c4878aSAndroid Build Coastguard Worker}
476*61c4878aSAndroid Build Coastguard Worker
477*61c4878aSAndroid Build Coastguard Workerpw_test("bump_allocator_test") {
478*61c4878aSAndroid Build Coastguard Worker  deps = [
479*61c4878aSAndroid Build Coastguard Worker    ":bump_allocator",
480*61c4878aSAndroid Build Coastguard Worker    ":testing",
481*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_third_party/fuchsia:stdcompat",
482*61c4878aSAndroid Build Coastguard Worker  ]
483*61c4878aSAndroid Build Coastguard Worker  sources = [ "bump_allocator_test.cc" ]
484*61c4878aSAndroid Build Coastguard Worker}
485*61c4878aSAndroid Build Coastguard Worker
486*61c4878aSAndroid Build Coastguard Workerpw_test("chunk_pool_test") {
487*61c4878aSAndroid Build Coastguard Worker  deps = [
488*61c4878aSAndroid Build Coastguard Worker    ":chunk_pool",
489*61c4878aSAndroid Build Coastguard Worker    ":testing",
490*61c4878aSAndroid Build Coastguard Worker  ]
491*61c4878aSAndroid Build Coastguard Worker  sources = [ "chunk_pool_test.cc" ]
492*61c4878aSAndroid Build Coastguard Worker}
493*61c4878aSAndroid Build Coastguard Worker
494*61c4878aSAndroid Build Coastguard Workerpw_test("fallback_allocator_test") {
495*61c4878aSAndroid Build Coastguard Worker  deps = [
496*61c4878aSAndroid Build Coastguard Worker    ":fallback_allocator",
497*61c4878aSAndroid Build Coastguard Worker    ":testing",
498*61c4878aSAndroid Build Coastguard Worker    dir_pw_status,
499*61c4878aSAndroid Build Coastguard Worker  ]
500*61c4878aSAndroid Build Coastguard Worker  sources = [ "fallback_allocator_test.cc" ]
501*61c4878aSAndroid Build Coastguard Worker}
502*61c4878aSAndroid Build Coastguard Worker
503*61c4878aSAndroid Build Coastguard Workerpw_test("first_fit_test") {
504*61c4878aSAndroid Build Coastguard Worker  deps = [
505*61c4878aSAndroid Build Coastguard Worker    ":block_allocator_testing",
506*61c4878aSAndroid Build Coastguard Worker    ":buffer",
507*61c4878aSAndroid Build Coastguard Worker    ":dual_first_fit_block_allocator",
508*61c4878aSAndroid Build Coastguard Worker    ":first_fit",
509*61c4878aSAndroid Build Coastguard Worker    ":first_fit_block_allocator",
510*61c4878aSAndroid Build Coastguard Worker    ":last_fit_block_allocator",
511*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_third_party/fuchsia:stdcompat",
512*61c4878aSAndroid Build Coastguard Worker  ]
513*61c4878aSAndroid Build Coastguard Worker  sources = [ "first_fit_test.cc" ]
514*61c4878aSAndroid Build Coastguard Worker}
515*61c4878aSAndroid Build Coastguard Worker
516*61c4878aSAndroid Build Coastguard Workerpw_test("fragmentation_test") {
517*61c4878aSAndroid Build Coastguard Worker  deps = [
518*61c4878aSAndroid Build Coastguard Worker    ":fragmentation",
519*61c4878aSAndroid Build Coastguard Worker    ":testing",
520*61c4878aSAndroid Build Coastguard Worker  ]
521*61c4878aSAndroid Build Coastguard Worker  sources = [ "fragmentation_test.cc" ]
522*61c4878aSAndroid Build Coastguard Worker}
523*61c4878aSAndroid Build Coastguard Worker
524*61c4878aSAndroid Build Coastguard Workerpw_test("freelist_heap_test") {
525*61c4878aSAndroid Build Coastguard Worker  deps = [
526*61c4878aSAndroid Build Coastguard Worker    ":freelist_heap",
527*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_bytes:alignment",
528*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_third_party/fuchsia:stdcompat",
529*61c4878aSAndroid Build Coastguard Worker    "block:testing",
530*61c4878aSAndroid Build Coastguard Worker  ]
531*61c4878aSAndroid Build Coastguard Worker  sources = [ "freelist_heap_test.cc" ]
532*61c4878aSAndroid Build Coastguard Worker}
533*61c4878aSAndroid Build Coastguard Worker
534*61c4878aSAndroid Build Coastguard Workerpw_test("layout_test") {
535*61c4878aSAndroid Build Coastguard Worker  deps = [
536*61c4878aSAndroid Build Coastguard Worker    ":deallocator",
537*61c4878aSAndroid Build Coastguard Worker    ":testing",
538*61c4878aSAndroid Build Coastguard Worker  ]
539*61c4878aSAndroid Build Coastguard Worker  sources = [ "layout_test.cc" ]
540*61c4878aSAndroid Build Coastguard Worker}
541*61c4878aSAndroid Build Coastguard Worker
542*61c4878aSAndroid Build Coastguard Workerpw_test("libc_allocator_test") {
543*61c4878aSAndroid Build Coastguard Worker  deps = [
544*61c4878aSAndroid Build Coastguard Worker    ":libc_allocator",
545*61c4878aSAndroid Build Coastguard Worker    ":testing",
546*61c4878aSAndroid Build Coastguard Worker  ]
547*61c4878aSAndroid Build Coastguard Worker  sources = [ "libc_allocator_test.cc" ]
548*61c4878aSAndroid Build Coastguard Worker}
549*61c4878aSAndroid Build Coastguard Worker
550*61c4878aSAndroid Build Coastguard Workerpw_test("null_allocator_test") {
551*61c4878aSAndroid Build Coastguard Worker  deps = [
552*61c4878aSAndroid Build Coastguard Worker    ":null_allocator",
553*61c4878aSAndroid Build Coastguard Worker    ":testing",
554*61c4878aSAndroid Build Coastguard Worker  ]
555*61c4878aSAndroid Build Coastguard Worker  sources = [ "null_allocator_test.cc" ]
556*61c4878aSAndroid Build Coastguard Worker}
557*61c4878aSAndroid Build Coastguard Worker
558*61c4878aSAndroid Build Coastguard Workerpw_test("pmr_allocator_test") {
559*61c4878aSAndroid Build Coastguard Worker  deps = [
560*61c4878aSAndroid Build Coastguard Worker    ":pmr_allocator",
561*61c4878aSAndroid Build Coastguard Worker    ":testing",
562*61c4878aSAndroid Build Coastguard Worker  ]
563*61c4878aSAndroid Build Coastguard Worker  sources = [ "pmr_allocator_test.cc" ]
564*61c4878aSAndroid Build Coastguard Worker}
565*61c4878aSAndroid Build Coastguard Worker
566*61c4878aSAndroid Build Coastguard Workerpw_test("synchronized_allocator_test") {
567*61c4878aSAndroid Build Coastguard Worker  enable_if =
568*61c4878aSAndroid Build Coastguard Worker      pw_sync_BINARY_SEMAPHORE_BACKEND != "" && pw_sync_MUTEX_BACKEND != "" &&
569*61c4878aSAndroid Build Coastguard Worker      pw_sync_INTERRUPT_SPIN_LOCK_BACKEND != "" &&
570*61c4878aSAndroid Build Coastguard Worker      pw_thread_YIELD_BACKEND != "" &&
571*61c4878aSAndroid Build Coastguard Worker      pw_thread_TEST_THREAD_CONTEXT_BACKEND != ""
572*61c4878aSAndroid Build Coastguard Worker  deps = [
573*61c4878aSAndroid Build Coastguard Worker    ":synchronized_allocator",
574*61c4878aSAndroid Build Coastguard Worker    ":test_harness",
575*61c4878aSAndroid Build Coastguard Worker    ":testing",
576*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_sync:binary_semaphore",
577*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_sync:interrupt_spin_lock",
578*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_sync:mutex",
579*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_sync:virtual_basic_lockable",
580*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_thread:test_thread_context",
581*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_thread:thread",
582*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_thread:thread_core",
583*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_thread:yield",
584*61c4878aSAndroid Build Coastguard Worker    dir_pw_random,
585*61c4878aSAndroid Build Coastguard Worker  ]
586*61c4878aSAndroid Build Coastguard Worker  sources = [ "synchronized_allocator_test.cc" ]
587*61c4878aSAndroid Build Coastguard Worker}
588*61c4878aSAndroid Build Coastguard Worker
589*61c4878aSAndroid Build Coastguard Workerpw_test("tracking_allocator_test") {
590*61c4878aSAndroid Build Coastguard Worker  deps = [
591*61c4878aSAndroid Build Coastguard Worker    ":testing",
592*61c4878aSAndroid Build Coastguard Worker    ":tracking_allocator",
593*61c4878aSAndroid Build Coastguard Worker  ]
594*61c4878aSAndroid Build Coastguard Worker  sources = [ "tracking_allocator_test.cc" ]
595*61c4878aSAndroid Build Coastguard Worker}
596*61c4878aSAndroid Build Coastguard Worker
597*61c4878aSAndroid Build Coastguard Workerpw_test("typed_pool_test") {
598*61c4878aSAndroid Build Coastguard Worker  deps = [
599*61c4878aSAndroid Build Coastguard Worker    ":testing",
600*61c4878aSAndroid Build Coastguard Worker    ":typed_pool",
601*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_bytes:alignment",
602*61c4878aSAndroid Build Coastguard Worker  ]
603*61c4878aSAndroid Build Coastguard Worker  sources = [ "typed_pool_test.cc" ]
604*61c4878aSAndroid Build Coastguard Worker}
605*61c4878aSAndroid Build Coastguard Worker
606*61c4878aSAndroid Build Coastguard Workerpw_test("unique_ptr_test") {
607*61c4878aSAndroid Build Coastguard Worker  deps = [ ":testing" ]
608*61c4878aSAndroid Build Coastguard Worker  sources = [ "unique_ptr_test.cc" ]
609*61c4878aSAndroid Build Coastguard Worker}
610*61c4878aSAndroid Build Coastguard Worker
611*61c4878aSAndroid Build Coastguard Workerpw_test("worst_fit_test") {
612*61c4878aSAndroid Build Coastguard Worker  deps = [
613*61c4878aSAndroid Build Coastguard Worker    ":block_allocator_testing",
614*61c4878aSAndroid Build Coastguard Worker    ":worst_fit",
615*61c4878aSAndroid Build Coastguard Worker    ":worst_fit_block_allocator",
616*61c4878aSAndroid Build Coastguard Worker  ]
617*61c4878aSAndroid Build Coastguard Worker  sources = [ "worst_fit_test.cc" ]
618*61c4878aSAndroid Build Coastguard Worker}
619*61c4878aSAndroid Build Coastguard Worker
620*61c4878aSAndroid Build Coastguard Workerpw_test_group("tests") {
621*61c4878aSAndroid Build Coastguard Worker  tests = [
622*61c4878aSAndroid Build Coastguard Worker    ":allocator_as_pool_test",
623*61c4878aSAndroid Build Coastguard Worker
624*61c4878aSAndroid Build Coastguard Worker    # ":allocator_nc_test",
625*61c4878aSAndroid Build Coastguard Worker    ":allocator_test",
626*61c4878aSAndroid Build Coastguard Worker    ":best_fit_test",
627*61c4878aSAndroid Build Coastguard Worker    ":bucket_allocator_test",
628*61c4878aSAndroid Build Coastguard Worker    ":buddy_allocator_test",
629*61c4878aSAndroid Build Coastguard Worker    ":buffer_test",
630*61c4878aSAndroid Build Coastguard Worker    ":bump_allocator_test",
631*61c4878aSAndroid Build Coastguard Worker    ":chunk_pool_test",
632*61c4878aSAndroid Build Coastguard Worker    ":fallback_allocator_test",
633*61c4878aSAndroid Build Coastguard Worker    ":first_fit_test",
634*61c4878aSAndroid Build Coastguard Worker    ":fragmentation_test",
635*61c4878aSAndroid Build Coastguard Worker    ":freelist_heap_test",
636*61c4878aSAndroid Build Coastguard Worker    ":layout_test",
637*61c4878aSAndroid Build Coastguard Worker    ":libc_allocator_test",
638*61c4878aSAndroid Build Coastguard Worker    ":null_allocator_test",
639*61c4878aSAndroid Build Coastguard Worker    ":pmr_allocator_test",
640*61c4878aSAndroid Build Coastguard Worker    ":synchronized_allocator_test",
641*61c4878aSAndroid Build Coastguard Worker    ":tracking_allocator_test",
642*61c4878aSAndroid Build Coastguard Worker    ":typed_pool_test",
643*61c4878aSAndroid Build Coastguard Worker    ":unique_ptr_test",
644*61c4878aSAndroid Build Coastguard Worker    ":worst_fit_test",
645*61c4878aSAndroid Build Coastguard Worker  ]
646*61c4878aSAndroid Build Coastguard Worker  group_deps = [
647*61c4878aSAndroid Build Coastguard Worker    "benchmarks:tests",
648*61c4878aSAndroid Build Coastguard Worker    "block:tests",
649*61c4878aSAndroid Build Coastguard Worker    "bucket:tests",
650*61c4878aSAndroid Build Coastguard Worker    "examples",
651*61c4878aSAndroid Build Coastguard Worker  ]
652*61c4878aSAndroid Build Coastguard Worker}
653*61c4878aSAndroid Build Coastguard Worker
654*61c4878aSAndroid Build Coastguard Worker# Docs
655*61c4878aSAndroid Build Coastguard Worker
656*61c4878aSAndroid Build Coastguard Workerpw_source_set("size_reporter") {
657*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
658*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_allocator/size_reporter.h" ]
659*61c4878aSAndroid Build Coastguard Worker  public_deps = [
660*61c4878aSAndroid Build Coastguard Worker    ":null_allocator",
661*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_bloat:bloat_this_binary",
662*61c4878aSAndroid Build Coastguard Worker    dir_pw_bytes,
663*61c4878aSAndroid Build Coastguard Worker  ]
664*61c4878aSAndroid Build Coastguard Worker}
665*61c4878aSAndroid Build Coastguard Worker
666*61c4878aSAndroid Build Coastguard Workerpw_size_diff("allocator_api_size_report") {
667*61c4878aSAndroid Build Coastguard Worker  title = "Size of an empty implmentation of the Allocator interface"
668*61c4878aSAndroid Build Coastguard Worker  binaries = [
669*61c4878aSAndroid Build Coastguard Worker    {
670*61c4878aSAndroid Build Coastguard Worker      target = "size_report:null_allocator"
671*61c4878aSAndroid Build Coastguard Worker      base = "size_report:base"
672*61c4878aSAndroid Build Coastguard Worker      label = "NullAllocator"
673*61c4878aSAndroid Build Coastguard Worker    },
674*61c4878aSAndroid Build Coastguard Worker  ]
675*61c4878aSAndroid Build Coastguard Worker}
676*61c4878aSAndroid Build Coastguard Worker
677*61c4878aSAndroid Build Coastguard Workerpw_size_diff("concrete_allocators_size_report") {
678*61c4878aSAndroid Build Coastguard Worker  title = "Sizes of various concrete allocator implementations"
679*61c4878aSAndroid Build Coastguard Worker  binaries = [
680*61c4878aSAndroid Build Coastguard Worker    {
681*61c4878aSAndroid Build Coastguard Worker      target = "size_report:best_fit"
682*61c4878aSAndroid Build Coastguard Worker      base = "size_report:null_allocator"
683*61c4878aSAndroid Build Coastguard Worker      label = "BestFitAllocator"
684*61c4878aSAndroid Build Coastguard Worker    },
685*61c4878aSAndroid Build Coastguard Worker    {
686*61c4878aSAndroid Build Coastguard Worker      target = "size_report:buddy_allocator"
687*61c4878aSAndroid Build Coastguard Worker      base = "size_report:null_allocator"
688*61c4878aSAndroid Build Coastguard Worker      label = "BuddyAllocator"
689*61c4878aSAndroid Build Coastguard Worker    },
690*61c4878aSAndroid Build Coastguard Worker    {
691*61c4878aSAndroid Build Coastguard Worker      target = "size_report:bump_allocator"
692*61c4878aSAndroid Build Coastguard Worker      base = "size_report:null_allocator"
693*61c4878aSAndroid Build Coastguard Worker      label = "BumpAllocator"
694*61c4878aSAndroid Build Coastguard Worker    },
695*61c4878aSAndroid Build Coastguard Worker    {
696*61c4878aSAndroid Build Coastguard Worker      target = "size_report:first_fit"
697*61c4878aSAndroid Build Coastguard Worker      base = "size_report:null_allocator"
698*61c4878aSAndroid Build Coastguard Worker      label = "FirstFitAllocator"
699*61c4878aSAndroid Build Coastguard Worker    },
700*61c4878aSAndroid Build Coastguard Worker    {
701*61c4878aSAndroid Build Coastguard Worker      target = "size_report:libc_allocator"
702*61c4878aSAndroid Build Coastguard Worker      base = "size_report:null_allocator"
703*61c4878aSAndroid Build Coastguard Worker      label = "LibCAllocator"
704*61c4878aSAndroid Build Coastguard Worker    },
705*61c4878aSAndroid Build Coastguard Worker    {
706*61c4878aSAndroid Build Coastguard Worker      target = "size_report:worst_fit"
707*61c4878aSAndroid Build Coastguard Worker      base = "size_report:null_allocator"
708*61c4878aSAndroid Build Coastguard Worker      label = "WorstFitAllocator"
709*61c4878aSAndroid Build Coastguard Worker    },
710*61c4878aSAndroid Build Coastguard Worker  ]
711*61c4878aSAndroid Build Coastguard Worker}
712*61c4878aSAndroid Build Coastguard Worker
713*61c4878aSAndroid Build Coastguard Workerpw_size_diff("forwarding_allocators_size_report") {
714*61c4878aSAndroid Build Coastguard Worker  title = "Sizes of various forwarding allocator implementations"
715*61c4878aSAndroid Build Coastguard Worker  binaries = [
716*61c4878aSAndroid Build Coastguard Worker    {
717*61c4878aSAndroid Build Coastguard Worker      target = "size_report:fallback_allocator"
718*61c4878aSAndroid Build Coastguard Worker      base = "size_report:fallback_allocator_base"
719*61c4878aSAndroid Build Coastguard Worker      label = "FallbackAllocator"
720*61c4878aSAndroid Build Coastguard Worker    },
721*61c4878aSAndroid Build Coastguard Worker    {
722*61c4878aSAndroid Build Coastguard Worker      target = "size_report:pmr_allocator"
723*61c4878aSAndroid Build Coastguard Worker      base = "size_report:pmr_allocator_base"
724*61c4878aSAndroid Build Coastguard Worker      label = "AsPmrAllocator"
725*61c4878aSAndroid Build Coastguard Worker    },
726*61c4878aSAndroid Build Coastguard Worker    {
727*61c4878aSAndroid Build Coastguard Worker      target = "size_report:synchronized_allocator_isl"
728*61c4878aSAndroid Build Coastguard Worker      base = "size_report:first_fit"
729*61c4878aSAndroid Build Coastguard Worker      label = "SynchronizedAllocator<sync::InterruptSpinLock>"
730*61c4878aSAndroid Build Coastguard Worker    },
731*61c4878aSAndroid Build Coastguard Worker    {
732*61c4878aSAndroid Build Coastguard Worker      target = "size_report:synchronized_allocator_mutex"
733*61c4878aSAndroid Build Coastguard Worker      base = "size_report:first_fit"
734*61c4878aSAndroid Build Coastguard Worker      label = "SynchronizedAllocator<sync::Mutex>"
735*61c4878aSAndroid Build Coastguard Worker    },
736*61c4878aSAndroid Build Coastguard Worker    {
737*61c4878aSAndroid Build Coastguard Worker      target = "size_report:tracking_allocator_all_metrics"
738*61c4878aSAndroid Build Coastguard Worker      base = "size_report:first_fit"
739*61c4878aSAndroid Build Coastguard Worker      label = "TrackingAllocator<AllMetrics>"
740*61c4878aSAndroid Build Coastguard Worker    },
741*61c4878aSAndroid Build Coastguard Worker    {
742*61c4878aSAndroid Build Coastguard Worker      target = "size_report:tracking_allocator_no_metrics"
743*61c4878aSAndroid Build Coastguard Worker      base = "size_report:first_fit"
744*61c4878aSAndroid Build Coastguard Worker      label = "TrackingAllocator<NoMetrics>"
745*61c4878aSAndroid Build Coastguard Worker    },
746*61c4878aSAndroid Build Coastguard Worker  ]
747*61c4878aSAndroid Build Coastguard Worker}
748*61c4878aSAndroid Build Coastguard Worker
749*61c4878aSAndroid Build Coastguard Workerpw_size_diff("allocator_utilities_size_report") {
750*61c4878aSAndroid Build Coastguard Worker  title = "Sizes of various allocator utility classes"
751*61c4878aSAndroid Build Coastguard Worker  binaries = [
752*61c4878aSAndroid Build Coastguard Worker    {
753*61c4878aSAndroid Build Coastguard Worker      target = "size_report:unique_ptr"
754*61c4878aSAndroid Build Coastguard Worker      base = "size_report:first_fit"
755*61c4878aSAndroid Build Coastguard Worker      label = "UniquePtr"
756*61c4878aSAndroid Build Coastguard Worker    },
757*61c4878aSAndroid Build Coastguard Worker  ]
758*61c4878aSAndroid Build Coastguard Worker}
759*61c4878aSAndroid Build Coastguard Worker
760*61c4878aSAndroid Build Coastguard Workerpw_doc_group("docs") {
761*61c4878aSAndroid Build Coastguard Worker  inputs = [
762*61c4878aSAndroid Build Coastguard Worker    "doc_resources/pw_allocator_heap_visualizer_demo.png",
763*61c4878aSAndroid Build Coastguard Worker    "examples/basic.cc",
764*61c4878aSAndroid Build Coastguard Worker    "examples/block_allocator.cc",
765*61c4878aSAndroid Build Coastguard Worker    "examples/custom_allocator_perf_test.cc",
766*61c4878aSAndroid Build Coastguard Worker    "examples/custom_allocator_test_harness.h",
767*61c4878aSAndroid Build Coastguard Worker    "examples/custom_allocator_test.cc",
768*61c4878aSAndroid Build Coastguard Worker    "examples/custom_allocator.cc",
769*61c4878aSAndroid Build Coastguard Worker    "examples/custom_allocator.h",
770*61c4878aSAndroid Build Coastguard Worker    "examples/linker_sections.cc",
771*61c4878aSAndroid Build Coastguard Worker    "examples/metrics.cc",
772*61c4878aSAndroid Build Coastguard Worker    "examples/pmr.cc",
773*61c4878aSAndroid Build Coastguard Worker    "examples/size_report.cc",
774*61c4878aSAndroid Build Coastguard Worker    "examples/spin_lock.cc",
775*61c4878aSAndroid Build Coastguard Worker  ]
776*61c4878aSAndroid Build Coastguard Worker  sources = [
777*61c4878aSAndroid Build Coastguard Worker    "api.rst",
778*61c4878aSAndroid Build Coastguard Worker    "code_size.rst",
779*61c4878aSAndroid Build Coastguard Worker    "design.rst",
780*61c4878aSAndroid Build Coastguard Worker    "docs.rst",
781*61c4878aSAndroid Build Coastguard Worker    "guide.rst",
782*61c4878aSAndroid Build Coastguard Worker  ]
783*61c4878aSAndroid Build Coastguard Worker  report_deps = [
784*61c4878aSAndroid Build Coastguard Worker    ":allocator_api_size_report",
785*61c4878aSAndroid Build Coastguard Worker    ":concrete_allocators_size_report",
786*61c4878aSAndroid Build Coastguard Worker    ":forwarding_allocators_size_report",
787*61c4878aSAndroid Build Coastguard Worker    "examples:custom_allocator_size_report",
788*61c4878aSAndroid Build Coastguard Worker  ]
789*61c4878aSAndroid Build Coastguard Worker}
790