Merge branch '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 -fvisibility=hidden"
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="glsl 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_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_STATE_TRACKERS_DIRS])
450 AC_SUBST([RADEON_CFLAGS])
451 AC_SUBST([RADEON_LDFLAGS])
452
453 dnl
454 dnl User supplied program configuration
455 dnl
456 if test -d "$srcdir/progs/demos"; then
457     default_demos=yes
458 else
459     default_demos=no
460 fi
461 AC_ARG_WITH([demos],
462     [AS_HELP_STRING([--with-demos@<:@=DIRS...@:>@],
463         [optional comma delimited demo directories to build
464         @<:@default=auto if source available@:>@])],
465     [with_demos="$withval"],
466     [with_demos="$default_demos"])
467 if test "x$with_demos" = x; then
468     with_demos=no
469 fi
470
471 dnl If $with_demos is yes, directories will be added as libs available
472 PROGRAM_DIRS=""
473 case "$with_demos" in
474 no) ;;
475 yes)
476     # If the driver isn't osmesa, we have libGL and can build xdemos
477     if test "$mesa_driver" != osmesa; then
478         PROGRAM_DIRS="xdemos"
479     fi
480     ;;
481 *)
482     # verify the requested demos directories exist
483     demos=`IFS=,; echo $with_demos`
484     for demo in $demos; do
485         test -d "$srcdir/progs/$demo" || \
486             AC_MSG_ERROR([Program directory '$demo' doesn't exist])
487     done
488     PROGRAM_DIRS="$demos"
489     ;;
490 esac
491
492 dnl
493 dnl Find out if X is available. The variable have_x is set if libX11 is
494 dnl found to mimic AC_PATH_XTRA.
495 dnl
496 if test -n "$PKG_CONFIG"; then
497     AC_MSG_CHECKING([pkg-config files for X11 are available])
498     PKG_CHECK_EXISTS([x11],[
499         x11_pkgconfig=yes
500         have_x=yes
501         ],[
502         x11_pkgconfig=no
503     ])
504     AC_MSG_RESULT([$x11_pkgconfig])
505 else
506     x11_pkgconfig=no
507 fi
508 dnl Use the autoconf macro if no pkg-config files
509 if test "$x11_pkgconfig" = no; then
510     AC_PATH_XTRA
511 fi
512
513 dnl Try to tell the user that the --x-* options are only used when
514 dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
515 m4_divert_once([HELP_BEGIN],
516 [These options are only used when the X libraries cannot be found by the
517 pkg-config utility.])
518
519 dnl We need X for xlib and dri, so bomb now if it's not found
520 case "$mesa_driver" in
521 xlib|dri)
522     if test "$no_x" = yes; then
523         AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver])
524     fi
525     ;;
526 esac
527
528 dnl XCB - this is only used for GLX right now
529 AC_ARG_ENABLE([xcb],
530     [AS_HELP_STRING([--enable-xcb],
531         [use XCB for GLX @<:@default=disabled@:>@])],
532     [enable_xcb="$enableval"],
533     [enable_xcb=no])
534 if test "x$enable_xcb" = xyes; then
535     DEFINES="$DEFINES -DUSE_XCB"
536 else
537     enable_xcb=no
538 fi
539
540 dnl
541 dnl libGL configuration per driver
542 dnl
543 case "$mesa_driver" in
544 xlib)
545     if test "$x11_pkgconfig" = yes; then
546         PKG_CHECK_MODULES([XLIBGL], [x11 xext])
547         GL_PC_REQ_PRIV="x11 xext"
548         X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
549         GL_LIB_DEPS="$XLIBGL_LIBS"
550     else
551         # should check these...
552         X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
553         GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
554         GL_PC_LIB_PRIV="$GL_LIB_DEPS"
555         GL_PC_CFLAGS="$X11_INCLUDES"
556     fi
557     GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread"
558     GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
559
560     # if static, move the external libraries to the programs
561     # and empty the libraries for libGL
562     if test "$enable_static" = yes; then
563         APP_LIB_DEPS="$APP_LIB_DEPS $GL_LIB_DEPS"
564         GL_LIB_DEPS=""
565     fi
566     ;;
567 dri)
568     # DRI must be shared, I think
569     if test "$enable_static" = yes; then
570         AC_MSG_ERROR([Can't use static libraries for DRI drivers])
571     fi
572
573     # Check for libdrm
574     PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED])
575     PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
576     GL_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
577     DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
578
579     PKG_CHECK_MODULES([LIBDRM_RADEON], [libdrm_radeon libdrm >= $LIBDRM_RADEON_REQUIRED], HAVE_LIBDRM_RADEON=yes, HAVE_LIBDRM_RADEON=no)
580
581     if test "$HAVE_LIBDRM_RADEON" = yes; then
582         RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS"
583         RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS
584     fi
585
586     # find the DRI deps for libGL
587     if test "$x11_pkgconfig" = yes; then
588         # add xcb modules if necessary
589         dri_modules="x11 xext xxf86vm xdamage xfixes"
590         if test "$enable_xcb" = yes; then
591             dri_modules="$dri_modules x11-xcb xcb-glx"
592         fi
593
594         PKG_CHECK_MODULES([DRIGL], [$dri_modules])
595         GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
596         X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
597         GL_LIB_DEPS="$DRIGL_LIBS"
598     else
599         # should check these...
600         X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
601         GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
602         GL_PC_LIB_PRIV="$GL_LIB_DEPS"
603         GL_PC_CFLAGS="$X11_INCLUDES"
604
605         # XCB can only be used from pkg-config
606         if test "$enable_xcb" = yes; then
607             PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
608             GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
609             X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
610             GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
611         fi
612     fi
613
614     # need DRM libs, -lpthread, etc.
615     GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
616     GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
617     ;;
618 osmesa)
619     # No libGL for osmesa
620     GL_LIB_DEPS=""
621     ;;
622 esac
623 AC_SUBST([GL_LIB_DEPS])
624 AC_SUBST([GL_PC_REQ_PRIV])
625 AC_SUBST([GL_PC_LIB_PRIV])
626 AC_SUBST([GL_PC_CFLAGS])
627 AC_SUBST([DRI_PC_REQ_PRIV])
628
629 dnl
630 dnl More X11 setup
631 dnl
632 if test "$mesa_driver" = xlib; then
633     DEFINES="$DEFINES -DUSE_XSHM"
634 fi
635
636 dnl
637 dnl More DRI setup
638 dnl
639 AC_ARG_ENABLE([glx-tls],
640     [AS_HELP_STRING([--enable-glx-tls],
641         [enable TLS support in GLX @<:@default=disabled@:>@])],
642     [GLX_USE_TLS="$enableval"],
643     [GLX_USE_TLS=no])
644 dnl Directory for DRI drivers
645 AC_ARG_WITH([dri-driverdir],
646     [AS_HELP_STRING([--with-dri-driverdir=DIR],
647         [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
648     [DRI_DRIVER_INSTALL_DIR="$withval"],
649     [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
650 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
651 dnl Extra search path for DRI drivers
652 AC_ARG_WITH([dri-searchpath],
653     [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
654         [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
655     [DRI_DRIVER_SEARCH_DIR="$withval"],
656     [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
657 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
658 dnl Direct rendering or just indirect rendering
659 AC_ARG_ENABLE([driglx-direct],
660     [AS_HELP_STRING([--disable-driglx-direct],
661         [enable direct rendering in GLX for DRI @<:@default=enabled@:>@])],
662     [driglx_direct="$enableval"],
663     [driglx_direct="yes"])
664 dnl Which drivers to build - default is chosen by platform
665 AC_ARG_WITH([dri-drivers],
666     [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
667         [comma delimited DRI drivers list, e.g.
668         "swrast,i965,radeon" @<:@default=auto@:>@])],
669     [with_dri_drivers="$withval"],
670     [with_dri_drivers=yes])
671 if test "x$with_dri_drivers" = x; then
672     with_dri_drivers=no
673 fi
674
675 dnl If $with_dri_drivers is yes, directories will be added through
676 dnl platform checks
677 DRI_DIRS=""
678 case "$with_dri_drivers" in
679 no) ;;
680 yes)
681     DRI_DIRS="yes"
682     ;;
683 *)
684     # verify the requested driver directories exist
685     dri_drivers=`IFS=', '; echo $with_dri_drivers`
686     for driver in $dri_drivers; do
687         test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
688             AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
689     done
690     DRI_DIRS="$dri_drivers"
691     ;;
692 esac
693
694 dnl Just default to no EGL for now
695 USING_EGL=0
696 AC_SUBST([USING_EGL])
697
698 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
699 if test "$mesa_driver" = dri; then
700     # Use TLS in GLX?
701     if test "x$GLX_USE_TLS" = xyes; then
702         DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS"
703     fi
704
705     if test "x$USING_EGL" = x1; then
706         PROGRAM_DIRS="egl"
707     fi
708
709     # Platform specific settings and drivers to build
710     case "$host_os" in
711     linux*)
712         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
713         if test "x$driglx_direct" = xyes; then
714             DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
715         fi
716         DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
717
718         case "$host_cpu" in
719         x86_64)
720             # ffb, gamma, and sis are missing because they have not be
721             # converted to use the new interface.  i810 are missing
722             # because there is no x86-64 system where they could *ever*
723             # be used.
724             if test "x$DRI_DIRS" = "xyes"; then
725                 DRI_DIRS="i915 i965 mach64 mga r128 r200 r300 r600 radeon \
726                     savage tdfx unichrome swrast"
727             fi
728             ;;
729         powerpc*)
730             # Build only the drivers for cards that exist on PowerPC.
731             # At some point MGA will be added, but not yet.
732             if test "x$DRI_DIRS" = "xyes"; then
733                 DRI_DIRS="mach64 r128 r200 r300 r600 radeon tdfx swrast"
734             fi
735             ;;
736         sparc*)
737             # Build only the drivers for cards that exist on sparc`
738             if test "x$DRI_DIRS" = "xyes"; then
739                 DRI_DIRS="mach64 r128 r200 r300 r600 radeon ffb swrast"
740             fi
741             ;;
742         esac
743         ;;
744     freebsd* | dragonfly*)
745         DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
746         DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
747         DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
748         if test "x$driglx_direct" = xyes; then
749             DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
750         fi
751         if test "x$GXX" = xyes; then
752             CXXFLAGS="$CXXFLAGS -ansi -pedantic"
753         fi
754
755         # ffb and gamma are missing because they have not been converted
756         # to use the new interface.
757         if test "x$DRI_DIRS" = "xyes"; then
758             DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon tdfx \
759                 unichrome savage sis swrast"
760         fi
761         ;;
762     gnu*)
763         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
764         DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
765         ;;
766     solaris*)
767         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
768         DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
769         if test "x$driglx_direct" = xyes; then
770             DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
771         fi
772         ;;
773     esac
774
775     # default drivers
776     if test "x$DRI_DIRS" = "xyes"; then
777         DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon \
778             savage sis tdfx unichrome ffb swrast"
779     fi
780
781     DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/  */ /g'`
782
783     # Check for expat
784     EXPAT_INCLUDES=""
785     EXPAT_LIB=-lexpat
786     AC_ARG_WITH([expat],
787         [AS_HELP_STRING([--with-expat=DIR],
788             [expat install directory])],[
789         EXPAT_INCLUDES="-I$withval/include"
790         CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
791         LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
792         EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
793         ])
794     AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
795     AC_CHECK_LIB([expat],[XML_ParserCreate],[],
796         [AC_MSG_ERROR([Expat required for DRI.])])
797
798     # put all the necessary libs together
799     DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
800 fi
801 AC_SUBST([DRI_DIRS])
802 AC_SUBST([EXPAT_INCLUDES])
803 AC_SUBST([DRI_LIB_DEPS])
804
805 dnl
806 dnl OSMesa configuration
807 dnl
808 if test "$mesa_driver" = xlib; then
809     default_gl_osmesa=yes
810 else
811     default_gl_osmesa=no
812 fi
813 AC_ARG_ENABLE([gl-osmesa],
814     [AS_HELP_STRING([--enable-gl-osmesa],
815         [enable OSMesa on libGL @<:@default=enabled for xlib driver@:>@])],
816     [gl_osmesa="$enableval"],
817     [gl_osmesa="$default_gl_osmesa"])
818 if test "x$gl_osmesa" = xyes; then
819     if test "$mesa_driver" = osmesa; then
820         AC_MSG_ERROR([libGL is not available for OSMesa driver])
821     else
822         DRIVER_DIRS="$DRIVER_DIRS osmesa"
823     fi
824 fi
825
826 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
827 AC_ARG_WITH([osmesa-bits],
828     [AS_HELP_STRING([--with-osmesa-bits=BITS],
829         [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
830     [osmesa_bits="$withval"],
831     [osmesa_bits=8])
832 if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
833     AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
834     osmesa_bits=8
835 fi
836 case "x$osmesa_bits" in
837 x8)
838     OSMESA_LIB=OSMesa
839     ;;
840 x16|x32)
841     OSMESA_LIB="OSMesa$osmesa_bits"
842     DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
843     ;;
844 *)
845     AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
846     ;;
847 esac
848 AC_SUBST([OSMESA_LIB])
849
850 case "$mesa_driver" in
851 osmesa)
852     # only link libraries with osmesa if shared
853     if test "$enable_static" = no; then
854         OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
855     else
856         OSMESA_LIB_DEPS=""
857     fi
858     OSMESA_MESA_DEPS=""
859     OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
860     ;;
861 *)
862     # Link OSMesa to libGL otherwise
863     OSMESA_LIB_DEPS=""
864     # only link libraries with osmesa if shared
865     if test "$enable_static" = no; then
866         OSMESA_MESA_DEPS='-l$(GL_LIB)'
867     else
868         OSMESA_MESA_DEPS=""
869     fi
870     OSMESA_PC_REQ="gl"
871     ;;
872 esac
873 OSMESA_PC_LIB_PRIV="$OSMESA_PC_LIB_PRIV"
874 AC_SUBST([OSMESA_LIB_DEPS])
875 AC_SUBST([OSMESA_MESA_DEPS])
876 AC_SUBST([OSMESA_PC_REQ])
877 AC_SUBST([OSMESA_PC_LIB_PRIV])
878
879 dnl
880 dnl EGL configuration
881 dnl
882 AC_ARG_ENABLE([egl],
883     [AS_HELP_STRING([--disable-egl],
884         [disable EGL library @<:@default=enabled@:>@])],
885     [enable_egl="$enableval"],
886     [enable_egl=yes])
887 if test "x$enable_egl" = xyes; then
888     SRC_DIRS="$SRC_DIRS egl"
889
890     if test "$x11_pkgconfig" = yes; then
891         PKG_CHECK_MODULES([EGL], [x11])
892         EGL_LIB_DEPS="$EGL_LIBS"
893     else
894         # should check these...
895         EGL_LIB_DEPS="$X_LIBS -lX11"
896     fi
897     EGL_LIB_DEPS="$EGL_LIB_DEPS $DLOPEN_LIBS"
898 fi
899 AC_SUBST([EGL_LIB_DEPS])
900
901 dnl
902 dnl GLU configuration
903 dnl
904 AC_ARG_ENABLE([glu],
905     [AS_HELP_STRING([--disable-glu],
906         [enable OpenGL Utility library @<:@default=enabled@:>@])],
907     [enable_glu="$enableval"],
908     [enable_glu=yes])
909 if test "x$enable_glu" = xyes; then
910     SRC_DIRS="$SRC_DIRS glu"
911
912     case "$mesa_driver" in
913     osmesa)
914         # If GLU is available and we have libOSMesa (not 16 or 32),
915         # we can build the osdemos
916         if test "$with_demos" = yes && test "$osmesa_bits" = 8; then
917             PROGRAM_DIRS="$PROGRAM_DIRS osdemos"
918         fi
919
920         # Link libGLU to libOSMesa instead of libGL
921         GLU_LIB_DEPS=""
922         GLU_PC_REQ="osmesa"
923         if test "$enable_static" = no; then
924             GLU_MESA_DEPS='-l$(OSMESA_LIB)'
925         else
926             GLU_MESA_DEPS=""
927         fi
928         ;;
929     *)
930         # If static, empty GLU_LIB_DEPS and add libs for programs to link
931         GLU_PC_REQ="gl"
932         GLU_PC_LIB_PRIV="-lm"
933         if test "$enable_static" = no; then
934             GLU_LIB_DEPS="-lm"
935             GLU_MESA_DEPS='-l$(GL_LIB)'
936         else
937             GLU_LIB_DEPS=""
938             GLU_MESA_DEPS=""
939             APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
940         fi
941         ;;
942     esac
943 fi
944 if test "$enable_static" = no; then
945     GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
946 fi
947 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
948 AC_SUBST([GLU_LIB_DEPS])
949 AC_SUBST([GLU_MESA_DEPS])
950 AC_SUBST([GLU_PC_REQ])
951 AC_SUBST([GLU_PC_REQ_PRIV])
952 AC_SUBST([GLU_PC_LIB_PRIV])
953 AC_SUBST([GLU_PC_CFLAGS])
954
955 dnl
956 dnl GLw configuration
957 dnl
958 AC_ARG_ENABLE([glw],
959     [AS_HELP_STRING([--disable-glw],
960         [enable Xt/Motif widget library @<:@default=enabled@:>@])],
961     [enable_glw="$enableval"],
962     [enable_glw=yes])
963 dnl Don't build GLw on osmesa
964 if test "x$enable_glw" = xyes && test "$mesa_driver" = osmesa; then
965     AC_MSG_WARN([Disabling GLw since the driver is OSMesa])
966     enable_glw=no
967 fi
968 AC_ARG_ENABLE([motif],
969     [AS_HELP_STRING([--enable-motif],
970         [use Motif widgets in GLw @<:@default=disabled@:>@])],
971     [enable_motif="$enableval"],
972     [enable_motif=no])
973
974 if test "x$enable_glw" = xyes; then
975     SRC_DIRS="$SRC_DIRS glw"
976     if test "$x11_pkgconfig" = yes; then
977         PKG_CHECK_MODULES([GLW],[x11 xt])
978         GLW_PC_REQ_PRIV="x11 xt"
979         GLW_LIB_DEPS="$GLW_LIBS"
980     else
981         # should check these...
982         GLW_LIB_DEPS="$X_LIBS -lXt -lX11"
983         GLW_PC_LIB_PRIV="$GLW_LIB_DEPS"
984         GLW_PC_CFLAGS="$X11_INCLUDES"
985     fi
986
987     GLW_SOURCES="GLwDrawA.c"
988     MOTIF_CFLAGS=
989     if test "x$enable_motif" = xyes; then
990         GLW_SOURCES="$GLW_SOURCES GLwMDrawA.c"
991         AC_PATH_PROG([MOTIF_CONFIG], [motif-config], [no])
992         if test "x$MOTIF_CONFIG" != xno; then
993             MOTIF_CFLAGS=`$MOTIF_CONFIG --cflags`
994             MOTIF_LIBS=`$MOTIF_CONFIG --libs`
995         else
996             AC_CHECK_HEADER([Xm/PrimitiveP.h], [],
997                 [AC_MSG_ERROR([Can't locate Motif headers])])
998             AC_CHECK_LIB([Xm], [XmGetPixmap], [MOTIF_LIBS="-lXm"],
999                 [AC_MSG_ERROR([Can't locate Motif Xm library])])
1000         fi
1001         # MOTIF_LIBS is prepended to GLW_LIB_DEPS since Xm needs Xt/X11
1002         GLW_LIB_DEPS="$MOTIF_LIBS $GLW_LIB_DEPS"
1003         GLW_PC_LIB_PRIV="$MOTIF_LIBS $GLW_PC_LIB_PRIV"
1004         GLW_PC_CFLAGS="$MOTIF_CFLAGS $GLW_PC_CFLAGS"
1005     fi
1006
1007     # If static, empty GLW_LIB_DEPS and add libs for programs to link
1008     GLW_PC_LIB_PRIV="$GLW_PC_LIB_PRIV"
1009     if test "$enable_static" = no; then
1010         GLW_MESA_DEPS='-l$(GL_LIB)'
1011         GLW_LIB_DEPS="$GLW_LIB_DEPS"
1012     else
1013         APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
1014         GLW_LIB_DEPS=""
1015         GLW_MESA_DEPS=""
1016     fi
1017 fi
1018 AC_SUBST([GLW_LIB_DEPS])
1019 AC_SUBST([GLW_MESA_DEPS])
1020 AC_SUBST([GLW_SOURCES])
1021 AC_SUBST([MOTIF_CFLAGS])
1022 AC_SUBST([GLW_PC_REQ_PRIV])
1023 AC_SUBST([GLW_PC_LIB_PRIV])
1024 AC_SUBST([GLW_PC_CFLAGS])
1025
1026 dnl
1027 dnl GLUT configuration
1028 dnl
1029 if test -f "$srcdir/include/GL/glut.h"; then
1030     default_glut=yes
1031 else
1032     default_glut=no
1033 fi
1034 AC_ARG_ENABLE([glut],
1035     [AS_HELP_STRING([--disable-glut],
1036         [enable GLUT library @<:@default=enabled if source available@:>@])],
1037     [enable_glut="$enableval"],
1038     [enable_glut="$default_glut"])
1039
1040 dnl Can't build glut if GLU not available
1041 if test "x$enable_glu$enable_glut" = xnoyes; then
1042     AC_MSG_WARN([Disabling glut since GLU is disabled])
1043     enable_glut=no
1044 fi
1045 dnl Don't build glut on osmesa
1046 if test "x$enable_glut" = xyes && test "$mesa_driver" = osmesa; then
1047     AC_MSG_WARN([Disabling glut since the driver is OSMesa])
1048     enable_glut=no
1049 fi
1050
1051 if test "x$enable_glut" = xyes; then
1052     SRC_DIRS="$SRC_DIRS glut/glx"
1053     GLUT_CFLAGS=""
1054     if test "x$GCC" = xyes; then
1055         GLUT_CFLAGS="-fexceptions"
1056     fi
1057     if test "$x11_pkgconfig" = yes; then
1058         PKG_CHECK_MODULES([GLUT],[x11 xmu xi])
1059         GLUT_PC_REQ_PRIV="x11 xmu xi"
1060         GLUT_LIB_DEPS="$GLUT_LIBS"
1061     else
1062         # should check these...
1063         GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
1064         GLUT_PC_LIB_PRIV="$GLUT_LIB_DEPS"
1065         GLUT_PC_CFLAGS="$X11_INCLUDES"
1066     fi
1067     GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
1068     GLUT_PC_LIB_PRIV="$GLUT_PC_LIB_PRIV -lm"
1069
1070     # If glut is available, we can build most programs
1071     if test "$with_demos" = yes; then
1072         PROGRAM_DIRS="$PROGRAM_DIRS demos redbook samples glsl"
1073     fi
1074
1075     # If static, empty GLUT_LIB_DEPS and add libs for programs to link
1076     if test "$enable_static" = no; then
1077         GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
1078     else
1079         APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
1080         GLUT_LIB_DEPS=""
1081         GLUT_MESA_DEPS=""
1082     fi
1083 fi
1084 AC_SUBST([GLUT_LIB_DEPS])
1085 AC_SUBST([GLUT_MESA_DEPS])
1086 AC_SUBST([GLUT_CFLAGS])
1087 AC_SUBST([GLUT_PC_REQ_PRIV])
1088 AC_SUBST([GLUT_PC_LIB_PRIV])
1089 AC_SUBST([GLUT_PC_CFLAGS])
1090
1091 dnl
1092 dnl Program library dependencies
1093 dnl    Only libm is added here if necessary as the libraries should
1094 dnl    be pulled in by the linker
1095 dnl
1096 if test "x$APP_LIB_DEPS" = x; then
1097     case "$host_os" in
1098     solaris*)
1099         APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm"
1100         ;;
1101     cygwin*)
1102         APP_LIB_DEPS="-lX11"
1103         ;;
1104     *)
1105         APP_LIB_DEPS="-lm"
1106         ;;
1107     esac
1108 fi
1109 AC_SUBST([APP_LIB_DEPS])
1110 AC_SUBST([PROGRAM_DIRS])
1111
1112 dnl
1113 dnl Gallium configuration
1114 dnl
1115 AC_ARG_ENABLE([gallium],
1116     [AS_HELP_STRING([--disable-gallium],
1117         [build gallium @<:@default=enabled@:>@])],
1118     [enable_gallium="$enableval"],
1119     [enable_gallium=yes])
1120 if test "x$enable_gallium" = xyes; then
1121     SRC_DIRS="$SRC_DIRS gallium gallium/winsys"
1122 fi
1123
1124 dnl
1125 dnl Gallium state trackers configuration
1126 dnl
1127 AC_ARG_WITH([state-trackers],
1128     [AS_HELP_STRING([--with-state-trackers@<:@=DIRS...@:>@],
1129         [comma delimited state_trackers list, e.g.
1130         "egl,glx" @<:@default=auto@:>@])],
1131     [with_state_trackers="$withval"],
1132     [with_state_trackers=yes])
1133
1134 case "$with_state_trackers" in
1135 no)
1136     GALLIUM_STATE_TRACKERS_DIRS=""
1137     ;;
1138 yes)
1139     # look at what else is built
1140     case "$mesa_driver" in
1141     xlib)
1142         GALLIUM_STATE_TRACKERS_DIRS=glx
1143         ;;
1144     dri)
1145         GALLIUM_STATE_TRACKERS_DIRS="dri"
1146         if test "x$enable_egl" = xyes; then
1147             GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS egl"
1148         fi
1149         # Have only tested st/xorg on 1.6.0 servers
1150         PKG_CHECK_MODULES(XORG, [xorg-server >= 1.6.0],
1151             HAVE_XORG="yes"; GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg",
1152             HAVE_XORG="no")
1153         ;;
1154     esac
1155     ;;
1156 *)
1157     # verify the requested state tracker exist
1158     state_trackers=`IFS=', '; echo $with_state_trackers`
1159     for tracker in $state_trackers; do
1160         test -d "$srcdir/src/gallium/state_trackers/$tracker" || \
1161             AC_MSG_ERROR([state tracker '$tracker' doesn't exist])
1162
1163         if test "$tracker" = egl && test "x$enable_egl" != xyes; then
1164             AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1165         fi
1166         if test "$tracker" = xorg; then
1167             PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1168                   HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1169                   HAVE_XEXTPROTO_71="no")
1170         fi
1171     done
1172     GALLIUM_STATE_TRACKERS_DIRS="$state_trackers"
1173     ;;
1174 esac
1175
1176 AC_ARG_WITH([xorg-driver-dir],
1177     [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1178                     [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1179     [XORG_DRIVER_INSTALL_DIR="$withval"],
1180     [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1181 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1182
1183 AC_ARG_WITH([max-width],
1184     [AS_HELP_STRING([--with-max-width=N],
1185                     [Maximum framebuffer width (4096)])],
1186     [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1187      AS_IF([test "${withval}" -gt "4096"],
1188            [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1189 )
1190 AC_ARG_WITH([max-height],
1191     [AS_HELP_STRING([--with-max-height=N],
1192                     [Maximum framebuffer height (4096)])],
1193     [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1194      AS_IF([test "${withval}" -gt "4096"],
1195            [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1196 )
1197
1198 dnl
1199 dnl Gallium SVGA configuration
1200 dnl
1201 AC_ARG_ENABLE([gallium-svga],
1202     [AS_HELP_STRING([--enable-gallium-svga],
1203         [build gallium SVGA @<:@default=disabled@:>@])],
1204     [enable_gallium_svga="$enableval"],
1205     [enable_gallium_svga=auto])
1206 if test "x$enable_gallium_svga" = xyes; then
1207     GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS vmware"
1208     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1209 elif test "x$enable_gallium_svga" = xauto; then
1210     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1211 fi
1212
1213 dnl
1214 dnl Gallium Intel configuration
1215 dnl
1216 AC_ARG_ENABLE([gallium-intel],
1217     [AS_HELP_STRING([--enable-gallium-intel],
1218         [build gallium intel @<:@default=disabled@:>@])],
1219     [enable_gallium_intel="$enableval"],
1220     [enable_gallium_intel=auto])
1221 if test "x$enable_gallium_intel" = xyes; then
1222     GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS intel i965"
1223     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 i965"
1224 elif test "x$enable_gallium_intel" = xauto; then
1225     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 i965"
1226 fi
1227
1228 dnl
1229 dnl Gallium Radeon configuration
1230 dnl
1231 AC_ARG_ENABLE([gallium-radeon],
1232     [AS_HELP_STRING([--enable-gallium-radeon],
1233         [build gallium radeon @<:@default=disabled@:>@])],
1234     [enable_gallium_radeon="$enableval"],
1235     [enable_gallium_radeon=no])
1236 if test "x$enable_gallium_radeon" = xyes; then
1237     GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS radeon"
1238     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1239 fi
1240
1241 dnl
1242 dnl Gallium Nouveau configuration
1243 dnl
1244 AC_ARG_ENABLE([gallium-nouveau],
1245     [AS_HELP_STRING([--enable-gallium-nouveau],
1246         [build gallium nouveau @<:@default=disabled@:>@])],
1247     [enable_gallium_nouveau="$enableval"],
1248     [enable_gallium_nouveau=no])
1249 if test "x$enable_gallium_nouveau" = xyes; then
1250     GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS nouveau"
1251     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nv04 nv10 nv20 nv30 nv40 nv50"
1252 fi
1253
1254
1255 dnl Restore LDFLAGS and CPPFLAGS
1256 LDFLAGS="$_SAVE_LDFLAGS"
1257 CPPFLAGS="$_SAVE_CPPFLAGS"
1258
1259 dnl Substitute the config
1260 AC_CONFIG_FILES([configs/autoconf])
1261
1262 dnl Replace the configs/current symlink
1263 AC_CONFIG_COMMANDS([configs],[
1264 if test -f configs/current || test -L configs/current; then
1265     rm -f configs/current
1266 fi
1267 ln -s autoconf configs/current
1268 ])
1269
1270 AC_OUTPUT
1271
1272 dnl
1273 dnl Output some configuration info for the user
1274 dnl
1275 echo ""
1276 echo "        prefix:          $prefix"
1277 echo "        exec_prefix:     $exec_prefix"
1278 echo "        libdir:          $libdir"
1279 echo "        includedir:      $includedir"
1280
1281 dnl Driver info
1282 echo ""
1283 echo "        Driver:          $mesa_driver"
1284 if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
1285     echo "        OSMesa:          lib$OSMESA_LIB"
1286 else
1287     echo "        OSMesa:          no"
1288 fi
1289 if test "$mesa_driver" = dri; then
1290     # cleanup the drivers var
1291     dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/  */ /;s/ *$//'`
1292 if test "x$DRI_DIRS" = x; then
1293     echo "        DRI drivers:     no"
1294 else
1295     echo "        DRI drivers:     $dri_dirs"
1296 fi
1297     echo "        DRI driver dir:  $DRI_DRIVER_INSTALL_DIR"
1298 fi
1299 echo "        Use XCB:         $enable_xcb"
1300
1301 echo ""
1302 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
1303     echo "        Gallium:         yes"
1304     echo "        Gallium dirs:    $GALLIUM_DIRS"
1305     echo "        Winsys dirs:     $GALLIUM_WINSYS_DIRS"
1306     echo "        Winsys drm dirs:$GALLIUM_WINSYS_DRM_DIRS"
1307     echo "        Driver dirs:     $GALLIUM_DRIVERS_DIRS"
1308     echo "        Trackers dirs:   $GALLIUM_STATE_TRACKERS_DIRS"
1309 else
1310     echo "        Gallium:         no"
1311 fi
1312
1313 dnl Libraries
1314 echo ""
1315 echo "        Shared libs:     $enable_shared"
1316 echo "        Static libs:     $enable_static"
1317 echo "        EGL:             $enable_egl"
1318 echo "        GLU:             $enable_glu"
1319 echo "        GLw:             $enable_glw (Motif: $enable_motif)"
1320 echo "        glut:            $enable_glut"
1321
1322 dnl Programs
1323 # cleanup the programs var for display
1324 program_dirs=`echo $PROGRAM_DIRS | $SED 's/^ *//;s/  */ /;s/ *$//'`
1325 if test "x$program_dirs" = x; then
1326     echo "        Demos:           no"
1327 else
1328     echo "        Demos:           $program_dirs"
1329 fi
1330
1331 dnl Compiler options
1332 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
1333 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1334     $SED 's/^ *//;s/  */ /;s/ *$//'`
1335 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1336     $SED 's/^ *//;s/  */ /;s/ *$//'`
1337 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/  */ /;s/ *$//'`
1338 echo ""
1339 echo "        CFLAGS:          $cflags"
1340 echo "        CXXFLAGS:        $cxxflags"
1341 echo "        Macros:          $defines"
1342
1343 echo ""
1344 echo "        Run '${MAKE-make}' to build Mesa"
1345 echo ""