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