diff -Naur plymouth_orig/configure.ac plymouth/configure.ac --- plymouth_orig/configure.ac 2011-01-31 19:30:05.509205000 +0100 +++ plymouth/configure.ac 2011-02-01 09:34:29.675219998 +0100 @@ -56,54 +56,143 @@ AC_SUBST(GTK_CFLAGS) AC_SUBST(GTK_LIBS) -PKG_CHECK_MODULES(DRM, [libdrm libdrm_intel libdrm_radeon libdrm_nouveau]) +AC_ARG_ENABLE(libdrm_intel, AS_HELP_STRING([--enable-libdrm_intel],[enable building with libdrm_intel support]),enable_libdrm_intel=$enableval,enable_libdrm_intel=yes) +AM_CONDITIONAL(ENABLE_LIBDRM_INTEL, [test "$enable_libdrm_intel" = yes]) -OLD_CFLAGS="$CFLAGS" -CFLAGS="$CFLAGS $DRM_CFLAGS" -AC_MSG_CHECKING([if i915_drm.h, radeon_drm.h and nouveau_drm.h are in include path]) -AC_COMPILE_IFELSE(AC_LANG_PROGRAM( -[[ - #include - #include - #include "i915_drm.h" - #include "radeon_drm.h" - #include "nouveau_drm.h" -]],[[]]),[found_drm_kernel_headers=yes],[found_drm_kernel_headers=no]) - -if test "$found_drm_kernel_headers" = "yes"; then - AC_MSG_RESULT([yes]) -else - AC_MSG_RESULT([no]) - AC_MSG_CHECKING([if we can find them anyway]) - - MORE_DRM_CFLAGS="-I`$PKG_CONFIG --variable includedir libdrm`/drm" - CFLAGS="$CFLAGS $MORE_DRM_CFLAGS" +if test x$enable_libdrm_intel = xyes; then + PKG_CHECK_MODULES(DRM, [libdrm libdrm_intel]) + OLD_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $DRM_CFLAGS" + AC_MSG_CHECKING([if i915_drm.h is in include path]) AC_COMPILE_IFELSE(AC_LANG_PROGRAM( [[ #include #include #include "i915_drm.h" + ]],[[]]),[found_drm_intel_kernel_headers=yes],[found_drm_intel_kernel_headers=no]) + + if test "$found_drm_intel_kernel_headers" = "yes"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + AC_MSG_CHECKING([if we can find them anyway]) + + MORE_DRM_CFLAGS="-I`$PKG_CONFIG --variable includedir libdrm`/drm" + CFLAGS="$CFLAGS $MORE_DRM_CFLAGS" + AC_COMPILE_IFELSE(AC_LANG_PROGRAM( + [[ + #include + #include + #include "i915_drm.h" + ]],[[]]),[found_drm_intel_kernel_headers=yes],[found_drm_intel_kernel_headers=no]) + + if test "$found_drm_intel_kernel_headers" = "yes"; then + AC_MSG_RESULT([yes]) + DRM_CFLAGS="$DRM_CFLAGS $MORE_DRM_CFLAGS" + else + AC_MSG_RESULT([no]) + AC_MSG_ERROR([Could not find i915_drm.h]) + fi + fi + + AC_SUBST(DRM_CFLAGS) + AC_SUBST(DRM_LIBS) + AC_DEFINE(PLY_ENABLE_LIBDRM_INTEL, 1, [Enable support for libdrm_intel driver]) +fi + +AC_ARG_ENABLE(libdrm_radeon, AS_HELP_STRING([--enable-libdrm_radeon],[enable building with libdrm_radeon support]),enable_libdrm_radeon=$enableval,enable_libdrm_radeon=yes) +AM_CONDITIONAL(ENABLE_LIBDRM_RADEON, [test "$enable_libdrm_radeon" = yes]) + +if test x$enable_libdrm_radeon = xyes; then + PKG_CHECK_MODULES(DRM, [libdrm libdrm_radeon]) + OLD_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $DRM_CFLAGS" + AC_MSG_CHECKING([if radeon_drm.h is in include path]) + AC_COMPILE_IFELSE(AC_LANG_PROGRAM( + [[ + #include + #include #include "radeon_drm.h" + ]],[[]]),[found_drm_radeon_kernel_headers=yes],[found_drm_radeon_kernel_headers=no]) + + if test "$found_drm_radeon_kernel_headers" = "yes"; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + AC_MSG_CHECKING([if we can find them anyway]) + + MORE_DRM_CFLAGS="-I`$PKG_CONFIG --variable includedir libdrm`/drm" + CFLAGS="$CFLAGS $MORE_DRM_CFLAGS" + AC_COMPILE_IFELSE(AC_LANG_PROGRAM( + [[ + #include + #include + #include "radeon_drm.h" + ]],[[]]),[found_drm_radeon_kernel_headers=yes],[found_drm_radeon_kernel_headers=no]) + + if test "$found_drm_radeon_kernel_headers" = "yes"; then + AC_MSG_RESULT([yes]) + DRM_CFLAGS="$DRM_CFLAGS $MORE_DRM_CFLAGS" + else + AC_MSG_RESULT([no]) + AC_MSG_ERROR([Could not find radeon_drm.h]) + fi + fi + + AC_SUBST(DRM_CFLAGS) + AC_SUBST(DRM_LIBS) + AC_DEFINE(PLY_ENABLE_LIBDRM_RADEON, 1, [Enable support for libdrm_radeon driver]) +fi + +AC_ARG_ENABLE(libdrm_nouveau, AS_HELP_STRING([--enable-libdrm_nouveau],[enable building with libdrm_nouveau support]),enable_libdrm_nouveau=$enableval,enable_libdrm_nouveau=yes) +AM_CONDITIONAL(ENABLE_LIBDRM_NOUVEAU, [test "$enable_libdrm_nouveau" = yes]) + +if test x$enable_libdrm_nouveau = xyes; then + PKG_CHECK_MODULES(DRM, [libdrm libdrm_nouveau]) + OLD_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $DRM_CFLAGS" + AC_MSG_CHECKING([if nouveau_drm.h is in include path]) + AC_COMPILE_IFELSE(AC_LANG_PROGRAM( + [[ + #include + #include #include "nouveau_drm.h" - ]],[[]]),[found_drm_kernel_headers=yes],[found_drm_kernel_headers=no]) + ]],[[]]),[found_drm_nouveau_kernel_headers=yes],[found_drm_nouveau_kernel_headers=no]) - if test "$found_drm_kernel_headers" = "yes"; then + if test "$found_drm_nouveau_kernel_headers" = "yes"; then AC_MSG_RESULT([yes]) - DRM_CFLAGS="$DRM_CFLAGS $MORE_DRM_CFLAGS" else AC_MSG_RESULT([no]) - AC_MSG_ERROR([Could not find i915_drm.h, radeon_drm.h and/or nouveau_drm.h]) + AC_MSG_CHECKING([if we can find them anyway]) + + MORE_DRM_CFLAGS="-I`$PKG_CONFIG --variable includedir libdrm`/drm" + CFLAGS="$CFLAGS $MORE_DRM_CFLAGS" + AC_COMPILE_IFELSE(AC_LANG_PROGRAM( + [[ + #include + #include + #include "nouveau_drm.h" + ]],[[]]),[found_drm_nouveau_kernel_headers=yes],[found_drm_nouveau_kernel_headers=no]) + + if test "$found_drm_nouveau_kernel_headers" = "yes"; then + AC_MSG_RESULT([yes]) + DRM_CFLAGS="$DRM_CFLAGS $MORE_DRM_CFLAGS" + else + AC_MSG_RESULT([no]) + AC_MSG_ERROR([Could not find nouveau_drm.h]) + fi fi + + AC_SUBST(DRM_CFLAGS) + AC_SUBST(DRM_LIBS) + AC_DEFINE(PLY_ENABLE_LIBDRM_NOUVEAU, 1, [Enable support for libdrm_nouveau driver]) fi -CFLAGS="$OLD_CFLAGS" -AC_SUBST(DRM_CFLAGS) -AC_SUBST(DRM_LIBS) AC_ARG_ENABLE(libkms, AS_HELP_STRING([--enable-libkms],[enable building with libkms support]),enable_libkms=$enableval,enable_libkms=yes) AM_CONDITIONAL(ENABLE_LIBKMS, [test "$enable_libkms" = yes]) if test x$enable_libkms = xyes; then - PKG_CHECK_MODULES(LIBKMS, [libkms]) + PKG_CHECK_MODULES(LIBKMS, [libdrm libkms]) AC_SUBST(LIBKMS_CFLAGS) AC_SUBST(LIBKMS_LIBS) AC_DEFINE(PLY_ENABLE_LIBKMS, 1, [Enable support for libkms abstraction over drm drivers]) diff -Naur plymouth_orig/scripts/plymouth-populate-initrd.in plymouth/scripts/plymouth-populate-initrd.in --- plymouth_orig/scripts/plymouth-populate-initrd.in 2011-01-31 19:30:05.509205000 +0100 +++ plymouth/scripts/plymouth-populate-initrd.in 2011-02-01 01:11:54.000000000 +0100 @@ -99,7 +99,7 @@ inst ${PLYMOUTH_PLUGIN_PATH}/${PLYMOUTH_MODULE_NAME}.so $INITRDDIR -inst ${PLYMOUTH_PLUGIN_PATH}/renderers/drm.so $INITRDDIR +[ -f "${PLYMOUTH_PLUGIN_PATH}/renderers/drm.so" ] && inst ${PLYMOUTH_PLUGIN_PATH}/renderers/drm.so $INITRDDIR inst ${PLYMOUTH_PLUGIN_PATH}/renderers/frame-buffer.so $INITRDDIR if [ -d ${PLYMOUTH_DATADIR}/plymouth/themes/${PLYMOUTH_THEME_NAME} ]; then diff -Naur plymouth_orig/src/libply-splash-core/ply-renderer.c plymouth/src/libply-splash-core/ply-renderer.c --- plymouth_orig/src/libply-splash-core/ply-renderer.c 2011-01-31 19:30:05.554205000 +0100 +++ plymouth/src/libply-splash-core/ply-renderer.c 2011-02-01 01:18:10.000000000 +0100 @@ -229,7 +229,9 @@ const char *known_plugins[] = { PLYMOUTH_PLUGIN_PATH "renderers/x11.so", +#if defined PLY_ENABLE_LIBDRM_INTEL || defined PLY_ENABLE_LIBDRM_RADEON || defined PLY_ENABLE_LIBDRM_NOUVEAU || defined PLY_ENABLE_LIBKMS PLYMOUTH_PLUGIN_PATH "renderers/drm.so", +#endif PLYMOUTH_PLUGIN_PATH "renderers/frame-buffer.so", NULL }; diff -Naur plymouth_orig/src/plugins/renderers/Makefile.am plymouth/src/plugins/renderers/Makefile.am --- plymouth_orig/src/plugins/renderers/Makefile.am 2011-01-31 19:30:05.670205000 +0100 +++ plymouth/src/plugins/renderers/Makefile.am 2011-02-01 09:07:05.000000000 +0100 @@ -1,2 +1,14 @@ -SUBDIRS = frame-buffer drm x11 +SUBDIRS = frame-buffer x11 +if ENABLE_LIBDRM_INTEL +SUBDIRS += drm +endif +if ENABLE_LIBDRM_RADEON +SUBDIRS += drm +endif +if ENABLE_LIBDRM_NOUVEAU +SUBDIRS += drm +endif +if ENABLE_LIBKMS +SUBDIRS += drm +endif MAINTAINERCLEANFILES = Makefile.in diff -Naur plymouth_orig/src/plugins/renderers/drm/Makefile.am plymouth/src/plugins/renderers/drm/Makefile.am --- plymouth_orig/src/plugins/renderers/drm/Makefile.am 2011-01-31 19:30:05.670205000 +0100 +++ plymouth/src/plugins/renderers/drm/Makefile.am 2011-02-01 09:17:08.000000000 +0100 @@ -16,13 +16,21 @@ ../../../libply/libply.la \ ../../../libply-splash-core/libply-splash-core.la drm_la_SOURCES = $(srcdir)/plugin.c \ - $(srcdir)/ply-renderer-driver.h \ - $(srcdir)/ply-renderer-i915-driver.h \ - $(srcdir)/ply-renderer-i915-driver.c \ - $(srcdir)/ply-renderer-radeon-driver.h \ - $(srcdir)/ply-renderer-radeon-driver.c \ - $(srcdir)/ply-renderer-nouveau-driver.h \ - $(srcdir)/ply-renderer-nouveau-driver.c + $(srcdir)/ply-renderer-driver.h +if ENABLE_LIBDRM_INTEL +drm_la_SOURCES += $(srcdir)/ply-renderer-i915-driver.h \ + $(srcdir)/ply-renderer-i915-driver.c +endif + +if ENABLE_LIBDRM_RADEON +drm_la_SOURCES += $(srcdir)/ply-renderer-radeon-driver.h \ + $(srcdir)/ply-renderer-radeon-driver.c +endif + +if ENABLE_LIBDRM_NOUVEAU +drm_la_SOURCES += $(srcdir)/ply-renderer-nouveau-driver.h \ + $(srcdir)/ply-renderer-nouveau-driver.c +endif if ENABLE_LIBKMS drm_la_LIBADD += $(LIBKMS_LIBS) diff -Naur plymouth_orig/src/plugins/renderers/drm/plugin.c plymouth/src/plugins/renderers/drm/plugin.c --- plymouth_orig/src/plugins/renderers/drm/plugin.c 2011-01-31 19:30:05.670205000 +0100 +++ plymouth/src/plugins/renderers/drm/plugin.c 2011-02-01 01:46:37.186205001 +0100 @@ -59,9 +59,15 @@ #include "ply-renderer.h" #include "ply-renderer-plugin.h" #include "ply-renderer-driver.h" +#ifdef PLY_ENABLE_LIBDRM_INTEL #include "ply-renderer-i915-driver.h" +#endif +#ifdef PLY_ENABLE_LIBDRM_RADEON #include "ply-renderer-radeon-driver.h" +#endif +#ifdef PLY_ENABLE_LIBDRM_NOUVEAU #include "ply-renderer-nouveau-driver.h" +#endif #ifdef PLY_ENABLE_LIBKMS #include "ply-renderer-libkms-driver.h" @@ -501,22 +507,28 @@ free (driver_name); return false; } - - if (strcmp (driver_name, "i915") == 0) + backend->driver_interface = NULL; +#ifdef PLY_ENABLE_LIBDRM_INTEL + if (backend->driver_interface == NULL && strcmp (driver_name, "i915") == 0) { backend->driver_interface = ply_renderer_i915_driver_get_interface (); backend->driver_supports_mapping_console = true; } - else if (strcmp (driver_name, "radeon") == 0) +#endif +#ifdef PLY_ENABLE_LIBDRM_RADEON + if (backend->driver_interface == NULL && strcmp (driver_name, "radeon") == 0) { backend->driver_interface = ply_renderer_radeon_driver_get_interface (); backend->driver_supports_mapping_console = false; } - else if (strcmp (driver_name, "nouveau") == 0) +#endif +#ifdef PLY_ENABLE_LIBDRM_NOUVEAU + if (backend->driver_interface == NULL && strcmp (driver_name, "nouveau") == 0) { backend->driver_interface = ply_renderer_nouveau_driver_get_interface (); backend->driver_supports_mapping_console = false; } +#endif free (driver_name);