• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#
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#
16{
17  'target_defaults': {
18    'variables': {
19      'deps': [
20        'libbrillo-<(libbase_ver)',
21        'libchrome-<(libbase_ver)',
22      ],
23      # The -DUSE_* flags are passed from platform2.py. We use sane defaults
24      # here when these USE flags are not defined. You can set the default value
25      # for the USE flag in the ebuild.
26      'USE_binder%': '0',
27      'USE_dbus%': '1',
28      'USE_hwid_override%': '0',
29      'USE_libcros%': '1',
30      'USE_mtd%': '0',
31      'USE_power_management%': '0',
32      'USE_buffet%': '0',
33    },
34    'cflags': [
35      '-g',
36      '-ffunction-sections',
37      '-Wall',
38      '-Wextra',
39      '-Werror',
40      '-Wno-unused-parameter',
41    ],
42    'cflags_cc': [
43      '-fno-strict-aliasing',
44      '-Wnon-virtual-dtor',
45    ],
46    'ldflags': [
47      '-Wl,--gc-sections',
48    ],
49    'defines': [
50      '__CHROMEOS__',
51      '_FILE_OFFSET_BITS=64',
52      '_POSIX_C_SOURCE=199309L',
53      'USE_BINDER=<(USE_binder)',
54      'USE_DBUS=<(USE_dbus)',
55      'USE_HWID_OVERRIDE=<(USE_hwid_override)',
56      'USE_LIBCROS=<(USE_libcros)',
57      'USE_MTD=<(USE_mtd)',
58      'USE_OMAHA=1',
59      'USE_SHILL=1',
60      'USE_WEAVE=<(USE_buffet)',
61    ],
62    'include_dirs': [
63      # We need this include dir because we include all the local code as
64      # "update_engine/...".
65      '<(platform2_root)/../aosp/system',
66      '<(platform2_root)/../aosp/system/update_engine/client_library/include',
67    ],
68  },
69  'targets': [
70    # Protobufs.
71    {
72      'target_name': 'update_metadata-protos',
73      'type': 'static_library',
74      'variables': {
75        'proto_in_dir': '.',
76        'proto_out_dir': 'include/update_engine',
77        'exported_deps': [
78          'protobuf-lite',
79        ],
80        'deps': ['<@(exported_deps)'],
81      },
82      'all_dependent_settings': {
83        'variables': {
84          'deps': [
85            '<@(exported_deps)',
86          ],
87        },
88      },
89      'sources': [
90        'update_metadata.proto'
91      ],
92      'includes': ['../../../platform2/common-mk/protoc.gypi'],
93    },
94    # Chrome D-Bus bindings.
95    {
96      'target_name': 'update_engine-dbus-adaptor',
97      'type': 'none',
98      'variables': {
99        'dbus_adaptors_out_dir': 'include/dbus_bindings',
100        'dbus_xml_extension': 'dbus-xml',
101      },
102      'sources': [
103        'dbus_bindings/org.chromium.UpdateEngineInterface.dbus-xml',
104      ],
105      'includes': ['../../../platform2/common-mk/generate-dbus-adaptors.gypi'],
106    },
107    {
108      'target_name': 'update_engine-other-dbus-proxies',
109      'type': 'none',
110      'actions': [
111        {
112          'action_name': 'update_engine-dbus-libcros-client',
113          'variables': {
114            'mock_output_file': 'include/libcros/dbus-proxy-mocks.h',
115            'proxy_output_file': 'include/libcros/dbus-proxies.h'
116          },
117          'sources': [
118            'dbus_bindings/org.chromium.LibCrosService.dbus-xml',
119          ],
120          'includes': ['../../../platform2/common-mk/generate-dbus-proxies.gypi'],
121        },
122      ],
123    },
124    # The payload application component and common dependencies.
125    {
126      'target_name': 'libpayload_consumer',
127      'type': 'static_library',
128      'dependencies': [
129        'update_metadata-protos',
130      ],
131      #TODO(deymo): Remove unused dependencies once we stop including files
132      # from the root directory.
133      'variables': {
134        'exported_deps': [
135          'libcrypto',
136          'libimgpatch',
137          'xz-embedded',
138        ],
139        'deps': ['<@(exported_deps)'],
140      },
141      'all_dependent_settings': {
142        'variables': {
143          'deps': [
144            '<@(exported_deps)',
145          ],
146        },
147      },
148      'link_settings': {
149        'variables': {
150          'deps': [
151            '<@(exported_deps)',
152          ],
153        },
154        'libraries': [
155          '-lbz2',
156          '-lrt',
157        ],
158      },
159      'sources': [
160        'common/action_processor.cc',
161        'common/boot_control_stub.cc',
162        'common/clock.cc',
163        'common/constants.cc',
164        'common/cpu_limiter.cc',
165        'common/error_code_utils.cc',
166        'common/hash_calculator.cc',
167        'common/http_common.cc',
168        'common/http_fetcher.cc',
169        'common/hwid_override.cc',
170        'common/multi_range_http_fetcher.cc',
171        'common/platform_constants_chromeos.cc',
172        'common/prefs.cc',
173        'common/subprocess.cc',
174        'common/terminator.cc',
175        'common/utils.cc',
176        'payload_consumer/bzip_extent_writer.cc',
177        'payload_consumer/delta_performer.cc',
178        'payload_consumer/download_action.cc',
179        'payload_consumer/extent_writer.cc',
180        'payload_consumer/file_descriptor.cc',
181        'payload_consumer/file_writer.cc',
182        'payload_consumer/filesystem_verifier_action.cc',
183        'payload_consumer/install_plan.cc',
184        'payload_consumer/payload_constants.cc',
185        'payload_consumer/payload_verifier.cc',
186        'payload_consumer/postinstall_runner_action.cc',
187        'payload_consumer/xz_extent_writer.cc',
188      ],
189      'conditions': [
190        ['USE_mtd == 1', {
191          'sources': [
192            'payload_consumer/mtd_file_descriptor.cc',
193          ],
194          'link_settings': {
195            'libraries': [
196              '-lmtdutils',
197            ],
198          },
199        }],
200      ],
201    },
202    # The main daemon static_library with all the code used to check for updates
203    # with Omaha and expose a DBus daemon.
204    {
205      'target_name': 'libupdate_engine',
206      'type': 'static_library',
207      'dependencies': [
208        'libpayload_consumer',
209        'update_metadata-protos',
210        'update_engine-dbus-adaptor',
211        'update_engine-other-dbus-proxies',
212      ],
213      'variables': {
214        'exported_deps': [
215          'dbus-1',
216          'expat',
217          'libcurl',
218          'libdebugd-client',
219          'libmetrics-<(libbase_ver)',
220          'libpower_manager-client',
221          'libsession_manager-client',
222          'libshill-client',
223          'libssl',
224          'libupdate_engine-client',
225        ],
226        'deps': ['<@(exported_deps)'],
227      },
228      'all_dependent_settings': {
229        'variables': {
230          'deps': [
231            '<@(exported_deps)',
232          ],
233        },
234      },
235      'link_settings': {
236        'variables': {
237          'deps': [
238            '<@(exported_deps)',
239          ],
240        },
241        'libraries': [
242          '-lbz2',
243          '-lpolicy-<(libbase_ver)',
244          '-lrootdev',
245          '-lrt',
246          '-lvboot_host',
247        ],
248      },
249      'sources': [
250        'boot_control_chromeos.cc',
251        'certificate_checker.cc',
252        'common_service.cc',
253        'connection_manager.cc',
254        'connection_utils.cc',
255        'daemon.cc',
256        'dbus_connection.cc',
257        'dbus_service.cc',
258        'hardware_chromeos.cc',
259        'image_properties_chromeos.cc',
260        'libcros_proxy.cc',
261        'libcurl_http_fetcher.cc',
262        'metrics.cc',
263        'metrics_utils.cc',
264        'omaha_request_action.cc',
265        'omaha_request_params.cc',
266        'omaha_response_handler_action.cc',
267        'omaha_utils.cc',
268        'p2p_manager.cc',
269        'payload_state.cc',
270        'power_manager_chromeos.cc',
271        'proxy_resolver.cc',
272        'real_system_state.cc',
273        'shill_proxy.cc',
274        'update_attempter.cc',
275        'update_manager/boxed_value.cc',
276        'update_manager/chromeos_policy.cc',
277        'update_manager/default_policy.cc',
278        'update_manager/evaluation_context.cc',
279        'update_manager/policy.cc',
280        'update_manager/real_config_provider.cc',
281        'update_manager/real_device_policy_provider.cc',
282        'update_manager/real_random_provider.cc',
283        'update_manager/real_shill_provider.cc',
284        'update_manager/real_system_provider.cc',
285        'update_manager/real_time_provider.cc',
286        'update_manager/real_updater_provider.cc',
287        'update_manager/state_factory.cc',
288        'update_manager/update_manager.cc',
289        'update_status_utils.cc',
290        'weave_service_factory.cc',
291      ],
292      'conditions': [
293        ['USE_buffet == 1', {
294          'sources': [
295            'weave_service.cc',
296          ],
297          'variables': {
298            'exported_deps': [
299              'libweave-<(libbase_ver)',
300            ],
301          },
302        }],
303        ['USE_libcros == 1', {
304          'dependencies': [
305            'update_engine-other-dbus-proxies',
306          ],
307          'sources': [
308            'chrome_browser_proxy_resolver.cc',
309          ],
310        }],
311      ],
312    },
313    # update_engine daemon.
314    {
315      'target_name': 'update_engine',
316      'type': 'executable',
317      'dependencies': [
318        'libupdate_engine',
319      ],
320      'sources': [
321        'main.cc',
322      ],
323    },
324    # update_engine client library.
325    {
326      'target_name': 'libupdate_engine_client',
327      'type': 'static_library',
328      'variables': {
329        'deps': [
330          'dbus-1',
331          'libupdate_engine-client',
332        ],
333      },
334      'sources': [
335        'client_library/client.cc',
336        'client_library/client_dbus.cc',
337        'update_status_utils.cc',
338      ],
339      'include_dirs': [
340        'client_library/include',
341      ],
342    },
343    # update_engine console client.
344    {
345      'target_name': 'update_engine_client',
346      'type': 'executable',
347      'dependencies': [
348        'libupdate_engine_client',
349      ],
350      'sources': [
351        'common/error_code_utils.cc',
352        'omaha_utils.cc',
353        'update_engine_client.cc',
354     ],
355    },
356    # server-side code. This is used for delta_generator and unittests but not
357    # for any client code.
358    {
359      'target_name': 'libpayload_generator',
360      'type': 'static_library',
361      'dependencies': [
362        'libpayload_consumer',
363        'update_metadata-protos',
364      ],
365      'variables': {
366        'exported_deps': [
367          'ext2fs',
368        ],
369        'deps': ['<@(exported_deps)'],
370      },
371      'all_dependent_settings': {
372        'variables': {
373          'deps': [
374            '<@(exported_deps)',
375          ],
376        },
377      },
378      'link_settings': {
379        'variables': {
380          'deps': [
381            '<@(exported_deps)',
382          ],
383        },
384      },
385      'sources': [
386        'payload_generator/ab_generator.cc',
387        'payload_generator/annotated_operation.cc',
388        'payload_generator/blob_file_writer.cc',
389        'payload_generator/block_mapping.cc',
390        'payload_generator/bzip.cc',
391        'payload_generator/cycle_breaker.cc',
392        'payload_generator/delta_diff_generator.cc',
393        'payload_generator/delta_diff_utils.cc',
394        'payload_generator/ext2_filesystem.cc',
395        'payload_generator/extent_ranges.cc',
396        'payload_generator/extent_utils.cc',
397        'payload_generator/full_update_generator.cc',
398        'payload_generator/graph_types.cc',
399        'payload_generator/graph_utils.cc',
400        'payload_generator/inplace_generator.cc',
401        'payload_generator/mapfile_filesystem.cc',
402        'payload_generator/payload_file.cc',
403        'payload_generator/payload_generation_config.cc',
404        'payload_generator/payload_signer.cc',
405        'payload_generator/raw_filesystem.cc',
406        'payload_generator/tarjan.cc',
407        'payload_generator/topological_sort.cc',
408        'payload_generator/xz_chromeos.cc',
409      ],
410    },
411    # server-side delta generator.
412    {
413      'target_name': 'delta_generator',
414      'type': 'executable',
415      'dependencies': [
416        'libpayload_consumer',
417        'libpayload_generator',
418      ],
419      'link_settings': {
420        'ldflags!': [
421          '-pie',
422        ],
423      },
424      'sources': [
425        'payload_generator/generate_delta_main.cc',
426      ],
427    },
428  ],
429  'conditions': [
430    ['USE_test == 1', {
431      'targets': [
432        # Public keys used for unit testing.
433        {
434          'target_name': 'update_engine-testkeys',
435          'type': 'none',
436          'variables': {
437            'openssl_pem_in_dir': '.',
438            'openssl_pem_out_dir': 'include/update_engine',
439          },
440          'sources': [
441            'unittest_key.pem',
442            'unittest_key2.pem',
443          ],
444          'includes': ['../../../platform2/common-mk/openssl_pem.gypi'],
445        },
446        # Unpacks sample images used for testing.
447        {
448          'target_name': 'update_engine-test_images',
449          'type': 'none',
450          'variables': {
451            'image_out_dir': '.',
452          },
453          'sources': [
454            'sample_images/sample_images.tar.bz2',
455          ],
456          'includes': ['tar_bunzip2.gypi'],
457        },
458        # Test HTTP Server.
459        {
460          'target_name': 'test_http_server',
461          'type': 'executable',
462          'sources': [
463            'common/http_common.cc',
464            'test_http_server.cc',
465          ],
466        },
467        # Test subprocess helper.
468        {
469          'target_name': 'test_subprocess',
470          'type': 'executable',
471          'sources': [
472            'test_subprocess.cc',
473          ],
474        },
475        # Main unittest file.
476        {
477          'target_name': 'update_engine_unittests',
478          'type': 'executable',
479          'includes': ['../../../platform2/common-mk/common_test.gypi'],
480          'variables': {
481            'deps': [
482              'libbrillo-test-<(libbase_ver)',
483              'libchrome-test-<(libbase_ver)',
484              'libdebugd-client-test',
485              'libpower_manager-client-test',
486              'libsession_manager-client-test',
487              'libshill-client-test',
488            ],
489          },
490          'dependencies': [
491            'libupdate_engine',
492            'libpayload_generator',
493          ],
494          'includes': ['../../../platform2/common-mk/common_test.gypi'],
495          'sources': [
496            'boot_control_chromeos_unittest.cc',
497            'certificate_checker_unittest.cc',
498            'common/action_pipe_unittest.cc',
499            'common/action_processor_unittest.cc',
500            'common/action_unittest.cc',
501            'common/cpu_limiter_unittest.cc',
502            'common/fake_prefs.cc',
503            'common/file_fetcher.cc',  # Only required for tests.
504            'common/hash_calculator_unittest.cc',
505            'common/http_fetcher_unittest.cc',
506            'common/hwid_override_unittest.cc',
507            'common/mock_http_fetcher.cc',
508            'common/prefs_unittest.cc',
509            'common/subprocess_unittest.cc',
510            'common/terminator_unittest.cc',
511            'common/test_utils.cc',
512            'common/utils_unittest.cc',
513            'common_service_unittest.cc',
514            'connection_manager_unittest.cc',
515            'fake_shill_proxy.cc',
516            'fake_system_state.cc',
517            'hardware_chromeos_unittest.cc',
518            'image_properties_chromeos_unittest.cc',
519            'metrics_utils_unittest.cc',
520            'omaha_request_action_unittest.cc',
521            'omaha_request_params_unittest.cc',
522            'omaha_response_handler_action_unittest.cc',
523            'omaha_utils_unittest.cc',
524            'p2p_manager_unittest.cc',
525            'payload_consumer/bzip_extent_writer_unittest.cc',
526            'payload_consumer/delta_performer_integration_test.cc',
527            'payload_consumer/delta_performer_unittest.cc',
528            'payload_consumer/download_action_unittest.cc',
529            'payload_consumer/extent_writer_unittest.cc',
530            'payload_consumer/file_writer_unittest.cc',
531            'payload_consumer/filesystem_verifier_action_unittest.cc',
532            'payload_consumer/postinstall_runner_action_unittest.cc',
533            'payload_consumer/xz_extent_writer_unittest.cc',
534            'payload_generator/ab_generator_unittest.cc',
535            'payload_generator/blob_file_writer_unittest.cc',
536            'payload_generator/block_mapping_unittest.cc',
537            'payload_generator/cycle_breaker_unittest.cc',
538            'payload_generator/delta_diff_utils_unittest.cc',
539            'payload_generator/ext2_filesystem_unittest.cc',
540            'payload_generator/extent_ranges_unittest.cc',
541            'payload_generator/extent_utils_unittest.cc',
542            'payload_generator/fake_filesystem.cc',
543            'payload_generator/full_update_generator_unittest.cc',
544            'payload_generator/graph_utils_unittest.cc',
545            'payload_generator/inplace_generator_unittest.cc',
546            'payload_generator/mapfile_filesystem_unittest.cc',
547            'payload_generator/payload_file_unittest.cc',
548            'payload_generator/payload_generation_config_unittest.cc',
549            'payload_generator/payload_signer_unittest.cc',
550            'payload_generator/tarjan_unittest.cc',
551            'payload_generator/topological_sort_unittest.cc',
552            'payload_generator/zip_unittest.cc',
553            'payload_state_unittest.cc',
554            'proxy_resolver_unittest.cc',
555            'update_attempter_unittest.cc',
556            'update_manager/boxed_value_unittest.cc',
557            'update_manager/chromeos_policy_unittest.cc',
558            'update_manager/evaluation_context_unittest.cc',
559            'update_manager/generic_variables_unittest.cc',
560            'update_manager/prng_unittest.cc',
561            'update_manager/real_device_policy_provider_unittest.cc',
562            'update_manager/real_random_provider_unittest.cc',
563            'update_manager/real_shill_provider_unittest.cc',
564            'update_manager/real_system_provider_unittest.cc',
565            'update_manager/real_time_provider_unittest.cc',
566            'update_manager/real_updater_provider_unittest.cc',
567            'update_manager/umtest_utils.cc',
568            'update_manager/update_manager_unittest.cc',
569            'update_manager/variable_unittest.cc',
570            # Main entry point for runnning tests.
571            'testrunner.cc',
572          ],
573          'conditions': [
574            ['USE_libcros == 1', {
575              'sources': [
576                'chrome_browser_proxy_resolver_unittest.cc',
577              ],
578            }],
579          ],
580        },
581      ],
582    }],
583  ],
584}
585