// Copyright 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.
cc_library_headers {
    name: "libgui_headers",
    vendor_available: true,
    export_include_dirs: ["include"],
}

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

    clang: true,
    cflags: [
        "-Wall",
        "-Werror",
    ],
    cppflags: [
        "-Weverything",

        // The static constructors and destructors in this library have not been noted to
        // introduce significant overheads
        "-Wno-exit-time-destructors",
        "-Wno-global-constructors",

        // We only care about compiling as C++14
        "-Wno-c++98-compat-pedantic",

        // We don't need to enumerate every case in a switch as long as a default case
        // is present
        "-Wno-switch-enum",

        // Allow calling variadic macros without a __VA_ARGS__ list
        "-Wno-gnu-zero-variadic-macro-arguments",

        // Don't warn about struct padding
        "-Wno-padded",

        // We are aware of the risks inherent in comparing floats for equality
        "-Wno-float-equal",

        // Pure abstract classes trigger this warning
        "-Wno-weak-vtables",

        // Allow four-character integer literals
        "-Wno-four-char-constants",

        // Allow documentation warnings
        "-Wno-documentation",

        // Allow implicit instantiation for templated class function
        "-Wno-undefined-func-template",

        // Allow explicitly marking struct as packed even when unnecessary
        "-Wno-packed",

        "-DDEBUG_ONLY_CODE=0",
    ],

    product_variables: {
        eng: {
            cppflags: [
                "-UDEBUG_ONLY_CODE",
                "-DDEBUG_ONLY_CODE=1",
            ],
        },
    },

    srcs: [
        "BitTube.cpp",
        "BufferHubConsumer.cpp",
        "BufferHubProducer.cpp",
        "BufferItem.cpp",
        "BufferItemConsumer.cpp",
        "BufferQueue.cpp",
        "BufferQueueConsumer.cpp",
        "BufferQueueCore.cpp",
        "BufferQueueProducer.cpp",
        "BufferSlot.cpp",
        "ConsumerBase.cpp",
        "CpuConsumer.cpp",
        "DisplayEventReceiver.cpp",
        "FrameTimestamps.cpp",
        "GLConsumer.cpp",
        "GuiConfig.cpp",
        "HdrMetadata.cpp",
        "IDisplayEventConnection.cpp",
        "IConsumerListener.cpp",
        "IGraphicBufferConsumer.cpp",
        "IGraphicBufferProducer.cpp",
        "IProducerListener.cpp",
        "ISurfaceComposer.cpp",
        "ISurfaceComposerClient.cpp",
        "ITransactionCompletedListener.cpp",
        "LayerDebugInfo.cpp",
        "LayerMetadata.cpp",
        "LayerState.cpp",
        "OccupancyTracker.cpp",
        "StreamSplitter.cpp",
        "Surface.cpp",
        "SurfaceControl.cpp",
        "SurfaceComposerClient.cpp",
        "SyncFeatures.cpp",
        "view/Surface.cpp",
        "bufferqueue/1.0/B2HProducerListener.cpp",
        "bufferqueue/1.0/H2BGraphicBufferProducer.cpp",
    ],

    shared_libs: [
        "android.frameworks.bufferhub@1.0",
        "android.hardware.graphics.common@1.1",
        "libbase",
        "libsync",
        "libbinder",
        "libbufferhub",
        "libbufferhubqueue", // TODO(b/70046255): Remove this once BufferHub is integrated into libgui.
        "libpdx_default_transport",
        "libcutils",
        "libEGL",
        "libGLESv2",
        "libui",
        "libutils",
        "libnativewindow",
        "liblog",
        "libinput",
        "libhidlbase",
        "libhidltransport",
        "android.hidl.token@1.0-utils",
        "android.hardware.graphics.bufferqueue@1.0",
    ],

    // bufferhub is not used when building libgui for vendors
    target: {
        vendor: {
            cflags: ["-DNO_BUFFERHUB", "-DNO_INPUT"],
            exclude_srcs: [
                "BufferHubConsumer.cpp",
                "BufferHubProducer.cpp",
            ],
            exclude_shared_libs: [
                "android.frameworks.bufferhub@1.0",
                "libbufferhub",
                "libbufferhubqueue",
                "libpdx_default_transport",
                "libinput"
            ],
        },
    },

    header_libs: [
        "libdvr_headers",
        "libnativebase_headers",
        "libgui_headers",
        "libpdx_headers",
    ],

    export_shared_lib_headers: [
        "libbinder",
        "libEGL",
        "libnativewindow",
        "libui",
        "android.hidl.token@1.0-utils",
        "android.hardware.graphics.bufferqueue@1.0",
        "android.hardware.graphics.common@1.1",
    ],

    export_header_lib_headers: [
        "libgui_headers",
    ],

    export_include_dirs: [
        "include",
    ],
}

subdirs = ["tests"]
