| cc_defaults { | 
 |     name: "installd_defaults", | 
 |  | 
 |     cflags: [ | 
 |         "-Wall", | 
 |         "-Werror", | 
 |         "-Wextra", | 
 |  | 
 |         "-Wunreachable-code", | 
 |         "-Wunreachable-code-break", | 
 |         "-Wunreachable-code-return", | 
 |     ], | 
 |     srcs: [ | 
 |         "CacheItem.cpp", | 
 |         "CacheTracker.cpp", | 
 |         "CrateManager.cpp", | 
 |         "InstalldNativeService.cpp", | 
 |         "QuotaUtils.cpp", | 
 |         "dexopt.cpp", | 
 |         "execv_helper.cpp", | 
 |         "globals.cpp", | 
 |         "run_dex2oat.cpp", | 
 |         "unique_file.cpp", | 
 |         "utils.cpp", | 
 |         "utils_default.cpp", | 
 |         "view_compiler.cpp", | 
 |         ":installd_aidl", | 
 |     ], | 
 |     shared_libs: [ | 
 |         "libbase", | 
 |         "libbinder", | 
 |         "libcrypto", | 
 |         "libcutils", | 
 |         "liblog", | 
 |         "liblogwrap", | 
 |         "libprocessgroup", | 
 |         "libselinux", | 
 |         "libutils", | 
 |         "server_configurable_flags", | 
 |     ], | 
 |  | 
 |     product_variables: { | 
 |         arc: { | 
 |             exclude_srcs: [ | 
 |                 "QuotaUtils.cpp", | 
 |             ], | 
 |             static_libs: [ | 
 |                 "libarcdiskquota", | 
 |                 "arc_services_aidl", | 
 |             ], | 
 |             cflags: [ | 
 |                 "-DUSE_ARC", | 
 |             ], | 
 |         }, | 
 |     }, | 
 |  | 
 |     clang: true, | 
 |  | 
 |     tidy: true, | 
 |     tidy_checks: [ | 
 |         "-*", | 
 |         "clang-analyzer-security*", | 
 |         "cert-*", | 
 |         "-cert-err58-cpp", | 
 |     ], | 
 |     tidy_flags: [ | 
 |         "-warnings-as-errors=clang-analyzer-security*,cert-*" | 
 |     ], | 
 | } | 
 |  | 
 | // | 
 | // Static library used in testing and executable | 
 | // | 
 |  | 
 | cc_library_static { | 
 |     name: "libinstalld", | 
 |     defaults: ["installd_defaults"], | 
 |  | 
 |     export_include_dirs: ["."], | 
 |     aidl: { | 
 |         export_aidl_headers: true, | 
 |     }, | 
 |  | 
 |     product_variables: { | 
 |         arc: { | 
 |             exclude_srcs: [ | 
 |                 "QuotaUtils.cpp", | 
 |             ], | 
 |             static_libs: [ | 
 |                 "libarcdiskquota", | 
 |                 "arc_services_aidl", | 
 |             ], | 
 |             cflags: [ | 
 |                 "-DUSE_ARC", | 
 |             ], | 
 |         }, | 
 |     }, | 
 | } | 
 |  | 
 | cc_library_headers { | 
 |     name: "libinstalld_headers", | 
 |     export_include_dirs: ["."], | 
 | } | 
 |  | 
 | // | 
 | // Unit tests | 
 | // | 
 |  | 
 | cc_test_host { | 
 |     name: "run_dex2oat_test", | 
 |     test_suites: ["general-tests"], | 
 |     clang: true, | 
 |     srcs: [ | 
 |         "run_dex2oat_test.cpp", | 
 |         "run_dex2oat.cpp", | 
 |         "unique_file.cpp", | 
 |         "execv_helper.cpp", | 
 |     ], | 
 |     cflags: ["-Wall", "-Werror"], | 
 |     shared_libs: [ | 
 |         "libbase", | 
 |         "server_configurable_flags", | 
 |     ], | 
 |     test_config: "run_dex2oat_test.xml", | 
 | } | 
 |  | 
 | // | 
 | // Executable | 
 | // | 
 |  | 
 | cc_binary { | 
 |     name: "installd", | 
 |     defaults: ["installd_defaults"], | 
 |     srcs: ["installd.cpp"], | 
 |  | 
 |     static_libs: ["libdiskusage"], | 
 |  | 
 |     init_rc: ["installd.rc"], | 
 |  | 
 |     product_variables: { | 
 |         arc: { | 
 |             exclude_srcs: [ | 
 |                 "QuotaUtils.cpp", | 
 |             ], | 
 |             static_libs: [ | 
 |                 "libarcdiskquota", | 
 |                 "arc_services_aidl", | 
 |             ], | 
 |             cflags: [ | 
 |                 "-DUSE_ARC", | 
 |             ], | 
 |         }, | 
 |     }, | 
 |  | 
 |     // Needs to be wherever installd is as it's execed by | 
 |     // installd. | 
 |     required: [ "migrate_legacy_obb_data.sh" ], | 
 | } | 
 |  | 
 | // OTA chroot tool | 
 |  | 
 | cc_binary { | 
 |     name: "otapreopt_chroot", | 
 |     defaults: ["libapexd-deps"], | 
 |     cflags: [ | 
 |         "-Wall", | 
 |         "-Werror", | 
 |     ], | 
 |     clang: true, | 
 |  | 
 |     srcs: [ | 
 |         "otapreopt_chroot.cpp", | 
 |         "otapreopt_utils.cpp", | 
 |     ], | 
 |     shared_libs: [ | 
 |         "libbase", | 
 |         "liblog", | 
 |         "libutils", | 
 |     ], | 
 |     static_libs: [ | 
 |         "libapexd", | 
 |     ], | 
 | } | 
 |  | 
 | filegroup { | 
 |     name: "installd_aidl", | 
 |     srcs: [ | 
 |         "binder/**/*.aidl", | 
 |     ], | 
 |     path: "binder", | 
 | } | 
 |  | 
 | // | 
 | // Static library for otapreopt used in testing | 
 | // | 
 | cc_library_static { | 
 |     name: "libotapreoptparameters", | 
 |     cflags: [ | 
 |         "-Wall", | 
 |         "-Werror" | 
 |     ], | 
 |  | 
 |     srcs: ["otapreopt_parameters.cpp"], | 
 |  | 
 |     export_include_dirs: ["."], | 
 |  | 
 |     shared_libs: [ | 
 |         "libbase", | 
 |         "libcutils", | 
 |         "liblog", | 
 |         "libprocessgroup", | 
 |         "libutils", | 
 |     ], | 
 | } | 
 |  | 
 | // | 
 | //  OTA Executable | 
 | // | 
 |  | 
 | cc_binary { | 
 |     name: "otapreopt", | 
 |     cflags: [ | 
 |         "-Wall", | 
 |         "-Werror" | 
 |     ], | 
 |  | 
 |     srcs: [ | 
 |         "dexopt.cpp", | 
 |         "execv_helper.cpp", | 
 |         "globals.cpp", | 
 |         "otapreopt.cpp", | 
 |         "otapreopt_utils.cpp", | 
 |         "run_dex2oat.cpp", | 
 |         "unique_file.cpp", | 
 |         "utils.cpp", | 
 |         "utils_default.cpp", | 
 |         "view_compiler.cpp", | 
 |     ], | 
 |  | 
 |     static_libs: [ | 
 |         "libdiskusage", | 
 |         "libotapreoptparameters", | 
 |     ], | 
 |  | 
 |     shared_libs: [ | 
 |         "libbase", | 
 |         "libcrypto", | 
 |         "libcutils", | 
 |         "liblog", | 
 |         "liblogwrap", | 
 |         "libprocessgroup", | 
 |         "libselinux", | 
 |         "libutils", | 
 |         "server_configurable_flags", | 
 |     ], | 
 | } | 
 |  | 
 | // OTA slot script | 
 | sh_binary { | 
 |     name: "otapreopt_slot", | 
 |     src: "otapreopt_slot.sh", | 
 |     init_rc: ["otapreopt.rc"], | 
 | } | 
 |  | 
 | // OTA postinstall script | 
 | sh_binary { | 
 |     name: "otapreopt_script", | 
 |     src: "otapreopt_script.sh", | 
 |     // Let this depend on otapreopt, the chroot tool and the slot script, | 
 |     // so we just have to mention one in a configuration. | 
 |     required: [ | 
 |         "otapreopt", | 
 |         "otapreopt_chroot", | 
 |         "otapreopt_slot", | 
 |     ], | 
 | } | 
 |  | 
 | // Script to migrate legacy obb data. | 
 | sh_binary { | 
 |     name: "migrate_legacy_obb_data.sh", | 
 |     src: "migrate_legacy_obb_data.sh" | 
 | } |