pw_sync_stl: Extend CMake support

Change-Id: If7e2add8c5cb19f0cd1a7de8b1a5d891396060ad
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/79474
Pigweed-Auto-Submit: Ewout van Bekkum <ewout@google.com>
Reviewed-by: Wyatt Hepler <hepler@google.com>
Commit-Queue: Auto-Submit <auto-submit@pigweed.google.com.iam.gserviceaccount.com>
diff --git a/pw_sync_stl/CMakeLists.txt b/pw_sync_stl/CMakeLists.txt
index b50bb38..e2d4433 100644
--- a/pw_sync_stl/CMakeLists.txt
+++ b/pw_sync_stl/CMakeLists.txt
@@ -14,11 +14,88 @@
 
 include($ENV{PW_ROOT}/pw_build/pigweed.cmake)
 
+# This target provides the backend for pw::sync::BinarySemaphore.
+pw_add_module_library(pw_sync_stl.binary_semaphore_backend
+  IMPLEMENTS_FACADES
+    pw_sync.binary_semaphore
+  HEADERS
+    public/pw_sync_stl/binary_semaphore_inline.h
+    public/pw_sync_stl/binary_semaphore_native.h
+    public_overrides/pw_sync_backend/binary_semaphore_inline.h
+    public_overrides/pw_sync_backend/binary_semaphore_native.h
+  PUBLIC_INCLUDES
+    public
+    public_overrides
+  SOURCES
+    binary_semaphore.cc
+  PRIVATE_DEPS
+    pw_assert
+    pw_chrono.system_clock
+)
+
+# This target provides the backend for pw::sync::CountingSemaphore.
+pw_add_module_library(pw_sync_stl.counting_semaphore_backend
+  IMPLEMENTS_FACADES
+    pw_sync.counting_semaphore
+  HEADERS
+    public/pw_sync_stl/counting_semaphore_inline.h
+    public/pw_sync_stl/counting_semaphore_native.h
+    public_overrides/pw_sync_backend/counting_semaphore_inline.h
+    public_overrides/pw_sync_backend/counting_semaphore_native.h
+  PUBLIC_INCLUDES
+    public
+    public_overrides
+  SOURCES
+    counting_semaphore.cc
+  PRIVATE_DEPS
+    pw_assert
+    pw_chrono.system_clock
+)
+
+# This target provides the backend for pw::sync::Mutex.
 pw_add_module_library(pw_sync_stl.mutex_backend
   IMPLEMENTS_FACADES
     pw_sync.mutex
-  PUBLIC_DEPS
-    pw_assert
+  HEADERS
+    public/pw_sync_stl/mutex_inline.h
+    public/pw_sync_stl/mutex_native.h
+    public_overrides/pw_sync_backend/mutex_inline.h
+    public_overrides/pw_sync_backend/mutex_native.h
+  PUBLIC_INCLUDES
+    public
+    public_overrides
   SOURCES
     mutex.cc
+  PRIVATE_DEPS
+    pw_assert
+)
+
+# This target provides the backend for pw::sync::TimedMutex.
+pw_add_module_library(pw_sync_stl.timed_mutex_backend
+  IMPLEMENTS_FACADES
+    pw_sync.timed_mutex
+  HEADERS
+    public/pw_sync_stl/timed_mutex_inline.h
+    public_overrides/pw_sync_backend/timed_mutex_inline.h
+  PUBLIC_INCLUDES
+    public
+    public_overrides
+  PUBLIC_DEPS
+    pw_sync.mutex
+    pw_chrono.system_clock
+)
+
+pw_add_module_library(pw_sync_stl.interrupt_spin_lock
+  IMPLEMENTS_FACADES
+    pw_sync.interrupt_spin_lock
+  HEADERS
+    public/pw_sync_stl/interrupt_spin_lock_inline.h
+    public/pw_sync_stl/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_INCLUDES
+    public
+    public_overrides
+  PUBLIC_DEPS
+    pw_sync.yield_core
 )