Merge branch 'mesa_7_6_branch' into mesa_7_7_branch
[profile/ivi/mesa.git] / configure.ac
1 dnl Process this file with autoconf to create configure.
2
3 AC_PREREQ([2.59])
4
5 dnl Versioning - scrape the version from configs/default
6 m4_define([mesa_version],
7     [m4_esyscmd([${MAKE-make} -s -f bin/version.mk version | tr -d '\n'])])
8 m4_ifval(mesa_version,,
9     [m4_fatal([Failed to get the Mesa version from `make -f bin/version.mk version`])])
10
11 dnl Tell the user about autoconf.html in the --help output
12 m4_divert_once([HELP_END], [
13 See docs/autoconf.html for more details on the options for Mesa.])
14
15 AC_INIT([Mesa],[mesa_version],
16     [https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa])
17 AC_CONFIG_AUX_DIR([bin])
18 AC_CANONICAL_HOST
19
20 dnl Versions for external dependencies
21 LIBDRM_REQUIRED=2.4.15
22 LIBDRM_RADEON_REQUIRED=2.4.17
23 DRI2PROTO_REQUIRED=1.99.3
24
25 dnl Check for progs
26 AC_PROG_CPP
27 AC_PROG_CC
28 AC_PROG_CXX
29 AC_CHECK_PROGS([MAKE], [gmake make])
30 AC_PATH_PROG([MKDEP], [makedepend])
31 AC_PATH_PROG([SED], [sed])
32
33 dnl Our fallback install-sh is a symlink to minstall. Use the existing
34 dnl configuration in that case.
35 AC_PROG_INSTALL
36 test "x$INSTALL" = "x$ac_install_sh" && INSTALL='$(MINSTALL)'
37
38 dnl We need a POSIX shell for parts of the build. Assume we have one
39 dnl in most cases.
40 case "$host_os" in
41 solaris*)
42     # Solaris /bin/sh is too old/non-POSIX compliant
43     AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
44     SHELL="$POSIX_SHELL"
45     ;;
46 esac
47
48 MKDEP_OPTIONS=-fdepend
49 dnl Ask gcc where it's keeping its secret headers
50 if test "x$GCC" = xyes; then
51     for dir in include include-fixed; do
52         GCC_INCLUDES=`$CC -print-file-name=$dir`
53         if test "x$GCC_INCLUDES" != x && \
54            test "$GCC_INCLUDES" != "$dir" && \
55            test -d "$GCC_INCLUDES"; then
56             MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
57         fi
58     done
59 fi
60 AC_SUBST([MKDEP_OPTIONS])
61
62 dnl Make sure the pkg-config macros are defined
63 m4_ifndef([PKG_PROG_PKG_CONFIG],
64     [m4_fatal([Could not locate the pkg-config autoconf macros.
65   These are usually located in /usr/share/aclocal/pkg.m4. If your macros
66   are in a different location, try setting the environment variable
67   ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
68 PKG_PROG_PKG_CONFIG()
69
70 dnl LIB_DIR - library basename
71 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
72 AC_SUBST([LIB_DIR])
73
74 dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
75 _SAVE_LDFLAGS="$LDFLAGS"
76 AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker])
77 AC_SUBST([EXTRA_LIB_PATH])
78
79 dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
80 _SAVE_CPPFLAGS="$CPPFLAGS"
81 AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers])
82 AC_SUBST([X11_INCLUDES])
83
84 dnl Compiler macros
85 DEFINES=""
86 AC_SUBST([DEFINES])
87 case "$host_os" in
88 linux*|*-gnu*|gnu*)
89     DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS"
90     ;;
91 solaris*)
92     DEFINES="$DEFINES -DPTHREADS -DSVR4"
93     ;;
94 esac
95
96 dnl Add flags for gcc and g++
97 if test "x$GCC" = xyes; then
98     CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99 -ffast-math"
99
100     # Work around aliasing bugs - developers should comment this out
101     CFLAGS="$CFLAGS -fno-strict-aliasing"
102 fi
103 if test "x$GXX" = xyes; then
104     CXXFLAGS="$CXXFLAGS -Wall"
105
106     # Work around aliasing bugs - developers should comment this out
107     CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
108 fi
109
110 dnl These should be unnecessary, but let the user set them if they want
111 AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
112     Default is to use CFLAGS.])
113 AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
114     compiler. Default is to use CFLAGS.])
115 AC_SUBST([OPT_FLAGS])
116 AC_SUBST([ARCH_FLAGS])
117
118 dnl
119 dnl Hacks to enable 32 or 64 bit build
120 dnl
121 AC_ARG_ENABLE([32-bit],
122     [AS_HELP_STRING([--enable-32-bit],
123         [build 32-bit libraries @<:@default=auto@:>@])],
124     [enable_32bit="$enableval"],
125     [enable_32bit=auto]
126 )
127 if test "x$enable_32bit" = xyes; then
128     if test "x$GCC" = xyes; then
129         CFLAGS="$CFLAGS -m32"
130         ARCH_FLAGS="$ARCH_FLAGS -m32"
131     fi
132     if test "x$GXX" = xyes; then
133         CXXFLAGS="$CXXFLAGS -m32"
134     fi
135 fi
136 AC_ARG_ENABLE([64-bit],
137     [AS_HELP_STRING([--enable-64-bit],
138         [build 64-bit libraries @<:@default=auto@:>@])],
139     [enable_64bit="$enableval"],
140     [enable_64bit=auto]
141 )
142 if test "x$enable_64bit" = xyes; then
143     if test "x$GCC" = xyes; then
144         CFLAGS="$CFLAGS -m64"
145     fi
146     if test "x$GXX" = xyes; then
147         CXXFLAGS="$CXXFLAGS -m64"
148     fi
149 fi
150
151 dnl
152 dnl shared/static libraries, mimic libtool options
153 dnl
154 AC_ARG_ENABLE([static],
155     [AS_HELP_STRING([--enable-static],
156         [build static libraries @<:@default=disabled@:>@])],
157     [enable_static="$enableval"],
158     [enable_static=no]
159 )
160 case "x$enable_static" in
161 xyes|xno ) ;;
162 x ) enable_static=no ;;
163 * )
164     AC_MSG_ERROR([Static library option '$enable_static' is not a valid])
165     ;;
166 esac
167 AC_ARG_ENABLE([shared],
168     [AS_HELP_STRING([--disable-shared],
169         [build shared libraries @<:@default=enabled@:>@])],
170     [enable_shared="$enableval"],
171     [enable_shared=yes]
172 )
173 case "x$enable_shared" in
174 xyes|xno ) ;;
175 x ) enable_shared=yes ;;
176 * )
177     AC_MSG_ERROR([Shared library option '$enable_shared' is not a valid])
178     ;;
179 esac
180
181 dnl Can't have static and shared libraries, default to static if user
182 dnl explicitly requested. If both disabled, set to static since shared
183 dnl was explicitly requirested.
184 case "x$enable_static$enable_shared" in
185 xyesyes )
186     AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
187     enable_shared=no
188     ;;
189 xnono )
190     AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
191     enable_static=yes
192     ;;
193 esac
194
195 dnl
196 dnl mklib options
197 dnl
198 AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
199 if test "$enable_static" = yes; then
200     MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
201 fi
202 AC_SUBST([MKLIB_OPTIONS])
203
204 dnl
205 dnl other compiler options
206 dnl
207 AC_ARG_ENABLE([debug],
208     [AS_HELP_STRING([--enable-debug],
209         [use debug compiler flags and macros @<:@default=disabled@:>@])],
210     [enable_debug="$enableval"],
211     [enable_debug=no]
212 )
213 if test "x$enable_debug" = xyes; then
214     DEFINES="$DEFINES -DDEBUG"
215     if test "x$GCC" = xyes; then
216         CFLAGS="$CFLAGS -g"
217     fi
218     if test "x$GXX" = xyes; then
219         CXXFLAGS="$CXXFLAGS -g"
220     fi
221 fi
222
223 dnl
224 dnl library names
225 dnl
226 if test "$enable_static" = yes; then
227     LIB_EXTENSION='a'
228 else
229     case "$host_os" in
230     darwin* )
231         LIB_EXTENSION='dylib' ;;
232     cygwin* )
233         LIB_EXTENSION='dll' ;;
234     aix* )
235         LIB_EXTENSION='a' ;;
236     * )
237         LIB_EXTENSION='so' ;;
238     esac
239 fi
240
241 GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
242 GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
243 GLUT_LIB_NAME='lib$(GLUT_LIB).'${LIB_EXTENSION}
244 GLW_LIB_NAME='lib$(GLW_LIB).'${LIB_EXTENSION}
245 OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
246
247 GL_LIB_GLOB='lib$(GL_LIB).*'${LIB_EXTENSION}'*'
248 GLU_LIB_GLOB='lib$(GLU_LIB).*'${LIB_EXTENSION}'*'
249 GLUT_LIB_GLOB='lib$(GLUT_LIB).*'${LIB_EXTENSION}'*'
250 GLW_LIB_GLOB='lib$(GLW_LIB).*'${LIB_EXTENSION}'*'
251 OSMESA_LIB_GLOB='lib$(OSMESA_LIB).*'${LIB_EXTENSION}'*'
252
253 AC_SUBST([GL_LIB_NAME])
254 AC_SUBST([GLU_LIB_NAME])
255 AC_SUBST([GLUT_LIB_NAME])
256 AC_SUBST([GLW_LIB_NAME])
257 AC_SUBST([OSMESA_LIB_NAME])
258
259 AC_SUBST([GL_LIB_GLOB])
260 AC_SUBST([GLU_LIB_GLOB])
261 AC_SUBST([GLUT_LIB_GLOB])
262 AC_SUBST([GLW_LIB_GLOB])
263 AC_SUBST([OSMESA_LIB_GLOB])
264
265 dnl
266 dnl Arch/platform-specific settings
267 dnl
268 AC_ARG_ENABLE([asm],
269     [AS_HELP_STRING([--disable-asm],
270         [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
271     [enable_asm="$enableval"],
272     [enable_asm=yes]
273 )
274 asm_arch=""
275 ASM_FLAGS=""
276 MESA_ASM_SOURCES=""
277 GLAPI_ASM_SOURCES=""
278 AC_MSG_CHECKING([whether to enable assembly])
279 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
280 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
281 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
282     case "$host_cpu" in
283     i?86 | x86_64)
284         enable_asm=no
285         AC_MSG_RESULT([no, cross compiling])
286         ;;
287     esac
288 fi
289 # check for supported arches
290 if test "x$enable_asm" = xyes; then
291     case "$host_cpu" in
292     i?86)
293         case "$host_os" in
294         linux* | *freebsd* | dragonfly*)
295             test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
296             ;;
297         esac
298         ;;
299     x86_64)
300         case "$host_os" in
301         linux* | *freebsd* | dragonfly*)
302             test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
303             ;;
304         esac
305         ;;
306     powerpc)
307         case "$host_os" in
308         linux*)
309             asm_arch=ppc
310             ;;
311         esac
312         ;;
313     sparc*)
314         case "$host_os" in
315         linux*)
316             asm_arch=sparc
317             ;;
318         esac
319         ;;
320     esac
321
322     case "$asm_arch" in
323     x86)
324         ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
325         MESA_ASM_SOURCES='$(X86_SOURCES)'
326         GLAPI_ASM_SOURCES='$(X86_API)'
327         AC_MSG_RESULT([yes, x86])
328         ;;
329     x86_64)
330         ASM_FLAGS="-DUSE_X86_64_ASM"
331         MESA_ASM_SOURCES='$(X86-64_SOURCES)'
332         GLAPI_ASM_SOURCES='$(X86-64_API)'
333         AC_MSG_RESULT([yes, x86_64])
334         ;;
335     ppc)
336         ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM"
337         MESA_ASM_SOURCES='$(PPC_SOURCES)'
338         AC_MSG_RESULT([yes, ppc])
339         ;;
340     sparc)
341         ASM_FLAGS="-DUSE_SPARC_ASM"
342         MESA_ASM_SOURCES='$(SPARC_SOURCES)'
343         GLAPI_ASM_SOURCES='$(SPARC_API)'
344         AC_MSG_RESULT([yes, sparc])
345         ;;
346     *)
347         AC_MSG_RESULT([no, platform not supported])
348         ;;
349     esac
350 fi
351 AC_SUBST([ASM_FLAGS])
352 AC_SUBST([MESA_ASM_SOURCES])
353 AC_SUBST([GLAPI_ASM_SOURCES])
354
355 dnl PIC code macro
356 MESA_PIC_FLAGS
357
358 dnl Check to see if dlopen is in default libraries (like Solaris, which
359 dnl has it in libc), or if libdl is needed to get it.
360 AC_CHECK_FUNC([dlopen], [],
361     [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
362
363 dnl See if posix_memalign is available
364 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
365
366 dnl SELinux awareness.
367 AC_ARG_ENABLE([selinux],
368     [AS_HELP_STRING([--enable-selinux],
369         [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
370     [MESA_SELINUX="$enableval"],
371     [MESA_SELINUX=no])
372 if test "x$enable_selinux" = "xyes"; then
373     AC_CHECK_HEADER([selinux/selinux.h],[],
374                     [AC_MSG_ERROR([SELinux headers not found])])
375     AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
376                  [AC_MSG_ERROR([SELinux library not found])])
377     SELINUX_LIBS="-lselinux"
378     DEFINES="$DEFINES -DMESA_SELINUX"
379 fi
380
381 dnl
382 dnl Driver configuration. Options are xlib, dri and osmesa right now.
383 dnl More later: directfb, fbdev, ...
384 dnl
385 default_driver="xlib"
386
387 case "$host_os" in
388 linux*)
389     case "$host_cpu" in
390     i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
391     esac
392     ;;
393 *freebsd* | dragonfly*)
394     case "$host_cpu" in
395     i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
396     esac
397     ;;
398 esac
399
400 AC_ARG_WITH([driver],
401     [AS_HELP_STRING([--with-driver=DRIVER],
402         [driver for Mesa: xlib,dri,osmesa @<:@default=dri when available, or xlib@:>@])],
403     [mesa_driver="$withval"],
404     [mesa_driver="$default_driver"])
405 dnl Check for valid option
406 case "x$mesa_driver" in
407 xxlib|xdri|xosmesa)
408     ;;
409 *)
410     AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
411     ;;
412 esac
413
414 dnl
415 dnl Driver specific build directories
416 dnl
417 SRC_DIRS="mesa glew"
418 GLU_DIRS="sgi"
419 WINDOW_SYSTEM=""
420 GALLIUM_DIRS="auxiliary drivers state_trackers"
421 GALLIUM_WINSYS_DIRS=""
422 GALLIUM_WINSYS_DRM_DIRS=""
423 GALLIUM_AUXILIARY_DIRS="rbug draw translate cso_cache pipebuffer tgsi sct rtasm util indices vl"
424 GALLIUM_DRIVERS_DIRS="softpipe failover trace identity"
425 GALLIUM_STATE_TRACKERS_DIRS=""
426
427 case "$mesa_driver" in
428 xlib)
429     DRIVER_DIRS="x11"
430     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS xlib"
431     ;;
432 dri)
433     SRC_DIRS="glx/x11 $SRC_DIRS"
434     DRIVER_DIRS="dri"
435     WINDOW_SYSTEM="dri"
436     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS drm"
437     ;;
438 osmesa)
439     DRIVER_DIRS="osmesa"
440     ;;
441 esac
442 AC_SUBST([SRC_DIRS])
443 AC_SUBST([GLU_DIRS])
444 AC_SUBST([DRIVER_DIRS])
445 AC_SUBST([WINDOW_SYSTEM])
446 AC_SUBST([GALLIUM_DIRS])
447 AC_SUBST([GALLIUM_WINSYS_DIRS])
448 AC_SUBST([GALLIUM_WINSYS_DRM_DIRS])
449 AC_SUBST([GALLIUM_DRIVERS_DIRS])
450 AC_SUBST([GALLIUM_AUXILIARY_DIRS])
451 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
452 AC_SUBST([RADEON_CFLAGS])
453 AC_SUBST([RADEON_LDFLAGS])
454
455 dnl
456 dnl User supplied program configuration
457 dnl
458 if test -d "$srcdir/progs/demos"; then
459     default_demos=yes
460 else
461     default_demos=no
462 fi
463 AC_ARG_WITH([demos],
464     [AS_HELP_STRING([--with-demos@<:@=DIRS...@:>@],
465         [optional comma delimited demo directories to build
466         @<:@default=auto if source available@:>@])],
467     [with_demos="$withval"],
468     [with_demos="$default_demos"])
469 if test "x$with_demos" = x; then
470     with_demos=no
471 fi
472
473 dnl If $with_demos is yes, directories will be added as libs available
474 PROGRAM_DIRS=""
475 case "$with_demos" in
476 no) ;;
477 yes)
478     # If the driver isn't osmesa, we have libGL and can build xdemos
479     if test "$mesa_driver" != osmesa; then
480         PROGRAM_DIRS="xdemos"
481     fi
482     ;;
483 *)
484     # verify the requested demos directories exist
485     demos=`IFS=,; echo $with_demos`
486     for demo in $demos; do
487         test -d "$srcdir/progs/$demo" || \
488             AC_MSG_ERROR([Program directory '$demo' doesn't exist])
489     done
490     PROGRAM_DIRS="$demos"
491     ;;
492 esac
493
494 dnl
495 dnl Find out if X is available. The variable have_x is set if libX11 is
496 dnl found to mimic AC_PATH_XTRA.
497 dnl
498 if test -n "$PKG_CONFIG"; then
499     AC_MSG_CHECKING([pkg-config files for X11 are available])
500     PKG_CHECK_EXISTS([x11],[
501         x11_pkgconfig=yes
502         have_x=yes
503         ],[
504         x11_pkgconfig=no
505     ])
506     AC_MSG_RESULT([$x11_pkgconfig])
507 else
508     x11_pkgconfig=no
509 fi
510 dnl Use the autoconf macro if no pkg-config files
511 if test "$x11_pkgconfig" = no; then
512     AC_PATH_XTRA
513 fi
514
515 dnl Try to tell the user that the --x-* options are only used when
516 dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
517 m4_divert_once([HELP_BEGIN],
518 [These options are only used when the X libraries cannot be found by the
519 pkg-config utility.])
520
521 dnl We need X for xlib and dri, so bomb now if it's not found
522 case "$mesa_driver" in
523 xlib|dri)
524     if test "$no_x" = yes; then
525         AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver])
526     fi
527     ;;
528 esac
529
530 dnl XCB - this is only used for GLX right now
531 AC_ARG_ENABLE([xcb],
532     [AS_HELP_STRING([--enable-xcb],
533         [use XCB for GLX @<:@default=disabled@:>@])],
534     [enable_xcb="$enableval"],
535     [enable_xcb=no])
536 if test "x$enable_xcb" = xyes; then
537     DEFINES="$DEFINES -DUSE_XCB"
538 else
539     enable_xcb=no
540 fi
541
542 dnl
543 dnl libGL configuration per driver
544 dnl
545 case "$mesa_driver" in
546 xlib)
547     if test "$x11_pkgconfig" = yes; then
548         PKG_CHECK_MODULES([XLIBGL], [x11 xext])
549         GL_PC_REQ_PRIV="x11 xext"
550         X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
551         GL_LIB_DEPS="$XLIBGL_LIBS"
552     else
553         # should check these...
554         X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
555         GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
556         GL_PC_LIB_PRIV="$GL_LIB_DEPS"
557         GL_PC_CFLAGS="$X11_INCLUDES"
558     fi
559     GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread"
560     GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
561
562     # if static, move the external libraries to the programs
563     # and empty the libraries for libGL
564     if test "$enable_static" = yes; then
565         APP_LIB_DEPS="$APP_LIB_DEPS $GL_LIB_DEPS"
566         GL_LIB_DEPS=""
567     fi
568     ;;
569 dri)
570     # DRI must be shared, I think
571     if test "$enable_static" = yes; then
572         AC_MSG_ERROR([Can't use static libraries for DRI drivers])
573     fi
574
575     # Check for libdrm
576     PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED])
577     PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
578     GL_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
579     DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
580
581     PKG_CHECK_MODULES([LIBDRM_RADEON], [libdrm_radeon libdrm >= $LIBDRM_RADEON_REQUIRED], HAVE_LIBDRM_RADEON=yes, HAVE_LIBDRM_RADEON=no)
582
583     if test "$HAVE_LIBDRM_RADEON" = yes; then
584         RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS"
585         RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS
586     fi
587
588     # find the DRI deps for libGL
589     if test "$x11_pkgconfig" = yes; then
590         # add xcb modules if necessary
591         dri_modules="x11 xext xxf86vm xdamage xfixes"
592         if test "$enable_xcb" = yes; then
593             dri_modules="$dri_modules x11-xcb xcb-glx"
594         fi
595
596         PKG_CHECK_MODULES([DRIGL], [$dri_modules])
597         GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
598         X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
599         GL_LIB_DEPS="$DRIGL_LIBS"
600     else
601         # should check these...
602         X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
603         GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
604         GL_PC_LIB_PRIV="$GL_LIB_DEPS"
605         GL_PC_CFLAGS="$X11_INCLUDES"
606
607         # XCB can only be used from pkg-config
608         if test "$enable_xcb" = yes; then
609             PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
610             GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
611             X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
612             GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
613         fi
614     fi
615
616     # need DRM libs, -lpthread, etc.
617     GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
618     GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
619     ;;
620 osmesa)
621     # No libGL for osmesa
622     GL_LIB_DEPS=""
623     ;;
624 esac
625 AC_SUBST([GL_LIB_DEPS])
626 AC_SUBST([GL_PC_REQ_PRIV])
627 AC_SUBST([GL_PC_LIB_PRIV])
628 AC_SUBST([GL_PC_CFLAGS])
629 AC_SUBST([DRI_PC_REQ_PRIV])
630
631 dnl
632 dnl More X11 setup
633 dnl
634 if test "$mesa_driver" = xlib; then
635     DEFINES="$DEFINES -DUSE_XSHM"
636 fi
637
638 dnl
639 dnl More DRI setup
640 dnl
641 AC_ARG_ENABLE([glx-tls],
642     [AS_HELP_STRING([--enable-glx-tls],
643         [enable TLS support in GLX @<:@default=disabled@:>@])],
644     [GLX_USE_TLS="$enableval"],
645     [GLX_USE_TLS=no])
646 dnl Directory for DRI drivers
647 AC_ARG_WITH([dri-driverdir],
648     [AS_HELP_STRING([--with-dri-driverdir=DIR],
649         [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
650     [DRI_DRIVER_INSTALL_DIR="$withval"],
651     [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
652 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
653 dnl Extra search path for DRI drivers
654 AC_ARG_WITH([dri-searchpath],
655     [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
656         [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
657     [DRI_DRIVER_SEARCH_DIR="$withval"],
658     [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
659 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
660 dnl Direct rendering or just indirect rendering
661 AC_ARG_ENABLE([driglx-direct],
662     [AS_HELP_STRING([--disable-driglx-direct],
663         [enable direct rendering in GLX for DRI @<:@default=enabled@:>@])],
664     [driglx_direct="$enableval"],
665     [driglx_direct="yes"])
666 dnl Which drivers to build - default is chosen by platform
667 AC_ARG_WITH([dri-drivers],
668     [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
669         [comma delimited DRI drivers list, e.g.
670         "swrast,i965,radeon" @<:@default=auto@:>@])],
671     [with_dri_drivers="$withval"],
672     [with_dri_drivers=yes])
673 if test "x$with_dri_drivers" = x; then
674     with_dri_drivers=no
675 fi
676
677 dnl If $with_dri_drivers is yes, directories will be added through
678 dnl platform checks
679 DRI_DIRS=""
680 case "$with_dri_drivers" in
681 no) ;;
682 yes)
683     DRI_DIRS="yes"
684     ;;
685 *)
686     # verify the requested driver directories exist
687     dri_drivers=`IFS=', '; echo $with_dri_drivers`
688     for driver in $dri_drivers; do
689         test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
690             AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
691     done
692     DRI_DIRS="$dri_drivers"
693     ;;
694 esac
695
696 dnl Just default to no EGL for now
697 USING_EGL=0
698 AC_SUBST([USING_EGL])
699
700 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
701 if test "$mesa_driver" = dri; then
702     # Use TLS in GLX?
703     if test "x$GLX_USE_TLS" = xyes; then
704         DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS"
705     fi
706
707     if test "x$USING_EGL" = x1; then
708         PROGRAM_DIRS="egl"
709     fi
710
711     # Platform specific settings and drivers to build
712     case "$host_os" in
713     linux*)
714         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
715         if test "x$driglx_direct" = xyes; then
716             DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
717         fi
718         DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
719
720         case "$host_cpu" in
721         x86_64)
722             # ffb, gamma, and sis are missing because they have not be
723             # converted to use the new interface.  i810 are missing
724             # because there is no x86-64 system where they could *ever*
725             # be used.
726             if test "x$DRI_DIRS" = "xyes"; then
727                 DRI_DIRS="i915 i965 mach64 mga r128 r200 r300 r600 radeon \
728                     savage tdfx unichrome swrast"
729             fi
730             ;;
731         powerpc*)
732             # Build only the drivers for cards that exist on PowerPC.
733             # At some point MGA will be added, but not yet.
734             if test "x$DRI_DIRS" = "xyes"; then
735                 DRI_DIRS="mach64 r128 r200 r300 r600 radeon tdfx swrast"
736             fi
737             ;;
738         sparc*)
739             # Build only the drivers for cards that exist on sparc`
740             if test "x$DRI_DIRS" = "xyes"; then
741                 DRI_DIRS="mach64 r128 r200 r300 r600 radeon ffb swrast"
742             fi
743             ;;
744         esac
745         ;;
746     freebsd* | dragonfly*)
747         DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
748         DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
749         DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
750         if test "x$driglx_direct" = xyes; then
751             DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
752         fi
753         if test "x$GXX" = xyes; then
754             CXXFLAGS="$CXXFLAGS -ansi -pedantic"
755         fi
756
757         # ffb and gamma are missing because they have not been converted
758         # to use the new interface.
759         if test "x$DRI_DIRS" = "xyes"; then
760             DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon tdfx \
761                 unichrome savage sis swrast"
762         fi
763         ;;
764     gnu*)
765         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
766         DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
767         ;;
768     solaris*)
769         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
770         DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
771         if test "x$driglx_direct" = xyes; then
772             DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
773         fi
774         ;;
775     esac
776
777     # default drivers
778     if test "x$DRI_DIRS" = "xyes"; then
779         DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon \
780             savage sis tdfx unichrome ffb swrast"
781     fi
782
783     DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/  */ /g'`
784
785     # Check for expat
786     EXPAT_INCLUDES=""
787     EXPAT_LIB=-lexpat
788     AC_ARG_WITH([expat],
789         [AS_HELP_STRING([--with-expat=DIR],
790             [expat install directory])],[
791         EXPAT_INCLUDES="-I$withval/include"
792         CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
793         LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
794         EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
795         ])
796     AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
797     AC_CHECK_LIB([expat],[XML_ParserCreate],[],
798         [AC_MSG_ERROR([Expat required for DRI.])])
799
800     # put all the necessary libs together
801     DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
802 fi
803 AC_SUBST([DRI_DIRS])
804 AC_SUBST([EXPAT_INCLUDES])
805 AC_SUBST([DRI_LIB_DEPS])
806
807 dnl
808 dnl OSMesa configuration
809 dnl
810 if test "$mesa_driver" = xlib; then
811     default_gl_osmesa=yes
812 else
813     default_gl_osmesa=no
814 fi
815 AC_ARG_ENABLE([gl-osmesa],
816     [AS_HELP_STRING([--enable-gl-osmesa],
817         [enable OSMesa on libGL @<:@default=enabled for xlib driver@:>@])],
818     [gl_osmesa="$enableval"],
819     [gl_osmesa="$default_gl_osmesa"])
820 if test "x$gl_osmesa" = xyes; then
821     if test "$mesa_driver" = osmesa; then
822         AC_MSG_ERROR([libGL is not available for OSMesa driver])
823     else
824         DRIVER_DIRS="$DRIVER_DIRS osmesa"
825     fi
826 fi
827
828 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
829 AC_ARG_WITH([osmesa-bits],
830     [AS_HELP_STRING([--with-osmesa-bits=BITS],
831         [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
832     [osmesa_bits="$withval"],
833     [osmesa_bits=8])
834 if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
835     AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
836     osmesa_bits=8
837 fi
838 case "x$osmesa_bits" in
839 x8)
840     OSMESA_LIB=OSMesa
841     ;;
842 x16|x32)
843     OSMESA_LIB="OSMesa$osmesa_bits"
844     DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
845     ;;
846 *)
847     AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
848     ;;
849 esac
850 AC_SUBST([OSMESA_LIB])
851
852 case "$mesa_driver" in
853 osmesa)
854     # only link libraries with osmesa if shared
855     if test "$enable_static" = no; then
856         OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
857     else
858         OSMESA_LIB_DEPS=""
859     fi
860     OSMESA_MESA_DEPS=""
861     OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
862     ;;
863 *)
864     # Link OSMesa to libGL otherwise
865     OSMESA_LIB_DEPS=""
866     # only link libraries with osmesa if shared
867     if test "$enable_static" = no; then
868         OSMESA_MESA_DEPS='-l$(GL_LIB)'
869     else
870         OSMESA_MESA_DEPS=""
871     fi
872     OSMESA_PC_REQ="gl"
873     ;;
874 esac
875 OSMESA_PC_LIB_PRIV="$OSMESA_PC_LIB_PRIV"
876 AC_SUBST([OSMESA_LIB_DEPS])
877 AC_SUBST([OSMESA_MESA_DEPS])
878 AC_SUBST([OSMESA_PC_REQ])
879 AC_SUBST([OSMESA_PC_LIB_PRIV])
880
881 dnl
882 dnl EGL configuration
883 dnl
884 AC_ARG_ENABLE([egl],
885     [AS_HELP_STRING([--disable-egl],
886         [disable EGL library @<:@default=enabled@:>@])],
887     [enable_egl="$enableval"],
888     [enable_egl=yes])
889 if test "x$enable_egl" = xyes; then
890     SRC_DIRS="$SRC_DIRS egl"
891
892     if test "$x11_pkgconfig" = yes; then
893         PKG_CHECK_MODULES([EGL], [x11])
894         EGL_LIB_DEPS="$EGL_LIBS"
895     else
896         # should check these...
897         EGL_LIB_DEPS="$X_LIBS -lX11"
898     fi
899     EGL_LIB_DEPS="$EGL_LIB_DEPS $DLOPEN_LIBS"
900 fi
901 AC_SUBST([EGL_LIB_DEPS])
902
903 dnl
904 dnl GLU configuration
905 dnl
906 AC_ARG_ENABLE([glu],
907     [AS_HELP_STRING([--disable-glu],
908         [enable OpenGL Utility library @<:@default=enabled@:>@])],
909     [enable_glu="$enableval"],
910     [enable_glu=yes])
911 if test "x$enable_glu" = xyes; then
912     SRC_DIRS="$SRC_DIRS glu"
913
914     case "$mesa_driver" in
915     osmesa)
916         # If GLU is available and we have libOSMesa (not 16 or 32),
917         # we can build the osdemos
918         if test "$with_demos" = yes && test "$osmesa_bits" = 8; then
919             PROGRAM_DIRS="$PROGRAM_DIRS osdemos"
920         fi
921
922         # Link libGLU to libOSMesa instead of libGL
923         GLU_LIB_DEPS=""
924         GLU_PC_REQ="osmesa"
925         if test "$enable_static" = no; then
926             GLU_MESA_DEPS='-l$(OSMESA_LIB)'
927         else
928             GLU_MESA_DEPS=""
929         fi
930         ;;
931     *)
932         # If static, empty GLU_LIB_DEPS and add libs for programs to link
933         GLU_PC_REQ="gl"
934         GLU_PC_LIB_PRIV="-lm"
935         if test "$enable_static" = no; then
936             GLU_LIB_DEPS="-lm"
937             GLU_MESA_DEPS='-l$(GL_LIB)'
938         else
939             GLU_LIB_DEPS=""
940             GLU_MESA_DEPS=""
941             APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
942         fi
943         ;;
944     esac
945 fi
946 if test "$enable_static" = no; then
947     GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
948 fi
949 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
950 AC_SUBST([GLU_LIB_DEPS])
951 AC_SUBST([GLU_MESA_DEPS])
952 AC_SUBST([GLU_PC_REQ])
953 AC_SUBST([GLU_PC_REQ_PRIV])
954 AC_SUBST([GLU_PC_LIB_PRIV])
955 AC_SUBST([GLU_PC_CFLAGS])
956
957 dnl
958 dnl GLw configuration
959 dnl
960 AC_ARG_ENABLE([glw],
961     [AS_HELP_STRING([--disable-glw],
962         [enable Xt/Motif widget library @<:@default=enabled@:>@])],
963     [enable_glw="$enableval"],
964     [enable_glw=yes])
965 dnl Don't build GLw on osmesa
966 if test "x$enable_glw" = xyes && test "$mesa_driver" = osmesa; then
967     AC_MSG_WARN([Disabling GLw since the driver is OSMesa])
968     enable_glw=no
969 fi
970 AC_ARG_ENABLE([motif],
971     [AS_HELP_STRING([--enable-motif],
972         [use Motif widgets in GLw @<:@default=disabled@:>@])],
973     [enable_motif="$enableval"],
974     [enable_motif=no])
975
976 if test "x$enable_glw" = xyes; then
977     SRC_DIRS="$SRC_DIRS glw"
978     if test "$x11_pkgconfig" = yes; then
979         PKG_CHECK_MODULES([GLW],[x11 xt])
980         GLW_PC_REQ_PRIV="x11 xt"
981         GLW_LIB_DEPS="$GLW_LIBS"
982     else
983         # should check these...
984         GLW_LIB_DEPS="$X_LIBS -lXt -lX11"
985         GLW_PC_LIB_PRIV="$GLW_LIB_DEPS"
986         GLW_PC_CFLAGS="$X11_INCLUDES"
987     fi
988
989     GLW_SOURCES="GLwDrawA.c"
990     MOTIF_CFLAGS=
991     if test "x$enable_motif" = xyes; then
992         GLW_SOURCES="$GLW_SOURCES GLwMDrawA.c"
993         AC_PATH_PROG([MOTIF_CONFIG], [motif-config], [no])
994         if test "x$MOTIF_CONFIG" != xno; then
995             MOTIF_CFLAGS=`$MOTIF_CONFIG --cflags`
996             MOTIF_LIBS=`$MOTIF_CONFIG --libs`
997         else
998             AC_CHECK_HEADER([Xm/PrimitiveP.h], [],
999                 [AC_MSG_ERROR([Can't locate Motif headers])])
1000             AC_CHECK_LIB([Xm], [XmGetPixmap], [MOTIF_LIBS="-lXm"],
1001                 [AC_MSG_ERROR([Can't locate Motif Xm library])])
1002         fi
1003         # MOTIF_LIBS is prepended to GLW_LIB_DEPS since Xm needs Xt/X11
1004         GLW_LIB_DEPS="$MOTIF_LIBS $GLW_LIB_DEPS"
1005         GLW_PC_LIB_PRIV="$MOTIF_LIBS $GLW_PC_LIB_PRIV"
1006         GLW_PC_CFLAGS="$MOTIF_CFLAGS $GLW_PC_CFLAGS"
1007     fi
1008
1009     # If static, empty GLW_LIB_DEPS and add libs for programs to link
1010     GLW_PC_LIB_PRIV="$GLW_PC_LIB_PRIV"
1011     if test "$enable_static" = no; then
1012         GLW_MESA_DEPS='-l$(GL_LIB)'
1013         GLW_LIB_DEPS="$GLW_LIB_DEPS"
1014     else
1015         APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
1016         GLW_LIB_DEPS=""
1017         GLW_MESA_DEPS=""
1018     fi
1019 fi
1020 AC_SUBST([GLW_LIB_DEPS])
1021 AC_SUBST([GLW_MESA_DEPS])
1022 AC_SUBST([GLW_SOURCES])
1023 AC_SUBST([MOTIF_CFLAGS])
1024 AC_SUBST([GLW_PC_REQ_PRIV])
1025 AC_SUBST([GLW_PC_LIB_PRIV])
1026 AC_SUBST([GLW_PC_CFLAGS])
1027
1028 dnl
1029 dnl GLUT configuration
1030 dnl
1031 if test -f "$srcdir/include/GL/glut.h"; then
1032     default_glut=yes
1033 else
1034     default_glut=no
1035 fi
1036 AC_ARG_ENABLE([glut],
1037     [AS_HELP_STRING([--disable-glut],
1038         [enable GLUT library @<:@default=enabled if source available@:>@])],
1039     [enable_glut="$enableval"],
1040     [enable_glut="$default_glut"])
1041
1042 dnl Can't build glut if GLU not available
1043 if test "x$enable_glu$enable_glut" = xnoyes; then
1044     AC_MSG_WARN([Disabling glut since GLU is disabled])
1045     enable_glut=no
1046 fi
1047 dnl Don't build glut on osmesa
1048 if test "x$enable_glut" = xyes && test "$mesa_driver" = osmesa; then
1049     AC_MSG_WARN([Disabling glut since the driver is OSMesa])
1050     enable_glut=no
1051 fi
1052
1053 if test "x$enable_glut" = xyes; then
1054     SRC_DIRS="$SRC_DIRS glut/glx"
1055     GLUT_CFLAGS=""
1056     if test "x$GCC" = xyes; then
1057         GLUT_CFLAGS="-fexceptions"
1058     fi
1059     if test "$x11_pkgconfig" = yes; then
1060         PKG_CHECK_MODULES([GLUT],[x11 xmu xi])
1061         GLUT_PC_REQ_PRIV="x11 xmu xi"
1062         GLUT_LIB_DEPS="$GLUT_LIBS"
1063     else
1064         # should check these...
1065         GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
1066         GLUT_PC_LIB_PRIV="$GLUT_LIB_DEPS"
1067         GLUT_PC_CFLAGS="$X11_INCLUDES"
1068     fi
1069     GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
1070     GLUT_PC_LIB_PRIV="$GLUT_PC_LIB_PRIV -lm"
1071
1072     # If glut is available, we can build most programs
1073     if test "$with_demos" = yes; then
1074         PROGRAM_DIRS="$PROGRAM_DIRS demos redbook samples glsl"
1075     fi
1076
1077     # If static, empty GLUT_LIB_DEPS and add libs for programs to link
1078     if test "$enable_static" = no; then
1079         GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
1080     else
1081         APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
1082         GLUT_LIB_DEPS=""
1083         GLUT_MESA_DEPS=""
1084     fi
1085 fi
1086 AC_SUBST([GLUT_LIB_DEPS])
1087 AC_SUBST([GLUT_MESA_DEPS])
1088 AC_SUBST([GLUT_CFLAGS])
1089 AC_SUBST([GLUT_PC_REQ_PRIV])
1090 AC_SUBST([GLUT_PC_LIB_PRIV])
1091 AC_SUBST([GLUT_PC_CFLAGS])
1092
1093 dnl
1094 dnl Program library dependencies
1095 dnl    Only libm is added here if necessary as the libraries should
1096 dnl    be pulled in by the linker
1097 dnl
1098 if test "x$APP_LIB_DEPS" = x; then
1099     case "$host_os" in
1100     solaris*)
1101         APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm"
1102         ;;
1103     cygwin*)
1104         APP_LIB_DEPS="-lX11"
1105         ;;
1106     *)
1107         APP_LIB_DEPS="-lm"
1108         ;;
1109     esac
1110 fi
1111 AC_SUBST([APP_LIB_DEPS])
1112 AC_SUBST([PROGRAM_DIRS])
1113
1114 dnl
1115 dnl Gallium configuration
1116 dnl
1117 AC_ARG_ENABLE([gallium],
1118     [AS_HELP_STRING([--disable-gallium],
1119         [build gallium @<:@default=enabled@:>@])],
1120     [enable_gallium="$enableval"],
1121     [enable_gallium=yes])
1122 if test "x$enable_gallium" = xyes; then
1123     SRC_DIRS="$SRC_DIRS gallium gallium/winsys"
1124 fi
1125
1126 dnl
1127 dnl Gallium state trackers configuration
1128 dnl
1129 AC_ARG_WITH([state-trackers],
1130     [AS_HELP_STRING([--with-state-trackers@<:@=DIRS...@:>@],
1131         [comma delimited state_trackers list, e.g.
1132         "egl,glx" @<:@default=auto@:>@])],
1133     [with_state_trackers="$withval"],
1134     [with_state_trackers=yes])
1135
1136 case "$with_state_trackers" in
1137 no)
1138     GALLIUM_STATE_TRACKERS_DIRS=""
1139     ;;
1140 yes)
1141     # look at what else is built
1142     case "$mesa_driver" in
1143     xlib)
1144         GALLIUM_STATE_TRACKERS_DIRS=glx
1145         ;;
1146     dri)
1147         GALLIUM_STATE_TRACKERS_DIRS="dri"
1148         if test "x$enable_egl" = xyes; then
1149             GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS egl"
1150         fi
1151         # Have only tested st/xorg on 1.6.0 servers
1152         PKG_CHECK_MODULES(XORG, [xorg-server >= 1.6.0],
1153             HAVE_XORG="yes"; GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg",
1154             HAVE_XORG="no")
1155         ;;
1156     esac
1157     ;;
1158 *)
1159     # verify the requested state tracker exist
1160     state_trackers=`IFS=', '; echo $with_state_trackers`
1161     for tracker in $state_trackers; do
1162         test -d "$srcdir/src/gallium/state_trackers/$tracker" || \
1163             AC_MSG_ERROR([state tracker '$tracker' doesn't exist])
1164
1165         if test "$tracker" = egl && test "x$enable_egl" != xyes; then
1166             AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1167         fi
1168         if test "$tracker" = xorg; then
1169             PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1170                   HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1171                   HAVE_XEXTPROTO_71="no")
1172         fi
1173     done
1174     GALLIUM_STATE_TRACKERS_DIRS="$state_trackers"
1175     ;;
1176 esac
1177
1178 AC_ARG_WITH([xorg-driver-dir],
1179     [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1180                     [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1181     [XORG_DRIVER_INSTALL_DIR="$withval"],
1182     [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1183 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1184
1185 AC_ARG_WITH([max-width],
1186     [AS_HELP_STRING([--with-max-width=N],
1187                     [Maximum framebuffer width (4096)])],
1188     [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1189      AS_IF([test "${withval}" -gt "4096"],
1190            [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1191 )
1192 AC_ARG_WITH([max-height],
1193     [AS_HELP_STRING([--with-max-height=N],
1194                     [Maximum framebuffer height (4096)])],
1195     [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1196      AS_IF([test "${withval}" -gt "4096"],
1197            [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1198 )
1199
1200 dnl
1201 dnl Gallium SVGA configuration
1202 dnl
1203 AC_ARG_ENABLE([gallium-svga],
1204     [AS_HELP_STRING([--enable-gallium-svga],
1205         [build gallium SVGA @<:@default=disabled@:>@])],
1206     [enable_gallium_svga="$enableval"],
1207     [enable_gallium_svga=auto])
1208 if test "x$enable_gallium_svga" = xyes; then
1209     GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS vmware"
1210     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1211 elif test "x$enable_gallium_svga" = xauto; then
1212     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1213 fi
1214
1215 dnl
1216 dnl Gallium Intel configuration
1217 dnl
1218 AC_ARG_ENABLE([gallium-intel],
1219     [AS_HELP_STRING([--enable-gallium-intel],
1220         [build gallium intel @<:@default=disabled@:>@])],
1221     [enable_gallium_intel="$enableval"],
1222     [enable_gallium_intel=auto])
1223 if test "x$enable_gallium_intel" = xyes; then
1224     GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS intel"
1225     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915"
1226 elif test "x$enable_gallium_intel" = xauto; then
1227     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915"
1228 fi
1229
1230 dnl
1231 dnl Gallium Radeon configuration
1232 dnl
1233 AC_ARG_ENABLE([gallium-radeon],
1234     [AS_HELP_STRING([--enable-gallium-radeon],
1235         [build gallium radeon @<:@default=disabled@:>@])],
1236     [enable_gallium_radeon="$enableval"],
1237     [enable_gallium_radeon=no])
1238 if test "x$enable_gallium_radeon" = xyes; then
1239     GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS radeon"
1240     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1241 fi
1242
1243 dnl
1244 dnl Gallium Nouveau configuration
1245 dnl
1246 AC_ARG_ENABLE([gallium-nouveau],
1247     [AS_HELP_STRING([--enable-gallium-nouveau],
1248         [build gallium nouveau @<:@default=disabled@:>@])],
1249     [enable_gallium_nouveau="$enableval"],
1250     [enable_gallium_nouveau=no])
1251 if test "x$enable_gallium_nouveau" = xyes; then
1252     GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS nouveau"
1253     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nv04 nv10 nv20 nv30 nv40 nv50"
1254 fi
1255
1256
1257 dnl Restore LDFLAGS and CPPFLAGS
1258 LDFLAGS="$_SAVE_LDFLAGS"
1259 CPPFLAGS="$_SAVE_CPPFLAGS"
1260
1261 dnl Substitute the config
1262 AC_CONFIG_FILES([configs/autoconf])
1263
1264 dnl Replace the configs/current symlink
1265 AC_CONFIG_COMMANDS([configs],[
1266 if test -f configs/current || test -L configs/current; then
1267     rm -f configs/current
1268 fi
1269 ln -s autoconf configs/current
1270 ])
1271
1272 AC_OUTPUT
1273
1274 dnl
1275 dnl Output some configuration info for the user
1276 dnl
1277 echo ""
1278 echo "        prefix:          $prefix"
1279 echo "        exec_prefix:     $exec_prefix"
1280 echo "        libdir:          $libdir"
1281 echo "        includedir:      $includedir"
1282
1283 dnl Driver info
1284 echo ""
1285 echo "        Driver:          $mesa_driver"
1286 if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
1287     echo "        OSMesa:          lib$OSMESA_LIB"
1288 else
1289     echo "        OSMesa:          no"
1290 fi
1291 if test "$mesa_driver" = dri; then
1292     # cleanup the drivers var
1293     dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/  */ /;s/ *$//'`
1294 if test "x$DRI_DIRS" = x; then
1295     echo "        DRI drivers:     no"
1296 else
1297     echo "        DRI drivers:     $dri_dirs"
1298 fi
1299     echo "        DRI driver dir:  $DRI_DRIVER_INSTALL_DIR"
1300 fi
1301 echo "        Use XCB:         $enable_xcb"
1302
1303 echo ""
1304 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
1305     echo "        Gallium:         yes"
1306     echo "        Gallium dirs:    $GALLIUM_DIRS"
1307     echo "        Winsys dirs:     $GALLIUM_WINSYS_DIRS"
1308     echo "        Winsys drm dirs:$GALLIUM_WINSYS_DRM_DIRS"
1309     echo "        Auxiliary dirs:  $GALLIUM_AUXILIARY_DIRS"
1310     echo "        Driver dirs:     $GALLIUM_DRIVERS_DIRS"
1311     echo "        Trackers dirs:   $GALLIUM_STATE_TRACKERS_DIRS"
1312 else
1313     echo "        Gallium:         no"
1314 fi
1315
1316 dnl Libraries
1317 echo ""
1318 echo "        Shared libs:     $enable_shared"
1319 echo "        Static libs:     $enable_static"
1320 echo "        EGL:             $enable_egl"
1321 echo "        GLU:             $enable_glu"
1322 echo "        GLw:             $enable_glw (Motif: $enable_motif)"
1323 echo "        glut:            $enable_glut"
1324
1325 dnl Programs
1326 # cleanup the programs var for display
1327 program_dirs=`echo $PROGRAM_DIRS | $SED 's/^ *//;s/  */ /;s/ *$//'`
1328 if test "x$program_dirs" = x; then
1329     echo "        Demos:           no"
1330 else
1331     echo "        Demos:           $program_dirs"
1332 fi
1333
1334 dnl Compiler options
1335 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
1336 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1337     $SED 's/^ *//;s/  */ /;s/ *$//'`
1338 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1339     $SED 's/^ *//;s/  */ /;s/ *$//'`
1340 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/  */ /;s/ *$//'`
1341 echo ""
1342 echo "        CFLAGS:          $cflags"
1343 echo "        CXXFLAGS:        $cxxflags"
1344 echo "        Macros:          $defines"
1345
1346 echo ""
1347 echo "        Run '${MAKE-make}' to build Mesa"
1348 echo ""