# Copyright 2019 The Pigweed Authors
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.

# This file defines default values for all of the build variables used by
# Pigweed.
#
# Each individual variable can be overriden by a target to configure the system
# to build for it. This is done in a .gni file specific to the target by first
# importing this file, then changing the variables as desired.

# Whether to build host-side tooling.
pw_build_host_tools = false

# Options which configure the executable targets created in Pigweed builds.
pw_executable_config = {
  # The name of the GN target type used to build Pigweed executables.
  #
  # If this is a custom template, the .gni file containing the template must
  # be imported at the top of the target configuration file to make it globally
  # available.
  target_type = "executable"

  # Path to an instantiation of the "linker_script" GN template defining the
  # linker script configuration for the target.
  linker_script_target = ""

  # Path to the Bloaty configuration file that defines the memory layout and
  # capacities for the target binaries.
  bloaty_config_file = ""
}

# Default toolchain for the build target.
#
# If this is changed, you must run `ninja -t clean` to remove any files from
# the previous toolchain's build before building again.
pw_target_toolchain = ""

# Defaults variables for the build target.
#
# Scope containing defaults to be added to GN targets for the target. With the
# exception of "remove_configs", all variables will be automatically be
# forwarded to GN targets with the following types:
#   source_set
#   executable
#   shared_library
#   static_library
#
# "remove_configs" is a special case. This variable can be set to a list of
# configs that will be removed from the defaults, including those provided by
# $dir_pw_build/defaults.gni.
#
pw_target_defaults = {
}

# List of toolchains to use in pw_toolchain_size_report templates.
#
# Each entry is a scope containing the following variables:
#
#   name: Human-readable toolchain name.
#   target: GN target that defines the toolchain.
#   linker_script: Optional path to a linker script file to build for the
#     toolchain's target.
#   bloaty_config: Optional Bloaty confirugation file defining the memory
#     layout of the binaries as specified in the linker script.
#
# If this list is empty, pw_toolchain_size_report targets become no-ops.
pw_size_report_toolchains = []

# Implementation of a main function for "pw_test" unit test binaries.
pw_unit_test_main = "$dir_pw_unit_test:simple_printing_main"

# Path to a test runner to automatically run unit tests after they are built.
#
# If set, the pw_test() template creates an action that invokes the test runner
# on each test executable. If unset, the pw_test() template only creates a test
# executable target.
#
# This should only be enabled for targets which support parallelized running of
# unit tests, such as desktops with multiple cores.
pw_automatic_test_runner = ""

################################# PROTOBUF #####################################

# Generators with which to compile protobuf code. These are used by the
# pw_proto_library template to determine which build targets to create.
#
# Supported generators:
#   "pwpb", "nanopb", "go"
pw_protobuf_generators = [
  "pwpb",
  "go",
]

# If compiling for nanopb, this variable is set to the path to the nanopb
# installation.
dir_third_party_nanopb = ""

################################# BACKENDS #####################################

# This section of the file defines empty variables for each of the Pigweed
# facades that expect a backend. This allows minimal breakages when adding new
# facades. Instead of GN always halting due to encountering an undefined
# variable, GN will only emit an error if something in the build depends on the
# empty (but defined) variable.
#
# All of these should default to empty strings. For target-specific defaults,
# modify these variables in a target configuration file.

# Backend for the pw_assert module.
dir_pw_assert_backend = ""

# Backend for the pw_boot module.
dir_pw_boot_backend = ""

# Backend for the pw_cpu_exception module.
dir_pw_cpu_exception_backend = ""

# Backend for the pw_log module.
dir_pw_log_backend = ""

# Backend for the pw_trace module.
dir_pw_trace_backend = ""

# Backend for the pw_sys_io module.
dir_pw_sys_io_backend = ""

# Backends for the pw_tokenizer:global_handler and
# pw_tokenizer:global_handler_with_payload facades.
dir_pw_tokenizer_global_handler_backend = ""
dir_pw_tokenizer_global_handler_with_payload_backend = ""

############################## MODULE CONFIGS ##################################

# Module configuration options for pw_boot_armv7m.
pw_boot_armv7m_config = {
  # C Preprocessor defines used for linker script configuration.
  defines = []
}
