# Copyright 2019 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/templates/ios_app_bundle.gni")
import("//build/config/ios/templates/ios_framework_bundle.gni")
import("//build/config/ios/templates/storyboards.gni")

ios_app_bundle("hello") {
  output_name = "Hello"
  info_plist = "resources/Info.plist"

  sources = [ "main.m" ]

  deps = [ ":hello_framework+bundle" ]
}

ios_framework_bundle("hello_framework") {
  output_name = "HelloMain"

  sources = [
    "AppDelegate.h",
    "AppDelegate.m",
    "SceneDelegate.h",
    "SceneDelegate.m",
    "ViewController.h",
    "ViewController.m",
    "hello_main.m",
  ]

  frameworks = [
    "CoreGraphics.framework",
    "Foundation.framework",
    "UIKit.framework",
  ]

  deps = [
    ":foo",
    ":storyboards",
    "//shared:hello_framework",
    "//shared:hello_framework+bundle",
  ]
}

storyboards("storyboards") {
  sources = [
    "resources/LaunchScreen.storyboard",
    "resources/Main.storyboard",
  ]
}

source_set("baz") {
  module_name = "Baz"
  sources = [ "Baz.swift" ]
}

source_set("bar") {
  module_name = "Bar"
  sources = [ "Bar.swift" ]
  deps = [ ":baz" ]
}

group("bar_indirect") {
  public_deps = [ ":bar" ]
}

source_set("foo") {
  module_name = "Foo"
  bridge_header = "Foo-Bridging-Header.h"
  sources = [
    "Foo.swift",
    "FooWrapper.swift",
  ]
  deps = [ ":bar_indirect" ]
}
