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

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