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

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

    static_libs: ["libdrmhwc_utils"],

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

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

    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/DrmGenericImporter.cpp",
        "drm/DrmMode.cpp",
        "drm/DrmPlane.cpp",
        "drm/DrmProperty.cpp",
        "drm/ResourceManager.cpp",
        "drm/VSyncWorker.cpp",

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

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