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