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

// This is required because no Android.bp can include a library defined in an
// Android.mk. Eventually should kill libfastboot (defined in Android.mk)
cc_library_host_static {
    name: "libfastboot2",

    //host_supported: true,

    compile_multilib: "first",
    srcs: [
        "bootimg_utils.cpp",
        "fs.cpp",
        "socket.cpp",
        "tcp.cpp",
        "udp.cpp",
        "util.cpp",
        "fastboot_driver.cpp",
    ],

    static_libs: [
        "libziparchive",
        "libsparse",
        "libutils",
        "liblog",
        "libz",
        "libdiagnose_usb",
        "libbase",
        "libcutils",
        "libgtest",
        "libgtest_main",
        "libbase",
        "libadb_host",
        "liblp",
    ],

    header_libs: [
        "bootimg_headers",
    ],

    export_header_lib_headers: [
        "bootimg_headers",
    ],

    target: {
        linux: {
            srcs: ["usb_linux.cpp"],
        },

        darwin: {
            srcs: ["usb_osx.cpp"],

            host_ldlibs: [
                "-framework CoreFoundation",
                "-framework IOKit",
            ],
        },

        windows: {
            srcs: ["usb_windows.cpp"],

            host_ldlibs: [
                "-lws2_32",
            ],
        },
    },

    cflags: [
        "-Wall",
        "-Wextra",
        "-Werror",
        "-Wunreachable-code",
    ],

    export_include_dirs: ["."],

}

cc_defaults {
    name: "fastboot_defaults",

    cflags: [
        "-Wall",
        "-Wextra",
        "-Werror",
        "-Wvla",
    ],
    rtti: true,

    clang_cflags: [
        "-Wthread-safety",
    ],
}

cc_binary {
    name: "fastbootd",
    defaults: ["fastboot_defaults"],

    recovery: true,

    srcs: [
        "device/commands.cpp",
        "device/fastboot_device.cpp",
        "device/flashing.cpp",
        "device/main.cpp",
        "device/usb_client.cpp",
        "device/utility.cpp",
        "device/variables.cpp",
    ],

    shared_libs: [
        "android.hardware.boot@1.0",
        "android.hardware.boot@1.1",
        "android.hardware.fastboot@1.0",
        "android.hardware.health@2.0",
        "libadbd",
        "libasyncio",
        "libbase",
        "libbootloader_message",
        "libcutils",
        "libext2_uuid",
        "libext4_utils",
        "libfs_mgr",
        "libgsi",
        "libhidlbase",
        "liblog",
        "liblp",
        "libprotobuf-cpp-lite",
        "libsparse",
        "libutils",
    ],

    static_libs: [
        "libhealthhalutils",
        "libsnapshot_nobinder",
    ],

    header_libs: [
        "libsnapshot_headers",
    ]
}

cc_defaults {
    name: "fastboot_host_defaults",

    use_version_lib: true,

    cflags: [
        "-Wall",
        "-Wextra",
        "-Werror",
        "-Wunreachable-code",
    ],

    target: {
        darwin: {
            cflags: ["-Wno-unused-parameter"],
            host_ldlibs: [
                "-lpthread",
                "-framework CoreFoundation",
                "-framework IOKit",
            ],
        },
        windows: {
            enabled: true,

            host_ldlibs: ["-lws2_32"],
        },
        not_windows: {
            static_libs: [
                "libext4_utils",
            ],
        },
    },

    stl: "libc++_static",

    // Don't add anything here, we don't want additional shared dependencies
    // on the host fastboot tool, and shared libraries that link against libc++
    // will violate ODR.
    shared_libs: [],

    header_libs: [
        "avb_headers",
        "bootimg_headers",
    ],

    static_libs: [
        "libziparchive",
        "libsparse",
        "libutils",
        "liblog",
        "libz",
        "libdiagnose_usb",
        "libbase",
        "libcutils",
        "libgtest_host",
        "liblp",
        "libcrypto",
    ],
}

//
// Build host libfastboot.
//

cc_library_host_static {
    name: "libfastboot",
    defaults: ["fastboot_host_defaults"],

    srcs: [
        "bootimg_utils.cpp",
        "fastboot.cpp",
        "fs.cpp",
        "socket.cpp",
        "tcp.cpp",
        "udp.cpp",
        "util.cpp",
        "fastboot_driver.cpp",
    ],

    // Only version the final binaries
    use_version_lib: false,
    static_libs: ["libbuildversion"],

    generated_headers: ["platform_tools_version"],

    target: {
        windows: {
            srcs: ["usb_windows.cpp"],

            include_dirs: ["development/host/windows/usb/api"],
        },
        darwin: {
            srcs: ["usb_osx.cpp"],
        },
        linux_glibc: {
            srcs: ["usb_linux.cpp"],
        },
    },
}

//
// Build host fastboot / fastboot.exe
//

cc_binary_host {
    name: "fastboot",
    defaults: ["fastboot_host_defaults"],

    srcs: ["main.cpp"],
    static_libs: ["libfastboot"],

    required: [
        "mke2fs",
        "make_f2fs",
    ],
    dist: {
        targets: [
            "dist_files",
            "sdk",
            "win_sdk",
        ],
    },

    target: {
        not_windows: {
            required: [
                "e2fsdroid",
                "mke2fs.conf",
                "sload_f2fs",
            ],
        },
        windows: {
            required: ["AdbWinUsbApi"],
            shared_libs: ["AdbWinApi"],
        },
    },
}

//
// Build host fastboot_test.
//

cc_test_host {
    name: "fastboot_test",
    defaults: ["fastboot_host_defaults"],

    srcs: [
        "fastboot_test.cpp",
        "socket_mock.cpp",
        "socket_test.cpp",
        "tcp_test.cpp",
        "udp_test.cpp",
    ],

    static_libs: ["libfastboot"],

    target: {
        windows: {
            shared_libs: ["AdbWinApi"],
        },
        windows_x86_64: {
            // Avoid trying to build for win64
            enabled: false,
        },
    },
}
