Allow osmesa to be enabled or disabled
authorDan Nicholson <dbn.lists@gmail.com>
Sun, 30 Dec 2007 16:41:53 +0000 (08:41 -0800)
committerDan Nicholson <dbn.lists@gmail.com>
Fri, 11 Jan 2008 16:25:15 +0000 (08:25 -0800)
The conditional in src/mesa/Makefile currently hardcodes the cases where
libOSMesa can be built on libGL. Likewise, the xlib case always includes
libOSMesa in the stand-alone target.

This changes the conditional to a loop over the DRIVER_DIRS variable.
This means that any driver configuration can enable or disable osmesa.
The current "stand-alone" rule is changed so that DRIVER_DIRS=x11 and
DRIVER_DIRS="x11 osmesa" are both respected.

The configure option is changed to --enable-gl-osmesa as this change
allows libOSMesa to be built upon any of the libGL-enabling drivers.

configure.ac
docs/autoconf.html
src/mesa/Makefile

index 2acbd67e510493af688b05bed33bb2d348abc0ea..1a2a2cb46a9defa7e6086eb29cc11206237ce610 100644 (file)
@@ -523,20 +523,20 @@ dnl
 dnl OSMesa configuration
 dnl
 if test "$mesa_driver" = xlib; then
-    default_xlib_osmesa=yes
+    default_gl_osmesa=yes
 else
-    default_xlib_osmesa=no
+    default_gl_osmesa=no
 fi
-AC_ARG_ENABLE(xlib-osmesa,
-    [AS_HELP_STRING([--disable-xlib-osmesa],
-        [enable OSMesa on Xlib libGL @<:@default=enabled for xlib driver@:>@])],
-        xlib_osmesa="$enableval",
-        xlib_osmesa="$default_xlib_osmesa")
-if test "x$xlib_osmesa" = xyes; then
-    if test "$mesa_driver" = xlib; then
-        DRIVER_DIRS="$DRIVER_DIRS osmesa"
+AC_ARG_ENABLE(gl-osmesa,
+    [AS_HELP_STRING([--enable-gl-osmesa],
+        [enable OSMesa on libGL @<:@default=enabled for xlib driver@:>@])],
+        gl_osmesa="$enableval",
+        gl_osmesa="$default_gl_osmesa")
+if test "x$gl_osmesa" = xyes; then
+    if test "$mesa_driver" = osmesa; then
+        AC_MSG_ERROR([libGL is not available for OSMesa driver])
     else
-        AC_MSG_ERROR([Can only enable OSMesa on libGL for Xlib])
+        DRIVER_DIRS="$DRIVER_DIRS osmesa"
     fi
 fi
 
@@ -822,21 +822,17 @@ echo "        libdir:          $libdir"
 dnl Driver info
 echo ""
 echo "        Driver:          $mesa_driver"
-case "$mesa_driver" in
-xlib|osmesa)
-    if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
-        echo "        OSMesa:          lib$OSMESA_LIB"
-    else
-        echo "        OSMesa:          no"
-    fi
-    ;;
-dri)
+if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
+    echo "        OSMesa:          lib$OSMESA_LIB"
+else
+    echo "        OSMesa:          no"
+fi
+if test "$mesa_driver" = dri; then
     # cleanup the drivers var
     dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/  */ /;s/ *$//'`
     echo "        DRI drivers:     $dri_dirs"
     echo "        DRI driver dir:  $DRI_DRIVER_INSTALL_DIR"
-    ;;
-esac
+fi
 
 dnl Libraries
 echo ""
index 964ff140abc7e5a642b40403521e3c6e8bcd096d..518f5d2d416f21eaa6faadecc3bf1f4775fe2141 100644 (file)
@@ -116,6 +116,12 @@ be used. In this case, the <code>--with-x</code>,
 <code>--x-includes</code> and <code>--x-libraries</code> options can
 control the use of X for Mesa.
 </li>
+<li><code>--enable-gl-osmesa</code> - The <a href="osmesa.html">OSMesa
+library</a> can be built on top of libGL for drivers that provide it.
+This option controls whether to build libOSMesa. By default, this is
+enabled for the Xlib driver and disabled otherwise. Note that this
+option is different than using OSMesa as the driver.
+</li>
 <li><code>--enable-debug</code> - This option will enable compiler
 options and macros to aid in debugging the Mesa libraries.
 </li>
@@ -156,16 +162,6 @@ libraries, as well as the X11 development headers, will be need to
 support the Xlib driver.
 </li>
 
-<!-- Xlib specific options -->
-<p>
-<ul>
-<li><code>--disable-xlib-osmesa</code> - By default, the OSMesa library
-will be built and linked to the Xlib enabled libGL. This option disables
-building of libOSMesa.
-</li>
-</ul>
-</p>
-
 <a name="dri">
 <li><b><em>DRI</em></b> - This mode uses the DRI hardware drivers for
 accelerated OpenGL rendering. Enable the DRI drivers with the option
index 2c6d65d8a19816cab4434b3ce4beb483d651b074..02e0054479812864aed327a264d1636f778fed74 100644 (file)
@@ -25,19 +25,17 @@ GL_TINY = 0$(MESA_MAJOR)0$(MESA_MINOR)0$(MESA_TINY)
 
 # Figure out what to make here
 default:
-       @if [ "${DRIVER_DIRS}" = "dri" ] ; then \
-               $(MAKE) linux-solo ; \
-       elif [ "${DRIVER_DIRS}" = "osmesa" ] ; then \
-               $(MAKE) osmesa-only ; \
-       elif [ "$(DRIVER_DIRS)" = "beos" ]; then \
-               $(MAKE) beos ; \
-       elif [ "$(DRIVER_DIRS)" = "directfb" ]; then \
-               $(MAKE) directfb ; \
-       elif [ "$(DRIVER_DIRS)" = "fbdev osmesa" ]; then \
-               $(MAKE) fbdev ; $(MAKE) osmesa-only ; \
-       else \
-               $(MAKE) stand-alone ; \
-       fi
+       @for driver in $(DRIVER_DIRS) ; do \
+         case "$$driver" in \
+           x11)      $(MAKE) stand-alone ;; \
+           dri)      $(MAKE) linux-solo ;; \
+           osmesa)   $(MAKE) osmesa-only ;; \
+           beos)     $(MAKE) beos ;; \
+           directfb) $(MAKE) directfb ;; \
+           fbdev)    $(MAKE) fbdev ;; \
+           *) echo "$$driver is invalid in DRIVER_DIRS" >&2; exit 1;; \
+         esac ; \
+       done
 
 
 ######################################################################
@@ -105,7 +103,7 @@ OSMESA16_OBJECTS = \
        $(OSMESA_DRIVER_OBJECTS)
 
 
-stand-alone: depend subdirs $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME) $(TOP)/$(LIB_DIR)/$(OSMESA_LIB_NAME)
+stand-alone: depend subdirs $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME)
 
 osmesa-only: depend subdirs $(TOP)/$(LIB_DIR)/$(OSMESA_LIB_NAME)
 
@@ -174,9 +172,11 @@ install: default gl.pc
        @if [ -e $(TOP)/$(LIB_DIR)/$(OSMESA_LIB_NAME) ]; then \
                $(INSTALL) $(TOP)/$(LIB_DIR)/libOSMesa* $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR); \
        fi
-       @if [ "${DRIVER_DIRS}" = "dri" ] ; then \
-               cd drivers/dri ; $(MAKE) install ; \
-       fi
+       @for target in $(DRIVER_DIRS); do \
+         case "$$target" in \
+           dri) cd drivers/dri ; $(MAKE) install ;; \
+         esac; \
+       done
 
 ## NOT INSTALLED YET:
 ## $(INSTALL) -d $(DESTDIR)$(INSTALL_DIR)/include/GLES