Android.mk revision ab49446e3d08dc8cf8928c3d3b6f292513af5566
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 17LOCAL_PATH := $(my-dir) 18 19# Default values for the USE flags. Override these USE flags from your product. 20BRILLO_USE_DBUS ?= 1 21BRILLO_USE_HWID_OVERRIDE ?= 0 22BRILLO_USE_MTD ?= 0 23BRILLO_USE_POWER_MANAGEMENT ?= 0 24 25ue_common_cflags := \ 26 -DUSE_DBUS=$(BRILLO_USE_DBUS) \ 27 -DUSE_HWID_OVERRIDE=$(BRILLO_USE_HWID_OVERRIDE) \ 28 -DUSE_MTD=$(BRILLO_USE_MTD) \ 29 -DUSE_POWER_MANAGEMENT=$(BRILLO_USE_POWER_MANAGEMENT) \ 30 -D_FILE_OFFSET_BITS=64 \ 31 -D_POSIX_C_SOURCE=199309L \ 32 -Wa,--noexecstack \ 33 -Wall \ 34 -Werror \ 35 -Wextra \ 36 -Wformat=2 \ 37 -Wno-psabi \ 38 -Wno-unused-parameter \ 39 -ffunction-sections \ 40 -fstack-protector-strong \ 41 -fvisibility=hidden 42ue_common_cppflags := \ 43 -Wnon-virtual-dtor \ 44 -fno-strict-aliasing \ 45 -std=gnu++11 46ue_common_ldflags := \ 47 -Wl,--gc-sections 48ue_common_c_includes := \ 49 $(LOCAL_PATH)/client_library/include \ 50 external/gtest/include \ 51 system 52ue_common_shared_libraries := \ 53 libbrillo \ 54 libbrillo-http \ 55 libbrillo-stream \ 56 libchrome 57 58ifeq ($(BRILLO_USE_DBUS),1) 59ue_common_shared_libraries += \ 60 libbrillo-dbus \ 61 libchrome-dbus 62endif # BRILLO_USE_DBUS == 1 63 64 65ifeq ($(BRILLO_USE_DBUS),1) 66 67# update_engine_client-dbus-proxies (from generate-dbus-proxies.gypi) 68# ======================================================== 69include $(CLEAR_VARS) 70LOCAL_MODULE := update_engine_client-dbus-proxies 71LOCAL_MODULE_CLASS := STATIC_LIBRARIES 72LOCAL_SRC_FILES := \ 73 dbus_bindings/dbus-service-config.json \ 74 dbus_bindings/org.chromium.UpdateEngineInterface.dbus-xml 75LOCAL_DBUS_PROXY_PREFIX := update_engine 76include $(BUILD_STATIC_LIBRARY) 77 78endif # BRILLO_USE_DBUS == 1 79 80# update_metadata-protos (type: static_library) 81# ======================================================== 82# Protobufs. 83ue_update_metadata_protos_exported_static_libraries := \ 84 update_metadata-protos 85ue_update_metadata_protos_exported_shared_libraries := \ 86 libprotobuf-cpp-lite-rtti 87 88include $(CLEAR_VARS) 89LOCAL_MODULE := update_metadata-protos 90LOCAL_MODULE_CLASS := STATIC_LIBRARIES 91generated_sources_dir := $(call local-generated-sources-dir) 92LOCAL_EXPORT_C_INCLUDE_DIRS := $(generated_sources_dir)/proto/system 93LOCAL_SRC_FILES := \ 94 update_metadata.proto 95include $(BUILD_STATIC_LIBRARY) 96 97ifeq ($(BRILLO_USE_DBUS),1) 98 99# update_engine-dbus-adaptor (from generate-dbus-adaptors.gypi) 100# ======================================================== 101# Chrome D-Bus bindings. 102include $(CLEAR_VARS) 103LOCAL_MODULE := update_engine-dbus-adaptor 104LOCAL_MODULE_CLASS := STATIC_LIBRARIES 105LOCAL_SRC_FILES := \ 106 dbus_bindings/org.chromium.UpdateEngineInterface.dbus-xml 107include $(BUILD_STATIC_LIBRARY) 108 109# update_engine-dbus-libcros-client (from generate-dbus-proxies.gypi) 110# ======================================================== 111include $(CLEAR_VARS) 112LOCAL_MODULE := update_engine-dbus-libcros-client 113LOCAL_MODULE_CLASS := STATIC_LIBRARIES 114LOCAL_SRC_FILES := \ 115 dbus_bindings/org.chromium.LibCrosService.dbus-xml 116LOCAL_DBUS_PROXY_PREFIX := libcros 117include $(BUILD_STATIC_LIBRARY) 118 119endif # BRILLO_USE_DBUS == 1 120 121 122#TODO(deymo): Re-enable this library once the dbus dependencies are removed from 123# the code. 124ifeq ($(BRILLO_USE_DBUS),1) 125 126# libpayload_consumer (type: static_library) 127# ======================================================== 128# The payload application component and common dependencies. 129ue_libpayload_consumer_exported_c_includes := \ 130 $(LOCAL_PATH)/include \ 131 external/cros/system_api/dbus 132ue_libpayload_consumer_exported_static_libraries := \ 133 update_metadata-protos \ 134 update_engine-dbus-libcros-client \ 135 update_engine_client-dbus-proxies \ 136 libxz \ 137 libbz \ 138 libfs_mgr \ 139 $(ue_update_metadata_protos_exported_static_libraries) 140ue_libpayload_consumer_exported_shared_libraries := \ 141 libcrypto \ 142 libcurl \ 143 libshill-client \ 144 libssl \ 145 libexpat \ 146 libbrillo-policy \ 147 libhardware \ 148 libcutils \ 149 $(ue_update_metadata_protos_exported_shared_libraries) 150 151include $(CLEAR_VARS) 152LOCAL_MODULE := libpayload_consumer 153LOCAL_MODULE_CLASS := STATIC_LIBRARIES 154LOCAL_CPP_EXTENSION := .cc 155LOCAL_RTTI_FLAG := -frtti 156LOCAL_CLANG := true 157LOCAL_EXPORT_C_INCLUDE_DIRS := $(ue_libpayload_consumer_exported_c_includes) 158LOCAL_CFLAGS := $(ue_common_cflags) 159LOCAL_CPPFLAGS := $(ue_common_cppflags) 160LOCAL_LDFLAGS := $(ue_common_ldflags) 161LOCAL_C_INCLUDES := \ 162 $(ue_common_c_includes) \ 163 $(ue_libpayload_consumer_exported_c_includes) \ 164 external/e2fsprogs/lib 165LOCAL_STATIC_LIBRARIES := \ 166 update_metadata-protos \ 167 update_engine-dbus-libcros-client \ 168 update_engine_client-dbus-proxies \ 169 $(ue_libpayload_consumer_exported_static_libraries) \ 170 $(ue_update_metadata_protos_exported_static_libraries) 171LOCAL_SHARED_LIBRARIES := \ 172 $(ue_common_shared_libraries) \ 173 $(ue_libpayload_consumer_exported_shared_libraries) \ 174 $(ue_update_metadata_protos_exported_shared_libraries) 175LOCAL_SRC_FILES := \ 176 common/action_processor.cc \ 177 common/boot_control_android.cc \ 178 common/boot_control_stub.cc \ 179 common/certificate_checker.cc \ 180 common/clock.cc \ 181 common/constants.cc \ 182 common/hardware_android.cc \ 183 common/hash_calculator.cc \ 184 common/http_common.cc \ 185 common/http_fetcher.cc \ 186 common/hwid_override.cc \ 187 common/libcurl_http_fetcher.cc \ 188 common/multi_range_http_fetcher.cc \ 189 common/platform_constants_android.cc \ 190 common/prefs.cc \ 191 common/subprocess.cc \ 192 common/terminator.cc \ 193 common/utils.cc \ 194 payload_consumer/bzip_extent_writer.cc \ 195 payload_consumer/delta_performer.cc \ 196 payload_consumer/download_action.cc \ 197 payload_consumer/extent_writer.cc \ 198 payload_consumer/file_descriptor.cc \ 199 payload_consumer/file_writer.cc \ 200 payload_consumer/filesystem_verifier_action.cc \ 201 payload_consumer/install_plan.cc \ 202 payload_consumer/payload_constants.cc \ 203 payload_consumer/payload_verifier.cc \ 204 payload_consumer/postinstall_runner_action.cc \ 205 payload_consumer/xz_extent_writer.cc 206include $(BUILD_STATIC_LIBRARY) 207 208endif # BRILLO_USE_DBUS == 1 209 210ifeq ($(BRILLO_USE_DBUS),1) 211 212# libupdate_engine (type: static_library) 213# ======================================================== 214# The main daemon static_library with all the code used to check for updates 215# with Omaha and expose a DBus daemon. 216ue_libupdate_engine_exported_c_includes := \ 217 $(LOCAL_PATH)/include \ 218 external/cros/system_api/dbus \ 219 $(ue_libpayload_consumer_exported_c_includes) 220ue_libupdate_engine_exported_static_libraries := \ 221 libpayload_consumer \ 222 update_metadata-protos \ 223 update_engine-dbus-adaptor \ 224 update_engine-dbus-libcros-client \ 225 update_engine_client-dbus-proxies \ 226 libxz \ 227 libbz \ 228 libfs_mgr \ 229 $(ue_libpayload_consumer_exported_static_libraries) \ 230 $(ue_update_metadata_protos_exported_static_libraries) 231ue_libupdate_engine_exported_shared_libraries := \ 232 libdbus \ 233 libcrypto \ 234 libcurl \ 235 libmetrics \ 236 libshill-client \ 237 libssl \ 238 libexpat \ 239 libbrillo-policy \ 240 libhardware \ 241 libcutils \ 242 $(ue_libpayload_consumer_exported_shared_libraries) \ 243 $(ue_update_metadata_protos_exported_shared_libraries) 244 245include $(CLEAR_VARS) 246LOCAL_MODULE := libupdate_engine 247LOCAL_MODULE_CLASS := STATIC_LIBRARIES 248LOCAL_CPP_EXTENSION := .cc 249LOCAL_RTTI_FLAG := -frtti 250LOCAL_CLANG := true 251LOCAL_EXPORT_C_INCLUDE_DIRS := $(ue_libupdate_engine_exported_c_includes) 252LOCAL_CFLAGS := $(ue_common_cflags) 253LOCAL_CPPFLAGS := $(ue_common_cppflags) 254LOCAL_LDFLAGS := $(ue_common_ldflags) 255LOCAL_C_INCLUDES := \ 256 $(ue_common_c_includes) \ 257 $(ue_libupdate_engine_exported_c_includes) \ 258 $(ue_libpayload_consumer_exported_c_includes) 259LOCAL_STATIC_LIBRARIES := \ 260 libpayload_consumer \ 261 update_metadata-protos \ 262 update_engine-dbus-adaptor \ 263 update_engine-dbus-libcros-client \ 264 update_engine_client-dbus-proxies \ 265 $(ue_libupdate_engine_exported_static_libraries) \ 266 $(ue_libpayload_consumer_exported_static_libraries) \ 267 $(ue_update_metadata_protos_exported_static_libraries) 268LOCAL_SHARED_LIBRARIES := \ 269 $(ue_common_shared_libraries) \ 270 $(ue_libupdate_engine_exported_shared_libraries) \ 271 $(ue_libpayload_consumer_exported_shared_libraries) \ 272 $(ue_update_metadata_protos_exported_shared_libraries) 273LOCAL_SRC_FILES := \ 274 chrome_browser_proxy_resolver.cc \ 275 connection_manager.cc \ 276 daemon.cc \ 277 dbus_service.cc \ 278 image_properties_android.cc \ 279 libcros_proxy.cc \ 280 metrics.cc \ 281 metrics_utils.cc \ 282 omaha_request_action.cc \ 283 omaha_request_params.cc \ 284 omaha_response_handler_action.cc \ 285 p2p_manager.cc \ 286 payload_state.cc \ 287 proxy_resolver.cc \ 288 real_system_state.cc \ 289 shill_proxy.cc \ 290 update_attempter.cc \ 291 update_manager/boxed_value.cc \ 292 update_manager/chromeos_policy.cc \ 293 update_manager/default_policy.cc \ 294 update_manager/evaluation_context.cc \ 295 update_manager/policy.cc \ 296 update_manager/real_config_provider.cc \ 297 update_manager/real_device_policy_provider.cc \ 298 update_manager/real_random_provider.cc \ 299 update_manager/real_shill_provider.cc \ 300 update_manager/real_system_provider.cc \ 301 update_manager/real_time_provider.cc \ 302 update_manager/real_updater_provider.cc \ 303 update_manager/state_factory.cc \ 304 update_manager/update_manager.cc \ 305 update_status_utils.cc 306include $(BUILD_STATIC_LIBRARY) 307 308endif # BRILLO_USE_DBUS == 1 309 310# update_engine (type: executable) 311# ======================================================== 312# update_engine daemon. 313include $(CLEAR_VARS) 314LOCAL_MODULE := update_engine 315LOCAL_MODULE_CLASS := EXECUTABLES 316LOCAL_REQUIRED_MODULES := \ 317 bspatch \ 318 cacerts_google 319LOCAL_CPP_EXTENSION := .cc 320LOCAL_CLANG := true 321LOCAL_CFLAGS := $(ue_common_cflags) 322LOCAL_CPPFLAGS := $(ue_common_cppflags) 323LOCAL_LDFLAGS := $(ue_common_ldflags) 324LOCAL_C_INCLUDES := \ 325 $(ue_common_c_includes) 326 327ifdef BRILLO 328 329LOCAL_C_INCLUDES += \ 330 $(ue_libupdate_engine_exported_c_includes) 331LOCAL_STATIC_LIBRARIES := \ 332 libupdate_engine \ 333 $(ue_libupdate_engine_exported_static_libraries) 334 335LOCAL_RTTI_FLAG := -frtti 336LOCAL_SHARED_LIBRARIES := \ 337 $(ue_common_shared_libraries) \ 338 $(ue_libupdate_engine_exported_shared_libraries) 339LOCAL_SRC_FILES := \ 340 main.cc 341 342else # !defined(BRILLO) 343 344LOCAL_AIDL_INCLUDES := $(LOCAL_PATH)/binder_bindings 345LOCAL_SHARED_LIBRARIES := \ 346 libbinder \ 347 liblog \ 348 libutils 349LOCAL_SRC_FILES := \ 350 binder_bindings/android/os/IUpdateEngine.aidl \ 351 binder_bindings/android/os/IUpdateEnginePayloadApplicationCallback.aidl \ 352 binder_main.cc \ 353 binder_service.cc 354 355endif # defined(BRILLO) 356 357LOCAL_INIT_RC := update_engine.rc 358include $(BUILD_EXECUTABLE) 359 360ifeq ($(BRILLO_USE_DBUS),1) 361 362# update_engine_client (type: executable) 363# ======================================================== 364# update_engine console client. 365include $(CLEAR_VARS) 366LOCAL_MODULE := update_engine_client 367LOCAL_MODULE_CLASS := EXECUTABLES 368LOCAL_CPP_EXTENSION := .cc 369LOCAL_RTTI_FLAG := -frtti 370LOCAL_CLANG := true 371LOCAL_CFLAGS := $(ue_common_cflags) 372LOCAL_CPPFLAGS := $(ue_common_cppflags) 373LOCAL_LDFLAGS := $(ue_common_ldflags) 374LOCAL_C_INCLUDES := \ 375 $(ue_common_c_includes) \ 376 $(LOCAL_PATH)/include 377LOCAL_STATIC_LIBRARIES := update_engine_client-dbus-proxies 378LOCAL_SHARED_LIBRARIES := $(ue_common_shared_libraries) 379LOCAL_SRC_FILES := \ 380 update_engine_client.cc 381include $(BUILD_EXECUTABLE) 382 383endif # BRILLO_USE_DBUS == 1 384 385#TODO(deymo): Re-enable this library once the dbus dependencies are removed from 386# the code. 387ifeq ($(BRILLO_USE_DBUS),1) 388 389# libpayload_generator (type: static_library) 390# ======================================================== 391# server-side code. This is used for delta_generator and unittests but not 392# for any client code. 393ue_libpayload_generator_exported_c_includes := \ 394 $(ue_libupdate_engine_exported_c_includes) 395ue_libpayload_generator_exported_static_libraries := \ 396 libupdate_engine \ 397 update_metadata-protos \ 398 $(ue_libupdate_engine_exported_static_libraries) \ 399 $(ue_update_metadata_protos_exported_static_libraries) 400ue_libpayload_generator_exported_shared_libraries := \ 401 libext2fs \ 402 $(ue_libupdate_engine_exported_shared_libraries) \ 403 $(ue_update_metadata_protos_exported_shared_libraries) 404 405include $(CLEAR_VARS) 406LOCAL_MODULE := libpayload_generator 407LOCAL_MODULE_CLASS := STATIC_LIBRARIES 408LOCAL_CPP_EXTENSION := .cc 409LOCAL_RTTI_FLAG := -frtti 410LOCAL_CLANG := true 411LOCAL_EXPORT_C_INCLUDE_DIRS := $(ue_libpayload_generator_exported_c_includes) 412LOCAL_CFLAGS := $(ue_common_cflags) 413LOCAL_CPPFLAGS := $(ue_common_cppflags) 414LOCAL_LDFLAGS := $(ue_common_ldflags) 415LOCAL_C_INCLUDES := \ 416 $(ue_common_c_includes) \ 417 $(ue_libupdate_engine_exported_c_includes) 418LOCAL_STATIC_LIBRARIES := \ 419 libupdate_engine \ 420 update_metadata-protos \ 421 $(ue_libupdate_engine_exported_static_libraries) \ 422 $(ue_update_metadata_protos_exported_static_libraries) 423LOCAL_SHARED_LIBRARIES := \ 424 $(ue_common_shared_libraries) \ 425 $(ue_libpayload_generator_exported_shared_libraries) \ 426 $(ue_libupdate_engine_exported_shared_libraries) \ 427 $(ue_update_metadata_protos_exported_shared_libraries) 428LOCAL_SRC_FILES := \ 429 payload_generator/ab_generator.cc \ 430 payload_generator/annotated_operation.cc \ 431 payload_generator/blob_file_writer.cc \ 432 payload_generator/block_mapping.cc \ 433 payload_generator/bzip.cc \ 434 payload_generator/cycle_breaker.cc \ 435 payload_generator/delta_diff_generator.cc \ 436 payload_generator/delta_diff_utils.cc \ 437 payload_generator/ext2_filesystem.cc \ 438 payload_generator/extent_ranges.cc \ 439 payload_generator/extent_utils.cc \ 440 payload_generator/full_update_generator.cc \ 441 payload_generator/graph_types.cc \ 442 payload_generator/graph_utils.cc \ 443 payload_generator/inplace_generator.cc \ 444 payload_generator/payload_file.cc \ 445 payload_generator/payload_generation_config.cc \ 446 payload_generator/payload_signer.cc \ 447 payload_generator/raw_filesystem.cc \ 448 payload_generator/tarjan.cc \ 449 payload_generator/topological_sort.cc 450include $(BUILD_STATIC_LIBRARY) 451 452# delta_generator (type: executable) 453# ======================================================== 454# server-side delta generator. 455include $(CLEAR_VARS) 456LOCAL_MODULE := delta_generator 457LOCAL_MODULE_CLASS := EXECUTABLES 458LOCAL_CPP_EXTENSION := .cc 459LOCAL_RTTI_FLAG := -frtti 460LOCAL_CLANG := true 461LOCAL_CFLAGS := $(ue_common_cflags) 462LOCAL_CPPFLAGS := $(ue_common_cppflags) 463LOCAL_LDFLAGS := $(ue_common_ldflags) 464LOCAL_C_INCLUDES := \ 465 $(ue_common_c_includes) \ 466 $(ue_libupdate_engine_exported_c_includes) \ 467 $(ue_libpayload_generator_exported_c_includes) 468LOCAL_STATIC_LIBRARIES := \ 469 libupdate_engine \ 470 libpayload_generator \ 471 $(ue_libupdate_engine_exported_static_libraries) \ 472 $(ue_libpayload_generator_exported_static_libraries) 473LOCAL_SHARED_LIBRARIES := \ 474 $(ue_common_shared_libraries) \ 475 $(ue_libupdate_engine_exported_shared_libraries) \ 476 $(ue_libpayload_generator_exported_shared_libraries) 477LOCAL_SRC_FILES := \ 478 payload_generator/generate_delta_main.cc 479include $(BUILD_EXECUTABLE) 480 481endif # BRILLO_USE_DBUS == 1 482 483ifeq ($(BRILLO_USE_DBUS),1) 484 485# libupdate_engine_client 486# ======================================================== 487include $(CLEAR_VARS) 488LOCAL_MODULE := libupdate_engine_client 489LOCAL_RTTI_FLAG := -frtti 490LOCAL_CFLAGS := \ 491 -Wall \ 492 -Werror \ 493 -Wno-unused-parameter 494LOCAL_CLANG := true 495LOCAL_CPP_EXTENSION := .cc 496LOCAL_C_INCLUDES := \ 497 $(LOCAL_PATH)/client_library/include \ 498 external/cros/system_api/dbus \ 499 system \ 500 external/gtest/include 501LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/client_library/include 502LOCAL_SHARED_LIBRARIES := \ 503 libchrome \ 504 libchrome-dbus \ 505 libbrillo \ 506 libbrillo-dbus 507LOCAL_STATIC_LIBRARIES := \ 508 update_engine_client-dbus-proxies 509LOCAL_SRC_FILES := \ 510 client_library/client.cc \ 511 client_library/client_impl.cc \ 512 update_status_utils.cc 513include $(BUILD_SHARED_LIBRARY) 514 515endif # BRILLO_USE_DBUS == 1 516 517# Update payload signing public key. 518# ======================================================== 519include $(CLEAR_VARS) 520LOCAL_MODULE := brillo-update-payload-key 521LOCAL_MODULE_CLASS := ETC 522LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/update_engine 523LOCAL_MODULE_STEM := update-payload-key.pub.pem 524LOCAL_SRC_FILES := update_payload_key/brillo-update-payload-key.pub.pem 525LOCAL_BUILT_MODULE_STEM := update_payload_key/brillo-update-payload-key.pub.pem 526include $(BUILD_PREBUILT) 527