/*
 * 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",
        "vk_physical_device_features_header",
        "vk_physical_device_properties_header",
    ],
    header_libs: [
        "gfxstream_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",
        "libandroidemu_static",
    ],
    shared_libs: [
        "liblog",
        "libcutils",
        "libGLESv1_enc",
        "libGLESv2_enc",
        "lib_renderControl_enc",
        "libOpenglCodecCommon",
        "libbase",
        "libdrm",
    ],
    cflags: [
        "-DLOG_TAG=\"goldfish_vulkan\"",
        "-DVK_NO_PROTOTYPES",
        "-DVK_USE_PLATFORM_ANDROID_KHR",
        "-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: [
        "libplatform_rutabaga_server",
    ],
    static_libs: [
        "libgfxstream_guest_android_with_host",
        "libgfxstream_guest_system_common_with_host",
        "libplatform_rutabaga",
    ],
    cflags: [
        "-DEND2END_TESTS",
    ],
    target: {
        host: {
            compile_multilib: "64",
        },
        android: {
            compile_multilib: "64",
        },
    },
}
