chromium/content/public/app/BUILD.gn

# Copyright 2014 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# App different than the regular content subcomponents (see comments in
# //content/BUILD.gn) because it has to support the browser/child process split
# (the "both" target include both browser and child process files and is used
# for testing).
#
# In non-component mode, browser, child, and both all follow the same structure:
# foo ->
#   //content/public/app:child (group) ->
#     //content/public/app:child_sources (source set) ->
#       //content/app:child (source set)

# In component mode, content is linked as one big turd so there is only one
# app target containing sources ("both") and the other ones forward to it:
# foo ->
#   //content/public/app:child (group; "browser" and "both" ones look the same)
#     //content (shared library) ->
#       //content/public/app:app_sources (source set)

import("//build/config/chrome_build.gni")
import("//build/config/ui.gni")
import("//chromeos/ash/components/assistant/assistant.gni")
import("//tools/v8_context_snapshot/v8_context_snapshot.gni")
import("//ui/base/ui_features.gni")

public_app_shared_sources = [
  "content_jni_onload.h",
  "content_main.h",
  "content_main_delegate.cc",
  "content_main_delegate.h",
  "content_main_runner.h",
  "initialize_mojo_core.h",
]

public_app_shared_public_deps = [
  "//base",
  "//content:export",
  "//third_party/abseil-cpp:absl",
]

public_app_shared_deps = [
  "//base:i18n",
  "//content/app",
  "//content/public/common:common_sources",
  "//content/public/gpu:gpu_sources",
  "//content/public/renderer:renderer_sources",
  "//content/public/utility:utility_sources",
]

if (is_win) {
  public_app_shared_sources += [ "sandbox_helper_win.h" ]
  public_app_shared_deps += [ "//sandbox/win:common" ]
}

if (is_component_build) {
  source_set("app_sources") {
    # Only the main content shared library can pull this in.
    visibility = [ "//content:content" ]

    sources = public_app_shared_sources

    configs += [ "//content:content_implementation" ]

    public_deps = public_app_shared_public_deps

    deps =
        public_app_shared_deps + [ "//content/public/browser:browser_sources" ]

    allow_circular_includes_from = [
      # This target is a pair with the non-public version. They always go
      # together and include headers from each other.
      "//content/app",
    ]
  }

  # This just forwards to content, which in turn depends on "app_sources".
  group("app") {
    public_deps = [ "//content" ]
  }
} else {
  source_set("app") {
    sources = public_app_shared_sources
    configs += [ "//content:content_implementation" ]
    public_deps = public_app_shared_public_deps
    deps = public_app_shared_deps + [
             "//content/public/browser",
             "//content/public/common",
           ]

    allow_circular_includes_from = [
      # This target is a pair with the non-public version. They always go
      # together and include headers from each other.
      "//content/app",
    ]
  }
}