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

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

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

    static_libs: [
        "librecovery_ui_default",
    ],
}

cc_defaults {
    name: "librecovery_defaults",

    defaults: [
        "recovery_defaults",
    ],

    shared_libs: [
        "android.hardware.boot@1.0",
        "android.hardware.boot@1.1",
        "libbase",
        "libbootloader_message",
        "libcrypto",
        "libcutils",
        "libfs_mgr",
        "liblp",
        "liblog",
        "libprotobuf-cpp-lite",
        "libziparchive",
    ],

    static_libs: [
        "libinstall",
        "librecovery_fastboot",
        "libminui",
        "librecovery_utils",
        "libotautil",
        "libsnapshot_nobinder",
    ],
}

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

    defaults: [
        "librecovery_defaults",
    ],

    srcs: [
        "fsck_unshare_blocks.cpp",
        "recovery.cpp",
    ],

    shared_libs: [
        "librecovery_ui",
    ],
}

prebuilt_etc {
    name: "init_recovery.rc",
    filename: "init.rc",
    src: "etc/init.rc",
    sub_dir: "init/hw",
    recovery: true,
}

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

    defaults: [
        "libinstall_defaults",
        "librecovery_defaults",
        "librecovery_utils_defaults",
    ],

    srcs: [
        "recovery_main.cpp",
    ],

    shared_libs: [
        "librecovery_ui",
    ],

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

    required: [
        "e2fsdroid.recovery",
        "init_recovery.rc",
        "librecovery_ui_ext",
        "minadbd",
        "mke2fs.conf.recovery",
        "mke2fs.recovery",
        "recovery_deps",
        "ueventd.rc.recovery",
    ],
}

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

    defaults: [
        "recovery_defaults",
    ],

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

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

    static_libs: [
        "librecovery_utils",
    ],

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

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

    defaults: [
        "recovery_defaults",
    ],

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

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

    static_libs: [
        "librecovery_utils",
    ],

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

filegroup {
    name: "res-testdata",

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