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

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/DrmHwc.cpp",
        "drm/DrmMode.cpp",
        "drm/DrmPlane.cpp",
        "drm/DrmProperty.cpp",
        "drm/ResourceManager.cpp",
        "drm/UEventListener.cpp",
        "drm/VSyncWorker.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_common",
        ":drm_hwcomposer_hwc3",
        ":drm_hwcomposer_service",
        "bufferinfo/legacy/BufferInfoLibdrm.cpp",
    ],

    defaults: [
        "hwcomposer.drm_defaults",
    ],

    shared_libs: [
        "android.hardware.graphics.composer3-V3-ndk",
        "libbase",
        "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"],
}

prebuilt_etc {
    name: "drm_hwcomposer_hwc3_apex_vintf",
    src: "hwc3/hwc3-drm.xml",
    sub_dir: "vintf",
    vendor: true,
    installable: false,
}

prebuilt_etc {
    name: "drm_hwcomposer_hwc3_apex_init_rc",
    filename_from_src: true,
    vendor: true,
    src: ":gen-drm_hwcomposer_hwc3_apex_init_rc",
}

genrule {
    name: "gen-drm_hwcomposer_hwc3_apex_init_rc",
    srcs: ["hwc3/hwc3-drm.rc"],
    out: ["hwc3-drm.apex.rc"],
    cmd: "sed " +
        // Update the binary location to inside the Apex:
        "-e 's%/vendor/bin/%/apex/com.android.hardware.graphics.composer/bin/%' " +
        "$(in) > $(out)",
}

filegroup {
    name: "drm_hwcomposer_hwc3_apex_file_contexts",
    srcs: [
        "hwc3/hwc3-apex-file-contexts",
    ],
}

filegroup {
    name: "drm_hwcomposer_hwc3_apex_manifest",
    srcs: [
        "hwc3/hwc3-apex-manifest.json",
    ],
}

apex {
    name: "com.android.hardware.graphics.composer.drm_hwcomposer",
    key: "com.android.hardware.key",
    certificate: ":com.android.hardware.certificate",
    file_contexts: ":drm_hwcomposer_hwc3_apex_file_contexts",
    manifest: ":drm_hwcomposer_hwc3_apex_manifest",
    vendor: true,
    updatable: false,
    soc_specific: true,
    binaries: [
        "android.hardware.composer.hwc3-service.drm",
    ],
    prebuilts: [
        "drm_hwcomposer_hwc3_apex_init_rc",
        "drm_hwcomposer_hwc3_apex_vintf",
    ],
}
