# Copyright 2018 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//common-mk/generate-dbus-proxies.gni")
import("//common-mk/pkg_config.gni")

group("all") {
  deps = [
    ":backlight_tool",
    ":battery_saver_tool",
    ":check_powerd_config",
    ":cpufreq_config",
    ":dump_power_status",
    ":fake_adaptive_charging_ml_service",
    ":inject_powerd_input_event",
    ":install_dbus_conf",
    ":install_init_scripts",
    ":install_minijail_power_conf",
    ":install_minijail_temp_logger_conf",
    ":install_production_scripts",
    ":install_testing_scripts",
    ":install_tmpfiles_conf",
    ":libpolicy",
    ":libpolicy_stub",
    ":libpowerd",
    ":libsystem",
    ":libsystem_stub",
    ":libutil",
    ":memory_suspend_test",
    ":power_supply_info",
    ":powerd",
    ":powerd_dbus_reboot",
    ":powerd_dbus_shutdown",
    ":powerd_dbus_suspend",
    ":powerd_setuid_helper",
    ":send_debug_power_status",
    ":set_cellular_transmit_power",
    ":set_power_policy",
    ":set_wifi_transmit_power",
    ":suspend_delay_sample",
  ]
  if (use.cellular) {
    deps += [ ":generate_modemmanager_proxies" ]
  }
  if (use.test) {
    deps += [
      ":libutil_test",
      ":power_manager_daemon_test",
      ":power_manager_policy_test",
      ":power_manager_system_test",
      ":power_manager_tools_battery_saver_test",
      ":power_manager_util_test",
    ]
  }
  if (use.amd64) {
    deps += [ ":dump_intel_rapl_consumption" ]
    deps += [ ":intel_prepost_suspend" ]
  }
  if (use.fuzzer) {
    deps += [
      ":ambient_light_handler_fuzzer",
      ":internal_backlight_controller_fuzzer",
      ":powerd_acpi_wakeup_helper_fuzzer",
      ":powerd_internal_backlight_fuzzer",
      ":powerd_suspend_configurator_fuzzer",
      ":thermal_device_fuzzer",
    ]
  }
}

if (use.cellular) {
  generate_dbus_proxies("generate_modemmanager_proxies") {
    modemmanager_in_dir = "${sysroot}/usr/share/dbus-1/interfaces/"
    proxy_output_file = "include/modemmanager/dbus-proxies.h"
    sources = [
      "${modemmanager_in_dir}/org.freedesktop.ModemManager1.Modem.Sar.xml",
      "${modemmanager_in_dir}/org.freedesktop.ModemManager1.Modem.xml",
      "${modemmanager_in_dir}/org.freedesktop.ModemManager1.xml",
      "dbus_bindings/dbus-objectmanager.dbus-xml",
    ]
  }
}

install_config("install_dbus_conf") {
  sources = [ "dbus/org.chromium.PowerManager.conf" ]
  install_path = "dbus_system_d"
}

install_config("install_minijail_power_conf") {
  sources = [ "minijail/powerd.conf" ]
  install_path = "minijail_conf"
}

install_config("install_minijail_temp_logger_conf") {
  sources = [ "minijail/temp_logger.conf" ]
  install_path = "minijail_conf"
}

pkg_config("target_defaults") {
  defines = [
    "USE_CELLULAR=${use.cellular}",
    "USE_IIOSERVICE=${use.iioservice}",
    "USE_IIOSERVICE_PROXIMITY=${use.iioservice_proximity}",
    "USE_KEY_EVICTION=${use.key_eviction}",
  ]

  # NOSORT
  pkg_deps = [
    "iioservice_ipc",
    "libbrillo",
    "libchrome",
    "libcros_config",
    "libfeatures",
    "libshill-client",
    "libshill-dbus-client",
    "libec",
    "libml-client",
    "libmojo",
    "libsar",
    "libudev",
    "mojo_service_manager",
    "re2",

    # system_api depends on protobuf (or protobuf-lite). It must appear
    # before protobuf here or the linker flags won't be in the right
    # order.
    "system_api",
  ]
  if (use.fuzzer) {
    pkg_deps += [ "protobuf" ]
  } else {
    pkg_deps += [ "protobuf-lite" ]
  }
}

pkg_config("libchrome_test_config") {
  pkg_deps = [ "libchrome-test" ]
}

pkg_config("libutil_dependent_config") {
  pkg_deps = [ "libmetrics" ]
}

pkg_config("libpower_manager_client_config") {
  pkg_deps = [ "libpower_manager-client" ]
}

pkg_config("libpower_manager_client_test_config") {
  pkg_deps = [ "libpower_manager-client-test" ]
}

static_library("libutil") {
  sources = [
    "common/activity_logger.cc",
    "common/battery_percentage_converter.cc",
    "common/clock.cc",
    "common/cros_config_prefs_source.cc",
    "common/cros_ec_prefs_source.cc",
    "common/file_prefs_store.cc",
    "common/metrics_constants.cc",
    "common/metrics_sender.cc",
    "common/power_constants.cc",
    "common/prefs.cc",
    "common/tracing.cc",
    "common/util.cc",
  ]
  configs += [ ":target_defaults" ]

  all_dependent_configs = [ ":libutil_dependent_config" ]
}

static_library("libsystem") {
  sources = [
    "powerd/system/acpi_wakeup_helper.cc",
    "powerd/system/ambient_light_sensor.cc",
    "powerd/system/ambient_light_sensor_delegate.cc",
    "powerd/system/ambient_light_sensor_delegate_mojo.cc",
    "powerd/system/ambient_light_sensor_info.cc",
    "powerd/system/ambient_light_sensor_manager_mojo.cc",
    "powerd/system/ambient_light_sensor_watcher_interface.cc",
    "powerd/system/ambient_light_sensor_watcher_mojo.cc",
    "powerd/system/arc_timer_manager.cc",
    "powerd/system/async_file_reader.cc",
    "powerd/system/audio_client.cc",
    "powerd/system/bluez_battery_provider.cc",
    "powerd/system/cros_ec_device_event.cc",
    "powerd/system/cros_ec_helper.cc",
    "powerd/system/dark_resume.cc",
    "powerd/system/dbus_wrapper.cc",
    "powerd/system/display/display_info.cc",
    "powerd/system/display/display_power_setter.cc",
    "powerd/system/display/display_watcher.cc",
    "powerd/system/display/external_display.cc",
    "powerd/system/event_device.cc",
    "powerd/system/external_ambient_light_sensor_factory_mojo.cc",
    "powerd/system/floss_battery_provider.cc",
    "powerd/system/input_watcher.cc",
    "powerd/system/internal_backlight.cc",
    "powerd/system/lockfile_checker.cc",
    "powerd/system/machine_quirks.cc",
    "powerd/system/peripheral_battery_watcher.cc",
    "powerd/system/pluggable_internal_backlight.cc",
    "powerd/system/power_supply.cc",
    "powerd/system/proximity_events_observer.cc",
    "powerd/system/rolling_average.cc",
    "powerd/system/sensor_service_handler.cc",
    "powerd/system/sensor_service_handler_observer.cc",
    "powerd/system/smart_discharge_configurator.cc",
    "powerd/system/suspend_configurator.cc",
    "powerd/system/suspend_freezer.cc",
    "powerd/system/tagged_device.cc",
    "powerd/system/thermal/cooling_device.cc",
    "powerd/system/thermal/device_thermal_state.cc",
    "powerd/system/thermal/thermal_device.cc",
    "powerd/system/thermal/thermal_device_factory.cc",
    "powerd/system/udev.cc",
    "powerd/system/usb_backlight.cc",
    "powerd/system/user_data_auth_client.cc",
    "powerd/system/user_proximity_watcher_mojo.cc",
    "powerd/system/user_proximity_watcher_udev.cc",
    "powerd/system/wake_on_dp_configurator.cc",
    "powerd/system/wakeup_device.cc",
    "powerd/system/wakeup_source_identifier.cc",
    "powerd/system/wakeup_timer.cc",
    "powerd/system/wilco_charge_controller_helper.cc",
  ]
  configs += [ ":target_defaults" ]
  libs = [ "rt" ]
  if (use.cellular) {
    sources += [ "powerd/system/dbus_objectmanager_wrapper.cc" ]
    deps = [ ":generate_modemmanager_proxies" ]
  }
}

pkg_config("libsystem_stub_dependent_config") {
  pkg_deps = [ "dbus-1" ]
}

static_library("libsystem_stub") {
  sources = [
    "powerd/system/acpi_wakeup_helper_stub.cc",
    "powerd/system/ambient_light_sensor_manager_stub.cc",
    "powerd/system/ambient_light_sensor_stub.cc",
    "powerd/system/ambient_light_sensor_watcher_observer_stub.cc",
    "powerd/system/ambient_light_sensor_watcher_stub.cc",
    "powerd/system/audio_client_stub.cc",
    "powerd/system/backlight_stub.cc",
    "powerd/system/charge_controller_helper_stub.cc",
    "powerd/system/cros_ec_helper_stub.cc",
    "powerd/system/dark_resume_stub.cc",
    "powerd/system/dbus_wrapper_stub.cc",
    "powerd/system/display/display_power_setter_stub.cc",
    "powerd/system/display/display_watcher_stub.cc",
    "powerd/system/event_device_stub.cc",
    "powerd/system/external_ambient_light_sensor_factory_stub.cc",
    "powerd/system/input_watcher_stub.cc",
    "powerd/system/lockfile_checker_stub.cc",
    "powerd/system/machine_quirks_stub.cc",
    "powerd/system/mock_power_supply.cc",
    "powerd/system/thermal/thermal_device_stub.cc",
    "powerd/system/udev_stub.cc",
    "powerd/system/user_proximity_watcher_stub.cc",
    "powerd/system/wakeup_source_identifier_stub.cc",
  ]
  configs += [ ":target_defaults" ]
  all_dependent_configs = [ ":libsystem_stub_dependent_config" ]
}

static_library("libpolicy") {
  sources = [
    "powerd/policy/adaptive_charging_controller.cc",
    "powerd/policy/ambient_light_handler.cc",
    "powerd/policy/backlight_controller.cc",
    "powerd/policy/battery_saver_controller.cc",
    "powerd/policy/bluetooth_controller.cc",
    "powerd/policy/cellular_controller.cc",
    "powerd/policy/charge_controller.cc",
    "powerd/policy/dim_advisor.cc",
    "powerd/policy/external_ambient_light_handler.cc",
    "powerd/policy/external_backlight_controller.cc",
    "powerd/policy/input_device_controller.cc",
    "powerd/policy/input_event_handler.cc",
    "powerd/policy/internal_backlight_controller.cc",
    "powerd/policy/keyboard_backlight_controller.cc",
    "powerd/policy/shutdown_from_suspend.cc",
    "powerd/policy/state_controller.cc",
    "powerd/policy/suspend_delay_controller.cc",
    "powerd/policy/suspender.cc",
    "powerd/policy/thermal_event_handler.cc",
    "powerd/policy/user_proximity_handler.cc",
    "powerd/policy/user_proximity_voting.cc",
    "powerd/policy/wifi_controller.cc",
  ]
  configs += [ ":target_defaults" ]
  libs = [ "m" ]
  deps = []
  if (use.cellular) {
    deps += [ ":generate_modemmanager_proxies" ]
  }
}

static_library("libpolicy_stub") {
  sources = [
    "powerd/policy/backlight_controller_observer_stub.cc",
    "powerd/policy/backlight_controller_stub.cc",
  ]
  configs += [ ":target_defaults" ]
}

pkg_config("libpowerd_dependent_config") {
  # NOSORT
  pkg_deps = [
    "libmetrics",
    "libtpm_manager-client",

    # system_api depends on protobuf. It must appear before protobuf here so the
    # linker flags are in the right order.
    "system_api",
    "protobuf",
  ]
}

static_library("libpowerd") {
  sources = [
    "powerd/daemon.cc",
    "powerd/metrics_collector.cc",
  ]
  configs += [ ":target_defaults" ]
  all_dependent_configs = [ ":libpowerd_dependent_config" ]
  deps = [
    ":libpolicy",
    ":libsystem",
    ":libutil",
  ]
}

executable("powerd") {
  sources = [ "powerd/main.cc" ]
  configs += [ ":target_defaults" ]
  deps = [ ":libpowerd" ]
  install_path = "bin"
}

executable("powerd_setuid_helper") {
  sources = [ "powerd/powerd_setuid_helper.cc" ]
  configs += [ ":target_defaults" ]
  install_path = "bin"
}

executable("set_cellular_transmit_power") {
  sources = [ "powerd/set_cellular_transmit_power.cc" ]
  configs += [ ":target_defaults" ]
  install_path = "bin"
}

pkg_config("set_wifi_transmit_power_config") {
  pkg_deps = [ "libnl-genl-3.0" ]
}

executable("set_wifi_transmit_power") {
  sources = [ "powerd/set_wifi_transmit_power.cc" ]
  configs += [
    ":set_wifi_transmit_power_config",
    ":target_defaults",
  ]
  install_path = "bin"
}

# boot-splash, chromeos-boot-alert
executable("backlight_tool") {
  sources = [ "tools/backlight_tool.cc" ]
  configs += [ ":target_defaults" ]
  deps = [
    ":libpolicy",
    ":libsystem",
    ":libsystem_stub",
    ":libutil",
  ]
  install_path = "bin"
}

source_set("libbattery_saver_tool") {
  sources = [
    "tools/battery_saver/battery_saver.cc",
    "tools/battery_saver/battery_saver.h",
    "tools/battery_saver/battery_saver_mode_watcher.cc",
    "tools/battery_saver/battery_saver_mode_watcher.h",
    "tools/battery_saver/proto_util.h",
    "tools/battery_saver/task_util.h",
  ]
  configs += [
    ":target_defaults",
    ":libpower_manager_client_config",
  ]
  pkg_deps = [ "absl" ]
}

executable("battery_saver_tool") {
  output_name = "battery_saver"
  sources = [ "tools/battery_saver/main.cc" ]
  configs += [ ":target_defaults" ]
  deps = [ ":libbattery_saver_tool" ]
  install_path = "bin"
}

executable("check_powerd_config") {
  sources = [ "tools/check_powerd_config.cc" ]
  configs += [ ":target_defaults" ]
  deps = [ ":libutil" ]
  install_path = "bin"
}

executable("cpufreq_config") {
  sources = [ "tools/cpufreq_config.cc" ]
  configs += [ ":target_defaults" ]
  deps = [
    ":libsystem",
    ":libsystem_stub",
    ":libutil",
  ]
  install_path = "bin"
}

executable("fake_adaptive_charging_ml_service") {
  sources = [ "tools/fake_adaptive_charging_ml_service.cc" ]
  configs += [ ":target_defaults" ]
  install_path = "bin"
}

executable("inject_powerd_input_event") {
  sources = [ "tools/inject_powerd_input_event.cc" ]
  configs += [ ":target_defaults" ]
  install_path = "bin"
}

executable("memory_suspend_test") {
  sources = [ "tools/memory_suspend_test.cc" ]
  configs += [ ":target_defaults" ]
  install_path = "bin"
}

executable("powerd_dbus_reboot") {
  sources = [ "tools/powerd_dbus_reboot.cc" ]
  configs += [ ":target_defaults" ]
  deps = [ ":libutil" ]
  install_path = "bin"
}

executable("powerd_dbus_shutdown") {
  sources = [ "tools/powerd_dbus_shutdown.cc" ]
  configs += [ ":target_defaults" ]
  deps = [ ":libutil" ]
  install_path = "bin"
}

executable("powerd_dbus_suspend") {
  sources = [ "tools/powerd_dbus_suspend.cc" ]
  configs += [ ":target_defaults" ]
  deps = [ ":libutil" ]
  install_path = "bin"
}

# feedback
executable("power_supply_info") {
  sources = [ "tools/power_supply_info.cc" ]
  configs += [ ":target_defaults" ]
  deps = [
    ":libsystem",
    ":libsystem_stub",
    ":libutil",
  ]
  install_path = "bin"
}

# crosh's battery_test command
executable("dump_power_status") {
  sources = [ "tools/dump_power_status.cc" ]
  configs += [ ":target_defaults" ]
  deps = [
    ":libsystem",
    ":libsystem_stub",
    ":libutil",
  ]
  install_path = "bin"
}

executable("send_debug_power_status") {
  sources = [ "tools/send_debug_power_status.cc" ]
  configs += [ ":target_defaults" ]
  install_path = "bin"
}

executable("set_power_policy") {
  sources = [ "tools/set_power_policy.cc" ]
  configs += [ ":target_defaults" ]
  install_path = "bin"
}

executable("suspend_delay_sample") {
  sources = [ "tools/suspend_delay_sample.cc" ]
  configs += [ ":target_defaults" ]
  install_path = "bin"
}

# Scripts for production
install_config("install_production_scripts") {
  sources = [
    "powerd/powerd_suspend",
    "tools/print_sysfs_power_supply_data",  # feedback
    "tools/send_metrics_on_resume",
    "tools/thermal_zone_config",
  ]
  install_path = "bin"
  options = "-m0755"
}

# Scripts for testing and debugging
install_config("install_testing_scripts") {
  sources = [
    "tools/activate_short_dark_resume",
    "tools/create_fake_charge_history",
    "tools/debug_sleep_quickly",
    "tools/set_short_powerd_timeouts",
    "tools/suspend_stress_test",
  ]
  install_path = "bin"
  options = "-m0755"
}

# Scripts called from init scripts
install_config("install_init_scripts") {
  sources = [
    "init/shared/powerd-pre-start.sh",
    "tools/temp_logger.sh",
  ]
  install_path = "/usr/share/cros/init"
  options = "-m0755"
}

install_config("install_tmpfiles_conf") {
  sources = [ "tmpfiles.d/powerd.conf" ]
  install_path = "tmpfilesd"
}

if (use.fuzzer || use.test) {
  static_library("libutil_test") {
    sources = [
      "common/action_recorder.cc",
      "common/battery_percentage_converter.cc",
      "common/fake_prefs.cc",
      "common/metrics_sender_stub.cc",
      "common/test_main_loop_runner.cc",
    ]
    configs += [ ":target_defaults" ]
    libs = [ "fake_platform_features" ]
  }
}

if (use.test) {
  executable("power_manager_util_test") {
    sources = [
      "common/activity_logger_test.cc",
      "common/battery_percentage_converter_test.cc",
      "common/prefs_test.cc",
      "common/util_test.cc",
    ]
    configs += [
      "//common-mk:test",
      ":target_defaults",
      ":libchrome_test_config",
    ]
    libs = [ "fake_platform_features" ]
    deps = [
      ":libutil",
      ":libutil_test",
      "//common-mk/testrunner",
    ]
    run_test = true
  }

  pkg_config("power_manager_system_test_config") {
    # For base::MockTimer.
    pkg_deps = [ "libchrome-test" ]
  }

  executable("power_manager_system_test") {
    sources = [
      "powerd/system/acpi_wakeup_helper_test.cc",
      "powerd/system/ambient_light_sensor_delegate_mojo_test.cc",
      "powerd/system/ambient_light_sensor_delegate_test.cc",
      "powerd/system/ambient_light_sensor_manager_mojo_test.cc",
      "powerd/system/ambient_light_sensor_test.cc",
      "powerd/system/ambient_light_sensor_watcher_mojo_test.cc",
      "powerd/system/arc_timer_manager_test.cc",
      "powerd/system/async_file_reader_test.cc",
      "powerd/system/audio_client_test.cc",
      "powerd/system/bluez_battery_provider_test.cc",
      "powerd/system/display/display_power_setter_test.cc",
      "powerd/system/display/display_watcher_test.cc",
      "powerd/system/display/external_display_test.cc",
      "powerd/system/fake_light.cc",
      "powerd/system/fake_proximity.cc",
      "powerd/system/fake_sensor_device.cc",
      "powerd/system/fake_sensor_service.cc",
      "powerd/system/floss_battery_provider_test.cc",
      "powerd/system/input_watcher_test.cc",
      "powerd/system/internal_backlight_test.cc",
      "powerd/system/lockfile_checker_test.cc",
      "powerd/system/machine_quirks_test.cc",
      "powerd/system/peripheral_battery_watcher_test.cc",
      "powerd/system/pluggable_internal_backlight_test.cc",
      "powerd/system/power_supply_test.cc",
      "powerd/system/proximity_events_observer_test.cc",
      "powerd/system/rolling_average_test.cc",
      "powerd/system/sensor_service_handler_test.cc",
      "powerd/system/suspend_configurator_test.cc",
      "powerd/system/suspend_freezer_test.cc",
      "powerd/system/tagged_device_test.cc",
      "powerd/system/thermal/cooling_device_test.cc",
      "powerd/system/thermal/thermal_device_factory_test.cc",
      "powerd/system/user_proximity_watcher_mojo_test.cc",
      "powerd/system/user_proximity_watcher_udev_test.cc",
      "powerd/system/wakeup_device_test.cc",
      "powerd/system/wakeup_source_identifier_test.cc",
      "powerd/testing/test_environment.cc",
    ]
    configs += [
      "//common-mk:test",
      ":power_manager_system_test_config",
      ":target_defaults",
      ":libchrome_test_config",
    ]
    deps = [
      ":libsystem",
      ":libsystem_stub",
      ":libutil",
      ":libutil_test",
      "//common-mk/testrunner",
    ]
    pkg_deps = [ "libsar_test_support" ]
    run_test = true
  }

  executable("power_manager_policy_test") {
    sources = [
      "powerd/policy/adaptive_charging_controller_test.cc",
      "powerd/policy/ambient_light_handler_test.cc",
      "powerd/policy/backlight_controller_test_util.cc",
      "powerd/policy/battery_saver_controller_test.cc",
      "powerd/policy/bluetooth_controller_test.cc",
      "powerd/policy/cellular_controller_test.cc",
      "powerd/policy/charge_controller_test.cc",
      "powerd/policy/dim_advisor_test.cc",
      "powerd/policy/external_backlight_controller_test.cc",
      "powerd/policy/input_device_controller_test.cc",
      "powerd/policy/input_event_handler_test.cc",
      "powerd/policy/internal_backlight_controller_test.cc",
      "powerd/policy/keyboard_backlight_controller_test.cc",
      "powerd/policy/shutdown_from_suspend_test.cc",
      "powerd/policy/state_controller_test.cc",
      "powerd/policy/suspend_delay_controller_test.cc",
      "powerd/policy/suspender_test.cc",
      "powerd/policy/thermal_event_handler_test.cc",
      "powerd/policy/user_proximity_handler_test.cc",
      "powerd/policy/user_proximity_voting_test.cc",
      "powerd/policy/wifi_controller_test.cc",
      "powerd/testing/test_environment.cc",
    ]
    configs += [
      "//common-mk:test",
      ":target_defaults",
      ":libchrome_test_config",
    ]
    deps = [
      ":libpolicy",
      ":libpolicy_stub",
      ":libsystem",
      ":libsystem_stub",
      ":libutil",
      ":libutil_test",
      "//common-mk/testrunner",
    ]
    run_test = true
  }

  executable("power_manager_daemon_test") {
    sources = [
      "powerd/daemon_test.cc",
      "powerd/metrics_collector_test.cc",
      "powerd/testing/test_environment.cc",
    ]
    configs += [
      "//common-mk:test",
      ":target_defaults",
      ":libchrome_test_config",
    ]
    deps = [
      ":libpolicy",
      ":libpolicy_stub",
      ":libpowerd",
      ":libsystem",
      ":libsystem_stub",
      ":libutil",
      ":libutil_test",
      "//common-mk/testrunner",
      "//metrics:metrics_test_support",
    ]
    run_test = true
  }

  executable("power_manager_tools_battery_saver_test") {
    sources = [
      "tools/battery_saver/battery_saver_mode_watcher_test.cc",
      "tools/battery_saver/battery_saver_test.cc",
      "tools/battery_saver/proto_util_test.cc",
    ]
    configs += [
      "//common-mk:test",
      ":libchrome_test_config",
      ":libpower_manager_client_test_config",
      ":target_defaults",
    ]
    deps = [
      ":libbattery_saver_tool",
      "//common-mk/testrunner",
    ]
    run_test = true
  }
}

if (use.amd64) {
  executable("dump_intel_rapl_consumption") {
    sources = [ "tools/dump_intel_rapl_consumption.cc" ]
    configs += [ ":target_defaults" ]
    deps = [ ":libutil" ]
    install_path = "bin"
  }
  executable("intel_prepost_suspend") {
    sources = [ "tools/intel_prepost_suspend.cc" ]
    configs += [ ":target_defaults" ]
    deps = [ ":libutil" ]
    install_path = "bin"
  }
}

if (use.fuzzer) {
  pkg_config("fuzzer_config") {
    pkg_deps = [
      "libbrillo-test",
      "libchrome-test",
    ]
  }
  static_library("libpolicy_test") {
    sources = [ "powerd/policy/ambient_light_pref_fuzz_util.cc" ]
    configs += [ ":target_defaults" ]
  }
  executable("ambient_light_handler_fuzzer") {
    sources = [ "powerd/policy/ambient_light_handler_fuzzer.cc" ]
    configs += [
      "//common-mk/common_fuzzer",
      ":target_defaults",
    ]
    deps = [
      ":libpolicy_test",
      ":libpowerd",
      ":libsystem_stub",
    ]
  }
  executable("internal_backlight_controller_fuzzer") {
    sources = [ "powerd/policy/internal_backlight_controller_fuzzer.cc" ]
    configs += [
      "//common-mk/common_fuzzer",
      ":target_defaults",
    ]
    deps = [
      ":libpolicy_test",
      ":libpowerd",
      ":libsystem_stub",
      ":libutil_test",
    ]
  }
  executable("powerd_acpi_wakeup_helper_fuzzer") {
    sources = [ "powerd/system/acpi_wakeup_helper_fuzzer.cc" ]
    configs += [
      "//common-mk/common_fuzzer",
      "//common-mk:test",
      ":target_defaults",
    ]
    deps = [ ":libpowerd" ]
  }
  executable("powerd_internal_backlight_fuzzer") {
    sources = [ "powerd/system/internal_backlight_fuzzer.cc" ]
    configs += [
      "//common-mk/common_fuzzer",
      ":target_defaults",
    ]
    deps = [ ":libpowerd" ]
  }
  executable("powerd_suspend_configurator_fuzzer") {
    sources = [ "powerd/system/suspend_configurator_fuzzer.cc" ]
    configs += [
      "//common-mk/common_fuzzer",
      "//common-mk:test",
      ":fuzzer_config",
      ":target_defaults",
    ]
    libs = [ "fake_platform_features" ]
    deps = [
      ":libpowerd",
      ":libsystem_stub",
      ":libutil_test",
    ]
  }
  executable("thermal_device_fuzzer") {
    sources = [ "powerd/system/thermal/thermal_device_fuzzer.cc" ]
    configs += [
      "//common-mk/common_fuzzer",
      "//common-mk:test",
      ":fuzzer_config",
      ":target_defaults",
    ]
    deps = [
      ":libpowerd",
      ":libsystem_stub",
      ":libutil_test",
    ]
  }
}
