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