blob: 38b3a0e0625ee3e2f45aa72d411494f0b10d1999 [file] [log] [blame]
Armando Montanez70095662020-01-09 14:25:04 -08001# 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
Armando Montanezfb3d3fb2020-06-09 18:12:12 -070015# gn-format disable
16import("//build_overrides/pigweed.gni")
17
Armando Montanez70095662020-01-09 14:25:04 -080018import("$dir_pw_build/linker_script.gni")
Alexei Frolovedd2f142020-06-09 19:11:27 -070019import("$dir_pw_build/target_types.gni")
Armando Montanez70095662020-01-09 14:25:04 -080020import("$dir_pw_docgen/docs.gni")
Alexei Frolov4c0428a2020-06-10 10:46:04 -070021declare_args() {
Armando Montanezfd5de702020-06-10 16:51:01 -070022 # TODO(frolv): Move this into pw_boot module when it is created.
Alexei Frolov4c0428a2020-06-10 10:46:04 -070023 pw_boot_BACKEND = ""
24
Armando Montanezfd5de702020-06-10 16:51:01 -070025 # Whether or not to include code that signals to QEMU to shut down the
26 # emulator. This should only be enabled on QEMU targets.
27 pw_boot_armv7m_QEMU_SHUTDOWN = false
28
29 # This list should contain the necessary defines for setting pw_boot linker
30 # script memory regions.
31 pw_boot_armv7m_LINK_CONFIG_DEFINES = []
Alexei Frolov4c0428a2020-06-10 10:46:04 -070032}
33
34if (pw_boot_BACKEND == dir_pw_boot_armv7m) {
Armando Montanez70095662020-01-09 14:25:04 -080035 config("default_config") {
36 include_dirs = [ "public" ]
37 }
38
39 pw_linker_script("armv7m_linker_script") {
Armando Montanezfd5de702020-06-10 16:51:01 -070040 # pw_boot_armv7m_LINK_CONFIG_DEFINES is a list of defines provided by the
41 # target.
42 defines = pw_boot_armv7m_LINK_CONFIG_DEFINES
Armando Montanez70095662020-01-09 14:25:04 -080043 linker_script = "basic_armv7m.ld"
44 }
45
Alexei Frolovedd2f142020-06-09 19:11:27 -070046 pw_source_set("pw_boot_armv7m") {
Armando Montanez70095662020-01-09 14:25:04 -080047 public_configs = [ ":default_config" ]
48 deps = [
49 ":armv7m_linker_script",
50 "$dir_pw_preprocessor",
51 ]
Armando Montanezfd5de702020-06-10 16:51:01 -070052 if (pw_boot_armv7m_QEMU_SHUTDOWN) {
Armando Montanez096de552020-03-23 10:38:18 -070053 defines = [ "PW_BOOT_ARMV7M_QEMU_SHUTDOWN=1" ]
54 }
Rob Mohra0ba54f2020-02-27 11:43:49 -080055 public = [ "public/pw_boot_armv7m/boot.h" ]
Armando Montanez70095662020-01-09 14:25:04 -080056 sources = [ "core_init.c" ] + public
57 }
58}
59
60pw_doc_group("docs") {
Rob Mohra0ba54f2020-02-27 11:43:49 -080061 sources = [ "docs.rst" ]
Armando Montanez70095662020-01-09 14:25:04 -080062}