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