// Copyright (C) 2017 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 {
    default_applicable_licenses: [
        "frameworks_native_libs_nativewindow_license",
    ],
    default_team: "trendy_team_android_core_graphics_stack",
}

// Added automatically by a large-scale-change
// See: http://go/android-license-faq
license {
    name: "frameworks_native_libs_nativewindow_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-Apache-2.0",
    ],
    license_text: [
        "NOTICE",
    ],
}

ndk_headers {
    name: "libnativewindow_ndk_headers",
    from: "include/android",
    to: "android",
    srcs: ["include/android/*.h"],
    license: "NOTICE",
}

// TODO(b/118715870): cleanup header files
cc_library_headers {
    name: "libnativewindow_headers",
    export_include_dirs: ["include"],
    vendor_available: true,
    // TODO(b/153609531): remove when no longer needed.
    native_bridge_supported: true,
    min_sdk_version: "29",
    apex_available: [
        "//apex_available:platform",
        "com.android.media.swcodec",
        "test_com.android.media.swcodec",
    ],
    host_supported: true,
    target: {
        windows: {
            enabled: true,
        },
    },
}

ndk_library {
    name: "libnativewindow",
    symbol_file: "libnativewindow.map.txt",

    // Android O
    first_version: "26",
    export_header_libs: [
        "libnativewindow_ndk_headers",
    ],
}

cc_library {
    name: "libnativewindow",
    llndk: {
        symbol_file: "libnativewindow.map.txt",
        unversioned: true,
        override_export_include_dirs: [
            "include",
        ],
        export_llndk_headers: [
            "libarect_headers",
        ],
    },
    export_include_dirs: [
        "include",
        "include-private",
    ],

    cflags: [
        "-Wall",
        "-Werror",
        "-Wno-enum-compare",
        "-Wno-unused-function",
    ],

    version_script: "libnativewindow.map.txt",

    srcs: [
        "AHardwareBuffer.cpp",
        "ANativeWindow.cpp",
    ],

    shared_libs: [
        "libcutils",
        "liblog",
        "libutils",
        "libui",
        "libbinder",
        "libbinder_ndk",
        "android.hardware.graphics.common@1.1",
    ],

    static_libs: [
        "libarect",
        "libgrallocusage",
        "libgui_aidl_static",
    ],

    header_libs: [
        "libgui_headers",
        "libarect_headers",
        "libnativebase_headers",
        "libnativewindow_headers",
    ],

    // headers we include in our public headers
    export_header_lib_headers: [
        "libarect_headers",
        "libnativebase_headers",
    ],

    stubs: {
        symbol_file: "libnativewindow.map.txt",
        versions: ["29"],
    },
}

subdirs = ["tests"]
