Android.mk revision 1b03f9f983a22fabb8d53e036abf1b192e7d5811
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# libpayload_consumer (type: static_library)
122# ========================================================
123# The payload application component and common dependencies.
124ue_libpayload_consumer_exported_static_libraries := \
125    update_metadata-protos \
126    libxz \
127    libbz \
128    $(ue_update_metadata_protos_exported_static_libraries)
129ue_libpayload_consumer_exported_shared_libraries := \
130    libcrypto \
131    libcurl \
132    libssl \
133    $(ue_update_metadata_protos_exported_shared_libraries)
134
135include $(CLEAR_VARS)
136LOCAL_MODULE := libpayload_consumer
137LOCAL_MODULE_CLASS := STATIC_LIBRARIES
138LOCAL_CPP_EXTENSION := .cc
139LOCAL_RTTI_FLAG := -frtti
140LOCAL_CLANG := true
141LOCAL_CFLAGS := $(ue_common_cflags)
142LOCAL_CPPFLAGS := $(ue_common_cppflags)
143LOCAL_LDFLAGS := $(ue_common_ldflags)
144LOCAL_C_INCLUDES := \
145    $(ue_common_c_includes) \
146    external/e2fsprogs/lib
147LOCAL_STATIC_LIBRARIES := \
148    update_metadata-protos \
149    $(ue_libpayload_consumer_exported_static_libraries) \
150    $(ue_update_metadata_protos_exported_static_libraries)
151LOCAL_SHARED_LIBRARIES := \
152    $(ue_common_shared_libraries) \
153    $(ue_libpayload_consumer_exported_shared_libraries) \
154    $(ue_update_metadata_protos_exported_shared_libraries)
155LOCAL_SRC_FILES := \
156    common/action_processor.cc \
157    common/boot_control_stub.cc \
158    common/certificate_checker.cc \
159    common/clock.cc \
160    common/constants.cc \
161    common/hash_calculator.cc \
162    common/http_common.cc \
163    common/http_fetcher.cc \
164    common/hwid_override.cc \
165    common/libcurl_http_fetcher.cc \
166    common/multi_range_http_fetcher.cc \
167    common/platform_constants_android.cc \
168    common/prefs.cc \
169    common/subprocess.cc \
170    common/terminator.cc \
171    common/utils.cc \
172    payload_consumer/bzip_extent_writer.cc \
173    payload_consumer/delta_performer.cc \
174    payload_consumer/download_action.cc \
175    payload_consumer/extent_writer.cc \
176    payload_consumer/file_descriptor.cc \
177    payload_consumer/file_writer.cc \
178    payload_consumer/filesystem_verifier_action.cc \
179    payload_consumer/install_plan.cc \
180    payload_consumer/payload_constants.cc \
181    payload_consumer/payload_verifier.cc \
182    payload_consumer/postinstall_runner_action.cc \
183    payload_consumer/xz_extent_writer.cc
184include $(BUILD_STATIC_LIBRARY)
185
186ifeq ($(BRILLO_USE_DBUS),1)
187
188# libupdate_engine (type: static_library)
189# ========================================================
190# The main daemon static_library with all the code used to check for updates
191# with Omaha and expose a DBus daemon.
192ue_libupdate_engine_exported_c_includes := \
193    $(LOCAL_PATH)/include \
194    external/cros/system_api/dbus
195ue_libupdate_engine_exported_static_libraries := \
196    libpayload_consumer \
197    update_metadata-protos \
198    update_engine-dbus-adaptor \
199    update_engine-dbus-libcros-client \
200    update_engine_client-dbus-proxies \
201    libbz \
202    libfs_mgr \
203    $(ue_libpayload_consumer_exported_static_libraries) \
204    $(ue_update_metadata_protos_exported_static_libraries)
205ue_libupdate_engine_exported_shared_libraries := \
206    libdbus \
207    libmetrics \
208    libshill-client \
209    libexpat \
210    libbrillo-policy \
211    libhardware \
212    libcutils \
213    $(ue_libpayload_consumer_exported_shared_libraries) \
214    $(ue_update_metadata_protos_exported_shared_libraries)
215
216include $(CLEAR_VARS)
217LOCAL_MODULE := libupdate_engine
218LOCAL_MODULE_CLASS := STATIC_LIBRARIES
219LOCAL_CPP_EXTENSION := .cc
220LOCAL_RTTI_FLAG := -frtti
221LOCAL_CLANG := true
222LOCAL_EXPORT_C_INCLUDE_DIRS := $(ue_libupdate_engine_exported_c_includes)
223LOCAL_CFLAGS := $(ue_common_cflags)
224LOCAL_CPPFLAGS := $(ue_common_cppflags)
225LOCAL_LDFLAGS := $(ue_common_ldflags)
226LOCAL_C_INCLUDES := \
227    $(ue_common_c_includes) \
228    $(ue_libupdate_engine_exported_c_includes)
229LOCAL_STATIC_LIBRARIES := \
230    libpayload_consumer \
231    update_metadata-protos \
232    update_engine-dbus-adaptor \
233    update_engine-dbus-libcros-client \
234    update_engine_client-dbus-proxies \
235    $(ue_libupdate_engine_exported_static_libraries) \
236    $(ue_libpayload_consumer_exported_static_libraries) \
237    $(ue_update_metadata_protos_exported_static_libraries)
238LOCAL_SHARED_LIBRARIES := \
239    $(ue_common_shared_libraries) \
240    $(ue_libupdate_engine_exported_shared_libraries) \
241    $(ue_libpayload_consumer_exported_shared_libraries) \
242    $(ue_update_metadata_protos_exported_shared_libraries)
243LOCAL_SRC_FILES := \
244    boot_control_android.cc \
245    chrome_browser_proxy_resolver.cc \
246    connection_manager.cc \
247    daemon.cc \
248    dbus_service.cc \
249    hardware_android.cc \
250    image_properties_android.cc \
251    libcros_proxy.cc \
252    metrics.cc \
253    metrics_utils.cc \
254    omaha_request_action.cc \
255    omaha_request_params.cc \
256    omaha_response_handler_action.cc \
257    p2p_manager.cc \
258    payload_state.cc \
259    proxy_resolver.cc \
260    real_system_state.cc \
261    shill_proxy.cc \
262    update_attempter.cc \
263    update_manager/boxed_value.cc \
264    update_manager/chromeos_policy.cc \
265    update_manager/default_policy.cc \
266    update_manager/evaluation_context.cc \
267    update_manager/policy.cc \
268    update_manager/real_config_provider.cc \
269    update_manager/real_device_policy_provider.cc \
270    update_manager/real_random_provider.cc \
271    update_manager/real_shill_provider.cc \
272    update_manager/real_system_provider.cc \
273    update_manager/real_time_provider.cc \
274    update_manager/real_updater_provider.cc \
275    update_manager/state_factory.cc \
276    update_manager/update_manager.cc \
277    update_status_utils.cc
278include $(BUILD_STATIC_LIBRARY)
279
280endif  # BRILLO_USE_DBUS == 1
281
282# update_engine (type: executable)
283# ========================================================
284# update_engine daemon.
285include $(CLEAR_VARS)
286LOCAL_MODULE := update_engine
287LOCAL_MODULE_CLASS := EXECUTABLES
288LOCAL_REQUIRED_MODULES := \
289    bspatch \
290    cacerts_google
291LOCAL_CPP_EXTENSION := .cc
292LOCAL_CLANG := true
293LOCAL_CFLAGS := $(ue_common_cflags)
294LOCAL_CPPFLAGS := $(ue_common_cppflags)
295LOCAL_LDFLAGS := $(ue_common_ldflags)
296LOCAL_C_INCLUDES := \
297    $(ue_common_c_includes)
298
299ifdef BRILLO
300
301LOCAL_C_INCLUDES += \
302    $(ue_libupdate_engine_exported_c_includes)
303LOCAL_STATIC_LIBRARIES := \
304    libupdate_engine \
305    $(ue_libupdate_engine_exported_static_libraries)
306
307LOCAL_RTTI_FLAG := -frtti
308LOCAL_SHARED_LIBRARIES := \
309    $(ue_common_shared_libraries) \
310    $(ue_libupdate_engine_exported_shared_libraries)
311LOCAL_SRC_FILES := \
312    main.cc
313
314else  # !defined(BRILLO)
315
316LOCAL_AIDL_INCLUDES := $(LOCAL_PATH)/binder_bindings
317LOCAL_SHARED_LIBRARIES := \
318    libbinder \
319    liblog \
320    libutils
321LOCAL_SRC_FILES := \
322    binder_bindings/android/os/IUpdateEngine.aidl \
323    binder_bindings/android/os/IUpdateEnginePayloadApplicationCallback.aidl \
324    binder_main.cc \
325    binder_service.cc
326
327endif  # defined(BRILLO)
328
329LOCAL_INIT_RC := update_engine.rc
330include $(BUILD_EXECUTABLE)
331
332ifeq ($(BRILLO_USE_DBUS),1)
333
334# update_engine_client (type: executable)
335# ========================================================
336# update_engine console client.
337include $(CLEAR_VARS)
338LOCAL_MODULE := update_engine_client
339LOCAL_MODULE_CLASS := EXECUTABLES
340LOCAL_CPP_EXTENSION := .cc
341LOCAL_RTTI_FLAG := -frtti
342LOCAL_CLANG := true
343LOCAL_CFLAGS := $(ue_common_cflags)
344LOCAL_CPPFLAGS := $(ue_common_cppflags)
345LOCAL_LDFLAGS := $(ue_common_ldflags)
346LOCAL_C_INCLUDES := \
347    $(ue_common_c_includes) \
348    $(LOCAL_PATH)/include
349LOCAL_STATIC_LIBRARIES := update_engine_client-dbus-proxies
350LOCAL_SHARED_LIBRARIES := $(ue_common_shared_libraries)
351LOCAL_SRC_FILES := \
352    update_engine_client.cc
353include $(BUILD_EXECUTABLE)
354
355endif  # BRILLO_USE_DBUS == 1
356
357# libpayload_generator (type: static_library)
358# ========================================================
359# server-side code. This is used for delta_generator and unittests but not
360# for any client code.
361ue_libpayload_generator_exported_static_libraries := \
362    libpayload_consumer \
363    update_metadata-protos \
364    $(ue_libpayload_consumer_exported_static_libraries) \
365    $(ue_update_metadata_protos_exported_static_libraries)
366ue_libpayload_generator_exported_shared_libraries := \
367    libext2fs \
368    $(ue_libpayload_consumer_exported_shared_libraries) \
369    $(ue_update_metadata_protos_exported_shared_libraries)
370
371include $(CLEAR_VARS)
372LOCAL_MODULE := libpayload_generator
373LOCAL_MODULE_CLASS := STATIC_LIBRARIES
374LOCAL_CPP_EXTENSION := .cc
375LOCAL_RTTI_FLAG := -frtti
376LOCAL_CLANG := true
377LOCAL_CFLAGS := $(ue_common_cflags)
378LOCAL_CPPFLAGS := $(ue_common_cppflags)
379LOCAL_LDFLAGS := $(ue_common_ldflags)
380LOCAL_C_INCLUDES := $(ue_common_c_includes)
381LOCAL_STATIC_LIBRARIES := \
382    libpayload_consumer \
383    update_metadata-protos \
384    $(ue_libpayload_consumer_exported_static_libraries) \
385    $(ue_update_metadata_protos_exported_static_libraries)
386LOCAL_SHARED_LIBRARIES := \
387    $(ue_common_shared_libraries) \
388    $(ue_libpayload_generator_exported_shared_libraries) \
389    $(ue_libpayload_consumer_exported_shared_libraries) \
390    $(ue_update_metadata_protos_exported_shared_libraries)
391LOCAL_SRC_FILES := \
392    payload_generator/ab_generator.cc \
393    payload_generator/annotated_operation.cc \
394    payload_generator/blob_file_writer.cc \
395    payload_generator/block_mapping.cc \
396    payload_generator/bzip.cc \
397    payload_generator/cycle_breaker.cc \
398    payload_generator/delta_diff_generator.cc \
399    payload_generator/delta_diff_utils.cc \
400    payload_generator/ext2_filesystem.cc \
401    payload_generator/extent_ranges.cc \
402    payload_generator/extent_utils.cc \
403    payload_generator/full_update_generator.cc \
404    payload_generator/graph_types.cc \
405    payload_generator/graph_utils.cc \
406    payload_generator/inplace_generator.cc \
407    payload_generator/payload_file.cc \
408    payload_generator/payload_generation_config.cc \
409    payload_generator/payload_signer.cc \
410    payload_generator/raw_filesystem.cc \
411    payload_generator/tarjan.cc \
412    payload_generator/topological_sort.cc
413include $(BUILD_STATIC_LIBRARY)
414
415# delta_generator (type: executable)
416# ========================================================
417# server-side delta generator.
418include $(CLEAR_VARS)
419LOCAL_MODULE := delta_generator
420LOCAL_MODULE_CLASS := EXECUTABLES
421LOCAL_CPP_EXTENSION := .cc
422LOCAL_RTTI_FLAG := -frtti
423LOCAL_CLANG := true
424LOCAL_CFLAGS := $(ue_common_cflags)
425LOCAL_CPPFLAGS := $(ue_common_cppflags)
426LOCAL_LDFLAGS := $(ue_common_ldflags)
427LOCAL_C_INCLUDES := $(ue_common_c_includes)
428LOCAL_STATIC_LIBRARIES := \
429    libpayload_consumer \
430    libpayload_generator \
431    $(ue_libpayload_consumer_exported_static_libraries) \
432    $(ue_libpayload_generator_exported_static_libraries)
433LOCAL_SHARED_LIBRARIES := \
434    $(ue_common_shared_libraries) \
435    $(ue_libpayload_consumer_exported_shared_libraries) \
436    $(ue_libpayload_generator_exported_shared_libraries)
437LOCAL_SRC_FILES := \
438    payload_generator/generate_delta_main.cc
439include $(BUILD_EXECUTABLE)
440
441ifeq ($(BRILLO_USE_DBUS),1)
442
443# libupdate_engine_client
444# ========================================================
445include $(CLEAR_VARS)
446LOCAL_MODULE := libupdate_engine_client
447LOCAL_RTTI_FLAG := -frtti
448LOCAL_CFLAGS := \
449    -Wall \
450    -Werror \
451    -Wno-unused-parameter
452LOCAL_CLANG := true
453LOCAL_CPP_EXTENSION := .cc
454LOCAL_C_INCLUDES := \
455    $(LOCAL_PATH)/client_library/include \
456    external/cros/system_api/dbus \
457    system \
458    external/gtest/include
459LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/client_library/include
460LOCAL_SHARED_LIBRARIES := \
461    libchrome \
462    libchrome-dbus \
463    libbrillo \
464    libbrillo-dbus
465LOCAL_STATIC_LIBRARIES := \
466    update_engine_client-dbus-proxies
467LOCAL_SRC_FILES := \
468    client_library/client.cc \
469    client_library/client_impl.cc \
470    update_status_utils.cc
471include $(BUILD_SHARED_LIBRARY)
472
473endif  # BRILLO_USE_DBUS == 1
474
475# Update payload signing public key.
476# ========================================================
477include $(CLEAR_VARS)
478LOCAL_MODULE := brillo-update-payload-key
479LOCAL_MODULE_CLASS := ETC
480LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/update_engine
481LOCAL_MODULE_STEM := update-payload-key.pub.pem
482LOCAL_SRC_FILES := update_payload_key/brillo-update-payload-key.pub.pem
483LOCAL_BUILT_MODULE_STEM := update_payload_key/brillo-update-payload-key.pub.pem
484include $(BUILD_PREBUILT)
485