# 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",
    ":libshill-net-${libbase_ver}",
    ":mobile_operator_db",
    ":mobile_operator_db-db",
    ":mobile_operator_db-protos",
    ":netfilter-queue-helper",
    ":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",
      ":nl80211_message_fuzzer",
      ":rtnl_handler_fuzzer",
      ":verizon_subscription_state_fuzzer",
    ]
  }
  if (use.test) {
    deps += [
      ":shill_setup_wifi",
      ":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
  ]
  defines = [
    "RUNDIR=\"/run/shill\"",
    "SHIMDIR=\"${libdir}/shill/shims\"",
  ]
  if (!use.cellular) {
    defines += [ "DISABLE_CELLULAR" ]
  }

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

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

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

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

  if (!use.wifi) {
    defines += [ "DISABLE_WIFI" ]
  }

  if (!use.wimax) {
    defines += [ "DISABLE_WIMAX" ]
  }

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

  pkg_deps = [
    "dbus-1",
    "libtirpc",
    "libbrillo-${libbase_ver}",
    "libchrome-${libbase_ver}",
  ]
}

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",
  ]
}

static_library("mobile_operator_db") {
  configs += [ ":target_defaults" ]
  configs -= [ "//common-mk:no_exceptions" ]
  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",
  ]
}

write_deps("libshill-net-${libbase_ver}_deps") {
  pkg_deps = []
  target = "libshill-net-${libbase_ver}"
}

net_sources = [
  "net/arp_client.cc",
  "net/arp_packet.cc",
  "net/attribute_list.cc",
  "net/byte_string.cc",
  "net/control_netlink_attribute.cc",
  "net/event_history.cc",
  "net/generic_netlink_message.cc",
  "net/ieee80211.cc",
  "net/io_handler_factory.cc",
  "net/io_handler_factory_container.cc",
  "net/io_input_handler.cc",
  "net/io_ready_handler.cc",
  "net/ip_address.cc",
  "net/netlink_attribute.cc",
  "net/netlink_fd.cc",
  "net/netlink_manager.cc",
  "net/netlink_message.cc",
  "net/netlink_packet.cc",
  "net/netlink_sock_diag.cc",
  "net/netlink_socket.cc",
  "net/nl80211_attribute.cc",
  "net/nl80211_message.cc",
  "net/rtnl_handler.cc",
  "net/rtnl_listener.cc",
  "net/rtnl_message.cc",
  "net/shill_time.cc",
  "net/sockets.cc",
]

shared_library("libshill-net-${libbase_ver}") {
  configs += [ ":target_defaults" ]
  configs -= [ "//common-mk:no_exceptions" ]
  defines = [ "SLOG_MEANS_VLOG=1" ]
  sources = net_sources
  cflags_cc = [
    # for shill::Logging declarations
    "-Wno-unused-variable",
    "-Wno-unused-function",
  ]
  deps = [
    ":${target_name}_deps",
  ]
}

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

    # 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",
    "protobuf-lite",
  ]
}

pkg_config("libshill_all_dependent_config") {
  pkg_deps = [
    # For g_key_*(), etc in key_file_store.*
    "glib-2.0",
    "libcares",
    "libmetrics-${libbase_ver}",
    "libpasswordprovider",
    "libpower_manager-client",
    "protobuf-lite",
  ]
  if (use.wimax) {
    pkg_deps += [ "libwimax_manager-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.ModemManager.Modem.Cdma.xml",
    "${modemmanager_in_dir}/org.freedesktop.ModemManager.Modem.Gsm.Card.xml",
    "${modemmanager_in_dir}/org.freedesktop.ModemManager.Modem.Gsm.Network.xml",
    "${modemmanager_in_dir}/org.freedesktop.ModemManager.Modem.Simple.xml",
    "${modemmanager_in_dir}/org.freedesktop.ModemManager.Modem.xml",
    "${modemmanager_in_dir}/org.freedesktop.ModemManager.xml",
    "${modemmanager_in_dir}/org.freedesktop.ModemManager1.Modem.Location.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.Simple.xml",
    "${modemmanager_in_dir}/org.freedesktop.ModemManager1.Modem.xml",
    "${modemmanager_in_dir}/org.freedesktop.ModemManager1.Sim.xml",
    "dbus_bindings/dbus-objectmanager.dbus-xml",
    "dbus_bindings/dbus-properties.dbus-xml",
    "dbus_bindings/modem-gobi.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") {
  configs += [
    ":libshill_config",
    ":target_defaults",
  ]
  configs -= [ "//common-mk:no_exceptions" ]
  all_dependent_configs = [ ":libshill_all_dependent_config" ]
  sources = [
    "active_link_monitor.cc",
    "certificate_file.cc",
    "connection.cc",
    "connection_diagnostics.cc",
    "connection_info.cc",
    "connection_info_reader.cc",
    "crypto_des_cbc.cc",
    "crypto_provider.cc",
    "crypto_rot47.cc",
    "daemon_task.cc",
    "dbus/chromeos_dbus_adaptor.cc",
    "dbus/chromeos_dbus_control.cc",
    "dbus/chromeos_dbus_service_watcher.cc",
    "dbus/chromeos_device_dbus_adaptor.cc",
    "dbus/chromeos_dhcpcd_listener.cc",
    "dbus/chromeos_dhcpcd_proxy.cc",
    "dbus/chromeos_ipconfig_dbus_adaptor.cc",
    "dbus/chromeos_manager_dbus_adaptor.cc",
    "dbus/chromeos_power_manager_proxy.cc",
    "dbus/chromeos_profile_dbus_adaptor.cc",
    "dbus/chromeos_rpc_task_dbus_adaptor.cc",
    "dbus/chromeos_service_dbus_adaptor.cc",
    "dbus/chromeos_third_party_vpn_dbus_adaptor.cc",
    "dbus/chromeos_upstart_proxy.cc",
    "dbus/dbus_service_watcher_factory.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_client_factory.cc",
    "dns_server_tester.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",
    "file_reader.cc",
    "geolocation_info.cc",
    "hook_table.cc",
    "http_request.cc",
    "http_url.cc",
    "icmp.cc",
    "icmp_session.cc",
    "icmp_session_factory.cc",
    "ip_address_store.cc",
    "ipconfig.cc",
    "key_file_store.cc",
    "key_value_store.cc",
    "link_monitor.cc",
    "logging.cc",
    "manager.cc",
    "metrics.cc",
    "passive_link_monitor.cc",
    "pending_activation_store.cc",
    "portal_detector.cc",
    "power_manager.cc",
    "ppp_daemon.cc",
    "ppp_device.cc",
    "ppp_device_factory.cc",
    "pppoe/pppoe_service.cc",
    "process_manager.cc",
    "profile.cc",
    "property_store.cc",
    "resolver.cc",
    "result_aggregator.cc",
    "routing_table.cc",
    "rpc_task.cc",
    "scope_logger.cc",
    "scoped_umask.cc",
    "service.cc",
    "shill_ares.cc",
    "shill_config.cc",
    "shill_daemon.cc",
    "shill_test_config.cc",
    "socket_info.cc",
    "socket_info_reader.cc",
    "static_ip_parameters.cc",
    "technology.cc",
    "tethering.cc",
    "throttler.cc",
    "traffic_monitor.cc",
    "upstart/upstart.cc",
    "virtual_device.cc",
    "vpn/vpn_driver.cc",
    "vpn/vpn_provider.cc",
    "vpn/vpn_service.cc",
  ]
  sources += net_sources
  libs = [
    "bootstat",
    "policy-${libbase_ver}",
    "rootdev",
    "rt",
  ]

  deps = [
    ":generate_dhcpcd_proxies",
    ":generate_upstart_proxies",
    ":mobile_operator_db",
    ":shill-chromeos-dbus-adaptors",
  ]

  if (use.cellular) {
    configs += [ ":libshill_cellular_config" ]
    sources += [
      "cellular/cellular.cc",
      "cellular/cellular_bearer.cc",
      "cellular/cellular_capability.cc",
      "cellular/cellular_capability_cdma.cc",
      "cellular/cellular_capability_classic.cc",
      "cellular/cellular_capability_gsm.cc",
      "cellular/cellular_capability_universal.cc",
      "cellular/cellular_capability_universal_cdma.cc",
      "cellular/cellular_error.cc",
      "cellular/cellular_error_mm1.cc",
      "cellular/cellular_pco.cc",
      "cellular/cellular_service.cc",
      "cellular/mobile_operator_info.cc",
      "cellular/mobile_operator_info_impl.cc",
      "cellular/modem.cc",
      "cellular/modem_1.cc",
      "cellular/modem_classic.cc",
      "cellular/modem_info.cc",
      "cellular/modem_manager.cc",
      "cellular/modem_manager_1.cc",
      "cellular/subscription_state.cc",
      "cellular/verizon_subscription_state.cc",
      "dbus/chromeos_dbus_objectmanager_proxy.cc",
      "dbus/chromeos_dbus_properties_proxy.cc",
      "dbus/chromeos_mm1_modem_location_proxy.cc",
      "dbus/chromeos_mm1_modem_modem3gpp_proxy.cc",
      "dbus/chromeos_mm1_modem_modemcdma_proxy.cc",
      "dbus/chromeos_mm1_modem_proxy.cc",
      "dbus/chromeos_mm1_modem_simple_proxy.cc",
      "dbus/chromeos_mm1_sim_proxy.cc",
      "dbus/chromeos_modem_cdma_proxy.cc",
      "dbus/chromeos_modem_gobi_proxy.cc",
      "dbus/chromeos_modem_gsm_card_proxy.cc",
      "dbus/chromeos_modem_gsm_network_proxy.cc",
      "dbus/chromeos_modem_manager_proxy.cc",
      "dbus/chromeos_modem_proxy.cc",
      "dbus/chromeos_modem_simple_proxy.cc",
      "protobuf_lite_streams.cc",
    ]
    deps += [ ":generate_cellular_proxies" ]
  }

  if (use.vpn) {
    sources += [
      "vpn/arc_vpn_driver.cc",
      "vpn/l2tp_ipsec_driver.cc",
      "vpn/openvpn_driver.cc",
      "vpn/openvpn_management_server.cc",
      "vpn/third_party_vpn_driver.cc",
    ]
  }

  if (use.wifi) {
    sources += [
      "wifi/callback80211_metrics.cc",
      "wifi/mac80211_monitor.cc",
      "wifi/tdls_manager.cc",
      "wifi/wake_on_wifi.cc",
      "wifi/wifi.cc",
      "wifi/wifi_endpoint.cc",
      "wifi/wifi_provider.cc",
      "wifi/wifi_service.cc",
    ]
  }

  if (use.wifi || use.wired_8021x) {
    sources += [
      "dbus/chromeos_supplicant_bss_proxy.cc",
      "dbus/chromeos_supplicant_interface_proxy.cc",
      "dbus/chromeos_supplicant_network_proxy.cc",
      "dbus/chromeos_supplicant_process_proxy.cc",
      "eap_credentials.cc",
      "eap_listener.cc",
      "supplicant/supplicant_eap_state_handler.cc",
      "supplicant/wpa_supplicant.cc",
    ]
    deps += [ ":generate_supplicant_proxies" ]
  }

  if (use.wimax) {
    sources += [
      "dbus/chromeos_wimax_device_proxy.cc",
      "dbus/chromeos_wimax_manager_proxy.cc",
      "dbus/chromeos_wimax_network_proxy.cc",
      "wimax/wimax.cc",
      "wimax/wimax_provider.cc",
      "wimax/wimax_service.cc",
    ]
  }

  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") {
  configs += [
    ":shill_config",
    ":target_defaults",
  ]
  configs -= [ "//common-mk:no_exceptions" ]
  sources = [
    "shill_main.cc",
  ]
  deps = [
    ":libshill",
  ]
}

pkg_config("netfilter-queue-helper_config") {
  pkg_deps = [
    "libnetfilter_queue",
    "libnfnetlink",
  ]
}

executable("netfilter-queue-helper") {
  configs += [
    ":netfilter-queue-helper_config",
    ":target_defaults",
  ]
  configs -= [ "//common-mk:no_exceptions" ]
  sources = [
    "shims/netfilter_queue_helper.cc",
    "shims/netfilter_queue_processor.cc",
  ]
}

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

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

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

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

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

if (use.fuzzer) {
  pkg_config("fuzzed_data_config") {
    pkg_deps = [ "libchrome-test-${libbase_ver}" ]
  }
  executable("cellular_pco_fuzzer") {
    configs += [
      "//common-mk/common_fuzzer",
      ":fuzzed_data_config",
      ":target_defaults",
    ]
    configs -= [ "//common-mk:no_exceptions" ]
    sources = [
      "cellular/cellular_pco_fuzzer.cc",
    ]
    deps = [
      ":libshill",
    ]
  }
  executable("nl80211_message_fuzzer") {
    configs += [
      "//common-mk/common_fuzzer",
      ":target_defaults",
    ]
    configs -= [ "//common-mk:no_exceptions" ]
    sources = [
      "net/nl80211_message_fuzzer.cc",
    ]
    deps = [
      ":libshill",
    ]
  }
  executable("rtnl_handler_fuzzer") {
    configs += [
      "//common-mk/common_fuzzer",
      ":target_defaults",
    ]
    configs -= [ "//common-mk:no_exceptions" ]
    sources = [
      "net/rtnl_handler_fuzzer.cc",
    ]
    deps = [
      ":libshill",
    ]
  }
  executable("verizon_subscription_state_fuzzer") {
    configs += [
      "//common-mk/common_fuzzer",
      ":target_defaults",
    ]
    configs -= [ "//common-mk:no_exceptions" ]
    sources = [
      "cellular/verizon_subscription_state_fuzzer.cc",
    ]
    deps = [
      ":libshill",
    ]
  }
}

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

  executable("shill_unittest") {
    configs += [
      "//common-mk:test",
      ":libshill_config",
      ":shill_unittest_config",
      ":target_defaults",
    ]
    configs -= [ "//common-mk:no_exceptions" ]
    sources = [
      "active_link_monitor_test.cc",
      "certificate_file_test.cc",
      "connection_diagnostics_test.cc",
      "connection_info_reader_test.cc",
      "connection_info_test.cc",
      "connection_test.cc",
      "crypto_des_cbc_test.cc",
      "crypto_provider_test.cc",
      "crypto_rot47_test.cc",
      "daemon_task_test.cc",
      "dbus/chromeos_dbus_adaptor_test.cc",
      "dbus/chromeos_manager_dbus_adaptor_test.cc",
      "default_profile_test.cc",
      "device_claimer_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_server_tester_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",
      "file_reader_test.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",
      "link_monitor_test.cc",
      "manager_test.cc",
      "metrics_test.cc",
      "mock_active_link_monitor.cc",
      "mock_adaptors.cc",
      "mock_ares.cc",
      "mock_certificate_file.cc",
      "mock_connection.cc",
      "mock_connection_info_reader.cc",
      "mock_control.cc",
      "mock_device.cc",
      "mock_device_info.cc",
      "mock_dns_client.cc",
      "mock_dns_client_factory.cc",
      "mock_event_dispatcher.cc",
      "mock_external_task.cc",
      "mock_http_request.cc",
      "mock_icmp.cc",
      "mock_icmp_session.cc",
      "mock_icmp_session_factory.cc",
      "mock_ipconfig.cc",
      "mock_link_monitor.cc",
      "mock_log.cc",
      "mock_log_test.cc",
      "mock_manager.cc",
      "mock_metrics.cc",
      "mock_passive_link_monitor.cc",
      "mock_pending_activation_store.cc",
      "mock_portal_detector.cc",
      "mock_power_manager.cc",
      "mock_power_manager_proxy.cc",
      "mock_ppp_device.cc",
      "mock_ppp_device_factory.cc",
      "mock_process_manager.cc",
      "mock_profile.cc",
      "mock_resolver.cc",
      "mock_routing_table.cc",
      "mock_service.cc",
      "mock_socket_info_reader.cc",
      "mock_store.cc",
      "mock_throttler.cc",
      "mock_traffic_monitor.cc",
      "mock_virtual_device.cc",
      "net/arp_client_test.cc",
      "net/arp_client_test_helper.cc",
      "net/arp_packet_test.cc",
      "net/attribute_list_test.cc",
      "net/byte_string_test.cc",
      "net/event_history_test.cc",
      "net/ip_address_test.cc",
      "net/mock_arp_client.cc",
      "net/netlink_attribute_test.cc",
      "net/nl80211_message_test.cc",
      "net/rtnl_handler_test.cc",
      "net/rtnl_listener_test.cc",
      "net/rtnl_message_test.cc",
      "net/shill_time_test.cc",
      "nice_mock_control.cc",
      "passive_link_monitor_test.cc",
      "pending_activation_store_test.cc",
      "portal_detector_test.cc",
      "power_manager_test.cc",
      "ppp_daemon_test.cc",
      "ppp_device_test.cc",
      "pppoe/pppoe_service_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",
      "shims/netfilter_queue_processor.cc",
      "shims/netfilter_queue_processor_test.cc",
      "socket_info_reader_test.cc",
      "socket_info_test.cc",
      "static_ip_parameters_test.cc",
      "technology_test.cc",
      "testrunner.cc",
      "throttler_test.cc",
      "timeout_set_test.cc",
      "traffic_monitor_test.cc",
      "upstart/mock_upstart.cc",
      "upstart/mock_upstart_proxy.cc",
      "upstart/upstart_test.cc",
      "virtual_device_test.cc",
      "vpn/mock_vpn_provider.cc",
    ]
    deps = [
      ":libshill",
    ]

    if (use.cellular) {
      sources += [
        "cellular/cellular_bearer_test.cc",
        "cellular/cellular_capability_cdma_test.cc",
        "cellular/cellular_capability_classic_test.cc",
        "cellular/cellular_capability_gsm_test.cc",
        "cellular/cellular_capability_universal_cdma_test.cc",
        "cellular/cellular_capability_universal_test.cc",
        "cellular/cellular_error_test.cc",
        "cellular/cellular_pco_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_proxy.cc",
        "cellular/mock_mm1_modem_modemcdma_proxy.cc",
        "cellular/mock_mm1_modem_proxy.cc",
        "cellular/mock_mm1_modem_simple_proxy.cc",
        "cellular/mock_mm1_sim_proxy.cc",
        "cellular/mock_mobile_operator_info.cc",
        "cellular/mock_modem.cc",
        "cellular/mock_modem_cdma_proxy.cc",
        "cellular/mock_modem_gobi_proxy.cc",
        "cellular/mock_modem_gsm_card_proxy.cc",
        "cellular/mock_modem_gsm_network_proxy.cc",
        "cellular/mock_modem_info.cc",
        "cellular/mock_modem_manager_proxy.cc",
        "cellular/mock_modem_proxy.cc",
        "cellular/mock_modem_simple_proxy.cc",
        "cellular/modem_1_test.cc",
        "cellular/modem_info_test.cc",
        "cellular/modem_manager_test.cc",
        "cellular/modem_test.cc",
        "cellular/verizon_subscription_state_test.cc",
        "mock_dbus_properties_proxy.cc",
      ]
    }

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

    if (use.vpn) {
      sources += [
        "shims/environment.cc",
        "shims/environment_test.cc",
        "vpn/arc_vpn_driver_test.cc",
        "vpn/l2tp_ipsec_driver_test.cc",
        "vpn/mock_openvpn_driver.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_driver_test.cc",
        "vpn/vpn_provider_test.cc",
        "vpn/vpn_service_test.cc",
      ]
    }

    if (use.wifi) {
      sources += [
        "net/netlink_manager_test.cc",
        "net/netlink_message_test.cc",
        "net/netlink_packet_test.cc",
        "net/netlink_socket_test.cc",
        "net/nl80211_attribute_test.cc",
        "supplicant/mock_supplicant_bss_proxy.cc",
        "wifi/callback80211_metrics_test.cc",
        "wifi/mac80211_monitor_test.cc",
        "wifi/mock_mac80211_monitor.cc",
        "wifi/mock_tdls_manager.cc",
        "wifi/mock_wake_on_wifi.cc",
        "wifi/mock_wifi.cc",
        "wifi/mock_wifi_provider.cc",
        "wifi/mock_wifi_service.cc",
        "wifi/tdls_manager_test.cc",
        "wifi/wake_on_wifi_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/wpa_supplicant_test.cc",
      ]
    }

    if (use.wimax) {
      sources += [
        "wimax/mock_wimax.cc",
        "wimax/mock_wimax_device_proxy.cc",
        "wimax/mock_wimax_manager_proxy.cc",
        "wimax/mock_wimax_network_proxy.cc",
        "wimax/mock_wimax_provider.cc",
        "wimax/mock_wimax_service.cc",
        "wimax/wimax_provider_test.cc",
        "wimax/wimax_service_test.cc",
        "wimax/wimax_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",
      ]
    }
  }

  executable("shill_setup_wifi") {
    configs += [
      ":openvpn-script_config",
      ":target_defaults",
    ]
    configs -= [ "//common-mk:no_exceptions" ]
    sources = [
      "setup_wifi/main.cc",
    ]
  }
}
