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