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

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

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