Home | History | Annotate | Download | only in update_engine
      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