From 525276182e17bed9ff528777bdff1b744e51c226 Mon Sep 17 00:00:00 2001 From: Yuval Peress Date: Fri, 13 Oct 2023 18:29:39 +0000 Subject: [PATCH] pw_async: Add CMake support Add support for CMake in pw_async module and pw_async_basic Change-Id: I4cf5957c1f487efaa67a3896809dedad3ad32c18 Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/175475 Reviewed-by: Taylor Cramer Commit-Queue: Yuval Peress --- CMakeLists.txt | 2 ++ pw_async/CMakeLists.txt | 55 +++++++++++++++++++++++++++++++++++ pw_async/backend.cmake | 21 +++++++++++++ pw_async_basic/CMakeLists.txt | 43 +++++++++++++++++++++++++++ 4 files changed, 121 insertions(+) create mode 100644 pw_async/CMakeLists.txt create mode 100644 pw_async/backend.cmake create mode 100644 pw_async_basic/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index e790487be5..97ab990bca 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -73,6 +73,8 @@ add_subdirectory(pw_assert EXCLUDE_FROM_ALL) add_subdirectory(pw_assert_basic EXCLUDE_FROM_ALL) add_subdirectory(pw_assert_log EXCLUDE_FROM_ALL) add_subdirectory(pw_assert_zephyr EXCLUDE_FROM_ALL) +add_subdirectory(pw_async EXCLUDE_FROM_ALL) +add_subdirectory(pw_async_basic EXCLUDE_FROM_ALL) add_subdirectory(pw_base64 EXCLUDE_FROM_ALL) add_subdirectory(pw_blob_store EXCLUDE_FROM_ALL) add_subdirectory(pw_bluetooth EXCLUDE_FROM_ALL) diff --git a/pw_async/CMakeLists.txt b/pw_async/CMakeLists.txt new file mode 100644 index 0000000000..126a058549 --- /dev/null +++ b/pw_async/CMakeLists.txt @@ -0,0 +1,55 @@ +# 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) +include($ENV{PW_ROOT}/pw_async/backend.cmake) + +pw_add_library(pw_async.types INTERFACE + HEADERS + public/pw_async/context.h + public/pw_async/task_function.h + PUBLIC_INCLUDES + public + PUBLIC_DEPS + pw_function + pw_status +) + +pw_add_facade(pw_async.task INTERFACE + BACKEND + pw_async.task_BACKEND + HEADERS + public/pw_async/task.h + PUBLIC_INCLUDES + public + PUBLIC_DEPS + pw_async.types + pw_function + pw_status +) + +pw_add_facade(pw_async.dispatcher INTERFACE + BACKEND + pw_async.dispatcher_BACKEND + HEADERS + public/pw_async/dispatcher.h + public/pw_async/function_dispatcher.h + PUBLIC_INCLUDES + public + PUBLIC_DEPS + pw_async.types + pw_chrono.system_clock + pw_function + pw_status +) diff --git a/pw_async/backend.cmake b/pw_async/backend.cmake new file mode 100644 index 0000000000..b9ddc0287d --- /dev/null +++ b/pw_async/backend.cmake @@ -0,0 +1,21 @@ +# 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_guard(GLOBAL) + +include($ENV{PW_ROOT}/pw_build/pigweed.cmake) + +# Backend for the pw_async module. +pw_add_backend_variable(pw_async.task_BACKEND) +pw_add_backend_variable(pw_async.dispatcher_BACKEND) diff --git a/pw_async_basic/CMakeLists.txt b/pw_async_basic/CMakeLists.txt new file mode 100644 index 0000000000..80d83fa8ba --- /dev/null +++ b/pw_async_basic/CMakeLists.txt @@ -0,0 +1,43 @@ +# 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_async_basic.task_backend INTERFACE + HEADERS + public/pw_async_basic/task.h + public_overrides/pw_async_backend/task.h + PUBLIC_INCLUDES + public + public_overrides + PUBLIC_DEPS + pw_async.task.facade + pw_containers.intrusive_list +) + +pw_add_library(pw_async_basic.dispatcher_backend STATIC + HEADERS + public/pw_async_basic/dispatcher.h + SOURCES + dispatcher.cc + PUBLIC_INCLUDES + public + PUBLIC_DEPS + pw_async_basic.task_backend + pw_async.dispatcher.facade + pw_containers.intrusive_list + pw_sync.interrupt_spin_lock + pw_sync.timed_thread_notification + pw_thread.thread_core +)