/*
 * 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_library_headers {
    name: "libgfxstream_egl_headers",
    defaults: [
        "libgfxstream_guest_cc_defaults",
    ],
    export_include_dirs: [
        ".",
    ],
}

cc_library_shared {
    name: "libEGL_emulation",
    defaults: [
        "libgfxstream_guest_cc_defaults",
        "libplatform_virtgpu_defaults",
    ],
    header_libs: [
        "libgfxstream_guest_graphics_headers",
        "libnativebase_headers",
    ],
    export_header_lib_headers: [
        "libgfxstream_guest_graphics_headers",
    ],
    shared_libs: [
        "libcutils",
        "libdrm",
        "liblog",
        "libOpenglCodecCommon",
        "libOpenglSystemCommon",
    ],
    static_libs: [
        "libgfxstream_androidemu_static",
        "libarect",
        "libqemupipe.ranchu",
    ],
    cflags: [
        "-DGL_GLEXT_PROTOTYPES",
        "-DEGL_EGLEXT_PROTOTYPES",
        "-DLOG_TAG=\"EGL_emulation\"",
        "-DWITH_GLES2",
        "-Wno-gnu-designator",
    ],
    srcs: [
        "eglDisplay.cpp",
        "egl.cpp",
        "ClientAPIExts.cpp",
    ],
    target: {
        android: {
            relative_install_path: "egl",
            header_libs: [
                "libui_headers",
            ],
            shared_libs: [
                "libsync",
                "libdl",
            ],
        },
    },
}
