blob: dd91dea27277d96a4ebd189375cc75e3cbcebcca [file] [log] [blame]
Armando Montaneza9ca9992021-01-26 17:06:10 -08001# Copyright 2019 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
15import("//build_overrides/pigweed.gni")
16
Armando Montanezd60f74e2021-08-13 10:03:19 -070017import("$dir_pw_build/module_config.gni")
Armando Montaneza9ca9992021-01-26 17:06:10 -080018import("$dir_pw_build/target_types.gni")
19import("$dir_pw_cpu_exception/backend.gni")
20import("$dir_pw_docgen/docs.gni")
21import("$dir_pw_protobuf_compiler/proto.gni")
22import("$dir_pw_unit_test/test.gni")
23
Armando Montanezd60f74e2021-08-13 10:03:19 -070024declare_args() {
25 # The build target that overrides the default configuration options for this
26 # module. This should point to a source set that provides defines through a
27 # public config (which may -include a file or add defines directly).
28 pw_cpu_exception_cortex_m_CONFIG = pw_build_DEFAULT_MODULE_CONFIG
29}
30
31pw_source_set("config") {
Ewout van Bekkum242a27c2021-12-20 08:59:35 -080032 public_deps = [
33 "$dir_pw_preprocessor:arch",
34 pw_cpu_exception_cortex_m_CONFIG,
35 ]
Armando Montanezd60f74e2021-08-13 10:03:19 -070036 public = [ "pw_cpu_exception_cortex_m_private/config.h" ]
37 visibility = [ ":*" ]
38}
39
Ewout van Bekkume758c5c2021-07-22 11:14:16 -070040config("public_include_path") {
Armando Montaneza9ca9992021-01-26 17:06:10 -080041 include_dirs = [ "public" ]
42 visibility = [ ":*" ]
43}
44
Ewout van Bekkum5401d402021-12-14 11:28:11 -080045config("backend_config") {
46 include_dirs = [ "public_overrides" ]
47 visibility = [ ":*" ]
48}
49
Ewout van Bekkum242a27c2021-12-20 08:59:35 -080050pw_source_set("support") {
Ewout van Bekkum6ef8a1d2021-08-03 20:56:04 -070051 deps = [
Armando Montanezd60f74e2021-08-13 10:03:19 -070052 ":config",
Ewout van Bekkum242a27c2021-12-20 08:59:35 -080053 ":cortex_m_constants",
Ewout van Bekkum49f21312022-01-14 11:34:45 -080054 ":util",
Ewout van Bekkum5401d402021-12-14 11:28:11 -080055 "$dir_pw_cpu_exception:support.facade",
Ewout van Bekkumcc9f1862021-12-14 08:19:24 -080056 "$dir_pw_preprocessor:arch",
Ewout van Bekkum6ef8a1d2021-08-03 20:56:04 -070057 dir_pw_log,
Ewout van Bekkum5401d402021-12-14 11:28:11 -080058 dir_pw_string,
Armando Montaneza9ca9992021-01-26 17:06:10 -080059 ]
Ewout van Bekkum49f21312022-01-14 11:34:45 -080060 sources = [ "support.cc" ]
Armando Montaneza9ca9992021-01-26 17:06:10 -080061}
62
Ewout van Bekkum242a27c2021-12-20 08:59:35 -080063# The following targets are deprecated, use ":support" instead.
64group("support_armv7m") {
65 public_deps = [ ":support" ]
66}
67group("support_armv8m") {
68 public_deps = [ ":support" ]
Ewout van Bekkuma91e05a2021-12-13 09:57:29 -080069}
70
Ewout van Bekkum49f21312022-01-14 11:34:45 -080071pw_source_set("util") {
72 public_configs = [ ":public_include_path" ]
73 public = [ "public/pw_cpu_exception_cortex_m/util.h" ]
74 public_deps = [ ":cpu_state" ]
75 deps = [
76 ":config",
77 ":cortex_m_constants",
78 "$dir_pw_preprocessor:arch",
79 dir_pw_log,
80 ]
81 sources = [ "util.cc" ]
82}
83
Ewout van Bekkum242a27c2021-12-20 08:59:35 -080084pw_source_set("proto_dump") {
Ewout van Bekkuma91e05a2021-12-13 09:57:29 -080085 public_configs = [ ":public_include_path" ]
Armando Montaneza9ca9992021-01-26 17:06:10 -080086 public_deps = [
Ewout van Bekkum5401d402021-12-14 11:28:11 -080087 ":cpu_exception_armv7m",
Armando Montaneza9ca9992021-01-26 17:06:10 -080088 dir_pw_protobuf,
89 dir_pw_status,
90 dir_pw_stream,
91 ]
92 public = [ "public/pw_cpu_exception_cortex_m/proto_dump.h" ]
Armando Montanezd60f74e2021-08-13 10:03:19 -070093 deps = [
94 ":config",
95 ":cpu_state_protos.pwpb",
96 ]
Armando Montaneza9ca9992021-01-26 17:06:10 -080097 sources = [ "proto_dump.cc" ]
98}
99
Ewout van Bekkum242a27c2021-12-20 08:59:35 -0800100# The following targets are deprecated, use ":proto_dump" instead.
101group("proto_dump_armv7m") {
102 public_deps = [ ":proto_dump" ]
103}
104group("proto_dump_armv8m") {
105 public_deps = [ ":proto_dump" ]
Ewout van Bekkuma91e05a2021-12-13 09:57:29 -0800106}
107
Armando Montaneza9ca9992021-01-26 17:06:10 -0800108pw_proto_library("cpu_state_protos") {
109 sources = [ "pw_cpu_exception_cortex_m_protos/cpu_state.proto" ]
110}
111
Ewout van Bekkum49f21312022-01-14 11:34:45 -0800112pw_source_set("cpu_state") {
113 public_configs = [ ":public_include_path" ]
114 public = [ "public/pw_cpu_exception_cortex_m/cpu_state.h" ]
115 public_deps = [
116 "$dir_pw_preprocessor",
117 "$dir_pw_preprocessor:arch",
118 ]
119}
120
Ewout van Bekkum242a27c2021-12-20 08:59:35 -0800121pw_source_set("cpu_exception") {
Ewout van Bekkuma91e05a2021-12-13 09:57:29 -0800122 public_configs = [
Ewout van Bekkuma91e05a2021-12-13 09:57:29 -0800123 ":backend_config",
124 ":public_include_path",
125 ]
Ewout van Bekkum49f21312022-01-14 11:34:45 -0800126 public = [ "public_overrides/pw_cpu_exception_backend/state.h" ]
Ewout van Bekkumcc9f1862021-12-14 08:19:24 -0800127 public_deps = [
Ewout van Bekkum49f21312022-01-14 11:34:45 -0800128 ":cpu_state",
Ewout van Bekkumcc9f1862021-12-14 08:19:24 -0800129 "$dir_pw_preprocessor",
130 "$dir_pw_preprocessor:arch",
131 ]
Ewout van Bekkuma91e05a2021-12-13 09:57:29 -0800132}
133
Ewout van Bekkum242a27c2021-12-20 08:59:35 -0800134# The following targets are deprecated, use ":cpu_exception" instead.
135group("cpu_exception_armv7m") {
136 public_deps = [ ":cpu_exception" ]
Ewout van Bekkum5401d402021-12-14 11:28:11 -0800137}
Ewout van Bekkum242a27c2021-12-20 08:59:35 -0800138group("cpu_exception_armv8m") {
139 public_deps = [ ":cpu_exception" ]
Armando Montaneza9ca9992021-01-26 17:06:10 -0800140}
141
Ewout van Bekkum242a27c2021-12-20 08:59:35 -0800142pw_source_set("cpu_exception.impl") {
Ewout van Bekkuma91e05a2021-12-13 09:57:29 -0800143 sources = [ "entry.cc" ]
144 deps = [
145 ":config",
Ewout van Bekkum242a27c2021-12-20 08:59:35 -0800146 ":cortex_m_constants",
Ewout van Bekkum49f21312022-01-14 11:34:45 -0800147 ":cpu_state",
Ewout van Bekkumb4beb762022-02-10 12:37:26 -0800148 ":util",
Ewout van Bekkuma91e05a2021-12-13 09:57:29 -0800149 "$dir_pw_cpu_exception:entry.facade",
150 "$dir_pw_cpu_exception:handler",
Ewout van Bekkumcc9f1862021-12-14 08:19:24 -0800151 "$dir_pw_preprocessor:arch",
Ewout van Bekkuma91e05a2021-12-13 09:57:29 -0800152 ]
153}
154
Ewout van Bekkum242a27c2021-12-20 08:59:35 -0800155# The following targets are deprecated, use ":cpu_exception.impl" instead.
156group("cpu_exception_armv7m.impl") {
157 public_deps = [ ":cpu_exception.impl" ]
158}
159group("cpu_exception_armv8m.impl") {
160 public_deps = [ ":cpu_exception.impl" ]
Ewout van Bekkuma91e05a2021-12-13 09:57:29 -0800161}
162
Ewout van Bekkum242a27c2021-12-20 08:59:35 -0800163pw_source_set("snapshot") {
Ewout van Bekkume758c5c2021-07-22 11:14:16 -0700164 public_configs = [ ":public_include_path" ]
165 public_deps = [
Ewout van Bekkum49f21312022-01-14 11:34:45 -0800166 ":cpu_state",
Ewout van Bekkume758c5c2021-07-22 11:14:16 -0700167 ":cpu_state_protos.pwpb",
Ewout van Bekkume758c5c2021-07-22 11:14:16 -0700168 "$dir_pw_thread:protos.pwpb",
169 "$dir_pw_thread:snapshot",
170 dir_pw_protobuf,
171 dir_pw_status,
172 ]
173 public = [ "public/pw_cpu_exception_cortex_m/snapshot.h" ]
Ewout van Bekkum6ef8a1d2021-08-03 20:56:04 -0700174 sources = [ "snapshot.cc" ]
Ewout van Bekkume758c5c2021-07-22 11:14:16 -0700175 deps = [
Armando Montanezd60f74e2021-08-13 10:03:19 -0700176 ":config",
Ewout van Bekkum242a27c2021-12-20 08:59:35 -0800177 ":cortex_m_constants",
178 ":proto_dump",
Ewout van Bekkumb4beb762022-02-10 12:37:26 -0800179 ":util",
Ewout van Bekkume758c5c2021-07-22 11:14:16 -0700180 dir_pw_log,
181 ]
182}
183
Ewout van Bekkum242a27c2021-12-20 08:59:35 -0800184# The following targets are deprecated, use ":snapshot" instead.
185group("snapshot_armv7m") {
186 public_deps = [ ":snapshot" ]
187}
188group("snapshot_armv8m") {
189 public_deps = [ ":snapshot" ]
Ewout van Bekkuma91e05a2021-12-13 09:57:29 -0800190}
191
Ewout van Bekkum242a27c2021-12-20 08:59:35 -0800192pw_source_set("cortex_m_constants") {
Ewout van Bekkuma91e05a2021-12-13 09:57:29 -0800193 public = [ "pw_cpu_exception_cortex_m_private/cortex_m_constants.h" ]
Ewout van Bekkumcc9f1862021-12-14 08:19:24 -0800194 public_deps = [ "$dir_pw_preprocessor:arch" ]
Ewout van Bekkuma91e05a2021-12-13 09:57:29 -0800195 visibility = [ ":*" ]
196}
197
Ewout van Bekkum242a27c2021-12-20 08:59:35 -0800198# The following targets are deprecated, use ":cortex_m_constants" instead.
199group("cortex_m_constants_armv7m") {
200 public_deps = [ ":cortex_m_constants" ]
201 visibility = [ ":*" ]
202}
203group("cortex_m_constants_armv8m") {
204 public_deps = [ ":cortex_m_constants" ]
Ewout van Bekkum6ef8a1d2021-08-03 20:56:04 -0700205 visibility = [ ":*" ]
206}
207
Armando Montaneza9ca9992021-01-26 17:06:10 -0800208pw_test_group("tests") {
Ewout van Bekkum242a27c2021-12-20 08:59:35 -0800209 tests = [ ":cpu_exception_entry_test" ]
Armando Montaneza9ca9992021-01-26 17:06:10 -0800210}
211
Ewout van Bekkum242a27c2021-12-20 08:59:35 -0800212# TODO(pwbug/583): Add ARMv8-M mainline coverage.
213pw_test("cpu_exception_entry_test") {
Ewout van Bekkuma91e05a2021-12-13 09:57:29 -0800214 enable_if = pw_cpu_exception_ENTRY_BACKEND ==
Ewout van Bekkum242a27c2021-12-20 08:59:35 -0800215 "$dir_pw_cpu_exception_cortex_m:cpu_exception"
Ewout van Bekkum5401d402021-12-14 11:28:11 -0800216 deps = [
Ewout van Bekkum242a27c2021-12-20 08:59:35 -0800217 ":cortex_m_constants",
218 ":cpu_exception",
Ewout van Bekkum49f21312022-01-14 11:34:45 -0800219 ":cpu_state",
Ewout van Bekkum5401d402021-12-14 11:28:11 -0800220 "$dir_pw_cpu_exception:entry",
221 "$dir_pw_cpu_exception:handler",
222 "$dir_pw_cpu_exception:support",
223 ]
Armando Montaneza9ca9992021-01-26 17:06:10 -0800224 sources = [ "exception_entry_test.cc" ]
225}
226
Ewout van Bekkumb4beb762022-02-10 12:37:26 -0800227pw_test("util_test") {
228 enable_if = pw_cpu_exception_ENTRY_BACKEND ==
229 "$dir_pw_cpu_exception_cortex_m:cpu_exception"
230 deps = [
231 ":cpu_state",
232 ":util",
233 ]
234 sources = [ "util_test.cc" ]
235}
236
Armando Montaneza9ca9992021-01-26 17:06:10 -0800237pw_doc_group("docs") {
238 sources = [ "docs.rst" ]
239}