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_POWER_MANAGEMENT=<(USE_power_management)',
     59       'USE_WEAVE=<(USE_buffet)',
     60     ],
     61     'include_dirs': [
     62       # We need this include dir because we include all the local code as
     63       # "update_engine/...".
     64       '<(platform2_root)/../aosp/system',
     65       '<(platform2_root)/../aosp/system/update_engine/client_library/include',
     66     ],
     67   },
     68   'targets': [
     69     # Protobufs.
     70     {
     71       'target_name': 'update_metadata-protos',
     72       'type': 'static_library',
     73       'variables': {
     74         'proto_in_dir': '.',
     75         'proto_out_dir': 'include/update_engine',
     76         'exported_deps': [
     77           'protobuf-lite',
     78         ],
     79         'deps': ['<@(exported_deps)'],
     80       },
     81       'all_dependent_settings': {
     82         'variables': {
     83           'deps': [
     84             '<@(exported_deps)',
     85           ],
     86         },
     87       },
     88       'sources': [
     89         'update_metadata.proto'
     90       ],
     91       'includes': ['../../../platform2/common-mk/protoc.gypi'],
     92     },
     93     # Chrome D-Bus bindings.
     94     {
     95       'target_name': 'update_engine-dbus-adaptor',
     96       'type': 'none',
     97       'variables': {
     98         'dbus_adaptors_out_dir': 'include/dbus_bindings',
     99         'dbus_xml_extension': 'dbus-xml',
    100       },
    101       'sources': [
    102         'dbus_bindings/org.chromium.UpdateEngineInterface.dbus-xml',
    103       ],
    104       'includes': ['../../../platform2/common-mk/generate-dbus-adaptors.gypi'],
    105     },
    106     {
    107       'target_name': 'update_engine-other-dbus-proxies',
    108       'type': 'none',
    109       'actions': [
    110         {
    111           'action_name': 'update_engine-dbus-libcros-client',
    112           'variables': {
    113             'mock_output_file': 'include/libcros/dbus-proxy-mocks.h',
    114             'proxy_output_file': 'include/libcros/dbus-proxies.h'
    115           },
    116           'sources': [
    117             'dbus_bindings/org.chromium.LibCrosService.dbus-xml',
    118           ],
    119           'includes': ['../../../platform2/common-mk/generate-dbus-proxies.gypi'],
    120         },
    121       ],
    122     },
    123     # The payload application component and common dependencies.
    124     {
    125       'target_name': 'libpayload_consumer',
    126       'type': 'static_library',
    127       'dependencies': [
    128         'update_metadata-protos',
    129       ],
    130       #TODO(deymo): Remove unused dependencies once we stop including files
    131       # from the root directory.
    132       'variables': {
    133         'exported_deps': [
    134           'libcrypto',
    135           'libcurl',
    136           'libssl',
    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/certificate_checker.cc',
    163         'common/clock.cc',
    164         'common/constants.cc',
    165         'common/cpu_limiter.cc',
    166         'common/error_code_utils.cc',
    167         'common/hash_calculator.cc',
    168         'common/http_common.cc',
    169         'common/http_fetcher.cc',
    170         'common/hwid_override.cc',
    171         'common/libcurl_http_fetcher.cc',
    172         'common/multi_range_http_fetcher.cc',
    173         'common/platform_constants_chromeos.cc',
    174         'common/prefs.cc',
    175         'common/subprocess.cc',
    176         'common/terminator.cc',
    177         'common/utils.cc',
    178         'payload_consumer/bzip_extent_writer.cc',
    179         'payload_consumer/delta_performer.cc',
    180         'payload_consumer/download_action.cc',
    181         'payload_consumer/extent_writer.cc',
    182         'payload_consumer/file_descriptor.cc',
    183         'payload_consumer/file_writer.cc',
    184         'payload_consumer/filesystem_verifier_action.cc',
    185         'payload_consumer/install_plan.cc',
    186         'payload_consumer/payload_constants.cc',
    187         'payload_consumer/payload_verifier.cc',
    188         'payload_consumer/postinstall_runner_action.cc',
    189         'payload_consumer/xz_extent_writer.cc',
    190       ],
    191       'conditions': [
    192         ['USE_mtd == 1', {
    193           'sources': [
    194             'payload_consumer/mtd_file_descriptor.cc',
    195           ],
    196           'link_settings': {
    197             'libraries': [
    198               '-lmtdutils',
    199             ],
    200           },
    201         }],
    202       ],
    203     },
    204     # The main daemon static_library with all the code used to check for updates
    205     # with Omaha and expose a DBus daemon.
    206     {
    207       'target_name': 'libupdate_engine',
    208       'type': 'static_library',
    209       'dependencies': [
    210         'libpayload_consumer',
    211         'update_metadata-protos',
    212         'update_engine-dbus-adaptor',
    213         'update_engine-other-dbus-proxies',
    214       ],
    215       'variables': {
    216         'exported_deps': [
    217           'dbus-1',
    218           'libdebugd-client',
    219           'libsession_manager-client',
    220           'libmetrics-<(libbase_ver)',
    221           'libpower_manager-client',
    222           'libupdate_engine-client',
    223           'libshill-client',
    224           'expat',
    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         'common_service.cc',
    252         'connection_manager.cc',
    253         'daemon.cc',
    254         'dbus_service.cc',
    255         'hardware_chromeos.cc',
    256         'image_properties_chromeos.cc',
    257         'libcros_proxy.cc',
    258         'metrics.cc',
    259         'metrics_utils.cc',
    260         'omaha_request_action.cc',
    261         'omaha_request_params.cc',
    262         'omaha_response_handler_action.cc',
    263         'p2p_manager.cc',
    264         'payload_state.cc',
    265         'proxy_resolver.cc',
    266         'real_system_state.cc',
    267         'shill_proxy.cc',
    268         'update_attempter.cc',
    269         'update_manager/boxed_value.cc',
    270         'update_manager/chromeos_policy.cc',
    271         'update_manager/default_policy.cc',
    272         'update_manager/evaluation_context.cc',
    273         'update_manager/policy.cc',
    274         'update_manager/real_config_provider.cc',
    275         'update_manager/real_device_policy_provider.cc',
    276         'update_manager/real_random_provider.cc',
    277         'update_manager/real_shill_provider.cc',
    278         'update_manager/real_system_provider.cc',
    279         'update_manager/real_time_provider.cc',
    280         'update_manager/real_updater_provider.cc',
    281         'update_manager/state_factory.cc',
    282         'update_manager/update_manager.cc',
    283         'update_status_utils.cc',
    284         'weave_service_factory.cc',
    285       ],
    286       'conditions': [
    287         ['USE_buffet == 1', {
    288           'sources': [
    289             'weave_service.cc',
    290           ],
    291           'variables': {
    292             'exported_deps': [
    293               'libweave-<(libbase_ver)',
    294             ],
    295           },
    296         }],
    297         ['USE_libcros == 1', {
    298           'dependencies': [
    299             'update_engine-other-dbus-proxies',
    300           ],
    301           'sources': [
    302             'chrome_browser_proxy_resolver.cc',
    303           ],
    304         }],
    305       ],
    306     },
    307     # update_engine daemon.
    308     {
    309       'target_name': 'update_engine',
    310       'type': 'executable',
    311       'dependencies': [
    312         'libupdate_engine',
    313       ],
    314       'sources': [
    315         'main.cc',
    316       ],
    317     },
    318     # update_engine client library.
    319     {
    320       'target_name': 'libupdate_engine_client',
    321       'type': 'static_library',
    322       'variables': {
    323         'deps': [
    324           'dbus-1',
    325           'libupdate_engine-client',
    326         ],
    327       },
    328       'sources': [
    329         'client_library/client.cc',
    330         'client_library/client_dbus.cc',
    331         'update_status_utils.cc',
    332       ],
    333       'include_dirs': [
    334         'client_library/include',
    335       ],
    336     },
    337     # update_engine console client.
    338     {
    339       'target_name': 'update_engine_client',
    340       'type': 'executable',
    341       'dependencies': [
    342         'libupdate_engine_client',
    343       ],
    344       'sources': [
    345         'common/error_code_utils.cc',
    346         'update_engine_client.cc',
    347      ],
    348     },
    349     # server-side code. This is used for delta_generator and unittests but not
    350     # for any client code.
    351     {
    352       'target_name': 'libpayload_generator',
    353       'type': 'static_library',
    354       'dependencies': [
    355         'libpayload_consumer',
    356         'update_metadata-protos',
    357       ],
    358       'variables': {
    359         'exported_deps': [
    360           'ext2fs',
    361         ],
    362         'deps': ['<@(exported_deps)'],
    363       },
    364       'all_dependent_settings': {
    365         'variables': {
    366           'deps': [
    367             '<@(exported_deps)',
    368           ],
    369         },
    370       },
    371       'link_settings': {
    372         'variables': {
    373           'deps': [
    374             '<@(exported_deps)',
    375           ],
    376         },
    377       },
    378       'sources': [
    379         'payload_generator/ab_generator.cc',
    380         'payload_generator/annotated_operation.cc',
    381         'payload_generator/blob_file_writer.cc',
    382         'payload_generator/block_mapping.cc',
    383         'payload_generator/bzip.cc',
    384         'payload_generator/cycle_breaker.cc',
    385         'payload_generator/delta_diff_generator.cc',
    386         'payload_generator/delta_diff_utils.cc',
    387         'payload_generator/ext2_filesystem.cc',
    388         'payload_generator/extent_ranges.cc',
    389         'payload_generator/extent_utils.cc',
    390         'payload_generator/full_update_generator.cc',
    391         'payload_generator/graph_types.cc',
    392         'payload_generator/graph_utils.cc',
    393         'payload_generator/inplace_generator.cc',
    394         'payload_generator/payload_file.cc',
    395         'payload_generator/payload_generation_config.cc',
    396         'payload_generator/payload_signer.cc',
    397         'payload_generator/raw_filesystem.cc',
    398         'payload_generator/tarjan.cc',
    399         'payload_generator/topological_sort.cc',
    400         'payload_generator/xz_chromeos.cc',
    401       ],
    402     },
    403     # server-side delta generator.
    404     {
    405       'target_name': 'delta_generator',
    406       'type': 'executable',
    407       'dependencies': [
    408         'libpayload_consumer',
    409         'libpayload_generator',
    410       ],
    411       'link_settings': {
    412         'ldflags!': [
    413           '-pie',
    414         ],
    415       },
    416       'sources': [
    417         'payload_generator/generate_delta_main.cc',
    418       ],
    419     },
    420   ],
    421   'conditions': [
    422     ['USE_test == 1', {
    423       'targets': [
    424         # Public keys used for unit testing.
    425         {
    426           'target_name': 'update_engine-testkeys',
    427           'type': 'none',
    428           'variables': {
    429             'openssl_pem_in_dir': '.',
    430             'openssl_pem_out_dir': 'include/update_engine',
    431           },
    432           'sources': [
    433             'unittest_key.pem',
    434             'unittest_key2.pem',
    435           ],
    436           'includes': ['../../../platform2/common-mk/openssl_pem.gypi'],
    437         },
    438         # Unpacks sample images used for testing.
    439         {
    440           'target_name': 'update_engine-test_images',
    441           'type': 'none',
    442           'variables': {
    443             'image_out_dir': '.',
    444           },
    445           'sources': [
    446             'sample_images/sample_images.tar.bz2',
    447           ],
    448           'includes': ['tar_bunzip2.gypi'],
    449         },
    450         # Test HTTP Server.
    451         {
    452           'target_name': 'test_http_server',
    453           'type': 'executable',
    454           'sources': [
    455             'common/http_common.cc',
    456             'test_http_server.cc',
    457           ],
    458         },
    459         # Main unittest file.
    460         {
    461           'target_name': 'update_engine_unittests',
    462           'type': 'executable',
    463           'includes': ['../../../platform2/common-mk/common_test.gypi'],
    464           'variables': {
    465             'deps': [
    466               'libbrillo-test-<(libbase_ver)',
    467               'libchrome-test-<(libbase_ver)',
    468               'libdebugd-client-test',
    469               'libpower_manager-client-test',
    470               'libsession_manager-client-test',
    471               'libshill-client-test',
    472             ],
    473           },
    474           'dependencies': [
    475             'libupdate_engine',
    476             'libpayload_generator',
    477           ],
    478           'includes': ['../../../platform2/common-mk/common_test.gypi'],
    479           'sources': [
    480             'boot_control_chromeos_unittest.cc',
    481             'common/action_pipe_unittest.cc',
    482             'common/action_processor_unittest.cc',
    483             'common/action_unittest.cc',
    484             'common/certificate_checker_unittest.cc',
    485             'common/cpu_limiter_unittest.cc',
    486             'common/fake_prefs.cc',
    487             'common/file_fetcher.cc',  # Only required for tests.
    488             'common/hash_calculator_unittest.cc',
    489             'common/http_fetcher_unittest.cc',
    490             'common/hwid_override_unittest.cc',
    491             'common/mock_http_fetcher.cc',
    492             'common/prefs_unittest.cc',
    493             'common/subprocess_unittest.cc',
    494             'common/terminator_unittest.cc',
    495             'common/test_utils.cc',
    496             'common/utils_unittest.cc',
    497             'common_service_unittest.cc',
    498             'connection_manager_unittest.cc',
    499             'fake_shill_proxy.cc',
    500             'fake_system_state.cc',
    501             'metrics_utils_unittest.cc',
    502             'omaha_request_action_unittest.cc',
    503             'omaha_request_params_unittest.cc',
    504             'omaha_response_handler_action_unittest.cc',
    505             'p2p_manager_unittest.cc',
    506             'payload_consumer/bzip_extent_writer_unittest.cc',
    507             'payload_consumer/delta_performer_integration_test.cc',
    508             'payload_consumer/delta_performer_unittest.cc',
    509             'payload_consumer/download_action_unittest.cc',
    510             'payload_consumer/extent_writer_unittest.cc',
    511             'payload_consumer/file_writer_unittest.cc',
    512             'payload_consumer/filesystem_verifier_action_unittest.cc',
    513             'payload_consumer/postinstall_runner_action_unittest.cc',
    514             'payload_consumer/xz_extent_writer_unittest.cc',
    515             'payload_generator/ab_generator_unittest.cc',
    516             'payload_generator/blob_file_writer_unittest.cc',
    517             'payload_generator/block_mapping_unittest.cc',
    518             'payload_generator/cycle_breaker_unittest.cc',
    519             'payload_generator/delta_diff_utils_unittest.cc',
    520             'payload_generator/ext2_filesystem_unittest.cc',
    521             'payload_generator/extent_ranges_unittest.cc',
    522             'payload_generator/extent_utils_unittest.cc',
    523             'payload_generator/fake_filesystem.cc',
    524             'payload_generator/full_update_generator_unittest.cc',
    525             'payload_generator/graph_utils_unittest.cc',
    526             'payload_generator/inplace_generator_unittest.cc',
    527             'payload_generator/payload_file_unittest.cc',
    528             'payload_generator/payload_generation_config_unittest.cc',
    529             'payload_generator/payload_signer_unittest.cc',
    530             'payload_generator/tarjan_unittest.cc',
    531             'payload_generator/topological_sort_unittest.cc',
    532             'payload_generator/zip_unittest.cc',
    533             'payload_state_unittest.cc',
    534             'update_attempter_unittest.cc',
    535             'update_manager/boxed_value_unittest.cc',
    536             'update_manager/chromeos_policy_unittest.cc',
    537             'update_manager/evaluation_context_unittest.cc',
    538             'update_manager/generic_variables_unittest.cc',
    539             'update_manager/prng_unittest.cc',
    540             'update_manager/real_config_provider_unittest.cc',
    541             'update_manager/real_device_policy_provider_unittest.cc',
    542             'update_manager/real_random_provider_unittest.cc',
    543             'update_manager/real_shill_provider_unittest.cc',
    544             'update_manager/real_system_provider_unittest.cc',
    545             'update_manager/real_time_provider_unittest.cc',
    546             'update_manager/real_updater_provider_unittest.cc',
    547             'update_manager/umtest_utils.cc',
    548             'update_manager/update_manager_unittest.cc',
    549             'update_manager/variable_unittest.cc',
    550             # Main entry point for runnning tests.
    551             'testrunner.cc',
    552           ],
    553           'conditions': [
    554             ['USE_libcros == 1', {
    555               'sources': [
    556                 'chrome_browser_proxy_resolver_unittest.cc',
    557               ],
    558             }],
    559           ],
    560         },
    561       ],
    562     }],
    563   ],
    564 }
    565