pw_sync: add lock safety annotations for C++ clang usage

Adds clang thread safety annotations to the interrupt spin lock for
C++ usage. Note that this is only checked when compiling with clang.

C APIs explicitly escape the thread safety annotations.

Change-Id: Ic829afd41b3978c507ebe294d34e1e0dc03865b4
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/40241
Reviewed-by: Keir Mierle <keir@google.com>
Reviewed-by: Wyatt Hepler <hepler@google.com>
Pigweed-Auto-Submit: Ewout van Bekkum <ewout@google.com>
Commit-Queue: Auto-Submit <auto-submit@pigweed.google.com.iam.gserviceaccount.com>
diff --git a/pw_sync/BUILD b/pw_sync/BUILD
index f1c6620..e0a4741 100644
--- a/pw_sync/BUILD
+++ b/pw_sync/BUILD
@@ -92,6 +92,17 @@
 )
 
 pw_cc_library(
+    name = "lock_annotations",
+    hdrs = [
+        "public/pw_sync/lock_annotations.h",
+    ],
+    includes = ["public"],
+    deps = [
+        "//pw_preprocessor",
+    ],
+)
+
+pw_cc_library(
     name = "mutex_facade",
     hdrs = [
         "public/pw_sync/mutex.h",
@@ -101,8 +112,9 @@
         "mutex.cc"
     ],
     deps = [
-        PW_SYNC_MUTEX_BACKEND + "_headers",
+		    ":lock_annotations",
         "//pw_preprocessor",
+        PW_SYNC_MUTEX_BACKEND + "_headers",
     ],
 )
 
@@ -131,10 +143,11 @@
         "timed_mutex.cc"
     ],
     deps = [
-        PW_SYNC_TIMED_MUTEX_BACKEND + "_headers",
-        "//pw_chrono:system_clock",
+		    ":lock_annotations",
         ":mutex_facade",
+        "//pw_chrono:system_clock",
         "//pw_preprocessor",
+        PW_SYNC_TIMED_MUTEX_BACKEND + "_headers",
     ],
 )
 
@@ -163,8 +176,9 @@
         "interrupt_spin_lock.cc"
     ],
     deps = [
-        PW_SYNC_INTERRUPT_SPIN_LOCK_BACKEND + "_headers",
+		    ":lock_annotations",
         "//pw_preprocessor",
+        PW_SYNC_INTERRUPT_SPIN_LOCK_BACKEND + "_headers",
     ],
 )