# Copyright 2016 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/rules.gni")

ios_app_bundle("cronet_consumer") {
  info_plist = "cronet-consumer-Info.plist"

  deps = [
    "//base:base",
    "//components/cronet/ios:cronet_framework+link",

    # All shared libraries must have the sanitizer deps to properly link in
    # asan mode (this target will be empty in other cases).
    "//build/config:exe_and_shlib_deps",
  ]

  sources = [
    "cronet_consumer_app_delegate.h",
    "cronet_consumer_app_delegate.mm",
    "cronet_consumer_view_controller.h",
    "cronet_consumer_view_controller.m",
    "main.mm",
  ]

  bundle_deps = [ "//components/cronet/ios:cronet_framework+bundle" ]

  configs += [ "//build/config/compiler:enable_arc" ]
}
