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

import("//common-mk/deps.gni")
import("//common-mk/generate-dbus-adaptors.gni")
import("//common-mk/generate-dbus-proxies.gni")
import("//common-mk/pkg_config.gni")
import("//common-mk/proto_library.gni")
import("//common-mk/protoctxt.gni")

group("all") {
  deps = [
    ":libshill",
    ":mobile_operator_db",
    ":mobile_operator_db-db",
    ":mobile_operator_db-protos",
    ":openvpn-script",
    ":shill",
    ":shill-chromeos-dbus-adaptors",
  ]
  if (use.cellular) {
    deps += [
      ":cellular_mobile_operator_info_tester",
      ":set-apn-helper",
    ]
  }
  if (use.cellular || use.vpn) {
    deps += [ ":shill-pppd-plugin" ]
  }
  if (use.fuzzer) {
    deps += [
      ":cellular_pco_fuzzer",
      ":dhcpv4_static_routes_fuzzer",
      ":shill_http_url_fuzzer",
      ":shill_profile_fuzzer",
      ":shill_service_fuzzer",
      ":shill_technology_fuzzer",
      ":verizon_subscription_state_fuzzer",
      ":wifi_ies_fuzzer",
      ":wifi_service_fuzzer",
    ]
    if (use.vpn) {
      deps += [
        ":openvpn_management_server_fuzzer",
        ":vpn_ipsec_connection_fuzzer",
      ]
    }
  }
  if (use.test) {
    deps += [ ":shill_unittest" ]
  }
}

pkg_config("target_defaults") {
  cflags_cc = [
    "-fno-strict-aliasing",
    "-Woverloaded-virtual",
    "-Wno-missing-field-initializers",  # for LAZY_INSTANCE_INITIALIZER
  ]
  cflags = [
    "-Wextra",
    "-Werror",
    "-Wno-unused-parameter",  # for pppd_plugin.c, base/tuple.h

    # TODO(crbug.com/1047566): Remove the warning when libchrome fixes the issue.
    "-Wno-deprecated-copy",
  ]
  defines = [
    "PKCS11_LIB=\"${libdir}/libchaps.so\"",
    "RUNDIR=\"/run/shill\"",
    "SHIMDIR=\"${libdir}/shill/shims\"",
  ]
  if (!use.cellular) {
    defines += [ "DISABLE_CELLULAR" ]
  }

  if (use.test || use.fuzzer) {
    # For the "mockable" keyword.
    defines += [ "TEST_BUILD" ]
  }

  if (!use.vpn) {
    defines += [ "DISABLE_VPN" ]
  }

  if (!use.wake_on_wifi) {
    defines += [ "DISABLE_WAKE_ON_WIFI" ]
  }

  if (!use.wired_8021x) {
    defines += [ "DISABLE_WIRED_8021X" ]
  }

  if (!use.wpa3_sae) {
    defines += [ "DISABLE_WPA3_SAE" ]
  }

  pkg_deps = [
    "dbus-1",
    "libbrillo",
    "libchrome",
    "libpatchpanel-client",
    "libshill-net",
    "libtirpc",
    "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",
    "uuid",
  ]
  if (use.fuzzer) {
    pkg_deps += [ "protobuf" ]
  } else {
    pkg_deps += [ "protobuf-lite" ]
  }
}

proto_library("mobile_operator_db-protos") {
  proto_in_dir = "mobile_operator_db"
  proto_out_dir = "include/shill/mobile_operator_db"
  sources = [ "${proto_in_dir}/mobile_operator_db.proto" ]
}

protoc_text_to_bin("mobile_operator_db-db") {
  protoc_proto_def = "mobile_operator_db.proto"
  protoc_message_name = "shill.mobile_operator_db.MobileOperatorDB"
  protoc_text_dir = "mobile_operator_db"
  protoc_proto_dir = "mobile_operator_db"
  protoc_bin_dir = "${root_out_dir}"
  sources = [ "${protoc_text_dir}/serviceproviders.prototxt" ]
}

protoc_text_to_bin("mobile_operator_db-test-db") {
  protoc_proto_def = "mobile_operator_db.proto"
  protoc_message_name = "shill.mobile_operator_db.MobileOperatorDB"
  protoc_text_dir = "mobile_operator_db/test_protos"
  protoc_proto_dir = "mobile_operator_db"
  protoc_bin_dir = "${root_out_dir}"
  sources = [
    "${protoc_text_dir}/data_test.prototxt",
    "${protoc_text_dir}/init_test_empty_db_init.prototxt",
    "${protoc_text_dir}/init_test_multiple_db_init_1.prototxt",
    "${protoc_text_dir}/init_test_multiple_db_init_2.prototxt",
    "${protoc_text_dir}/init_test_override_db_init_1.prototxt",
    "${protoc_text_dir}/init_test_override_db_init_2.prototxt",
    "${protoc_text_dir}/init_test_successful_init.prototxt",
    "${protoc_text_dir}/main_test.prototxt",
  ]
}

static_library("mobile_operator_db") {
  configs += [ ":target_defaults" ]
  deps = [
    ":mobile_operator_db-db",
    ":mobile_operator_db-protos",
  ]
}

generate_dbus_adaptors("shill-chromeos-dbus-adaptors") {
  dbus_adaptors_out_dir = "include/dbus_bindings"
  sources = [
    "dbus_bindings/org.chromium.flimflam.Device.dbus-xml",
    "dbus_bindings/org.chromium.flimflam.IPConfig.dbus-xml",
    "dbus_bindings/org.chromium.flimflam.Manager.dbus-xml",
    "dbus_bindings/org.chromium.flimflam.Profile.dbus-xml",
    "dbus_bindings/org.chromium.flimflam.Service.dbus-xml",
    "dbus_bindings/org.chromium.flimflam.Task.dbus-xml",
    "dbus_bindings/org.chromium.flimflam.ThirdPartyVpn.dbus-xml",
  ]
}

pkg_config("libshill_config") {
  pkg_deps = [
    "libcares",
    "libshill-client",
  ]
}

if (use.cellular) {
  pkg_config("libshill_cellular_config") {
    pkg_deps = [ "ModemManager" ]
  }
}

generate_dbus_proxies("generate_cellular_proxies") {
  modemmanager_in_dir = "${sysroot}/usr/share/dbus-1/interfaces/"
  proxy_output_file = "include/cellular/dbus-proxies.h"
  sources = [
    "${modemmanager_in_dir}/org.freedesktop.ModemManager1.Modem.Location.xml",
    "${modemmanager_in_dir}/org.freedesktop.ModemManager1.Modem.Modem3gpp.ProfileManager.xml",
    "${modemmanager_in_dir}/org.freedesktop.ModemManager1.Modem.Modem3gpp.xml",
    "${modemmanager_in_dir}/org.freedesktop.ModemManager1.Modem.ModemCdma.xml",
    "${modemmanager_in_dir}/org.freedesktop.ModemManager1.Modem.Signal.xml",
    "${modemmanager_in_dir}/org.freedesktop.ModemManager1.Modem.Simple.xml",
    "${modemmanager_in_dir}/org.freedesktop.ModemManager1.Modem.xml",
    "${modemmanager_in_dir}/org.freedesktop.ModemManager1.Sim.xml",
    "${modemmanager_in_dir}/org.freedesktop.ModemManager1.xml",
    "dbus_bindings/dbus-objectmanager.dbus-xml",
    "dbus_bindings/dbus-properties.dbus-xml",
  ]
}

generate_dbus_proxies("generate_dhcpcd_proxies") {
  proxy_output_file = "include/dhcpcd/dbus-proxies.h"
  sources = [ "dbus_bindings/dhcpcd.dbus-xml" ]
}

generate_dbus_proxies("generate_upstart_proxies") {
  proxy_output_file = "include/upstart/dbus-proxies.h"
  sources = [
    "dbus_bindings/upstart-job-shill-event.dbus-xml",
    "dbus_bindings/upstart.dbus-xml",
  ]
}

generate_dbus_proxies("generate_supplicant_proxies") {
  proxy_output_file = "include/supplicant/dbus-proxies.h"
  sources = [
    "dbus_bindings/supplicant-bss.dbus-xml",
    "dbus_bindings/supplicant-interface.dbus-xml",
    "dbus_bindings/supplicant-network.dbus-xml",
    "dbus_bindings/supplicant-process.dbus-xml",
  ]
}

static_library("libshill") {
  sources = [
    "certificate_file.cc",
    "connection.cc",
    "connection_diagnostics.cc",
    "daemon_task.cc",
    "dbus/dbus_adaptor.cc",
    "dbus/dbus_control.cc",
    "dbus/dbus_service_watcher.cc",
    "dbus/dbus_service_watcher_factory.cc",
    "dbus/device_dbus_adaptor.cc",
    "dbus/dhcpcd_listener.cc",
    "dbus/dhcpcd_proxy.cc",
    "dbus/ipconfig_dbus_adaptor.cc",
    "dbus/manager_dbus_adaptor.cc",
    "dbus/power_manager_proxy.cc",
    "dbus/profile_dbus_adaptor.cc",
    "dbus/rpc_task_dbus_adaptor.cc",
    "dbus/service_dbus_adaptor.cc",
    "dbus/supplicant_bss_proxy.cc",
    "dbus/supplicant_interface_proxy.cc",
    "dbus/supplicant_network_proxy.cc",
    "dbus/supplicant_process_proxy.cc",
    "dbus/third_party_vpn_dbus_adaptor.cc",
    "dbus/upstart_proxy.cc",
    "default_profile.cc",
    "device.cc",
    "device_claimer.cc",
    "device_id.cc",
    "device_info.cc",
    "dns_client.cc",
    "dns_util.cc",
    "eap_credentials.cc",
    "ephemeral_profile.cc",
    "error.cc",
    "ethernet/ethernet.cc",
    "ethernet/ethernet_provider.cc",
    "ethernet/ethernet_service.cc",
    "ethernet/ethernet_temporary_service.cc",
    "ethernet/virtio_ethernet.cc",
    "event_dispatcher.cc",
    "external_task.cc",
    "file_io.cc",
    "geolocation_info.cc",
    "hook_table.cc",
    "http_request.cc",
    "http_url.cc",
    "icmp.cc",
    "icmp_session.cc",
    "ipconfig.cc",
    "logging.cc",
    "mac_address.cc",
    "manager.cc",
    "metrics.cc",
    "network/dhcp_controller.cc",
    "network/dhcp_provider.cc",
    "network/dhcpv4_config.cc",
    "network/network.cc",
    "portal_detector.cc",
    "power_manager.cc",
    "process_manager.cc",
    "profile.cc",
    "resolver.cc",
    "result_aggregator.cc",
    "routing_policy_entry.cc",
    "routing_table.cc",
    "routing_table_entry.cc",
    "rpc_task.cc",
    "scope_logger.cc",
    "service.cc",
    "shill_ares.cc",
    "shill_config.cc",
    "shill_daemon.cc",
    "shill_test_config.cc",
    "static_ip_parameters.cc",
    "store/crypto.cc",
    "store/key_file_store.cc",
    "store/key_value_store.cc",
    "store/pkcs11_data_store.cc",
    "store/property_store.cc",
    "supplicant/supplicant_eap_state_handler.cc",
    "supplicant/supplicant_manager.cc",
    "supplicant/wpa_supplicant.cc",
    "technology.cc",
    "tethering.cc",
    "tethering_manager.cc",
    "throttler.cc",
    "upstart/upstart.cc",
    "virtual_device.cc",
    "vpn/vpn_driver.cc",
    "vpn/vpn_provider.cc",
    "vpn/vpn_service.cc",
    "wifi/passpoint_credentials.cc",
    "wifi/wake_on_wifi.cc",
    "wifi/wifi.cc",
    "wifi/wifi_cqm.cc",
    "wifi/wifi_endpoint.cc",
    "wifi/wifi_provider.cc",
    "wifi/wifi_security.cc",
    "wifi/wifi_service.cc",
  ]
  configs += [
    ":libshill_config",
    ":target_defaults",
  ]
  libs = [
    "bootstat",
    "chaps",
    "rootdev",
    "rt",
  ]

  all_dependent_pkg_deps = [
    "libcares",
    "libmetrics",
    "libpasswordprovider",
    "libpower_manager-client",
  ]
  deps = [
    ":generate_dhcpcd_proxies",
    ":generate_supplicant_proxies",
    ":generate_upstart_proxies",
    ":mobile_operator_db",
    ":shill-chromeos-dbus-adaptors",
    "//metrics/structured:libstructuredmetrics",
  ]

  if (use.cellular) {
    sources += [
      "cellular/apn_list.cc",
      "cellular/cellular.cc",
      "cellular/cellular_bearer.cc",
      "cellular/cellular_capability.cc",
      "cellular/cellular_capability_3gpp.cc",
      "cellular/cellular_error.cc",
      "cellular/cellular_helpers.cc",
      "cellular/cellular_pco.cc",
      "cellular/cellular_service.cc",
      "cellular/cellular_service_provider.cc",
      "cellular/mobile_operator_info.cc",
      "cellular/mobile_operator_info_impl.cc",
      "cellular/modem.cc",
      "cellular/modem_info.cc",
      "cellular/pending_activation_store.cc",
      "cellular/subscription_state.cc",
      "cellular/verizon_subscription_state.cc",
      "dbus/dbus_objectmanager_proxy.cc",
      "dbus/dbus_properties_proxy.cc",
      "dbus/mm1_modem_location_proxy.cc",
      "dbus/mm1_modem_modem3gpp_profile_manager_proxy.cc",
      "dbus/mm1_modem_modem3gpp_proxy.cc",
      "dbus/mm1_modem_proxy.cc",
      "dbus/mm1_modem_signal_proxy.cc",
      "dbus/mm1_modem_simple_proxy.cc",
      "dbus/mm1_sim_proxy.cc",
      "protobuf_lite_streams.cc",
    ]
    configs += [ ":libshill_cellular_config" ]
    deps += [ ":generate_cellular_proxies" ]
  }

  if (use.cellular || use.vpn) {
    sources += [
      "ppp_daemon.cc",
      "ppp_device.cc",
    ]
  }

  if (use.vpn) {
    sources += [
      "vpn/arc_vpn_driver.cc",
      "vpn/ikev2_driver.cc",
      "vpn/ipsec_connection.cc",
      "vpn/l2tp_connection.cc",
      "vpn/l2tp_ipsec_driver.cc",
      "vpn/openvpn_driver.cc",
      "vpn/openvpn_management_server.cc",
      "vpn/third_party_vpn_driver.cc",
      "vpn/vpn_connection.cc",
      "vpn/vpn_util.cc",
      "vpn/wireguard_driver.cc",
    ]
  }

  if (use.wired_8021x) {
    sources += [
      "ethernet/eap_listener.cc",
      "ethernet/ethernet_eap_provider.cc",
      "ethernet/ethernet_eap_service.cc",
    ]
  }
}

pkg_config("shill_config") {
  pkg_deps = [ "libminijail" ]
}

executable("shill") {
  sources = [ "shill_main.cc" ]
  configs += [
    ":shill_config",
    ":target_defaults",
  ]
  deps = [ ":libshill" ]
}

pkg_config("openvpn-script_config") {
  pkg_deps = [ "libshill-client" ]
}

executable("openvpn-script") {
  sources = [
    "shims/environment.cc",
    "shims/openvpn_script.cc",
    "shims/task_proxy.cc",
  ]
  configs += [
    ":openvpn-script_config",
    ":target_defaults",
  ]
}

if (use.cellular) {
  pkg_config("set-apn-helper_config") {
    pkg_deps = [ "dbus-1" ]
  }

  executable("set-apn-helper") {
    sources = [ "shims/set_apn_helper.c" ]
    configs += [
      ":set-apn-helper_config",
      ":target_defaults",
    ]
  }
}

if (use.cellular) {
  executable("cellular_mobile_operator_info_tester") {
    sources = [ "cellular/cellular_mobile_operator_info_tester.cc" ]
    configs += [ ":target_defaults" ]
    deps = [ ":libshill" ]
  }
}

if (use.cellular || use.vpn) {
  shared_library("shill-pppd-plugin") {
    sources = [
      "shims/c_ppp.cc",
      "shims/environment.cc",
      "shims/ppp.cc",
      "shims/pppd_plugin.c",
      "shims/task_proxy.cc",
    ]
    configs += [
      ":openvpn-script_config",
      ":target_defaults",
    ]
  }
}

if (use.fuzzer) {
  executable("cellular_pco_fuzzer") {
    sources = [ "cellular/cellular_pco_fuzzer.cc" ]
    configs += [
      "//common-mk/common_fuzzer",
      ":fuzzed_data_config",
      ":target_defaults",
    ]
    deps = [ ":libshill" ]
  }
  executable("dhcpv4_static_routes_fuzzer") {
    sources = [ "network/dhcpv4_static_routes_fuzzer.cc" ]
    configs += [
      "//common-mk/common_fuzzer",
      ":target_defaults",
      ":shill_config",
    ]
    deps = [ ":libshill" ]
  }
  executable("openvpn_management_server_fuzzer") {
    sources = [ "vpn/openvpn_management_server_fuzzer.cc" ]
    configs += [
      "//common-mk/common_fuzzer",
      ":target_defaults",
      ":shill_config",
    ]
    deps = [ ":libshill" ]
  }
  executable("shill_http_url_fuzzer") {
    sources = [ "http_url_fuzzer.cc" ]
    configs += [
      "//common-mk/common_fuzzer",
      ":fuzzed_data_config",
      ":target_defaults",
    ]
    deps = [ ":libshill" ]
  }
  executable("shill_profile_fuzzer") {
    sources = [ "profile_fuzzer.cc" ]
    configs += [
      "//common-mk/common_fuzzer",
      ":fuzzed_data_config",
      ":target_defaults",
      ":shill_config",
    ]
    deps = [ ":libshill" ]
  }
  executable("shill_service_fuzzer") {
    sources = [
      "service_fuzzer.cc",
      "store/fake_store.cc",
    ]
    configs += [
      "//common-mk/common_fuzzer",
      ":fuzzed_data_config",
      ":target_defaults",
      ":shill_config",
    ]
    deps = [ ":libshill" ]
  }
  executable("shill_technology_fuzzer") {
    sources = [ "technology_fuzzer.cc" ]
    configs += [
      "//common-mk/common_fuzzer",
      ":target_defaults",
      ":shill_config",
    ]
    deps = [ ":libshill" ]
  }
  executable("verizon_subscription_state_fuzzer") {
    sources = [ "cellular/verizon_subscription_state_fuzzer.cc" ]
    configs += [
      "//common-mk/common_fuzzer",
      ":target_defaults",
    ]
    deps = [ ":libshill" ]
  }
  executable("vpn_ipsec_connection_fuzzer") {
    sources = [ "vpn/ipsec_connection_fuzzer.cc" ]
    configs += [
      "//common-mk/common_fuzzer",
      ":target_defaults",
      ":shill_config",
    ]
    deps = [ ":libshill" ]
  }
  executable("wifi_ies_fuzzer") {
    sources = [ "wifi/wifi_ies_fuzzer.cc" ]
    configs += [
      "//common-mk/common_fuzzer",
      ":target_defaults",
      ":shill_config",
    ]
    deps = [ ":libshill" ]
  }
  executable("wifi_service_fuzzer") {
    sources = [
      "ethernet/mock_ethernet_provider.cc",
      "mock_adaptors.cc",
      "mock_control.cc",
      "mock_event_dispatcher.cc",
      "mock_manager.cc",
      "mock_metrics.cc",
      "supplicant/mock_supplicant_process_proxy.cc",
      "wifi/mock_wifi_provider.cc",
      "wifi/wifi_service_fuzzer.cc",
    ]
    configs += [
      "//common-mk/common_fuzzer",
      "//common-mk:test",
      ":shill_config",
      ":target_defaults",
    ]
    deps = [ ":libshill" ]
  }
  pkg_config("fuzzed_data_config") {
    pkg_deps = [ "libchrome-test" ]
  }
}

if (use.test) {
  pkg_config("shill_unittest_config") {
    pkg_deps = [
      "libchrome-test",
      "libminijail",
    ]
    if (use.cellular) {
      pkg_deps += [ "ModemManager" ]
    }
  }

  executable("shill_unittest") {
    sources = [
      "arp_client_test_helper.cc",
      "certificate_file_test.cc",
      "connection_diagnostics_test.cc",
      "connection_test.cc",
      "daemon_task_test.cc",
      "dbus/dbus_adaptor_test.cc",
      "dbus/manager_dbus_adaptor_test.cc",
      "default_profile_test.cc",
      "device_claimer_test.cc",
      "device_id_test.cc",
      "device_info_test.cc",
      "device_portal_detector_test.cc",
      "device_test.cc",
      "dns_client_test.cc",
      "dns_util_test.cc",
      "eap_credentials_test.cc",
      "error_test.cc",
      "ethernet/ethernet_provider.cc",
      "ethernet/ethernet_provider_test.cc",
      "ethernet/ethernet_service_test.cc",
      "ethernet/ethernet_test.cc",
      "ethernet/mock_ethernet.cc",
      "ethernet/mock_ethernet_provider.cc",
      "ethernet/mock_ethernet_service.cc",
      "external_task_test.cc",
      "hook_table_test.cc",
      "http_request_test.cc",
      "http_url_test.cc",
      "icmp_session_test.cc",
      "icmp_test.cc",
      "ipconfig_test.cc",
      "mac_address_test.cc",
      "manager_test.cc",
      "metrics_test.cc",
      "mock_adaptors.cc",
      "mock_ares.cc",
      "mock_arp_client.cc",
      "mock_certificate_file.cc",
      "mock_connection.cc",
      "mock_control.cc",
      "mock_device.cc",
      "mock_device_info.cc",
      "mock_dns_client.cc",
      "mock_eap_credentials.cc",
      "mock_event_dispatcher.cc",
      "mock_external_task.cc",
      "mock_icmp.cc",
      "mock_icmp_session.cc",
      "mock_ipconfig.cc",
      "mock_log.cc",
      "mock_log_test.cc",
      "mock_manager.cc",
      "mock_metrics.cc",
      "mock_portal_detector.cc",
      "mock_power_manager.cc",
      "mock_power_manager_proxy.cc",
      "mock_process_manager.cc",
      "mock_profile.cc",
      "mock_resolver.cc",
      "mock_routing_table.cc",
      "mock_service.cc",
      "mock_throttler.cc",
      "mock_virtual_device.cc",
      "network/dhcp_controller_test.cc",
      "network/dhcp_provider_test.cc",
      "network/dhcpv4_config_test.cc",
      "network/mock_dhcp_controller.cc",
      "network/mock_dhcp_provider.cc",
      "network/mock_dhcp_proxy.cc",
      "network/mock_network.cc",
      "network/network_test.cc",
      "portal_detector_test.cc",
      "power_manager_test.cc",
      "process_manager_test.cc",
      "profile_test.cc",
      "resolver_test.cc",
      "result_aggregator_test.cc",
      "routing_table_test.cc",
      "rpc_task_test.cc",
      "scope_logger_test.cc",
      "service_property_change_test.cc",
      "service_test.cc",
      "service_under_test.cc",
      "static_ip_parameters_test.cc",
      "store/crypto_test.cc",
      "store/fake_store.cc",
      "store/key_file_store_test.cc",
      "store/key_value_store_test.cc",
      "store/pkcs11_data_store_test.cc",
      "store/property_accessor_test.cc",
      "store/property_store_test.cc",
      "supplicant/mock_supplicant_bss_proxy.cc",
      "supplicant/mock_supplicant_eap_state_handler.cc",
      "supplicant/mock_supplicant_interface_proxy.cc",
      "supplicant/mock_supplicant_network_proxy.cc",
      "supplicant/mock_supplicant_process_proxy.cc",
      "supplicant/supplicant_eap_state_handler_test.cc",
      "supplicant/supplicant_manager_test.cc",
      "supplicant/wpa_supplicant_test.cc",
      "technology_test.cc",
      "testrunner.cc",
      "tethering_manager_test.cc",
      "throttler_test.cc",
      "timeout_set_test.cc",
      "upstart/mock_upstart.cc",
      "upstart/mock_upstart_proxy.cc",
      "upstart/upstart_test.cc",
      "virtual_device_test.cc",
      "vpn/mock_vpn_provider.cc",
      "wifi/mock_wake_on_wifi.cc",
      "wifi/mock_wifi.cc",
      "wifi/mock_wifi_provider.cc",
      "wifi/mock_wifi_service.cc",
      "wifi/passpoint_credentials_test.cc",
      "wifi/wake_on_wifi_test.cc",
      "wifi/wifi_cqm_test.cc",
      "wifi/wifi_endpoint_test.cc",
      "wifi/wifi_provider_test.cc",
      "wifi/wifi_security_test.cc",
      "wifi/wifi_service_test.cc",
      "wifi/wifi_test.cc",
    ]
    configs += [
      "//common-mk:test",
      ":libshill_config",
      ":shill_unittest_config",
      ":target_defaults",
    ]
    deps = [
      ":libshill",
      "//metrics:metrics_test_support",
    ]

    if (use.cellular) {
      sources += [
        "cellular/apn_list_test.cc",
        "cellular/cellular_bearer_test.cc",
        "cellular/cellular_capability_3gpp_test.cc",
        "cellular/cellular_error_test.cc",
        "cellular/cellular_helpers_test.cc",
        "cellular/cellular_pco_test.cc",
        "cellular/cellular_service_provider_test.cc",
        "cellular/cellular_service_test.cc",
        "cellular/cellular_test.cc",
        "cellular/mobile_operator_info_test.cc",
        "cellular/mock_cellular.cc",
        "cellular/mock_cellular_service.cc",
        "cellular/mock_dbus_objectmanager_proxy.cc",
        "cellular/mock_mm1_modem_location_proxy.cc",
        "cellular/mock_mm1_modem_modem3gpp_profile_manager_proxy.cc",
        "cellular/mock_mm1_modem_modem3gpp_proxy.cc",
        "cellular/mock_mm1_modem_proxy.cc",
        "cellular/mock_mm1_modem_signal_proxy.cc",
        "cellular/mock_mm1_modem_simple_proxy.cc",
        "cellular/mock_mm1_sim_proxy.cc",
        "cellular/mock_mobile_operator_info.cc",
        "cellular/mock_modem_info.cc",
        "cellular/mock_pending_activation_store.cc",
        "cellular/modem_info_test.cc",
        "cellular/modem_test.cc",
        "cellular/pending_activation_store_test.cc",
        "cellular/verizon_subscription_state_test.cc",
        "dbus/dbus_properties_proxy_test.cc",
        "dbus/fake_properties_proxy.cc",
        "mobile_operator_db/service_providers_test.cc",
      ]
      deps += [
        ":mobile_operator_db-db",
        ":mobile_operator_db-test-db",
      ]
    }

    if (use.cellular || use.vpn) {
      sources += [
        "ppp_daemon_test.cc",
        "ppp_device_test.cc",
      ]
    }

    if (use.vpn) {
      sources += [
        "shims/environment.cc",
        "shims/environment_test.cc",
        "vpn/arc_vpn_driver_test.cc",
        "vpn/fake_vpn_util.cc",
        "vpn/ikev2_driver_test.cc",
        "vpn/ipsec_connection_test.cc",
        "vpn/l2tp_connection_test.cc",
        "vpn/l2tp_ipsec_driver_test.cc",
        "vpn/mock_openvpn_management_server.cc",
        "vpn/mock_vpn_driver.cc",
        "vpn/mock_vpn_service.cc",
        "vpn/openvpn_driver_test.cc",
        "vpn/openvpn_management_server_test.cc",
        "vpn/third_party_vpn_driver_test.cc",
        "vpn/vpn_connection_test.cc",
        "vpn/vpn_connection_under_test.cc",
        "vpn/vpn_driver_test.cc",
        "vpn/vpn_provider_test.cc",
        "vpn/vpn_service_test.cc",
        "vpn/wireguard_driver_test.cc",
      ]
    }

    if (use.wired_8021x) {
      sources += [
        "ethernet/eap_listener_test.cc",
        "ethernet/ethernet_eap_provider_test.cc",
        "ethernet/ethernet_eap_service_test.cc",
        "ethernet/mock_eap_listener.cc",
        "ethernet/mock_ethernet_eap_provider.cc",
      ]
    }
  }
}
