pw_cpu_exception_cortex_m: Extend CMake support

Change-Id: I6bc373eead905063c5dcca22cbbe177359f4e830
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/79472
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_cpu_exception_cortex_m/CMakeLists.txt b/pw_cpu_exception_cortex_m/CMakeLists.txt
index 36603bd..5be58cb 100644
--- a/pw_cpu_exception_cortex_m/CMakeLists.txt
+++ b/pw_cpu_exception_cortex_m/CMakeLists.txt
@@ -18,23 +18,29 @@
 pw_add_module_config(pw_cpu_exception_cortex_m_CONFIG)
 
 pw_add_module_library(pw_cpu_exception_cortex_m.config
-  PUBLIC_DEPS
-    ${pw_cpu_exception_cortex_m_CONFIG}
   HEADERS
     pw_cpu_exception_cortex_m_private/config.h
+  PUBLIC_DEPS
+    ${pw_cpu_exception_cortex_m_CONFIG}
 )
 
 pw_add_module_library(pw_cpu_exception_cortex_m.cpu_state
+  HEADERS
+    public/pw_cpu_exception_cortex_m/cpu_state.h
+  PUBLIC_INCLUDES
+    public
   PUBLIC_DEPS
     pw_preprocessor
     pw_preprocessor.arch
-  HEADERS
-    public/pw_cpu_exception_cortex_m/cpu_state.h
 )
 
 pw_add_module_library(pw_cpu_exception_cortex_m.cpu_exception
   IMPLEMENTS_FACADES
     pw_cpu_exception.entry
+  HEADERS
+    public_overrides/pw_cpu_exception_backend/state.h
+  PUBLIC_INCLUDES
+    public_overrides
   PUBLIC_DEPS
     pw_preprocessor
     pw_preprocessor.arch
@@ -45,11 +51,13 @@
     pw_cpu_exception_cortex_m.constants
   SOURCES
     entry.cc
-  HEADERS
-    public_overrides/pw_cpu_exception_backend/state.h
 )
 
 pw_add_module_library(pw_cpu_exception_cortex_m.util
+  HEADERS
+    public/pw_cpu_exception_cortex_m/util.h
+  PUBLIC_INCLUDES
+    public
   PUBLIC_DEPS
     pw_cpu_exception_cortex_m.cpu_state
   PRIVATE_DEPS
@@ -59,8 +67,6 @@
     pw_preprocessor.arch
   SOURCES
     util.cc
-  HEADERS
-    public/pw_cpu_exception_cortex_m/util.h
 )
 
 pw_add_module_library(pw_cpu_exception_cortex_m.support
@@ -71,6 +77,7 @@
     pw_cpu_exception_cortex_m.constants
     pw_cpu_exception_cortex_m.util
     pw_log
+    pw_polyfill.span
     pw_preprocessor.arch
     pw_string
   SOURCES
@@ -83,6 +90,10 @@
 )
 
 pw_add_module_library(pw_cpu_exception_cortex_m.proto_dump
+  HEADERS
+    public/pw_cpu_exception_cortex_m/proto_dump.h
+  PUBLIC_INCLUDES
+    public
   PUBLIC_DEPS
     pw_cpu_exception_cortex_m.cpu_state
     pw_protobuf
@@ -93,8 +104,6 @@
     pw_cpu_exception_cortex_m.cpu_state_protos.pwpb
   SOURCES
     proto_dump.cc
-  HEADERS
-    public/pw_cpu_exception_cortex_m/proto_dump.h
 )
 
 pw_add_module_library(pw_cpu_exception_cortex_m.snapshot
@@ -108,6 +117,7 @@
     pw_cpu_exception_cortex_m.constants
     pw_cpu_exception_cortex_m.proto_dump
     pw_log
+    pw_polyfill.span
   SOURCES
     snapshot.cc
   HEADERS
@@ -120,3 +130,23 @@
   HEADERS
     pw_cpu_exception_cortex_m_private/cortex_m_constants.h
 )
+
+# TODO(pwbug/583): Add ARMv8-M mainline coverage.
+if("${pw_cpu_exception.entry_BACKEND}" STREQUAL
+   "pw_cpu_exception_cortex_m.cpu_exception")
+  pw_add_test(pw_cpu_exception_cortex_m.cpu_exception_entry_test
+    SOURCES
+      exception_entry_test.cc
+    DEPS
+      pw_cpu_exception.entry
+      pw_cpu_exception.handler
+      pw_cpu_exception.support
+      pw_cpu_exception_cortex_m.cortex_m_constants
+      pw_cpu_exception_cortex_m.cpu_exception
+      pw_cpu_exception_cortex_m.cpu_state
+      pw_polyfill.span
+    GROUPS
+      modules
+      pw_cpu_exception_cortex_m
+  )
+endif()