From 78ad6403cc6760021e89e8bb9b6c27c54af29f33 Mon Sep 17 00:00:00 2001 From: Viktor Elizarov Date: Fri, 20 Jan 2023 22:13:54 +0000 Subject: [PATCH] pw_allocator/cmake: Add CMake support This change adds CMake support to pw_allocator module. Change-Id: I8c89be25f165bce1e7c5aab1396c281b1e91a365 Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/126630 Reviewed-by: Ewout van Bekkum Commit-Queue: Viktor Elizarov --- CMakeLists.txt | 1 + pw_allocator/BUILD.gn | 11 ++++- pw_allocator/CMakeLists.txt | 90 +++++++++++++++++++++++++++++++++++++ 3 files changed, 100 insertions(+), 2 deletions(-) create mode 100644 pw_allocator/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index ac41fd2380..ba70f09554 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -43,6 +43,7 @@ if(CONFIG_ZEPHYR_PIGWEED_MODULE) endif() endif() +add_subdirectory(pw_allocator EXCLUDE_FROM_ALL) add_subdirectory(pw_assert EXCLUDE_FROM_ALL) add_subdirectory(pw_assert_basic EXCLUDE_FROM_ALL) add_subdirectory(pw_assert_log EXCLUDE_FROM_ALL) diff --git a/pw_allocator/BUILD.gn b/pw_allocator/BUILD.gn index 87161f9514..f335199a49 100644 --- a/pw_allocator/BUILD.gn +++ b/pw_allocator/BUILD.gn @@ -90,13 +90,20 @@ pw_test_group("tests") { pw_test("block_test") { configs = [ ":enable_heap_poison" ] - deps = [ ":block" ] + deps = [ + ":block", + dir_pw_span, + ] sources = [ "block_test.cc" ] } pw_test("freelist_test") { configs = [ ":enable_heap_poison" ] - deps = [ ":freelist" ] + deps = [ + ":freelist", + dir_pw_span, + dir_pw_status, + ] sources = [ "freelist_test.cc" ] } diff --git a/pw_allocator/CMakeLists.txt b/pw_allocator/CMakeLists.txt new file mode 100644 index 0000000000..8a4d7b491c --- /dev/null +++ b/pw_allocator/CMakeLists.txt @@ -0,0 +1,90 @@ +# Copyright 2023 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. + +include($ENV{PW_ROOT}/pw_build/pigweed.cmake) + +pw_add_library(pw_allocator.block STATIC + HEADERS + public/pw_allocator/block.h + PUBLIC_INCLUDES + public + PUBLIC_DEPS + pw_assert + pw_span + pw_status + SOURCES + block.cc +) + +pw_add_library(pw_allocator.freelist STATIC + HEADERS + public/pw_allocator/freelist.h + PUBLIC_INCLUDES + public + PUBLIC_DEPS + pw_containers.vector + pw_span + pw_status + SOURCES + freelist.cc +) + +pw_add_library(pw_allocator.freelist_heap STATIC + HEADERS + public/pw_allocator/freelist_heap.h + PUBLIC_INCLUDES + public + PUBLIC_DEPS + pw_allocator.block + pw_allocator.freelist + PRIVATE_DEPS + pw_assert + pw_log + pw_span + SOURCES + freelist_heap.cc +) + +pw_add_test(pw_allocator.block_test + SOURCES + block_test.cc + PRIVATE_DEPS + pw_allocator.block + pw_span + GROUPS + modules + pw_allocator +) + +pw_add_test(pw_allocator.freelist_test + SOURCES + freelist_test.cc + PRIVATE_DEPS + pw_allocator.freelist + pw_span + pw_status + GROUPS + modules + pw_allocator +) + +pw_add_test(pw_allocator.freelist_heap_test + SOURCES + freelist_heap_test.cc + PRIVATE_DEPS + pw_allocator.freelist_heap + GROUPS + modules + pw_allocator +)