// 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",
        "libfstab",
    ],

    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_library_static {
    name: "librecovery_fastboot",
    recovery_available: true,
    defaults: [
        "recovery_defaults",
    ],

    srcs: [
        "fastboot/fastboot.cpp",
    ],

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

    static_libs: [
        "librecovery_ui_default",
    ],
}

cc_defaults {
    name: "librecovery_defaults",

    defaults: [
        "recovery_defaults",
    ],

    shared_libs: [
        "android.hardware.health@2.0",
        "libbase",
        "libbootloader_message",
        "libcrypto",
        "libcutils",
        "libext4_utils",
        "libfs_mgr",
        "libfusesideload",
        "libhidl-gen-utils",
        "libhidlbase",
        "libhidltransport",
        "liblog",
        "libpng",
        "libselinux",
        "libtinyxml2",
        "libutils",
        "libz",
        "libziparchive",
    ],

    static_libs: [
        "librecovery_fastboot",
        "libminui",
        "libpackage",
        "libverifier",
        "libotautil",

        // external dependencies
        "libhealthhalutils",
        "libvintf_recovery",
        "libvintf",
        "libfstab",
    ],
}

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

    defaults: [
        "librecovery_defaults",
    ],

    srcs: [
        "adb_install.cpp",
        "fsck_unshare_blocks.cpp",
        "fuse_sdcard_install.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",
        "libziparchive",
    ],

    static_libs: [
        "libotautil",
    ],
}

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

    defaults: [
        "recovery_defaults",
    ],

    srcs: [
        "package.cpp",
    ],

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

    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.recovery",
        "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",
        "libmetricslogger",
    ],

    static_libs: [
        "libotautil",
        "libfstab",
    ],

    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",
        "libfstab",
    ],

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

filegroup {
    name: "res-testdata",

    srcs: [
        "res-*/images/*_text.png",
    ],
}
