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 LOCAL_PATH := $(my-dir) 18 19 # Default values for the USE flags. Override these USE flags from your product 20 # by setting BRILLO_USE_* values. Note that we define local variables like 21 # local_use_* to prevent leaking our default setting for other packages. 22 local_use_binder := $(if $(BRILLO_USE_BINDER),$(BRILLO_USE_BINDER),1) 23 local_use_dbus := $(if $(BRILLO_USE_DBUS),$(BRILLO_USE_DBUS),0) 24 local_use_hwid_override := \ 25 $(if $(BRILLO_USE_HWID_OVERRIDE),$(BRILLO_USE_HWID_OVERRIDE),0) 26 # "libcros" gates the LibCrosService exposed by the Chrome OS' chrome browser to 27 # the system layer. 28 local_use_libcros := $(if $(BRILLO_USE_LIBCROS),$(BRILLO_USE_LIBCROS),0) 29 local_use_mtd := $(if $(BRILLO_USE_MTD),$(BRILLO_USE_MTD),0) 30 local_use_power_management := \ 31 $(if $(BRILLO_USE_POWER_MANAGEMENT),$(BRILLO_USE_POWER_MANAGEMENT),0) 32 local_use_weave := $(if $(BRILLO_USE_WEAVE),$(BRILLO_USE_WEAVE),0) 33 34 ue_common_cflags := \ 35 -DUSE_BINDER=$(local_use_binder) \ 36 -DUSE_DBUS=$(local_use_dbus) \ 37 -DUSE_HWID_OVERRIDE=$(local_use_hwid_override) \ 38 -DUSE_LIBCROS=$(local_use_libcros) \ 39 -DUSE_MTD=$(local_use_mtd) \ 40 -DUSE_POWER_MANAGEMENT=$(local_use_power_management) \ 41 -DUSE_WEAVE=$(local_use_weave) \ 42 -D_FILE_OFFSET_BITS=64 \ 43 -D_POSIX_C_SOURCE=199309L \ 44 -Wa,--noexecstack \ 45 -Wall \ 46 -Werror \ 47 -Wextra \ 48 -Wformat=2 \ 49 -Wno-psabi \ 50 -Wno-unused-parameter \ 51 -ffunction-sections \ 52 -fstack-protector-strong \ 53 -fvisibility=hidden 54 ue_common_cppflags := \ 55 -Wnon-virtual-dtor \ 56 -fno-strict-aliasing \ 57 -std=gnu++11 58 ue_common_ldflags := \ 59 -Wl,--gc-sections 60 ue_common_c_includes := \ 61 $(LOCAL_PATH)/client_library/include \ 62 external/gtest/include \ 63 system 64 ue_common_shared_libraries := \ 65 libbrillo-stream \ 66 libbrillo \ 67 libchrome 68 69 ifeq ($(local_use_dbus),1) 70 71 # update_engine_client-dbus-proxies (from generate-dbus-proxies.gypi) 72 # ======================================================== 73 include $(CLEAR_VARS) 74 LOCAL_MODULE := update_engine_client-dbus-proxies 75 LOCAL_MODULE_CLASS := STATIC_LIBRARIES 76 LOCAL_SRC_FILES := \ 77 dbus_bindings/dbus-service-config.json \ 78 dbus_bindings/org.chromium.UpdateEngineInterface.dbus-xml 79 LOCAL_DBUS_PROXY_PREFIX := update_engine 80 include $(BUILD_STATIC_LIBRARY) 81 82 endif # local_use_dbus == 1 83 84 # update_metadata-protos (type: static_library) 85 # ======================================================== 86 # Protobufs. 87 ue_update_metadata_protos_exported_static_libraries := \ 88 update_metadata-protos 89 ue_update_metadata_protos_exported_shared_libraries := \ 90 libprotobuf-cpp-lite 91 92 ue_update_metadata_protos_src_files := \ 93 update_metadata.proto 94 95 # Build for the host. 96 include $(CLEAR_VARS) 97 LOCAL_MODULE := update_metadata-protos 98 LOCAL_MODULE_CLASS := STATIC_LIBRARIES 99 LOCAL_IS_HOST_MODULE := true 100 generated_sources_dir := $(call local-generated-sources-dir) 101 LOCAL_EXPORT_C_INCLUDE_DIRS := $(generated_sources_dir)/proto/system 102 LOCAL_SRC_FILES := $(ue_update_metadata_protos_src_files) 103 include $(BUILD_HOST_STATIC_LIBRARY) 104 105 # Build for the target. 106 include $(CLEAR_VARS) 107 LOCAL_MODULE := update_metadata-protos 108 LOCAL_MODULE_CLASS := STATIC_LIBRARIES 109 generated_sources_dir := $(call local-generated-sources-dir) 110 LOCAL_EXPORT_C_INCLUDE_DIRS := $(generated_sources_dir)/proto/system 111 LOCAL_SRC_FILES := $(ue_update_metadata_protos_src_files) 112 include $(BUILD_STATIC_LIBRARY) 113 114 ifeq ($(local_use_dbus),1) 115 116 # update_engine-dbus-adaptor (from generate-dbus-adaptors.gypi) 117 # ======================================================== 118 # Chrome D-Bus bindings. 119 include $(CLEAR_VARS) 120 LOCAL_MODULE := update_engine-dbus-adaptor 121 LOCAL_MODULE_CLASS := STATIC_LIBRARIES 122 LOCAL_SRC_FILES := \ 123 dbus_bindings/org.chromium.UpdateEngineInterface.dbus-xml 124 include $(BUILD_STATIC_LIBRARY) 125 126 # update_engine-dbus-libcros-client (from generate-dbus-proxies.gypi) 127 # ======================================================== 128 include $(CLEAR_VARS) 129 LOCAL_MODULE := update_engine-dbus-libcros-client 130 LOCAL_MODULE_CLASS := STATIC_LIBRARIES 131 LOCAL_SRC_FILES := \ 132 dbus_bindings/org.chromium.LibCrosService.dbus-xml 133 LOCAL_DBUS_PROXY_PREFIX := libcros 134 include $(BUILD_STATIC_LIBRARY) 135 136 endif # local_use_dbus == 1 137 138 # libpayload_consumer (type: static_library) 139 # ======================================================== 140 # The payload application component and common dependencies. 141 ue_libpayload_consumer_exported_static_libraries := \ 142 update_metadata-protos \ 143 libxz-host \ 144 libbz \ 145 $(ue_update_metadata_protos_exported_static_libraries) 146 ue_libpayload_consumer_exported_shared_libraries := \ 147 libcrypto-host \ 148 $(ue_update_metadata_protos_exported_shared_libraries) 149 150 ue_libpayload_consumer_src_files := \ 151 common/action_processor.cc \ 152 common/boot_control_stub.cc \ 153 common/clock.cc \ 154 common/constants.cc \ 155 common/cpu_limiter.cc \ 156 common/error_code_utils.cc \ 157 common/hash_calculator.cc \ 158 common/http_common.cc \ 159 common/http_fetcher.cc \ 160 common/file_fetcher.cc \ 161 common/hwid_override.cc \ 162 common/multi_range_http_fetcher.cc \ 163 common/platform_constants_android.cc \ 164 common/prefs.cc \ 165 common/subprocess.cc \ 166 common/terminator.cc \ 167 common/utils.cc \ 168 payload_consumer/bzip_extent_writer.cc \ 169 payload_consumer/delta_performer.cc \ 170 payload_consumer/download_action.cc \ 171 payload_consumer/extent_writer.cc \ 172 payload_consumer/file_descriptor.cc \ 173 payload_consumer/file_writer.cc \ 174 payload_consumer/filesystem_verifier_action.cc \ 175 payload_consumer/install_plan.cc \ 176 payload_consumer/payload_constants.cc \ 177 payload_consumer/payload_verifier.cc \ 178 payload_consumer/postinstall_runner_action.cc \ 179 payload_consumer/xz_extent_writer.cc 180 181 ifeq ($(HOST_OS),linux) 182 # Build for the host. 183 include $(CLEAR_VARS) 184 LOCAL_MODULE := libpayload_consumer 185 LOCAL_MODULE_CLASS := STATIC_LIBRARIES 186 LOCAL_CPP_EXTENSION := .cc 187 LOCAL_CLANG := true 188 LOCAL_CFLAGS := $(ue_common_cflags) 189 LOCAL_CPPFLAGS := $(ue_common_cppflags) 190 LOCAL_LDFLAGS := $(ue_common_ldflags) 191 LOCAL_C_INCLUDES := \ 192 $(ue_common_c_includes) \ 193 external/e2fsprogs/lib 194 LOCAL_STATIC_LIBRARIES := \ 195 update_metadata-protos \ 196 $(ue_libpayload_consumer_exported_static_libraries) \ 197 $(ue_update_metadata_protos_exported_static_libraries) 198 LOCAL_SHARED_LIBRARIES := \ 199 $(ue_common_shared_libraries) \ 200 $(ue_libpayload_consumer_exported_shared_libraries) \ 201 $(ue_update_metadata_protos_exported_shared_libraries) 202 LOCAL_SRC_FILES := $(ue_libpayload_consumer_src_files) 203 include $(BUILD_HOST_STATIC_LIBRARY) 204 endif # HOST_OS == linux 205 206 # Build for the target. 207 include $(CLEAR_VARS) 208 LOCAL_MODULE := libpayload_consumer 209 LOCAL_MODULE_CLASS := STATIC_LIBRARIES 210 LOCAL_CPP_EXTENSION := .cc 211 LOCAL_CLANG := true 212 LOCAL_CFLAGS := $(ue_common_cflags) 213 LOCAL_CPPFLAGS := $(ue_common_cppflags) 214 LOCAL_LDFLAGS := $(ue_common_ldflags) 215 LOCAL_C_INCLUDES := \ 216 $(ue_common_c_includes) \ 217 external/e2fsprogs/lib 218 LOCAL_STATIC_LIBRARIES := \ 219 update_metadata-protos \ 220 $(ue_libpayload_consumer_exported_static_libraries:-host=) \ 221 $(ue_update_metadata_protos_exported_static_libraries) 222 LOCAL_SHARED_LIBRARIES := \ 223 $(ue_common_shared_libraries) \ 224 $(ue_libpayload_consumer_exported_shared_libraries:-host=) \ 225 $(ue_update_metadata_protos_exported_shared_libraries) 226 LOCAL_SRC_FILES := $(ue_libpayload_consumer_src_files) 227 include $(BUILD_STATIC_LIBRARY) 228 229 ifdef BRILLO 230 231 # libupdate_engine (type: static_library) 232 # ======================================================== 233 # The main daemon static_library with all the code used to check for updates 234 # with Omaha and expose a DBus daemon. 235 ue_libupdate_engine_exported_c_includes := \ 236 $(LOCAL_PATH)/include \ 237 external/cros/system_api/dbus 238 ue_libupdate_engine_exported_static_libraries := \ 239 libpayload_consumer \ 240 update_metadata-protos \ 241 update_engine-dbus-adaptor \ 242 update_engine-dbus-libcros-client \ 243 update_engine_client-dbus-proxies \ 244 libbz \ 245 libfs_mgr \ 246 $(ue_libpayload_consumer_exported_static_libraries) \ 247 $(ue_update_metadata_protos_exported_static_libraries) 248 ue_libupdate_engine_exported_shared_libraries := \ 249 libdbus \ 250 libbrillo-dbus \ 251 libchrome-dbus \ 252 libmetrics \ 253 libshill-client \ 254 libexpat \ 255 libbrillo-policy \ 256 libhardware \ 257 libcurl \ 258 libcutils \ 259 libssl \ 260 $(ue_libpayload_consumer_exported_shared_libraries) \ 261 $(ue_update_metadata_protos_exported_shared_libraries) 262 ifeq ($(local_use_binder),1) 263 ue_libupdate_engine_exported_shared_libraries += \ 264 libbinder \ 265 libbinderwrapper \ 266 libbrillo-binder \ 267 libutils 268 endif # local_use_binder == 1 269 ifeq ($(local_use_weave),1) 270 ue_libupdate_engine_exported_shared_libraries += \ 271 libbinderwrapper \ 272 libbrillo-binder \ 273 libweaved 274 endif # local_use_weave == 1 275 276 include $(CLEAR_VARS) 277 LOCAL_MODULE := libupdate_engine 278 LOCAL_MODULE_CLASS := STATIC_LIBRARIES 279 LOCAL_CPP_EXTENSION := .cc 280 LOCAL_CLANG := true 281 LOCAL_EXPORT_C_INCLUDE_DIRS := $(ue_libupdate_engine_exported_c_includes) 282 LOCAL_CFLAGS := $(ue_common_cflags) 283 LOCAL_CPPFLAGS := $(ue_common_cppflags) 284 LOCAL_LDFLAGS := $(ue_common_ldflags) 285 LOCAL_C_INCLUDES := \ 286 $(ue_common_c_includes) \ 287 $(ue_libupdate_engine_exported_c_includes) \ 288 bootable/recovery 289 LOCAL_STATIC_LIBRARIES := \ 290 libpayload_consumer \ 291 update_metadata-protos \ 292 update_engine-dbus-adaptor \ 293 update_engine-dbus-libcros-client \ 294 update_engine_client-dbus-proxies \ 295 $(ue_libupdate_engine_exported_static_libraries:-host=) \ 296 $(ue_libpayload_consumer_exported_static_libraries:-host=) \ 297 $(ue_update_metadata_protos_exported_static_libraries) 298 LOCAL_SHARED_LIBRARIES := \ 299 $(ue_common_shared_libraries) \ 300 $(ue_libupdate_engine_exported_shared_libraries:-host=) \ 301 $(ue_libpayload_consumer_exported_shared_libraries:-host=) \ 302 $(ue_update_metadata_protos_exported_shared_libraries) 303 LOCAL_SRC_FILES := \ 304 boot_control_android.cc \ 305 certificate_checker.cc \ 306 common_service.cc \ 307 connection_manager.cc \ 308 daemon.cc \ 309 dbus_service.cc \ 310 hardware_android.cc \ 311 image_properties_android.cc \ 312 libcros_proxy.cc \ 313 libcurl_http_fetcher.cc \ 314 metrics.cc \ 315 metrics_utils.cc \ 316 omaha_request_action.cc \ 317 omaha_request_params.cc \ 318 omaha_response_handler_action.cc \ 319 p2p_manager.cc \ 320 payload_state.cc \ 321 proxy_resolver.cc \ 322 real_system_state.cc \ 323 shill_proxy.cc \ 324 update_attempter.cc \ 325 update_manager/boxed_value.cc \ 326 update_manager/chromeos_policy.cc \ 327 update_manager/default_policy.cc \ 328 update_manager/evaluation_context.cc \ 329 update_manager/policy.cc \ 330 update_manager/real_config_provider.cc \ 331 update_manager/real_device_policy_provider.cc \ 332 update_manager/real_random_provider.cc \ 333 update_manager/real_shill_provider.cc \ 334 update_manager/real_system_provider.cc \ 335 update_manager/real_time_provider.cc \ 336 update_manager/real_updater_provider.cc \ 337 update_manager/state_factory.cc \ 338 update_manager/update_manager.cc \ 339 update_status_utils.cc \ 340 utils_android.cc \ 341 weave_service_factory.cc 342 ifeq ($(local_use_binder),1) 343 LOCAL_AIDL_INCLUDES += $(LOCAL_PATH)/binder_bindings 344 LOCAL_SRC_FILES += \ 345 binder_bindings/android/brillo/IUpdateEngine.aidl \ 346 binder_bindings/android/brillo/IUpdateEngineStatusCallback.aidl \ 347 binder_service_brillo.cc \ 348 parcelable_update_engine_status.cc 349 endif # local_use_binder == 1 350 ifeq ($(local_use_weave),1) 351 LOCAL_SRC_FILES += \ 352 weave_service.cc 353 endif # local_use_weave == 1 354 ifeq ($(local_use_libcros),1) 355 LOCAL_SRC_FILES += \ 356 chrome_browser_proxy_resolver.cc 357 endif # local_use_libcros == 1 358 include $(BUILD_STATIC_LIBRARY) 359 360 else # !defined(BRILLO) 361 362 ifneq ($(local_use_binder),1) 363 $(error USE_BINDER is disabled but is required in non-Brillo devices.) 364 endif # local_use_binder == 1 365 366 # libupdate_engine_android (type: static_library) 367 # ======================================================== 368 # The main daemon static_library used in Android (non-Brillo). This only has a 369 # loop to apply payloads provided by the upper layer via a Binder interface. 370 ue_libupdate_engine_android_exported_static_libraries := \ 371 libpayload_consumer \ 372 libfs_mgr \ 373 $(ue_libpayload_consumer_exported_static_libraries) 374 ue_libupdate_engine_android_exported_shared_libraries := \ 375 $(ue_libpayload_consumer_exported_shared_libraries) \ 376 libandroid \ 377 libbinder \ 378 libbinderwrapper \ 379 libbrillo-binder \ 380 libcutils \ 381 libcurl \ 382 libhardware \ 383 libssl \ 384 libutils 385 386 include $(CLEAR_VARS) 387 LOCAL_MODULE := libupdate_engine_android 388 LOCAL_MODULE_CLASS := STATIC_LIBRARIES 389 LOCAL_CPP_EXTENSION := .cc 390 LOCAL_CLANG := true 391 LOCAL_CFLAGS := $(ue_common_cflags) 392 LOCAL_CPPFLAGS := $(ue_common_cppflags) 393 LOCAL_LDFLAGS := $(ue_common_ldflags) 394 LOCAL_C_INCLUDES := \ 395 $(ue_common_c_includes) \ 396 bootable/recovery 397 #TODO(deymo): Remove external/cros/system_api/dbus once the strings are moved 398 # out of the DBus interface. 399 LOCAL_C_INCLUDES += \ 400 external/cros/system_api/dbus 401 LOCAL_STATIC_LIBRARIES := \ 402 $(ue_libupdate_engine_android_exported_static_libraries:-host=) 403 LOCAL_SHARED_LIBRARIES += \ 404 $(ue_common_shared_libraries) \ 405 $(ue_libupdate_engine_android_exported_shared_libraries:-host=) 406 LOCAL_AIDL_INCLUDES := $(LOCAL_PATH)/binder_bindings 407 LOCAL_SRC_FILES += \ 408 binder_bindings/android/os/IUpdateEngine.aidl \ 409 binder_bindings/android/os/IUpdateEngineCallback.aidl \ 410 binder_service_android.cc \ 411 boot_control_android.cc \ 412 certificate_checker.cc \ 413 daemon.cc \ 414 daemon_state_android.cc \ 415 hardware_android.cc \ 416 libcurl_http_fetcher.cc \ 417 network_selector_android.cc \ 418 proxy_resolver.cc \ 419 update_attempter_android.cc \ 420 update_status_utils.cc \ 421 utils_android.cc 422 include $(BUILD_STATIC_LIBRARY) 423 424 endif # !defined(BRILLO) 425 426 # update_engine (type: executable) 427 # ======================================================== 428 # update_engine daemon. 429 include $(CLEAR_VARS) 430 LOCAL_MODULE := update_engine 431 LOCAL_MODULE_CLASS := EXECUTABLES 432 LOCAL_REQUIRED_MODULES := \ 433 bspatch \ 434 cacerts_google 435 ifeq ($(local_use_weave),1) 436 LOCAL_REQUIRED_MODULES += updater.json 437 endif # local_use_weave == 1 438 LOCAL_CPP_EXTENSION := .cc 439 LOCAL_CLANG := true 440 LOCAL_CFLAGS := $(ue_common_cflags) 441 LOCAL_CPPFLAGS := $(ue_common_cppflags) 442 LOCAL_LDFLAGS := $(ue_common_ldflags) 443 LOCAL_C_INCLUDES := \ 444 $(ue_common_c_includes) 445 LOCAL_SHARED_LIBRARIES := \ 446 $(ue_common_shared_libraries) 447 LOCAL_SRC_FILES := \ 448 main.cc 449 450 ifdef BRILLO 451 LOCAL_C_INCLUDES += \ 452 $(ue_libupdate_engine_exported_c_includes) 453 LOCAL_STATIC_LIBRARIES := \ 454 libupdate_engine \ 455 $(ue_libupdate_engine_exported_static_libraries:-host=) 456 LOCAL_SHARED_LIBRARIES += \ 457 $(ue_libupdate_engine_exported_shared_libraries:-host=) 458 else # !defined(BRILLO) 459 LOCAL_STATIC_LIBRARIES := \ 460 libupdate_engine_android \ 461 $(ue_libupdate_engine_android_exported_static_libraries:-host=) 462 LOCAL_SHARED_LIBRARIES += \ 463 $(ue_libupdate_engine_android_exported_shared_libraries:-host=) 464 endif # !defined(BRILLO) 465 466 LOCAL_INIT_RC := update_engine.rc 467 include $(BUILD_EXECUTABLE) 468 469 # update_engine_sideload (type: executable) 470 # ======================================================== 471 # A static binary equivalent to update_engine daemon that installs an update 472 # from a local file directly instead of running in the background. 473 include $(CLEAR_VARS) 474 LOCAL_MODULE := update_engine_sideload 475 LOCAL_FORCE_STATIC_EXECUTABLE := true 476 LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/sbin 477 LOCAL_MODULE_CLASS := EXECUTABLES 478 LOCAL_REQUIRED_MODULES := \ 479 bspatch_recovery 480 LOCAL_CPP_EXTENSION := .cc 481 LOCAL_CLANG := true 482 LOCAL_CFLAGS := \ 483 $(ue_common_cflags) \ 484 -D_UE_SIDELOAD 485 LOCAL_CPPFLAGS := $(ue_common_cppflags) 486 LOCAL_LDFLAGS := $(ue_common_ldflags) 487 LOCAL_C_INCLUDES := \ 488 $(ue_common_c_includes) \ 489 bootable/recovery 490 #TODO(deymo): Remove external/cros/system_api/dbus once the strings are moved 491 # out of the DBus interface. 492 LOCAL_C_INCLUDES += \ 493 external/cros/system_api/dbus 494 LOCAL_SRC_FILES := \ 495 boot_control_android.cc \ 496 hardware_android.cc \ 497 network_selector_stub.cc \ 498 proxy_resolver.cc \ 499 sideload_main.cc \ 500 update_attempter_android.cc \ 501 update_status_utils.cc \ 502 utils_android.cc 503 LOCAL_STATIC_LIBRARIES := \ 504 libfs_mgr \ 505 libpayload_consumer \ 506 update_metadata-protos \ 507 $(ue_libpayload_consumer_exported_static_libraries:-host=) \ 508 $(ue_update_metadata_protos_exported_static_libraries) 509 # We add the static versions of the shared libraries since we are forcing this 510 # binary to be a static binary, so we also need to include all the static 511 # library dependencies of these static libraries. 512 LOCAL_STATIC_LIBRARIES += \ 513 $(ue_common_shared_libraries) \ 514 libcutils \ 515 libcrypto_static \ 516 $(ue_update_metadata_protos_exported_shared_libraries) \ 517 libevent \ 518 libmodpb64 \ 519 liblog 520 521 ifeq ($(strip $(PRODUCT_STATIC_BOOT_CONTROL_HAL)),) 522 # No static boot_control HAL defined, so no sideload support. We use a fake 523 # boot_control HAL to allow compiling update_engine_sideload for test purposes. 524 ifeq ($(strip $(AB_OTA_UPDATER)),true) 525 $(warning No PRODUCT_STATIC_BOOT_CONTROL_HAL configured but AB_OTA_UPDATER is \ 526 true, no update sideload support.) 527 endif # AB_OTA_UPDATER == true 528 LOCAL_SRC_FILES += \ 529 boot_control_recovery_stub.cc 530 else # PRODUCT_STATIC_BOOT_CONTROL_HAL != "" 531 LOCAL_STATIC_LIBRARIES += \ 532 $(PRODUCT_STATIC_BOOT_CONTROL_HAL) 533 endif # PRODUCT_STATIC_BOOT_CONTROL_HAL != "" 534 535 include $(BUILD_EXECUTABLE) 536 537 # libupdate_engine_client (type: shared_library) 538 # ======================================================== 539 include $(CLEAR_VARS) 540 LOCAL_MODULE := libupdate_engine_client 541 LOCAL_CFLAGS := \ 542 -Wall \ 543 -Werror \ 544 -Wno-unused-parameter \ 545 -DUSE_DBUS=$(local_use_dbus) \ 546 -DUSE_BINDER=$(local_use_binder) 547 LOCAL_CLANG := true 548 LOCAL_CPP_EXTENSION := .cc 549 # TODO(deymo): Remove "external/cros/system_api/dbus" when dbus is not used. 550 LOCAL_C_INCLUDES := \ 551 $(LOCAL_PATH)/client_library/include \ 552 external/cros/system_api/dbus \ 553 system \ 554 external/gtest/include 555 LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/client_library/include 556 LOCAL_SHARED_LIBRARIES := \ 557 libchrome \ 558 libbrillo 559 LOCAL_SRC_FILES := \ 560 client_library/client.cc \ 561 update_status_utils.cc 562 563 # We can only compile support for one IPC mechanism. If both "binder" and "dbus" 564 # are defined, we prefer binder. 565 ifeq ($(local_use_binder),1) 566 LOCAL_AIDL_INCLUDES := $(LOCAL_PATH)/binder_bindings 567 LOCAL_SHARED_LIBRARIES += \ 568 libbinder \ 569 libbrillo-binder \ 570 libutils 571 LOCAL_SRC_FILES += \ 572 binder_bindings/android/brillo/IUpdateEngine.aidl \ 573 binder_bindings/android/brillo/IUpdateEngineStatusCallback.aidl \ 574 client_library/client_binder.cc \ 575 parcelable_update_engine_status.cc 576 else # local_use_binder != 1 577 LOCAL_STATIC_LIBRARIES := \ 578 update_engine_client-dbus-proxies 579 LOCAL_SHARED_LIBRARIES += \ 580 libchrome-dbus \ 581 libbrillo-dbus 582 LOCAL_SRC_FILES += \ 583 client_library/client_dbus.cc 584 endif # local_use_binder == 1 585 586 include $(BUILD_SHARED_LIBRARY) 587 588 # update_engine_client (type: executable) 589 # ======================================================== 590 # update_engine console client. 591 include $(CLEAR_VARS) 592 LOCAL_MODULE := update_engine_client 593 LOCAL_MODULE_CLASS := EXECUTABLES 594 LOCAL_CPP_EXTENSION := .cc 595 LOCAL_CLANG := true 596 LOCAL_CFLAGS := $(ue_common_cflags) 597 LOCAL_CPPFLAGS := $(ue_common_cppflags) 598 LOCAL_LDFLAGS := $(ue_common_ldflags) 599 LOCAL_C_INCLUDES := $(ue_common_c_includes) 600 LOCAL_SHARED_LIBRARIES := $(ue_common_shared_libraries) 601 ifdef BRILLO 602 LOCAL_SHARED_LIBRARIES += \ 603 libupdate_engine_client 604 LOCAL_SRC_FILES := \ 605 update_engine_client.cc \ 606 common/error_code_utils.cc 607 else # !defined(BRILLO) 608 #TODO(deymo): Remove external/cros/system_api/dbus once the strings are moved 609 # out of the DBus interface. 610 LOCAL_C_INCLUDES += \ 611 external/cros/system_api/dbus 612 LOCAL_SHARED_LIBRARIES += \ 613 libbinder \ 614 libbinderwrapper \ 615 libbrillo-binder \ 616 libutils 617 LOCAL_AIDL_INCLUDES := $(LOCAL_PATH)/binder_bindings 618 LOCAL_SRC_FILES := \ 619 binder_bindings/android/os/IUpdateEngine.aidl \ 620 binder_bindings/android/os/IUpdateEngineCallback.aidl \ 621 common/error_code_utils.cc \ 622 update_engine_client_android.cc \ 623 update_status_utils.cc 624 endif # !defined(BRILLO) 625 include $(BUILD_EXECUTABLE) 626 627 # libpayload_generator (type: static_library) 628 # ======================================================== 629 # server-side code. This is used for delta_generator and unittests but not 630 # for any client code. 631 ue_libpayload_generator_exported_static_libraries := \ 632 libpayload_consumer \ 633 update_metadata-protos \ 634 liblzma \ 635 $(ue_libpayload_consumer_exported_static_libraries) \ 636 $(ue_update_metadata_protos_exported_static_libraries) 637 ue_libpayload_generator_exported_shared_libraries := \ 638 libext2fs-host \ 639 $(ue_libpayload_consumer_exported_shared_libraries) \ 640 $(ue_update_metadata_protos_exported_shared_libraries) 641 642 ue_libpayload_generator_src_files := \ 643 payload_generator/ab_generator.cc \ 644 payload_generator/annotated_operation.cc \ 645 payload_generator/blob_file_writer.cc \ 646 payload_generator/block_mapping.cc \ 647 payload_generator/bzip.cc \ 648 payload_generator/cycle_breaker.cc \ 649 payload_generator/delta_diff_generator.cc \ 650 payload_generator/delta_diff_utils.cc \ 651 payload_generator/ext2_filesystem.cc \ 652 payload_generator/extent_ranges.cc \ 653 payload_generator/extent_utils.cc \ 654 payload_generator/full_update_generator.cc \ 655 payload_generator/graph_types.cc \ 656 payload_generator/graph_utils.cc \ 657 payload_generator/inplace_generator.cc \ 658 payload_generator/payload_file.cc \ 659 payload_generator/payload_generation_config.cc \ 660 payload_generator/payload_signer.cc \ 661 payload_generator/raw_filesystem.cc \ 662 payload_generator/tarjan.cc \ 663 payload_generator/topological_sort.cc \ 664 payload_generator/xz_android.cc 665 666 ifeq ($(HOST_OS),linux) 667 # Build for the host. 668 include $(CLEAR_VARS) 669 LOCAL_MODULE := libpayload_generator 670 LOCAL_MODULE_CLASS := STATIC_LIBRARIES 671 LOCAL_CPP_EXTENSION := .cc 672 LOCAL_CLANG := true 673 LOCAL_CFLAGS := $(ue_common_cflags) 674 LOCAL_CPPFLAGS := $(ue_common_cppflags) 675 LOCAL_LDFLAGS := $(ue_common_ldflags) 676 LOCAL_C_INCLUDES := $(ue_common_c_includes) 677 LOCAL_STATIC_LIBRARIES := \ 678 libpayload_consumer \ 679 update_metadata-protos \ 680 liblzma \ 681 $(ue_libpayload_consumer_exported_static_libraries) \ 682 $(ue_update_metadata_protos_exported_static_libraries) 683 LOCAL_SHARED_LIBRARIES := \ 684 $(ue_common_shared_libraries) \ 685 $(ue_libpayload_generator_exported_shared_libraries) \ 686 $(ue_libpayload_consumer_exported_shared_libraries) \ 687 $(ue_update_metadata_protos_exported_shared_libraries) 688 LOCAL_SRC_FILES := $(ue_libpayload_generator_src_files) 689 include $(BUILD_HOST_STATIC_LIBRARY) 690 endif # HOST_OS == linux 691 692 # Build for the target. 693 include $(CLEAR_VARS) 694 LOCAL_MODULE := libpayload_generator 695 LOCAL_MODULE_CLASS := STATIC_LIBRARIES 696 LOCAL_CPP_EXTENSION := .cc 697 LOCAL_CLANG := true 698 LOCAL_CFLAGS := $(ue_common_cflags) 699 LOCAL_CPPFLAGS := $(ue_common_cppflags) 700 LOCAL_LDFLAGS := $(ue_common_ldflags) 701 LOCAL_C_INCLUDES := $(ue_common_c_includes) 702 LOCAL_STATIC_LIBRARIES := \ 703 libpayload_consumer \ 704 update_metadata-protos \ 705 liblzma \ 706 $(ue_libpayload_consumer_exported_static_libraries:-host=) \ 707 $(ue_update_metadata_protos_exported_static_libraries) 708 LOCAL_SHARED_LIBRARIES := \ 709 $(ue_common_shared_libraries) \ 710 $(ue_libpayload_generator_exported_shared_libraries:-host=) \ 711 $(ue_libpayload_consumer_exported_shared_libraries:-host=) \ 712 $(ue_update_metadata_protos_exported_shared_libraries) 713 LOCAL_SRC_FILES := $(ue_libpayload_generator_src_files) 714 include $(BUILD_STATIC_LIBRARY) 715 716 # delta_generator (type: executable) 717 # ======================================================== 718 # server-side delta generator. 719 ue_delta_generator_src_files := \ 720 payload_generator/generate_delta_main.cc 721 722 ifeq ($(HOST_OS),linux) 723 # Build for the host. 724 include $(CLEAR_VARS) 725 LOCAL_MODULE := delta_generator 726 LOCAL_MODULE_CLASS := EXECUTABLES 727 LOCAL_CPP_EXTENSION := .cc 728 LOCAL_CLANG := true 729 LOCAL_CFLAGS := $(ue_common_cflags) 730 LOCAL_CPPFLAGS := $(ue_common_cppflags) 731 LOCAL_LDFLAGS := $(ue_common_ldflags) 732 LOCAL_C_INCLUDES := $(ue_common_c_includes) 733 LOCAL_STATIC_LIBRARIES := \ 734 libpayload_consumer \ 735 libpayload_generator \ 736 $(ue_libpayload_consumer_exported_static_libraries) \ 737 $(ue_libpayload_generator_exported_static_libraries) 738 LOCAL_SHARED_LIBRARIES := \ 739 $(ue_common_shared_libraries) \ 740 $(ue_libpayload_consumer_exported_shared_libraries) \ 741 $(ue_libpayload_generator_exported_shared_libraries) 742 LOCAL_SRC_FILES := $(ue_delta_generator_src_files) 743 include $(BUILD_HOST_EXECUTABLE) 744 endif # HOST_OS == linux 745 746 # Build for the target. 747 include $(CLEAR_VARS) 748 LOCAL_MODULE := delta_generator 749 LOCAL_MODULE_CLASS := EXECUTABLES 750 LOCAL_CPP_EXTENSION := .cc 751 LOCAL_CLANG := true 752 LOCAL_CFLAGS := $(ue_common_cflags) 753 LOCAL_CPPFLAGS := $(ue_common_cppflags) 754 LOCAL_LDFLAGS := $(ue_common_ldflags) 755 LOCAL_C_INCLUDES := $(ue_common_c_includes) 756 LOCAL_STATIC_LIBRARIES := \ 757 libpayload_consumer \ 758 libpayload_generator \ 759 $(ue_libpayload_consumer_exported_static_libraries:-host=) \ 760 $(ue_libpayload_generator_exported_static_libraries:-host=) 761 LOCAL_SHARED_LIBRARIES := \ 762 $(ue_common_shared_libraries) \ 763 $(ue_libpayload_consumer_exported_shared_libraries:-host=) \ 764 $(ue_libpayload_generator_exported_shared_libraries:-host=) 765 LOCAL_SRC_FILES := $(ue_delta_generator_src_files) 766 include $(BUILD_EXECUTABLE) 767 768 # TODO(deymo): Enable the unittest binaries in non-Brillo builds once the DBus 769 # dependencies are removed or placed behind the USE_DBUS flag. 770 ifdef BRILLO 771 772 # Private and public keys for unittests. 773 # ======================================================== 774 # Generate a module that installs a prebuilt private key and a module that 775 # installs a public key generated from the private key. 776 # 777 # $(1): The path to the private key in pem format. 778 define ue-unittest-keys 779 $(eval include $(CLEAR_VARS)) \ 780 $(eval LOCAL_MODULE := ue_$(1).pem) \ 781 $(eval LOCAL_MODULE_CLASS := ETC) \ 782 $(eval $(ifeq $(BRILLO), 1, LOCAL_MODULE_TAGS := eng)) \ 783 $(eval LOCAL_SRC_FILES := $(1).pem) \ 784 $(eval LOCAL_MODULE_PATH := \ 785 $(TARGET_OUT_DATA_NATIVE_TESTS)/update_engine_unittests) \ 786 $(eval LOCAL_MODULE_STEM := $(1).pem) \ 787 $(eval include $(BUILD_PREBUILT)) \ 788 \ 789 $(eval include $(CLEAR_VARS)) \ 790 $(eval LOCAL_MODULE := ue_$(1).pub.pem) \ 791 $(eval LOCAL_MODULE_CLASS := ETC) \ 792 $(eval $(ifeq $(BRILLO), 1, LOCAL_MODULE_TAGS := eng)) \ 793 $(eval LOCAL_MODULE_PATH := \ 794 $(TARGET_OUT_DATA_NATIVE_TESTS)/update_engine_unittests) \ 795 $(eval LOCAL_MODULE_STEM := $(1).pub.pem) \ 796 $(eval include $(BUILD_SYSTEM)/base_rules.mk) \ 797 $(eval $(LOCAL_BUILT_MODULE) : $(LOCAL_PATH)/$(1).pem ; \ 798 openssl rsa -in $$< -pubout -out $$@) 799 endef 800 801 $(call ue-unittest-keys,unittest_key) 802 $(call ue-unittest-keys,unittest_key2) 803 804 # Sample images for unittests. 805 # ======================================================== 806 # Generate a prebuilt module that installs a sample image from the compressed 807 # sample_images.tar.bz2 file used by the unittests. 808 # 809 # $(1): The filename in the sample_images.tar.bz2 810 define ue-unittest-sample-image 811 $(eval include $(CLEAR_VARS)) \ 812 $(eval LOCAL_MODULE := ue_unittest_$(1)) \ 813 $(eval LOCAL_MODULE_CLASS := EXECUTABLES) \ 814 $(eval $(ifeq $(BRILLO), 1, LOCAL_MODULE_TAGS := eng)) \ 815 $(eval LOCAL_MODULE_PATH := \ 816 $(TARGET_OUT_DATA_NATIVE_TESTS)/update_engine_unittests/gen) \ 817 $(eval LOCAL_MODULE_STEM := $(1)) \ 818 $(eval include $(BUILD_SYSTEM)/base_rules.mk) \ 819 $(eval $(LOCAL_BUILT_MODULE) : \ 820 $(LOCAL_PATH)/sample_images/sample_images.tar.bz2 ; \ 821 tar -jxf $$< -C $$(dir $$@) $$(notdir $$@) && touch $$@) 822 endef 823 824 $(call ue-unittest-sample-image,disk_ext2_1k.img) 825 $(call ue-unittest-sample-image,disk_ext2_4k.img) 826 $(call ue-unittest-sample-image,disk_ext2_4k_empty.img) 827 $(call ue-unittest-sample-image,disk_ext2_unittest.img) 828 829 # Zlib Fingerprint 830 # ======================================================== 831 include $(CLEAR_VARS) 832 LOCAL_MODULE := zlib_fingerprint 833 LOCAL_MODULE_CLASS := ETC 834 LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_NATIVE_TESTS)/update_engine_unittests 835 LOCAL_PREBUILT_MODULE_FILE := $(TARGET_OUT_COMMON_GEN)/zlib_fingerprint 836 include $(BUILD_PREBUILT) 837 838 # test_http_server (type: executable) 839 # ======================================================== 840 # Test HTTP Server. 841 include $(CLEAR_VARS) 842 LOCAL_MODULE := test_http_server 843 ifdef BRILLO 844 LOCAL_MODULE_TAGS := eng 845 endif 846 LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_NATIVE_TESTS)/update_engine_unittests 847 LOCAL_MODULE_CLASS := EXECUTABLES 848 LOCAL_CPP_EXTENSION := .cc 849 LOCAL_CLANG := true 850 LOCAL_CFLAGS := $(ue_common_cflags) 851 LOCAL_CPPFLAGS := $(ue_common_cppflags) 852 LOCAL_LDFLAGS := $(ue_common_ldflags) 853 LOCAL_C_INCLUDES := $(ue_common_c_includes) 854 LOCAL_SHARED_LIBRARIES := $(ue_common_shared_libraries) 855 LOCAL_SRC_FILES := \ 856 common/http_common.cc \ 857 test_http_server.cc 858 include $(BUILD_EXECUTABLE) 859 860 # update_engine_unittests (type: executable) 861 # ======================================================== 862 # Main unittest file. 863 include $(CLEAR_VARS) 864 LOCAL_MODULE := update_engine_unittests 865 ifdef BRILLO 866 LOCAL_MODULE_TAGS := eng 867 endif 868 LOCAL_REQUIRED_MODULES := \ 869 ue_unittest_disk_ext2_1k.img \ 870 ue_unittest_disk_ext2_4k.img \ 871 ue_unittest_disk_ext2_4k_empty.img \ 872 ue_unittest_disk_ext2_unittest.img \ 873 ue_unittest_key.pem \ 874 ue_unittest_key.pub.pem \ 875 ue_unittest_key2.pem \ 876 ue_unittest_key2.pub.pem \ 877 zlib_fingerprint 878 LOCAL_MODULE_CLASS := EXECUTABLES 879 LOCAL_CPP_EXTENSION := .cc 880 LOCAL_CLANG := true 881 LOCAL_CFLAGS := $(ue_common_cflags) 882 LOCAL_CPPFLAGS := $(ue_common_cppflags) 883 LOCAL_LDFLAGS := $(ue_common_ldflags) 884 LOCAL_C_INCLUDES := \ 885 $(ue_common_c_includes) \ 886 $(ue_libupdate_engine_exported_c_includes) 887 LOCAL_STATIC_LIBRARIES := \ 888 libupdate_engine \ 889 libpayload_generator \ 890 libbrillo-test-helpers \ 891 libgmock \ 892 libgtest \ 893 libchrome_test_helpers \ 894 $(ue_libupdate_engine_exported_static_libraries:-host=) \ 895 $(ue_libpayload_generator_exported_static_libraries:-host=) 896 LOCAL_SHARED_LIBRARIES := \ 897 $(ue_common_shared_libraries) \ 898 $(ue_libupdate_engine_exported_shared_libraries:-host=) \ 899 $(ue_libpayload_generator_exported_shared_libraries:-host=) 900 LOCAL_SRC_FILES := \ 901 certificate_checker_unittest.cc \ 902 common/action_pipe_unittest.cc \ 903 common/action_processor_unittest.cc \ 904 common/action_unittest.cc \ 905 common/cpu_limiter_unittest.cc \ 906 common/fake_prefs.cc \ 907 common/file_fetcher_unittest.cc \ 908 common/hash_calculator_unittest.cc \ 909 common/http_fetcher_unittest.cc \ 910 common/hwid_override_unittest.cc \ 911 common/mock_http_fetcher.cc \ 912 common/prefs_unittest.cc \ 913 common/subprocess_unittest.cc \ 914 common/terminator_unittest.cc \ 915 common/test_utils.cc \ 916 common/utils_unittest.cc \ 917 common_service_unittest.cc \ 918 connection_manager_unittest.cc \ 919 fake_shill_proxy.cc \ 920 fake_system_state.cc \ 921 metrics_utils_unittest.cc \ 922 omaha_request_action_unittest.cc \ 923 omaha_request_params_unittest.cc \ 924 omaha_response_handler_action_unittest.cc \ 925 p2p_manager_unittest.cc \ 926 payload_consumer/bzip_extent_writer_unittest.cc \ 927 payload_consumer/delta_performer_integration_test.cc \ 928 payload_consumer/delta_performer_unittest.cc \ 929 payload_consumer/download_action_unittest.cc \ 930 payload_consumer/extent_writer_unittest.cc \ 931 payload_consumer/file_writer_unittest.cc \ 932 payload_consumer/filesystem_verifier_action_unittest.cc \ 933 payload_consumer/postinstall_runner_action_unittest.cc \ 934 payload_consumer/xz_extent_writer_unittest.cc \ 935 payload_generator/ab_generator_unittest.cc \ 936 payload_generator/blob_file_writer_unittest.cc \ 937 payload_generator/block_mapping_unittest.cc \ 938 payload_generator/cycle_breaker_unittest.cc \ 939 payload_generator/delta_diff_utils_unittest.cc \ 940 payload_generator/ext2_filesystem_unittest.cc \ 941 payload_generator/extent_ranges_unittest.cc \ 942 payload_generator/extent_utils_unittest.cc \ 943 payload_generator/fake_filesystem.cc \ 944 payload_generator/full_update_generator_unittest.cc \ 945 payload_generator/graph_utils_unittest.cc \ 946 payload_generator/inplace_generator_unittest.cc \ 947 payload_generator/payload_file_unittest.cc \ 948 payload_generator/payload_generation_config_unittest.cc \ 949 payload_generator/payload_signer_unittest.cc \ 950 payload_generator/tarjan_unittest.cc \ 951 payload_generator/topological_sort_unittest.cc \ 952 payload_generator/zip_unittest.cc \ 953 payload_state_unittest.cc \ 954 update_attempter_unittest.cc \ 955 update_manager/boxed_value_unittest.cc \ 956 update_manager/chromeos_policy_unittest.cc \ 957 update_manager/evaluation_context_unittest.cc \ 958 update_manager/generic_variables_unittest.cc \ 959 update_manager/prng_unittest.cc \ 960 update_manager/real_config_provider_unittest.cc \ 961 update_manager/real_device_policy_provider_unittest.cc \ 962 update_manager/real_random_provider_unittest.cc \ 963 update_manager/real_shill_provider_unittest.cc \ 964 update_manager/real_system_provider_unittest.cc \ 965 update_manager/real_time_provider_unittest.cc \ 966 update_manager/real_updater_provider_unittest.cc \ 967 update_manager/umtest_utils.cc \ 968 update_manager/update_manager_unittest.cc \ 969 update_manager/variable_unittest.cc \ 970 testrunner.cc 971 ifeq ($(local_use_libcros),1) 972 LOCAL_SRC_FILES += \ 973 chrome_browser_proxy_resolver_unittest.cc 974 endif # local_use_libcros == 1 975 include $(BUILD_NATIVE_TEST) 976 endif # BRILLO 977 978 # Weave schema files 979 # ======================================================== 980 include $(CLEAR_VARS) 981 LOCAL_MODULE := updater.json 982 LOCAL_MODULE_CLASS := ETC 983 LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/weaved/traits 984 LOCAL_SRC_FILES := weaved/traits/$(LOCAL_MODULE) 985 include $(BUILD_PREBUILT) 986 987 # Update payload signing public key. 988 # ======================================================== 989 ifdef BRILLO 990 include $(CLEAR_VARS) 991 LOCAL_MODULE := brillo-update-payload-key 992 LOCAL_MODULE_CLASS := ETC 993 LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/update_engine 994 LOCAL_MODULE_STEM := update-payload-key.pub.pem 995 LOCAL_SRC_FILES := update_payload_key/brillo-update-payload-key.pub.pem 996 LOCAL_BUILT_MODULE_STEM := update_payload_key/brillo-update-payload-key.pub.pem 997 include $(BUILD_PREBUILT) 998 endif # BRILLO 999 1000 # Brillo update payload generation script 1001 # ======================================================== 1002 ifeq ($(HOST_OS),linux) 1003 include $(CLEAR_VARS) 1004 LOCAL_SRC_FILES := scripts/brillo_update_payload 1005 LOCAL_MODULE := brillo_update_payload 1006 LOCAL_MODULE_CLASS := EXECUTABLES 1007 LOCAL_IS_HOST_MODULE := true 1008 LOCAL_MODULE_TAGS := optional 1009 LOCAL_REQUIRED_MODULES := \ 1010 delta_generator \ 1011 shflags 1012 include $(BUILD_PREBUILT) 1013 endif # HOST_OS == linux 1014