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

# Experimental modules.
declare_args() {
  dir_app_common = get_path_info("applications/app_common", "abspath")
  dir_pw_async_bench = get_path_info("pw_async_bench", "abspath")
  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_stm32f769i_disc0 =
      get_path_info("pw_board_led_stm32f769i_disc0", "abspath")
  dir_pw_board_led_stm32cube =
      get_path_info("pw_board_led_stm32cube", "abspath")
  dir_pwexperimental_color = get_path_info("pw_graphics/pw_color", "abspath")
  dir_pwexperimental_math = get_path_info("pw_graphics/pw_math", "abspath")
  dir_pw_digital_io_arduino = get_path_info("pw_digital_io_arduino", "abspath")
  dir_pw_digital_io_stm32cube =
      get_path_info("pw_digital_io_stm32cube", "abspath")
  dir_pwexperimental_display =
      get_path_info("pw_graphics/pw_display", "abspath")
  dir_pwexperimental_display_driver =
      get_path_info("pw_display_driver", "abspath")
  dir_pwexperimental_display_driver_ili9341 =
      get_path_info("pw_display_driver_ili9341", "abspath")
  dir_pwexperimental_display_driver_imgui =
      get_path_info("pw_display_driver_imgui", "abspath")
  dir_pwexperimental_display_driver_mipi_dsi =
      get_path_info("pw_display_driver_mipi", "abspath")
  dir_pwexperimental_display_driver_null =
      get_path_info("pw_display_driver_null", "abspath")
  dir_pwexperimental_display_driver_st7735 =
      get_path_info("pw_display_driver_st7735", "abspath")
  dir_pwexperimental_display_driver_st7789 =
      get_path_info("pw_display_driver_st7789", "abspath")
  dir_pwexperimental_display_imgui =
      get_path_info("pw_graphics/pw_display_imgui", "abspath")
  dir_pwexperimental_draw = get_path_info("pw_graphics/pw_draw", "abspath")
  dir_pwexperimental_framebuffer =
      get_path_info("pw_graphics/pw_framebuffer", "abspath")
  dir_pwexperimental_framebuffer_pool =
      get_path_info("pw_graphics/pw_framebuffer_pool", "abspath")
  dir_pwexperimental_framebuffer_pool_mcuxpresso =
      get_path_info("pw_graphics/pw_framebuffer_pool_mcuxpresso", "abspath")
  dir_pwexperimental_mipi_dsi = get_path_info("pw_mipi_dsi", "abspath")
  dir_pwexperimental_mipi_dsi_mcuxpresso =
      get_path_info("pw_mipi_dsi_mcuxpresso", "abspath")
  dir_pw_spi_arduino = get_path_info("pw_spi_arduino", "abspath")
  dir_pw_spi_stm32cube = get_path_info("pw_spi_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_rp2040 = get_path_info("pw_spin_delay_rp2040", "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_spin_delay_stm32f769i_disc0 =
      get_path_info("pw_spin_delay_stm32f769i_disc0", "abspath")
  dir_pw_sys_io_baremetal_stm32f769 =
      get_path_info("pw_sys_io_baremetal_stm32f769", "abspath")
  dir_pw_toolchain_extra = get_path_info("pw_toolchain_extra", "abspath")
  dir_pwexperimental_pixel_pusher = get_path_info("pw_pixel_pusher", "abspath")
  dir_pwexperimental_pixel_pusher_rp2040_pio =
      get_path_info("pw_pixel_pusher_rp2040_pio", "abspath")
  pw_dir_third_party_32blit = get_path_info("third_party/32blit", "abspath")
}
