commit 049c414

Michael Forney  ·  2013-09-05 22:42:03 +0000 UTC
parent a133781
Rework configure options
6 files changed,  +108, -98
M drm.c
+21, -19
 1@@ -12,30 +12,12 @@ pkgconfig_DATA = wld.pc
 2 libwld_la_SOURCES = color.c drawable.c font.c
 3 libwld_la_LIBADD = $(fontconfig_LIBS) $(freetype_LIBS) $(pixman_LIBS)
 4 
 5-if WITH_WAYLAND
 6-    AM_CFLAGS += $(wayland_client_CFLAGS)
 7-    libwld_la_SOURCES += wayland.c
 8-    libwld_la_LIBADD += $(wayland_client_LIBS)
 9-    pkginclude_HEADERS += wayland.h
10-endif
11-
12 if ENABLE_DRM
13     libwld_la_SOURCES += drm.c
14     pkginclude_HEADERS += drm.h
15 endif
16 
17-if ENABLE_WAYLAND_DRM
18-    AM_CPPFLAGS = -I$(top_builddir)/protocol
19-    libwld_la_SOURCES += wayland-drm.c protocol/wayland-drm-protocol.c
20-    pkginclude_HEADERS += wayland-drm.h
21-endif
22-
23-if ENABLE_WAYLAND_SHM
24-    libwld_la_SOURCES += wayland-shm.c
25-    pkginclude_HEADERS += wayland-shm.h
26-endif
27-
28-if ENABLE_INTEL
29+if WITH_DRM_INTEL
30     AM_CFLAGS += $(drm_intel_CFLAGS) $(intelbatch_CFLAGS)
31     libwld_la_SOURCES += intel.c
32     libwld_la_LIBADD += $(drm_intel_LIBS) $(intelbatch_LIBS)
33@@ -46,5 +28,25 @@ if ENABLE_PIXMAN
34     pkginclude_HEADERS += pixman.h
35 endif
36 
37+if ENABLE_WAYLAND
38+    AM_CFLAGS += $(wayland_client_CFLAGS)
39+    libwld_la_SOURCES += wayland.c
40+    libwld_la_LIBADD += $(wayland_client_LIBS)
41+    pkginclude_HEADERS += wayland.h
42+endif
43+
44+if WITH_WAYLAND_DRM
45+    AM_CPPFLAGS = -I$(top_builddir)/protocol
46+    AM_CFLAGS += $(drm_CFLAGS)
47+    libwld_la_SOURCES += wayland-drm.c protocol/wayland-drm-protocol.c
48+    libwld_la_LIBADD += $(drm_LIBS)
49+    pkginclude_HEADERS += wayland-drm.h
50+endif
51+
52+if WITH_WAYLAND_SHM
53+    libwld_la_SOURCES += wayland-shm.c
54+    pkginclude_HEADERS += wayland-shm.h
55+endif
56+
57 SUBDIRS = protocol
58 
+81, -73
  1@@ -30,23 +30,6 @@ if test "x$enable_debug" = "xyes" ; then
  2     AC_DEFINE([ENABLE_DEBUG], [1], [Enable debug messages])
  3 fi
  4 
  5-# Wayland
  6-AC_ARG_WITH([wayland],
  7-            AS_HELP_STRING([--without-wayland],
  8-                           [disable Wayland support]),
  9-            with_wayland=$withval,
 10-            with_wayland=yes)
 11-if test "x$with_wayland" = "xyes" ; then
 12-    PKG_CHECK_MODULES([wayland_client], [wayland-client],,
 13-                      AC_MSG_ERROR([Wayland client libraries not found. Specify
 14-                                    --without-wayland to build without wayland
 15-                                    support]))
 16-    AC_DEFINE([WITH_WAYLAND], [1], [Build Wayland support])
 17-    PKGCONFIG_EXTRA_REQUIRES="wayland-client $PKGCONFIG_EXTRA_REQUIRES"
 18-
 19-fi
 20-AM_CONDITIONAL([WITH_WAYLAND], test "x$with_wayland" = "xyes")
 21-
 22 # DRM
 23 AC_ARG_ENABLE([drm],
 24               AS_HELP_STRING([--disable-drm],
 25@@ -55,65 +38,90 @@ AC_ARG_ENABLE([drm],
 26               enable_drm=yes)
 27 AM_CONDITIONAL([ENABLE_DRM], [test "x$enable_drm" = "xyes"])
 28 
 29-# Wayland DRM
 30-AC_ARG_ENABLE([wayland-drm],
 31-              AS_HELP_STRING([--disable-wayland-drm],
 32-                             [disable Wayland DRM support]),
 33-              enable_wayland_drm=$enableval,
 34-              enable_wayland_drm=$with_wayland)
 35-if test "x$enable_wayland_drm" = "xyes" ; then
 36-    if test "x$with_wayland" != "xyes" ; then
 37-        AC_MSG_ERROR([--enable-wayland-drm requires --with-wayland])
 38-    fi
 39-    AC_DEFINE([ENABLE_WAYLAND_DRM], [1], [Enable Wayland DRM support])
 40+# DRM drivers
 41+DEFAULT_DRM_DRIVERS=intel
 42+AC_ARG_WITH([drm-drivers],
 43+            AS_HELP_STRING([--with-drm-drivers=DRIVERS],
 44+                           [specify DRM drivers (comma separated)]),
 45+            with_drm_drivers=$withval,
 46+            with_drm_drivers=$DEFAULT_DRM_DRIVERS)
 47+case "x$with_drm_drivers" in
 48+    xyes)   with_drm_drivers=$DEFAULT_DRM_DRIVERS ;;
 49+    xno)    with_drm_drivers= ;;
 50+esac
 51+if test "x$drm_drivers" != "x" -a "x$enable_drm" != "xyes"; then
 52+    AC_MSG_ERROR([--with-drm-drivers requires --enable-drm])
 53 fi
 54-AM_CONDITIONAL([ENABLE_WAYLAND_DRM], test "x$enable_wayland_drm" = "xyes")
 55-
 56-# Wayland SHM
 57-AC_ARG_ENABLE([wayland-shm],
 58-              AS_HELP_STRING([--disable-wayland-shm],
 59-                             [disable Wayland SHM support]),
 60-              enable_shm=$enableval,
 61-              enable_shm=$with_wayland)
 62-if test "x$enable_wayland_shm" = "xyes" ; then
 63-    if test "x$with_wayland" != "xyes" ; then
 64-        AC_MSG_ERROR([--enable-wayland-shm requires --with-wayland])
 65-    fi
 66-    AC_DEFINE([ENABLE_WAYLAND_SHM], [1], [Enable Wayland SHM support])
 67+drm_drivers=`IFS=','; echo $with_drm_drivers`
 68+for driver in $drm_drivers ; do
 69+    case "x$driver" in
 70+        xintel)
 71+            AC_DEFINE([WITH_DRM_INTEL], [1], [Build Intel DRM driver])
 72+            PKG_CHECK_MODULES([drm_intel], [libdrm_intel],,
 73+                AC_MSG_ERROR([Intel DRM driver requires libdrm_intel]))
 74+            PKG_CHECK_MODULES([intelbatch], [intelbatch],,
 75+                AC_MSG_ERROR([Intel DRM driver requires libintelbatch]))
 76+            PKGCONFIG_REQUIRES_PRIVATE="libdrm_intel intelbatch \
 77+$PKGCONFIG_REQUIRES_PRIVATE"
 78+            with_drm_intel=yes
 79+        ;;
 80+        *)
 81+            AC_MSG_ERROR([Unknown DRM driver: '$driver'])
 82+        ;;
 83+    esac
 84+done
 85+AM_CONDITIONAL([WITH_DRM_INTEL], [test "x$with_drm_intel" = "xyes"])
 86+
 87+# Wayland
 88+AC_ARG_ENABLE([wayland],
 89+              AS_HELP_STRING([--disable-wayland],
 90+                             [disable Wayland support]),
 91+              enable_wayland=$enableval,
 92+              enable_wayland=yes)
 93+if test "x$enable_wayland" = "xyes" ; then
 94+    PKG_CHECK_MODULES([wayland_client], [wayland-client],,
 95+        AC_MSG_ERROR([Wayland client libraries not found. Specify \
 96+--disable-wayland to build without wayland support]))
 97+    PKGCONFIG_REQUIRES_PRIVATE="wayland-client $PKGCONFIG_REQUIRES_PRIVATE"
 98 fi
 99-AM_CONDITIONAL([ENABLE_WAYLAND_SHM], test "x$enable_wayland_shm" = "xyes")
100-
101-# Intel
102-AC_ARG_ENABLE([intel],
103-              AS_HELP_STRING([--disable-intel],
104-                             [disable Intel drawable support]),
105-              enable_intel=$enableval,
106-              enable_intel=auto)
107-if test "x$enable_intel" = "xyes" -o "x$enable_intel" = "xauto" ; then
108-    PKG_CHECK_MODULES([drm_intel], [libdrm_intel], have_drm_intel=yes,
109-        if test "x$enable_intel" = "xyes" ; then
110-            AC_MSG_ERROR([--enable-intel requires libdrm_intel])
111-        fi
112-    )
113-    PKG_CHECK_MODULES([intelbatch], [intelbatch], have_intelbatch=yes,
114-        if test "x$enable_intel" = "xyes" ; then
115-            AC_MSG_ERROR([--enable-intel requires libintelbatch])
116-        fi
117-    )
118-
119-    if test "x$enable_intel" = "xauto" \
120-         -a "x$have_drm_intel" = "xyes" -a "x$have_intelbatch" = "xyes"
121-    then
122-        enable_intel=yes
123-    fi
124-
125-    if test "x$enable_intel" = "xyes" ; then
126-        AC_DEFINE([ENABLE_INTEL], [1], [Enable Intel DRM support])
127-        PKGCONFIG_REQUIRES_PRIVATE="libdrm_intel $PKGCONFIG_REQUIRES_PRIVATE"
128-        PKGCONFIG_REQUIRES_PRIVATE="intelbatch $PKGCONFIG_REQUIRES_PRIVATE"
129-    fi
130+AM_CONDITIONAL([ENABLE_WAYLAND], [test "x$enable_wayland" = "xyes"])
131+
132+DEFAULT_WAYLAND_INTERFACES=drm,shm
133+AC_ARG_WITH([wayland-interfaces],
134+            AS_HELP_STRING([--with-wayland-interfaces=INTERFACES],
135+                           [specify Wayland interfaces (comma separated)]),
136+            with_wayland_interfaces=$withval,
137+            with_wayland_interfaces=$DEFAULT_WAYLAND_INTERFACES)
138+case "x$with_wayland_interfaces" in
139+    xyes)   with_wayland_interfaces=$DEFAULT_WAYLAND_INTERFACES ;;
140+    xno)    with_wayland_interfaces= ;;
141+esac
142+if test "x$wayland_interfaces" != "x" -a "x$enable_wayland" != "xyes"; then
143+    AC_MSG_ERROR([--with-wayland-interfaces requires --enable-wayland])
144 fi
145-AM_CONDITIONAL([ENABLE_INTEL], test "x$enable_intel" = "xyes")
146+wayland_interfaces=`IFS=','; echo $with_wayland_interfaces`
147+for interface in $wayland_interfaces ; do
148+    case "x$interface" in
149+        xdrm)
150+            PKG_CHECK_MODULES([libdrm], [libdrm],,
151+                AC_MSG_ERROR([Wayland DRM support requires libdrm]))
152+            PKGCONFIG_REQUIRES_PRIVATE="libdrm $PKGCONFIG_REQUIRES_PRIVATE"
153+            AC_DEFINE([WITH_WAYLAND_DRM], [1],
154+                      [Build support for wl_drm global])
155+            with_wayland_drm=yes
156+        ;;
157+        xshm)
158+            AC_DEFINE([WITH_WAYLAND_SHM], [1],
159+                      [Build support for wl_shm global])
160+            with_wayland_shm=yes
161+        ;;
162+        *)
163+            AC_MSG_ERROR([Unknown Wayland interface: '$interface'])
164+        ;;
165+    esac
166+done
167+AM_CONDITIONAL([WITH_WAYLAND_DRM], [test "x$with_wayland_drm" = "xyes"])
168+AM_CONDITIONAL([WITH_WAYLAND_SHM], [test "x$with_wayland_shm" = "xyes"])
169 
170 # Pixman
171 AC_ARG_ENABLE([pixman],
+1, -1
1@@ -66,7 +66,7 @@ struct drm_drawable
2 _Static_assert(offsetof(struct drm_drawable, base) == 0,
3                "Non-zero offset of base field");
4 
5-#if ENABLE_INTEL
6+#if WITH_DRM_INTEL
7 extern const struct wld_drm_interface intel_drm;
8 #endif
9 
M drm.c
+1, -1
1@@ -25,7 +25,7 @@
2 #include "drm-private.h"
3 
4 const static struct wld_drm_interface * drm_interfaces[] = {
5-#if ENABLE_INTEL
6+#if WITH_DRM_INTEL
7     &intel_drm
8 #endif
9 };
+2, -2
 1@@ -46,11 +46,11 @@ struct wld_wayland_interface
 2     wayland_create_drawable_func_t create_drawable;
 3 };
 4 
 5-#if ENABLE_WAYLAND_DRM
 6+#if WITH_WAYLAND_DRM
 7 extern const struct wld_wayland_interface wayland_drm_interface;
 8 #endif
 9 
10-#if ENABLE_WAYLAND_SHM
11+#if WITH_WAYLAND_SHM
12 extern const struct wld_wayland_interface wayland_shm_interface;
13 #endif
14 
+2, -2
 1@@ -105,11 +105,11 @@ const struct wld_draw_interface wayland_draw = {
 2 };
 3 
 4 const static struct wld_wayland_interface * interfaces[] = {
 5-#if ENABLE_WAYLAND_DRM
 6+#if WITH_WAYLAND_DRM
 7     [WLD_DRM] = &wayland_drm_interface,
 8 #endif
 9 
10-#if ENABLE_WAYLAND_SHM
11+#if WITH_WAYLAND_SHM
12     [WLD_SHM] = &wayland_shm_interface
13 #endif
14 };