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

cc_library_static {
    name: "drm_hwcomposer",
    defaults: ["hwcomposer.drm_defaults"],
    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/DrmEventListener.cpp",
        "drm/DrmFbImporter.cpp",
        "drm/DrmMode.cpp",
        "drm/DrmPlane.cpp",
        "drm/DrmProperty.cpp",
        "drm/ResourceManager.cpp",
        "drm/VSyncWorker.cpp",

        "utils/autolock.cpp",
        "utils/hwcutils.cpp",

        "backend/Backend.cpp",
        "backend/BackendClient.cpp",
        "backend/BackendManager.cpp",
        "backend/BackendRCarDu.cpp",
    ],
}

cc_library_shared {
    name: "hwcomposer.drm",
    defaults: ["hwcomposer.drm_defaults"],
    whole_static_libs: ["drm_hwcomposer"],
    srcs: ["bufferinfo/legacy/BufferInfoLibdrm.cpp"],
}

cc_library_shared {
    name: "hwcomposer.drm_minigbm",
    defaults: ["hwcomposer.drm_defaults"],
    whole_static_libs: ["drm_hwcomposer"],
    srcs: ["bufferinfo/legacy/BufferInfoMinigbm.cpp"],
    include_dirs: ["external/minigbm/cros_gralloc"],
}

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