Armando Montanez | a9ca999 | 2021-01-26 17:06:10 -0800 | [diff] [blame] | 1 | # 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 | |
| 15 | import("//build_overrides/pigweed.gni") |
| 16 | |
Armando Montanez | d60f74e | 2021-08-13 10:03:19 -0700 | [diff] [blame] | 17 | import("$dir_pw_build/module_config.gni") |
Armando Montanez | a9ca999 | 2021-01-26 17:06:10 -0800 | [diff] [blame] | 18 | import("$dir_pw_build/target_types.gni") |
| 19 | import("$dir_pw_cpu_exception/backend.gni") |
| 20 | import("$dir_pw_docgen/docs.gni") |
| 21 | import("$dir_pw_protobuf_compiler/proto.gni") |
| 22 | import("$dir_pw_unit_test/test.gni") |
| 23 | |
Armando Montanez | d60f74e | 2021-08-13 10:03:19 -0700 | [diff] [blame] | 24 | declare_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 | |
| 31 | pw_source_set("config") { |
Ewout van Bekkum | 242a27c | 2021-12-20 08:59:35 -0800 | [diff] [blame] | 32 | public_deps = [ |
| 33 | "$dir_pw_preprocessor:arch", |
| 34 | pw_cpu_exception_cortex_m_CONFIG, |
| 35 | ] |
Armando Montanez | d60f74e | 2021-08-13 10:03:19 -0700 | [diff] [blame] | 36 | public = [ "pw_cpu_exception_cortex_m_private/config.h" ] |
| 37 | visibility = [ ":*" ] |
| 38 | } |
| 39 | |
Ewout van Bekkum | e758c5c | 2021-07-22 11:14:16 -0700 | [diff] [blame] | 40 | config("public_include_path") { |
Armando Montanez | a9ca999 | 2021-01-26 17:06:10 -0800 | [diff] [blame] | 41 | include_dirs = [ "public" ] |
| 42 | visibility = [ ":*" ] |
| 43 | } |
| 44 | |
Ewout van Bekkum | 5401d40 | 2021-12-14 11:28:11 -0800 | [diff] [blame] | 45 | config("backend_config") { |
| 46 | include_dirs = [ "public_overrides" ] |
| 47 | visibility = [ ":*" ] |
| 48 | } |
| 49 | |
Ewout van Bekkum | 242a27c | 2021-12-20 08:59:35 -0800 | [diff] [blame] | 50 | pw_source_set("support") { |
Ewout van Bekkum | 6ef8a1d | 2021-08-03 20:56:04 -0700 | [diff] [blame] | 51 | deps = [ |
Armando Montanez | d60f74e | 2021-08-13 10:03:19 -0700 | [diff] [blame] | 52 | ":config", |
Ewout van Bekkum | 242a27c | 2021-12-20 08:59:35 -0800 | [diff] [blame] | 53 | ":cortex_m_constants", |
Ewout van Bekkum | 49f2131 | 2022-01-14 11:34:45 -0800 | [diff] [blame] | 54 | ":util", |
Ewout van Bekkum | 5401d40 | 2021-12-14 11:28:11 -0800 | [diff] [blame] | 55 | "$dir_pw_cpu_exception:support.facade", |
Ewout van Bekkum | cc9f186 | 2021-12-14 08:19:24 -0800 | [diff] [blame] | 56 | "$dir_pw_preprocessor:arch", |
Ewout van Bekkum | 6ef8a1d | 2021-08-03 20:56:04 -0700 | [diff] [blame] | 57 | dir_pw_log, |
Ewout van Bekkum | 5401d40 | 2021-12-14 11:28:11 -0800 | [diff] [blame] | 58 | dir_pw_string, |
Armando Montanez | a9ca999 | 2021-01-26 17:06:10 -0800 | [diff] [blame] | 59 | ] |
Ewout van Bekkum | 49f2131 | 2022-01-14 11:34:45 -0800 | [diff] [blame] | 60 | sources = [ "support.cc" ] |
Armando Montanez | a9ca999 | 2021-01-26 17:06:10 -0800 | [diff] [blame] | 61 | } |
| 62 | |
Ewout van Bekkum | 242a27c | 2021-12-20 08:59:35 -0800 | [diff] [blame] | 63 | # The following targets are deprecated, use ":support" instead. |
| 64 | group("support_armv7m") { |
| 65 | public_deps = [ ":support" ] |
| 66 | } |
| 67 | group("support_armv8m") { |
| 68 | public_deps = [ ":support" ] |
Ewout van Bekkum | a91e05a | 2021-12-13 09:57:29 -0800 | [diff] [blame] | 69 | } |
| 70 | |
Ewout van Bekkum | 49f2131 | 2022-01-14 11:34:45 -0800 | [diff] [blame] | 71 | pw_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 Bekkum | 242a27c | 2021-12-20 08:59:35 -0800 | [diff] [blame] | 84 | pw_source_set("proto_dump") { |
Ewout van Bekkum | a91e05a | 2021-12-13 09:57:29 -0800 | [diff] [blame] | 85 | public_configs = [ ":public_include_path" ] |
Armando Montanez | a9ca999 | 2021-01-26 17:06:10 -0800 | [diff] [blame] | 86 | public_deps = [ |
Ewout van Bekkum | 5401d40 | 2021-12-14 11:28:11 -0800 | [diff] [blame] | 87 | ":cpu_exception_armv7m", |
Armando Montanez | a9ca999 | 2021-01-26 17:06:10 -0800 | [diff] [blame] | 88 | dir_pw_protobuf, |
| 89 | dir_pw_status, |
| 90 | dir_pw_stream, |
| 91 | ] |
| 92 | public = [ "public/pw_cpu_exception_cortex_m/proto_dump.h" ] |
Armando Montanez | d60f74e | 2021-08-13 10:03:19 -0700 | [diff] [blame] | 93 | deps = [ |
| 94 | ":config", |
| 95 | ":cpu_state_protos.pwpb", |
| 96 | ] |
Armando Montanez | a9ca999 | 2021-01-26 17:06:10 -0800 | [diff] [blame] | 97 | sources = [ "proto_dump.cc" ] |
| 98 | } |
| 99 | |
Ewout van Bekkum | 242a27c | 2021-12-20 08:59:35 -0800 | [diff] [blame] | 100 | # The following targets are deprecated, use ":proto_dump" instead. |
| 101 | group("proto_dump_armv7m") { |
| 102 | public_deps = [ ":proto_dump" ] |
| 103 | } |
| 104 | group("proto_dump_armv8m") { |
| 105 | public_deps = [ ":proto_dump" ] |
Ewout van Bekkum | a91e05a | 2021-12-13 09:57:29 -0800 | [diff] [blame] | 106 | } |
| 107 | |
Armando Montanez | a9ca999 | 2021-01-26 17:06:10 -0800 | [diff] [blame] | 108 | pw_proto_library("cpu_state_protos") { |
| 109 | sources = [ "pw_cpu_exception_cortex_m_protos/cpu_state.proto" ] |
| 110 | } |
| 111 | |
Ewout van Bekkum | 49f2131 | 2022-01-14 11:34:45 -0800 | [diff] [blame] | 112 | pw_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 Bekkum | 242a27c | 2021-12-20 08:59:35 -0800 | [diff] [blame] | 121 | pw_source_set("cpu_exception") { |
Ewout van Bekkum | a91e05a | 2021-12-13 09:57:29 -0800 | [diff] [blame] | 122 | public_configs = [ |
Ewout van Bekkum | a91e05a | 2021-12-13 09:57:29 -0800 | [diff] [blame] | 123 | ":backend_config", |
| 124 | ":public_include_path", |
| 125 | ] |
Ewout van Bekkum | 49f2131 | 2022-01-14 11:34:45 -0800 | [diff] [blame] | 126 | public = [ "public_overrides/pw_cpu_exception_backend/state.h" ] |
Ewout van Bekkum | cc9f186 | 2021-12-14 08:19:24 -0800 | [diff] [blame] | 127 | public_deps = [ |
Ewout van Bekkum | 49f2131 | 2022-01-14 11:34:45 -0800 | [diff] [blame] | 128 | ":cpu_state", |
Ewout van Bekkum | cc9f186 | 2021-12-14 08:19:24 -0800 | [diff] [blame] | 129 | "$dir_pw_preprocessor", |
| 130 | "$dir_pw_preprocessor:arch", |
| 131 | ] |
Ewout van Bekkum | a91e05a | 2021-12-13 09:57:29 -0800 | [diff] [blame] | 132 | } |
| 133 | |
Ewout van Bekkum | 242a27c | 2021-12-20 08:59:35 -0800 | [diff] [blame] | 134 | # The following targets are deprecated, use ":cpu_exception" instead. |
| 135 | group("cpu_exception_armv7m") { |
| 136 | public_deps = [ ":cpu_exception" ] |
Ewout van Bekkum | 5401d40 | 2021-12-14 11:28:11 -0800 | [diff] [blame] | 137 | } |
Ewout van Bekkum | 242a27c | 2021-12-20 08:59:35 -0800 | [diff] [blame] | 138 | group("cpu_exception_armv8m") { |
| 139 | public_deps = [ ":cpu_exception" ] |
Armando Montanez | a9ca999 | 2021-01-26 17:06:10 -0800 | [diff] [blame] | 140 | } |
| 141 | |
Ewout van Bekkum | 242a27c | 2021-12-20 08:59:35 -0800 | [diff] [blame] | 142 | pw_source_set("cpu_exception.impl") { |
Ewout van Bekkum | a91e05a | 2021-12-13 09:57:29 -0800 | [diff] [blame] | 143 | sources = [ "entry.cc" ] |
| 144 | deps = [ |
| 145 | ":config", |
Ewout van Bekkum | 242a27c | 2021-12-20 08:59:35 -0800 | [diff] [blame] | 146 | ":cortex_m_constants", |
Ewout van Bekkum | 49f2131 | 2022-01-14 11:34:45 -0800 | [diff] [blame] | 147 | ":cpu_state", |
Ewout van Bekkum | b4beb76 | 2022-02-10 12:37:26 -0800 | [diff] [blame] | 148 | ":util", |
Ewout van Bekkum | a91e05a | 2021-12-13 09:57:29 -0800 | [diff] [blame] | 149 | "$dir_pw_cpu_exception:entry.facade", |
| 150 | "$dir_pw_cpu_exception:handler", |
Ewout van Bekkum | cc9f186 | 2021-12-14 08:19:24 -0800 | [diff] [blame] | 151 | "$dir_pw_preprocessor:arch", |
Ewout van Bekkum | a91e05a | 2021-12-13 09:57:29 -0800 | [diff] [blame] | 152 | ] |
| 153 | } |
| 154 | |
Ewout van Bekkum | 242a27c | 2021-12-20 08:59:35 -0800 | [diff] [blame] | 155 | # The following targets are deprecated, use ":cpu_exception.impl" instead. |
| 156 | group("cpu_exception_armv7m.impl") { |
| 157 | public_deps = [ ":cpu_exception.impl" ] |
| 158 | } |
| 159 | group("cpu_exception_armv8m.impl") { |
| 160 | public_deps = [ ":cpu_exception.impl" ] |
Ewout van Bekkum | a91e05a | 2021-12-13 09:57:29 -0800 | [diff] [blame] | 161 | } |
| 162 | |
Ewout van Bekkum | 242a27c | 2021-12-20 08:59:35 -0800 | [diff] [blame] | 163 | pw_source_set("snapshot") { |
Ewout van Bekkum | e758c5c | 2021-07-22 11:14:16 -0700 | [diff] [blame] | 164 | public_configs = [ ":public_include_path" ] |
| 165 | public_deps = [ |
Ewout van Bekkum | 49f2131 | 2022-01-14 11:34:45 -0800 | [diff] [blame] | 166 | ":cpu_state", |
Ewout van Bekkum | e758c5c | 2021-07-22 11:14:16 -0700 | [diff] [blame] | 167 | ":cpu_state_protos.pwpb", |
Ewout van Bekkum | e758c5c | 2021-07-22 11:14:16 -0700 | [diff] [blame] | 168 | "$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 Bekkum | 6ef8a1d | 2021-08-03 20:56:04 -0700 | [diff] [blame] | 174 | sources = [ "snapshot.cc" ] |
Ewout van Bekkum | e758c5c | 2021-07-22 11:14:16 -0700 | [diff] [blame] | 175 | deps = [ |
Armando Montanez | d60f74e | 2021-08-13 10:03:19 -0700 | [diff] [blame] | 176 | ":config", |
Ewout van Bekkum | 242a27c | 2021-12-20 08:59:35 -0800 | [diff] [blame] | 177 | ":cortex_m_constants", |
| 178 | ":proto_dump", |
Ewout van Bekkum | b4beb76 | 2022-02-10 12:37:26 -0800 | [diff] [blame] | 179 | ":util", |
Ewout van Bekkum | e758c5c | 2021-07-22 11:14:16 -0700 | [diff] [blame] | 180 | dir_pw_log, |
| 181 | ] |
| 182 | } |
| 183 | |
Ewout van Bekkum | 242a27c | 2021-12-20 08:59:35 -0800 | [diff] [blame] | 184 | # The following targets are deprecated, use ":snapshot" instead. |
| 185 | group("snapshot_armv7m") { |
| 186 | public_deps = [ ":snapshot" ] |
| 187 | } |
| 188 | group("snapshot_armv8m") { |
| 189 | public_deps = [ ":snapshot" ] |
Ewout van Bekkum | a91e05a | 2021-12-13 09:57:29 -0800 | [diff] [blame] | 190 | } |
| 191 | |
Ewout van Bekkum | 242a27c | 2021-12-20 08:59:35 -0800 | [diff] [blame] | 192 | pw_source_set("cortex_m_constants") { |
Ewout van Bekkum | a91e05a | 2021-12-13 09:57:29 -0800 | [diff] [blame] | 193 | public = [ "pw_cpu_exception_cortex_m_private/cortex_m_constants.h" ] |
Ewout van Bekkum | cc9f186 | 2021-12-14 08:19:24 -0800 | [diff] [blame] | 194 | public_deps = [ "$dir_pw_preprocessor:arch" ] |
Ewout van Bekkum | a91e05a | 2021-12-13 09:57:29 -0800 | [diff] [blame] | 195 | visibility = [ ":*" ] |
| 196 | } |
| 197 | |
Ewout van Bekkum | 242a27c | 2021-12-20 08:59:35 -0800 | [diff] [blame] | 198 | # The following targets are deprecated, use ":cortex_m_constants" instead. |
| 199 | group("cortex_m_constants_armv7m") { |
| 200 | public_deps = [ ":cortex_m_constants" ] |
| 201 | visibility = [ ":*" ] |
| 202 | } |
| 203 | group("cortex_m_constants_armv8m") { |
| 204 | public_deps = [ ":cortex_m_constants" ] |
Ewout van Bekkum | 6ef8a1d | 2021-08-03 20:56:04 -0700 | [diff] [blame] | 205 | visibility = [ ":*" ] |
| 206 | } |
| 207 | |
Armando Montanez | a9ca999 | 2021-01-26 17:06:10 -0800 | [diff] [blame] | 208 | pw_test_group("tests") { |
Ewout van Bekkum | 242a27c | 2021-12-20 08:59:35 -0800 | [diff] [blame] | 209 | tests = [ ":cpu_exception_entry_test" ] |
Armando Montanez | a9ca999 | 2021-01-26 17:06:10 -0800 | [diff] [blame] | 210 | } |
| 211 | |
Ewout van Bekkum | 242a27c | 2021-12-20 08:59:35 -0800 | [diff] [blame] | 212 | # TODO(pwbug/583): Add ARMv8-M mainline coverage. |
| 213 | pw_test("cpu_exception_entry_test") { |
Ewout van Bekkum | a91e05a | 2021-12-13 09:57:29 -0800 | [diff] [blame] | 214 | enable_if = pw_cpu_exception_ENTRY_BACKEND == |
Ewout van Bekkum | 242a27c | 2021-12-20 08:59:35 -0800 | [diff] [blame] | 215 | "$dir_pw_cpu_exception_cortex_m:cpu_exception" |
Ewout van Bekkum | 5401d40 | 2021-12-14 11:28:11 -0800 | [diff] [blame] | 216 | deps = [ |
Ewout van Bekkum | 242a27c | 2021-12-20 08:59:35 -0800 | [diff] [blame] | 217 | ":cortex_m_constants", |
| 218 | ":cpu_exception", |
Ewout van Bekkum | 49f2131 | 2022-01-14 11:34:45 -0800 | [diff] [blame] | 219 | ":cpu_state", |
Ewout van Bekkum | 5401d40 | 2021-12-14 11:28:11 -0800 | [diff] [blame] | 220 | "$dir_pw_cpu_exception:entry", |
| 221 | "$dir_pw_cpu_exception:handler", |
| 222 | "$dir_pw_cpu_exception:support", |
| 223 | ] |
Armando Montanez | a9ca999 | 2021-01-26 17:06:10 -0800 | [diff] [blame] | 224 | sources = [ "exception_entry_test.cc" ] |
| 225 | } |
| 226 | |
Ewout van Bekkum | b4beb76 | 2022-02-10 12:37:26 -0800 | [diff] [blame] | 227 | pw_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 Montanez | a9ca999 | 2021-01-26 17:06:10 -0800 | [diff] [blame] | 237 | pw_doc_group("docs") { |
| 238 | sources = [ "docs.rst" ] |
| 239 | } |