# 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_geometry =
      get_path_info("pw_graphics/pw_geometry", "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")
}
