Commit 44d9914b authored by Dan Nicholson's avatar Dan Nicholson

autoconf: Add support for shared DRI build on linux and freebsd

Added autoconf bits to allow using DRI as the driver through the option
--with-dri-driver=DRIVER. The options are x11 (default) and dri. Three
DRI specific options for controlling the driver directory, direct
rendering and TLS are also added.

The DRI will probably not work for platforms besides linux and freebsd.
parent 72796238
......@@ -63,6 +63,11 @@ DRIVER_DIRS = @DRIVER_DIRS@
# Which subdirs under $(TOP)/progs/ to enter:
PROGRAM_DIRS = @PROGRAM_DIRS@
# Driver specific build vars
DRI_DIRS = @DRI_DIRS@
WINDOW_SYSTEM = @WINDOW_SYSTEM@
USING_EGL = @USING_EGL@
# Dependencies
X11_INCLUDES = @X11_INCLUDES@
......@@ -78,6 +83,12 @@ GLW_LIB_DEPS = -L$(TOP)/$(LIB_DIR) @GLW_MESA_DEPS@ \
$(EXTRA_LIB_PATH) @GLW_LIB_DEPS@
APP_LIB_DEPS = $(EXTRA_LIB_PATH) @APP_LIB_DEPS@
# DRI dependencies
DRI_LIB_DEPS = $(EXTRA_LIB_PATH) @DRI_LIB_DEPS@
LIBDRM_CFLAGS = @LIBDRM_CFLAGS@
LIBDRM_LIB = @LIBDRM_LIBS@
EXPAT_INCLUDES = @EXPAT_INCLUDES@
# Autoconf directories
prefix = @prefix@
exec_prefix = @exec_prefix@
......@@ -85,3 +96,9 @@ libdir = @libdir@
# Installation directories (for make install)
INSTALL_DIR = $(prefix)
# DRI installation directories
DRI_DRIVER_INSTALL_DIR = @DRI_DRIVER_INSTALL_DIR@
# Where libGL will look for DRI hardware drivers
DRI_DRIVER_SEARCH_DIR = $(DRI_DRIVER_INSTALL_DIR)
......@@ -87,14 +87,44 @@ AC_SUBST(GLW_LIB_NAME)
AC_SUBST(OSMESA_LIB_NAME)
dnl
dnl Build directories for xlib driver
dnl Driver configuration. Options are x11 (Xlib) and dri right now.
dnl More later: osmesa, directfb, fbdev, ...
dnl
AC_ARG_WITH(driver,
[AS_HELP_STRING([--with-driver=DRIVER],
[driver for Mesa: x11,dri @<:@default=x11@:>@])],
mesa_driver="$withval",
mesa_driver="x11")
dnl Check for valid option
case "x$mesa_driver" in
xx11|xdri)
;;
*)
AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
;;
esac
dnl
dnl Driver specific build directories
dnl
SRC_DIRS="mesa"
DRIVER_DIRS="x11 osmesa"
GLU_DIRS="sgi"
DRI_DIRS=""
WINDOW_SYSTEM=""
case "$mesa_driver" in
x11)
DRIVER_DIRS="x11"
;;
dri)
SRC_DIRS="glx/x11 $SRC_DIRS"
DRIVER_DIRS="dri"
WINDOW_SYSTEM="dri"
;;
esac
AC_SUBST(SRC_DIRS)
AC_SUBST(GLU_DIRS)
AC_SUBST(DRIVER_DIRS)
AC_SUBST(WINDOW_SYSTEM)
dnl
dnl Find out if X is available. The variables have_x or no_x will be
......@@ -119,23 +149,50 @@ if test "$x11_pkgconfig" = no; then
AC_PATH_XTRA
fi
dnl We need X for xlib and dri, so bomb now if it's not found
case "$mesa_driver" in
x11|dri)
if test "$no_x" = yes; then
AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver])
fi
;;
esac
dnl
dnl libGL for xlib driver
dnl libGL configuration per driver
dnl
if test "$no_x" = yes; then
AC_MSG_ERROR([X11 development libraries needed for Xlib driver])
fi
case "$mesa_driver" in
x11)
if test "$x11_pkgconfig" = yes; then
PKG_CHECK_MODULES(X11GL, x11 xext)
X11_INCLUDES="$X11_INCLUDES $X11GL_CFLAGS"
GL_LIB_DEPS="$X11GL_LIBS"
else
# should check these...
X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
fi
GL_LIB_DEPS="$GL_LIB_DEPS -lm -lpthread"
;;
dri)
# Check for libdrm
PKG_CHECK_MODULES(LIBDRM, libdrm)
if test "$x11_pkgconfig" = yes; then
PKG_CHECK_MODULES(X11GL, x11 xext)
X11_INCLUDES="$X11_INCLUDES $X11GL_CFLAGS"
GL_LIB_DEPS="$X11GL_LIBS"
else
# should check these...
X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
fi
GL_LIB_DEPS="$GL_LIB_DEPS -lm -lpthread"
# find the DRI deps for libGL
if test "$x11_pkgconfig" = yes; then
PKG_CHECK_MODULES(DRIGL, x11 xext xxf86vm xdamage xfixes)
X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
GL_LIB_DEPS="$DRIGL_LIBS"
else
# should check these...
X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
fi
# need DRM libs, -lpthread, etc.
GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread -ldl"
;;
esac
AC_SUBST(GL_LIB_DEPS)
dnl
......@@ -145,9 +202,110 @@ if test "$mesa_driver" = x11; then
DEFINES="$DEFINES -DUSE_XSHM"
fi
dnl
dnl More DRI setup
dnl
AC_ARG_ENABLE(glx-tls,
[AS_HELP_STRING([--enable-glx-tls],
[enable TLS support in GLX @<:@default=no@:>@])],
GLX_USE_TLS="$enableval",
GLX_USE_TLS=no)
dnl Directory for DRI drivers
AC_ARG_WITH(dridriverdir,
[AS_HELP_STRING([--with-dridriverdir=DIR],
[directory for the DRI drivers @<:@/usr/X11R6/lib/modules/dri@:>@])],
DRI_DRIVER_INSTALL_DIR="$withval",
DRI_DRIVER_INSTALL_DIR='/usr/X11R6/lib/modules/dri')
AC_SUBST(DRI_DRIVER_INSTALL_DIR)
dnl Direct rendering or just indirect rendering
AC_ARG_ENABLE(driglx-direct,
[AS_HELP_STRING([--enable-driglx-direct],
[enable direct rendering in GLX for DRI @<:@default=yes@:>@])],
driglx_direct="$enableval",
driglx_direct="yes")
dnl Just default to no EGL for now
USING_EGL=0
AC_SUBST(USING_EGL)
dnl Set DRI_DIRS, DEFINES and LIB_DEPS
if test "$mesa_driver" = dri; then
# Use TLS in GLX?
if test "x$GLX_USE_TLS" = xyes; then
DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS"
fi
if test "x$USING_EGL" = x1; then
PROGRAM_DIRS="egl"
fi
# Platform specific settings and drivers to build
case "$host_os" in
linux*)
DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
if test "x$driglx_direct" = xyes; then
DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
fi
case "$host_cpu" in
i*86)
DRI_DIRS="i810 i915tex i915 i965 mach64 mga r128 r200 r300 \
radeon s3v savage sis tdfx trident unichrome ffb"
;;
x86_64)
DRI_DIRS="i915tex i915 i965 mach64 mga r128 r200 radeon tdfx \
unichrome savage r300"
;;
powerpc*)
DRI_DIRS="mach64 r128 r200 r300 radeon tdfx"
;;
esac
;;
freebsd*)
DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
if test "x$driglx_direct" = xyes; then
DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
fi
if test "x$GXX" = xyes; then
CXXFLAGS="$CXXFLAGS -ansi -pedantic"
fi
DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 radeon tdfx \
unichrome savage sis"
;;
esac
DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
# Check for expat
EXPAT_INCLUDES=""
EXPAT_LIB=-lexpat
AC_ARG_WITH(expat, AS_HELP_STRING([--with-expat=DIR],
[expat install directory]),[
EXPAT_INCLUDES="-I$withval/include"
CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
])
AC_CHECK_HEADER(expat.h,,AC_MSG_ERROR([Expat required for DRI.]))
AC_CHECK_LIB(expat, XML_ParserCreate,,
AC_MSG_ERROR([Expat required for DRI.]))
# put all the necessary libs together
DRI_LIB_DEPS="$LIBDRM_LIBS $EXPAT_LIB -lm -lpthread -ldl"
fi
AC_SUBST(DRI_DIRS)
AC_SUBST(EXPAT_INCLUDES)
AC_SUBST(DRI_LIB_DEPS)
dnl
dnl OSMesa configuration
dnl
if test "$mesa_driver" = x11; then
DRIVER_DIRS="$DRIVER_DIRS osmesa"
fi
OSMESA_LIB_DEPS=""
OSMESA_MESA_DEPS='-l$(GL_LIB)'
AC_SUBST(OSMESA_LIB_DEPS)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment