# Copyright 2015 The Chromium 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("//build/config/ios/ios_sdk.gni")

source_set("app_group") {
  configs += [ "//build/config/compiler:enable_arc" ]
  sources = [
    "app_group_constants.h",
    "app_group_constants.mm",
    "app_group_field_trial_version.h",
    "app_group_field_trial_version.mm",
    "app_group_metrics.h",
    "app_group_metrics.mm",
    "app_group_utils.h",
    "app_group_utils.mm",
  ]

  deps = [
    "//base",
    "//components/version_info",
    "//ios/chrome/common:ios_app_bundle_id_prefix_buildflags",
  ]
}

# This target will be included into application extensions and the list
# of its dependencies must be kept as short as possible.
source_set("client") {
  configs += [ "//build/config/compiler:enable_arc" ]
  sources = [
    "app_group_metrics_client.h",
    "app_group_metrics_client.mm",
  ]

  deps = [
    ":app_group",
    "//base",
  ]
}

source_set("main_app") {
  configs += [ "//build/config/compiler:enable_arc" ]
  sources = [
    "app_group_metrics_mainapp.h",
    "app_group_metrics_mainapp.mm",
  ]

  deps = [
    ":app_group",
    "//base",
  ]
}
