• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2024 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_library(pw_allocator.block.result INTERFACE
18  HEADERS
19    public/pw_allocator/block/result.h
20  PUBLIC_INCLUDES
21    public
22  PUBLIC_DEPS
23    pw_allocator.hardening
24    pw_assert
25    pw_status
26)
27
28# Block mixins
29
30pw_add_library(pw_allocator.block.alignable INTERFACE
31  HEADERS
32    public/pw_allocator/block/alignable.h
33  PUBLIC_INCLUDES
34    public
35  PUBLIC_DEPS
36    pw_allocator
37    pw_allocator.block.allocatable
38    pw_allocator.hardening
39    pw_bytes.alignment
40    pw_status
41    pw_third_party.fuchsia.stdcompat
42)
43
44pw_add_library(pw_allocator.block.allocatable INTERFACE
45  HEADERS
46    public/pw_allocator/block/allocatable.h
47  PUBLIC_INCLUDES
48    public
49  PUBLIC_DEPS
50    pw_allocator
51    pw_allocator.block.contiguous
52    pw_allocator.block.result
53    pw_allocator.hardening
54    pw_bytes.alignment
55    pw_status
56)
57
58pw_add_library(pw_allocator.block.basic STATIC
59  HEADERS
60    public/pw_allocator/block/basic.h
61  PUBLIC_INCLUDES
62    public
63  PUBLIC_DEPS
64    pw_allocator.hardening
65    pw_bytes.alignment
66    pw_result
67    pw_status
68    pw_third_party.fuchsia.stdcompat
69  SOURCES
70    basic.cc
71  PRIVATE_DEPS
72    pw_assert
73)
74
75pw_add_library(pw_allocator.block.contiguous STATIC
76  HEADERS
77    public/pw_allocator/block/contiguous.h
78  PUBLIC_INCLUDES
79    public
80  PUBLIC_DEPS
81    pw_allocator.block.basic
82    pw_allocator.hardening
83    pw_bytes
84    pw_third_party.fuchsia.stdcompat
85  SOURCES
86    contiguous.cc
87  PRIVATE_DEPS
88    pw_assert
89)
90
91pw_add_library(pw_allocator.block.iterable INTERFACE
92  HEADERS
93    public/pw_allocator/block/iterable.h
94  PUBLIC_INCLUDES
95    public
96  PUBLIC_DEPS
97    pw_allocator.block.contiguous
98)
99
100pw_add_library(pw_allocator.block.poisonable STATIC
101  HEADERS
102    public/pw_allocator/block/poisonable.h
103  PUBLIC_INCLUDES
104    public
105  PUBLIC_DEPS
106    pw_allocator.block.contiguous
107    pw_allocator.config
108    pw_allocator.hardening
109    pw_third_party.fuchsia.stdcompat
110  SOURCES
111    poisonable.cc
112  PRIVATE_DEPS
113    pw_assert
114)
115
116pw_add_library(pw_allocator.block.with_layout INTERFACE
117  HEADERS
118    public/pw_allocator/block/with_layout.h
119  PUBLIC_INCLUDES
120    public
121  PUBLIC_DEPS
122    pw_allocator
123    pw_allocator.block.alignable
124    pw_allocator.hardening
125)
126
127# Block implementations
128
129pw_add_library(pw_allocator.block.detailed_block INTERFACE
130  HEADERS
131    public/pw_allocator/block/detailed_block.h
132  PUBLIC_INCLUDES
133    public
134  PUBLIC_DEPS
135    pw_allocator
136    pw_allocator.block.alignable
137    pw_allocator.block.allocatable
138    pw_allocator.block.basic
139    pw_allocator.block.contiguous
140    pw_allocator.block.iterable
141    pw_allocator.block.poisonable
142    pw_allocator.block.with_layout
143    pw_allocator.hardening
144    pw_assert
145    pw_bytes
146    pw_status
147)
148
149# Testing
150
151pw_add_library(pw_allocator.block.testing INTERFACE
152  HEADERS
153    public/pw_allocator/block/testing.h
154  PUBLIC_INCLUDES
155    public
156  PUBLIC_DEPS
157    pw_allocator.testing
158    pw_assert
159    pw_bytes.alignment
160    pw_bytes
161    pw_result
162    pw_third_party.fuchsia.stdcompat
163)
164
165pw_add_test(pw_allocator.block.result_test
166  SOURCES
167    result_test.cc
168  PRIVATE_DEPS
169    pw_allocator.block.basic
170    pw_allocator.block.result
171    pw_status
172  GROUPS
173    modules
174    pw_allocator
175)
176
177pw_add_test(pw_allocator.block.detailed_block_test
178  SOURCES
179    detailed_block_test.cc
180  PRIVATE_DEPS
181    pw_allocator.block.detailed_block
182    pw_allocator.block.testing
183    pw_assert
184    pw_bytes
185    pw_bytes.alignment
186    pw_span
187    pw_status
188    pw_third_party.fuchsia.stdcompat
189  GROUPS
190    modules
191    pw_allocator
192)
193