# 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 += [ ":set-apn-helper" ]
  }
  if (use.cellular || use.vpn || use.pppoe) {
    deps += [ ":shill-pppd-plugin" ]
  }
  if (use.fuzzer) {
    deps += [
      ":cellular_pco_fuzzer",
      ":dhcpv4_static_routes_fuzzer",
      ":verizon_subscription_state_fuzzer",
      ":wifi_ies_fuzzer",
    ]
    if (use.vpn) {
      deps += [
        ":openvpn_management_server_fuzzer",
        ":vpn_ipsec_connection_fuzzer",
        ":vpn_l2tp_ipsec_driver_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" ]
  } else {
    # TODO(chromium:954634) Temporarily disable tests that depend on
    # CellularCapabilityClassic until they are ported to use
    # CellularCapability3gpp.
    defines += [ "DISABLE_CELLULAR_CAPABILITY_CLASSIC_TESTS" ]
  }

  if (!use.dhcpv6) {
    defines += [ "DISABLE_DHCPV6" ]
  }

  if (!use.pppoe) {
    defines += [ "DISABLE_PPPOE" ]
  }

  if (use.test) {
    # 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.wifi) {
    defines += [ "DISABLE_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",
  ]
  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",
    "crypto.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/third_party_vpn_dbus_adaptor.cc",
    "dbus/upstart_proxy.cc",
    "default_profile.cc",
    "device.cc",
    "device_claimer.cc",
    "device_id.cc",
    "device_info.cc",
    "dhcp/dhcp_config.cc",
    "dhcp/dhcp_properties.cc",
    "dhcp/dhcp_provider.cc",
    "dhcp/dhcpv4_config.cc",
    "dns_client.cc",
    "dns_util.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",
    "ip_address_store.cc",
    "ipconfig.cc",
    "key_file_store.cc",
    "key_value_store.cc",
    "logging.cc",
    "manager.cc",
    "metrics.cc",
    "pkcs11_data_store.cc",
    "portal_detector.cc",
    "power_manager.cc",
    "process_manager.cc",
    "profile.cc",
    "property_store.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",
    "technology.cc",
    "tethering.cc",
    "throttler.cc",
    "upstart/upstart.cc",
    "virtual_device.cc",
    "vpn/vpn_driver.cc",
    "vpn/vpn_provider.cc",
    "vpn/vpn_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_upstart_proxies",
    ":mobile_operator_db",
    ":shill-chromeos-dbus-adaptors",
    "//metrics/structured:libstructuredmetrics",
  ]

  if (use.cellular) {
    sources += [
      "cellular/cellular.cc",
      "cellular/cellular_bearer.cc",
      "cellular/cellular_capability.cc",
      "cellular/cellular_capability_3gpp.cc",
      "cellular/cellular_capability_cdma.cc",
      "cellular/cellular_error.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_modemcdma_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 || use.pppoe) {
    sources += [
      "ppp_daemon.cc",
      "ppp_device.cc",
      "ppp_device_factory.cc",
    ]
  }

  if (use.pppoe) {
    sources += [ "pppoe/pppoe_service.cc" ]
  }

  if (use.vpn) {
    sources += [
      "vpn/arc_vpn_driver.cc",
      "vpn/ipsec_connection.cc",
      "vpn/l2tp_connection.cc",
      "vpn/l2tp_ipsec_driver.cc",
      "vpn/new_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.wifi) {
    sources += [
      "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_service.cc",
    ]
  }

  if (use.wifi || use.wired_8021x) {
    sources += [
      "dbus/supplicant_bss_proxy.cc",
      "dbus/supplicant_interface_proxy.cc",
      "dbus/supplicant_network_proxy.cc",
      "dbus/supplicant_process_proxy.cc",
      "eap_credentials.cc",
      "eap_listener.cc",
      "supplicant/supplicant_eap_state_handler.cc",
      "supplicant/supplicant_manager.cc",
      "supplicant/wpa_supplicant.cc",
    ]
    deps += [ ":generate_supplicant_proxies" ]
  }

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

  if (use.dhcpv6) {
    sources += [ "dhcp/dhcpv6_config.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 || use.vpn || use.pppoe) {
  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 = [ "dhcp/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("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("vpn_l2tp_ipsec_driver_fuzzer") {
    sources = [ "vpn/l2tp_ipsec_driver_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" ]
  }
  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",
      "crypto_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_test.cc",
      "dhcp/dhcp_config_test.cc",
      "dhcp/dhcp_properties_test.cc",
      "dhcp/dhcp_provider_test.cc",
      "dhcp/dhcpv4_config_test.cc",
      "dhcp/mock_dhcp_config.cc",
      "dhcp/mock_dhcp_properties.cc",
      "dhcp/mock_dhcp_provider.cc",
      "dhcp/mock_dhcp_proxy.cc",
      "dns_client_test.cc",
      "dns_util_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",
      "fake_store.cc",
      "hook_table_test.cc",
      "http_request_test.cc",
      "http_url_test.cc",
      "icmp_session_test.cc",
      "icmp_test.cc",
      "ip_address_store_test.cc",
      "ipconfig_test.cc",
      "key_file_store_test.cc",
      "key_value_store_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_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",
      "pkcs11_data_store_test.cc",
      "portal_detector_test.cc",
      "power_manager_test.cc",
      "process_manager_test.cc",
      "profile_test.cc",
      "property_accessor_test.cc",
      "property_store_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",
      "technology_test.cc",
      "testrunner.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",
    ]
    configs += [
      "//common-mk:test",
      ":libshill_config",
      ":shill_unittest_config",
      ":target_defaults",
    ]
    deps = [ ":libshill" ]

    if (use.cellular) {
      sources += [
        "cellular/cellular_bearer_test.cc",
        "cellular/cellular_capability_3gpp_test.cc",
        "cellular/cellular_capability_cdma_test.cc",
        "cellular/cellular_error_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_modemcdma_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 || use.pppoe) {
      sources += [
        "mock_ppp_device.cc",
        "mock_ppp_device_factory.cc",
        "ppp_daemon_test.cc",
        "ppp_device_test.cc",
      ]
    }

    if (use.dhcpv6) {
      sources += [ "dhcp/dhcpv6_config_test.cc" ]
    }

    if (use.pppoe) {
      sources += [ "pppoe/pppoe_service_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/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/new_l2tp_ipsec_driver_test.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.wifi) {
      sources += [
        "supplicant/mock_supplicant_bss_proxy.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_service_test.cc",
        "wifi/wifi_test.cc",
      ]
    }

    if (use.wifi || use.wired_8021x) {
      sources += [
        "eap_credentials_test.cc",
        "eap_listener_test.cc",
        "mock_eap_credentials.cc",
        "mock_eap_listener.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",
      ]
    }

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