// // Copyright (C) 2018 The Android Open Source Project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // package { default_applicable_licenses: ["Android-Apache-2.0"], } cc_defaults { name: "libsnapshot_defaults", defaults: ["fs_mgr_defaults"], cflags: [ "-D_FILE_OFFSET_BITS=64", "-Wall", "-Werror", ], shared_libs: [ "libbase", "libchrome", "libcutils", "liblog", ], static_libs: [ "libbrotli", "libdm", "libfstab", "update_metadata-protos", ], whole_static_libs: [ "libbrotli", "libcutils", "libext2_uuid", "libext4_utils", "libfstab", "libsnapshot_snapuserd", "libz", ], header_libs: [ "libfiemap_headers", "libstorage_literals_headers", "libupdate_engine_headers", ], export_static_lib_headers: [ "update_metadata-protos", ], export_header_lib_headers: [ "libfiemap_headers", ], export_include_dirs: ["include"], proto: { type: "lite", export_proto_headers: true, canonical_path_from_root: false, }, } cc_defaults { name: "libsnapshot_hal_deps", cflags: [ "-DLIBSNAPSHOT_USE_HAL", ], shared_libs: [ "android.hardware.boot@1.0", "android.hardware.boot@1.1", "android.hardware.boot-V1-ndk", "libboot_control_client", ], } filegroup { name: "libsnapshot_sources", srcs: [ "android/snapshot/snapshot.proto", "device_info.cpp", "snapshot.cpp", "snapshot_reader.cpp", "snapshot_stats.cpp", "snapshot_stub.cpp", "snapshot_metadata_updater.cpp", "snapshot_writer.cpp", "partition_cow_creator.cpp", "return.cpp", "utility.cpp", ], } cc_library_headers { name: "libsnapshot_headers", recovery_available: true, defaults: ["libsnapshot_defaults"], } cc_library_static { name: "libsnapshot", defaults: [ "libsnapshot_defaults", "libsnapshot_hal_deps", ], srcs: [":libsnapshot_sources"], static_libs: [ "libfs_mgr_binder" ], } cc_library_static { name: "libsnapshot_init", native_coverage : true, defaults: ["libsnapshot_defaults"], srcs: [":libsnapshot_sources"], ramdisk_available: true, recovery_available: true, cflags: [ "-DLIBSNAPSHOT_NO_COW_WRITE", ], static_libs: [ "libfs_mgr", ], } cc_library_static { name: "libsnapshot_nobinder", defaults: [ "libsnapshot_defaults", "libsnapshot_hal_deps", ], srcs: [":libsnapshot_sources"], recovery_available: true, cflags: [ "-DLIBSNAPSHOT_NO_COW_WRITE", ], static_libs: [ "libfs_mgr", ], } cc_defaults { name: "libsnapshot_cow_defaults", defaults: [ "fs_mgr_defaults", ], cflags: [ "-D_FILE_OFFSET_BITS=64", "-Wall", "-Werror", ], shared_libs: [ "libbase", "liblog", ], static_libs: [ "libbrotli", "libz", "liblz4", ], export_include_dirs: ["include"], } cc_library_static { name: "libsnapshot_cow", defaults: [ "libsnapshot_cow_defaults", ], srcs: [ "libsnapshot_cow/cow_decompress.cpp", "libsnapshot_cow/cow_reader.cpp", "libsnapshot_cow/cow_writer.cpp", "libsnapshot_cow/cow_format.cpp", "libsnapshot_cow/cow_compress.cpp", ], host_supported: true, recovery_available: true, ramdisk_available: true, vendor_ramdisk_available: true, } cc_library_static { name: "libsnapshot_test_helpers", defaults: ["libsnapshot_defaults"], export_include_dirs: [ "include_test", ], srcs: [ "android/snapshot/snapshot.proto", "test_helpers.cpp", ], shared_libs: [ "android.hardware.boot@1.1", "libcrypto", ], export_shared_lib_headers: [ "android.hardware.boot@1.1", ], header_libs: [ "libstorage_literals_headers", ], export_header_lib_headers: [ "libstorage_literals_headers", ], static_libs: [ "libfs_mgr", "libgmock", "libgtest", ], } cc_defaults { name: "libsnapshot_test_defaults", defaults: ["libsnapshot_defaults", "libsnapshot_cow_defaults"], srcs: [ "partition_cow_creator_test.cpp", "snapshot_metadata_updater_test.cpp", "snapshot_reader_test.cpp", "snapshot_test.cpp", "snapshot_writer_test.cpp", ], shared_libs: [ "libbinder", "libcrypto", "libhidlbase", "libprotobuf-cpp-lite", "libutils", "libz", ], static_libs: [ "android.hardware.boot@1.0", "android.hardware.boot@1.1", "android.hardware.boot-V1-ndk", "libbrotli", "libc++fs", "libfs_mgr_binder", "libgflags", "libgsi", "libgmock", "liblp", "libsnapshot", "libsnapshot_cow", "libsnapshot_test_helpers", "libsparse", ], header_libs: [ "libstorage_literals_headers", ], test_suites: [ "vts", "device-tests" ], test_options: { min_shipping_api_level: 29, }, auto_gen_config: true, require_root: true, compile_multilib: "first", } cc_test { name: "vts_libsnapshot_test", defaults: ["libsnapshot_test_defaults", "libsnapshot_hal_deps"], } sh_test { name: "run_snapshot_tests", src: "run_snapshot_tests.sh", test_suites: [ "device-tests", ], required: [ "vts_libsnapshot_test", ], } cc_test { name: "vts_ota_config_test", srcs: [ "vts_ota_config_test.cpp", ], shared_libs: [ "libbase", ], test_suites: [ "vts", ], test_options: { min_shipping_api_level: 33, }, auto_gen_config: true, require_root: true, } cc_binary { name: "snapshotctl", defaults: ["libsnapshot_cow_defaults", "libsnapshot_hal_deps"], srcs: [ "snapshotctl.cpp", ], static_libs: [ "libbrotli", "libc++fs", "libfstab", "libsnapshot", "libsnapshot_cow", "libz", "update_metadata-protos", ], shared_libs: [ "libbase", "libext2_uuid", "libext4_utils", "libfs_mgr_binder", "libhidlbase", "liblog", "liblp", "libprotobuf-cpp-lite", "libstatslog", "libutils", ], header_libs: [ "libstorage_literals_headers", ], product_variables: { debuggable: { cppflags: [ "-DSNAPSHOTCTL_USERDEBUG_OR_ENG", ], shared_libs: [ "android.hardware.boot@1.0", "android.hardware.boot@1.1", "android.hardware.boot-V1-ndk", "libboot_control_client", ], }, }, } cc_test { name: "snapshot_power_test", srcs: [ "power_test.cpp", ], static_libs: [ "libc++fs", "libsnapshot", "update_metadata-protos", ], shared_libs: [ "libbase", "libfs_mgr_binder", "liblog", ], gtest: false, } cc_defaults { name: "libsnapshot_fuzzer_defaults", defaults: [ "libsnapshot_cow_defaults", ], native_coverage : true, srcs: [ // Compile the protobuf definition again with type full. "android/snapshot/snapshot_fuzz.proto", "update_engine/update_metadata.proto", "fuzz_utils.cpp", "snapshot_fuzz.cpp", "snapshot_fuzz_utils.cpp", // Compile libsnapshot sources directly to avoid dependency // to update_metadata-protos ":libsnapshot_sources", ], static_libs: [ "libbase", "libbrotli", "libc++fs", "libchrome", "libcrypto_static", "libcutils", "libext2_uuid", "libext4_utils", "libfstab", "libfs_mgr", "libgtest", // from libsnapshot_test_helpers "libgmock", // from libsnapshot_test_helpers "liblog", "liblp", "libsnapshot_cow", "libsnapshot_test_helpers", "libprotobuf-mutator", "libz", ], header_libs: [ "libfiemap_headers", "libstorage_literals_headers", "libupdate_engine_headers", ], proto: { type: "full", canonical_path_from_root: false, local_include_dirs: ["."], }, } cc_fuzz { name: "libsnapshot_fuzzer", defaults: ["libsnapshot_fuzzer_defaults"], corpus: ["corpus/*"], fuzz_config: { cc: ["android-virtual-ab+bugs@google.com"], componentid: 30545, hotlists: ["1646452"], fuzz_on_haiku_host: false, fuzz_on_haiku_device: true, }, } cc_test { name: "libsnapshot_fuzzer_test", defaults: ["libsnapshot_fuzzer_defaults"], data: ["corpus/*"], test_suites: [ "device-tests", ], auto_gen_config: true, require_root: true, } cc_test { name: "cow_api_test", defaults: [ "fs_mgr_defaults", "libsnapshot_cow_defaults", ], srcs: [ "libsnapshot_cow/cow_api_test.cpp", ], cflags: [ "-D_FILE_OFFSET_BITS=64", "-Wall", "-Werror", ], shared_libs: [ "libbase", "libcrypto", "liblog", "libz", ], static_libs: [ "libbrotli", "libgtest", "libsnapshot_cow", ], test_suites: [ "device-tests" ], test_options: { min_shipping_api_level: 30, }, auto_gen_config: true, require_root: false, host_supported: true, } cc_binary { name: "make_cow_from_ab_ota", host_supported: true, device_supported: false, cflags: [ "-D_FILE_OFFSET_BITS=64", "-Wall", "-Werror", ], static_libs: [ "libbase", "libbspatch", "libbrotli", "libbz", "libchrome", "libcrypto", "libgflags", "liblog", "libprotobuf-cpp-lite", "libpuffpatch", "libsnapshot_cow", "libsparse", "libxz", "libz", "liblz4", "libziparchive", "update_metadata-protos", ], srcs: [ "make_cow_from_ab_ota.cpp", ], target: { darwin: { enabled: false, }, }, } cc_binary { name: "estimate_cow_from_nonab_ota", defaults: [ "libsnapshot_cow_defaults", ], host_supported: true, device_supported: false, cflags: [ "-D_FILE_OFFSET_BITS=64", "-Wall", "-Werror", ], static_libs: [ "libbase", "libbrotli", "libbz", "libcrypto", "libgflags", "liblog", "libsnapshot_cow", "libsparse", "libz", "libziparchive", ], srcs: [ "estimate_cow_from_nonab_ota.cpp", ], target: { darwin: { enabled: false, }, }, } cc_binary { name: "inspect_cow", host_supported: true, device_supported: true, defaults: ["libsnapshot_cow_defaults"], cflags: [ "-D_FILE_OFFSET_BITS=64", "-Wall", "-Werror", ], static_libs: [ "libbase", "libbrotli", "libcrypto_static", "liblog", "libsnapshot_cow", "libz", ], shared_libs: [ ], srcs: [ "libsnapshot_cow/inspect_cow.cpp", ], } python_library_host { name: "snapshot_proto_python", srcs: [ "android/snapshot/snapshot.proto", ], proto: { canonical_path_from_root: false, }, }