automake: Check for 'indent' and fall back to 'cat' if not found.
[profile/ivi/mesa.git] / configure.ac
1 dnl Process this file with autoconf to create configure.
2
3 AC_PREREQ([2.60])
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 AM_INIT_AUTOMAKE([foreign -Wall])
20
21 dnl http://people.gnome.org/~walters/docs/build-api.txt
22 dnl We don't support srcdir != builddir.
23 echo \#buildapi-variable-no-builddir >/dev/null
24
25 # Support silent build rules, requires at least automake-1.11. Disable
26 # by either passing --disable-silent-rules to configure or passing V=1
27 # to make
28 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
29
30 LT_PREREQ([2.2])
31 LT_INIT([disable-static])
32
33 dnl Save user CFLAGS and CXXFLAGS so one can override the default ones
34 USER_CFLAGS="$CFLAGS"
35 USER_CXXFLAGS="$CXXFLAGS"
36
37 dnl Versions for external dependencies
38 LIBDRM_REQUIRED=2.4.24
39 LIBDRM_RADEON_REQUIRED=2.4.31
40 LIBDRM_INTEL_REQUIRED=2.4.34
41 LIBDRM_NVVIEUX_REQUIRED=2.4.33
42 LIBDRM_NOUVEAU_REQUIRED=2.4.33
43 DRI2PROTO_REQUIRED=2.6
44 GLPROTO_REQUIRED=1.4.14
45 LIBDRM_XORG_REQUIRED=2.4.24
46 LIBKMS_XORG_REQUIRED=1.0.0
47
48 dnl Check for progs
49 AC_PROG_CPP
50 AC_PROG_CC
51 AC_PROG_CXX
52 AM_PROG_CC_C_O
53 AM_PROG_AS
54 AC_CHECK_PROGS([MAKE], [gmake make])
55 AC_CHECK_PROGS([PYTHON2], [python2 python])
56 AC_PROG_SED
57 AC_PROG_MKDIR_P
58 AC_PATH_PROG([MKDEP], [makedepend])
59
60 if test "x$MKDEP" = "x"; then
61     AC_MSG_ERROR([makedepend is required to build Mesa])
62 fi
63
64 AC_PROG_YACC
65 AC_PATH_PROG([YACC_INST], $YACC)
66 if test ! -f "$srcdir/src/glsl/glcpp/glcpp-parse.y"; then
67     if test -z "$YACC_INST"; then
68         AC_MSG_ERROR([yacc not found - unable to compile glcpp-parse.y])
69     fi
70 fi
71 AC_PROG_LEX
72
73 AC_PATH_PROG([PERL], [perl])
74
75 AC_CHECK_PROG(INDENT, indent, indent, cat)
76 if test "x$INDENT" != "xcat"; then
77     AC_SUBST(INDENT_FLAGS, '-i4 -nut -br -brs -npcs -ce -T GLubyte -T GLbyte -T Bool')
78 fi
79
80 dnl Our fallback install-sh is a symlink to minstall. Use the existing
81 dnl configuration in that case.
82 AC_PROG_INSTALL
83 test "x$INSTALL" = "x$ac_install_sh" && INSTALL='$(MINSTALL)'
84
85 dnl We need a POSIX shell for parts of the build. Assume we have one
86 dnl in most cases.
87 case "$host_os" in
88 solaris*)
89     # Solaris /bin/sh is too old/non-POSIX compliant
90     AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
91     SHELL="$POSIX_SHELL"
92     ;;
93 esac
94
95 dnl clang is mostly GCC-compatible, but its version is much lower,
96 dnl so we have to check for it.
97 AC_MSG_CHECKING([if compiling with clang])
98
99 AC_COMPILE_IFELSE(
100 [AC_LANG_PROGRAM([], [[
101 #ifndef __clang__
102        not clang
103 #endif
104 ]])],
105 [acv_mesa_CLANG=yes], [acv_mesa_CLANG=no])
106
107 AC_MSG_RESULT([$acv_mesa_CLANG])
108
109 dnl If we're using GCC, make sure that it is at least version 3.3.0.  Older
110 dnl versions are explictly not supported.
111 if test "x$GCC" = xyes -a "x$acv_mesa_CLANG" = xno; then
112     AC_MSG_CHECKING([whether gcc version is sufficient])
113     major=0
114     minor=0
115
116     GCC_VERSION=`$CC -dumpversion`
117     if test $? -eq 0; then
118         GCC_VERSION_MAJOR=`echo $GCC_VERSION | cut -d. -f1`
119         GCC_VERSION_MINOR=`echo $GCC_VERSION | cut -d. -f2`
120     fi
121
122     if test $GCC_VERSION_MAJOR -lt 3 -o $GCC_VERSION_MAJOR -eq 3 -a $GCC_VERSION_MINOR -lt 3 ; then
123         AC_MSG_RESULT([no])
124         AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.])
125     else
126         AC_MSG_RESULT([yes])
127     fi
128 fi
129
130
131 MKDEP_OPTIONS=-fdepend
132 dnl Ask gcc where it's keeping its secret headers
133 if test "x$GCC" = xyes; then
134     for dir in include include-fixed; do
135         GCC_INCLUDES=`$CC -print-file-name=$dir`
136         if test "x$GCC_INCLUDES" != x && \
137            test "$GCC_INCLUDES" != "$dir" && \
138            test -d "$GCC_INCLUDES"; then
139             MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
140         fi
141     done
142 fi
143 AC_SUBST([MKDEP_OPTIONS])
144
145 dnl Make sure the pkg-config macros are defined
146 m4_ifndef([PKG_PROG_PKG_CONFIG],
147     [m4_fatal([Could not locate the pkg-config autoconf macros.
148   These are usually located in /usr/share/aclocal/pkg.m4. If your macros
149   are in a different location, try setting the environment variable
150   ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
151 PKG_PROG_PKG_CONFIG()
152
153 dnl LIB_DIR - library basename
154 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
155 AC_SUBST([LIB_DIR])
156
157 dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
158 _SAVE_LDFLAGS="$LDFLAGS"
159 AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker])
160 AC_SUBST([EXTRA_LIB_PATH])
161
162 dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
163 _SAVE_CPPFLAGS="$CPPFLAGS"
164 AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers])
165 AC_SUBST([X11_INCLUDES])
166
167 dnl Compiler macros
168 DEFINES=""
169 AC_SUBST([DEFINES])
170 case "$host_os" in
171 linux*|*-gnu*|gnu*)
172     DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS"
173     ;;
174 solaris*)
175     DEFINES="$DEFINES -DPTHREADS -DSVR4"
176     ;;
177 cygwin*)
178     DEFINES="$DEFINES -DPTHREADS"
179     ;;
180 esac
181
182 dnl Add flags for gcc and g++
183 if test "x$GCC" = xyes; then
184     CFLAGS="$CFLAGS -Wall -std=c99"
185
186     # Enable -Werror=implicit-function-declaration and
187     # -Werror=missing-prototypes, if available, or otherwise, just
188     # -Wmissing-prototypes.  This is particularly useful to avoid
189     # generating a loadable driver module that has undefined symbols.
190     save_CFLAGS="$CFLAGS"
191     AC_MSG_CHECKING([whether $CC supports -Werror=missing-prototypes])
192     CFLAGS="$CFLAGS -Werror=implicit-function-declaration"
193     CFLAGS="$CFLAGS -Werror=missing-prototypes"
194     AC_LINK_IFELSE([AC_LANG_PROGRAM()],
195                    AC_MSG_RESULT([yes]),
196                    [CFLAGS="$save_CFLAGS -Wmissing-prototypes";
197                     AC_MSG_RESULT([no])]);
198
199     # Enable -fvisibility=hidden if using a gcc that supports it
200     save_CFLAGS="$CFLAGS"
201     AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
202     VISIBILITY_CFLAGS="-fvisibility=hidden"
203     CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
204     AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
205                    [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
206
207     # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
208     CFLAGS=$save_CFLAGS
209
210     # Work around aliasing bugs - developers should comment this out
211     CFLAGS="$CFLAGS -fno-strict-aliasing"
212
213     # gcc's builtin memcmp is slower than glibc's
214     # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
215     CFLAGS="$CFLAGS -fno-builtin-memcmp"
216 fi
217 if test "x$GXX" = xyes; then
218     CXXFLAGS="$CXXFLAGS -Wall"
219
220     # Enable -fvisibility=hidden if using a gcc that supports it
221     save_CXXFLAGS="$CXXFLAGS"
222     AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
223     VISIBILITY_CXXFLAGS="-fvisibility=hidden"
224     CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
225     AC_LANG_PUSH([C++])
226     AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
227                    [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
228     AC_LANG_POP([C++])
229
230     # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
231     CXXFLAGS=$save_CXXFLAGS
232
233     # Work around aliasing bugs - developers should comment this out
234     CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
235
236     # gcc's builtin memcmp is slower than glibc's
237     # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
238     CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp"
239 fi
240
241 dnl even if the compiler appears to support it, using visibility attributes isn't
242 dnl going to do anything useful currently on cygwin apart from emit lots of warnings
243 case "$host_os" in
244 cygwin*)
245     VISIBILITY_CFLAGS=""
246     VISIBILITY_CXXFLAGS=""
247     ;;
248 esac
249
250 AC_SUBST([VISIBILITY_CFLAGS])
251 AC_SUBST([VISIBILITY_CXXFLAGS])
252
253 dnl These should be unnecessary, but let the user set them if they want
254 AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
255     Default is to use CFLAGS.])
256 AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
257     compiler. Default is to use CFLAGS.])
258 AC_SUBST([OPT_FLAGS])
259 AC_SUBST([ARCH_FLAGS])
260
261 dnl
262 dnl Hacks to enable 32 or 64 bit build
263 dnl
264 AC_ARG_ENABLE([32-bit],
265     [AS_HELP_STRING([--enable-32-bit],
266         [build 32-bit libraries @<:@default=auto@:>@])],
267     [enable_32bit="$enableval"],
268     [enable_32bit=auto]
269 )
270 if test "x$enable_32bit" = xyes; then
271     if test "x$GCC" = xyes; then
272         CFLAGS="$CFLAGS -m32"
273         ARCH_FLAGS="$ARCH_FLAGS -m32"
274     fi
275     if test "x$GXX" = xyes; then
276         CXXFLAGS="$CXXFLAGS -m32"
277     fi
278 fi
279 AC_ARG_ENABLE([64-bit],
280     [AS_HELP_STRING([--enable-64-bit],
281         [build 64-bit libraries @<:@default=auto@:>@])],
282     [enable_64bit="$enableval"],
283     [enable_64bit=auto]
284 )
285 if test "x$enable_64bit" = xyes; then
286     if test "x$GCC" = xyes; then
287         CFLAGS="$CFLAGS -m64"
288     fi
289     if test "x$GXX" = xyes; then
290         CXXFLAGS="$CXXFLAGS -m64"
291     fi
292 fi
293
294 dnl Can't have static and shared libraries, default to static if user
295 dnl explicitly requested. If both disabled, set to static since shared
296 dnl was explicitly requested.
297 case "x$enable_static$enable_shared" in
298 xyesyes )
299     AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
300     enable_shared=no
301     ;;
302 xnono )
303     AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
304     enable_static=yes
305     ;;
306 esac
307
308 dnl
309 dnl mklib options
310 dnl
311 AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
312 if test "$enable_static" = yes; then
313     MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
314 fi
315 AC_SUBST([MKLIB_OPTIONS])
316
317 dnl
318 dnl other compiler options
319 dnl
320 AC_ARG_ENABLE([debug],
321     [AS_HELP_STRING([--enable-debug],
322         [use debug compiler flags and macros @<:@default=disabled@:>@])],
323     [enable_debug="$enableval"],
324     [enable_debug=no]
325 )
326 if test "x$enable_debug" = xyes; then
327     DEFINES="$DEFINES -DDEBUG"
328     if test "x$GCC" = xyes; then
329         CFLAGS="$CFLAGS -g"
330     fi
331     if test "x$GXX" = xyes; then
332         CXXFLAGS="$CXXFLAGS -g"
333     fi
334 fi
335
336 dnl
337 dnl library names
338 dnl
339 LIB_PREFIX_GLOB='lib'
340 LIB_VERSION_SEPARATOR='.'
341 if test "$enable_static" = yes; then
342     LIB_EXTENSION='a'
343 else
344     case "$host_os" in
345     darwin* )
346         LIB_EXTENSION='dylib' ;;
347     cygwin* )
348         dnl prefix can be 'cyg' or 'lib'
349         LIB_PREFIX_GLOB='???'
350         LIB_VERSION_SEPARATOR='-'
351         LIB_EXTENSION='dll' ;;
352     aix* )
353         LIB_EXTENSION='a' ;;
354     * )
355         LIB_EXTENSION='so' ;;
356     esac
357 fi
358
359 dnl
360 dnl Mangled Mesa support
361 dnl
362 AC_ARG_ENABLE([mangling],
363   [AS_HELP_STRING([--enable-mangling],
364     [enable mangled symbols and library name @<:@default=disabled@:>@])],
365   [enable_mangling="${enableval}"],
366   [enable_mangling=no]
367 )
368 GL_LIB="GL"
369 GLU_LIB="GLU"
370 OSMESA_LIB="OSMesa"
371 if test "x${enable_mangling}" = "xyes" ; then
372   DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
373   GL_LIB="MangledGL"
374   GLU_LIB="MangledGLU"
375   OSMESA_LIB="MangledOSMesa"
376 fi
377 AC_SUBST([GL_LIB])
378 AC_SUBST([GLU_LIB])
379 AC_SUBST([OSMESA_LIB])
380 AM_CONDITIONAL(HAVE_MANGLED_GL, test $GL_LIB = MangledGL)
381
382 dnl
383 dnl potentially-infringing-but-nobody-knows-for-sure stuff
384 dnl
385 AC_ARG_ENABLE([texture-float],
386     [AS_HELP_STRING([--enable-texture-float],
387         [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
388     [enable_texture_float="$enableval"],
389     [enable_texture_float=no]
390 )
391 if test "x$enable_texture_float" = xyes; then
392     AC_MSG_WARN([Floating-point textures enabled.])
393     AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
394     DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
395 fi
396
397 GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
398 GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
399 OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
400 EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
401 GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
402 GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION}
403 VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION}
404 GLAPI_LIB_NAME='lib$(GLAPI_LIB).'${LIB_EXTENSION}
405
406 GL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
407 GLU_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLU_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
408 OSMESA_LIB_GLOB=${LIB_PREFIX_GLOB}'$(OSMESA_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
409 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
410 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
411 GLESv1_CM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv1_CM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
412 GLESv2_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv2_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
413 VG_LIB_GLOB=${LIB_PREFIX_GLOB}'$(VG_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
414 GLAPI_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLAPI_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
415
416 AC_SUBST([GL_LIB_NAME])
417 AC_SUBST([GLU_LIB_NAME])
418 AC_SUBST([OSMESA_LIB_NAME])
419 AC_SUBST([EGL_LIB_NAME])
420 AC_SUBST([GLESv1_CM_LIB_NAME])
421 AC_SUBST([GLESv2_LIB_NAME])
422 AC_SUBST([VG_LIB_NAME])
423 AC_SUBST([GLAPI_LIB_NAME])
424
425 AC_SUBST([GL_LIB_GLOB])
426 AC_SUBST([GLU_LIB_GLOB])
427 AC_SUBST([OSMESA_LIB_GLOB])
428 AC_SUBST([EGL_LIB_GLOB])
429 AC_SUBST([GLESv1_CM_LIB_GLOB])
430 AC_SUBST([GLESv2_LIB_GLOB])
431 AC_SUBST([VG_LIB_GLOB])
432 AC_SUBST([GLAPI_LIB_GLOB])
433
434 dnl
435 dnl Arch/platform-specific settings
436 dnl
437 AC_ARG_ENABLE([asm],
438     [AS_HELP_STRING([--disable-asm],
439         [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
440     [enable_asm="$enableval"],
441     [enable_asm=yes]
442 )
443 asm_arch=""
444 ASM_FLAGS=""
445 MESA_ASM_FILES=""
446 GLAPI_ASM_SOURCES=""
447 AC_MSG_CHECKING([whether to enable assembly])
448 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
449 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
450 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
451     case "$host_cpu" in
452     i?86 | x86_64)
453         enable_asm=no
454         AC_MSG_RESULT([no, cross compiling])
455         ;;
456     esac
457 fi
458 # check for supported arches
459 if test "x$enable_asm" = xyes; then
460     case "$host_cpu" in
461     i?86)
462         case "$host_os" in
463         linux* | *freebsd* | dragonfly* | *netbsd*)
464             test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
465             ;;
466         esac
467         ;;
468     x86_64)
469         case "$host_os" in
470         linux* | *freebsd* | dragonfly* | *netbsd*)
471             test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
472             ;;
473         esac
474         ;;
475     powerpc)
476         case "$host_os" in
477         linux*)
478             asm_arch=ppc
479             ;;
480         esac
481         ;;
482     sparc*)
483         case "$host_os" in
484         linux*)
485             asm_arch=sparc
486             ;;
487         esac
488         ;;
489     esac
490
491     case "$asm_arch" in
492     x86)
493         ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
494         MESA_ASM_FILES='$(X86_FILES)'
495         GLAPI_ASM_SOURCES='$(X86_API)'
496         AC_MSG_RESULT([yes, x86])
497         ;;
498     x86_64)
499         ASM_FLAGS="-DUSE_X86_64_ASM"
500         MESA_ASM_FILES='$(X86_64_FILES)'
501         GLAPI_ASM_SOURCES='$(X86-64_API)'
502         AC_MSG_RESULT([yes, x86_64])
503         ;;
504     sparc)
505         ASM_FLAGS="-DUSE_SPARC_ASM"
506         MESA_ASM_FILES='$(SPARC_FILES)'
507         GLAPI_ASM_SOURCES='$(SPARC_API)'
508         AC_MSG_RESULT([yes, sparc])
509         ;;
510     *)
511         AC_MSG_RESULT([no, platform not supported])
512         ;;
513     esac
514 fi
515 AC_SUBST([ASM_FLAGS])
516 AC_SUBST([MESA_ASM_FILES])
517 AC_SUBST([GLAPI_ASM_SOURCES])
518
519 dnl PIC code macro
520 MESA_PIC_FLAGS
521
522 dnl Check to see if dlopen is in default libraries (like Solaris, which
523 dnl has it in libc), or if libdl is needed to get it.
524 AC_CHECK_FUNC([dlopen], [],
525     [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
526 AC_SUBST([DLOPEN_LIBS])
527
528 dnl See if posix_memalign is available
529 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
530
531 dnl SELinux awareness.
532 AC_ARG_ENABLE([selinux],
533     [AS_HELP_STRING([--enable-selinux],
534         [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
535     [MESA_SELINUX="$enableval"],
536     [MESA_SELINUX=no])
537 if test "x$enable_selinux" = "xyes"; then
538     AC_CHECK_HEADER([selinux/selinux.h],[],
539                     [AC_MSG_ERROR([SELinux headers not found])])
540     AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
541                  [AC_MSG_ERROR([SELinux library not found])])
542     SELINUX_LIBS="-lselinux"
543     DEFINES="$DEFINES -DMESA_SELINUX"
544 fi
545
546 dnl Options for APIs
547 AC_ARG_ENABLE([opengl],
548     [AS_HELP_STRING([--disable-opengl],
549         [disable support for standard OpenGL API @<:@default=no@:>@])],
550     [enable_opengl="$enableval"],
551     [enable_opengl=yes])
552 AC_ARG_ENABLE([gles1],
553     [AS_HELP_STRING([--enable-gles1],
554         [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
555     [enable_gles1="$enableval"],
556     [enable_gles1=no])
557 AC_ARG_ENABLE([gles2],
558     [AS_HELP_STRING([--enable-gles2],
559         [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
560     [enable_gles2="$enableval"],
561     [enable_gles2=no])
562 AC_ARG_ENABLE([openvg],
563     [AS_HELP_STRING([--enable-openvg],
564         [enable support for OpenVG API @<:@default=no@:>@])],
565     [enable_openvg="$enableval"],
566     [enable_openvg=no])
567
568 AC_ARG_ENABLE([dri],
569     [AS_HELP_STRING([--enable-dri],
570         [enable DRI modules @<:@default=auto@:>@])],
571     [enable_dri="$enableval"],
572     [enable_dri=auto])
573 AC_ARG_ENABLE([glx],
574     [AS_HELP_STRING([--enable-glx],
575         [enable GLX library @<:@default=auto@:>@])],
576     [enable_glx="$enableval"],
577     [enable_glx=auto])
578 AC_ARG_ENABLE([osmesa],
579     [AS_HELP_STRING([--enable-osmesa],
580         [enable OSMesa library @<:@default=auto@:>@])],
581     [enable_osmesa="$enableval"],
582     [enable_osmesa=auto])
583 AC_ARG_ENABLE([egl],
584     [AS_HELP_STRING([--disable-egl],
585         [disable EGL library @<:@default=enabled@:>@])],
586     [enable_egl="$enableval"],
587     [enable_egl=yes])
588
589 AC_ARG_ENABLE([xorg],
590     [AS_HELP_STRING([--enable-xorg],
591         [enable support for X.Org DDX API @<:@default=no@:>@])],
592     [enable_xorg="$enableval"],
593     [enable_xorg=no])
594 AC_ARG_ENABLE([xa],
595     [AS_HELP_STRING([--enable-xa],
596         [enable build of the XA X Acceleration API @<:@default=no@:>@])],
597     [enable_xa="$enableval"],
598     [enable_xa=no])
599 AC_ARG_ENABLE([d3d1x],
600     [AS_HELP_STRING([--enable-d3d1x],
601         [enable support for Direct3D 10 & 11 low-level API @<:@default=no@:>@])],
602     [enable_d3d1x="$enableval"],
603     [enable_d3d1x=no])
604 AC_ARG_ENABLE([gbm],
605    [AS_HELP_STRING([--enable-gbm],
606          [enable gbm library @<:@default=auto@:>@])],
607    [enable_gbm="$enableval"],
608    [enable_gbm=auto])
609
610 AC_ARG_ENABLE([xvmc],
611    [AS_HELP_STRING([--enable-xvmc],
612          [enable xvmc library @<:@default=auto@:>@])],
613    [enable_xvmc="$enableval"],
614    [enable_xvmc=auto])
615 AC_ARG_ENABLE([vdpau],
616    [AS_HELP_STRING([--enable-vdpau],
617          [enable vdpau library @<:@default=auto@:>@])],
618    [enable_vdpau="$enableval"],
619    [enable_vdpau=auto])
620 AC_ARG_ENABLE([va],
621    [AS_HELP_STRING([--enable-va],
622          [enable va library @<:@default=auto@:>@])],
623    [enable_va="$enableval"],
624    [enable_va=auto])
625 AC_ARG_ENABLE([opencl],
626    [AS_HELP_STRING([--enable-opencl],
627          [enable OpenCL library @<:@default=no@:>@])],
628    [enable_opencl="$enableval"],
629    [enable_opencl=no])
630 AC_ARG_ENABLE([xlib_glx],
631     [AS_HELP_STRING([--enable-xlib-glx],
632         [make GLX library Xlib-based instead of DRI-based @<:@default=disable@:>@])],
633     [enable_xlib_glx="$enableval"],
634     [enable_xlib_glx=auto])
635 AC_ARG_ENABLE([gallium_egl],
636     [AS_HELP_STRING([--enable-gallium-egl],
637         [enable optional EGL state tracker (not required
638          for EGL support in Gallium with OpenGL and OpenGL ES)
639          @<:@default=disable@:>@])],
640     [enable_gallium_egl="$enableval"],
641     [enable_gallium_egl=no])
642 AC_ARG_ENABLE([gallium_gbm],
643     [AS_HELP_STRING([--enable-gallium-gbm],
644         [enable optional gbm state tracker (not required for
645          gbm support in Gallium)
646          @<:@default=auto@:>@])],
647     [enable_gallium_gbm="$enableval"],
648     [enable_gallium_gbm=auto])
649
650 AC_ARG_ENABLE([r600-llvm-compiler],
651     [AS_HELP_STRING([--enable-r600-llvm-compiler],
652         [Enable experimental LLVM backend for graphics shaders @<:@default=disable@:>@])],
653     [enable_r600_llvm="$enableval"],
654     [enable_r600_llvm=no])
655
656 AC_ARG_ENABLE([gallium_tests],
657     [AS_HELP_STRING([--enable-gallium-tests],
658         [Enable optional Gallium tests) @<:@default=disable@:>@])],
659     [enable_gallium_tests="$enableval"],
660     [enable_gallium_tests=no])
661
662 # Option for Gallium drivers
663 GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
664
665 AC_ARG_WITH([gallium-drivers],
666     [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
667         [comma delimited Gallium drivers list, e.g.
668         "i915,nouveau,r300,r600,svga,swrast"
669         @<:@default=r300,r600,swrast@:>@])],
670     [with_gallium_drivers="$withval"],
671     [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
672
673 # Doing '--without-gallium-drivers' will set this variable to 'no'.  Clear it
674 # here so that the script doesn't choke on an unknown driver name later.
675 case "$with_gallium_drivers" in
676     yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
677     no) with_gallium_drivers='' ;;
678 esac
679
680 if test "x$enable_opengl" = xno -a \
681         "x$enable_gles1" = xno -a \
682         "x$enable_gles2" = xno -a \
683         "x$enable_openvg" = xno -a \
684         "x$enable_xorg" = xno -a \
685         "x$enable_xa" = xno -a \
686         "x$enable_d3d1x" = xno -a \
687         "x$enable_xvmc" = xno -a \
688         "x$enable_vdpau" = xno -a \
689         "x$enable_va" = xno -a \
690         "x$enable_opencl" = xno; then
691     AC_MSG_ERROR([at least one API should be enabled])
692 fi
693
694 API_DEFINES=""
695 if test "x$enable_opengl" = xno; then
696     API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
697 else
698     API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
699 fi
700 if test "x$enable_gles1" = xyes; then
701     API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
702 fi
703 if test "x$enable_gles2" = xyes; then
704     API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
705 fi
706 AC_SUBST([API_DEFINES])
707
708 AC_ARG_ENABLE([shared-glapi],
709     [AS_HELP_STRING([--enable-shared-glapi],
710         [EXPERIMENTAL.  Enable shared glapi for OpenGL @<:@default=no@:>@])],
711     [enable_shared_glapi="$enableval"],
712     [enable_shared_glapi=no])
713
714 SHARED_GLAPI="0"
715 if test "x$enable_shared_glapi" = xyes; then
716     SHARED_GLAPI="1"
717     # libGL will use libglapi for function lookups (IN_DRI_DRIVER means to use
718     # the remap table)
719     DEFINES="$DEFINES -DIN_DRI_DRIVER"
720     SRC_DIRS="$SRC_DIRS mapi/shared-glapi"
721 fi
722 AC_SUBST([SHARED_GLAPI])
723 AM_CONDITIONAL(HAVE_SHARED_GLAPI, test $SHARED_GLAPI = 1)
724
725 dnl
726 dnl Driver configuration. Options are xlib, dri and osmesa right now.
727 dnl More later: fbdev, ...
728 dnl
729 default_driver="xlib"
730
731 case "$host_os" in
732 linux*)
733     case "$host_cpu" in
734     i*86|x86_64|powerpc*|sparc*|ia64*) default_driver="dri";;
735     esac
736     ;;
737 *freebsd* | dragonfly* | *netbsd*)
738     case "$host_cpu" in
739     i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
740     esac
741     ;;
742 esac
743
744 if test "x$enable_opengl" = xno; then
745     default_driver="no"
746 fi
747
748 AC_ARG_WITH([driver],
749     [AS_HELP_STRING([--with-driver=DRIVER], [DEPRECATED])],
750     [mesa_driver="$withval"],
751     [mesa_driver=auto])
752 dnl Check for valid option
753 case "x$mesa_driver" in
754 xxlib|xdri|xosmesa|xno)
755     if test "x$enable_dri" != xauto -o \
756             "x$enable_glx" != xauto -o \
757             "x$enable_osmesa" != xauto -o \
758             "x$enable_xlib_glx" != xauto; then
759         AC_MSG_ERROR([--with-driver=$mesa_driver is deprecated])
760     fi
761     ;;
762 xauto)
763     mesa_driver="$default_driver"
764     ;;
765 *)
766     AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
767     ;;
768 esac
769
770 # map $mesa_driver to APIs
771 if test "x$enable_dri" = xauto; then
772     case "x$mesa_driver" in
773     xdri) enable_dri=yes ;;
774     *)    enable_dri=no ;;
775     esac
776 fi
777
778 if test "x$enable_glx" = xauto; then
779     case "x$mesa_driver" in
780     xdri|xxlib) enable_glx=yes ;;
781     *)          enable_glx=no ;;
782     esac
783 fi
784
785 if test "x$enable_osmesa" = xauto; then
786     case "x$mesa_driver" in
787     xxlib|xosmesa) enable_osmesa=yes ;;
788     *)             enable_osmesa=no ;;
789     esac
790 fi
791
792 if test "x$enable_xlib_glx" = xauto; then
793     case "x$mesa_driver" in
794     xxlib) enable_xlib_glx=yes ;;
795     *)     enable_xlib_glx=no ;;
796     esac
797 fi
798
799 if test "x$enable_glx" = xno; then
800     enable_xlib_glx=no
801 fi
802
803 AM_CONDITIONAL(HAVE_DRI, test x"$enable_dri" = xyes)
804
805 dnl
806 dnl Driver specific build directories
807 dnl
808
809 dnl this variable will be prepended to SRC_DIRS and is not exported
810 CORE_DIRS=""
811
812 SRC_DIRS="gtest"
813 GLU_DIRS="sgi"
814 GALLIUM_DIRS="auxiliary drivers state_trackers"
815 GALLIUM_TARGET_DIRS=""
816 GALLIUM_WINSYS_DIRS="sw"
817 GALLIUM_DRIVERS_DIRS="galahad trace rbug noop identity"
818 GALLIUM_STATE_TRACKERS_DIRS=""
819
820 # build shared-glapi if enabled for OpenGL or if OpenGL ES is enabled
821 case "x$enable_shared_glapi$enable_gles1$enable_gles2" in
822 x*yes*)
823     CORE_DIRS="$CORE_DIRS mapi/shared-glapi"
824     ;;
825 esac
826
827 # build glapi if OpenGL is enabled
828 if test "x$enable_opengl" = xyes; then
829     CORE_DIRS="$CORE_DIRS mapi/glapi"
830 fi
831
832 # build es1api if OpenGL ES 1.x is enabled
833 if test "x$enable_gles1" = xyes; then
834     CORE_DIRS="$CORE_DIRS mapi/es1api"
835 fi
836
837 # build es2api if OpenGL ES 2.x is enabled
838 if test "x$enable_gles2" = xyes; then
839     CORE_DIRS="$CORE_DIRS mapi/es2api"
840 fi
841
842 # build glsl and mesa if OpenGL or OpenGL ES is enabled
843 case "x$enable_opengl$enable_gles1$enable_gles2" in
844 x*yes*)
845     CORE_DIRS="mapi/glapi/gen $CORE_DIRS glsl mesa"
846     ;;
847 esac
848
849 case "x$enable_glx$enable_xlib_glx" in
850 xyesyes)
851     DRIVER_DIRS="$DRIVER_DIRS x11"
852     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
853     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
854     GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS"
855     HAVE_WINSYS_XLIB="yes"
856     ;;
857 xyesno)
858     # DRI-based GLX
859     SRC_DIRS="$SRC_DIRS glx"
860     ;;
861 esac
862
863 if test "x$enable_dri" = xyes; then
864     DRIVER_DIRS="$DRIVER_DIRS dri"
865
866     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/dri"
867     GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
868     HAVE_ST_DRI="yes"
869 fi
870
871 if test "x$enable_osmesa" = xyes; then
872     # the empty space matters for osmesa... (see src/mesa/Makefile)
873     if test -n "$DRIVER_DIRS"; then
874         DRIVER_DIRS="$DRIVER_DIRS osmesa"
875     else
876         DRIVER_DIRS="osmesa"
877     fi
878 fi
879
880 AC_SUBST([SRC_DIRS])
881 AC_SUBST([GLU_DIRS])
882 AC_SUBST([DRIVER_DIRS])
883 AC_SUBST([GALLIUM_DIRS])
884 AC_SUBST([GALLIUM_TARGET_DIRS])
885 AC_SUBST([GALLIUM_WINSYS_DIRS])
886 AC_SUBST([GALLIUM_DRIVERS_DIRS])
887 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
888 AC_SUBST([MESA_LLVM])
889
890 # Check for libdrm
891 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
892                   [have_libdrm=yes], [have_libdrm=no])
893
894 if test "x$enable_dri" = xyes; then
895     # DRI must be shared, I think
896     if test "$enable_static" = yes; then
897         AC_MSG_ERROR([Can't use static libraries for DRI drivers])
898     fi
899
900     # not a hard requirement as swrast does not depend on it
901     if test "x$have_libdrm" = xyes; then
902         DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
903     fi
904 fi
905
906 dnl
907 dnl Find out if X is available. The variable have_x is set if libX11 is
908 dnl found to mimic AC_PATH_XTRA.
909 dnl
910 if test -n "$PKG_CONFIG"; then
911     AC_MSG_CHECKING([pkg-config files for X11 are available])
912     PKG_CHECK_EXISTS([x11],[
913         x11_pkgconfig=yes
914         have_x=yes
915         ],[
916         x11_pkgconfig=no
917     ])
918     AC_MSG_RESULT([$x11_pkgconfig])
919 else
920     x11_pkgconfig=no
921 fi
922 dnl Use the autoconf macro if no pkg-config files
923 if test "$x11_pkgconfig" = yes; then
924     PKG_CHECK_MODULES([X11], [x11])
925 else
926     AC_PATH_XTRA
927     test -z "$X11_CFLAGS" && X11_CFLAGS="$X_CFLAGS"
928     test -z "$X11_LIBS" && X11_LIBS="$X_LIBS -lX11"
929     AC_SUBST([X11_CFLAGS])
930     AC_SUBST([X11_LIBS])
931 fi
932
933 dnl Try to tell the user that the --x-* options are only used when
934 dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
935 m4_divert_once([HELP_BEGIN],
936 [These options are only used when the X libraries cannot be found by the
937 pkg-config utility.])
938
939 dnl We need X for xlib and dri, so bomb now if it's not found
940 if test "x$enable_glx" = xyes -a "x$no_x" = xyes; then
941     AC_MSG_ERROR([X11 development libraries needed for GLX])
942 fi
943
944 if test "x$enable_glx" = xyes; then
945     DEFINES="$DEFINES -DUSE_XCB"
946 fi
947
948 dnl Direct rendering or just indirect rendering
949 case "$host_os" in
950 gnu*)
951     dnl Disable by default on GNU/Hurd
952     driglx_direct_default="no"
953     ;;
954 cygwin*)
955     dnl Disable by default on cygwin
956     driglx_direct_default="no"
957     ;;
958 *)
959     driglx_direct_default="yes"
960     ;;
961 esac
962 AC_ARG_ENABLE([driglx-direct],
963     [AS_HELP_STRING([--disable-driglx-direct],
964         [enable direct rendering in GLX and EGL for DRI \
965             @<:@default=auto@:>@])],
966     [driglx_direct="$enableval"],
967     [driglx_direct="$driglx_direct_default"])
968
969 dnl
970 dnl libGL configuration per driver
971 dnl
972 case "x$enable_glx$enable_xlib_glx" in
973 xyesyes)
974     # Xlib-based GLX
975     if test "$x11_pkgconfig" = yes; then
976         PKG_CHECK_MODULES([XLIBGL], [x11 xext])
977         GL_PC_REQ_PRIV="x11 xext"
978         X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
979         GL_LIB_DEPS="$XLIBGL_LIBS"
980     else
981         # should check these...
982         X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
983         GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
984         GL_PC_LIB_PRIV="$GL_LIB_DEPS"
985         GL_PC_CFLAGS="$X11_INCLUDES"
986     fi
987     GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread $DLOPEN_LIBS"
988     GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
989     ;;
990 xyesno)
991     # DRI-based GLX
992     PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
993     GL_PC_REQ_PRIV="glproto >= $GLPROTO_REQUIRED"
994     if test x"$driglx_direct" = xyes; then
995         if test "x$have_libdrm" != xyes; then
996             AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
997         fi
998         PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
999         GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
1000     fi
1001
1002     # find the DRI deps for libGL
1003     if test "$x11_pkgconfig" = yes; then
1004         dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx"
1005
1006         # add xf86vidmode if available
1007         PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
1008         if test "$HAVE_XF86VIDMODE" = yes ; then
1009             dri_modules="$dri_modules xxf86vm"
1010         fi
1011
1012         PKG_CHECK_MODULES([DRIGL], [$dri_modules])
1013         GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
1014         X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
1015         GL_LIB_DEPS="$DRIGL_LIBS"
1016     else
1017         # should check these...
1018         X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
1019         if test "x$HAVE_XF86VIDMODE" == xyes; then
1020            GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
1021         else
1022            GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXdamage -lXfixes"
1023         fi
1024         GL_PC_LIB_PRIV="$GL_LIB_DEPS"
1025         GL_PC_CFLAGS="$X11_INCLUDES"
1026
1027         # XCB can only be used from pkg-config
1028         PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
1029         GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
1030         X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
1031         GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
1032     fi
1033
1034     # Check to see if the xcb-glx library is new enough to support
1035     # GLX_ARB_create_context.  This bit of hackery is necessary until XCB 1.8
1036     # is released.
1037     save_CPPFLAGS="$CPPFLAGS"
1038     save_LDFLAGS="$LDFLAGS"
1039     CPPFLAGS="$CPPFLAGS $X11_INCLUDES"
1040     LDFLAGS="$LDFLAGS $GL_LIB_DEPS"
1041     AC_CHECK_LIB(xcb-glx, xcb_glx_create_context_attribs_arb_checked,
1042         [HAVE_XCB_GLX_CREATE_CONTEXT=yes],
1043         [HAVE_XCB_GLX_CREATE_CONTEXT=no])
1044     CPPFLAGS="$save_CPPFLAGS"
1045     LDFLAGS="$save_LDFLAGS"
1046
1047     if test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes; then
1048         X11_INCLUDES="$X11_INCLUDES -DHAVE_XCB_GLX_CREATE_CONTEXT"
1049     fi
1050
1051     # need DRM libs, -lpthread, etc.
1052     GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1053     GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1054     ;;
1055 esac
1056
1057 # This is outside the case (above) so that it is invoked even for non-GLX
1058 # builds.
1059 AM_CONDITIONAL(HAVE_XCB_GLX_CREATE_CONTEXT,
1060     test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes)
1061 AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
1062
1063 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1064 GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1065 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1066 GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1067
1068 AC_SUBST([GL_LIB_DEPS])
1069 AC_SUBST([GL_PC_REQ_PRIV])
1070 AC_SUBST([GL_PC_LIB_PRIV])
1071 AC_SUBST([GL_PC_CFLAGS])
1072 AC_SUBST([DRI_PC_REQ_PRIV])
1073 AC_SUBST([GLESv1_CM_LIB_DEPS])
1074 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
1075 AC_SUBST([GLESv2_LIB_DEPS])
1076 AC_SUBST([GLESv2_PC_LIB_PRIV])
1077
1078 GLAPI_LIB_DEPS="-lpthread $SELINUX_LIBS"
1079 AC_SUBST([GLAPI_LIB_DEPS])
1080
1081
1082 dnl Setup default DRI CFLAGS
1083 DRI_CFLAGS='$(CFLAGS)'
1084 DRI_CXXFLAGS='$(CXXFLAGS)'
1085 DRI_LIB_DEPS='$(TOP)/src/mesa/libmesa.a'
1086 MESA_MODULES='$(TOP)/src/mesa/libmesa.a'
1087
1088 if test "x$enable_dri" = xyes && test "x$driglx_direct" = xyes ; then
1089     DRICORE_GLSL_LIBS='$(TOP)/$(LIB_DIR)/libglsl.so'
1090     DRICORE_LIBS='$(TOP)/$(LIB_DIR)/libdricore.so'
1091     DRICORE_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -lglsl'
1092     DRI_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore -lglsl'
1093     DRI_CFLAGS='$(CFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1094     DRI_CXXFLAGS='$(CXXFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1095     MESA_MODULES='$(DRICORE_LIBS) $(DRICORE_GLSL_LIBS)'
1096     HAVE_DRICORE=yes
1097 fi
1098 AM_CONDITIONAL(HAVE_DRICORE, test x$HAVE_DRICORE = xyes)
1099 AC_SUBST([DRICORE_LIBS])
1100 AC_SUBST([DRICORE_GLSL_LIBS])
1101 AC_SUBST([DRICORE_LIB_DEPS])
1102 AC_SUBST([DRI_CXXFLAGS])
1103 AC_SUBST([DRI_CFLAGS])
1104 AC_SUBST([MESA_MODULES])
1105
1106 AC_SUBST([HAVE_XF86VIDMODE])
1107
1108 dnl
1109 dnl More GLX setup
1110 dnl
1111 case "x$enable_glx$enable_xlib_glx" in
1112 xyesyes)
1113     DEFINES="$DEFINES -DUSE_XSHM"
1114     ;;
1115 xyesno)
1116     DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1117     if test "x$driglx_direct" = xyes; then
1118         DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1119     fi
1120     ;;
1121 esac
1122
1123 dnl
1124 dnl TLS detection
1125 dnl
1126
1127 AC_ARG_ENABLE([glx-tls],
1128     [AS_HELP_STRING([--enable-glx-tls],
1129         [enable TLS support in GLX @<:@default=disabled@:>@])],
1130     [GLX_USE_TLS="$enableval"],
1131     [GLX_USE_TLS=no])
1132 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
1133
1134 AS_IF([test "x$GLX_USE_TLS" = xyes],
1135       [DEFINES="${DEFINES} -DGLX_USE_TLS -DPTHREADS"])
1136
1137 dnl
1138 dnl More DRI setup
1139 dnl
1140 dnl Directory for DRI drivers
1141 AC_ARG_WITH([dri-driverdir],
1142     [AS_HELP_STRING([--with-dri-driverdir=DIR],
1143         [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
1144     [DRI_DRIVER_INSTALL_DIR="$withval"],
1145     [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
1146 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
1147 dnl Extra search path for DRI drivers
1148 AC_ARG_WITH([dri-searchpath],
1149     [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
1150         [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
1151     [DRI_DRIVER_SEARCH_DIR="$withval"],
1152     [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
1153 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
1154 dnl Which drivers to build - default is chosen by platform
1155 AC_ARG_WITH([dri-drivers],
1156     [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
1157         [comma delimited DRI drivers list, e.g.
1158         "swrast,i965,radeon" @<:@default=auto@:>@])],
1159     [with_dri_drivers="$withval"],
1160     [with_dri_drivers=yes])
1161 if test "x$with_dri_drivers" = x; then
1162     with_dri_drivers=no
1163 fi
1164
1165 dnl If $with_dri_drivers is yes, directories will be added through
1166 dnl platform checks
1167 DRI_DIRS=""
1168 case "$with_dri_drivers" in
1169 no) ;;
1170 yes)
1171     # classic DRI drivers require FEATURE_GL to build
1172     if test "x$enable_opengl" = xyes; then
1173         DRI_DIRS="yes"
1174     fi
1175     ;;
1176 *)
1177     # verify the requested driver directories exist
1178     dri_drivers=`IFS=', '; echo $with_dri_drivers`
1179     for driver in $dri_drivers; do
1180         test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
1181             AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
1182     done
1183     DRI_DIRS="$dri_drivers"
1184     if test -n "$DRI_DIRS" -a "x$enable_opengl" != xyes; then
1185         AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1186     fi
1187     ;;
1188 esac
1189
1190 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
1191 if test "x$enable_dri" = xyes; then
1192     # Platform specific settings and drivers to build
1193     case "$host_os" in
1194     linux*)
1195         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1196         DEFINES="$DEFINES -DHAVE_ALIAS"
1197
1198         case "$host_cpu" in
1199         x86_64)
1200             if test "x$DRI_DIRS" = "xyes"; then
1201                 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1202             fi
1203             ;;
1204         powerpc*)
1205             # Build only the drivers for cards that exist on PowerPC.
1206             if test "x$DRI_DIRS" = "xyes"; then
1207                 DRI_DIRS="r200 radeon swrast"
1208             fi
1209             ;;
1210         sparc*)
1211             # Build only the drivers for cards that exist on sparc
1212             if test "x$DRI_DIRS" = "xyes"; then
1213                 DRI_DIRS="r200 radeon swrast"
1214             fi
1215             ;;
1216         esac
1217         ;;
1218     freebsd* | dragonfly* | *netbsd*)
1219         DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
1220         DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
1221
1222         if test "x$DRI_DIRS" = "xyes"; then
1223             DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1224         fi
1225         ;;
1226     gnu*)
1227         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1228         DEFINES="$DEFINES -DHAVE_ALIAS"
1229         ;;
1230     solaris*)
1231         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1232         ;;
1233     cygwin*)
1234         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1235         if test "x$DRI_DIRS" = "xyes"; then
1236             DRI_DIRS="swrast"
1237         fi
1238         ;;
1239     esac
1240
1241     # default drivers
1242     if test "x$DRI_DIRS" = "xyes"; then
1243         DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1244     fi
1245
1246     DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/  */ /g'`
1247
1248     # Check for expat
1249     if test "x$enable_dri" = xyes; then
1250         EXPAT_INCLUDES=""
1251         EXPAT_LIB=-lexpat
1252         AC_ARG_WITH([expat],
1253             [AS_HELP_STRING([--with-expat=DIR],
1254                 [expat install directory])],[
1255             EXPAT_INCLUDES="-I$withval/include"
1256             CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
1257             LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
1258             EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
1259             ])
1260         AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
1261         save_LIBS="$LIBS"
1262         AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1263             [AC_MSG_ERROR([Expat required for DRI.])])
1264         LIBS="$save_LIBS"
1265     fi
1266
1267     # if we are building any dri driver other than swrast ...
1268     if test -n "$DRI_DIRS" -a x"$DRI_DIRS" != xswrast; then
1269         # ... libdrm is required
1270         if test "x$have_libdrm" != xyes; then
1271             AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
1272         fi
1273         # ... and build dricommon
1274         HAVE_COMMON_DRI=yes
1275     fi
1276
1277     # put all the necessary libs together
1278     DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
1279 fi
1280 AC_SUBST([DRI_DIRS])
1281 AC_SUBST([EXPAT_INCLUDES])
1282 AC_SUBST([DRI_LIB_DEPS])
1283
1284 case $DRI_DIRS in
1285 *i915*|*i965*)
1286     PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1287
1288     for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1289         case $d in
1290         i915)
1291             HAVE_I915_DRI=yes;
1292             ;;
1293         i965)
1294             HAVE_I965_DRI=yes;
1295             ;;
1296         esac
1297     done
1298
1299     ;;
1300 esac
1301
1302 case $DRI_DIRS in
1303 *nouveau*)
1304     PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED])
1305     HAVE_NOUVEAU_DRI=yes;
1306     ;;
1307 esac
1308
1309 case $DRI_DIRS in
1310 *radeon*|*r200*)
1311     PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1312
1313     for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1314         case $d in
1315         radeon)
1316             HAVE_RADEON_DRI=yes;
1317             ;;
1318         r200)
1319             HAVE_R200_DRI=yes;
1320             ;;
1321         esac
1322     done
1323
1324     ;;
1325 esac
1326
1327 case $DRI_DIRS in
1328 *swrast*)
1329     HAVE_SWRAST_DRI=yes;
1330     ;;
1331 esac
1332
1333 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
1334 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
1335 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
1336 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
1337 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
1338 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
1339 AM_CONDITIONAL(HAVE_COMMON_DRI, test x$HAVE_COMMON_DRI = xyes)
1340
1341 dnl
1342 dnl OSMesa configuration
1343 dnl
1344
1345 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1346 AC_ARG_WITH([osmesa-bits],
1347     [AS_HELP_STRING([--with-osmesa-bits=BITS],
1348         [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1349     [osmesa_bits="$withval"],
1350     [osmesa_bits=8])
1351 if test "x$osmesa_bits" != x8; then
1352     if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then
1353         AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1354         osmesa_bits=8
1355     fi
1356 fi
1357 case "x$osmesa_bits" in
1358 x8)
1359     OSMESA_LIB="${OSMESA_LIB}"
1360     ;;
1361 x16|x32)
1362     OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
1363     DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1364     ;;
1365 *)
1366     AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1367     ;;
1368 esac
1369
1370 if test "x$enable_osmesa" = xyes; then
1371     # only link libraries with osmesa if shared
1372     if test "$enable_static" = no; then
1373         OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1374     else
1375         OSMESA_LIB_DEPS=""
1376     fi
1377     OSMESA_MESA_DEPS=""
1378     OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1379 fi
1380 AC_SUBST([OSMESA_LIB_DEPS])
1381 AC_SUBST([OSMESA_MESA_DEPS])
1382 AC_SUBST([OSMESA_PC_REQ])
1383 AC_SUBST([OSMESA_PC_LIB_PRIV])
1384
1385 dnl
1386 dnl gbm configuration
1387 dnl
1388 if test "x$enable_gbm" = xauto; then
1389     case "$with_egl_platforms" in
1390         *drm*)
1391             enable_gbm=yes ;;
1392          *)
1393             enable_gbm=no ;;
1394     esac
1395 fi
1396 if test "x$enable_gbm" = xyes; then
1397     SRC_DIRS="$SRC_DIRS gbm"
1398
1399     PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1400                       AC_MSG_ERROR([gbm needs udev]))
1401
1402     if test "x$enable_dri" = xyes; then
1403         GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
1404         if test "$SHARED_GLAPI" -eq 0; then
1405             AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1406         fi
1407     fi
1408 fi
1409 GBM_PC_REQ_PRIV="libudev"
1410 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1411 AC_SUBST([GBM_PC_REQ_PRIV])
1412 AC_SUBST([GBM_PC_LIB_PRIV])
1413
1414 dnl
1415 dnl EGL configuration
1416 dnl
1417 EGL_CLIENT_APIS=""
1418
1419 if test "x$enable_egl" = xyes; then
1420     SRC_DIRS="$SRC_DIRS egl"
1421     EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS -lpthread"
1422
1423     AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1424
1425     if test "$enable_static" != yes; then
1426         # build egl_glx when libGL is built
1427         if test "x$enable_glx" = xyes; then
1428             HAVE_EGL_DRIVER_GLX=1
1429         fi
1430
1431         PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1432                           [have_libudev=yes],[have_libudev=no])
1433         if test "$have_libudev" = yes; then
1434             DEFINES="$DEFINES -DHAVE_LIBUDEV"
1435         fi
1436         if test "x$enable_dri" = xyes; then
1437             # build egl_dri2 when xcb-dri2 is available
1438             PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes],
1439                           [have_xcb_dri2=yes],[have_xcb_dri2=no])
1440             if test "$have_xcb_dri2" = yes; then
1441                 HAVE_EGL_DRIVER_DRI2=1
1442                 # workaround a bug in xcb-dri2 generated by xcb-proto 1.6
1443                 save_LIBS="$LIBS"
1444                 AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [],
1445                           [DEFINES="$DEFINES -DXCB_DRI2_CONNECT_DEVICE_NAME_BROKEN"])
1446                 LIBS="$save_LIBS"
1447             fi
1448         fi
1449
1450     fi
1451 fi
1452 AC_SUBST([EGL_LIB_DEPS])
1453
1454 dnl
1455 dnl EGL Gallium configuration
1456 dnl
1457 if test "x$enable_gallium_egl" = xyes; then
1458     if test "x$with_gallium_drivers" = x; then
1459         AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
1460     fi
1461     if test "x$enable_egl" = xno; then
1462         AC_MSG_ERROR([cannot enable egl_gallium without EGL])
1463     fi
1464     if test "x$have_libdrm" != xyes; then
1465         AC_MSG_ERROR([egl_gallium requires libdrm >= $LIBDRM_REQUIRED])
1466     fi
1467
1468     GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
1469     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static"
1470     HAVE_ST_EGL="yes"
1471 fi
1472
1473 dnl
1474 dnl gbm Gallium configuration
1475 dnl
1476 if test "x$enable_gallium_gbm" = xauto; then
1477     case "$enable_gbm$HAVE_ST_EGL$enable_dri$with_egl_platforms" in
1478         yesyesyes*drm*)
1479             enable_gallium_gbm=yes ;;
1480          *)
1481             enable_gallium_gbm=no ;;
1482     esac
1483 fi
1484 if test "x$enable_gallium_gbm" = xyes; then
1485     if test "x$with_gallium_drivers" = x; then
1486         AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
1487     fi
1488     if test "x$enable_gbm" = xno; then
1489         AC_MSG_ERROR([cannot enable gbm_gallium without gbm])
1490     fi
1491     # gbm_gallium abuses DRI_LIB_DEPS to link.  Make sure it is set.
1492     if test "x$enable_dri" = xno; then
1493         AC_MSG_ERROR([gbm_gallium requires --enable-dri to build])
1494     fi
1495
1496     GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS"
1497     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm"
1498     HAVE_ST_GBM="yes"
1499     enable_gallium_loader=yes
1500 fi
1501
1502 dnl
1503 dnl X.Org DDX configuration
1504 dnl
1505 if test "x$enable_xorg" = xyes; then
1506     PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1507     PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1508     PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1509     PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1510         HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1511         HAVE_XEXTPROTO_71="no")
1512     GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS"
1513     HAVE_ST_XORG=yes
1514 fi
1515
1516 dnl
1517 dnl XA configuration
1518 dnl
1519 if test "x$enable_xa" = xyes; then
1520 AC_PROG_AWK
1521 AC_PROG_GREP
1522 AC_CHECK_PROG(NM, nm, "nm")
1523 if test "x$AWK" = x || test "x$GREP" = x || test "x$NM" = x; then
1524 AC_MSG_WARN([Missing one of nm, grep or awk. Disabling xa.])
1525 enable_xa=no
1526 fi
1527 fi
1528 if test "x$enable_xa" = xyes; then
1529     GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS"
1530     HAVE_ST_XA=yes
1531     AC_SUBST(AWK)
1532     AC_SUBST(GREP)
1533     AC_SUBST(NM)
1534 fi
1535
1536 dnl
1537 dnl OpenVG configuration
1538 dnl
1539 VG_LIB_DEPS=""
1540
1541 if test "x$enable_openvg" = xyes; then
1542     if test "x$enable_egl" = xno; then
1543         AC_MSG_ERROR([cannot enable OpenVG without EGL])
1544     fi
1545     if test "x$with_gallium_drivers" = x; then
1546         AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1547     fi
1548     if test "x$enable_gallium_egl" = xno; then
1549         AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
1550     fi
1551
1552     EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1553     VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS -lpthread"
1554     CORE_DIRS="$CORE_DIRS mapi/vgapi"
1555     GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1556     HAVE_ST_VEGA=yes
1557 fi
1558
1559 dnl
1560 dnl D3D1X configuration
1561 dnl
1562
1563 if test "x$enable_d3d1x" = xyes; then
1564     if test "x$with_gallium_drivers" = x; then
1565         AC_MSG_ERROR([cannot enable D3D1X without Gallium])
1566     fi
1567
1568     GALLIUM_STATE_TRACKERS_DIRS="d3d1x $GALLIUM_STATE_TRACKERS_DIRS"
1569     HAVE_ST_D3D1X=yes
1570 fi
1571
1572 dnl
1573 dnl Gallium G3DVL configuration
1574 dnl
1575 AC_ARG_ENABLE([gallium-g3dvl],
1576     [AS_HELP_STRING([--enable-gallium-g3dvl],
1577         [build gallium g3dvl @<:@default=disabled@:>@])],
1578     [enable_gallium_g3dvl="$enableval"],
1579     [enable_gallium_g3dvl=no])
1580 if test "x$enable_gallium_g3dvl" = xyes; then
1581     if test "x$with_gallium_drivers" = x; then
1582         AC_MSG_ERROR([cannot enable G3DVL without Gallium])
1583     fi
1584
1585     if test "x$enable_xvmc" = xauto; then
1586         PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no])
1587     fi
1588
1589     if test "x$enable_vdpau" = xauto; then
1590         PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no])
1591     fi
1592
1593     if test "x$enable_va" = xauto; then
1594         #don't enable vaapi state tracker even if package exists
1595         #PKG_CHECK_EXISTS([libva], [enable_vdpau=yes], [enable_vdpau=no])
1596         enable_va=no
1597     fi
1598 fi
1599
1600 if test "x$enable_xvmc" = xyes; then
1601     PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6 x11-xcb xcb-dri2 >= 1.8])
1602     GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xvmc"
1603     HAVE_ST_XVMC="yes"
1604 fi
1605
1606 if test "x$enable_vdpau" = xyes; then
1607     PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.4.1 x11-xcb xcb-dri2 >= 1.8])
1608     GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau"
1609     HAVE_ST_VDPAU="yes"
1610 fi
1611
1612 if test "x$enable_va" = xyes; then
1613     PKG_CHECK_MODULES([LIBVA], [libva = 0.31.1 x11-xcb xcb-dri2 >= 1.8])
1614     AC_MSG_WARN([vaapi state tracker currently unmaintained])
1615     GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS va"
1616     HAVE_ST_VA="yes"
1617 fi
1618
1619 dnl
1620 dnl OpenCL configuration
1621 dnl
1622
1623 if test "x$enable_opencl" = xyes; then
1624     if test "x$with_gallium_drivers" = x; then
1625         AC_MSG_ERROR([cannot enable OpenCL without Gallium])
1626     fi
1627
1628     if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6; then
1629         AC_MSG_ERROR([gcc >= 4.6 is required to build clover])
1630     fi
1631
1632     GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS clover"
1633     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS opencl"
1634     enable_gallium_loader=yes
1635 fi
1636
1637 dnl
1638 dnl GLU configuration
1639 dnl
1640 AC_ARG_ENABLE([glu],
1641     [AS_HELP_STRING([--disable-glu],
1642         [enable OpenGL Utility library @<:@default=enabled@:>@])],
1643     [enable_glu="$enableval"],
1644     [enable_glu=yes])
1645
1646 if test "x$enable_glu" = xyes; then
1647     if test "x$enable_glx" = xno -a "x$enable_osmesa" = xno; then
1648         AC_MSG_NOTICE([Disabling GLU since there is no OpenGL driver])
1649         enable_glu=no
1650     fi
1651 fi
1652
1653 if test "x$enable_glu" = xyes; then
1654     SRC_DIRS="$SRC_DIRS glu"
1655
1656     if test "x$enable_glx" = xno; then
1657         # Link libGLU to libOSMesa instead of libGL
1658         GLU_LIB_DEPS=""
1659         GLU_PC_REQ="osmesa"
1660         if test "$enable_static" = no; then
1661             GLU_MESA_DEPS='-l$(OSMESA_LIB)'
1662         else
1663             GLU_MESA_DEPS=""
1664         fi
1665     else
1666         # If static, empty GLU_LIB_DEPS and add libs for programs to link
1667         GLU_PC_REQ="gl"
1668         GLU_PC_LIB_PRIV="-lm"
1669         if test "$enable_static" = no; then
1670             GLU_LIB_DEPS="-lm"
1671             GLU_MESA_DEPS='-l$(GL_LIB)'
1672         else
1673             GLU_LIB_DEPS=""
1674             GLU_MESA_DEPS=""
1675         fi
1676     fi
1677 fi
1678 if test "$enable_static" = no; then
1679     GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
1680 fi
1681 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
1682 AC_SUBST([GLU_LIB_DEPS])
1683 AC_SUBST([GLU_MESA_DEPS])
1684 AC_SUBST([GLU_PC_REQ])
1685 AC_SUBST([GLU_PC_REQ_PRIV])
1686 AC_SUBST([GLU_PC_LIB_PRIV])
1687 AC_SUBST([GLU_PC_CFLAGS])
1688
1689 AC_SUBST([PROGRAM_DIRS])
1690
1691 dnl
1692 dnl Gallium configuration
1693 dnl
1694 if test "x$with_gallium_drivers" != x; then
1695     SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
1696 fi
1697
1698 AC_SUBST([LLVM_BINDIR])
1699 AC_SUBST([LLVM_CFLAGS])
1700 AC_SUBST([LLVM_CXXFLAGS])
1701 AC_SUBST([LLVM_LIBS])
1702 AC_SUBST([LLVM_LDFLAGS])
1703 AC_SUBST([LLVM_INCLUDEDIR])
1704 AC_SUBST([LLVM_VERSION])
1705
1706 case "x$enable_opengl$enable_gles1$enable_gles2" in
1707 x*yes*)
1708     EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1709     ;;
1710 esac
1711
1712 AC_SUBST([VG_LIB_DEPS])
1713 AC_SUBST([EGL_CLIENT_APIS])
1714
1715 AC_ARG_WITH([egl-platforms],
1716     [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1717         [comma delimited native platforms libEGL supports, e.g.
1718         "x11,drm" @<:@default=auto@:>@])],
1719     [with_egl_platforms="$withval"],
1720     [if test "x$enable_egl" = xyes; then
1721         with_egl_platforms="x11"
1722     else
1723         with_egl_platforms=""
1724     fi])
1725
1726 EGL_PLATFORMS=""
1727
1728 if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
1729     AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1730 fi
1731
1732 # verify the requested driver directories exist
1733 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1734 for plat in $egl_platforms; do
1735         test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \
1736             AC_MSG_ERROR([EGL platform '$plat' does not exist])
1737         if test "$plat" = "fbdev"; then
1738                 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev"
1739         fi
1740         if test "$plat" = "null"; then
1741                 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
1742         fi
1743         if test "$plat" = "wayland"; then
1744                 PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-server],, \
1745                                   [AC_MSG_ERROR([cannot find libwayland-client])])
1746                 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
1747
1748                 m4_ifdef([WAYLAND_SCANNER_RULES],
1749                          [WAYLAND_SCANNER_RULES(['$(top_srcdir)/src/egl/wayland/wayland-drm/protocol'])])
1750         fi
1751         if test "$plat" = "drm" && test "x$enable_gbm" = "xno"; then
1752                 AC_MSG_ERROR([EGL platform drm needs gbm])
1753         fi
1754         case "$plat$have_libudev" in
1755                 waylandno|drmno)
1756                     AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;;
1757         esac
1758 done
1759
1760 # libEGL wants to default to the first platform specified in
1761 # ./configure.  parse that here.
1762 if test "x$egl_platforms" != "x"; then
1763     FIRST_PLATFORM_CAPS=`echo $egl_platforms | sed 's| .*||' | tr 'a-z' 'A-Z'`
1764     EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
1765 else
1766     EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
1767 fi
1768
1769 EGL_PLATFORMS="$egl_platforms"
1770
1771 AM_CONDITIONAL(HAVE_EGL_PLATFORM_X11, echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1)
1772 AM_CONDITIONAL(HAVE_EGL_PLATFORM_WAYLAND, echo "$egl_platforms" | grep 'wayland' >/dev/null 2>&1)
1773 AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep 'drm' >/dev/null 2>&1)
1774 AM_CONDITIONAL(HAVE_EGL_PLATFORM_FBDEV, echo "$egl_platforms" | grep 'fbdev' >/dev/null 2>&1)
1775 AM_CONDITIONAL(HAVE_EGL_PLATFORM_NULL, echo "$egl_platforms" | grep 'null' >/dev/null 2>&1)
1776
1777 AM_CONDITIONAL(HAVE_EGL_DRIVER_DRI2, test "x$HAVE_EGL_DRIVER_DRI2" != "x")
1778 AM_CONDITIONAL(HAVE_EGL_DRIVER_GLX, test "x$HAVE_EGL_DRIVER_GLX" != "x")
1779
1780 AC_SUBST([EGL_NATIVE_PLATFORM])
1781 AC_SUBST([EGL_PLATFORMS])
1782 AC_SUBST([EGL_CFLAGS])
1783
1784 AC_ARG_WITH([egl-driver-dir],
1785     [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1786                     [directory for EGL drivers [[default=${libdir}/egl]]])],
1787     [EGL_DRIVER_INSTALL_DIR="$withval"],
1788     [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1789 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1790
1791 AC_ARG_WITH([xorg-driver-dir],
1792     [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1793                     [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1794     [XORG_DRIVER_INSTALL_DIR="$withval"],
1795     [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1796 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1797
1798 AC_ARG_WITH([max-width],
1799     [AS_HELP_STRING([--with-max-width=N],
1800                     [Maximum framebuffer width (4096)])],
1801     [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1802      AS_IF([test "${withval}" -gt "4096"],
1803            [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1804 )
1805 AC_ARG_WITH([max-height],
1806     [AS_HELP_STRING([--with-max-height=N],
1807                     [Maximum framebuffer height (4096)])],
1808     [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1809      AS_IF([test "${withval}" -gt "4096"],
1810            [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1811 )
1812
1813 dnl
1814 dnl Gallium LLVM
1815 dnl
1816 AC_ARG_ENABLE([gallium-llvm],
1817     [AS_HELP_STRING([--enable-gallium-llvm],
1818         [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1819     [enable_gallium_llvm="$enableval"],
1820     [enable_gallium_llvm=auto])
1821
1822 AC_ARG_WITH([llvm-shared-libs],
1823     [AS_HELP_STRING([--with-llvm-shared-libs],
1824         [link with LLVM shared libraries @<:@default=disabled@:>@])],
1825     [with_llvm_shared_libs=yes],
1826     [with_llvm_shared_libs=no])
1827
1828 if test "x$with_gallium_drivers" = x; then
1829     enable_gallium_llvm=no
1830 fi
1831 if test "x$enable_gallium_llvm" = xauto; then
1832     case "$host_cpu" in
1833     i*86|x86_64) enable_gallium_llvm=yes;;
1834     esac
1835 fi
1836 if test "x$enable_gallium_llvm" = xyes; then
1837     AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1838
1839     if test "x$LLVM_CONFIG" != xno; then
1840         LLVM_VERSION=`$LLVM_CONFIG --version | sed 's/svn.*//g'`
1841         LLVM_CFLAGS=`$LLVM_CONFIG --cppflags|sed -e 's/-DNDEBUG\>//g' -e 's/-pedantic//g' -e 's/-Wcovered-switch-default//g'`
1842         if test "x$with_llvm_shared_libs" = xyes; then
1843             dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
1844             LLVM_LIBS="-lLLVM-`$LLVM_CONFIG --version`"
1845         else
1846             LLVM_LIBS="`$LLVM_CONFIG --libs engine bitwriter`"
1847         fi
1848         LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1849         LLVM_BINDIR=`$LLVM_CONFIG --bindir`
1850         LLVM_CXXFLAGS=`$LLVM_CONFIG --cxxflags`
1851         LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
1852         DEFINES="${DEFINES} -DHAVE_LLVM=`echo $LLVM_VERSION | sed -e 's/\([[0-9]]\)\.\([[0-9]]\)/0x0\10\2/g'`"
1853         MESA_LLVM=1
1854     else
1855         MESA_LLVM=0
1856     fi
1857 else
1858     MESA_LLVM=0
1859 fi
1860
1861 dnl Directory for XVMC libs
1862 AC_ARG_WITH([xvmc-libdir],
1863     [AS_HELP_STRING([--with-xvmc-libdir=DIR],
1864         [directory for the XVMC libraries @<:@default=${libdir}@:>@])],
1865     [XVMC_LIB_INSTALL_DIR="$withval"],
1866     [XVMC_LIB_INSTALL_DIR='${libdir}'])
1867 AC_SUBST([XVMC_LIB_INSTALL_DIR])
1868
1869 dnl
1870 dnl Gallium Tests
1871 dnl
1872 if test "x$enable_gallium_tests" = xyes; then
1873     SRC_DIRS="$SRC_DIRS gallium/tests/trivial"
1874     enable_gallium_loader=yes
1875 fi
1876
1877 dnl Directory for VDPAU libs
1878 AC_ARG_WITH([vdpau-libdir],
1879     [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1880         [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1881     [VDPAU_LIB_INSTALL_DIR="$withval"],
1882     [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1883 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
1884
1885 dnl Directory for VA libs
1886 AC_ARG_WITH([va-libdir],
1887     [AS_HELP_STRING([--with-va-libdir=DIR],
1888         [directory for the VA libraries @<:@default=${libdir}/va@:>@])],
1889     [VA_LIB_INSTALL_DIR="$withval"],
1890     [VA_LIB_INSTALL_DIR='${libdir}/va'])
1891 AC_SUBST([VA_LIB_INSTALL_DIR])
1892
1893 dnl Directory for OpenCL libs
1894 AC_ARG_WITH([opencl-libdir],
1895     [AS_HELP_STRING([--with-opencl-libdir=DIR],
1896         [directory for the OpenCL libraries @<:@default=${libdir}/opencl@:>@])],
1897     [OPENCL_LIB_INSTALL_DIR="$withval"],
1898     [OPENCL_LIB_INSTALL_DIR='${libdir}/opencl'])
1899 AC_SUBST([OPENCL_LIB_INSTALL_DIR])
1900
1901 dnl
1902 dnl Gallium helper functions
1903 dnl
1904 gallium_check_st() {
1905     if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes ||
1906          test "x$HAVE_ST_XA" = xyes || test "x$HAVE_ST_XVMC" = xyes ||
1907          test "x$HAVE_ST_VDPAU" = xyes || test "x$HAVE_ST_VA" = xyes; then
1908          if test "x$have_libdrm" != xyes; then
1909             AC_MSG_ERROR([DRI or Xorg DDX requires libdrm >= $LIBDRM_REQUIRED])
1910          fi
1911          GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1912     fi
1913     if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1914          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1915     fi
1916     if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
1917          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1918     fi
1919     if test "x$HAVE_ST_XA" = xyes && test "x$4" != x; then
1920          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
1921     fi
1922     if test "x$HAVE_ST_XVMC" = xyes && test "x$5" != x; then
1923          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5"
1924     fi
1925     if test "x$HAVE_ST_VDPAU" = xyes && test "x$6" != x; then
1926          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6"
1927     fi
1928     if test "x$HAVE_ST_VA" = xyes && test "x$7" != x; then
1929          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $7"
1930     fi
1931 }
1932
1933 gallium_require_llvm() {
1934     if test "x$MESA_LLVM" = x0; then
1935         case "$host_cpu" in
1936         i*86|x86_64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1937         esac
1938     fi
1939 }
1940
1941 gallium_require_drm_loader() {
1942     if test "x$enable_gallium_loader" = xyes; then
1943         PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1944                           AC_MSG_ERROR([Gallium drm loader requrires libudev]))
1945         if test "x$have_libdrm" != xyes; then
1946             AC_MSG_ERROR([Gallium drm loader requires libdrm >= $LIBDRM_REQUIRED])
1947         fi
1948         enable_gallium_drm_loader=yes
1949     fi
1950 }
1951
1952 dnl Gallium drivers
1953 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
1954 if test "x$with_gallium_drivers" != x; then
1955     gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1956     for driver in $gallium_drivers; do
1957         case "x$driver" in
1958         xsvga)
1959             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
1960             gallium_check_st "svga/drm" "dri-vmwgfx" "" "xa-vmwgfx"
1961             ;;
1962         xi915)
1963             PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1964             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe"
1965             if test "x$MESA_LLVM" = x1; then
1966                 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1967             fi
1968             GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1969             gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1970             ;;
1971         xr300)
1972             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1973             gallium_require_llvm "Gallium R300"
1974             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1975             gallium_check_st "radeon/drm" "dri-r300" "xorg-r300" "" "xvmc-r300" "vdpau-r300" "va-r300"
1976             ;;
1977         xr600)
1978             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1979             gallium_require_drm_loader
1980             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1981             if test "x$enable_r600_llvm" = xyes; then
1982                 if test "x$LLVM_VERSION" != "x3.1"; then
1983                     AC_MSG_ERROR([LLVM 3.1 is required for the r600 llvm compiler.])
1984                 fi
1985                 NEED_RADEON_GALLIUM=yes;
1986                 USE_R600_LLVM_COMPILER=yes;
1987             fi
1988             gallium_check_st "radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600" "va-r600"
1989             ;;
1990         xradeonsi)
1991             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1992             gallium_require_drm_loader
1993             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS radeonsi"
1994             if test "x$LLVM_VERSION" != "x3.1"; then
1995                 AC_MSG_ERROR([LLVM 3.1 is required to build the radeonsi driver.])
1996             fi
1997             NEED_RADEON_GALLIUM=yes;
1998             gallium_check_st "radeon/drm" "dri-radeonsi" "xorg-radeonsi"
1999             ;;
2000         xnouveau)
2001             PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
2002             gallium_require_drm_loader
2003             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nv30 nv50 nvc0"
2004             gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau" "" "xvmc-nouveau" "vdpau-nouveau"
2005             ;;
2006         xswrast)
2007             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe"
2008             if test "x$MESA_LLVM" = x1; then
2009                 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
2010             fi
2011
2012             if test "x$HAVE_ST_DRI" = xyes; then
2013                 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
2014             fi
2015             if test "x$HAVE_ST_VDPAU" = xyes; then
2016                 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS vdpau-softpipe"
2017             fi
2018             if test "x$HAVE_ST_XVMC" = xyes; then
2019                 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS xvmc-softpipe"
2020             fi
2021             if test "x$HAVE_ST_VA" = xyes; then
2022                 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS va-softpipe"
2023             fi
2024             if test "x$HAVE_ST_VDPAU" = xyes ||
2025                test "x$HAVE_ST_XVMC" = xyes ||
2026                test "x$HAVE_ST_VA" = xyes; then
2027                if test "x$HAVE_WINSYS_XLIB" != xyes; then
2028                   GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
2029                fi
2030             fi
2031             ;;
2032         *)
2033             AC_MSG_ERROR([Unknown Gallium driver: $driver])
2034             ;;
2035         esac
2036     done
2037 fi
2038
2039 if test "x$enable_gallium_loader" = xyes; then
2040     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
2041     GALLIUM_PIPE_LOADER_DEFINES="-DHAVE_PIPE_LOADER_SW"
2042     GALLIUM_PIPE_LOADER_LIBS="\$(TOP)/src/gallium/auxiliary/pipe-loader/libpipe_loader.a"
2043     GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS \$(TOP)/src/gallium/winsys/sw/null/libws_null.a"
2044
2045     if test "x$HAVE_WINSYS_XLIB" = xyes; then
2046         GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_XLIB"
2047         GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS \$(TOP)/src/gallium/winsys/sw/xlib/libws_xlib.a"
2048     fi
2049
2050     if test "x$enable_gallium_drm_loader" = xyes; then
2051         GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRM"
2052     fi
2053
2054     AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
2055     AC_SUBST([GALLIUM_PIPE_LOADER_LIBS])
2056 fi
2057
2058 dnl Tell Automake which drivers to build
2059 for driver in $GALLIUM_DRIVERS_DIRS; do
2060     case "x$driver" in
2061         xgalahad)
2062             HAVE_GALAHAD_GALLIUM=yes;
2063             ;;
2064         xidentity)
2065             HAVE_IDENTITY_GALLIUM=yes;
2066             ;;
2067         xnoop)
2068             HAVE_NOOP_GALLIUM=yes;
2069             ;;
2070         *)
2071             GALLIUM_MAKE_DIRS="$GALLIUM_MAKE_DIRS $driver"
2072             ;;
2073     esac
2074 done
2075
2076 AM_CONDITIONAL(HAVE_GALAHAD_GALLIUM, test x$HAVE_GALAHAD_GALLIUM = xyes)
2077 AM_CONDITIONAL(HAVE_IDENTITY_GALLIUM, test x$HAVE_IDENTITY_GALLIUM = xyes)
2078 AM_CONDITIONAL(HAVE_NOOP_GALLIUM, test x$HAVE_NOOP_GALLIUM = xyes)
2079 AM_CONDITIONAL(NEED_RADEON_GALLIUM, test x$NEED_RADEON_GALLIUM = xyes)
2080 AM_CONDITIONAL(USE_R600_LLVM_COMPILER, test x$USE_R600_LLVM_COMPILER = xyes)
2081 AM_CONDITIONAL(HAVE_LOADER_GALLIUM, test x$enable_gallium_loader = xyes)
2082 AM_CONDITIONAL(HAVE_DRM_LOADER_GALLIUM, test x$enable_gallium_drm_loader = xyes)
2083 AC_SUBST([GALLIUM_MAKE_DIRS])
2084
2085 AM_CONDITIONAL(HAVE_X11_DRIVER, echo "$DRIVER_DIRS" | grep 'x11' >/dev/null 2>&1)
2086 AM_CONDITIONAL(HAVE_DRI_DRIVER, echo "$DRIVER_DIRS" | grep 'dri' >/dev/null 2>&1)
2087 AM_CONDITIONAL(HAVE_OSMESA_DRIVER, echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1)
2088
2089 AM_CONDITIONAL(HAVE_X86_ASM, echo "$ASM_FLAGS" | grep 'X86_ASM' >/dev/null 2>&1)
2090 AM_CONDITIONAL(HAVE_X86_64_ASM, echo "$ASM_FLAGS" | grep 'X86_64_ASM' >/dev/null 2>&1)
2091 AM_CONDITIONAL(HAVE_SPARC_ASM, echo "$ASM_FLAGS" | grep 'SPARC_ASM' >/dev/null 2>&1)
2092
2093 dnl prepend CORE_DIRS to SRC_DIRS
2094 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
2095
2096 dnl Restore LDFLAGS and CPPFLAGS
2097 LDFLAGS="$_SAVE_LDFLAGS"
2098 CPPFLAGS="$_SAVE_CPPFLAGS"
2099
2100 dnl Add user CFLAGS and CXXFLAGS
2101 CFLAGS="$CFLAGS $USER_CFLAGS"
2102 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
2103
2104 dnl Substitute the config
2105 AC_CONFIG_FILES([configs/autoconf
2106                 src/gallium/auxiliary/pipe-loader/Makefile
2107                 src/gallium/state_trackers/clover/Makefile
2108                 src/gallium/drivers/Makefile
2109                 src/gallium/drivers/r300/Makefile
2110                 src/gallium/drivers/r600/Makefile
2111                 src/gallium/targets/opencl/Makefile
2112                 src/gbm/Makefile
2113                 src/gbm/main/gbm.pc
2114                 src/egl/drivers/Makefile
2115                 src/egl/drivers/dri2/Makefile
2116                 src/egl/drivers/glx/Makefile
2117                 src/egl/main/Makefile
2118                 src/egl/main/egl.pc
2119                 src/egl/wayland/Makefile
2120                 src/egl/wayland/wayland-egl/Makefile
2121                 src/egl/wayland/wayland-egl/wayland-egl.pc
2122                 src/egl/wayland/wayland-drm/Makefile
2123                 src/glsl/tests/Makefile
2124                 src/glx/Makefile
2125                 src/mapi/shared-glapi/Makefile
2126                 src/gtest/Makefile
2127                 src/mesa/libdricore/Makefile
2128                 src/mesa/drivers/dri/dri.pc
2129                 src/mesa/drivers/dri/Makefile
2130                 src/mesa/drivers/dri/common/Makefile
2131                 src/mesa/drivers/dri/i915/Makefile
2132                 src/mesa/drivers/dri/i965/Makefile
2133                 src/mesa/drivers/dri/nouveau/Makefile
2134                 src/mesa/drivers/dri/r200/Makefile
2135                 src/mesa/drivers/dri/radeon/Makefile
2136                 src/mesa/drivers/dri/swrast/Makefile
2137                 tests/Makefile
2138                 tests/glx/Makefile])
2139
2140 dnl Replace the configs/current symlink
2141 AC_CONFIG_COMMANDS([configs],[
2142 if test -f configs/current || test -L configs/current; then
2143     rm -f configs/current
2144 fi
2145 ln -s autoconf configs/current
2146 ])
2147
2148 dnl Sort the dirs alphabetically
2149 GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2150 GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2151 GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2152 GALLIUM_MAKE_DIRS=`echo $GALLIUM_MAKE_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2153 GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2154
2155 AC_OUTPUT
2156
2157 dnl
2158 dnl Output some configuration info for the user
2159 dnl
2160 echo ""
2161 echo "        prefix:          $prefix"
2162 echo "        exec_prefix:     $exec_prefix"
2163 echo "        libdir:          $libdir"
2164 echo "        includedir:      $includedir"
2165
2166 dnl API info
2167 echo ""
2168 echo "        OpenGL:          $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
2169 echo "        OpenVG:          $enable_openvg"
2170
2171 dnl Driver info
2172 echo ""
2173 if test "x$enable_osmesa" != xno; then
2174         echo "        OSMesa:          lib$OSMESA_LIB"
2175 else
2176         echo "        OSMesa:          no"
2177 fi
2178
2179 if test "x$enable_dri" != xno; then
2180         # cleanup the drivers var
2181         dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/  */ /;s/ *$//'`
2182         if test "x$DRI_DIRS" = x; then
2183             echo "        DRI drivers:     no"
2184         else
2185             echo "        DRI drivers:     $dri_dirs"
2186         fi
2187         echo "        DRI driver dir:  $DRI_DRIVER_INSTALL_DIR"
2188 fi
2189
2190 case "x$enable_glx$enable_xlib_glx" in
2191 xyesyes)
2192     echo "        GLX:             Xlib-based"
2193     ;;
2194 xyesno)
2195     echo "        GLX:             DRI-based"
2196     ;;
2197 *)
2198     echo "        GLX:             $enable_glx"
2199     ;;
2200 esac
2201
2202 echo ""
2203 echo "        GLU:             $enable_glu"
2204
2205 dnl EGL
2206 echo ""
2207 echo "        EGL:             $enable_egl"
2208 if test "$enable_egl" = yes; then
2209     echo "        EGL platforms:   $EGL_PLATFORMS"
2210
2211     egl_drivers=""
2212     if test "x$HAVE_EGL_DRIVER_GLX" != "x"; then
2213         egl_drivers="$egl_drivers builtin:egl_glx"
2214     fi
2215     if test "x$HAVE_EGL_DRIVER_DRI2" != "x"; then
2216         egl_drivers="$egl_drivers builtin:egl_dri2"
2217     fi
2218
2219     if test "x$HAVE_ST_EGL" = xyes; then
2220         echo "        EGL drivers:    ${egl_drivers} egl_gallium"
2221         echo "        EGL Gallium STs:$EGL_CLIENT_APIS"
2222     else
2223         echo "        EGL drivers:    $egl_drivers"
2224     fi
2225 fi
2226
2227 echo ""
2228 if test "x$MESA_LLVM" = x1; then
2229     echo "        llvm:            yes"
2230     echo "        llvm-config:     $LLVM_CONFIG"
2231     echo "        llvm-version:    $LLVM_VERSION"
2232 else
2233     echo "        llvm:            no"
2234 fi
2235
2236 echo ""
2237 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
2238     echo "        Gallium:         yes"
2239     echo "        Gallium dirs:    $GALLIUM_DIRS"
2240     echo "        Target dirs:     $GALLIUM_TARGET_DIRS"
2241     echo "        Winsys dirs:     $GALLIUM_WINSYS_DIRS"
2242     echo "        Driver dirs:     $GALLIUM_DRIVERS_DIRS"
2243     echo "        Trackers dirs:   $GALLIUM_STATE_TRACKERS_DIRS"
2244 else
2245     echo "        Gallium:         no"
2246 fi
2247
2248
2249 dnl Libraries
2250 echo ""
2251 echo "        Shared libs:     $enable_shared"
2252 echo "        Static libs:     $enable_static"
2253
2254 dnl Compiler options
2255 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2256 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2257     $SED 's/^ *//;s/  */ /;s/ *$//'`
2258 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2259     $SED 's/^ *//;s/  */ /;s/ *$//'`
2260 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/  */ /;s/ *$//'`
2261 echo ""
2262 echo "        CFLAGS:          $cflags"
2263 echo "        CXXFLAGS:        $cxxflags"
2264 echo "        Macros:          $defines"
2265 echo ""
2266 echo "        PYTHON2:         $PYTHON2"
2267
2268 echo ""
2269 echo "        Run '${MAKE-make}' to build Mesa"
2270 echo ""