// 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.

cc_defaults {
    name: "recovery_defaults",

    cflags: [
        "-D_FILE_OFFSET_BITS=64",

        // Must be the same as RECOVERY_API_VERSION.
        "-DRECOVERY_API_VERSION=3",

        "-Wall",
        "-Werror",
    ],
}

cc_library {
    name: "librecovery_ui",
    recovery_available: true,

    defaults: [
        "recovery_defaults",
    ],

    srcs: [
        "device.cpp",
        "screen_ui.cpp",
        "ui.cpp",
        "vr_ui.cpp",
        "wear_ui.cpp"
    ],

    static_libs: [
        "libminui",
        "libotautil",
    ],

    shared_libs: [
        "libbase",
        "libpng",
        "libz",
    ],
}

// Generic device that uses ScreenRecoveryUI.
cc_library_static {
    name: "librecovery_ui_default",
    recovery_available: true,

    defaults: [
        "recovery_defaults",
    ],

    srcs: [
        "default_device.cpp",
    ],
}

// The default wear device that uses WearRecoveryUI.
cc_library_static {
    name: "librecovery_ui_wear",
    recovery_available: true,

    defaults: [
        "recovery_defaults",
    ],

    srcs: [
        "wear_device.cpp",
    ],
}

// The default VR device that uses VrRecoveryUI.
cc_library_static {
    name: "librecovery_ui_vr",
    recovery_available: true,

    defaults: [
        "recovery_defaults",
    ],

    srcs: [
        "vr_device.cpp",
    ],
}

cc_defaults {
    name: "librecovery_defaults",

    defaults: [
        "recovery_defaults",
    ],

    shared_libs: [
        "libbase",
        "libbootloader_message",
        "libcrypto",
        "libcutils",
        "libext4_utils",
        "libfs_mgr",
        "libfusesideload",
        "libhidl-gen-utils",
        "liblog",
        "libpng",
        "libselinux",
        "libtinyxml2",
        "libutils",
        "libz",
        "libziparchive",
    ],

    static_libs: [
        "libminui",
        "libverifier",
        "libotautil",
        "libvintf_recovery",
        "libvintf",

        // TODO(b/80132328): Remove the dependency on static health HAL.
        "libhealthd.default",
        "android.hardware.health@2.0-impl",
        "android.hardware.health@2.0",
        "android.hardware.health@1.0",
        "android.hardware.health@1.0-convert",
        "libhealthstoragedefault",
        "libhidltransport",
        "libhidlbase",
        "libhwbinder_noltopgo",
        "libbatterymonitor",
    ],
}

cc_library_static {
    name: "librecovery",
    recovery_available: true,

    defaults: [
        "librecovery_defaults",
    ],

    srcs: [
        "adb_install.cpp",
        "fsck_unshare_blocks.cpp",
        "fuse_sdcard_provider.cpp",
        "install.cpp",
        "recovery.cpp",
        "roots.cpp",
    ],

    include_dirs: [
        "system/vold",
    ],
}

cc_library_static {
    name: "libverifier",
    recovery_available: true,

    defaults: [
        "recovery_defaults",
    ],

    srcs: [
        "asn1_decoder.cpp",
        "verifier.cpp",
    ],

    shared_libs: [
        "libbase",
        "libcrypto",
        "libcrypto_utils",
    ],

    static_libs: [
        "libotautil",
    ],
}

cc_binary {
    name: "recovery",
    recovery: true,

    defaults: [
        "librecovery_defaults",
    ],

    srcs: [
        "logging.cpp",
        "recovery_main.cpp",
    ],

    shared_libs: [
        "libminadbd_services",
        "librecovery_ui",
    ],

    static_libs: [
        "librecovery",
        "librecovery_ui_default",
    ],

    required: [
        "e2fsdroid.recovery",
        "librecovery_ui_ext",
        "mke2fs.conf",
        "mke2fs.recovery",
        "recovery_deps",
    ],
}

// The dynamic executable that runs after /data mounts.
cc_binary {
    name: "recovery-persist",

    defaults: [
        "recovery_defaults",
    ],

    srcs: [
        "logging.cpp",
        "recovery-persist.cpp",
    ],

    shared_libs: [
        "libbase",
        "liblog",
    ],

    static_libs: [
        "libotautil",
    ],

    init_rc: [
        "recovery-persist.rc",
    ],
}

// The dynamic executable that runs at init.
cc_binary {
    name: "recovery-refresh",

    defaults: [
        "recovery_defaults",
    ],

    srcs: [
        "logging.cpp",
        "recovery-refresh.cpp",
    ],

    shared_libs: [
        "libbase",
        "liblog",
    ],

    static_libs: [
        "libotautil",
    ],

    init_rc: [
        "recovery-refresh.rc",
    ],
}
