// 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.

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_headers {
    name: "drm_hwcomposer_headers",
    vendor: true,
    export_include_dirs: ["."],
}

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

    shared_libs: [
        "android.hardware.graphics.composer@2.1-resources",
        "android.hardware.graphics.composer@2.2-resources",
        "libcutils",
        "libdrm",
        "libhardware",
        "libhidlbase",
        "liblog",
        "libsync",
        "libui",
        "libutils",
    ],

    static_libs: [
        "libaidlcommonsupport",
    ],

    header_libs: [
        "drm_hwcomposer_headers",
    ],

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

    cppflags: [
        "-DHWC2_INCLUDE_STRINGIFICATION",
        "-DHWC2_USE_CPP11",
    ],

    relative_install_path: "hw",
    vendor: true,
}

filegroup {
    name: "drm_hwcomposer_fd",
    srcs: ["utils/fd.cpp"],
}

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

        "compositor/DrmKmsPlan.cpp",
        "compositor/FlatteningController.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",
        "drm/DrmHwc.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",

        "utils/fd.cpp",
    ],
}

filegroup {
    name: "drm_hwcomposer_hwc3",
    srcs: [
        "hwc3/Composer.cpp",
        "hwc3/ComposerClient.cpp",
        "hwc3/ComposerResources.cpp",
        "hwc3/DrmHwcThree.cpp",
        "hwc3/Utils.cpp",
    ],
}

filegroup {
    name: "drm_hwcomposer_service",
    srcs: [
        "hwc3/service.cpp",
    ],
}

filegroup {
    name: "drm_hwcomposer_init_rc",
    srcs: [
        "hwc3/hwc3-drm.rc",
    ],
}

filegroup {
    name: "drm_hwcomposer_vintf_manifest",
    srcs: [
        "hwc3/hwc3-drm.xml",
    ],
}

// 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",
    ],
}

cc_binary {
    name: "android.hardware.composer.hwc3-service.drm",

    srcs: [
        ":drm_hwcomposer_hwc3",
        ":drm_hwcomposer_service",
        ":drm_hwcomposer_common",
        "bufferinfo/legacy/BufferInfoLibdrm.cpp",
    ],

    defaults: [
        "hwcomposer.drm_defaults",
    ],

    shared_libs: [
        "android.hardware.graphics.composer3-V3-ndk",
        "libbase",
        "libbinder",
        "libbinder_ndk",
        "liblog",
        "libutils",
    ],

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

        "-DUSE_IMAPPER4_METADATA_API",
    ],

    cppflags: [
        "-DHWC2_INCLUDE_STRINGIFICATION",
        "-DHWC2_USE_CPP11",
    ],

    relative_install_path: "hw",
    vendor: true,

    vintf_fragments: [":drm_hwcomposer_vintf_manifest"],
    init_rc: [":drm_hwcomposer_init_rc"],
}

// 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"],
}
