egl: Clean up the Makefile rules.
[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 EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
247
248 GL_LIB_GLOB='lib$(GL_LIB).*'${LIB_EXTENSION}'*'
249 GLU_LIB_GLOB='lib$(GLU_LIB).*'${LIB_EXTENSION}'*'
250 GLUT_LIB_GLOB='lib$(GLUT_LIB).*'${LIB_EXTENSION}'*'
251 GLW_LIB_GLOB='lib$(GLW_LIB).*'${LIB_EXTENSION}'*'
252 OSMESA_LIB_GLOB='lib$(OSMESA_LIB).*'${LIB_EXTENSION}'*'
253 EGL_LIB_GLOB='lib$(EGL_LIB).*'${LIB_EXTENSION}'*'
254
255 AC_SUBST([GL_LIB_NAME])
256 AC_SUBST([GLU_LIB_NAME])
257 AC_SUBST([GLUT_LIB_NAME])
258 AC_SUBST([GLW_LIB_NAME])
259 AC_SUBST([OSMESA_LIB_NAME])
260 AC_SUBST([EGL_LIB_NAME])
261
262 AC_SUBST([GL_LIB_GLOB])
263 AC_SUBST([GLU_LIB_GLOB])
264 AC_SUBST([GLUT_LIB_GLOB])
265 AC_SUBST([GLW_LIB_GLOB])
266 AC_SUBST([OSMESA_LIB_GLOB])
267 AC_SUBST([EGL_LIB_GLOB])
268
269 dnl
270 dnl Arch/platform-specific settings
271 dnl
272 AC_ARG_ENABLE([asm],
273     [AS_HELP_STRING([--disable-asm],
274         [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
275     [enable_asm="$enableval"],
276     [enable_asm=yes]
277 )
278 asm_arch=""
279 ASM_FLAGS=""
280 MESA_ASM_SOURCES=""
281 GLAPI_ASM_SOURCES=""
282 AC_MSG_CHECKING([whether to enable assembly])
283 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
284 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
285 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
286     case "$host_cpu" in
287     i?86 | x86_64)
288         enable_asm=no
289         AC_MSG_RESULT([no, cross compiling])
290         ;;
291     esac
292 fi
293 # check for supported arches
294 if test "x$enable_asm" = xyes; then
295     case "$host_cpu" in
296     i?86)
297         case "$host_os" in
298         linux* | *freebsd* | dragonfly*)
299             test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
300             ;;
301         esac
302         ;;
303     x86_64)
304         case "$host_os" in
305         linux* | *freebsd* | dragonfly*)
306             test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
307             ;;
308         esac
309         ;;
310     powerpc)
311         case "$host_os" in
312         linux*)
313             asm_arch=ppc
314             ;;
315         esac
316         ;;
317     sparc*)
318         case "$host_os" in
319         linux*)
320             asm_arch=sparc
321             ;;
322         esac
323         ;;
324     esac
325
326     case "$asm_arch" in
327     x86)
328         ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
329         MESA_ASM_SOURCES='$(X86_SOURCES)'
330         GLAPI_ASM_SOURCES='$(X86_API)'
331         AC_MSG_RESULT([yes, x86])
332         ;;
333     x86_64)
334         ASM_FLAGS="-DUSE_X86_64_ASM"
335         MESA_ASM_SOURCES='$(X86-64_SOURCES)'
336         GLAPI_ASM_SOURCES='$(X86-64_API)'
337         AC_MSG_RESULT([yes, x86_64])
338         ;;
339     ppc)
340         ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM"
341         MESA_ASM_SOURCES='$(PPC_SOURCES)'
342         AC_MSG_RESULT([yes, ppc])
343         ;;
344     sparc)
345         ASM_FLAGS="-DUSE_SPARC_ASM"
346         MESA_ASM_SOURCES='$(SPARC_SOURCES)'
347         GLAPI_ASM_SOURCES='$(SPARC_API)'
348         AC_MSG_RESULT([yes, sparc])
349         ;;
350     *)
351         AC_MSG_RESULT([no, platform not supported])
352         ;;
353     esac
354 fi
355 AC_SUBST([ASM_FLAGS])
356 AC_SUBST([MESA_ASM_SOURCES])
357 AC_SUBST([GLAPI_ASM_SOURCES])
358
359 dnl PIC code macro
360 MESA_PIC_FLAGS
361
362 dnl Check to see if dlopen is in default libraries (like Solaris, which
363 dnl has it in libc), or if libdl is needed to get it.
364 AC_CHECK_FUNC([dlopen], [],
365     [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
366
367 dnl See if posix_memalign is available
368 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
369
370 dnl SELinux awareness.
371 AC_ARG_ENABLE([selinux],
372     [AS_HELP_STRING([--enable-selinux],
373         [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
374     [MESA_SELINUX="$enableval"],
375     [MESA_SELINUX=no])
376 if test "x$enable_selinux" = "xyes"; then
377     AC_CHECK_HEADER([selinux/selinux.h],[],
378                     [AC_MSG_ERROR([SELinux headers not found])])
379     AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
380                  [AC_MSG_ERROR([SELinux library not found])])
381     SELINUX_LIBS="-lselinux"
382     DEFINES="$DEFINES -DMESA_SELINUX"
383 fi
384
385 dnl
386 dnl Driver configuration. Options are xlib, dri and osmesa right now.
387 dnl More later: directfb, fbdev, ...
388 dnl
389 default_driver="xlib"
390
391 case "$host_os" in
392 linux*)
393     case "$host_cpu" in
394     i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
395     esac
396     ;;
397 *freebsd* | dragonfly*)
398     case "$host_cpu" in
399     i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
400     esac
401     ;;
402 esac
403
404 AC_ARG_WITH([driver],
405     [AS_HELP_STRING([--with-driver=DRIVER],
406         [driver for Mesa: xlib,dri,osmesa @<:@default=dri when available, or xlib@:>@])],
407     [mesa_driver="$withval"],
408     [mesa_driver="$default_driver"])
409 dnl Check for valid option
410 case "x$mesa_driver" in
411 xxlib|xdri|xosmesa)
412     ;;
413 *)
414     AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
415     ;;
416 esac
417
418 dnl
419 dnl Driver specific build directories
420 dnl
421 SRC_DIRS="glsl mesa glew"
422 GLU_DIRS="sgi"
423 WINDOW_SYSTEM=""
424 GALLIUM_DIRS="auxiliary drivers state_trackers"
425 GALLIUM_WINSYS_DIRS=""
426 GALLIUM_WINSYS_DRM_DIRS=""
427 GALLIUM_DRIVERS_DIRS="softpipe failover trace identity"
428 GALLIUM_STATE_TRACKERS_DIRS=""
429
430 case "$mesa_driver" in
431 xlib)
432     DRIVER_DIRS="x11"
433     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS xlib"
434     ;;
435 dri)
436     SRC_DIRS="glx/x11 $SRC_DIRS"
437     DRIVER_DIRS="dri"
438     WINDOW_SYSTEM="dri"
439     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS drm"
440     ;;
441 osmesa)
442     DRIVER_DIRS="osmesa"
443     ;;
444 esac
445 AC_SUBST([SRC_DIRS])
446 AC_SUBST([GLU_DIRS])
447 AC_SUBST([DRIVER_DIRS])
448 AC_SUBST([WINDOW_SYSTEM])
449 AC_SUBST([GALLIUM_DIRS])
450 AC_SUBST([GALLIUM_WINSYS_DIRS])
451 AC_SUBST([GALLIUM_WINSYS_DRM_DIRS])
452 AC_SUBST([GALLIUM_DRIVERS_DIRS])
453 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
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     # find the DRI deps for libGL
582     if test "$x11_pkgconfig" = yes; then
583         # add xcb modules if necessary
584         dri_modules="x11 xext xxf86vm xdamage xfixes"
585         if test "$enable_xcb" = yes; then
586             dri_modules="$dri_modules x11-xcb xcb-glx"
587         fi
588
589         PKG_CHECK_MODULES([DRIGL], [$dri_modules])
590         GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
591         X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
592         GL_LIB_DEPS="$DRIGL_LIBS"
593     else
594         # should check these...
595         X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
596         GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
597         GL_PC_LIB_PRIV="$GL_LIB_DEPS"
598         GL_PC_CFLAGS="$X11_INCLUDES"
599
600         # XCB can only be used from pkg-config
601         if test "$enable_xcb" = yes; then
602             PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
603             GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
604             X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
605             GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
606         fi
607     fi
608
609     # need DRM libs, -lpthread, etc.
610     GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
611     GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
612     ;;
613 osmesa)
614     # No libGL for osmesa
615     GL_LIB_DEPS=""
616     ;;
617 esac
618 AC_SUBST([GL_LIB_DEPS])
619 AC_SUBST([GL_PC_REQ_PRIV])
620 AC_SUBST([GL_PC_LIB_PRIV])
621 AC_SUBST([GL_PC_CFLAGS])
622 AC_SUBST([DRI_PC_REQ_PRIV])
623
624 dnl
625 dnl More X11 setup
626 dnl
627 if test "$mesa_driver" = xlib; then
628     DEFINES="$DEFINES -DUSE_XSHM"
629 fi
630
631 dnl
632 dnl More DRI setup
633 dnl
634 AC_ARG_ENABLE([glx-tls],
635     [AS_HELP_STRING([--enable-glx-tls],
636         [enable TLS support in GLX @<:@default=disabled@:>@])],
637     [GLX_USE_TLS="$enableval"],
638     [GLX_USE_TLS=no])
639 dnl Directory for DRI drivers
640 AC_ARG_WITH([dri-driverdir],
641     [AS_HELP_STRING([--with-dri-driverdir=DIR],
642         [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
643     [DRI_DRIVER_INSTALL_DIR="$withval"],
644     [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
645 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
646 dnl Extra search path for DRI drivers
647 AC_ARG_WITH([dri-searchpath],
648     [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
649         [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
650     [DRI_DRIVER_SEARCH_DIR="$withval"],
651     [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
652 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
653 dnl Direct rendering or just indirect rendering
654 AC_ARG_ENABLE([driglx-direct],
655     [AS_HELP_STRING([--disable-driglx-direct],
656         [enable direct rendering in GLX for DRI @<:@default=enabled@:>@])],
657     [driglx_direct="$enableval"],
658     [driglx_direct="yes"])
659 dnl Which drivers to build - default is chosen by platform
660 AC_ARG_WITH([dri-drivers],
661     [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
662         [comma delimited DRI drivers list, e.g.
663         "swrast,i965,radeon" @<:@default=auto@:>@])],
664     [with_dri_drivers="$withval"],
665     [with_dri_drivers=yes])
666 if test "x$with_dri_drivers" = x; then
667     with_dri_drivers=no
668 fi
669
670 dnl If $with_dri_drivers is yes, directories will be added through
671 dnl platform checks
672 DRI_DIRS=""
673 case "$with_dri_drivers" in
674 no) ;;
675 yes)
676     DRI_DIRS="yes"
677     ;;
678 *)
679     # verify the requested driver directories exist
680     dri_drivers=`IFS=', '; echo $with_dri_drivers`
681     for driver in $dri_drivers; do
682         test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
683             AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
684     done
685     DRI_DIRS="$dri_drivers"
686     ;;
687 esac
688
689 dnl Just default to no EGL for now
690 USING_EGL=0
691 AC_SUBST([USING_EGL])
692
693 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
694 if test "$mesa_driver" = dri; then
695     # Use TLS in GLX?
696     if test "x$GLX_USE_TLS" = xyes; then
697         DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS"
698     fi
699
700     if test "x$USING_EGL" = x1; then
701         PROGRAM_DIRS="egl"
702     fi
703
704     # Platform specific settings and drivers to build
705     case "$host_os" in
706     linux*)
707         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
708         if test "x$driglx_direct" = xyes; then
709             DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
710         fi
711         DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
712
713         case "$host_cpu" in
714         x86_64)
715             # ffb, gamma, and sis are missing because they have not be
716             # converted to use the new interface.  i810 are missing
717             # because there is no x86-64 system where they could *ever*
718             # be used.
719             if test "x$DRI_DIRS" = "xyes"; then
720                 DRI_DIRS="i915 i965 mach64 mga r128 r200 r300 r600 radeon \
721                     savage tdfx unichrome swrast"
722             fi
723             ;;
724         powerpc*)
725             # Build only the drivers for cards that exist on PowerPC.
726             # At some point MGA will be added, but not yet.
727             if test "x$DRI_DIRS" = "xyes"; then
728                 DRI_DIRS="mach64 r128 r200 r300 r600 radeon tdfx swrast"
729             fi
730             ;;
731         sparc*)
732             # Build only the drivers for cards that exist on sparc`
733             if test "x$DRI_DIRS" = "xyes"; then
734                 DRI_DIRS="mach64 r128 r200 r300 r600 radeon ffb swrast"
735             fi
736             ;;
737         esac
738         ;;
739     freebsd* | dragonfly*)
740         DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
741         DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
742         DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
743         if test "x$driglx_direct" = xyes; then
744             DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
745         fi
746         if test "x$GXX" = xyes; then
747             CXXFLAGS="$CXXFLAGS -ansi -pedantic"
748         fi
749
750         # ffb and gamma are missing because they have not been converted
751         # to use the new interface.
752         if test "x$DRI_DIRS" = "xyes"; then
753             DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon tdfx \
754                 unichrome savage sis swrast"
755         fi
756         ;;
757     gnu*)
758         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
759         DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
760         ;;
761     solaris*)
762         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
763         DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
764         if test "x$driglx_direct" = xyes; then
765             DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
766         fi
767         ;;
768     esac
769
770     # default drivers
771     if test "x$DRI_DIRS" = "xyes"; then
772         DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon \
773             savage sis tdfx unichrome ffb swrast"
774     fi
775
776     DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/  */ /g'`
777
778     # Check for expat
779     EXPAT_INCLUDES=""
780     EXPAT_LIB=-lexpat
781     AC_ARG_WITH([expat],
782         [AS_HELP_STRING([--with-expat=DIR],
783             [expat install directory])],[
784         EXPAT_INCLUDES="-I$withval/include"
785         CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
786         LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
787         EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
788         ])
789     AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
790     AC_CHECK_LIB([expat],[XML_ParserCreate],[],
791         [AC_MSG_ERROR([Expat required for DRI.])])
792
793     # put all the necessary libs together
794     DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
795 fi
796 AC_SUBST([DRI_DIRS])
797 AC_SUBST([EXPAT_INCLUDES])
798 AC_SUBST([DRI_LIB_DEPS])
799
800 case $DRI_DIRS in
801 *i915*|*i965*)
802     PKG_CHECK_MODULES([INTEL], [libdrm_intel])
803     ;;
804 esac
805
806 case $DRI_DIRS in
807 *radeon*|*r200*|*r300*|*r600*)
808     PKG_CHECK_MODULES([LIBDRM_RADEON],
809                       [libdrm_radeon libdrm >= $LIBDRM_RADEON_REQUIRED],
810                       HAVE_LIBDRM_RADEON=yes,
811                       HAVE_LIBDRM_RADEON=no)
812
813     if test "$HAVE_LIBDRM_RADEON" = yes; then
814         RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS"
815         RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS
816     fi
817     ;;
818 esac
819 AC_SUBST([RADEON_CFLAGS])
820 AC_SUBST([RADEON_LDFLAGS])
821
822
823 dnl
824 dnl OSMesa configuration
825 dnl
826 if test "$mesa_driver" = xlib; then
827     default_gl_osmesa=yes
828 else
829     default_gl_osmesa=no
830 fi
831 AC_ARG_ENABLE([gl-osmesa],
832     [AS_HELP_STRING([--enable-gl-osmesa],
833         [enable OSMesa on libGL @<:@default=enabled for xlib driver@:>@])],
834     [gl_osmesa="$enableval"],
835     [gl_osmesa="$default_gl_osmesa"])
836 if test "x$gl_osmesa" = xyes; then
837     if test "$mesa_driver" = osmesa; then
838         AC_MSG_ERROR([libGL is not available for OSMesa driver])
839     else
840         DRIVER_DIRS="$DRIVER_DIRS osmesa"
841     fi
842 fi
843
844 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
845 AC_ARG_WITH([osmesa-bits],
846     [AS_HELP_STRING([--with-osmesa-bits=BITS],
847         [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
848     [osmesa_bits="$withval"],
849     [osmesa_bits=8])
850 if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
851     AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
852     osmesa_bits=8
853 fi
854 case "x$osmesa_bits" in
855 x8)
856     OSMESA_LIB=OSMesa
857     ;;
858 x16|x32)
859     OSMESA_LIB="OSMesa$osmesa_bits"
860     DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
861     ;;
862 *)
863     AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
864     ;;
865 esac
866 AC_SUBST([OSMESA_LIB])
867
868 case "$mesa_driver" in
869 osmesa)
870     # only link libraries with osmesa if shared
871     if test "$enable_static" = no; then
872         OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
873     else
874         OSMESA_LIB_DEPS=""
875     fi
876     OSMESA_MESA_DEPS=""
877     OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
878     ;;
879 *)
880     # Link OSMesa to libGL otherwise
881     OSMESA_LIB_DEPS=""
882     # only link libraries with osmesa if shared
883     if test "$enable_static" = no; then
884         OSMESA_MESA_DEPS='-l$(GL_LIB)'
885     else
886         OSMESA_MESA_DEPS=""
887     fi
888     OSMESA_PC_REQ="gl"
889     ;;
890 esac
891 OSMESA_PC_LIB_PRIV="$OSMESA_PC_LIB_PRIV"
892 AC_SUBST([OSMESA_LIB_DEPS])
893 AC_SUBST([OSMESA_MESA_DEPS])
894 AC_SUBST([OSMESA_PC_REQ])
895 AC_SUBST([OSMESA_PC_LIB_PRIV])
896
897 dnl
898 dnl EGL configuration
899 dnl
900 AC_ARG_ENABLE([egl],
901     [AS_HELP_STRING([--disable-egl],
902         [disable EGL library @<:@default=enabled@:>@])],
903     [enable_egl="$enableval"],
904     [enable_egl=yes])
905 if test "x$enable_egl" = xyes; then
906     SRC_DIRS="$SRC_DIRS egl"
907     EGL_LIB_DEPS="$DLOPEN_LIBS -lpthread"
908     EGL_DRIVERS_DIRS=""
909     if test "$enable_static" != yes && test "$mesa_driver" != osmesa; then
910         # build egl_glx when libGL is built
911         EGL_DRIVERS_DIRS="glx"
912     fi
913 fi
914 AC_SUBST([EGL_LIB_DEPS])
915 AC_SUBST([EGL_DRIVERS_DIRS])
916
917 dnl
918 dnl GLU configuration
919 dnl
920 AC_ARG_ENABLE([glu],
921     [AS_HELP_STRING([--disable-glu],
922         [enable OpenGL Utility library @<:@default=enabled@:>@])],
923     [enable_glu="$enableval"],
924     [enable_glu=yes])
925 if test "x$enable_glu" = xyes; then
926     SRC_DIRS="$SRC_DIRS glu"
927
928     case "$mesa_driver" in
929     osmesa)
930         # If GLU is available and we have libOSMesa (not 16 or 32),
931         # we can build the osdemos
932         if test "$with_demos" = yes && test "$osmesa_bits" = 8; then
933             PROGRAM_DIRS="$PROGRAM_DIRS osdemos"
934         fi
935
936         # Link libGLU to libOSMesa instead of libGL
937         GLU_LIB_DEPS=""
938         GLU_PC_REQ="osmesa"
939         if test "$enable_static" = no; then
940             GLU_MESA_DEPS='-l$(OSMESA_LIB)'
941         else
942             GLU_MESA_DEPS=""
943         fi
944         ;;
945     *)
946         # If static, empty GLU_LIB_DEPS and add libs for programs to link
947         GLU_PC_REQ="gl"
948         GLU_PC_LIB_PRIV="-lm"
949         if test "$enable_static" = no; then
950             GLU_LIB_DEPS="-lm"
951             GLU_MESA_DEPS='-l$(GL_LIB)'
952         else
953             GLU_LIB_DEPS=""
954             GLU_MESA_DEPS=""
955             APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
956         fi
957         ;;
958     esac
959 fi
960 if test "$enable_static" = no; then
961     GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
962 fi
963 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
964 AC_SUBST([GLU_LIB_DEPS])
965 AC_SUBST([GLU_MESA_DEPS])
966 AC_SUBST([GLU_PC_REQ])
967 AC_SUBST([GLU_PC_REQ_PRIV])
968 AC_SUBST([GLU_PC_LIB_PRIV])
969 AC_SUBST([GLU_PC_CFLAGS])
970
971 dnl
972 dnl GLw configuration
973 dnl
974 AC_ARG_ENABLE([glw],
975     [AS_HELP_STRING([--disable-glw],
976         [enable Xt/Motif widget library @<:@default=enabled@:>@])],
977     [enable_glw="$enableval"],
978     [enable_glw=yes])
979 dnl Don't build GLw on osmesa
980 if test "x$enable_glw" = xyes && test "$mesa_driver" = osmesa; then
981     AC_MSG_WARN([Disabling GLw since the driver is OSMesa])
982     enable_glw=no
983 fi
984 AC_ARG_ENABLE([motif],
985     [AS_HELP_STRING([--enable-motif],
986         [use Motif widgets in GLw @<:@default=disabled@:>@])],
987     [enable_motif="$enableval"],
988     [enable_motif=no])
989
990 if test "x$enable_glw" = xyes; then
991     SRC_DIRS="$SRC_DIRS glw"
992     if test "$x11_pkgconfig" = yes; then
993         PKG_CHECK_MODULES([GLW],[x11 xt])
994         GLW_PC_REQ_PRIV="x11 xt"
995         GLW_LIB_DEPS="$GLW_LIBS"
996     else
997         # should check these...
998         GLW_LIB_DEPS="$X_LIBS -lXt -lX11"
999         GLW_PC_LIB_PRIV="$GLW_LIB_DEPS"
1000         GLW_PC_CFLAGS="$X11_INCLUDES"
1001     fi
1002
1003     GLW_SOURCES="GLwDrawA.c"
1004     MOTIF_CFLAGS=
1005     if test "x$enable_motif" = xyes; then
1006         GLW_SOURCES="$GLW_SOURCES GLwMDrawA.c"
1007         AC_PATH_PROG([MOTIF_CONFIG], [motif-config], [no])
1008         if test "x$MOTIF_CONFIG" != xno; then
1009             MOTIF_CFLAGS=`$MOTIF_CONFIG --cflags`
1010             MOTIF_LIBS=`$MOTIF_CONFIG --libs`
1011         else
1012             AC_CHECK_HEADER([Xm/PrimitiveP.h], [],
1013                 [AC_MSG_ERROR([Can't locate Motif headers])])
1014             AC_CHECK_LIB([Xm], [XmGetPixmap], [MOTIF_LIBS="-lXm"],
1015                 [AC_MSG_ERROR([Can't locate Motif Xm library])])
1016         fi
1017         # MOTIF_LIBS is prepended to GLW_LIB_DEPS since Xm needs Xt/X11
1018         GLW_LIB_DEPS="$MOTIF_LIBS $GLW_LIB_DEPS"
1019         GLW_PC_LIB_PRIV="$MOTIF_LIBS $GLW_PC_LIB_PRIV"
1020         GLW_PC_CFLAGS="$MOTIF_CFLAGS $GLW_PC_CFLAGS"
1021     fi
1022
1023     # If static, empty GLW_LIB_DEPS and add libs for programs to link
1024     GLW_PC_LIB_PRIV="$GLW_PC_LIB_PRIV"
1025     if test "$enable_static" = no; then
1026         GLW_MESA_DEPS='-l$(GL_LIB)'
1027         GLW_LIB_DEPS="$GLW_LIB_DEPS"
1028     else
1029         APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
1030         GLW_LIB_DEPS=""
1031         GLW_MESA_DEPS=""
1032     fi
1033 fi
1034 AC_SUBST([GLW_LIB_DEPS])
1035 AC_SUBST([GLW_MESA_DEPS])
1036 AC_SUBST([GLW_SOURCES])
1037 AC_SUBST([MOTIF_CFLAGS])
1038 AC_SUBST([GLW_PC_REQ_PRIV])
1039 AC_SUBST([GLW_PC_LIB_PRIV])
1040 AC_SUBST([GLW_PC_CFLAGS])
1041
1042 dnl
1043 dnl GLUT configuration
1044 dnl
1045 if test -f "$srcdir/include/GL/glut.h"; then
1046     default_glut=yes
1047 else
1048     default_glut=no
1049 fi
1050 AC_ARG_ENABLE([glut],
1051     [AS_HELP_STRING([--disable-glut],
1052         [enable GLUT library @<:@default=enabled if source available@:>@])],
1053     [enable_glut="$enableval"],
1054     [enable_glut="$default_glut"])
1055
1056 dnl Can't build glut if GLU not available
1057 if test "x$enable_glu$enable_glut" = xnoyes; then
1058     AC_MSG_WARN([Disabling glut since GLU is disabled])
1059     enable_glut=no
1060 fi
1061 dnl Don't build glut on osmesa
1062 if test "x$enable_glut" = xyes && test "$mesa_driver" = osmesa; then
1063     AC_MSG_WARN([Disabling glut since the driver is OSMesa])
1064     enable_glut=no
1065 fi
1066
1067 if test "x$enable_glut" = xyes; then
1068     SRC_DIRS="$SRC_DIRS glut/glx"
1069     GLUT_CFLAGS=""
1070     if test "x$GCC" = xyes; then
1071         GLUT_CFLAGS="-fexceptions"
1072     fi
1073     if test "$x11_pkgconfig" = yes; then
1074         PKG_CHECK_MODULES([GLUT],[x11 xmu xi])
1075         GLUT_PC_REQ_PRIV="x11 xmu xi"
1076         GLUT_LIB_DEPS="$GLUT_LIBS"
1077     else
1078         # should check these...
1079         GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
1080         GLUT_PC_LIB_PRIV="$GLUT_LIB_DEPS"
1081         GLUT_PC_CFLAGS="$X11_INCLUDES"
1082     fi
1083     GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
1084     GLUT_PC_LIB_PRIV="$GLUT_PC_LIB_PRIV -lm"
1085
1086     # If glut is available, we can build most programs
1087     if test "$with_demos" = yes; then
1088         PROGRAM_DIRS="$PROGRAM_DIRS demos redbook samples glsl"
1089     fi
1090
1091     # If static, empty GLUT_LIB_DEPS and add libs for programs to link
1092     if test "$enable_static" = no; then
1093         GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
1094     else
1095         APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
1096         GLUT_LIB_DEPS=""
1097         GLUT_MESA_DEPS=""
1098     fi
1099 fi
1100 AC_SUBST([GLUT_LIB_DEPS])
1101 AC_SUBST([GLUT_MESA_DEPS])
1102 AC_SUBST([GLUT_CFLAGS])
1103 AC_SUBST([GLUT_PC_REQ_PRIV])
1104 AC_SUBST([GLUT_PC_LIB_PRIV])
1105 AC_SUBST([GLUT_PC_CFLAGS])
1106
1107 dnl
1108 dnl Program library dependencies
1109 dnl    Only libm is added here if necessary as the libraries should
1110 dnl    be pulled in by the linker
1111 dnl
1112 if test "x$APP_LIB_DEPS" = x; then
1113     case "$host_os" in
1114     solaris*)
1115         APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm"
1116         ;;
1117     cygwin*)
1118         APP_LIB_DEPS="-lX11"
1119         ;;
1120     *)
1121         APP_LIB_DEPS="-lm"
1122         ;;
1123     esac
1124 fi
1125 AC_SUBST([APP_LIB_DEPS])
1126 AC_SUBST([PROGRAM_DIRS])
1127
1128 dnl
1129 dnl Gallium configuration
1130 dnl
1131 AC_ARG_ENABLE([gallium],
1132     [AS_HELP_STRING([--disable-gallium],
1133         [build gallium @<:@default=enabled@:>@])],
1134     [enable_gallium="$enableval"],
1135     [enable_gallium=yes])
1136 if test "x$enable_gallium" = xyes; then
1137     SRC_DIRS="$SRC_DIRS gallium gallium/winsys"
1138 fi
1139
1140 dnl
1141 dnl Gallium state trackers configuration
1142 dnl
1143 AC_ARG_WITH([state-trackers],
1144     [AS_HELP_STRING([--with-state-trackers@<:@=DIRS...@:>@],
1145         [comma delimited state_trackers list, e.g.
1146         "egl,glx" @<:@default=auto@:>@])],
1147     [with_state_trackers="$withval"],
1148     [with_state_trackers=yes])
1149
1150 case "$with_state_trackers" in
1151 no)
1152     GALLIUM_STATE_TRACKERS_DIRS=""
1153     ;;
1154 yes)
1155     # look at what else is built
1156     case "$mesa_driver" in
1157     xlib)
1158         GALLIUM_STATE_TRACKERS_DIRS=glx
1159         ;;
1160     dri)
1161         GALLIUM_STATE_TRACKERS_DIRS="dri"
1162         if test "x$enable_egl" = xyes; then
1163             GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS egl"
1164         fi
1165         # Have only tested st/xorg on 1.6.0 servers
1166         PKG_CHECK_MODULES(XORG, [xorg-server >= 1.6.0],
1167             HAVE_XORG="yes"; GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg",
1168             HAVE_XORG="no")
1169         ;;
1170     esac
1171     ;;
1172 *)
1173     # verify the requested state tracker exist
1174     state_trackers=`IFS=', '; echo $with_state_trackers`
1175     for tracker in $state_trackers; do
1176         test -d "$srcdir/src/gallium/state_trackers/$tracker" || \
1177             AC_MSG_ERROR([state tracker '$tracker' doesn't exist])
1178
1179         if test "$tracker" = egl && test "x$enable_egl" != xyes; then
1180             AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1181         fi
1182         if test "$tracker" = xorg; then
1183             PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1184                   HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1185                   HAVE_XEXTPROTO_71="no")
1186         fi
1187     done
1188     GALLIUM_STATE_TRACKERS_DIRS="$state_trackers"
1189     ;;
1190 esac
1191
1192 AC_ARG_WITH([xorg-driver-dir],
1193     [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1194                     [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1195     [XORG_DRIVER_INSTALL_DIR="$withval"],
1196     [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1197 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1198
1199 AC_ARG_WITH([max-width],
1200     [AS_HELP_STRING([--with-max-width=N],
1201                     [Maximum framebuffer width (4096)])],
1202     [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1203      AS_IF([test "${withval}" -gt "4096"],
1204            [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1205 )
1206 AC_ARG_WITH([max-height],
1207     [AS_HELP_STRING([--with-max-height=N],
1208                     [Maximum framebuffer height (4096)])],
1209     [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1210      AS_IF([test "${withval}" -gt "4096"],
1211            [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1212 )
1213
1214 dnl
1215 dnl Gallium SVGA configuration
1216 dnl
1217 AC_ARG_ENABLE([gallium-svga],
1218     [AS_HELP_STRING([--enable-gallium-svga],
1219         [build gallium SVGA @<:@default=disabled@:>@])],
1220     [enable_gallium_svga="$enableval"],
1221     [enable_gallium_svga=auto])
1222 if test "x$enable_gallium_svga" = xyes; then
1223     GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS vmware"
1224     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1225 elif test "x$enable_gallium_svga" = xauto; then
1226     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1227 fi
1228
1229 dnl
1230 dnl Gallium Intel configuration
1231 dnl
1232 AC_ARG_ENABLE([gallium-intel],
1233     [AS_HELP_STRING([--enable-gallium-intel],
1234         [build gallium intel @<:@default=disabled@:>@])],
1235     [enable_gallium_intel="$enableval"],
1236     [enable_gallium_intel=auto])
1237 if test "x$enable_gallium_intel" = xyes; then
1238     GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS intel i965"
1239     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 i965"
1240 elif test "x$enable_gallium_intel" = xauto; then
1241     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 i965"
1242 fi
1243
1244 dnl
1245 dnl Gallium Radeon configuration
1246 dnl
1247 AC_ARG_ENABLE([gallium-radeon],
1248     [AS_HELP_STRING([--enable-gallium-radeon],
1249         [build gallium radeon @<:@default=disabled@:>@])],
1250     [enable_gallium_radeon="$enableval"],
1251     [enable_gallium_radeon=no])
1252 if test "x$enable_gallium_radeon" = xyes; then
1253     GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS radeon"
1254     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1255 fi
1256
1257 dnl
1258 dnl Gallium Nouveau configuration
1259 dnl
1260 AC_ARG_ENABLE([gallium-nouveau],
1261     [AS_HELP_STRING([--enable-gallium-nouveau],
1262         [build gallium nouveau @<:@default=disabled@:>@])],
1263     [enable_gallium_nouveau="$enableval"],
1264     [enable_gallium_nouveau=no])
1265 if test "x$enable_gallium_nouveau" = xyes; then
1266     GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS nouveau"
1267     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nv04 nv10 nv20 nv30 nv40 nv50"
1268 fi
1269
1270
1271 dnl Restore LDFLAGS and CPPFLAGS
1272 LDFLAGS="$_SAVE_LDFLAGS"
1273 CPPFLAGS="$_SAVE_CPPFLAGS"
1274
1275 dnl Substitute the config
1276 AC_CONFIG_FILES([configs/autoconf])
1277
1278 dnl Replace the configs/current symlink
1279 AC_CONFIG_COMMANDS([configs],[
1280 if test -f configs/current || test -L configs/current; then
1281     rm -f configs/current
1282 fi
1283 ln -s autoconf configs/current
1284 ])
1285
1286 AC_OUTPUT
1287
1288 dnl
1289 dnl Output some configuration info for the user
1290 dnl
1291 echo ""
1292 echo "        prefix:          $prefix"
1293 echo "        exec_prefix:     $exec_prefix"
1294 echo "        libdir:          $libdir"
1295 echo "        includedir:      $includedir"
1296
1297 dnl Driver info
1298 echo ""
1299 echo "        Driver:          $mesa_driver"
1300 if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
1301     echo "        OSMesa:          lib$OSMESA_LIB"
1302 else
1303     echo "        OSMesa:          no"
1304 fi
1305 if test "$mesa_driver" = dri; then
1306     # cleanup the drivers var
1307     dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/  */ /;s/ *$//'`
1308 if test "x$DRI_DIRS" = x; then
1309     echo "        DRI drivers:     no"
1310 else
1311     echo "        DRI drivers:     $dri_dirs"
1312 fi
1313     echo "        DRI driver dir:  $DRI_DRIVER_INSTALL_DIR"
1314 fi
1315 echo "        Use XCB:         $enable_xcb"
1316
1317 echo ""
1318 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
1319     echo "        Gallium:         yes"
1320     echo "        Gallium dirs:    $GALLIUM_DIRS"
1321     echo "        Winsys dirs:     $GALLIUM_WINSYS_DIRS"
1322     echo "        Winsys drm dirs:$GALLIUM_WINSYS_DRM_DIRS"
1323     echo "        Driver dirs:     $GALLIUM_DRIVERS_DIRS"
1324     echo "        Trackers dirs:   $GALLIUM_STATE_TRACKERS_DIRS"
1325 else
1326     echo "        Gallium:         no"
1327 fi
1328
1329 dnl Libraries
1330 echo ""
1331 echo "        Shared libs:     $enable_shared"
1332 echo "        Static libs:     $enable_static"
1333 echo "        EGL:             $enable_egl"
1334 echo "        GLU:             $enable_glu"
1335 echo "        GLw:             $enable_glw (Motif: $enable_motif)"
1336 echo "        glut:            $enable_glut"
1337
1338 dnl Programs
1339 # cleanup the programs var for display
1340 program_dirs=`echo $PROGRAM_DIRS | $SED 's/^ *//;s/  */ /;s/ *$//'`
1341 if test "x$program_dirs" = x; then
1342     echo "        Demos:           no"
1343 else
1344     echo "        Demos:           $program_dirs"
1345 fi
1346
1347 dnl Compiler options
1348 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
1349 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1350     $SED 's/^ *//;s/  */ /;s/ *$//'`
1351 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1352     $SED 's/^ *//;s/  */ /;s/ *$//'`
1353 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/  */ /;s/ *$//'`
1354 echo ""
1355 echo "        CFLAGS:          $cflags"
1356 echo "        CXXFLAGS:        $cxxflags"
1357 echo "        Macros:          $defines"
1358
1359 echo ""
1360 echo "        Run '${MAKE-make}' to build Mesa"
1361 echo ""