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