# 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.json_store) {
    defines += [ "ENABLE_JSON_STORE" ]
  }

  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 = [
    "libcares",
    "libmetrics-${libbase_ver}",
    "libpasswordprovider",
    "libpower_manager-client",
    "protobuf-lite",
  ]
  if (!use.json_store) {
    # for g_key_*(), etc.
    pkg_deps += [ "glib-2.0" ]
  }
  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_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.json_store) {
    sources += [ "key_file_store.cc" ]
  }

  if (use.json_store) {
    sources += [ "json_store.cc" ]
  }

  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_service.cc",
      "ethernet/mock_ethernet_provider.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_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_claimer.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.json_store) {
      sources += [ "key_file_store_test.cc" ]
    }

    if (use.json_store) {
      sources += [ "json_store_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",
    ]
  }
}
