[PATCH 28/51] drm: made various drm-backends optional (buildtime)

"Enrico Weigelt, metux IT consult" <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <[email protected]>
Signed-off-by: Enrico Weigelt, metux IT consult <[email protected]>
---
 configure.ac         | 26 +++++++++++++++++++++++++
 src/Makefile.sources | 54 ++++++++++++++++++++++++++++++++++------------------
 src/drm/cairo-drm.c  |  9 +++++++++
 3 files changed, 71 insertions(+), 18 deletions(-)

diff --git a/configure.ac b/configure.ac
index 2ce1959..e4716e1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -299,6 +299,32 @@ CAIRO_ENABLE_SURFACE_BACKEND(drm, DRM, no, [
   drm_REQUIRES="libudev >= 136"
   PKG_CHECK_MODULES(drm, $drm_REQUIRES, ,
    [use_drm="no (requires $drm_REQUIRES, udev is available from git://git.kernel.org/pub/scm/linux/hotplug/udev.git)"])
+  enable_cairo_surface_drm=1
+])
+
+CAIRO_ENABLE_SURFACE_BACKEND(drm_intel, DRM_INTEL, no, [
+  if test "$enable_cairo_surface_drm" != "1"; then
+    AC_MSG_ERROR([drm-intel backend needs drm backend])
+  fi
+  enable_cairo_surface_drm_intel=1
+])
+
+CAIRO_ENABLE_SURFACE_BACKEND(drm_i915, DRM_I915, no, [
+  if test "$enable_cairo_surface_drm_intel" != "1"; then
+    AC_MSG_ERROR([drm-i915 backend needs drm backend])
+  fi
+])
+
+CAIRO_ENABLE_SURFACE_BACKEND(drm_i965, DRM_I965, no, [
+  if test "$enable_cairo_surface_drm_intel" != "1"; then
+    AC_MSG_ERROR([drm-i965 backend needs drm backend])
+  fi
+])
+
+CAIRO_ENABLE_SURFACE_BACKEND(drm_radeon, DRM_RADEON, no, [
+  if test "$enable_cairo_surface_drm" != "1"; then
+    AC_MSG_ERROR([drm-radeon backend needs drm backend])
+  fi
 ])
 
 CAIRO_ENABLE_SURFACE_BACKEND(gallium, Gallium3D, no, [
diff --git a/src/Makefile.sources b/src/Makefile.sources
index fac24d7..9b1344c 100644
--- a/src/Makefile.sources
+++ b/src/Makefile.sources
@@ -414,37 +414,55 @@ cairo_wgl_sources += cairo-wgl-context.c
 cairo_directfb_headers = cairo-directfb.h
 cairo_directfb_sources = cairo-directfb-surface.c
 
-cairo_drm_headers = cairo-drm.h
-cairo_drm_private = drm/cairo-drm-private.h \
+cairo_drm_i915_private = \
+		    drm/cairo-drm-i915-private.h
+
+cairo_drm_i915_sources = \
+		    drm/cairo-drm-i915-surface.c \
+		    drm/cairo-drm-i915-glyphs.c \
+		    drm/cairo-drm-i915-shader.c \
+		    drm/cairo-drm-i915-spans.c
+
+cairo_drm_i965_private = \
+		    drm/cairo-drm-i965-private.h
+
+cairo_drm_i965_sources = \
+		    drm/cairo-drm-i965-surface.c \
+		    drm/cairo-drm-i965-glyphs.c \
+		    drm/cairo-drm-i965-shader.c \
+		    drm/cairo-drm-i965-spans.c
+
+cairo_drm_intel_private = \
 		    drm/cairo-drm-ioctl-private.h \
 		    drm/cairo-drm-intel-private.h \
 		    drm/cairo-drm-intel-brw-defines.h \
 		    drm/cairo-drm-intel-brw-structs.h \
 		    drm/cairo-drm-intel-brw-eu.h \
 		    drm/cairo-drm-intel-command-private.h \
-		    drm/cairo-drm-intel-ioctl-private.h \
-		    drm/cairo-drm-i915-private.h \
-		    drm/cairo-drm-i965-private.h \
-		    drm/cairo-drm-radeon-private.h
-cairo_drm_sources = drm/cairo-drm.c \
-		    drm/cairo-drm-bo.c \
-		    drm/cairo-drm-surface.c \
+		    drm/cairo-drm-intel-ioctl-private.h
+
+cairo_drm_intel_sources = \
 		    drm/cairo-drm-intel.c \
 		    drm/cairo-drm-intel-debug.c \
 		    drm/cairo-drm-intel-surface.c \
-		    drm/cairo-drm-i915-surface.c \
-		    drm/cairo-drm-i915-glyphs.c \
-		    drm/cairo-drm-i915-shader.c \
-		    drm/cairo-drm-i915-spans.c \
-		    drm/cairo-drm-i965-surface.c \
-		    drm/cairo-drm-i965-glyphs.c \
-		    drm/cairo-drm-i965-shader.c \
-		    drm/cairo-drm-i965-spans.c \
 		    drm/cairo-drm-intel-brw-eu.c \
 		    drm/cairo-drm-intel-brw-eu-emit.c \
-		    drm/cairo-drm-intel-brw-eu-util.c \
+		    drm/cairo-drm-intel-brw-eu-util.c
+
+cairo_drm_radeon_private = \
+		    drm/cairo-drm-radeon-private.h
+
+cairo_drm_radeon_sources = \
 		    drm/cairo-drm-radeon.c \
 		    drm/cairo-drm-radeon-surface.c
+
+cairo_drm_headers = cairo-drm.h
+cairo_drm_private = drm/cairo-drm-private.h
+
+cairo_drm_sources = drm/cairo-drm.c \
+		    drm/cairo-drm-bo.c \
+		    drm/cairo-drm-surface.c
+
 cairo_gallium_sources = drm/cairo-drm-gallium-surface.c
 
 cairo_script_headers = cairo-script.h
diff --git a/src/drm/cairo-drm.c b/src/drm/cairo-drm.c
index 6a2a317..35ae118 100644
--- a/src/drm/cairo-drm.c
+++ b/src/drm/cairo-drm.c
@@ -147,6 +147,7 @@ cairo_drm_device_get (struct udev_device *device)
 	uint32_t chip_id;
 	cairo_drm_device_create_func_t create_func;
     } driver_map[] = {
+#if CAIRO_HAS_DRM_I965_SURFACE
 	{ 0x8086, 0x29a2, _cairo_drm_i965_device_create }, /* I965_G */
 	{ 0x8086, 0x2982, _cairo_drm_i965_device_create }, /* G35_G */
 	{ 0x8086, 0x2992, _cairo_drm_i965_device_create }, /* I965_Q */
@@ -158,7 +159,9 @@ cairo_drm_device_get (struct udev_device *device)
 	{ 0x8086, 0x2e12, _cairo_drm_i965_device_create }, /* Q45_G */
 	{ 0x8086, 0x2e32, _cairo_drm_i965_device_create }, /* G41_G */
 	{ 0x8086, 0x2a42, _cairo_drm_i965_device_create }, /* GM45_GM */
+#endif
 
+#if CAIRO_HAS_DRM_I915_SURFACE
 	{ 0x8086, 0x2582, _cairo_drm_i915_device_create }, /* I915_G */
 	{ 0x8086, 0x2592, _cairo_drm_i915_device_create }, /* I915_GM */
 	{ 0x8086, 0x258a, _cairo_drm_i915_device_create }, /* E7221_G */
@@ -170,12 +173,18 @@ cairo_drm_device_get (struct udev_device *device)
 	{ 0x8086, 0x29d2, _cairo_drm_i915_device_create }, /* Q33_G */
 	{ 0x8086, 0xa011, _cairo_drm_i915_device_create }, /* IGD_GM */
 	{ 0x8086, 0xa001, _cairo_drm_i915_device_create }, /* IGD_G */
+#endif
 
 	/* XXX i830 */
 
+#if CAIRO_HAS_DRM_INTEL_SURFACE
 	{ 0x8086, ~0, _cairo_drm_intel_device_create },
+#endif
 
+#if CAIRO_HAS_DRM_RADEON_SURFACE
 	{ 0x1002, ~0, _cairo_drm_radeon_device_create },
+#endif
+
 #if CAIRO_HAS_GALLIUM_SURFACE
 	{ ~0, ~0, _cairo_drm_gallium_device_create },
 #endif
-- 
2.6.4.442.g545299f

-- 
cairo mailing list
[email protected]
http://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.