1//
2// Copyright (C) 2015 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8//      http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15//
16
17// AIDL interface between libupdate_engine and framework.jar
18package {
19    default_applicable_licenses: ["system_update_engine_license"],
20}
21
22// Added automatically by a large-scale-change
23// See: http://go/android-license-faq
24license {
25    name: "system_update_engine_license",
26    visibility: [":__subpackages__"],
27    license_kinds: [
28        "SPDX-license-identifier-Apache-2.0",
29    ],
30    license_text: [
31        "NOTICE",
32    ],
33}
34
35filegroup {
36    name: "libupdate_engine_aidl",
37    srcs: [
38        "binder_bindings/android/os/IUpdateEngine.aidl",
39        "binder_bindings/android/os/IUpdateEngineCallback.aidl",
40    ],
41    path: "binder_bindings",
42}
43
44cc_defaults {
45    name: "ue_defaults",
46
47    cflags: [
48        "-DBASE_VER=576279",
49        "-DUSE_HWID_OVERRIDE=0",
50        "-D_FILE_OFFSET_BITS=64",
51        "-D_POSIX_C_SOURCE=199309L",
52        "-Wa,--noexecstack",
53        "-Wall",
54        "-Werror",
55        "-Wextra",
56        "-Wformat=2",
57        "-Wno-psabi",
58        "-Wno-unused-parameter",
59        "-ffunction-sections",
60        "-fstack-protector-strong",
61        "-fvisibility=hidden",
62    ],
63    cppflags: [
64        "-Wnon-virtual-dtor",
65        "-fno-strict-aliasing",
66    ],
67    include_dirs: ["system"],
68    local_include_dirs: ["client_library/include"],
69    header_libs: ["libgtest_prod_headers"],
70    shared_libs: [
71        "libbrillo-stream",
72        "libbrillo",
73        "libchrome",
74    ],
75    ldflags: ["-Wl,--gc-sections"],
76
77    product_variables: {
78        pdk: {
79            enabled: false,
80        },
81    },
82
83    target: {
84        android: {
85            cflags: [
86                "-DUSE_FEC=1",
87            ],
88        },
89        host: {
90            cflags: [
91                "-DUSE_FEC=0",
92            ],
93        },
94        darwin: {
95            enabled: false,
96        },
97    },
98}
99
100// libcow_operation_convert (type: library)
101// ========================================================
102cc_library_static {
103    name: "libpayload_extent_utils",
104    defaults: [
105        "ue_defaults",
106    ],
107    host_supported: true,
108    recovery_available: true,
109    srcs: [
110        "payload_generator/extent_utils.cc",
111    ],
112    static_libs: [
113        "update_metadata-protos",
114    ],
115}
116
117cc_library {
118    name: "libcow_operation_convert",
119    host_supported: true,
120    recovery_available: true,
121    defaults: [
122        "ue_defaults",
123        "update_metadata-protos_exports",
124    ],
125    srcs: [
126        "common/cow_operation_convert.cc",
127    ],
128    static_libs: [
129        "libsnapshot_cow",
130        "update_metadata-protos",
131        "libpayload_extent_ranges",
132        "libpayload_extent_utils",
133        "libbrotli",
134        "libz",
135    ],
136}
137
138// update_metadata-protos (type: static_library)
139// ========================================================
140// Protobufs.
141cc_defaults {
142    name: "update_metadata-protos_exports",
143
144    shared_libs: ["libprotobuf-cpp-lite"],
145}
146
147cc_library_static {
148    name: "update_metadata-protos",
149    host_supported: true,
150    recovery_available: true,
151
152    srcs: ["update_engine/update_metadata.proto"],
153    cflags: [
154        "-Wall",
155        "-Werror",
156    ],
157    proto: {
158        canonical_path_from_root: false,
159        export_proto_headers: true,
160    },
161}
162
163// libpayload_consumer (type: static_library)
164// ========================================================
165// The payload application component and common dependencies.
166cc_defaults {
167    name: "libpayload_consumer_exports",
168    defaults: ["update_metadata-protos_exports"],
169
170    static_libs: [
171        "update_metadata-protos",
172        "libxz",
173        "libbz",
174        "libbspatch",
175        "libbrotli",
176        "libc++fs",
177        "libfec_rs",
178        "libpuffpatch",
179        "libverity_tree",
180        "libsnapshot_cow",
181        "libbrotli",
182        "libz",
183        "libpayload_extent_ranges",
184        "libpayload_extent_utils",
185        "libcow_operation_convert",
186    ],
187    shared_libs: [
188        "libbase",
189        "libcrypto",
190        "libfec",
191        "libziparchive",
192    ],
193}
194
195cc_library_static {
196    name: "libpayload_consumer",
197    defaults: [
198        "ue_defaults",
199        "libpayload_consumer_exports",
200    ],
201    host_supported: true,
202    recovery_available: true,
203
204    srcs: [
205        "aosp/platform_constants_android.cc",
206        "common/action_processor.cc",
207        "common/boot_control_stub.cc",
208        "common/clock.cc",
209        "common/constants.cc",
210        "common/cpu_limiter.cc",
211        "common/dynamic_partition_control_stub.cc",
212        "common/error_code_utils.cc",
213        "common/file_fetcher.cc",
214        "common/hash_calculator.cc",
215        "common/http_common.cc",
216        "common/http_fetcher.cc",
217        "common/hwid_override.cc",
218        "common/multi_range_http_fetcher.cc",
219        "common/prefs.cc",
220        "common/proxy_resolver.cc",
221        "common/subprocess.cc",
222        "common/terminator.cc",
223        "common/utils.cc",
224        "payload_consumer/bzip_extent_writer.cc",
225        "payload_consumer/cached_file_descriptor.cc",
226        "payload_consumer/certificate_parser_android.cc",
227        "payload_consumer/cow_writer_file_descriptor.cc",
228        "payload_consumer/delta_performer.cc",
229        "payload_consumer/extent_reader.cc",
230        "payload_consumer/extent_writer.cc",
231        "payload_consumer/file_descriptor.cc",
232        "payload_consumer/file_descriptor_utils.cc",
233        "payload_consumer/file_writer.cc",
234        "payload_consumer/filesystem_verifier_action.cc",
235        "payload_consumer/install_plan.cc",
236        "payload_consumer/mount_history.cc",
237        "payload_consumer/payload_constants.cc",
238        "payload_consumer/payload_metadata.cc",
239        "payload_consumer/payload_verifier.cc",
240        "payload_consumer/partition_writer.cc",
241        "payload_consumer/partition_writer_factory_android.cc",
242        "payload_consumer/vabc_partition_writer.cc",
243        "payload_consumer/snapshot_extent_writer.cc",
244        "payload_consumer/postinstall_runner_action.cc",
245        "payload_consumer/verity_writer_android.cc",
246        "payload_consumer/xz_extent_writer.cc",
247        "payload_consumer/fec_file_descriptor.cc",
248        "payload_consumer/partition_update_generator_android.cc",
249    ],
250}
251
252// libupdate_engine_boot_control (type: static_library)
253// ========================================================
254// A BootControl class implementation using Android's HIDL boot_control HAL.
255cc_defaults {
256    name: "libupdate_engine_boot_control_exports",
257    defaults: ["update_metadata-protos_exports"],
258
259    static_libs: [
260        "libcutils",
261        "libfs_mgr_binder",
262        "libgsi",
263        "libpayload_consumer",
264        "libsnapshot",
265        "libsnapshot_cow",
266        "libz",
267        "update_metadata-protos",
268    ],
269    shared_libs: [
270        "libbootloader_message",
271        "libhidlbase",
272        "liblp",
273        "libstatslog",
274        "libutils",
275        "android.hardware.boot@1.0",
276        "android.hardware.boot@1.1",
277    ],
278    header_libs: [
279        "avb_headers",
280    ],
281    target: {
282        recovery: {
283            static_libs: [
284                "libfs_mgr",
285                "libsnapshot_nobinder",
286            ],
287            exclude_static_libs: [
288                "libfs_mgr_binder",
289                "libsnapshot",
290            ],
291            exclude_shared_libs: [
292                "libstatslog",
293            ],
294        },
295    },
296}
297
298cc_library_static {
299    name: "libupdate_engine_boot_control",
300    defaults: [
301        "ue_defaults",
302        "libupdate_engine_boot_control_exports",
303        "libpayload_consumer_exports",
304    ],
305    recovery_available: true,
306
307    srcs: [
308        "aosp/boot_control_android.cc",
309        "aosp/cleanup_previous_update_action.cc",
310        "aosp/dynamic_partition_control_android.cc",
311        "aosp/dynamic_partition_utils.cc",
312    ],
313}
314
315// libupdate_engine_android (type: static_library)
316// ========================================================
317// The main daemon static_library used in Android (non-Brillo). This only has a
318// loop to apply payloads provided by the upper layer via a Binder interface.
319cc_defaults {
320    name: "libupdate_engine_android_exports",
321    defaults: [
322        "ue_defaults",
323        "libpayload_consumer_exports",
324        "libupdate_engine_boot_control_exports",
325    ],
326
327    static_libs: [
328        "libavb",
329        "libavb_user",
330        "gkiprops",
331        "libpayload_consumer",
332        "libupdate_engine_boot_control",
333        "PlatformProperties",
334    ],
335    shared_libs: [
336        "apex_aidl_interface-cpp",
337        "libandroid_net",
338        "libbase",
339        "libbinder",
340        "libbinderwrapper",
341        "libbootloader_message",
342        "libbrillo-binder",
343        "libcurl",
344        "libcutils",
345        "libupdate_engine_stable-V1-cpp",
346        "liblog",
347        "libssl",
348        "libstatslog",
349        "libutils",
350    ],
351    whole_static_libs: [
352        "com.android.sysprop.apex",
353    ],
354}
355
356cc_library_static {
357    name: "libupdate_engine_android",
358    defaults: [
359        "ue_defaults",
360        "libupdate_engine_android_exports",
361    ],
362
363    // TODO(deymo): Remove external/cros/system_api/dbus once the strings are moved
364    // out of the DBus interface.
365    include_dirs: ["external/cros/system_api/dbus"],
366
367    aidl: {
368        local_include_dirs: ["binder_bindings"],
369        export_aidl_headers: true,
370    },
371
372    srcs: [
373        ":libupdate_engine_aidl",
374        "common/system_state.cc",
375        "aosp/apex_handler_android.cc",
376        "aosp/binder_service_android.cc",
377        "aosp/binder_service_stable_android.cc",
378        "aosp/daemon_android.cc",
379        "aosp/daemon_state_android.cc",
380        "aosp/hardware_android.cc",
381        "aosp/logging_android.cc",
382        "aosp/network_selector_android.cc",
383        "aosp/update_attempter_android.cc",
384        "certificate_checker.cc",
385        "download_action.cc",
386        "libcurl_http_fetcher.cc",
387        "metrics_utils.cc",
388        "update_boot_flags_action.cc",
389        "update_status_utils.cc",
390    ],
391}
392
393// update_engine (type: executable)
394// ========================================================
395// update_engine daemon.
396cc_binary {
397    name: "update_engine",
398    defaults: [
399        "ue_defaults",
400        "libupdate_engine_android_exports",
401    ],
402
403    static_libs: ["libupdate_engine_android"],
404    required: [
405        "cacerts_google",
406        "otacerts",
407    ],
408
409    srcs: ["main.cc", "aosp/metrics_reporter_android.cc"],
410    init_rc: ["update_engine.rc"],
411}
412
413// update_engine_sideload (type: executable)
414// ========================================================
415// A binary executable equivalent to update_engine daemon that installs an update
416// from a local file directly instead of running in the background. Used in
417// recovery image.
418cc_binary {
419    name: "update_engine_sideload",
420    defaults: [
421        "ue_defaults",
422        "update_metadata-protos_exports",
423        "libupdate_engine_boot_control_exports",
424        "libpayload_consumer_exports",
425    ],
426    recovery: true,
427
428    cflags: ["-D_UE_SIDELOAD"],
429    // TODO(deymo): Remove external/cros/system_api/dbus once the strings are moved
430    // out of the DBus interface.
431    include_dirs: ["external/cros/system_api/dbus"],
432    header_libs: ["libgtest_prod_headers"],
433
434    srcs: [
435        "aosp/hardware_android.cc",
436        "aosp/logging_android.cc",
437        "aosp/sideload_main.cc",
438        "aosp/update_attempter_android.cc",
439        "common/metrics_reporter_stub.cc",
440        "common/network_selector_stub.cc",
441        "common/system_state.cc",
442        "download_action.cc",
443        "metrics_utils.cc",
444        "update_boot_flags_action.cc",
445        "update_status_utils.cc",
446    ],
447
448    // Use commonly used shared libraries. libprotobuf-cpp-lite.so is filtered out,
449    // as it doesn't look beneficial to be installed separately due to its size. Note
450    // that we explicitly request their recovery variants, so that the expected files
451    // will be used and installed.
452    shared_libs: [
453        "libbase",
454        "liblog",
455    ],
456    static_libs: [
457        "libpayload_consumer",
458        "libupdate_engine_boot_control",
459        "update_metadata-protos",
460
461        // We add the static versions of the shared libraries that are not installed to
462        // recovery image due to size concerns. Need to include all the static library
463        // dependencies of these static libraries.
464        "gkiprops",
465        "libevent",
466        "libmodpb64",
467        "libprotobuf-cpp-lite",
468        "libbrillo-stream",
469        "libbrillo",
470        "libchrome",
471    ],
472    target: {
473        recovery: {
474            exclude_shared_libs: [
475                "libprotobuf-cpp-lite",
476                "libbrillo-stream",
477                "libbrillo",
478                "libchrome",
479            ],
480        },
481    },
482
483    required: [
484        "otacerts.recovery",
485    ],
486}
487
488// update_engine_client (type: executable)
489// ========================================================
490// update_engine console client.
491cc_binary {
492    name: "update_engine_client",
493    defaults: ["ue_defaults"],
494
495    // TODO(deymo): Remove external/cros/system_api/dbus once the strings are moved
496    // out of the DBus interface.
497    include_dirs: ["external/cros/system_api/dbus"],
498
499    shared_libs: [
500        "libbinder",
501        "libbinderwrapper",
502        "libbrillo-binder",
503        "libutils",
504    ],
505
506    aidl: {
507        local_include_dirs: ["binder_bindings"],
508    },
509
510    srcs: [
511        ":libupdate_engine_aidl",
512        "aosp/update_engine_client_android.cc",
513        "common/error_code_utils.cc",
514        "update_status_utils.cc",
515    ],
516}
517
518// libpayload_generator (type: static_library)
519// ========================================================
520// server-side code. This is used for delta_generator and unittests but not
521// for any client code.
522cc_defaults {
523    name: "libpayload_generator_exports",
524    defaults: [
525        "libpayload_consumer_exports",
526        "update_metadata-protos_exports",
527    ],
528
529    header_libs: [
530        "bootimg_headers",
531    ],
532    static_libs: [
533        "libavb",
534        "libbrotli",
535        "libbsdiff",
536        "libdivsufsort",
537        "libdivsufsort64",
538        "liblzma",
539        "libpayload_consumer",
540        "libpuffdiff",
541        "libverity_tree",
542        "update_metadata-protos",
543        "libpayload_extent_utils",
544        "libcow_size_estimator",
545    ],
546    shared_libs: [
547        "libbase",
548        "libext2fs",
549    ],
550}
551
552cc_library_static {
553    name: "libpayload_extent_ranges",
554    defaults: [
555        "ue_defaults",
556    ],
557    host_supported: true,
558    recovery_available: true,
559    srcs: [
560        "payload_generator/extent_ranges.cc",
561    ],
562    static_libs: [
563        "update_metadata-protos",
564    ],
565}
566
567cc_library_static {
568    name: "libcow_size_estimator",
569    defaults: [
570        "ue_defaults",
571        "update_metadata-protos_exports"
572    ],
573    host_supported: true,
574    recovery_available: true,
575    srcs: [
576        "payload_generator/cow_size_estimator.cc",
577    ],
578    static_libs: [
579        "update_metadata-protos",
580        "libbase",
581        "libsnapshot_cow",
582        "libcow_operation_convert",
583    ],
584}
585
586cc_library_static {
587    name: "libpayload_generator",
588    defaults: [
589        "ue_defaults",
590        "libpayload_generator_exports",
591    ],
592    host_supported: true,
593
594    srcs: [
595        "common/system_state.cc",
596        "download_action.cc",
597        "payload_generator/ab_generator.cc",
598        "payload_generator/annotated_operation.cc",
599        "payload_generator/blob_file_writer.cc",
600        "payload_generator/block_mapping.cc",
601        "payload_generator/boot_img_filesystem.cc",
602        "payload_generator/bzip.cc",
603        "payload_generator/deflate_utils.cc",
604        "payload_generator/delta_diff_generator.cc",
605        "payload_generator/delta_diff_utils.cc",
606        "payload_generator/ext2_filesystem.cc",
607        "payload_generator/extent_ranges.cc",
608        "payload_generator/full_update_generator.cc",
609        "payload_generator/mapfile_filesystem.cc",
610        "payload_generator/merge_sequence_generator.cc",
611        "payload_generator/payload_file.cc",
612        "payload_generator/payload_generation_config_android.cc",
613        "payload_generator/payload_generation_config.cc",
614        "payload_generator/payload_properties.cc",
615        "payload_generator/payload_signer.cc",
616        "payload_generator/raw_filesystem.cc",
617        "payload_generator/squashfs_filesystem.cc",
618        "payload_generator/xz_android.cc",
619    ],
620}
621
622// delta_generator (type: executable)
623// ========================================================
624// server-side delta generator.
625cc_binary_host {
626    name: "delta_generator",
627    defaults: [
628        "ue_defaults",
629        "libpayload_generator_exports",
630        "libpayload_consumer_exports",
631    ],
632
633    static_libs: [
634        "libavb_host_sysdeps",
635        "libpayload_consumer",
636        "libpayload_generator",
637    ],
638
639    srcs: ["payload_generator/generate_delta_main.cc"],
640}
641
642cc_test {
643    name: "ue_unittest_delta_generator",
644    defaults: [
645        "ue_defaults",
646        "libpayload_generator_exports",
647        "libpayload_consumer_exports",
648    ],
649
650    static_libs: [
651        "libpayload_consumer",
652        "libpayload_generator",
653    ],
654
655    srcs: ["payload_generator/generate_delta_main.cc"],
656
657    gtest: false,
658    stem: "delta_generator",
659}
660
661// test_http_server (type: executable)
662// ========================================================
663// Test HTTP Server.
664cc_test {
665    name: "test_http_server",
666    defaults: ["ue_defaults"],
667    srcs: [
668        "common/http_common.cc",
669        "test_http_server.cc",
670    ],
671
672    gtest: false,
673}
674
675// test_subprocess (type: executable)
676// ========================================================
677// Test helper subprocess program.
678cc_test {
679    name: "test_subprocess",
680    defaults: ["ue_defaults"],
681    srcs: ["test_subprocess.cc"],
682
683    gtest: false,
684}
685
686// Public keys for unittests.
687// ========================================================
688genrule {
689    name: "ue_unittest_keys",
690    cmd: "openssl rsa -in $(location unittest_key.pem) -pubout -out $(location unittest_key.pub.pem) &&" +
691        "openssl rsa -in $(location unittest_key2.pem) -pubout -out $(location unittest_key2.pub.pem) &&" +
692        "openssl rsa -in $(location unittest_key_RSA4096.pem) -pubout -out $(location unittest_key_RSA4096.pub.pem) &&" +
693        "openssl pkey -in $(location unittest_key_EC.pem) -pubout -out $(location unittest_key_EC.pub.pem)",
694    srcs: [
695        "unittest_key.pem",
696        "unittest_key2.pem",
697        "unittest_key_RSA4096.pem",
698        "unittest_key_EC.pem",
699    ],
700    out: [
701        "unittest_key.pub.pem",
702        "unittest_key2.pub.pem",
703        "unittest_key_RSA4096.pub.pem",
704        "unittest_key_EC.pub.pem",
705    ],
706}
707
708// Sample images for unittests.
709// ========================================================
710// Extract sample image from the compressed sample_images.tar.bz2 file used by
711// the unittests.
712genrule {
713    name: "ue_unittest_disk_imgs",
714    cmd: "tar -jxf $(in) -C $(genDir)/gen disk_ext2_1k.img disk_ext2_4k.img disk_ext2_4k_empty.img disk_ext2_unittest.img",
715    srcs: ["sample_images/sample_images.tar.bz2"],
716    out: [
717        "gen/disk_ext2_1k.img",
718        "gen/disk_ext2_4k.img",
719        "gen/disk_ext2_4k_empty.img",
720        "gen/disk_ext2_unittest.img",
721    ],
722}
723
724// update_engine_unittests (type: executable)
725// ========================================================
726// Main unittest file.
727cc_test {
728    name: "update_engine_unittests",
729    defaults: [
730        "ue_defaults",
731        "libpayload_generator_exports",
732        "libupdate_engine_android_exports",
733    ],
734
735    static_libs: [
736        "libpayload_generator",
737        "libbrillo-test-helpers",
738        "libgmock",
739        "libchrome_test_helpers",
740        "libupdate_engine_android",
741        "libdm",
742    ],
743
744    header_libs: [
745        "libstorage_literals_headers",
746    ],
747
748    data: [
749        ":test_http_server",
750        ":test_subprocess",
751        ":ue_unittest_delta_generator",
752        ":ue_unittest_disk_imgs",
753        ":ue_unittest_keys",
754        "otacerts.zip",
755        "unittest_key.pem",
756        "unittest_key2.pem",
757        "unittest_key_RSA4096.pem",
758        "unittest_key_EC.pem",
759        "update_engine.conf",
760    ],
761
762    // We cannot use the default generated AndroidTest.xml because of the use of helper modules
763    // (i.e. test_http_server, test_subprocess, ue_unittest_delta_generator).
764    test_config: "test_config.xml",
765    test_suites: ["device-tests"],
766
767    srcs: [
768        "aosp/apex_handler_android_unittest.cc",
769        "aosp/cleanup_previous_update_action_unittest.cc",
770        "aosp/dynamic_partition_control_android_unittest.cc",
771        "aosp/update_attempter_android_unittest.cc",
772        "certificate_checker_unittest.cc",
773        "common/action_pipe_unittest.cc",
774        "common/action_processor_unittest.cc",
775        "common/action_unittest.cc",
776        "common/cow_operation_convert_unittest.cc",
777        "common/cpu_limiter_unittest.cc",
778        "common/fake_prefs.cc",
779        "common/file_fetcher_unittest.cc",
780        "common/hash_calculator_unittest.cc",
781        "common/http_fetcher_unittest.cc",
782        "common/hwid_override_unittest.cc",
783        "common/metrics_reporter_stub.cc",
784        "common/mock_http_fetcher.cc",
785        "common/prefs_unittest.cc",
786        "common/proxy_resolver_unittest.cc",
787        "common/subprocess_unittest.cc",
788        "common/terminator_unittest.cc",
789        "common/test_utils.cc",
790        "common/utils_unittest.cc",
791        "download_action_android_unittest.cc",
792        "libcurl_http_fetcher_unittest.cc",
793        "payload_consumer/bzip_extent_writer_unittest.cc",
794        "payload_consumer/cached_file_descriptor_unittest.cc",
795        "payload_consumer/cow_writer_file_descriptor_unittest.cc",
796        "payload_consumer/certificate_parser_android_unittest.cc",
797        "payload_consumer/delta_performer_integration_test.cc",
798        "payload_consumer/delta_performer_unittest.cc",
799        "payload_consumer/partition_writer_unittest.cc",
800        "payload_consumer/extent_reader_unittest.cc",
801        "payload_consumer/extent_writer_unittest.cc",
802        "payload_consumer/snapshot_extent_writer_unittest.cc",
803        "payload_consumer/fake_file_descriptor.cc",
804        "payload_consumer/file_descriptor_utils_unittest.cc",
805        "payload_consumer/file_writer_unittest.cc",
806        "payload_consumer/filesystem_verifier_action_unittest.cc",
807        "payload_consumer/install_plan_unittest.cc",
808        "payload_consumer/partition_update_generator_android_unittest.cc",
809        "payload_consumer/postinstall_runner_action_unittest.cc",
810        "payload_consumer/verity_writer_android_unittest.cc",
811        "payload_consumer/xz_extent_writer_unittest.cc",
812        "payload_generator/ab_generator_unittest.cc",
813        "payload_generator/blob_file_writer_unittest.cc",
814        "payload_generator/block_mapping_unittest.cc",
815        "payload_generator/boot_img_filesystem_unittest.cc",
816        "payload_generator/deflate_utils_unittest.cc",
817        "payload_generator/delta_diff_utils_unittest.cc",
818        "payload_generator/ext2_filesystem_unittest.cc",
819        "payload_generator/extent_ranges_unittest.cc",
820        "payload_generator/extent_utils_unittest.cc",
821        "payload_generator/fake_filesystem.cc",
822        "payload_generator/full_update_generator_unittest.cc",
823        "payload_generator/mapfile_filesystem_unittest.cc",
824        "payload_generator/merge_sequence_generator_unittest.cc",
825        "payload_generator/payload_file_unittest.cc",
826        "payload_generator/payload_generation_config_android_unittest.cc",
827        "payload_generator/payload_generation_config_unittest.cc",
828        "payload_generator/payload_properties_unittest.cc",
829        "payload_generator/payload_signer_unittest.cc",
830        "payload_generator/squashfs_filesystem_unittest.cc",
831        "payload_generator/zip_unittest.cc",
832        "testrunner.cc",
833        "update_status_utils_unittest.cc",
834    ],
835}
836
837// Brillo update payload generation script
838// ========================================================
839sh_binary {
840    name: "brillo_update_payload",
841    device_supported: false,
842    host_supported: true,
843
844    src: "scripts/brillo_update_payload",
845    required: [
846        "delta_generator",
847        "shflags",
848        "simg2img",
849    ],
850
851    target: {
852        darwin: {
853            enabled: false,
854        },
855    },
856}
857
858// update_engine header library
859cc_library_headers {
860    name: "libupdate_engine_headers",
861
862    // This header library is available to core and product modules.
863    product_available: true,
864
865    export_include_dirs: ["."],
866    apex_available: [
867        "com.android.gki.*",
868        "//apex_available:platform",
869    ],
870    host_supported: true,
871    recovery_available: true,
872    ramdisk_available: true,
873
874    target: {
875        darwin: {
876            enabled: false,
877        },
878    }
879}
880
881cc_binary_host {
882    name: "cow_converter",
883    defaults: [
884        "ue_defaults",
885        "libpayload_consumer_exports",
886    ],
887    srcs: [
888        "aosp/cow_converter.cc",
889    ],
890    static_libs: [
891        "liblog",
892        "libbrotli",
893        "libbase",
894        "libcow_operation_convert",
895        "libcow_size_estimator",
896        "libpayload_consumer",
897        "libpayload_extent_ranges",
898        "libpayload_extent_utils",
899        "libsnapshot_cow",
900        "libz",
901        "update_metadata-protos",
902    ],
903}
904