/*
 * Copyright (C) 2024 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_android_defaults",
    defaults: [
        "libgfxstream_guest_cc_defaults",
    ],
    header_libs: [
        "gfxstream_opengl_headers",
    ],
    shared_libs: [
        "libcutils",
        "libdrm",
        "liblog",
        "libutils",
    ],
    export_shared_lib_headers: [
        "libdrm",
    ],
    export_include_dirs: [
        "include",
    ],
    local_include_dirs: [
        ".",
        "include",
    ],
}

cc_library_static {
    name: "libgfxstream_guest_android",
    defaults: [
        "libgfxstream_guest_android_defaults",
        "libplatform_virtgpu_defaults",
    ],
    target: {
        android: {
            header_libs: [
                "libnativebase_headers",
                "libgralloc_cb.ranchu",
                "minigbm_headers",
            ],
            shared_libs: [
                "lib_renderControl_enc",
                "libnativewindow",
            ],
            srcs: [
                "ANativeWindowAndroid.cpp",
                "Gralloc.cpp",
                "GrallocGoldfish.cpp",
                "GrallocMinigbm.cpp",
            ],
        },
        host: {
            srcs: [
                "ANativeWindowEmulated.cpp",
                "GrallocEmulated.cpp",
            ],
        },
    },
}
