OSDN Git Service

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