// *** THIS PACKAGE HAS SPECIAL LICENSING CONDITIONS.  PLEASE
//     CONSULT THE OWNERS AND opensource-licensing@google.com BEFORE
//     DEPENDING ON IT IN YOUR PROJECT. ***
package {
    default_applicable_licenses: ["hardware_google_gfxstream_license"],
}

// Added automatically by a large-scale-change that took the approach of
// 'apply every license found to every target'. While this makes sure we respect
// every license restriction, it may not be entirely correct.
//
// e.g. GPL in an MIT project might only apply to the contrib/ directory.
//
// Please consider splitting the single license below into multiple licenses,
// taking care not to lose any license_kind information, and overriding the
// default license using the 'licenses: [...]' property on targets as needed.
//
// For unused files, consider creating a 'fileGroup' with "//visibility:private"
// to attach the license to, and including a comment whether the files may be
// used in the current project.
// See: http://go/android-license-faq
license {
    name: "hardware_google_gfxstream_license",
    visibility: [
        "//hardware/google/aemu:__subpackages__",
        ":__subpackages__",
    ],
    license_kinds: [
        "SPDX-license-identifier-Apache-2.0",
        "SPDX-license-identifier-BSD",
        "SPDX-license-identifier-CC-BY-4.0",
        "SPDX-license-identifier-ISC",
        "SPDX-license-identifier-MIT",
        "SPDX-license-identifier-BSL-1.0",
        "legacy_unencumbered",
    ],
}

cc_library_headers {
    name: "gfxstream_headers",
    vendor_available: true,
    host_supported: true,
    export_include_dirs: [
        ".",
        "include",
        "host",
        "host/gl",
        "host/gl/glestranslator/include",
        "host/vulkan",
        "utils/include",
    ],
    header_libs: [
        "aemu_common_headers",
        "gfxstream_magma_headers",
        "libgfxstream_vulkan_headers",
    ],
    export_header_lib_headers: [
        "aemu_common_headers",
        "gfxstream_magma_headers",
        "libgfxstream_vulkan_headers",
    ],
    apex_available: [
        "//apex_available:platform",
        "com.android.virt",
    ],
}

cc_library_headers {
    name: "gfxstream_x11_headers",
    vendor_available: true,
    host_supported: true,
    export_include_dirs: [
        "host/apigen-codec-common",
    ],
    apex_available: [
        "//apex_available:platform",
        "com.android.virt",
    ],
}

cc_library_headers {
    name: "gfxstream_magma_headers",
    vendor_available: true,
    host_supported: true,
    export_include_dirs: [
        "third-party/fuchsia/magma/include",
        // TODO(b/274956288): use consistent header paths
        "third-party/fuchsia/magma/include/lib",
    ],
    apex_available: [
        "//apex_available:platform",
        "com.android.virt",
    ],
}

cc_defaults {
    name: "gfxstream_cc_defaults",
    cflags: [
        "-DGFXSTREAM",
    ],
}

soong_config_string_variable {
    name: "mesa3d_platforms",
    values: [
        // Android surfaceless build
        "none",
        // The default when variable is not set is Android
    ],
}

cc_defaults {
    name: "gfxstream_guest_cc_defaults",
    defaults: [
        "gfxstream_cc_defaults",
    ],
    cflags: select(soong_config_variable("gfxstream", "mesa3d_platforms"), {
        // Android surfaceless build
        "none": [
            "-UANDROID",
            "-U__ANDROID__",
            "-DLINUX_GUEST_BUILD",
        ],
        // The default when variable is not set is Android
        default: [
            "-DVK_USE_PLATFORM_ANDROID_KHR",
        ],
    }),
}

cc_defaults {
    name: "gfxstream_host_cc_defaults",
    defaults: [
        "gfxstream_cc_defaults",
    ],
    cflags: [
        "-DGFXSTREAM_BUILD_WITH_SNAPSHOT_SUPPORT=1",
        "-DGFXSTREAM_BUILD_WITH_TRACING=1",
    ] + select(soong_config_variable("gfxstream", "mesa3d_platforms"), {
        // Android surfaceless build
        "none": [
            "-DGFXSTREAM_ENABLE_GUEST_VIRTIO_RESOURCE_TILING_CONTROL=1",
        ],
        // The default when variable is not set is Android
        default: [],
    }),
    target: {
        host: {
            cflags: [
                "-DGFXSTREAM_BUILD_WITH_SNAPSHOT_FRONTEND_SUPPORT=1",
            ],
        },
    },
}

cc_defaults {
    name: "gfxstream_defaults",
    cflags: [
        // Android build system has some global cflags that we cannot override (e.g.
        // -Werror=return-type), so -Wno-return-type and -Wno-return-type-c-linkage will not work.
        // See build/soong/cc/config/global.go
        "-DUSING_ANDROID_BP",
        "-D_FILE_OFFSET_BITS=64",
        "-DVK_GFXSTREAM_STRUCTURE_TYPE_EXT",
        "-DGFXSTREAM_ENABLE_HOST_GLES=1",
        "-Wall",
        "-Wno-unused-function",
        "-Wno-unused-parameter",
        "-Wno-unused-private-field",
        "-Wno-unused-variable",
    ],
    header_libs: [
        "gfxstream_headers",
        "gfxstream_x11_headers",
    ],
    target: {
        host: {
            compile_multilib: "64",
            cflags: [
                "-U__ANDROID__",
                "-UANDROID",
            ],
        },
        android: {
            compile_multilib: "64",
            shared_libs: ["libnativewindow"],
        },
        linux_bionic_arm64: {
            enabled: true,
            cflags: ["-Dandroidbionic"],
        },
    },
    host_supported: true,
    vendor_available: true,

    apex_available: [
        "//apex_available:platform",
        "com.android.virt",
    ],
}
