# Copyright 2020 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.

declare_args() {
  # This file defines a directory variable for each of Pigweed's modules. This
  # allows modules to be moved or swapped out without breaking existing builds.
  # All module variables are prefixed with dir_.
  dir_docker = get_path_info("docker", "abspath")
  dir_pw_allocator = get_path_info("pw_allocator", "abspath")
  dir_pw_arduino_build = get_path_info("pw_arduino_build", "abspath")
  dir_pw_assert = get_path_info("pw_assert", "abspath")
  dir_pw_assert_basic = get_path_info("pw_assert_basic", "abspath")
  dir_pw_assert_log = get_path_info("pw_assert_log", "abspath")
  dir_pw_base64 = get_path_info("pw_base64", "abspath")
  dir_pw_bloat = get_path_info("pw_bloat", "abspath")
  dir_pw_blob_store = get_path_info("pw_blob_store", "abspath")
  dir_pw_boot_armv7m = get_path_info("pw_boot_armv7m", "abspath")
  dir_pw_build = get_path_info("pw_build", "abspath")
  dir_pw_bytes = get_path_info("pw_bytes", "abspath")
  dir_pw_checksum = get_path_info("pw_checksum", "abspath")
  dir_pw_chrono = get_path_info("pw_chrono", "abspath")
  dir_pw_chrono_freertos = get_path_info("pw_chrono_freertos", "abspath")
  dir_pw_chrono_stl = get_path_info("pw_chrono_stl", "abspath")
  dir_pw_chrono_threadx = get_path_info("pw_chrono_threadx", "abspath")
  dir_pw_cli = get_path_info("pw_cli", "abspath")
  dir_pw_containers = get_path_info("pw_containers", "abspath")
  dir_pw_cpu_exception = get_path_info("pw_cpu_exception", "abspath")
  dir_pw_cpu_exception_cortex_m =
      get_path_info("pw_cpu_exception_cortex_m", "abspath")
  dir_pw_docgen = get_path_info("pw_docgen", "abspath")
  dir_pw_doctor = get_path_info("pw_doctor", "abspath")
  dir_pw_hex_dump = get_path_info("pw_hex_dump", "abspath")
  dir_pw_env_setup = get_path_info("pw_env_setup", "abspath")
  dir_pw_hdlc = get_path_info("pw_hdlc", "abspath")
  dir_pw_i2c = get_path_info("pw_i2c", "abspath")
  dir_pw_interrupt = get_path_info("pw_interrupt", "abspath")
  dir_pw_interrupt_cortex_m = get_path_info("pw_interrupt_cortex_m", "abspath")
  dir_pw_kvs = get_path_info("pw_kvs", "abspath")
  dir_pw_log = get_path_info("pw_log", "abspath")
  dir_pw_log_basic = get_path_info("pw_log_basic", "abspath")
  dir_pw_log_multisink = get_path_info("pw_log_multisink", "abspath")
  dir_pw_log_null = get_path_info("pw_log_null", "abspath")
  dir_pw_log_rpc = get_path_info("pw_log_rpc", "abspath")
  dir_pw_log_sink = get_path_info("pw_log_sink", "abspath")
  dir_pw_log_tokenized = get_path_info("pw_log_tokenized", "abspath")
  dir_pw_malloc = get_path_info("pw_malloc", "abspath")
  dir_pw_malloc_freelist = get_path_info("pw_malloc_freelist", "abspath")
  dir_pw_metric = get_path_info("pw_metric", "abspath")
  dir_pw_minimal_cpp_stdlib = get_path_info("pw_minimal_cpp_stdlib", "abspath")
  dir_pw_module = get_path_info("pw_module", "abspath")
  dir_pw_fuzzer = get_path_info("pw_fuzzer", "abspath")
  dir_pw_package = get_path_info("pw_package", "abspath")
  dir_pw_polyfill = get_path_info("pw_polyfill", "abspath")
  dir_pw_preprocessor = get_path_info("pw_preprocessor", "abspath")
  dir_pw_presubmit = get_path_info("pw_presubmit", "abspath")
  dir_pw_protobuf = get_path_info("pw_protobuf", "abspath")
  dir_pw_protobuf_compiler = get_path_info("pw_protobuf_compiler", "abspath")
  dir_pw_random = get_path_info("pw_random", "abspath")
  dir_pw_result = get_path_info("pw_result", "abspath")
  dir_pw_ring_buffer = get_path_info("pw_ring_buffer", "abspath")
  dir_pw_router = get_path_info("pw_router", "abspath")
  dir_pw_rpc = get_path_info("pw_rpc", "abspath")
  dir_pw_span = get_path_info("pw_span", "abspath")
  dir_pw_status = get_path_info("pw_status", "abspath")
  dir_pw_stream = get_path_info("pw_stream", "abspath")
  dir_pw_string = get_path_info("pw_string", "abspath")
  dir_pw_sync = get_path_info("pw_sync", "abspath")
  dir_pw_sync_freertos = get_path_info("pw_sync_freertos", "abspath")
  dir_pw_sync_baremetal = get_path_info("pw_sync_baremetal", "abspath")
  dir_pw_sync_stl = get_path_info("pw_sync_stl", "abspath")
  dir_pw_sync_threadx = get_path_info("pw_sync_threadx", "abspath")
  dir_pw_sys_io = get_path_info("pw_sys_io", "abspath")
  dir_pw_sys_io_baremetal_lm3s6965evb =
      get_path_info("pw_sys_io_baremetal_lm3s6965evb", "abspath")
  dir_pw_sys_io_baremetal_stm32f429 =
      get_path_info("pw_sys_io_baremetal_stm32f429", "abspath")
  dir_pw_sys_io_arduino = get_path_info("pw_sys_io_arduino", "abspath")
  dir_pw_sys_io_stdio = get_path_info("pw_sys_io_stdio", "abspath")
  dir_pw_target_runner = get_path_info("pw_target_runner", "abspath")
  dir_pw_thread = get_path_info("pw_thread", "abspath")
  dir_pw_thread_stl = get_path_info("pw_thread_stl", "abspath")
  dir_pw_thread_freertos = get_path_info("pw_thread_freertos", "abspath")
  dir_pw_thread_threadx = get_path_info("pw_thread_threadx", "abspath")
  dir_pw_third_party = get_path_info("third_party", "abspath")
  dir_pw_tokenizer = get_path_info("pw_tokenizer", "abspath")
  dir_pw_toolchain = get_path_info("pw_toolchain", "abspath")
  dir_pw_trace = get_path_info("pw_trace", "abspath")
  dir_pw_trace_tokenized = get_path_info("pw_trace_tokenized", "abspath")
  dir_pw_unit_test = get_path_info("pw_unit_test", "abspath")
  dir_pw_varint = get_path_info("pw_varint", "abspath")
  dir_pw_watch = get_path_info("pw_watch", "abspath")
  dir_pw_web_ui = get_path_info("pw_web_ui", "abspath")
}
