// Copyright (C) 2015 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.

// =====================
// libdrmhwc_utils.a
// =====================
package {
    default_applicable_licenses: ["external_drm_hwcomposer_license"],
}

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

cc_library_static {
    name: "libdrmhwc_utils",

    srcs: ["utils/Worker.cpp"],

    include_dirs: [
        "external/drm_hwcomposer",
        "external/drm_hwcomposer/include",
    ],

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

    vendor: true,

}

// =====================
// hwcomposer.drm.so
// =====================
cc_defaults {
    name: "hwcomposer.drm_defaults",

    shared_libs: [
        "libcutils",
        "libdrm",
        "libhardware",
        "libhidlbase",
        "liblog",
        "libsync",
        "libui",
        "libutils",
    ],

    include_dirs: [
        "external/drm_hwcomposer",
        "external/drm_hwcomposer/include",
    ],

    static_libs: ["libdrmhwc_utils"],

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

    cppflags: [
        "-DHWC2_INCLUDE_STRINGIFICATION",
        "-DHWC2_USE_CPP11",
        "-std=c++17",
    ],

    product_variables: {
        platform_sdk_version: {
            cflags: ["-DPLATFORM_SDK_VERSION=%d"],
        },
    },

    relative_install_path: "hw",
    vendor: true,
}

filegroup {
    name: "drm_hwcomposer_common",
    srcs: [
        "bufferinfo/BufferInfoGetter.cpp",
        "bufferinfo/BufferInfoMapperMetadata.cpp",

        "compositor/DrmKmsPlan.cpp",

        "drm/DrmAtomicStateManager.cpp",
        "drm/DrmConnector.cpp",
        "drm/DrmCrtc.cpp",
        "drm/DrmDevice.cpp",
        "drm/DrmDisplayPipeline.cpp",
        "drm/DrmEncoder.cpp",
        "drm/DrmFbImporter.cpp",
        "drm/DrmMode.cpp",
        "drm/DrmPlane.cpp",
        "drm/DrmProperty.cpp",
        "drm/ResourceManager.cpp",
        "drm/UEventListener.cpp",
        "drm/VSyncWorker.cpp",

        "utils/hwcutils.cpp",

        "backend/Backend.cpp",
        "backend/BackendClient.cpp",
        "backend/BackendManager.cpp",

        "hwc2_device/DrmHwcTwo.cpp",
        "hwc2_device/HwcDisplay.cpp",
        "hwc2_device/HwcDisplayConfigs.cpp",
        "hwc2_device/HwcLayer.cpp",
        "hwc2_device/hwc2_device.cpp",
    ],
}

// Kept only for compatibility with older Android version. Please do not use!
cc_library_static {
    name: "drm_hwcomposer",
    defaults: ["hwcomposer.drm_defaults"],
    srcs: [":drm_hwcomposer_common"],
}

cc_library_shared {
    name: "hwcomposer.drm",
    defaults: ["hwcomposer.drm_defaults"],
    srcs: [
        ":drm_hwcomposer_common",
        "bufferinfo/legacy/BufferInfoLibdrm.cpp",
    ],
    cflags: ["-DUSE_IMAPPER4_METADATA_API"],
}

cc_library_shared {
    name: "hwcomposer.drm_minigbm",
    defaults: ["hwcomposer.drm_defaults"],
    srcs: [
        ":drm_hwcomposer_common",
        "bufferinfo/legacy/BufferInfoMinigbm.cpp",
    ],
}

// Used by hwcomposer.drm_imagination
filegroup {
    name: "drm_hwcomposer_platformimagination",
    srcs: ["bufferinfo/legacy/BufferInfoImagination.cpp"],
}

// Used by hwcomposer.drm_hikey and hwcomposer.drm_hikey960
filegroup {
    name: "drm_hwcomposer_platformhisi",
    srcs: ["bufferinfo/legacy/BufferInfoMaliHisi.cpp"],
}

// Used by hwcomposer.drm_meson
filegroup {
    name: "drm_hwcomposer_platformmeson",
    srcs: ["bufferinfo/legacy/BufferInfoMaliMeson.cpp"],
}

// Used by hwcomposer.drm_mediatek
filegroup {
    name: "drm_hwcomposer_platformmediatek",
    srcs: ["bufferinfo/legacy/BufferInfoMaliMediatek.cpp"],
}