/*
 * Copyright (C) 2023 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.
 */

package {
    // See: http://go/android-license-faq
    default_applicable_licenses: ["hardware_google_gfxstream_license"],
}

cc_defaults {
    name: "libgfxstream_guest_vulkan_defaults",
    host_supported: true,
    vendor: true,
    defaults: [
        "libgfxstream_guest_cc_defaults",
        "mesa_common_defaults_gfxstream",
    ],
    generated_headers: [
        "vk_cmd_queue_header_gfxstream",
        "vk_physical_device_features_header_gfxstream",
        "vk_physical_device_properties_header_gfxstream",
    ],
    header_libs: [
        "libgfxstream_vulkan_headers",
        "mesa_common_headers_gfxstream",
        "libnativewindow_headers",
        "vulkan_enc_headers",
    ],
    static_libs: [
        "libmesa_util_c11_gfxstream",
        "libmesa_vulkan_util_gfxstream",
        "libmesa_vulkan_runtime_gfxstream",
        "libmesa_vulkan_wsi_gfxstream",
        "libgfxstream_guest_vulkan_entrypoints",
        "libmesa_util_gfxstream",
        "libmesa_util_format_gfxstream",
        "libGoldfishAddressSpace",
        "libringbuffer",
        "libqemupipe.ranchu",
        "libarect",
        "libgfxstream_androidemu_static",
    ],
    shared_libs: [
        "liblog",
        "libcutils",
        "libGLESv1_enc",
        "libGLESv2_enc",
        "lib_renderControl_enc",
        "libOpenglCodecCommon",
        "libbase",
        "libdrm",
    ],
    cflags: [
        "-DLOG_TAG=\"goldfish_vulkan\"",
        "-DVK_NO_PROTOTYPES",
        "-fstrict-aliasing",
        "-fvisibility=hidden",
        "-Wno-missing-field-initializers",
        "-Wno-unused-function",
        "-Wno-unused-parameter",
        "-Wno-cast-calling-convention",
    ],
    ldflags: [
        // Mesa always adds Bsymbolic when available (see 'ld_args_bsymbolic' in Meson build). Duplicate that
        // behavior here. '--gc-sections' has stronger justification: this lets drivers drop
        // shared code unused by that specific driver (particularly relevant for Vulkan drivers).
        "-Wl,-Bsymbolic",
        "-Wl,--gc-sections",
    ],
    include_dirs: [
        "hardware/google/gfxstream/guest/GoldfishAddressSpace/include",
    ],
    srcs: [
        "gfxstream_vk_device.cpp",
        "gfxstream_vk_cmd.cpp",
        "gfxstream_vk_wsi.cpp",
        ":vulkan_enc_impl",
    ],
    target: {
        android: {
            relative_install_path: "hw",
            header_libs: [
                "hwvulkan_headers",
            ],
            shared_libs: [
                "libnativewindow",
                "libsync",
            ],
            srcs: [
                "gfxstream_vk_android.cpp",
            ],
        },
    },
}

cc_library_shared {
    name: "vulkan.ranchu",
    defaults: [
        "libgfxstream_guest_vulkan_defaults",
    ],
    static_libs: [
        "libplatform",
        "libgfxstream_guest_android",
        "libgfxstream_guest_system_common",
    ],
}

cc_library_shared {
    name: "libgfxstream_guest_vulkan_with_host",
    defaults: [
        "libgfxstream_guest_vulkan_defaults",
    ],
    shared_libs: [
        "libvirtgpu_kumquat_ffi",
    ],
    static_libs: [
        "libgfxstream_guest_android_with_host",
        "libgfxstream_guest_system_common_with_host",
        "libgfxstream_platform_kumquat",
    ],
    cflags: [
        "-DEND2END_TESTS",
    ],
    target: {
        host: {
            compile_multilib: "64",
        },
        android: {
            compile_multilib: "64",
        },
    },
}
