blob: e2a8de0bf588c0468b75aff3565ed325185a982a [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 Deymo719bfff2014-07-11 12:12:32 -0700192 'postinstall_runner_action.cc',
193 'prefs.cc',
194 'proxy_resolver.cc',
195 'real_system_state.cc',
Alex Deymo30534502015-07-20 15:06:33 -0700196 'shill_proxy.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700197 'subprocess.cc',
198 'terminator.cc',
199 'update_attempter.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700200 'update_manager/boxed_value.cc',
201 'update_manager/chromeos_policy.cc',
Gilad Arnolda23e4082014-07-17 11:40:43 -0700202 'update_manager/default_policy.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700203 'update_manager/evaluation_context.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700204 'update_manager/policy.cc',
205 'update_manager/real_config_provider.cc',
206 'update_manager/real_device_policy_provider.cc',
207 'update_manager/real_random_provider.cc',
208 'update_manager/real_shill_provider.cc',
209 'update_manager/real_system_provider.cc',
210 'update_manager/real_time_provider.cc',
211 'update_manager/real_updater_provider.cc',
212 'update_manager/state_factory.cc',
213 'update_manager/update_manager.cc',
214 'utils.cc',
215 ],
Nam T. Nguyenf1d582e2014-12-08 15:07:17 -0800216 'conditions': [
217 ['USE_mtd == 1', {
218 'sources': [
219 'mtd_file_descriptor.cc',
220 ],
221 'link_settings': {
222 'libraries': [
223 '-lmtdutils',
224 ],
225 },
226 }],
227 ],
Alex Deymo719bfff2014-07-11 12:12:32 -0700228 },
229 # update_engine daemon.
230 {
231 'target_name': 'update_engine',
232 'type': 'executable',
Alex Deymo44666f92014-07-22 20:29:24 -0700233 'dependencies': [
234 'libupdate_engine',
Alex Deymo44666f92014-07-22 20:29:24 -0700235 ],
Alex Deymo719bfff2014-07-11 12:12:32 -0700236 'sources': [
237 'main.cc',
238 ]
239 },
240 # update_engine console client.
241 {
242 'target_name': 'update_engine_client',
243 'type': 'executable',
Alex Deymo44666f92014-07-22 20:29:24 -0700244 'variables': {
245 'exported_deps': [
Alex Deymod6deb1d2015-08-28 15:54:37 -0700246 'libupdate_engine-client',
Alex Deymo44666f92014-07-22 20:29:24 -0700247 ],
248 'deps': ['<@(exported_deps)'],
249 },
Alex Deymo719bfff2014-07-11 12:12:32 -0700250 'sources': [
251 'update_engine_client.cc',
Alex Deymo72aa0022015-06-19 21:16:49 -0700252 ],
Alex Deymod2956cc2015-08-17 15:39:40 -0700253 },
Alex Deymo7504e5f2014-07-15 17:58:51 -0700254 # server-side code. This is used for delta_generator and unittests but not
255 # for any client code.
256 {
257 'target_name': 'libpayload_generator',
258 'type': 'static_library',
259 'dependencies': [
Alex Deymod6deb1d2015-08-28 15:54:37 -0700260 'libupdate_engine',
Alex Deymo7504e5f2014-07-15 17:58:51 -0700261 'update_metadata-protos',
262 ],
Alex Deymo5d527802014-07-18 14:24:13 -0700263 'variables': {
264 'exported_deps': [
265 'ext2fs',
266 ],
267 'deps': ['<@(exported_deps)'],
268 },
269 'all_dependent_settings': {
270 'variables': {
271 'deps': [
272 '<@(exported_deps)',
273 ],
274 },
275 },
276 'link_settings': {
277 'variables': {
278 'deps': [
279 '<@(exported_deps)',
280 ],
281 },
282 },
Alex Deymo7504e5f2014-07-15 17:58:51 -0700283 'sources': [
Alex Deymo14158572015-06-13 03:37:08 -0700284 'payload_generator/ab_generator.cc',
Alex Deymo477aec22015-03-24 23:40:48 -0700285 'payload_generator/annotated_operation.cc',
Sen Jiang8cc502d2015-08-10 10:04:54 -0700286 'payload_generator/blob_file_writer.cc',
Alex Deymof0061352015-07-01 14:59:15 -0700287 'payload_generator/block_mapping.cc',
Alex Deymo7504e5f2014-07-15 17:58:51 -0700288 'payload_generator/cycle_breaker.cc',
289 'payload_generator/delta_diff_generator.cc',
Alex Deymo14158572015-06-13 03:37:08 -0700290 'payload_generator/delta_diff_utils.cc',
Alex Deymo2b19cfb2015-03-26 00:35:07 -0700291 'payload_generator/ext2_filesystem.cc',
Alex Deymo1beda782015-06-07 23:01:25 +0200292 'payload_generator/extent_ranges.cc',
Alex Deymo5c6c6552015-06-03 19:06:50 +0200293 'payload_generator/extent_utils.cc',
Alex Deymo7504e5f2014-07-15 17:58:51 -0700294 'payload_generator/full_update_generator.cc',
Alex Deymo9b244df2015-03-11 21:51:18 -0700295 'payload_generator/graph_types.cc',
Alex Deymo7504e5f2014-07-15 17:58:51 -0700296 'payload_generator/graph_utils.cc',
Allie Woodcd514b52015-02-19 13:56:07 -0800297 'payload_generator/inplace_generator.cc',
Alex Deymo14158572015-06-13 03:37:08 -0700298 'payload_generator/payload_file.cc',
Alex Deymof1cbe172015-03-05 15:58:37 -0800299 'payload_generator/payload_generation_config.cc',
Alex Deymo7504e5f2014-07-15 17:58:51 -0700300 'payload_generator/payload_signer.cc',
Alex Deymo2b19cfb2015-03-26 00:35:07 -0700301 'payload_generator/raw_filesystem.cc',
Alex Deymo7504e5f2014-07-15 17:58:51 -0700302 'payload_generator/tarjan.cc',
303 'payload_generator/topological_sort.cc',
304 ],
305 },
Alex Deymo719bfff2014-07-11 12:12:32 -0700306 # server-side delta generator.
307 {
308 'target_name': 'delta_generator',
309 'type': 'executable',
Alex Deymo7504e5f2014-07-15 17:58:51 -0700310 'dependencies': [
311 'libupdate_engine',
312 'libpayload_generator',
313 ],
Alex Deymo719bfff2014-07-11 12:12:32 -0700314 'link_settings': {
315 'ldflags!': [
316 '-pie',
317 ],
318 },
319 'sources': [
320 'payload_generator/generate_delta_main.cc',
321 ]
322 },
323 ],
324 'conditions': [
325 ['USE_test == 1', {
326 'targets': [
327 # Public keys used for unit testing.
328 {
329 'target_name': 'update_engine-testkeys',
330 'type': 'none',
331 'variables': {
332 'openssl_pem_in_dir': '.',
333 'openssl_pem_out_dir': 'include/update_engine',
334 },
335 'sources': [
336 'unittest_key.pem',
337 'unittest_key2.pem',
338 ],
Alex Deymoa7a34d82015-08-24 20:47:01 -0700339 'includes': ['../../../platform2/common-mk/openssl_pem.gypi'],
Alex Deymo719bfff2014-07-11 12:12:32 -0700340 },
Alex Deymo04ef2072015-08-13 08:19:16 -0700341 # Unpacks sample images used for testing.
Alex Deymo2b19cfb2015-03-26 00:35:07 -0700342 {
343 'target_name': 'update_engine-test_images',
344 'type': 'none',
345 'variables': {
346 'image_out_dir': '.',
347 },
348 'sources': [
Alex Deymo04ef2072015-08-13 08:19:16 -0700349 'sample_images/sample_images.tar.bz2',
Alex Deymo2b19cfb2015-03-26 00:35:07 -0700350 ],
Alex Deymo04ef2072015-08-13 08:19:16 -0700351 'includes': ['tar_bunzip2.gypi'],
Alex Deymo2b19cfb2015-03-26 00:35:07 -0700352 },
Alex Deymo719bfff2014-07-11 12:12:32 -0700353 # Test HTTP Server.
354 {
355 'target_name': 'test_http_server',
356 'type': 'executable',
357 'dependencies': ['libupdate_engine'],
358 'sources': [
359 'test_http_server.cc',
360 ]
361 },
362 # Main unittest file.
363 {
364 'target_name': 'update_engine_unittests',
365 'type': 'executable',
Alex Deymoa7a34d82015-08-24 20:47:01 -0700366 'includes': ['../../../platform2/common-mk/common_test.gypi'],
Alex Deymo509dd532015-06-10 14:11:05 -0700367 'variables': {
368 'deps': [
369 'libchromeos-test-<(libbase_ver)',
370 'libchrome-test-<(libbase_ver)',
Alex Deymod6deb1d2015-08-28 15:54:37 -0700371 'libdebugd-client-test',
372 'libpower_manager-client-test',
373 'libsession_manager-client-test',
374 'libshill-client-test',
Alex Deymo509dd532015-06-10 14:11:05 -0700375 ],
376 },
Alex Deymo7504e5f2014-07-15 17:58:51 -0700377 'dependencies': [
378 'libupdate_engine',
379 'libpayload_generator',
380 ],
Alex Deymoa7a34d82015-08-24 20:47:01 -0700381 'includes': ['../../../platform2/common-mk/common_test.gypi'],
Alex Deymo719bfff2014-07-11 12:12:32 -0700382 'sources': [
383 'action_pipe_unittest.cc',
384 'action_processor_unittest.cc',
385 'action_unittest.cc',
Alex Deymo763e7db2015-08-27 21:08:08 -0700386 'boot_control_chromeos_unittest.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700387 'bzip_extent_writer_unittest.cc',
388 'certificate_checker_unittest.cc',
389 'chrome_browser_proxy_resolver_unittest.cc',
390 'connection_manager_unittest.cc',
Alex Deymob7ca0962014-10-01 17:58:07 -0700391 'dbus_service_unittest.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700392 'delta_performer_unittest.cc',
393 'download_action_unittest.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700394 'extent_writer_unittest.cc',
395 'fake_prefs.cc',
Alex Deymo30534502015-07-20 15:06:33 -0700396 'fake_shill_proxy.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700397 'fake_system_state.cc',
398 'file_writer_unittest.cc',
Allie Woodeb9e6d82015-04-17 13:55:30 -0700399 'filesystem_verifier_action_unittest.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700400 'http_fetcher_unittest.cc',
401 'hwid_override_unittest.cc',
402 'mock_http_fetcher.cc',
403 'omaha_hash_calculator_unittest.cc',
404 'omaha_request_action_unittest.cc',
405 'omaha_request_params_unittest.cc',
406 'omaha_response_handler_action_unittest.cc',
407 'p2p_manager_unittest.cc',
Alex Deymo14158572015-06-13 03:37:08 -0700408 'payload_generator/ab_generator_unittest.cc',
Sen Jiang8cc502d2015-08-10 10:04:54 -0700409 'payload_generator/blob_file_writer_unittest.cc',
Alex Deymof0061352015-07-01 14:59:15 -0700410 'payload_generator/block_mapping_unittest.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700411 'payload_generator/cycle_breaker_unittest.cc',
Alex Deymo14158572015-06-13 03:37:08 -0700412 'payload_generator/delta_diff_utils_unittest.cc',
Alex Deymo2b19cfb2015-03-26 00:35:07 -0700413 'payload_generator/ext2_filesystem_unittest.cc',
Alex Deymo1beda782015-06-07 23:01:25 +0200414 'payload_generator/extent_ranges_unittest.cc',
Alex Deymo5c6c6552015-06-03 19:06:50 +0200415 'payload_generator/extent_utils_unittest.cc',
Alex Deymo2b19cfb2015-03-26 00:35:07 -0700416 'payload_generator/fake_filesystem.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700417 'payload_generator/full_update_generator_unittest.cc',
418 'payload_generator/graph_utils_unittest.cc',
Allie Woodcd514b52015-02-19 13:56:07 -0800419 'payload_generator/inplace_generator_unittest.cc',
Alex Deymo923d8fa2014-07-15 17:58:51 -0700420 'payload_generator/payload_signer_unittest.cc',
Alex Deymo14158572015-06-13 03:37:08 -0700421 'payload_generator/payload_file_unittest.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700422 'payload_generator/tarjan_unittest.cc',
423 'payload_generator/topological_sort_unittest.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700424 'payload_state_unittest.cc',
425 'postinstall_runner_action_unittest.cc',
426 'prefs_unittest.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700427 'subprocess_unittest.cc',
428 'terminator_unittest.cc',
429 'test_utils.cc',
Alex Deymo10875d92014-11-10 21:52:57 -0800430 'test_utils_unittest.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700431 'update_attempter_unittest.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700432 'update_manager/boxed_value_unittest.cc',
433 'update_manager/chromeos_policy_unittest.cc',
434 'update_manager/evaluation_context_unittest.cc',
Alex Deymo719bfff2014-07-11 12:12:32 -0700435 'update_manager/generic_variables_unittest.cc',
436 'update_manager/prng_unittest.cc',
437 'update_manager/real_config_provider_unittest.cc',
438 'update_manager/real_device_policy_provider_unittest.cc',
439 'update_manager/real_random_provider_unittest.cc',
440 'update_manager/real_shill_provider_unittest.cc',
441 'update_manager/real_system_provider_unittest.cc',
442 'update_manager/real_time_provider_unittest.cc',
443 'update_manager/real_updater_provider_unittest.cc',
444 'update_manager/umtest_utils.cc',
445 'update_manager/update_manager_unittest.cc',
446 'update_manager/variable_unittest.cc',
447 'utils_unittest.cc',
448 'zip_unittest.cc',
449 # Main entry point for runnning tests.
450 'testrunner.cc',
451 ],
452 },
453 ],
454 }],
455 ],
456}