# Copyright 2022 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() {
  # Location of the Pigweed repository.
  dir_pigweed = "//third_party/pigweed/"
}

# Upstream Pigweed modules.
import("$dir_pigweed/modules.gni")

# Experimental modules.
declare_args() {
  dir_pw_board_led = get_path_info("//pw_board_led", "abspath")
  dir_pw_board_led_arduino = get_path_info("//pw_board_led_arduino", "abspath")
  dir_pw_board_led_host = get_path_info("//pw_board_led_host", "abspath")
  dir_pw_board_led_mimxrt595_evk =
      get_path_info("//pw_board_led_mimxrt595_evk", "abspath")
  dir_pw_board_led_pico = get_path_info("//pw_board_led_pico", "abspath")
  dir_pw_board_led_stm32f429i_disc1 =
      get_path_info("//pw_board_led_stm32f429i_disc1", "abspath")
  dir_pw_board_led_stm32cube =
      get_path_info("//pw_board_led_stm32cube", "abspath")
  dir_pw_color = get_path_info("//pw_graphics/pw_color", "abspath")
  dir_pw_coordinates = get_path_info("//pw_graphics/pw_coordinates", "abspath")
  dir_pw_digital_io_pico = get_path_info("//pw_digital_io_pico", "abspath")
  dir_pw_digital_io_stm32cube =
      get_path_info("//pw_digital_io_stm32cube", "abspath")
  dir_pw_display = get_path_info("//pw_graphics/pw_display", "abspath")
  dir_pw_display_driver = get_path_info("//pw_display_driver", "abspath")
  dir_pw_display_driver_ili9341 =
      get_path_info("//pw_display_driver_ili9341", "abspath")
  dir_pw_display_host_imgui =
      get_path_info("//pw_graphics/pw_display_host_imgui", "abspath")
  dir_pw_display_null =
      get_path_info("//pw_graphics/pw_display_null", "abspath")
  dir_pw_display_pico_ili9341 =
      get_path_info("//pw_graphics/pw_display_pico_ili9341", "abspath")
  dir_pw_display_pico_st7789_spi =
      get_path_info("//pw_graphics/pw_display_pico_st7789_spi", "abspath")
  dir_pw_display_stm32f429i_disc1_stm32cube_ili9341 =
      get_path_info(
          "//pw_graphics/pw_display_stm32f429i_disc1_stm32cube_ili9341",
          "abspath")
  dir_pw_display_teensy_ili9341 =
      get_path_info("//pw_graphics/pw_display_teensy_ili9341", "abspath")
  dir_pw_draw = get_path_info("//pw_graphics/pw_draw", "abspath")
  dir_pw_framebuffer = get_path_info("//pw_graphics/pw_framebuffer", "abspath")
  dir_pw_spi_pico = get_path_info("//pw_spi_pico", "abspath")
  dir_pw_spi_stm32f429i_disc1_stm32cube =
      get_path_info("//pw_spi_stm32f429i_disc1_stm32cube", "abspath")
  dir_pw_spin_delay = get_path_info("//pw_spin_delay", "abspath")
  dir_pw_spin_delay_arduino =
      get_path_info("//pw_spin_delay_arduino", "abspath")
  dir_pw_spin_delay_host = get_path_info("//pw_spin_delay_host", "abspath")
  dir_pw_spin_delay_mcuxpresso =
      get_path_info("//pw_spin_delay_mcuxpresso", "abspath")
  dir_pw_spin_delay_pico = get_path_info("//pw_spin_delay_pico", "abspath")
  dir_pw_spin_delay_stm32f429i_disc1 =
      get_path_info("//pw_spin_delay_stm32f429i_disc1", "abspath")
  dir_pw_spin_delay_stm32cube =
      get_path_info("//pw_spin_delay_stm32cube", "abspath")
  dir_pw_touchscreen = get_path_info("//pw_graphics/pw_touchscreen", "abspath")
  dir_pw_touchscreen_null =
      get_path_info("//pw_graphics/pw_touchscreen_null", "abspath")
  dir_pw_touchscreen_teensy_stmpe610 =
      get_path_info("//pw_graphics/pw_touchscreen_teensy_stmpe610", "abspath")
  dir_pw_touchscreen_teensy_xpt2046 =
      get_path_info("//pw_graphics/pw_touchscreen_teensy_xpt2046", "abspath")
}
