# Android.mk for drm_gralloc
-ifeq ($(strip $(BOARD_USES_DRM)),true)
+DRM_GPU_DRIVERS := $(strip $(filter-out swrast, $(BOARD_GPU_DRIVERS)))
+
+freedreno_drivers := freedreno
+intel_drivers := i915 i965 i915g ilo
+radeon_drivers := r300g r600g radeonsi
+nouveau_drivers := nouveau
+
+valid_drivers := \
+ prebuilt \
+ $(freedreno_drivers) \
+ $(intel_drivers) \
+ $(radeon_drivers) \
+ $(nouveau_drivers)
+
+# Assume other driver names are pipe drivers
+ifneq ($(filter-out $(valid_drivers), $(DRM_GPU_DRIVERS)),)
+DRM_GPU_DRIVERS += pipe
+endif
+
+ifneq ($(strip $(DRM_GPU_DRIVERS)),)
LOCAL_PATH := $(call my-dir)
+
+
+# Use the PREBUILT libraries
+ifeq ($(strip $(DRM_GPU_DRIVERS)),prebuilt)
+
include $(CLEAR_VARS)
+LOCAL_MODULE := libgralloc_drm
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := ../../$(BOARD_GPU_DRIVER_BINARY)
+LOCAL_MODULE_CLASS := SHARED_LIBRARIES
+LOCAL_MODULE_SUFFIX := $(TARGET_SHLIB_SUFFIX)
+include $(BUILD_PREBUILT)
-DRM_USES_INTEL := $(findstring true, \
- $(BOARD_USES_I915C) \
- $(BOARD_USES_I965C) \
- $(BOARD_USES_I915G) \
- $(BOARD_USES_I965G))
+include $(CLEAR_VARS)
+LOCAL_MODULE := gralloc.$(TARGET_PRODUCT)
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_RELATIVE_PATH := hw
+LOCAL_SRC_FILES := ../../$(BOARD_GPU_DRIVER_BINARY)
+LOCAL_MODULE_CLASS := SHARED_LIBRARIES
+LOCAL_MODULE_SUFFIX := $(TARGET_SHLIB_SUFFIX)
+include $(BUILD_PREBUILT)
-DRM_USES_RADEON := $(findstring true, \
- $(BOARD_USES_R300G) \
- $(BOARD_USES_R600G))
+# Use the sources
+else
-DRM_USES_NOUVEAU := $(findstring true, \
- $(BOARD_USES_NOUVEAU))
+include $(CLEAR_VARS)
+LOCAL_MODULE := libgralloc_drm
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_CFLAGS := -std=c99
LOCAL_SRC_FILES := \
- gralloc.c \
gralloc_drm.c \
gralloc_drm_kms.c
-LOCAL_C_INCLUDES := \
- external/drm \
- external/drm/include/drm
+LOCAL_EXPORT_C_INCLUDE_DIRS := \
+ $(LOCAL_PATH)
LOCAL_SHARED_LIBRARIES := \
libdrm \
liblog \
libcutils \
+ libhardware_legacy \
-# for glFlush/glFinish
-LOCAL_SHARED_LIBRARIES += \
- libGLESv1_CM
+ifneq ($(filter $(freedreno_drivers), $(DRM_GPU_DRIVERS)),)
+LOCAL_SRC_FILES += gralloc_drm_freedreno.c
+LOCAL_CFLAGS += -DENABLE_FREEDRENO
+LOCAL_SHARED_LIBRARIES += libdrm_freedreno
+endif
-ifeq ($(strip $(DRM_USES_INTEL)),true)
+ifneq ($(filter $(intel_drivers), $(DRM_GPU_DRIVERS)),)
LOCAL_SRC_FILES += gralloc_drm_intel.c
-LOCAL_C_INCLUDES += external/drm/intel
LOCAL_CFLAGS += -DENABLE_INTEL
LOCAL_SHARED_LIBRARIES += libdrm_intel
-endif # DRM_USES_INTEL
+endif
-ifeq ($(strip $(DRM_USES_RADEON)),true)
+ifneq ($(filter $(radeon_drivers), $(DRM_GPU_DRIVERS)),)
LOCAL_SRC_FILES += gralloc_drm_radeon.c
-LOCAL_C_INCLUDES += external/drm/radeon
LOCAL_CFLAGS += -DENABLE_RADEON
LOCAL_SHARED_LIBRARIES += libdrm_radeon
-endif # DRM_USES_RADEON
+endif
-ifeq ($(strip $(DRM_USES_NOUVEAU)),true)
+ifneq ($(filter $(nouveau_drivers), $(DRM_GPU_DRIVERS)),)
LOCAL_SRC_FILES += gralloc_drm_nouveau.c
-LOCAL_C_INCLUDES += external/drm/nouveau
LOCAL_CFLAGS += -DENABLE_NOUVEAU
LOCAL_SHARED_LIBRARIES += libdrm_nouveau
-endif # DRM_USES_NOUVEAU
+endif
-LOCAL_MODULE := gralloc.$(TARGET_PRODUCT)
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/hw
+ifneq ($(filter pipe, $(DRM_GPU_DRIVERS)),)
+LOCAL_SRC_FILES += gralloc_drm_pipe.c
+LOCAL_CFLAGS += -DENABLE_PIPE
+LOCAL_C_INCLUDES += \
+ external/mesa/include \
+ external/mesa/src \
+ external/mesa/src/gallium/include \
+ external/mesa/src/gallium/auxiliary
+
+
+LOCAL_SHARED_LIBRARIES += libdl
+endif # pipe_drivers
+
+include $(BUILD_SHARED_LIBRARY)
+
+
+include $(CLEAR_VARS)
+LOCAL_SRC_FILES := \
+ gralloc.c \
+LOCAL_SHARED_LIBRARIES := \
+ libgralloc_drm \
+ libdrm \
+ liblog \
+
+# for glFlush/glFinish
+LOCAL_SHARED_LIBRARIES += \
+ libGLESv1_CM
+
+LOCAL_MODULE := gralloc.drm
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_RELATIVE_PATH := hw
include $(BUILD_SHARED_LIBRARY)
-endif # BOARD_USES_DRM
+endif # DRM_GPU_DRIVERS=prebuilt
+endif # DRM_GPU_DRIVERS