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