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

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

    vendor: true,

}

// =====================
// hwcomposer.drm.so
// =====================
cc_defaults {
    name: "hwcomposer.drm_defaults",

    shared_libs: [
        "libcutils",
        "libdrm",
        "libhardware",
        "liblog",
        "libsync",
        "libui",
        "libutils",
    ],

    include_dirs: ["external/drm_hwcomposer/include"],

    static_libs: ["libdrmhwc_utils"],

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

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

    relative_install_path: "hw",
    vendor: true,
}
cc_library_static {
    name: "drm_hwcomposer",
    defaults: ["hwcomposer.drm_defaults"],
    srcs: [
        "drmhwctwo.cpp",

        "compositor/drmdisplaycomposition.cpp",
        "compositor/drmdisplaycompositor.cpp",

        "drm/drmconnector.cpp",
        "drm/drmcrtc.cpp",
        "drm/drmdevice.cpp",
        "drm/drmencoder.cpp",
        "drm/drmeventlistener.cpp",
        "drm/drmmode.cpp",
        "drm/drmplane.cpp",
        "drm/drmproperty.cpp",
        "drm/resourcemanager.cpp",
        "drm/vsyncworker.cpp",

        "platform/platform.cpp",

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

cc_library_shared {
    name: "hwcomposer.drm",
    defaults: ["hwcomposer.drm_defaults"],
    whole_static_libs: ["drm_hwcomposer"],
    srcs: ["platform/platformdrmgeneric.cpp"],
    cppflags: ["-DUSE_DRM_GENERIC_IMPORTER"],
}

cc_library_shared {
    name: "hwcomposer.drm_minigbm",
    defaults: ["hwcomposer.drm_defaults"],
    whole_static_libs: ["drm_hwcomposer"],
    srcs: [
        "platform/platformdrmgeneric.cpp",
        "platform/platformminigbm.cpp",
    ],
    include_dirs: ["external/minigbm/cros_gralloc"],
}

// Used by hwcomposer.drm_imagination
filegroup {
    name: "drm_hwcomposer_platformimagination",
    srcs: [
        "platform/platformdrmgeneric.cpp",
        "platform/platformimagination.cpp",
    ],
}

// Used by hwcomposer.drm_hikey and hwcomposer.drm_hikey960
filegroup {
    name: "drm_hwcomposer_platformhisi",
    srcs: [
        "platform/platformdrmgeneric.cpp",
        "platform/platformhisi.cpp",
    ],
}

// Used by hwcomposer.drm_meson
filegroup {
    name: "drm_hwcomposer_platformmeson",
    srcs: [
        "platform/platformdrmgeneric.cpp",
        "platform/platformmeson.cpp",
    ],
}
