OLD | NEW |
| (Empty) |
1 # 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 | |
5 import("//build/toolchain/toolchain.gni") | |
6 import("//services/shell/public/constants.gni") | |
7 | |
8 if (is_android) { | |
9 import("//build/config/android/rules.gni") | |
10 import("//build/config/zip.gni") | |
11 } | |
12 | |
13 # Generates a Service "package", which includes: | |
14 # . A self-named subdirectory | |
15 # . A binary .library | |
16 # . A resources subdirectory alongside .library that contains the contents of | |
17 # "resources" | |
18 # | |
19 # The parameters of this template are those of a shared library. | |
20 template("service") { | |
21 base_target_name = target_name | |
22 if (defined(invoker.output_name)) { | |
23 base_target_name = invoker.output_name | |
24 } | |
25 | |
26 final_target_name = target_name | |
27 | |
28 library_deps = [] | |
29 if (defined(invoker.deps)) { | |
30 library_deps += invoker.deps | |
31 } | |
32 | |
33 library_data_deps = [] | |
34 | |
35 if (defined(invoker.resources)) { | |
36 copy_step_name = "${base_target_name}__copy_resources" | |
37 copy(copy_step_name) { | |
38 sources = invoker.resources | |
39 outputs = [ | |
40 "${root_out_dir}/${packages_directory}/${base_target_name}/resources/{{s
ource_file_part}}", | |
41 ] | |
42 if (defined(invoker.testonly)) { | |
43 testonly = invoker.testonly | |
44 } | |
45 deps = library_deps | |
46 } | |
47 library_data_deps += [ ":$copy_step_name" ] | |
48 } | |
49 | |
50 output = base_target_name + ".library" | |
51 library_target_name = base_target_name + "_library" | |
52 library_name = "${shlib_prefix}${library_target_name}${shlib_extension}" | |
53 | |
54 shared_library(library_target_name) { | |
55 if (defined(invoker.cflags)) { | |
56 cflags = invoker.cflags | |
57 } | |
58 if (defined(invoker.cflags_c)) { | |
59 cflags_c = invoker.cflags_c | |
60 } | |
61 if (defined(invoker.cflags_cc)) { | |
62 cflags_cc = invoker.cflags_cc | |
63 } | |
64 if (defined(invoker.cflags_objc)) { | |
65 cflags_objc = invoker.cflags_objc | |
66 } | |
67 if (defined(invoker.cflags_objcc)) { | |
68 cflags_objcc = invoker.cflags_objcc | |
69 } | |
70 if (defined(invoker.defines)) { | |
71 defines = invoker.defines | |
72 } | |
73 if (defined(invoker.include_dirs)) { | |
74 include_dirs = invoker.include_dirs | |
75 } | |
76 if (defined(invoker.ldflags)) { | |
77 ldflags = invoker.ldflags | |
78 } | |
79 if (defined(invoker.lib_dirs)) { | |
80 lib_dirs = invoker.lib_dirs | |
81 } | |
82 if (defined(invoker.libs)) { | |
83 libs = invoker.libs | |
84 } | |
85 | |
86 data_deps = [] | |
87 if (!defined(invoker.avoid_runner_cycle) || !invoker.avoid_runner_cycle) { | |
88 # Give the user an out; as some Services are depended on by the runner. | |
89 data_deps += [ "//services/shell/standalone" ] | |
90 } | |
91 if (defined(invoker.data_deps)) { | |
92 data_deps += invoker.data_deps | |
93 } | |
94 data_deps += library_data_deps | |
95 | |
96 deps = [ | |
97 "//mojo/public/c/system:set_thunks_for_app", | |
98 "//services/shell/public/cpp:application_support", | |
99 ] | |
100 | |
101 deps += library_deps | |
102 if (defined(invoker.public_deps)) { | |
103 public_deps = invoker.public_deps | |
104 } | |
105 if (defined(invoker.all_dependent_configs)) { | |
106 all_dependent_configs = invoker.all_dependent_configs | |
107 } | |
108 if (defined(invoker.public_configs)) { | |
109 public_configs = invoker.public_configs | |
110 } | |
111 if (defined(invoker.check_includes)) { | |
112 check_includes = invoker.check_includes | |
113 } | |
114 if (defined(invoker.configs)) { | |
115 configs += invoker.configs | |
116 } | |
117 if (defined(invoker.data)) { | |
118 data = invoker.data | |
119 } | |
120 if (defined(invoker.inputs)) { | |
121 inputs = invoker.inputs | |
122 } | |
123 if (defined(invoker.public)) { | |
124 public = invoker.public | |
125 } | |
126 if (defined(invoker.sources)) { | |
127 sources = invoker.sources | |
128 } | |
129 if (defined(invoker.testonly)) { | |
130 testonly = invoker.testonly | |
131 } | |
132 } | |
133 | |
134 copy(final_target_name) { | |
135 forward_variables_from(invoker, | |
136 [ | |
137 "testonly", | |
138 "visibility", | |
139 ]) | |
140 deps = [ | |
141 ":${library_target_name}", | |
142 ] | |
143 | |
144 sources = [ | |
145 "${root_shlib_dir}/${library_name}", | |
146 ] | |
147 outputs = [ | |
148 "${root_out_dir}/${packages_directory}/${base_target_name}/${output}", | |
149 ] | |
150 } | |
151 } | |
OLD | NEW |