// 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_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",
        "libverifier",
        "libotautil",

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

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

filegroup {
    name: "res-testdata",

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