pw_chrono: Extend CMake support
Change-Id: I32ffab2c629e18efe763dba8cddcb627f577b36c
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/79726
Reviewed-by: Wyatt Hepler <hepler@google.com>
Commit-Queue: Ewout van Bekkum <ewout@google.com>
Pigweed-Auto-Submit: Ewout van Bekkum <ewout@google.com>
diff --git a/pw_chrono/CMakeLists.txt b/pw_chrono/CMakeLists.txt
index d6cc918..8e31672 100644
--- a/pw_chrono/CMakeLists.txt
+++ b/pw_chrono/CMakeLists.txt
@@ -14,9 +14,90 @@
include($ENV{PW_ROOT}/pw_build/pigweed.cmake)
+pw_add_module_library(pw_chrono.epoch
+ HEADERS
+ public/pw_chrono/epoch.h
+ PUBLIC_INCLUDES
+ public
+)
+
pw_add_facade(pw_chrono.system_clock
+ HEADERS
+ public/pw_chrono/internal/system_clock_macros.h
+ public/pw_chrono/system_clock.h
+ PUBLIC_INCLUDES
+ public
+ PUBLIC_DEPS
+ pw_chrono.epoch
+ pw_preprocessor
SOURCES
system_clock.cc
- PUBLIC_DEPS
- pw_preprocessor
)
+
+pw_add_facade(pw_chrono.system_timer
+ HEADERS
+ public/pw_chrono/system_timer.h
+ PUBLIC_INCLUDES
+ public
+ PUBLIC_DEPS
+ pw_chrono.system_clock
+ pw_function
+)
+
+# Dependency injectable implementation of pw::chrono::SystemClock::Interface.
+pw_add_module_library(pw_chrono.simulated_system_clock
+ HEADERS
+ public/pw_chrono/simulated_system_clock.h
+ PUBLIC_INCLUDES
+ public
+ PUBLIC_DEPS
+ pw_chrono.system_clock
+ pw_sync.interrupt_spin_lock
+)
+
+# TODO(ewout): Renable this once we've resolved the backend variable definition
+# ordering issue, likely by mirroring GN's definition of variables in external
+# files which can be imported where needed.
+# if((NOT "${pw_chrono.system_clock_BACKEND}"
+# STREQUAL "pw_chrono.system_clock.NO_BACKEND_SET") AND
+# (NOT "${pw_sync.interrupt_spin_lock_BACKEND}"
+# STREQUAL "pw_sync.interrupt_spin_lock.NO_BACKEND_SET"))
+# pw_add_test(pw_chrono.simulated_system_clock_test
+# SOURCES
+# simulated_system_clock_test.cc
+# DEPS
+# pw_chrono.simulated_system_clock
+# GROUPS
+# modules
+# pw_chrono
+# )
+# endif()
+
+if(NOT "${pw_chrono.system_clock_BACKEND}"
+ STREQUAL "pw_chrono.system_clock.NO_BACKEND_SET")
+ pw_add_test(pw_chrono.system_clock_facade_test
+ SOURCES
+ system_clock_facade_test.cc
+ system_clock_facade_test_c.c
+ DEPS
+ pw_chrono.system_clock
+ pw_preprocessor
+ GROUPS
+ modules
+ pw_chrono
+ )
+endif()
+
+if(NOT "${pw_chrono.system_timer_BACKEND}"
+ STREQUAL "pw_chrono.system_timer.NO_BACKEND_SET")
+ pw_add_test(pw_chrono.system_timer_facade_test
+ SOURCES
+ system_timer_facade_test.cc
+ DEPS
+ pw_chrono.system_timer
+ pw_sync.thread_notification
+ GROUPS
+ modules
+ pw_chrono
+ )
+endif()