Hi,

after talking to Dischi on IRC, here's the 3rd version, I hope it's ok
so far.

Lucian

diff -Naur --exclude=entries kaa/display/setup.py kaa_noX11/display/setup.py
--- kaa/display/setup.py	2006-02-24 20:17:01.000000000 +0100
+++ kaa_noX11/display/setup.py	2006-02-24 19:50:36.000000000 +0100
@@ -52,17 +52,17 @@
     print "+ FB support enabled"
     modules.append(fb)
 else:
-    print "+ FB support disabled"
+    print "- FB support disabled"
     fb = None
 
-# the framebuffer so module
+# the DirectFB so module
 dfb = Extension('kaa.display._DFBmodule', [ 'src/dfb.c'] )
 
 if dfb.check_library('directfb', '0.9.20'):
     print "+ DFB support enabled"
     modules.append(dfb)
 else:
-    print "+ DFB support disabled"
+    print "- DFB support disabled"
     dfb = None
 
 # config file
diff -Naur --exclude=entries kaa/display/src/display.c kaa_noX11/display/src/display.c
--- kaa/display/src/display.c	2006-02-24 20:17:00.000000000 +0100
+++ kaa_noX11/display/src/display.c	2006-02-24 19:19:24.000000000 +0100
@@ -33,8 +33,10 @@
 #include <Python.h>
 #include "config.h"
 #include "display.h"
+#ifdef HAVE_X11
 #include "x11display.h"
 #include "x11window.h"
+#endif
 #include "imlib2.h"
 #include "evas.h"
 #include "sdl.h"
@@ -43,11 +45,13 @@
     { "image_to_surface", (PyCFunction) image_to_surface, METH_VARARGS },
     { "render_imlib2_image", (PyCFunction) render_imlib2_image, METH_VARARGS },
 #ifdef USE_EVAS
+#ifdef HAVE_X11
     { "new_evas_software_x11", (PyCFunction) new_evas_software_x11, METH_VARARGS | METH_KEYWORDS },
 #ifdef ENABLE_ENGINE_GL_X11
     { "new_evas_gl_x11", (PyCFunction) new_evas_gl_x11, METH_VARARGS | METH_KEYWORDS },
 #endif
 #endif
+#endif
     { NULL }
 };
 
@@ -74,7 +78,7 @@
     static void *display_api_ptrs[3];
 
     m = Py_InitModule("_Display", display_methods);
-
+    #ifdef HAVE_X11
     if (PyType_Ready(&X11Display_PyObject_Type) < 0)
         return;
     Py_INCREF(&X11Display_PyObject_Type);
@@ -85,11 +89,12 @@
     Py_INCREF(&X11Window_PyObject_Type);
     PyModule_AddObject(m, "X11Window", (PyObject *)&X11Window_PyObject_Type);
 
+
     // Export display C API
     display_api_ptrs[0] = (void *)X11Window_PyObject__wrap;
     display_api_ptrs[1] = (void *)&X11Window_PyObject_Type;
     display_api_ptrs[2] = (void *)x11window_object_decompose;
-
+    #endif
     display_c_api = PyCObject_FromVoidPtr((void *)display_api_ptrs, NULL);
     PyModule_AddObject(m, "_C_API", display_c_api);
 
@@ -114,7 +119,8 @@
 #else
     Evas_PyObject_Type = NULL;
 #endif
-
+    #ifdef HAVE_X11
     if (!XInitThreads())
         PyErr_Format(PyExc_SystemError, "Unable to initialize X11 threads.");
+    #endif
 }
diff -Naur --exclude=entries kaa/display/src/evas.c kaa_noX11/display/src/evas.c
--- kaa/display/src/evas.c	2006-02-24 20:16:59.000000000 +0100
+++ kaa_noX11/display/src/evas.c	2006-02-24 19:19:24.000000000 +0100
@@ -39,8 +39,10 @@
 #ifdef USE_EVAS
 
 #include "evas.h"
+#ifdef HAVE_X11
 #include "x11display.h"
 #include "x11window.h"
+#endif
 
 Evas *(*evas_object_from_pyobject)(PyObject *pyevas);
 
diff -Naur --exclude=entries kaa/display/src/evas.h kaa_noX11/display/src/evas.h
--- kaa/display/src/evas.h	2006-02-24 20:17:00.000000000 +0100
+++ kaa_noX11/display/src/evas.h	2006-02-24 19:19:24.000000000 +0100
@@ -37,15 +37,17 @@
 #define _EVAS_H_
 
 #ifdef USE_EVAS
+#ifdef HAVE_X11
 #include "x11window.h"
+#endif
 #include <Evas.h>
 extern Evas *(*evas_object_from_pyobject)(PyObject *pyevas);
-
+#ifdef HAVE_X11
 X11Window_PyObject *new_evas_software_x11(PyObject *, PyObject *, PyObject *);
 
 #ifdef ENABLE_ENGINE_GL_X11
 X11Window_PyObject *new_evas_gl_x11(PyObject *, PyObject *, PyObject *);
 #endif
-
+#endif // HAVE_X11
 #endif // USE_EVAS
 #endif // _EVAS_H_
diff -Naur --exclude=entries kaa/xine/setup.py kaa_noX11/xine/setup.py
--- kaa/xine/setup.py	2006-02-24 20:16:50.000000000 +0100
+++ kaa_noX11/xine/setup.py	2006-02-24 20:09:37.000000000 +0100
@@ -30,22 +30,49 @@
 
 try:
     # kaa base imports
-    from kaa.base.distribution import Extension, setup
+    from kaa.base.distribution import Extension, Configfile, setup
 except ImportError:
     print 'kaa.base not installed'
     sys.exit(1)
-    
-files = ['src/xine.c', 'src/video_port.c', 'src/audio_port.c', 'src/stream.c',
-         'src/post.c', 'src/drivers/x11.c', 'src/drivers/video_out_kaa.c',
-         'src/post_out.c', 'src/post_in.c', 'src/event.c', 'src/event_queue.c',
-         'src/utils.c', 'src/vo_driver.c', 'src/drivers/kaa.c',
-         'src/drivers/yuv2rgb.c', 'src/drivers/yuv2rgb_mmx.c', 'src/drivers/dummy.c',
-         'src/drivers/video_out_dummy.c', 'src/drivers/common.c', 'src/drivers/fb.c'
-]
-xineso = Extension('kaa.xine._xinemodule', files, config='src/config.h', 
+
+# config file
+config = Configfile('src/config.h')
+
+# check for X11
+x11 = Extension('kaa.display._Displaymodule',
+                [ 'src/display.c', 'src/sdl.c', 'src/x11display.c',
+                  'src/x11window.c', 'src/imlib2.c', 'src/evas.c' ],
+                libraries = ['png', 'rt'])
+
+# check if X11 is actually present
+if not x11.check_cc(['<X11/Xlib.h>'], '', '-lX11'):
+    print "System without X11 detected! Disabling all X11 dependencies..."
+    x11 = None
+else:
+    config.define('HAVE_X11')
+
+
+if x11:
+	files = ['src/xine.c', 'src/video_port.c', 'src/audio_port.c', 'src/stream.c',
+         	'src/post.c', 'src/drivers/x11.c', 'src/drivers/video_out_kaa.c',
+         	'src/post_out.c', 'src/post_in.c', 'src/event.c', 'src/event_queue.c',
+         	'src/utils.c', 'src/vo_driver.c', 'src/drivers/kaa.c',
+         	'src/drivers/yuv2rgb.c', 'src/drivers/yuv2rgb_mmx.c', 'src/drivers/dummy.c',
+         	'src/drivers/video_out_dummy.c', 'src/drivers/common.c', 'src/drivers/fb.c'
+	]
+	xineso = Extension('kaa.xine._xinemodule', files, 
                    libraries = ["X11"], 
                    # FIXME: don't hardcode this path
                    library_dirs = ["/usr/X11R6/lib"])
+else:
+	files = ['src/xine.c', 'src/video_port.c', 'src/audio_port.c', 'src/stream.c',
+         	'src/post.c', 'src/drivers/video_out_kaa.c',
+         	'src/post_out.c', 'src/post_in.c', 'src/event.c', 'src/event_queue.c',
+         	'src/utils.c', 'src/vo_driver.c', 'src/drivers/kaa.c',
+         	'src/drivers/yuv2rgb.c', 'src/drivers/yuv2rgb_mmx.c', 'src/drivers/dummy.c',
+         	'src/drivers/video_out_dummy.c', 'src/drivers/common.c', 'src/drivers/fb.c'
+	]
+	xineso = Extension('kaa.xine._xinemodule', files)
 
 if not xineso.check_library('xine', '1.1.1'):
     print 'xine >= 1.1.1 not found'
diff -Naur --exclude=entries kaa/xine/src/config.h kaa_noX11/xine/src/config.h
--- kaa/xine/src/config.h	1970-01-01 01:00:00.000000000 +0100
+++ kaa_noX11/xine/src/config.h	2006-02-24 20:14:32.000000000 +0100
@@ -0,0 +1 @@
+#define HAVE_X11
diff -Naur --exclude=entries kaa/xine/src/drivers/common.c kaa_noX11/xine/src/drivers/common.c
--- kaa/xine/src/drivers/common.c	2006-02-24 20:16:47.000000000 +0100
+++ kaa_noX11/xine/src/drivers/common.c	2006-02-24 19:19:24.000000000 +0100
@@ -1,5 +1,7 @@
 #include "common.h"
+#ifdef HAVE_X11
 #include "x11.h"
+#endif
 #include "kaa.h"
 #include "dummy.h"
 
@@ -10,8 +12,12 @@
     *visual_type_return = XINE_VISUAL_TYPE_NONE;
     if (!strcmp(driver, "xv") || !strcmp(driver, "xshm") || !strcmp(driver, "auto") ||
         !strcmp(driver, "opengl") || !strcmp(driver, "sdl")) {
+	#ifdef HAVE_X11
         *visual_type_return = XINE_VISUAL_TYPE_X11;
         return x11_get_visual_info(xine, kwargs, visual_return, driver_info_return);
+	#endif
+	PyErr_Format(PyExc_ValueError, "Unsupported driver: %s", driver);
+	return 0;	
     } else if (!strcmp(driver, "none")) {
         *driver_info_return = 0;
         *visual_return = 0;
diff -Naur --exclude=entries kaa/xine/src/xine.c kaa_noX11/xine/src/xine.c
--- kaa/xine/src/xine.c	2006-02-24 20:16:48.000000000 +0100
+++ kaa_noX11/xine/src/xine.c	2006-02-24 19:19:24.000000000 +0100
@@ -13,7 +13,9 @@
 #include "drivers/video_out_kaa.h"
 #include "drivers/video_out_dummy.h"
 #include "drivers/kaa.h"
+#ifdef HAVE_X11
 #include "drivers/x11.h"
+#endif
 #include "drivers/dummy.h"
 #include "drivers/common.h"
 
@@ -740,10 +742,14 @@
         PyErr_Format(xine_error, "Failed to import kaa.display");
         return;
     }
+    #ifdef HAVE_X11
     X11Window_PyObject_Type = display_api_ptrs[1];
     x11window_object_decompose = display_api_ptrs[2];
+    #endif
 #else
+    #ifdef HAVE_X11
     X11Window_PyObject_Type = NULL;
+    #endif
 #endif
 
     PyEval_InitThreads();

Reply via email to