# 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_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_color", "abspath")
  dir_pw_coordinates = get_path_info("//pw_coordinates", "abspath")
  dir_pw_display = get_path_info("//pw_display", "abspath")
  dir_pw_display_host_imgui =
      get_path_info("//pw_display_host_imgui", "abspath")
  dir_pw_display_null = get_path_info("//pw_display_null", "abspath")
  dir_pw_display_pico_ili9341 =
      get_path_info("//pw_display_pico_ili9341", "abspath")
  dir_pw_display_stm32f429i_disc1_stm32cube_ili9341 =
      get_path_info("//pw_display_stm32f429i_disc1_stm32cube_ili9341",
                    "abspath")
  dir_pw_display_teensy_ili9341 =
      get_path_info("//pw_display_teensy_ili9341", "abspath")
  dir_pw_draw = get_path_info("//pw_draw", "abspath")
  dir_pw_framebuffer = get_path_info("//pw_framebuffer", "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_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_touchscreen", "abspath")
  dir_pw_touchscreen_null = get_path_info("//pw_touchscreen_null", "abspath")
  dir_pw_touchscreen_teensy_stmpe610 =
      get_path_info("//pw_touchscreen_teensy_stmpe610", "abspath")
  dir_pw_touchscreen_teensy_xpt2046 =
      get_path_info("//pw_touchscreen_teensy_xpt2046", "abspath")
}
