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