123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- # 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.
- import("//build/config/nacl/config.gni")
- import("//ppapi/buildflags/buildflags.gni")
- import("//tools/grit/grit_rule.gni")
- # Applied by targets internal to content.
- config("content_implementation") {
- defines = [ "CONTENT_IMPLEMENTATION" ]
- configs = [ "//build/config/compiler:wexit_time_destructors" ]
- }
- assert(!is_ios, "Chromium/iOS shouldn't use anything in //content")
- # When targets depend on, e.g. //content/public/browser, what happens? To
- # facilitate the complexity here, the "public" targets are groups that forward
- # to the right thing depending on the build mode. Say for additional
- # illustration, the public browser sources also depend on the public common
- # ones.
- #
- # The non-component build is easy:
- # foo ->
- # //content/public/browser (group) ->
- # //content/public/browser:browser_sources (source set) ->
- # //content/browser (source set, this is the non-public browser target)
- # //content/public/common:common_sources (source set)
- #
- # The component build is more complicated because we want everybody to depend on
- # one content shared library regardless of which public target they depend on:
- # foo ->
- # //content/public/browser (group) ->
- # //content (shared library) ->
- # //content/public/browser:browser_sources (source set) ->
- # //content/browser (source set; this is the non-public browser target)
- # //content/public/common:common_sources (source set)
- #
- # That the internal content dependencies must depend on the *_sources targets
- # to avoid dependency cycles, and external dependencies must depend on the
- # //content/public/browser and similar targets to avoid double-linking (these
- # targets make sure the dependency goes through the content shared library
- # when doing a component build).
- #
- # TESTS
- # -----
- # Tests are a challenge. The content tests need to access internals of
- # content/browser, for example, but the tests themselves are outside of the
- # content component (which is a shared library in the component build). To
- # prevent external-to-content targets from depending on private headers,
- # the non-public content/browser target is not a public dep of the content
- # component. But this means there is also no public path for the content
- # tests and no way to restrict that just to //content/test/* if we added one.
- #
- # As a result, we check deps for //content/test/* only in non-component builds
- # (which should verify the dependencies are correct for both component and
- # non-component cases equally). There are targets like
- # //content/browser:for_content_tests that allow content/test to depend on the
- # //content/browser target only in non-component builds (when there are no
- # linking problems) for when check is enabled.
- content_shared_components = [
- "//content/nw:nw_base",
- "//content/gpu:gpu_sources",
- "//content/public/browser:browser_sources",
- "//content/public/child:child_sources",
- "//content/public/common:common_sources",
- "//content/public/gpu:gpu_sources",
- "//content/public/renderer:renderer_sources",
- "//content/public/utility:utility_sources",
- ]
- if (enable_ppapi) {
- content_shared_components += [ "//content/ppapi_plugin:ppapi_plugin_sources" ]
- }
- if (is_component_build) {
- component("content") {
- public_deps =
- content_shared_components + [ "//content/public/app:app_sources" ]
- deps = [
- "//content/nw:nw_content",
- ]
- }
- } else {
- group("content") {
- public_deps = content_shared_components
- }
- }
- grit("content_resources") {
- source = "content_resources.grd"
- outputs = [
- "grit/content_resources.h",
- "grit/content_resources_map.cc",
- "grit/content_resources_map.h",
- "content_resources.pak",
- ]
- deps = [
- "//components/ukm/debug:build_ts",
- "//content/browser/resources/histograms:build_ts",
- "//gpu/ipc/common:vulkan_interface_webui_js",
- "//ui/base/mojom:mojom_js",
- "//ui/gfx/geometry/mojom:mojom_js",
- "//ui/gfx/image/mojom:mojom_js",
- "//ui/gfx/range/mojom:mojom_js",
- "//url/mojom:url_mojom_origin_js",
- "//url/mojom:url_mojom_origin_webui_js",
- ]
- }
- grit("dev_ui_content_resources") {
- source = "dev_ui_content_resources.grd"
- outputs = [
- "grit/dev_ui_content_resources.h",
- "dev_ui_content_resources.pak",
- ]
- deps = [
- "//content/browser/aggregation_service:mojo_bindings_webui_js",
- "//content/browser/attribution_reporting:mojo_bindings_webui_js",
- "//content/browser/preloading/prerender:mojo_bindings_webui_js",
- "//content/browser/resources/aggregation_service:build_ts",
- "//content/browser/resources/attribution_reporting:build_ts",
- "//content/browser/resources/gpu:html_wrapper_files",
- "//content/browser/resources/process:build_ts",
- "//storage/browser/quota:mojo_bindings_webui_js",
- ]
- }
- # This target exists to "hold" the content_export header so we can do proper
- # inclusion testing of it.
- source_set("export") {
- # Must only be used inside of content.
- visibility = [ "//content/*" ]
- sources = [ "common/content_export.h" ]
- }
- # In the GYP build, this file is listed in several targets. In GN just have
- # those targets depend on this one. This can be depended on for any
- # platform for simplicity, and is a no-op on non-Windows.
- source_set("sandbox_helper_win") {
- if (is_win) {
- sources = [
- "app/sandbox_helper_win.cc",
- "public/app/sandbox_helper_win.h",
- ]
- deps = [ "//sandbox" ]
- }
- }
|