aboutsummaryrefslogtreecommitdiff
path: root/pw_sync_freertos/BUILD.gn
diff options
context:
space:
mode:
Diffstat (limited to 'pw_sync_freertos/BUILD.gn')
-rw-r--r--pw_sync_freertos/BUILD.gn159
1 files changed, 159 insertions, 0 deletions
diff --git a/pw_sync_freertos/BUILD.gn b/pw_sync_freertos/BUILD.gn
new file mode 100644
index 000000000..425ef4a16
--- /dev/null
+++ b/pw_sync_freertos/BUILD.gn
@@ -0,0 +1,159 @@
+# Copyright 2020 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_chrono/backend.gni")
+import("$dir_pw_docgen/docs.gni")
+
+config("public_include_path") {
+ include_dirs = [ "public" ]
+ visibility = [ ":*" ]
+}
+
+config("backend_config") {
+ include_dirs = [ "public_overrides" ]
+ visibility = [ ":*" ]
+}
+
+# This target provides the backend for pw::sync::BinarySemaphore.
+pw_source_set("binary_semaphore") {
+ public_configs = [
+ ":public_include_path",
+ ":backend_config",
+ ]
+ public = [
+ "public/pw_sync_freertos/binary_semaphore_inline.h",
+ "public/pw_sync_freertos/binary_semaphore_native.h",
+ "public_overrides/pw_sync_backend/binary_semaphore_inline.h",
+ "public_overrides/pw_sync_backend/binary_semaphore_native.h",
+ ]
+ public_deps = [
+ "$dir_pw_assert",
+ "$dir_pw_chrono:system_clock",
+ "$dir_pw_chrono_freertos:system_clock",
+ "$dir_pw_interrupt:context",
+ "$dir_pw_third_party/freertos",
+ ]
+ sources = [ "binary_semaphore.cc" ]
+ deps = [ "$dir_pw_sync:binary_semaphore.facade" ]
+ assert(pw_chrono_SYSTEM_CLOCK_BACKEND == "" ||
+ pw_chrono_SYSTEM_CLOCK_BACKEND ==
+ "$dir_pw_chrono_freertos:system_clock",
+ "The FreeRTOS pw::sync::BinarySemaphore backend only works with the " +
+ "FreeRTOS pw::chrono::SystemClock backend.")
+}
+
+# This target provides the backend for pw::sync::CountingSemaphore.
+pw_source_set("counting_semaphore") {
+ public_configs = [
+ ":public_include_path",
+ ":backend_config",
+ ]
+ public = [
+ "public/pw_sync_freertos/counting_semaphore_inline.h",
+ "public/pw_sync_freertos/counting_semaphore_native.h",
+ "public_overrides/pw_sync_backend/counting_semaphore_inline.h",
+ "public_overrides/pw_sync_backend/counting_semaphore_native.h",
+ ]
+ public_deps = [
+ "$dir_pw_assert",
+ "$dir_pw_chrono:system_clock",
+ "$dir_pw_chrono_freertos:system_clock",
+ "$dir_pw_interrupt:context",
+ "$dir_pw_third_party/freertos",
+ ]
+ sources = [ "counting_semaphore.cc" ]
+ deps = [ "$dir_pw_sync:counting_semaphore.facade" ]
+ assert(pw_chrono_SYSTEM_CLOCK_BACKEND == "" ||
+ pw_chrono_SYSTEM_CLOCK_BACKEND ==
+ "$dir_pw_chrono_freertos:system_clock",
+ "The FreeRTOS pw::sync::CountingSemaphore backend only works with " +
+ "the FreeRTOS pw::chrono::SystemClock backend.")
+}
+
+# This target provides the backend for pw::sync::Mutex.
+pw_source_set("mutex") {
+ public_configs = [
+ ":public_include_path",
+ ":backend_config",
+ ]
+ public = [
+ "public/pw_sync_freertos/mutex_inline.h",
+ "public/pw_sync_freertos/mutex_native.h",
+ "public_overrides/pw_sync_backend/mutex_inline.h",
+ "public_overrides/pw_sync_backend/mutex_native.h",
+ ]
+ public_deps = [
+ "$dir_pw_assert",
+ "$dir_pw_interrupt:context",
+ "$dir_pw_sync:mutex.facade",
+ "$dir_pw_third_party/freertos",
+ ]
+}
+
+# This target provides the backend for pw::sync::TimedMutex.
+pw_source_set("timed_mutex") {
+ public_configs = [
+ ":public_include_path",
+ ":backend_config",
+ ]
+ public = [
+ "public/pw_sync_freertos/timed_mutex_inline.h",
+ "public_overrides/pw_sync_backend/timed_mutex_inline.h",
+ ]
+ public_deps = [
+ "$dir_pw_chrono:system_clock",
+ "$dir_pw_sync:timed_mutex.facade",
+ ]
+ sources = [ "timed_mutex.cc" ]
+ deps = [
+ "$dir_pw_assert",
+ "$dir_pw_chrono_freertos:system_clock",
+ "$dir_pw_interrupt:context",
+ "$dir_pw_third_party/freertos",
+ ]
+ assert(pw_chrono_SYSTEM_CLOCK_BACKEND == "" ||
+ pw_chrono_SYSTEM_CLOCK_BACKEND ==
+ "$dir_pw_chrono_freertos:system_clock",
+ "The FreeRTOS pw::sync::Mutex backend only works with the FreeRTOS " +
+ "pw::chrono::SystemClock backend.")
+}
+
+# This target provides the backend for pw::sync::InterruptSpinLock.
+pw_source_set("interrupt_spin_lock") {
+ public_configs = [
+ ":public_include_path",
+ ":backend_config",
+ ]
+ public = [
+ "public/pw_sync_freertos/interrupt_spin_lock_inline.h",
+ "public/pw_sync_freertos/interrupt_spin_lock_native.h",
+ "public_overrides/pw_sync_backend/interrupt_spin_lock_inline.h",
+ "public_overrides/pw_sync_backend/interrupt_spin_lock_native.h",
+ ]
+ public_deps = [ "$dir_pw_third_party/freertos" ]
+ sources = [ "interrupt_spin_lock.cc" ]
+ deps = [
+ "$dir_pw_assert",
+ "$dir_pw_interrupt:context",
+ "$dir_pw_sync:interrupt_spin_lock.facade",
+ "$dir_pw_third_party/freertos",
+ ]
+}
+
+pw_doc_group("docs") {
+ sources = [ "docs.rst" ]
+}