blob: 0704ccafa2af71c41b4dd845fb7dd758ed08941e [file] [log] [blame]
Ewout van Bekkum3c61ae92020-10-30 15:52:25 -07001# Copyright 2020 The Pigweed Authors
2#
3# Licensed under the Apache License, Version 2.0 (the "License"); you may not
4# use this file except in compliance with the License. You may obtain a copy of
5# the License at
6#
7# https://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12# License for the specific language governing permissions and limitations under
13# the License.
14
15load(
16 "//pw_build:pigweed.bzl",
Nathaniel Broughc2d57812021-04-18 22:52:00 +080017 "pw_cc_facade",
Ewout van Bekkum3c61ae92020-10-30 15:52:25 -070018 "pw_cc_library",
19 "pw_cc_test",
20)
21
22package(default_visibility = ["//visibility:public"])
23
Rob Mohr5fc25412021-06-23 09:35:23 -070024licenses(["notice"])
Ewout van Bekkum3c61ae92020-10-30 15:52:25 -070025
Ewout van Bekkum3c61ae92020-10-30 15:52:25 -070026pw_cc_library(
27 name = "epoch",
28 hdrs = [
29 "public/pw_chrono/epoch.h",
30 ],
31 includes = ["public"],
32)
33
Nathaniel Broughc2d57812021-04-18 22:52:00 +080034pw_cc_facade(
Ewout van Bekkum3c61ae92020-10-30 15:52:25 -070035 name = "system_clock_facade",
36 hdrs = [
Ewout van Bekkum830d5d12021-01-28 18:58:03 -080037 "public/pw_chrono/internal/system_clock_macros.h",
Ewout van Bekkum3c61ae92020-10-30 15:52:25 -070038 "public/pw_chrono/system_clock.h",
39 ],
40 includes = ["public"],
Ewout van Bekkum3c61ae92020-10-30 15:52:25 -070041 deps = [
42 ":epoch",
Ewout van Bekkum3c61ae92020-10-30 15:52:25 -070043 "//pw_preprocessor",
44 ],
45)
46
47pw_cc_library(
48 name = "system_clock",
Nathaniel Broughc2d57812021-04-18 22:52:00 +080049 srcs = [
50 "system_clock.cc",
51 ],
Ewout van Bekkum3c61ae92020-10-30 15:52:25 -070052 deps = [
53 ":system_clock_facade",
Ewout van Bekkum21404842021-06-08 11:06:17 -070054 "@pigweed_config//:pw_chrono_system_clock_backend",
Ewout van Bekkum3c61ae92020-10-30 15:52:25 -070055 ],
56)
57
58pw_cc_library(
Ewout van Bekkum21404842021-06-08 11:06:17 -070059 name = "system_clock_backend_multiplexer",
Nathaniel Broughc2d57812021-04-18 22:52:00 +080060 visibility = ["@pigweed_config//:__pkg__"],
61 deps = select({
62 "//pw_build/constraints/rtos:freertos": ["//pw_chrono_freertos:system_clock"],
63 "//pw_build/constraints/rtos:embos": ["//pw_chrono_embos:system_clock"],
64 "//pw_build/constraints/rtos:threadx": ["//pw_chrono_threadx:system_clock"],
65 "//conditions:default": ["//pw_chrono_stl:system_clock"],
66 }),
Ewout van Bekkum3c61ae92020-10-30 15:52:25 -070067)
68
69pw_cc_library(
Rob Mohre93dc3b2021-07-12 07:28:32 -070070 name = "system_timer_facade",
71 hdrs = [
72 "public/pw_chrono/system_timer.h",
73 ],
74 includes = ["public"],
75 deps = [
76 ":system_clock",
77 "//pw_function",
78 ],
Ewout van Bekkum21404842021-06-08 11:06:17 -070079)
80
81pw_cc_library(
82 name = "system_timer",
83 deps = [
84 ":system_timer_facade",
85 "@pigweed_config//:pw_chrono_system_timer_backend",
86 ],
87)
88
89pw_cc_library(
90 name = "system_timer_backend_multiplexer",
91 visibility = ["@pigweed_config//:__pkg__"],
92 deps = select({
Ewout van Bekkum4f97fdd2021-06-24 10:37:37 -070093 "//pw_build/constraints/rtos:freertos": ["//pw_chrono_freertos:system_timer"],
Ewout van Bekkum666935d2021-06-21 15:52:50 -070094 "//pw_build/constraints/rtos:embos": ["//pw_chrono_embos:system_timer"],
Ewout van Bekkum21404842021-06-08 11:06:17 -070095 "//conditions:default": ["//pw_chrono_stl:system_timer"],
96 }),
97)
98
99pw_cc_library(
Ewout van Bekkum3c61ae92020-10-30 15:52:25 -0700100 name = "simulated_system_clock",
101 hdrs = [
102 "public/pw_chrono/simulated_system_clock.h",
103 ],
104 deps = [
105 ":system_clock",
Ewout van Bekkumda2a62d2021-03-12 11:34:47 -0800106 "//pw_sync:interrupt_spin_lock",
Ewout van Bekkum3c61ae92020-10-30 15:52:25 -0700107 ],
108)
109
110pw_cc_test(
111 name = "simulated_system_clock_test",
112 srcs = [
113 "simulated_system_clock_test.cc",
114 ],
115 deps = [
116 ":simulated_system_clock",
117 "//pw_unit_test",
118 ],
119)
120
121pw_cc_test(
122 name = "system_clock_facade_test",
123 srcs = [
124 "system_clock_facade_test.cc",
125 "system_clock_facade_test_c.c",
126 ],
127 deps = [
128 ":system_clock",
129 "//pw_preprocessor",
130 "//pw_unit_test",
131 ],
132)
Ewout van Bekkum21404842021-06-08 11:06:17 -0700133
134pw_cc_test(
135 name = "system_timer_facade_test",
136 srcs = [
137 "system_timer_facade_test.cc",
138 ],
139 deps = [
140 ":system_clock",
141 ":system_timer",
142 "//pw_sync:thread_notification",
143 "//pw_unit_test",
144 ],
145)