blob: 5208fbced4db3fdba27f7385a5fe81f60a6bc5c4 [file] [log] [blame]
[email protected]7e4c33142014-05-21 22:01:321# Copyright 2014 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
[email protected]189add52014-05-28 16:51:445import("//tools/grit/grit_rule.gni")
6
7# Applied by targets internal to content.
8config("content_implementation") {
9 defines = [ "CONTENT_IMPLEMENTATION" ]
10}
11
Brett Wilson8f1323042014-09-11 16:58:5612# When targets depend on, e.g. //content/public/browser, what happens? To
13# facilitate the complexity here, the "public" targets are groups that forward
14# to the right thing depending on the build mode. Say for additional
15# illustration, the public browser sources also depend on the public common
16# ones.
17#
18# The non-component build is easy:
19# foo ->
20# //content/public/browser (group) ->
21# //content/public/browser:browser_sources (source set) ->
22# //content/browser (source set, this is the non-public browser target)
23# //content/public/common:common_sources (source set)
24#
25# The component build is more complicated because we want everybody to depend on
26# one content shared library regardless of which public target they depend on:
27# foo ->
28# //content/public/browser (group) ->
29# //content (shared library) ->
30# //content/public/browser:browser_sources (source set) ->
31# //content/browser (source set; this is the non-public browser target)
32# //content/public/common:common_sources (source set)
33#
34# That the internal content dependencies must depend on the *_sources targets
35# to avoid dependency cycles, and external dependencies must depend on the
36# //content/public/browser and similar targets to avoid double-linking (these
37# targets make sure the dependency goes through the content shared library
38# when doing a component build).
39
[email protected]0e043592014-07-28 19:47:0440content_shared_components = [
[email protected]dab154ee2014-06-13 23:48:5041 "//content/gpu",
42 "//content/plugin",
Brett Wilsone7487942014-09-09 23:37:2943 "//content/public/browser:browser_sources",
Brett Wilson8f1323042014-09-11 16:58:5644 "//content/public/child:child_sources",
45 "//content/public/common:common_sources",
46 "//content/public/plugin:plugin_sources",
47 "//content/public/renderer:renderer_sources",
48 "//content/public/utility:utility_sources",
[email protected]dab154ee2014-06-13 23:48:5049]
50
jamesr50081742014-09-09 07:52:2251if (enable_plugins) {
52 content_shared_components += [ "//content/ppapi_plugin" ]
53}
54
[email protected]dab154ee2014-06-13 23:48:5055if (is_component_build) {
56 shared_library("content") {
[email protected]0e043592014-07-28 19:47:0457 deps = content_shared_components + [
Brett Wilson8f1323042014-09-11 16:58:5658 "//content/public/app:both_sources",
[email protected]0e043592014-07-28 19:47:0459 ]
[email protected]22fe91d2014-08-12 17:07:1260 forward_dependent_configs_from = deps
[email protected]dab154ee2014-06-13 23:48:5061 }
62} else {
63 group("content") {
[email protected]0e043592014-07-28 19:47:0464 deps = content_shared_components
[email protected]dab154ee2014-06-13 23:48:5065 }
66}
67
[email protected]189add52014-05-28 16:51:4468grit("resources") {
69 source = "content_resources.grd"
[email protected]ae8d08982014-08-20 19:42:2970 use_qualified_include = true
[email protected]b89c53842014-07-23 16:32:3271 outputs = [
72 "grit/content_resources.h",
73 "content_resources.pak",
74 "content_resources.rc",
75 ]
[email protected]189add52014-05-28 16:51:4476}
77
[email protected]dab154ee2014-06-13 23:48:5078# This target exists to "hold" the content_export header so we can do proper
79# inclusion testing of it.
80source_set("export") {
brettw9af42622014-09-06 21:21:0281 visibility = [ "//content/*" ]
[email protected]dab154ee2014-06-13 23:48:5082 sources = [
83 "content/common/content_export.h"
84 ]
85}