// Copyright (C) 2010 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_ui_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_ui_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-Apache-2.0",
    ],
    license_text: [
        "NOTICE",
    ],
}

cc_library_headers {
    name: "libui_fuzzableDataspaces_headers",
    export_include_dirs: ["include/ui/fuzzer/"],
}

cc_defaults {
    name: "libui-defaults",
    cflags: [
        "-Wall",
        "-Werror",
    ],
    cppflags: [
        "-Wextra",
    ],

    sanitize: {
        integer_overflow: true,
        misc_undefined: ["bounds"],
    },
}

cc_library_static {
    name: "libui-types",
    vendor_available: true,
    host_supported: true,
    target: {
        windows: {
            enabled: true,
        },
    },

    defaults: [
        "libui-defaults",
    ],

    apex_available: [
        "//apex_available:anyapex",
        "//apex_available:platform",
    ],
    min_sdk_version: "apex_inherit",

    shared_libs: [
        "libbase",
        "libutils",
    ],

    static_libs: [
        "libarect",
        "libmath",
    ],

    srcs: [
        "ColorSpace.cpp",
        "Rect.cpp",
        "Region.cpp",
        "Transform.cpp",
    ],

    export_include_dirs: [
        "include",
        "include_mock",
        "include_private",
        "include_types",
    ],

    export_static_lib_headers: [
        "libarect",
        "libmath",
    ],

}

cc_library_shared {
    name: "libui",
    vendor_available: true,
    vndk: {
        enabled: true,
    },
    double_loadable: true,

    cflags: [
        "-Wall",
        "-Werror",
    ],
    cppflags: [
        "-Wextra",
    ],

    sanitize: {
        integer_overflow: true,
        misc_undefined: ["bounds"],
    },

    srcs: [
        "DebugUtils.cpp",
        "DeviceProductInfo.cpp",
        "DisplayIdentification.cpp",
        "DynamicDisplayInfo.cpp",
        "Fence.cpp",
        "FenceTime.cpp",
        "FrameStats.cpp",
        "Gralloc.cpp",
        "Gralloc2.cpp",
        "Gralloc3.cpp",
        "Gralloc4.cpp",
        "Gralloc5.cpp",
        "GraphicBuffer.cpp",
        "GraphicBufferAllocator.cpp",
        "GraphicBufferMapper.cpp",
        "PixelFormat.cpp",
        "PublicFormat.cpp",
        "StaticAsserts.cpp",
    ],

    include_dirs: [
        "frameworks/native/include",
    ],
    export_include_dirs: [
        "include",
        "include_private",
    ],

    defaults: [
        "android.hardware.graphics.allocator-ndk_shared",
        "android.hardware.graphics.common-ndk_shared",
        "libui-defaults",
        // Uncomment the following line to enable VALIDATE_REGIONS traces
        //defaults: ["libui-validate-regions-defaults"],
    ],

    shared_libs: [
        "android.hardware.graphics.allocator@2.0",
        "android.hardware.graphics.allocator@3.0",
        "android.hardware.graphics.allocator@4.0",
        "android.hardware.graphics.common@1.2",
        "android.hardware.graphics.mapper@2.0",
        "android.hardware.graphics.mapper@2.1",
        "android.hardware.graphics.mapper@3.0",
        "android.hardware.graphics.mapper@4.0",
        "libbase",
        "libbinder_ndk",
        "libcutils",
        "libgralloctypes",
        "libhidlbase",
        "libsync",
        "libutils",
        "liblog",
        "libvndksupport",
    ],

    export_shared_lib_headers: [
        "android.hardware.graphics.common@1.2",
        "android.hardware.graphics.mapper@4.0",
        "libgralloctypes",
    ],

    static_libs: [
        "libaidlcommonsupport",
        "libarect",
        "libgrallocusage",
        "libmath",
    ],

    whole_static_libs: [
        "libui-types",
    ],

    // bufferhub is not used when building libgui for vendors
    target: {
        vendor: {
            cflags: ["-DLIBUI_IN_VNDK"],
            exclude_srcs: [
            ],
            exclude_header_libs: [
            ],
            exclude_shared_libs: [
            ],
        },
    },

    header_libs: [
        "libbase_headers",
        "libnativebase_headers",
        "libnativewindow_headers",
        "libhardware_headers",
        "libui_headers",
        "libimapper_stablec",
        "libimapper_providerutils",
    ],

    export_static_lib_headers: [
        "libarect",
        "libmath",
    ],

    export_header_lib_headers: [
        "libbase_headers",
        "libnativebase_headers",
        "libnativewindow_headers",
        "libhardware_headers",
        "libui_headers",
    ],
    min_sdk_version: "29",
    // TODO(b/214400477) to remove use of GraphicBuffer
    apex_available: [
        "//apex_available:platform",
        "com.android.media.swcodec",
        "test_com.android.media.swcodec",
    ],

    afdo: true,
}

cc_library_headers {
    name: "libui_headers",
    export_include_dirs: ["include"],
    vendor_available: true,
    target: {
        vendor: {
            cflags: ["-DLIBUI_IN_VNDK"],
            override_export_include_dirs: ["include_vndk"],
        },
    },
    header_libs: [
        "libnativewindow_headers",
        "libmath_headers",
    ],
    export_header_lib_headers: [
        "libnativewindow_headers",
        "libmath_headers",
    ],
    min_sdk_version: "29",
    apex_available: [
        "//apex_available:platform",
        "com.android.media.swcodec",
        "test_com.android.media.swcodec",
    ],
}

// defaults to enable VALIDATE_REGIONS traces
cc_defaults {
    name: "libui-validate-regions-defaults",
    shared_libs: ["libutilscallstack"],
    cflags: ["-DVALIDATE_REGIONS"],
}

subdirs = [
    "tests",
    "tools",
]

filegroup {
    name: "libui_host_common",
    srcs: [
        "Rect.cpp",
        "Region.cpp",
        "PixelFormat.cpp",
        "Transform.cpp",
    ],
}
