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

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

    relative_install_path: "hw",
    vendor: true,
}

filegroup {
    name: "drm_hwcomposer_common",
    srcs: [
        "DrmHwcTwo.cpp",

        "bufferinfo/BufferInfoGetter.cpp",
        "bufferinfo/BufferInfoMapperMetadata.cpp",

        "compositor/DrmDisplayComposition.cpp",
        "compositor/DrmDisplayCompositor.cpp",
        "compositor/Planner.cpp",

        "drm/DrmConnector.cpp",
        "drm/DrmCrtc.cpp",
        "drm/DrmDevice.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/autolock.cpp",
        "utils/hwcutils.cpp",

        "backend/Backend.cpp",
        "backend/BackendClient.cpp",
        "backend/BackendManager.cpp",
        "backend/BackendRCarDu.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"],
}
