blob: 6138b87f7a4700e93bd8f1f48fbecbf076e60096 [file] [log] [blame]
Alex Deymoaea4c1c2015-08-19 20:24:43 -07001#
2# Copyright (C) 2015 The Android Open Source Project
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15#
Alex Deymo719bfff2014-07-11 12:12:32 -070016{
17 'target_defaults': {
18 'variables': {
19 'deps': [
20 'libchrome-<(libbase_ver)',
21 'libchromeos-<(libbase_ver)',
22 ],
23 # Defaults if the -DUSE_* flags are not passed to gyp is 0. You can set
24 # the default value for the USE flag in the ebuild.
25 'USE_hwid_override%': '0',
26 'USE_power_management%': '0',
27 },
28 'cflags': [
29 '-g',
30 '-ffunction-sections',
31 '-Wall',
32 '-Wextra',
33 '-Werror',
34 '-Wno-unused-parameter',
Alex Deymo719bfff2014-07-11 12:12:32 -070035 ],
36 'cflags_cc': [
37 '-fno-strict-aliasing',
Nam T. Nguyenfc144e62014-12-03 09:50:49 -080038 '-Wnon-virtual-dtor',
Alex Deymo719bfff2014-07-11 12:12:32 -070039 ],
40 'ldflags': [
41 '-Wl,--gc-sections',
42 ],
43 'defines': [
Alex Deymo6f20dd42015-08-18 16:42:46 -070044 '_FILE_OFFSET_BITS=64',
Alex Deymo719bfff2014-07-11 12:12:32 -070045 '_POSIX_C_SOURCE=199309L',
46 'USE_HWID_OVERRIDE=<(USE_hwid_override)',
Nam T. Nguyenf1d582e2014-12-08 15:07:17 -080047 'USE_MTD=<(USE_mtd)',
Alex Deymo719bfff2014-07-11 12:12:32 -070048 'USE_POWER_MANAGEMENT=<(USE_power_management)',
49 ],
Alex Deymoa7a34d82015-08-24 20:47:01 -070050 'include_dirs': [
51 # We need this include dir because we include all the local code as
52 # "update_engine/...".
53 '<(platform2_root)/../aosp/system',
54 ],
Alex Deymo719bfff2014-07-11 12:12:32 -070055 },
56 'targets': [
57 # Protobufs.
58 {
59 'target_name': 'update_metadata-protos',
60 'type': 'static_library',
61 'variables': {
62 'proto_in_dir': '.',
63 'proto_out_dir': 'include/update_engine',
Alex Deymo7504e5f2014-07-15 17:58:51 -070064 'exported_deps': [
Alex Deymob8f16a12014-06-10 18:59:22 -070065 'protobuf-lite',
Alex Deymo7504e5f2014-07-15 17:58:51 -070066 ],
67 'deps': ['<@(exported_deps)'],
68 },
69 'all_dependent_settings': {
70 'variables': {
71 'deps': [
72 '<@(exported_deps)',
73 ],
74 },
Alex Deymo719bfff2014-07-11 12:12:32 -070075 },
76 'sources': [
77 'update_metadata.proto'
78 ],
Alex Deymoa7a34d82015-08-24 20:47:01 -070079 'includes': ['../../../platform2/common-mk/protoc.gypi'],
Alex Deymo719bfff2014-07-11 12:12:32 -070080 },
Alex Deymob7ca0962014-10-01 17:58:07 -070081 # Chrome D-Bus bindings.
Alex Deymo719bfff2014-07-11 12:12:32 -070082 {
Alex Deymob7ca0962014-10-01 17:58:07 -070083 'target_name': 'update_engine-dbus-adaptor',
Alex Deymo719bfff2014-07-11 12:12:32 -070084 'type': 'none',
85 'variables': {
Alex Deymo6f20dd42015-08-18 16:42:46 -070086 'dbus_adaptors_out_dir': 'include/dbus_bindings',
Alex Deymo8a7d0ca2015-08-25 17:30:27 -070087 'dbus_xml_extension': 'dbus-xml',
Alex Deymo719bfff2014-07-11 12:12:32 -070088 },
89 'sources': [
Alex Deymo8a7d0ca2015-08-25 17:30:27 -070090 'dbus_bindings/org.chromium.UpdateEngineInterface.dbus-xml',
Alex Deymo719bfff2014-07-11 12:12:32 -070091 ],
Alex Deymoa7a34d82015-08-24 20:47:01 -070092 'includes': ['../../../platform2/common-mk/generate-dbus-adaptors.gypi'],
Alex Deymo719bfff2014-07-11 12:12:32 -070093 },
Alex Deymof7feb232015-08-14 10:54:02 -070094 {
Alex Deymob8803bb2015-08-19 23:14:49 -070095 'target_name': 'update_engine-other-dbus-proxies',
Alex Deymof7feb232015-08-14 10:54:02 -070096 'type': 'none',
97 'actions': [
98 {
Alex Deymob8803bb2015-08-19 23:14:49 -070099 'action_name': 'update_engine-dbus-libcros-client',
100 'variables': {
101 'mock_output_file': 'include/libcros/dbus-proxy-mocks.h',
102 'proxy_output_file': 'include/libcros/dbus-proxies.h'
103 },
104 'sources': [
Alex Deymo6f20dd42015-08-18 16:42:46 -0700105 'dbus_bindings/org.chromium.LibCrosService.dbus-xml',
Alex Deymof7feb232015-08-14 10:54:02 -0700106 ],
Alex Deymoa7a34d82015-08-24 20:47:01 -0700107 'includes': ['../../../platform2/common-mk/generate-dbus-proxies.gypi'],
Alex Deymof7feb232015-08-14 10:54:02 -0700108 },
109 ],
110 },
Alex Deymo719bfff2014-07-11 12:12:32 -0700111 # The main static_library with all the code.
112 {
113 'target_name': 'libupdate_engine',
114 'type': 'static_library',
115 'dependencies': [
116 'update_metadata-protos',
Alex Deymo30534502015-07-20 15:06:33 -0700117 'update_engine-dbus-adaptor',
Alex Deymob8803bb2015-08-19 23:14:49 -0700118 'update_engine-other-dbus-proxies',
Alex Deymo719bfff2014-07-11 12:12:32 -0700119 ],
120 'variables': {
121 'exported_deps': [
122 'dbus-1',
Alex Deymo719bfff2014-07-11 12:12:32 -0700123 'libcrypto',
124 'libcurl',
Alex Deymod6deb1d2015-08-28 15:54:37 -0700125 'libdebugd-client',
126 'libsession_manager-client',
Alex Deymo719bfff2014-07-11 12:12:32 -0700127 'libmetrics-<(libbase_ver)',
Alex Deymod6deb1d2015-08-28 15:54:37 -0700128 'libpower_manager-client',
129 'libupdate_engine-client',
130 'libshill-client',
Alex Deymo719bfff2014-07-11 12:12:32 -0700131 'libssl',
Alex Deymod6deb1d2015-08-28 15:54:37 -0700132 'expat',
Alex Deymo719bfff2014-07-11 12:12:32 -0700133 ],
134 'deps': ['<@(exported_deps)'],
135 },
136 'all_dependent_settings': {
137 'variables': {
138 'deps': [
139 '<@(exported_deps)',
140 ],
141 },
142 },
143 'link_settings': {
144 'variables': {
145 'deps': [
146 '<@(exported_deps)',
147 ],
148 },
149 'libraries': [
150 '-lbz2',
Alex Deymo719bfff2014-07-11 12:12:32 -0700151 '-lpolicy-<(libbase_ver)',
152 '-lrootdev',
153 '-lrt',
154 '-lvboot_host',
155 ],
156 },
157 'sources': [
158 'action_processor.cc',
Alex Deymo763e7db2015-08-27 21:08:08 -0700159 'boot_control_chromeos.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700160 'bzip.cc',
161 'bzip_extent_writer.cc',
162 'certificate_checker.cc',
163 'chrome_browser_proxy_resolver.cc',
164 'clock.cc',
165 'connection_manager.cc',
166 'constants.cc',
Alex Deymob7ca0962014-10-01 17:58:07 -0700167 'daemon.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700168 'dbus_service.cc',
169 'delta_performer.cc',
170 'download_action.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700171 'extent_writer.cc',
172 'file_descriptor.cc',
173 'file_writer.cc',
Allie Woodeb9e6d82015-04-17 13:55:30 -0700174 'filesystem_verifier_action.cc',
Alex Deymo40d86b22015-09-03 22:27:10 -0700175 'hardware_chromeos.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700176 'http_common.cc',
177 'http_fetcher.cc',
178 'hwid_override.cc',
179 'install_plan.cc',
Alex Deymo30534502015-07-20 15:06:33 -0700180 'libcros_proxy.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700181 'libcurl_http_fetcher.cc',
182 'metrics.cc',
183 'multi_range_http_fetcher.cc',
184 'omaha_hash_calculator.cc',
185 'omaha_request_action.cc',
186 'omaha_request_params.cc',
187 'omaha_response_handler_action.cc',
188 'p2p_manager.cc',
189 'payload_constants.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700190 'payload_state.cc',
Alex Deymo923d8fa2014-07-15 17:58:51 -0700191 'payload_verifier.cc',
Alex Deymoac41a822015-09-15 20:52:53 -0700192 'platform_constants_chromeos.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700193 'postinstall_runner_action.cc',
194 'prefs.cc',
195 'proxy_resolver.cc',
196 'real_system_state.cc',
Alex Deymo30534502015-07-20 15:06:33 -0700197 'shill_proxy.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700198 'subprocess.cc',
199 'terminator.cc',
200 'update_attempter.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700201 'update_manager/boxed_value.cc',
202 'update_manager/chromeos_policy.cc',
Gilad Arnolda23e4082014-07-17 11:40:43 -0700203 'update_manager/default_policy.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700204 'update_manager/evaluation_context.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700205 'update_manager/policy.cc',
206 'update_manager/real_config_provider.cc',
207 'update_manager/real_device_policy_provider.cc',
208 'update_manager/real_random_provider.cc',
209 'update_manager/real_shill_provider.cc',
210 'update_manager/real_system_provider.cc',
211 'update_manager/real_time_provider.cc',
212 'update_manager/real_updater_provider.cc',
213 'update_manager/state_factory.cc',
214 'update_manager/update_manager.cc',
215 'utils.cc',
216 ],
Nam T. Nguyenf1d582e2014-12-08 15:07:17 -0800217 'conditions': [
218 ['USE_mtd == 1', {
219 'sources': [
220 'mtd_file_descriptor.cc',
221 ],
222 'link_settings': {
223 'libraries': [
224 '-lmtdutils',
225 ],
226 },
227 }],
228 ],
Alex Deymo719bfff2014-07-11 12:12:32 -0700229 },
230 # update_engine daemon.
231 {
232 'target_name': 'update_engine',
233 'type': 'executable',
Alex Deymo44666f92014-07-22 20:29:24 -0700234 'dependencies': [
235 'libupdate_engine',
Alex Deymo44666f92014-07-22 20:29:24 -0700236 ],
Alex Deymo719bfff2014-07-11 12:12:32 -0700237 'sources': [
238 'main.cc',
239 ]
240 },
241 # update_engine console client.
242 {
243 'target_name': 'update_engine_client',
244 'type': 'executable',
Alex Deymo44666f92014-07-22 20:29:24 -0700245 'variables': {
246 'exported_deps': [
Alex Deymod6deb1d2015-08-28 15:54:37 -0700247 'libupdate_engine-client',
Alex Deymo44666f92014-07-22 20:29:24 -0700248 ],
249 'deps': ['<@(exported_deps)'],
250 },
Alex Deymo719bfff2014-07-11 12:12:32 -0700251 'sources': [
252 'update_engine_client.cc',
Alex Deymo72aa0022015-06-19 21:16:49 -0700253 ],
Alex Deymod2956cc2015-08-17 15:39:40 -0700254 },
Alex Deymo7504e5f2014-07-15 17:58:51 -0700255 # server-side code. This is used for delta_generator and unittests but not
256 # for any client code.
257 {
258 'target_name': 'libpayload_generator',
259 'type': 'static_library',
260 'dependencies': [
Alex Deymod6deb1d2015-08-28 15:54:37 -0700261 'libupdate_engine',
Alex Deymo7504e5f2014-07-15 17:58:51 -0700262 'update_metadata-protos',
263 ],
Alex Deymo5d527802014-07-18 14:24:13 -0700264 'variables': {
265 'exported_deps': [
266 'ext2fs',
267 ],
268 'deps': ['<@(exported_deps)'],
269 },
270 'all_dependent_settings': {
271 'variables': {
272 'deps': [
273 '<@(exported_deps)',
274 ],
275 },
276 },
277 'link_settings': {
278 'variables': {
279 'deps': [
280 '<@(exported_deps)',
281 ],
282 },
283 },
Alex Deymo7504e5f2014-07-15 17:58:51 -0700284 'sources': [
Alex Deymo14158572015-06-13 03:37:08 -0700285 'payload_generator/ab_generator.cc',
Alex Deymo477aec22015-03-24 23:40:48 -0700286 'payload_generator/annotated_operation.cc',
Sen Jiang8cc502d2015-08-10 10:04:54 -0700287 'payload_generator/blob_file_writer.cc',
Alex Deymof0061352015-07-01 14:59:15 -0700288 'payload_generator/block_mapping.cc',
Alex Deymo7504e5f2014-07-15 17:58:51 -0700289 'payload_generator/cycle_breaker.cc',
290 'payload_generator/delta_diff_generator.cc',
Alex Deymo14158572015-06-13 03:37:08 -0700291 'payload_generator/delta_diff_utils.cc',
Alex Deymo2b19cfb2015-03-26 00:35:07 -0700292 'payload_generator/ext2_filesystem.cc',
Alex Deymo1beda782015-06-07 23:01:25 +0200293 'payload_generator/extent_ranges.cc',
Alex Deymo5c6c6552015-06-03 19:06:50 +0200294 'payload_generator/extent_utils.cc',
Alex Deymo7504e5f2014-07-15 17:58:51 -0700295 'payload_generator/full_update_generator.cc',
Alex Deymo9b244df2015-03-11 21:51:18 -0700296 'payload_generator/graph_types.cc',
Alex Deymo7504e5f2014-07-15 17:58:51 -0700297 'payload_generator/graph_utils.cc',
Allie Woodcd514b52015-02-19 13:56:07 -0800298 'payload_generator/inplace_generator.cc',
Alex Deymo14158572015-06-13 03:37:08 -0700299 'payload_generator/payload_file.cc',
Alex Deymof1cbe172015-03-05 15:58:37 -0800300 'payload_generator/payload_generation_config.cc',
Alex Deymo7504e5f2014-07-15 17:58:51 -0700301 'payload_generator/payload_signer.cc',
Alex Deymo2b19cfb2015-03-26 00:35:07 -0700302 'payload_generator/raw_filesystem.cc',
Alex Deymo7504e5f2014-07-15 17:58:51 -0700303 'payload_generator/tarjan.cc',
304 'payload_generator/topological_sort.cc',
305 ],
306 },
Alex Deymo719bfff2014-07-11 12:12:32 -0700307 # server-side delta generator.
308 {
309 'target_name': 'delta_generator',
310 'type': 'executable',
Alex Deymo7504e5f2014-07-15 17:58:51 -0700311 'dependencies': [
312 'libupdate_engine',
313 'libpayload_generator',
314 ],
Alex Deymo719bfff2014-07-11 12:12:32 -0700315 'link_settings': {
316 'ldflags!': [
317 '-pie',
318 ],
319 },
320 'sources': [
321 'payload_generator/generate_delta_main.cc',
322 ]
323 },
324 ],
325 'conditions': [
326 ['USE_test == 1', {
327 'targets': [
328 # Public keys used for unit testing.
329 {
330 'target_name': 'update_engine-testkeys',
331 'type': 'none',
332 'variables': {
333 'openssl_pem_in_dir': '.',
334 'openssl_pem_out_dir': 'include/update_engine',
335 },
336 'sources': [
337 'unittest_key.pem',
338 'unittest_key2.pem',
339 ],
Alex Deymoa7a34d82015-08-24 20:47:01 -0700340 'includes': ['../../../platform2/common-mk/openssl_pem.gypi'],
Alex Deymo719bfff2014-07-11 12:12:32 -0700341 },
Alex Deymo04ef2072015-08-13 08:19:16 -0700342 # Unpacks sample images used for testing.
Alex Deymo2b19cfb2015-03-26 00:35:07 -0700343 {
344 'target_name': 'update_engine-test_images',
345 'type': 'none',
346 'variables': {
347 'image_out_dir': '.',
348 },
349 'sources': [
Alex Deymo04ef2072015-08-13 08:19:16 -0700350 'sample_images/sample_images.tar.bz2',
Alex Deymo2b19cfb2015-03-26 00:35:07 -0700351 ],
Alex Deymo04ef2072015-08-13 08:19:16 -0700352 'includes': ['tar_bunzip2.gypi'],
Alex Deymo2b19cfb2015-03-26 00:35:07 -0700353 },
Alex Deymo719bfff2014-07-11 12:12:32 -0700354 # Test HTTP Server.
355 {
356 'target_name': 'test_http_server',
357 'type': 'executable',
358 'dependencies': ['libupdate_engine'],
359 'sources': [
360 'test_http_server.cc',
361 ]
362 },
363 # Main unittest file.
364 {
365 'target_name': 'update_engine_unittests',
366 'type': 'executable',
Alex Deymoa7a34d82015-08-24 20:47:01 -0700367 'includes': ['../../../platform2/common-mk/common_test.gypi'],
Alex Deymo509dd532015-06-10 14:11:05 -0700368 'variables': {
369 'deps': [
370 'libchromeos-test-<(libbase_ver)',
371 'libchrome-test-<(libbase_ver)',
Alex Deymod6deb1d2015-08-28 15:54:37 -0700372 'libdebugd-client-test',
373 'libpower_manager-client-test',
374 'libsession_manager-client-test',
375 'libshill-client-test',
Alex Deymo509dd532015-06-10 14:11:05 -0700376 ],
377 },
Alex Deymo7504e5f2014-07-15 17:58:51 -0700378 'dependencies': [
379 'libupdate_engine',
380 'libpayload_generator',
381 ],
Alex Deymoa7a34d82015-08-24 20:47:01 -0700382 'includes': ['../../../platform2/common-mk/common_test.gypi'],
Alex Deymo719bfff2014-07-11 12:12:32 -0700383 'sources': [
384 'action_pipe_unittest.cc',
385 'action_processor_unittest.cc',
386 'action_unittest.cc',
Alex Deymo763e7db2015-08-27 21:08:08 -0700387 'boot_control_chromeos_unittest.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700388 'bzip_extent_writer_unittest.cc',
389 'certificate_checker_unittest.cc',
390 'chrome_browser_proxy_resolver_unittest.cc',
391 'connection_manager_unittest.cc',
Alex Deymob7ca0962014-10-01 17:58:07 -0700392 'dbus_service_unittest.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700393 'delta_performer_unittest.cc',
394 'download_action_unittest.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700395 'extent_writer_unittest.cc',
396 'fake_prefs.cc',
Alex Deymo30534502015-07-20 15:06:33 -0700397 'fake_shill_proxy.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700398 'fake_system_state.cc',
399 'file_writer_unittest.cc',
Allie Woodeb9e6d82015-04-17 13:55:30 -0700400 'filesystem_verifier_action_unittest.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700401 'http_fetcher_unittest.cc',
402 'hwid_override_unittest.cc',
403 'mock_http_fetcher.cc',
404 'omaha_hash_calculator_unittest.cc',
405 'omaha_request_action_unittest.cc',
406 'omaha_request_params_unittest.cc',
407 'omaha_response_handler_action_unittest.cc',
408 'p2p_manager_unittest.cc',
Alex Deymo14158572015-06-13 03:37:08 -0700409 'payload_generator/ab_generator_unittest.cc',
Sen Jiang8cc502d2015-08-10 10:04:54 -0700410 'payload_generator/blob_file_writer_unittest.cc',
Alex Deymof0061352015-07-01 14:59:15 -0700411 'payload_generator/block_mapping_unittest.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700412 'payload_generator/cycle_breaker_unittest.cc',
Alex Deymo14158572015-06-13 03:37:08 -0700413 'payload_generator/delta_diff_utils_unittest.cc',
Alex Deymo2b19cfb2015-03-26 00:35:07 -0700414 'payload_generator/ext2_filesystem_unittest.cc',
Alex Deymo1beda782015-06-07 23:01:25 +0200415 'payload_generator/extent_ranges_unittest.cc',
Alex Deymo5c6c6552015-06-03 19:06:50 +0200416 'payload_generator/extent_utils_unittest.cc',
Alex Deymo2b19cfb2015-03-26 00:35:07 -0700417 'payload_generator/fake_filesystem.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700418 'payload_generator/full_update_generator_unittest.cc',
419 'payload_generator/graph_utils_unittest.cc',
Allie Woodcd514b52015-02-19 13:56:07 -0800420 'payload_generator/inplace_generator_unittest.cc',
Alex Deymo923d8fa2014-07-15 17:58:51 -0700421 'payload_generator/payload_signer_unittest.cc',
Alex Deymo14158572015-06-13 03:37:08 -0700422 'payload_generator/payload_file_unittest.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700423 'payload_generator/tarjan_unittest.cc',
424 'payload_generator/topological_sort_unittest.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700425 'payload_state_unittest.cc',
426 'postinstall_runner_action_unittest.cc',
427 'prefs_unittest.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700428 'subprocess_unittest.cc',
429 'terminator_unittest.cc',
430 'test_utils.cc',
Alex Deymo10875d92014-11-10 21:52:57 -0800431 'test_utils_unittest.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700432 'update_attempter_unittest.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700433 'update_manager/boxed_value_unittest.cc',
434 'update_manager/chromeos_policy_unittest.cc',
435 'update_manager/evaluation_context_unittest.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700436 'update_manager/generic_variables_unittest.cc',
437 'update_manager/prng_unittest.cc',
438 'update_manager/real_config_provider_unittest.cc',
439 'update_manager/real_device_policy_provider_unittest.cc',
440 'update_manager/real_random_provider_unittest.cc',
441 'update_manager/real_shill_provider_unittest.cc',
442 'update_manager/real_system_provider_unittest.cc',
443 'update_manager/real_time_provider_unittest.cc',
444 'update_manager/real_updater_provider_unittest.cc',
445 'update_manager/umtest_utils.cc',
446 'update_manager/update_manager_unittest.cc',
447 'update_manager/variable_unittest.cc',
448 'utils_unittest.cc',
449 'zip_unittest.cc',
450 # Main entry point for runnning tests.
451 'testrunner.cc',
452 ],
453 },
454 ],
455 }],
456 ],
457}