# Copyright 2024 The Pigweed Authors # # Licensed under the Apache License, Version 2.0 (the "License"); you may not # use this file except in compliance with the License. You may obtain a copy of # the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations under # the License. import("//build_overrides/pigweed.gni") import("$dir_pw_build/target_types.gni") import("$dir_pw_unit_test/test.gni") config("public_include_path") { include_dirs = [ "public" ] visibility = [ ":*" ] } pw_source_set("result") { public_configs = [ ":public_include_path" ] public = [ "public/pw_allocator/block/result.h" ] public_deps = [ "$dir_pw_allocator:hardening", dir_pw_assert, dir_pw_status, ] } # Block mixins pw_source_set("alignable") { public_configs = [ ":public_include_path" ] public = [ "public/pw_allocator/block/alignable.h" ] public_deps = [ ":allocatable", "$dir_pw_allocator:hardening", "$dir_pw_bytes:alignment", "$dir_pw_third_party/fuchsia:stdcompat", dir_pw_allocator, dir_pw_status, ] } pw_source_set("allocatable") { public_configs = [ ":public_include_path" ] public = [ "public/pw_allocator/block/allocatable.h" ] public_deps = [ ":contiguous", ":result", "$dir_pw_allocator:hardening", "$dir_pw_bytes:alignment", dir_pw_allocator, dir_pw_status, ] } pw_source_set("basic") { public_configs = [ ":public_include_path" ] public = [ "public/pw_allocator/block/basic.h" ] public_deps = [ "$dir_pw_allocator:hardening", "$dir_pw_bytes:alignment", "$dir_pw_third_party/fuchsia:stdcompat", dir_pw_result, dir_pw_status, ] sources = [ "basic.cc" ] deps = [ dir_pw_assert ] } pw_source_set("contiguous") { public_configs = [ ":public_include_path" ] public = [ "public/pw_allocator/block/contiguous.h" ] public_deps = [ ":basic", "$dir_pw_allocator:hardening", "$dir_pw_third_party/fuchsia:stdcompat", dir_pw_bytes, ] sources = [ "contiguous.cc" ] deps = [ dir_pw_assert ] } pw_source_set("iterable") { public_configs = [ ":public_include_path" ] public = [ "public/pw_allocator/block/iterable.h" ] public_deps = [ ":contiguous" ] } pw_source_set("poisonable") { public_configs = [ ":public_include_path" ] public = [ "public/pw_allocator/block/poisonable.h" ] public_deps = [ ":contiguous", "$dir_pw_allocator:config", "$dir_pw_allocator:hardening", "$dir_pw_third_party/fuchsia:stdcompat", ] sources = [ "poisonable.cc" ] deps = [ dir_pw_assert ] } pw_source_set("with_layout") { public_configs = [ ":public_include_path" ] public = [ "public/pw_allocator/block/with_layout.h" ] public_deps = [ ":alignable", "$dir_pw_allocator:hardening", dir_pw_allocator, ] } # Block implementations pw_source_set("detailed_block") { public_configs = [ ":public_include_path" ] public = [ "public/pw_allocator/block/detailed_block.h" ] public_deps = [ ":alignable", ":allocatable", ":basic", ":contiguous", ":iterable", ":poisonable", ":with_layout", "$dir_pw_allocator:hardening", dir_pw_allocator, dir_pw_assert, dir_pw_bytes, dir_pw_status, ] } pw_source_set("small_block_base") { public_configs = [ ":public_include_path" ] public = [ "public/pw_allocator/block/small_block_base.h" ] public_deps = [ ":allocatable", ":basic", ":contiguous", ":iterable", "$dir_pw_allocator/bucket:fast_sorted", dir_pw_bytes, ] } pw_source_set("small_block") { public_configs = [ ":public_include_path" ] public = [ "public/pw_allocator/block/small_block.h" ] public_deps = [ ":small_block_base" ] } pw_source_set("small_alignable_block") { public_configs = [ ":public_include_path" ] public = [ "public/pw_allocator/block/small_alignable_block.h" ] public_deps = [ ":alignable", ":small_block_base", ] } pw_source_set("tiny_block") { public_configs = [ ":public_include_path" ] public = [ "public/pw_allocator/block/tiny_block.h" ] public_deps = [ ":small_block_base" ] } # Testing pw_source_set("testing") { public = [ "public/pw_allocator/block/testing.h", "public/pw_allocator/block/unit_tests.h", ] public_deps = [ ":allocatable", ":result", "$dir_pw_allocator:testing", "$dir_pw_bytes:alignment", "$dir_pw_third_party/fuchsia:stdcompat", dir_pw_assert, dir_pw_status, ] } pw_test("result_test") { deps = [ ":basic", ":result", dir_pw_status, ] sources = [ "result_test.cc" ] } pw_test("detailed_block_test") { deps = [ ":testing", "$dir_pw_bytes:alignment", "$dir_pw_third_party/fuchsia:stdcompat", dir_pw_assert, dir_pw_bytes, dir_pw_span, dir_pw_status, ] sources = [ "detailed_block_test.cc" ] } pw_test("small_block_test") { sources = [ "small_block_test.cc" ] deps = [ ":small_block", ":testing", ] } pw_test("small_alignable_block_test") { sources = [ "small_alignable_block_test.cc" ] deps = [ ":small_alignable_block", ":testing", ] } pw_test("tiny_block_test") { sources = [ "tiny_block_test.cc" ] deps = [ ":testing", ":tiny_block", ] } pw_test_group("tests") { tests = [ ":detailed_block_test", ":result_test", ":small_alignable_block_test", ":small_block_test", ":tiny_block_test", ] }