OSDN Git Service

clover: Fix region size error checking in some buffer transfer commands.
[android-x86/external-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 m4_define(MESA_VERSION, m4_normalize(m4_include(VERSION)))
10 AC_INIT([Mesa], [MESA_VERSION],
11     [https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa])
12 AC_CONFIG_AUX_DIR([bin])
13 AC_CONFIG_MACRO_DIR([m4])
14 AC_CANONICAL_SYSTEM
15 AM_INIT_AUTOMAKE([foreign])
16
17 # Support silent build rules, requires at least automake-1.11. Disable
18 # by either passing --disable-silent-rules to configure or passing V=1
19 # to make
20 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])],
21     [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])])
22
23 m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
24
25 dnl Set internal versions
26 OSMESA_VERSION=8
27 AC_SUBST([OSMESA_VERSION])
28
29 dnl Versions for external dependencies
30 LIBDRM_REQUIRED=2.4.38
31 LIBDRM_RADEON_REQUIRED=2.4.50
32 LIBDRM_INTEL_REQUIRED=2.4.52
33 LIBDRM_NVVIEUX_REQUIRED=2.4.33
34 LIBDRM_NOUVEAU_REQUIRED="2.4.33 libdrm >= 2.4.41"
35 LIBDRM_FREEDRENO_REQUIRED=2.4.51
36 DRI2PROTO_REQUIRED=2.6
37 DRI3PROTO_REQUIRED=1.0
38 PRESENTPROTO_REQUIRED=1.0
39 LIBUDEV_REQUIRED=151
40 GLPROTO_REQUIRED=1.4.14
41 LIBOMXIL_BELLAGIO_REQUIRED=0.0
42 VDPAU_REQUIRED=0.4.1
43 WAYLAND_REQUIRED=1.2.0
44 XCBDRI2_REQUIRED=1.8
45 XCBGLX_REQUIRED=1.8.1
46 XSHMFENCE_REQUIRED=1.1
47 XVMC_REQUIRED=1.0.6
48
49 dnl Check for progs
50 AC_PROG_CPP
51 AC_PROG_CC
52 AC_PROG_CXX
53 AM_PROG_CC_C_O
54 AM_PROG_AS
55 AC_CHECK_PROGS([MAKE], [gmake make])
56 AC_CHECK_PROGS([PYTHON2], [python2 python])
57 AX_PYTHON_MODULE([libxml2], [needed])
58 AC_PROG_SED
59 AC_PROG_MKDIR_P
60
61 LT_PREREQ([2.2])
62 LT_INIT([disable-static])
63
64 AX_PROG_BISON([],
65               AS_IF([test ! -f "$srcdir/src/glsl/glcpp/glcpp-parse.c"],
66                     [AC_MSG_ERROR([bison not found - unable to compile glcpp-parse.y])]))
67 AX_PROG_FLEX([],
68              AS_IF([test ! -f "$srcdir/src/glsl/glcpp/glcpp-lex.c"],
69                    [AC_MSG_ERROR([flex not found - unable to compile glcpp-lex.l])]))
70
71 AC_PATH_PROG([PERL], [perl])
72
73 AC_CHECK_PROG(INDENT, indent, indent, cat)
74 if test "x$INDENT" != "xcat"; then
75     AC_SUBST(INDENT_FLAGS, '-i4 -nut -br -brs -npcs -ce -TGLubyte -TGLbyte -TBool')
76 fi
77
78 AC_PROG_INSTALL
79
80 dnl We need a POSIX shell for parts of the build. Assume we have one
81 dnl in most cases.
82 case "$host_os" in
83 solaris*)
84     # Solaris /bin/sh is too old/non-POSIX compliant
85     AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
86     SHELL="$POSIX_SHELL"
87     ;;
88 esac
89
90 dnl clang is mostly GCC-compatible, but its version is much lower,
91 dnl so we have to check for it.
92 AC_MSG_CHECKING([if compiling with clang])
93
94 AC_COMPILE_IFELSE(
95 [AC_LANG_PROGRAM([], [[
96 #ifndef __clang__
97        not clang
98 #endif
99 ]])],
100 [acv_mesa_CLANG=yes], [acv_mesa_CLANG=no])
101
102 AC_MSG_RESULT([$acv_mesa_CLANG])
103
104 dnl If we're using GCC, make sure that it is at least version 3.3.0.  Older
105 dnl versions are explictly not supported.
106 GEN_ASM_OFFSETS=no
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
125     if test "x$cross_compiling" = xyes; then
126         GEN_ASM_OFFSETS=yes
127     fi
128 fi
129
130 dnl Check for compiler builtins
131 AX_GCC_BUILTIN([__builtin_bswap32])
132 AX_GCC_BUILTIN([__builtin_bswap64])
133
134 AM_CONDITIONAL([GEN_ASM_OFFSETS], test "x$GEN_ASM_OFFSETS" = xyes)
135
136 dnl Make sure the pkg-config macros are defined
137 m4_ifndef([PKG_PROG_PKG_CONFIG],
138     [m4_fatal([Could not locate the pkg-config autoconf macros.
139   These are usually located in /usr/share/aclocal/pkg.m4. If your macros
140   are in a different location, try setting the environment variable
141   ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
142 PKG_PROG_PKG_CONFIG()
143
144 dnl LIB_DIR - library basename
145 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
146 AC_SUBST([LIB_DIR])
147
148 dnl Cache LDFLAGS and CPPFLAGS so we can add to them and restore later
149 _SAVE_LDFLAGS="$LDFLAGS"
150 _SAVE_CPPFLAGS="$CPPFLAGS"
151
152 dnl Compiler macros
153 DEFINES=""
154 AC_SUBST([DEFINES])
155 case "$host_os" in
156 linux*|*-gnu*|gnu*)
157     DEFINES="$DEFINES -D_GNU_SOURCE -DHAVE_PTHREAD"
158     ;;
159 solaris*)
160     DEFINES="$DEFINES -DHAVE_PTHREAD -DSVR4"
161     ;;
162 cygwin*)
163     DEFINES="$DEFINES -DHAVE_PTHREAD"
164     ;;
165 esac
166
167 dnl Add flags for gcc and g++
168 if test "x$GCC" = xyes; then
169     case "$host_os" in
170     cygwin*)
171         CFLAGS="$CFLAGS -Wall -std=gnu99"
172         ;;
173     *)
174         CFLAGS="$CFLAGS -Wall -std=c99"
175         ;;
176     esac
177
178     # Enable -Werror=implicit-function-declaration and
179     # -Werror=missing-prototypes, if available, or otherwise, just
180     # -Wmissing-prototypes.  This is particularly useful to avoid
181     # generating a loadable driver module that has undefined symbols.
182     save_CFLAGS="$CFLAGS"
183     AC_MSG_CHECKING([whether $CC supports -Werror=missing-prototypes])
184     CFLAGS="$CFLAGS -Werror=implicit-function-declaration"
185     CFLAGS="$CFLAGS -Werror=missing-prototypes"
186     AC_LINK_IFELSE([AC_LANG_PROGRAM()],
187                    AC_MSG_RESULT([yes]),
188                    [CFLAGS="$save_CFLAGS -Wmissing-prototypes";
189                     AC_MSG_RESULT([no])]);
190
191     # Enable -fvisibility=hidden if using a gcc that supports it
192     save_CFLAGS="$CFLAGS"
193     AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
194     VISIBILITY_CFLAGS="-fvisibility=hidden"
195     CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
196     AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
197                    [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
198
199     # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
200     CFLAGS=$save_CFLAGS
201
202     # Work around aliasing bugs - developers should comment this out
203     CFLAGS="$CFLAGS -fno-strict-aliasing"
204
205     # gcc's builtin memcmp is slower than glibc's
206     # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
207     CFLAGS="$CFLAGS -fno-builtin-memcmp"
208 fi
209 if test "x$GXX" = xyes; then
210     CXXFLAGS="$CXXFLAGS -Wall"
211
212     # Enable -fvisibility=hidden if using a gcc that supports it
213     save_CXXFLAGS="$CXXFLAGS"
214     AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
215     VISIBILITY_CXXFLAGS="-fvisibility=hidden"
216     CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
217     AC_LANG_PUSH([C++])
218     AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
219                    [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
220     AC_LANG_POP([C++])
221
222     # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
223     CXXFLAGS=$save_CXXFLAGS
224
225     # Work around aliasing bugs - developers should comment this out
226     CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
227
228     # gcc's builtin memcmp is slower than glibc's
229     # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
230     CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp"
231 fi
232
233 dnl even if the compiler appears to support it, using visibility attributes isn't
234 dnl going to do anything useful currently on cygwin apart from emit lots of warnings
235 case "$host_os" in
236 cygwin*)
237     VISIBILITY_CFLAGS=""
238     VISIBILITY_CXXFLAGS=""
239     ;;
240 esac
241
242 AC_SUBST([VISIBILITY_CFLAGS])
243 AC_SUBST([VISIBILITY_CXXFLAGS])
244
245 dnl
246 dnl Optional flags, check for compiler support
247 dnl
248 AX_CHECK_COMPILE_FLAG([-msse4.1], [SSE41_SUPPORTED=1], [SSE41_SUPPORTED=0])
249 AM_CONDITIONAL([SSE41_SUPPORTED], [test x$SSE41_SUPPORTED = x1])
250
251 dnl
252 dnl Hacks to enable 32 or 64 bit build
253 dnl
254 AC_ARG_ENABLE([32-bit],
255     [AS_HELP_STRING([--enable-32-bit],
256         [build 32-bit libraries @<:@default=auto@:>@])],
257     [enable_32bit="$enableval"],
258     [enable_32bit=auto]
259 )
260 if test "x$enable_32bit" = xyes; then
261     if test "x$GCC" = xyes; then
262         CFLAGS="$CFLAGS -m32"
263         CCASFLAGS="$CCASFLAGS -m32"
264     fi
265     if test "x$GXX" = xyes; then
266         CXXFLAGS="$CXXFLAGS -m32"
267     fi
268 fi
269 AC_ARG_ENABLE([64-bit],
270     [AS_HELP_STRING([--enable-64-bit],
271         [build 64-bit libraries @<:@default=auto@:>@])],
272     [enable_64bit="$enableval"],
273     [enable_64bit=auto]
274 )
275 if test "x$enable_64bit" = xyes; then
276     if test "x$GCC" = xyes; then
277         CFLAGS="$CFLAGS -m64"
278     fi
279     if test "x$GXX" = xyes; then
280         CXXFLAGS="$CXXFLAGS -m64"
281     fi
282 fi
283
284 dnl Can't have static and shared libraries, default to static if user
285 dnl explicitly requested. If both disabled, set to static since shared
286 dnl was explicitly requested.
287 case "x$enable_static$enable_shared" in
288 xnoyes )
289     ;;
290 * )
291     AC_MSG_WARN([Messa build supports only shared libraries, enabling shared])
292     enable_shared=yes
293     enable_static=no
294     ;;
295 esac
296
297 dnl
298 dnl other compiler options
299 dnl
300 AC_ARG_ENABLE([debug],
301     [AS_HELP_STRING([--enable-debug],
302         [use debug compiler flags and macros @<:@default=disabled@:>@])],
303     [enable_debug="$enableval"],
304     [enable_debug=no]
305 )
306 if test "x$enable_debug" = xyes; then
307     DEFINES="$DEFINES -DDEBUG"
308     if test "x$GCC" = xyes; then
309         CFLAGS="$CFLAGS -g -O0"
310     fi
311     if test "x$GXX" = xyes; then
312         CXXFLAGS="$CXXFLAGS -g -O0"
313     fi
314 fi
315
316 dnl
317 dnl compatibility symlinks
318 dnl
319 case "$host_os" in
320 linux* )
321     HAVE_COMPAT_SYMLINKS=yes ;;
322 * )
323     HAVE_COMPAT_SYMLINKS=no ;;
324 esac
325
326 AM_CONDITIONAL(HAVE_COMPAT_SYMLINKS, test "x$HAVE_COMPAT_SYMLINKS" = xyes)
327
328 dnl
329 dnl library names
330 dnl
331 case "$host_os" in
332 darwin* )
333     LIB_EXT='dylib' ;;
334 cygwin* )
335     LIB_EXT='dll' ;;
336 aix* )
337     LIB_EXT='a' ;;
338 * )
339     LIB_EXT='so' ;;
340 esac
341
342 AC_SUBST([LIB_EXT])
343
344 AC_ARG_WITH([gl-lib-name],
345   [AS_HELP_STRING([--with-gl-lib-name@<:@=NAME@:>@],
346     [specify GL library name @<:@default=GL@:>@])],
347   [GL_LIB=$withval],
348   [GL_LIB=GL])
349 AC_ARG_WITH([osmesa-lib-name],
350   [AS_HELP_STRING([--with-osmesa-lib-name@<:@=NAME@:>@],
351     [specify OSMesa library name @<:@default=OSMesa@:>@])],
352   [OSMESA_LIB=$withval],
353   [OSMESA_LIB=OSMesa])
354 AS_IF([test "x$GL_LIB" = xyes], [GL_LIB=GL])
355 AS_IF([test "x$OSMESA_LIB" = xyes], [OSMESA_LIB=OSMesa])
356
357 dnl
358 dnl Mangled Mesa support
359 dnl
360 AC_ARG_ENABLE([mangling],
361   [AS_HELP_STRING([--enable-mangling],
362     [enable mangled symbols and library name @<:@default=disabled@:>@])],
363   [enable_mangling="${enableval}"],
364   [enable_mangling=no]
365 )
366 if test "x${enable_mangling}" = "xyes" ; then
367   DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
368   GL_LIB="Mangled${GL_LIB}"
369   OSMESA_LIB="Mangled${OSMESA_LIB}"
370 fi
371 AC_SUBST([GL_LIB])
372 AC_SUBST([OSMESA_LIB])
373
374 dnl
375 dnl potentially-infringing-but-nobody-knows-for-sure stuff
376 dnl
377 AC_ARG_ENABLE([texture-float],
378     [AS_HELP_STRING([--enable-texture-float],
379         [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
380     [enable_texture_float="$enableval"],
381     [enable_texture_float=no]
382 )
383 if test "x$enable_texture_float" = xyes; then
384     AC_MSG_WARN([Floating-point textures enabled.])
385     AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
386     DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
387 fi
388
389 dnl
390 dnl Arch/platform-specific settings
391 dnl
392 AC_ARG_ENABLE([asm],
393     [AS_HELP_STRING([--disable-asm],
394         [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
395     [enable_asm="$enableval"],
396     [enable_asm=yes]
397 )
398 asm_arch=""
399 AC_MSG_CHECKING([whether to enable assembly])
400 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
401 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
402 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
403     case "$host_cpu" in
404     i?86 | x86_64 | amd64)
405         enable_asm=no
406         AC_MSG_RESULT([no, cross compiling])
407         ;;
408     esac
409 fi
410 # check for supported arches
411 if test "x$enable_asm" = xyes; then
412     case "$host_cpu" in
413     i?86)
414         case "$host_os" in
415         linux* | *freebsd* | dragonfly* | *netbsd* | openbsd*)
416             test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
417             ;;
418         gnu*)
419             asm_arch=x86
420             ;;
421         esac
422         ;;
423     x86_64|amd64)
424         case "$host_os" in
425         linux* | *freebsd* | dragonfly* | *netbsd* | openbsd*)
426             test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
427             ;;
428         esac
429         ;;
430     sparc*)
431         case "$host_os" in
432         linux*)
433             asm_arch=sparc
434             ;;
435         esac
436         ;;
437     esac
438
439     case "$asm_arch" in
440     x86)
441         DEFINES="$DEFINES -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
442         AC_MSG_RESULT([yes, x86])
443         ;;
444     x86_64|amd64)
445         DEFINES="$DEFINES -DUSE_X86_64_ASM"
446         AC_MSG_RESULT([yes, x86_64])
447         ;;
448     sparc)
449         DEFINES="$DEFINES -DUSE_SPARC_ASM"
450         AC_MSG_RESULT([yes, sparc])
451         ;;
452     *)
453         AC_MSG_RESULT([no, platform not supported])
454         ;;
455     esac
456 fi
457
458 dnl Check to see if dlopen is in default libraries (like Solaris, which
459 dnl has it in libc), or if libdl is needed to get it.
460 AC_CHECK_FUNC([dlopen], [DEFINES="$DEFINES -DHAVE_DLOPEN"],
461     [AC_CHECK_LIB([dl], [dlopen],
462        [DEFINES="$DEFINES -DHAVE_DLOPEN"; DLOPEN_LIBS="-ldl"])])
463 AC_SUBST([DLOPEN_LIBS])
464
465 case "$host_os" in
466 darwin*|mingw*)
467     ;;
468 *)
469     AC_CHECK_FUNCS([clock_gettime], [CLOCK_LIB=],
470                    [AC_CHECK_LIB([rt], [clock_gettime], [CLOCK_LIB=-lrt],
471                                  [AC_MSG_ERROR([Couldn't find clock_gettime])])])
472     AC_SUBST([CLOCK_LIB])
473     ;;
474 esac
475
476 dnl See if posix_memalign is available
477 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
478
479 dnl Check for pthreads
480 AX_PTHREAD
481 dnl AX_PTHREADS leaves PTHREAD_LIBS empty for gcc and sets PTHREAD_CFLAGS
482 dnl to -pthread, which causes problems if we need -lpthread to appear in
483 dnl pkgconfig files.
484 test -z "$PTHREAD_LIBS" && PTHREAD_LIBS="-lpthread"
485
486 dnl SELinux awareness.
487 AC_ARG_ENABLE([selinux],
488     [AS_HELP_STRING([--enable-selinux],
489         [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
490     [MESA_SELINUX="$enableval"],
491     [MESA_SELINUX=no])
492 if test "x$enable_selinux" = "xyes"; then
493     PKG_CHECK_MODULES([SELINUX], [libselinux], [],
494         [AC_CHECK_HEADER([selinux/selinux.h],[],
495                          [AC_MSG_ERROR([SELinux headers not found])])
496          AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
497                       [AC_MSG_ERROR([SELinux library not found])])
498          SELINUX_LIBS="-lselinux"])
499     DEFINES="$DEFINES -DMESA_SELINUX"
500 fi
501 AC_SUBST([SELINUX_CFLAGS])
502 AC_SUBST([SELINUX_LIBS])
503
504 dnl Options for APIs
505 AC_ARG_ENABLE([opengl],
506     [AS_HELP_STRING([--disable-opengl],
507         [disable support for standard OpenGL API @<:@default=no@:>@])],
508     [enable_opengl="$enableval"],
509     [enable_opengl=yes])
510 AC_ARG_ENABLE([gles1],
511     [AS_HELP_STRING([--enable-gles1],
512         [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
513     [enable_gles1="$enableval"],
514     [enable_gles1=no])
515 AC_ARG_ENABLE([gles2],
516     [AS_HELP_STRING([--enable-gles2],
517         [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
518     [enable_gles2="$enableval"],
519     [enable_gles2=no])
520 AC_ARG_ENABLE([openvg],
521     [AS_HELP_STRING([--enable-openvg],
522         [enable support for OpenVG API @<:@default=no@:>@])],
523     [enable_openvg="$enableval"],
524     [enable_openvg=no])
525
526 AC_ARG_ENABLE([dri],
527     [AS_HELP_STRING([--enable-dri],
528         [enable DRI modules @<:@default=enabled@:>@])],
529     [enable_dri="$enableval"],
530     [enable_dri=yes])
531 AC_ARG_ENABLE([dri3],
532     [AS_HELP_STRING([--enable-dri3],
533         [enable DRI3 @<:@default=enabled@:>@])],
534     [enable_dri3="$enableval"],
535     [enable_dri3=yes])
536 AC_ARG_ENABLE([glx],
537     [AS_HELP_STRING([--enable-glx],
538         [enable GLX library @<:@default=enabled@:>@])],
539     [enable_glx="$enableval"],
540     [enable_glx=yes])
541 AC_ARG_ENABLE([osmesa],
542     [AS_HELP_STRING([--enable-osmesa],
543         [enable OSMesa library @<:@default=disabled@:>@])],
544     [enable_osmesa="$enableval"],
545     [enable_osmesa=no])
546 AC_ARG_ENABLE([gallium-osmesa],
547     [AS_HELP_STRING([--enable-gallium-osmesa],
548         [enable Gallium implementation of the OSMesa library @<:@default=disabled@:>@])],
549     [enable_gallium_osmesa="$enableval"],
550     [enable_gallium_osmesa=no])
551 AC_ARG_ENABLE([egl],
552     [AS_HELP_STRING([--disable-egl],
553         [disable EGL library @<:@default=enabled@:>@])],
554     [enable_egl="$enableval"],
555     [enable_egl=yes])
556
557 AC_ARG_ENABLE([xa],
558     [AS_HELP_STRING([--enable-xa],
559         [enable build of the XA X Acceleration API @<:@default=no@:>@])],
560     [enable_xa="$enableval"],
561     [enable_xa=no])
562 AC_ARG_ENABLE([gbm],
563    [AS_HELP_STRING([--enable-gbm],
564          [enable gbm library @<:@default=auto@:>@])],
565    [enable_gbm="$enableval"],
566    [enable_gbm=auto])
567
568 AC_ARG_ENABLE([xvmc],
569    [AS_HELP_STRING([--enable-xvmc],
570          [enable xvmc library @<:@default=auto@:>@])],
571    [enable_xvmc="$enableval"],
572    [enable_xvmc=no])
573 AC_ARG_ENABLE([vdpau],
574    [AS_HELP_STRING([--enable-vdpau],
575          [enable vdpau library @<:@default=auto@:>@])],
576    [enable_vdpau="$enableval"],
577    [enable_vdpau=auto])
578 AC_ARG_ENABLE([omx],
579    [AS_HELP_STRING([--enable-omx],
580          [enable OpenMAX library @<:@default=no@:>@])],
581    [enable_omx="$enableval"],
582    [enable_omx=no])
583 AC_ARG_ENABLE([opencl],
584    [AS_HELP_STRING([--enable-opencl],
585          [enable OpenCL library @<:@default=no@:>@])],
586    [enable_opencl="$enableval"],
587    [enable_opencl=no])
588 AC_ARG_ENABLE([opencl_icd],
589    [AS_HELP_STRING([--enable-opencl-icd],
590           [Build an OpenCL ICD library to be loaded by an ICD implementation
591            @<:@default=no@:>@])],
592     [enable_opencl_icd="$enableval"],
593     [enable_opencl_icd=no])
594 AC_ARG_ENABLE([xlib-glx],
595     [AS_HELP_STRING([--enable-xlib-glx],
596         [make GLX library Xlib-based instead of DRI-based @<:@default=disabled@:>@])],
597     [enable_xlib_glx="$enableval"],
598     [enable_xlib_glx=no])
599 AC_ARG_ENABLE([gallium-egl],
600     [AS_HELP_STRING([--enable-gallium-egl],
601         [enable optional EGL state tracker (not required
602          for EGL support in Gallium with OpenGL and OpenGL ES)
603          @<:@default=disable@:>@])],
604     [enable_gallium_egl="$enableval"],
605     [enable_gallium_egl=no])
606 AC_ARG_ENABLE([gallium-gbm],
607     [AS_HELP_STRING([--enable-gallium-gbm],
608         [enable optional gbm state tracker (not required for
609          gbm support in Gallium)
610          @<:@default=auto@:>@])],
611     [enable_gallium_gbm="$enableval"],
612     [enable_gallium_gbm=auto])
613
614 AC_ARG_ENABLE([r600-llvm-compiler],
615     [AS_HELP_STRING([--enable-r600-llvm-compiler],
616         [Enable experimental LLVM backend for graphics shaders @<:@default=disable@:>@])],
617     [enable_r600_llvm="$enableval"],
618     [enable_r600_llvm=no])
619
620 AC_ARG_ENABLE([gallium-tests],
621     [AS_HELP_STRING([--enable-gallium-tests],
622         [Enable optional Gallium tests) @<:@default=disable@:>@])],
623     [enable_gallium_tests="$enableval"],
624     [enable_gallium_tests=no])
625
626 # Option for Gallium drivers
627
628 # Keep this in sync with the --with-gallium-drivers help string default value
629 GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
630
631 AC_ARG_WITH([gallium-drivers],
632     [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
633         [comma delimited Gallium drivers list, e.g.
634         "i915,ilo,nouveau,r300,r600,radeonsi,freedreno,svga,swrast"
635         @<:@default=r300,r600,svga,swrast@:>@])],
636     [with_gallium_drivers="$withval"],
637     [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
638
639 # Doing '--without-gallium-drivers' will set this variable to 'no'.  Clear it
640 # here so that the script doesn't choke on an unknown driver name later.
641 case "$with_gallium_drivers" in
642     yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
643     no) with_gallium_drivers='' ;;
644 esac
645
646 if test "x$enable_opengl" = xno -a \
647         "x$enable_gles1" = xno -a \
648         "x$enable_gles2" = xno -a \
649         "x$enable_openvg" = xno -a \
650         "x$enable_xa" = xno -a \
651         "x$enable_xvmc" = xno -a \
652         "x$enable_vdpau" = xno -a \
653         "x$enable_omx" = xno -a \
654         "x$enable_opencl" = xno; then
655     AC_MSG_ERROR([at least one API should be enabled])
656 fi
657
658 # Building OpenGL ES1 and/or ES2 without OpenGL is not supported on mesa 9.0.x
659 if test "x$enable_opengl" = xno -a \
660         "x$enable_gles1" = xyes; then
661     AC_MSG_ERROR([Building OpenGL ES1 without OpenGL is not supported])
662 fi
663
664 if test "x$enable_opengl" = xno -a \
665         "x$enable_gles2" = xyes; then
666     AC_MSG_ERROR([Building OpenGL ES2 without OpenGL is not supported])
667 fi
668
669 AM_CONDITIONAL(HAVE_OPENGL, test "x$enable_opengl" = xyes)
670 AM_CONDITIONAL(HAVE_OPENGL_ES1, test "x$enable_gles1" = xyes)
671 AM_CONDITIONAL(HAVE_OPENGL_ES2, test "x$enable_gles2" = xyes)
672 AM_CONDITIONAL(NEED_OPENGL_COMMON, test "x$enable_opengl" = xyes -o \
673                                         "x$enable_gles1" = xyes -o \
674                                         "x$enable_gles2" = xyes)
675
676 if test "x$enable_glx" = xno; then
677     AC_MSG_WARN([GLX disabled, disabling Xlib-GLX])
678     enable_xlib_glx=no
679 fi
680
681 if test "x$enable_dri$enable_xlib_glx" = xyesyes; then
682     AC_MSG_ERROR([DRI and Xlib-GLX cannot be built together])
683 fi
684
685 if test "x$enable_opengl$enable_xlib_glx" = xnoyes; then
686     AC_MSG_ERROR([Xlib-GLX cannot be built without OpenGL])
687 fi
688
689 # Disable GLX if OpenGL is not enabled
690 if test "x$enable_glx$enable_opengl" = xyesno; then
691     AC_MSG_WARN([OpenGL not enabled, disabling GLX])
692     enable_glx=no
693 fi
694
695 # Disable GLX if DRI and Xlib-GLX are not enabled
696 if test "x$enable_glx" = xyes -a \
697         "x$enable_dri" = xno -a \
698         "x$enable_xlib_glx" = xno; then
699     AC_MSG_WARN([Neither DRI nor Xlib-GLX enabled, disabling GLX])
700     enable_glx=no
701 fi
702
703 AM_CONDITIONAL(HAVE_DRI_GLX, test "x$enable_glx" = xyes -a \
704                                   "x$enable_dri" = xyes)
705 AM_CONDITIONAL(HAVE_DRI, test "x$enable_dri" = xyes)
706 AM_CONDITIONAL(HAVE_DRI3, test "x$enable_dri3" = xyes)
707
708 AC_ARG_ENABLE([shared-glapi],
709     [AS_HELP_STRING([--enable-shared-glapi],
710         [Enable shared glapi for OpenGL @<:@default=yes@:>@])],
711     [enable_shared_glapi="$enableval"],
712     [enable_shared_glapi=yes])
713
714 case "x$enable_opengl$enable_gles1$enable_gles2" in
715 x*yes*yes*)
716     if test "x$enable_shared_glapi" = xno; then
717         AC_MSG_ERROR([shared GLAPI required when building two or more of
718                       the following APIs - opengl, gles1 gles2])
719     fi
720     ;;
721 esac
722
723 # Building Xlib-GLX requires shared glapi to be disabled.
724 if test "x$enable_xlib_glx" = xyes; then
725     AC_MSG_NOTICE([Shared GLAPI should not used with Xlib-GLX, disabling])
726     enable_shared_glapi=no
727 fi
728
729 AM_CONDITIONAL(HAVE_SHARED_GLAPI, test "x$enable_shared_glapi" = xyes)
730
731 dnl
732 dnl Driver specific build directories
733 dnl
734 GALLIUM_TARGET_DIRS=""
735 GALLIUM_WINSYS_DIRS="sw"
736 GALLIUM_DRIVERS_DIRS="galahad trace rbug noop identity"
737 GALLIUM_STATE_TRACKERS_DIRS=""
738
739 case "x$enable_glx$enable_xlib_glx" in
740 xyesyes)
741     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
742     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
743     GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS"
744     NEED_WINSYS_XLIB="yes"
745     ;;
746 esac
747
748 if test "x$enable_dri" = xyes; then
749     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/dri"
750     GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
751 fi
752
753 if test "x$enable_gallium_osmesa" = xyes; then
754     if test -z "$with_gallium_drivers"; then
755         AC_MSG_ERROR([Cannot enable gallium_osmesa without Gallium])
756     fi
757     if test "x$enable_osmesa" = xyes; then
758         AC_MSG_ERROR([Cannot enable both classic and Gallium OSMesa implementations])
759     fi
760     GALLIUM_STATE_TRACKERS_DIRS="osmesa $GALLIUM_STATE_TRACKERS_DIRS"
761     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS osmesa"
762 fi
763
764 AC_SUBST([MESA_LLVM])
765
766 # Check for libdrm
767 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
768                   [have_libdrm=yes], [have_libdrm=no])
769 if test "x$have_libdrm" = xyes; then
770         DEFINES="$DEFINES -DHAVE_LIBDRM"
771 fi
772
773 PKG_CHECK_MODULES([LIBUDEV], [libudev >= $LIBUDEV_REQUIRED],
774                   have_libudev=yes, have_libudev=no)
775
776 if test "x$enable_dri" = xyes; then
777     # not a hard requirement as swrast does not depend on it
778     if test "x$have_libdrm" = xyes; then
779         DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
780     fi
781 fi
782
783 dnl Direct rendering or just indirect rendering
784 case "$host_os" in
785 gnu*)
786     dnl Disable by default on GNU/Hurd
787     driglx_direct_default="no"
788     ;;
789 cygwin*)
790     dnl Disable by default on cygwin
791     driglx_direct_default="no"
792     ;;
793 *)
794     driglx_direct_default="yes"
795     ;;
796 esac
797 AC_ARG_ENABLE([driglx-direct],
798     [AS_HELP_STRING([--disable-driglx-direct],
799         [disable direct rendering in GLX and EGL for DRI \
800             @<:@default=auto@:>@])],
801     [driglx_direct="$enableval"],
802     [driglx_direct="$driglx_direct_default"])
803
804 dnl
805 dnl libGL configuration per driver
806 dnl
807 case "x$enable_glx$enable_xlib_glx" in
808 xyesyes)
809     # Xlib-based GLX
810     PKG_CHECK_MODULES([XLIBGL], [x11 xext])
811     GL_PC_REQ_PRIV="x11 xext"
812     X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
813     GL_LIB_DEPS="$XLIBGL_LIBS"
814     GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
815     GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm $PTHREAD_LIBS"
816     ;;
817 xyesno)
818     # DRI-based GLX
819     PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
820     if test x"$driglx_direct" = xyes; then
821         if test "x$have_libdrm" != xyes; then
822             AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
823         fi
824         PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
825         GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED"
826         if test x"$enable_dri3" = xyes; then
827             if test x"$have_libudev" != xyes; then
828               AC_MSG_ERROR([DRI3 requires libudev >= $LIBUDEV_REQUIRED])
829             fi
830             PKG_CHECK_MODULES([DRI3PROTO], [dri3proto >= $DRI3PROTO_REQUIRED])
831             PKG_CHECK_MODULES([PRESENTPROTO], [presentproto >= $PRESENTPROTO_REQUIRED])
832         fi
833     fi
834
835     # find the DRI deps for libGL
836     dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx >= $XCBGLX_REQUIRED xcb-dri2 >= $XCBDRI2_REQUIRED"
837
838     if test x"$enable_dri3" = xyes; then
839         dri_modules="$dri_modules xcb-dri3 xcb-present xcb-sync xshmfence >= $XSHMFENCE_REQUIRED"
840     fi
841
842     # add xf86vidmode if available
843     PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
844     if test "$HAVE_XF86VIDMODE" = yes ; then
845         dri_modules="$dri_modules xxf86vm"
846     fi
847
848     PKG_CHECK_MODULES([DRIGL], [$dri_modules])
849     GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
850     X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
851     GL_LIB_DEPS="$DRIGL_LIBS"
852
853     # need DRM libs, $PTHREAD_LIBS, etc.
854     GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
855     GL_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
856     ;;
857 esac
858
859 if test "$have_libudev" = yes; then
860     DEFINES="$DEFINES -DHAVE_LIBUDEV"
861 fi
862
863 # This is outside the case (above) so that it is invoked even for non-GLX
864 # builds.
865 AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
866
867 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
868 GLESv1_CM_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
869 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
870 GLESv2_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
871
872 AC_SUBST([X11_INCLUDES])
873 AC_SUBST([GL_LIB_DEPS])
874 AC_SUBST([GL_PC_REQ_PRIV])
875 AC_SUBST([GL_PC_LIB_PRIV])
876 AC_SUBST([GL_PC_CFLAGS])
877 AC_SUBST([DRI_PC_REQ_PRIV])
878 AC_SUBST([GLESv1_CM_LIB_DEPS])
879 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
880 AC_SUBST([GLESv2_LIB_DEPS])
881 AC_SUBST([GLESv2_PC_LIB_PRIV])
882
883 AC_SUBST([HAVE_XF86VIDMODE])
884
885 dnl
886 dnl More GLX setup
887 dnl
888 case "x$enable_glx$enable_xlib_glx" in
889 xyesyes)
890     DEFINES="$DEFINES -DUSE_XSHM"
891     ;;
892 xyesno)
893     DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
894     if test "x$driglx_direct" = xyes; then
895         DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
896     fi
897     ;;
898 esac
899
900 dnl
901 dnl TLS detection
902 dnl
903
904 AC_ARG_ENABLE([glx-tls],
905     [AS_HELP_STRING([--enable-glx-tls],
906         [enable TLS support in GLX @<:@default=disabled@:>@])],
907     [GLX_USE_TLS="$enableval"],
908     [GLX_USE_TLS=no])
909 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
910
911 AS_IF([test "x$GLX_USE_TLS" = xyes -a "x$ax_pthread_ok" = xyes],
912       [DEFINES="${DEFINES} -DGLX_USE_TLS -DHAVE_PTHREAD"])
913
914 dnl
915 dnl More DRI setup
916 dnl
917 dnl Directory for DRI drivers
918 AC_ARG_WITH([dri-driverdir],
919     [AS_HELP_STRING([--with-dri-driverdir=DIR],
920         [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
921     [DRI_DRIVER_INSTALL_DIR="$withval"],
922     [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
923 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
924 dnl Extra search path for DRI drivers
925 AC_ARG_WITH([dri-searchpath],
926     [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
927         [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
928     [DRI_DRIVER_SEARCH_DIR="$withval"],
929     [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
930 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
931 dnl Which drivers to build - default is chosen by platform
932 AC_ARG_WITH([dri-drivers],
933     [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
934         [comma delimited classic DRI drivers list, e.g.
935         "swrast,i965,radeon" @<:@default=auto@:>@])],
936     [with_dri_drivers="$withval"],
937     [with_dri_drivers=auto])
938
939 if test "x$with_dri_drivers" = xauto; then
940     if test "x$enable_opengl" = xyes -a "x$enable_dri" = xyes; then
941         with_dri_drivers="yes"
942     else
943         with_dri_drivers="no"
944     fi
945 fi
946 if test "x$with_dri_drivers" = xno; then
947     with_dri_drivers=''
948 fi
949
950 dnl If $with_dri_drivers is yes, drivers will be added through
951 dnl platform checks. Set DEFINES and LIB_DEPS
952 if test "x$enable_dri" = xyes; then
953     # Platform specific settings and drivers to build
954     case "$host_os" in
955     linux*)
956         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1"
957         DEFINES="$DEFINES -DHAVE_ALIAS"
958         if test "x$enable_dri3" = xyes; then
959             DEFINES="$DEFINES -DHAVE_DRI3"
960         fi
961
962         if test "x$have_libudev" != xyes; then
963             AC_MSG_ERROR([libudev-dev required for building DRI])
964         fi
965
966         case "$host_cpu" in
967         powerpc* | sparc*)
968             # Build only the drivers for cards that exist on PowerPC/sparc
969             if test "x$with_dri_drivers" = "xyes"; then
970                 with_dri_drivers="r200 radeon swrast"
971             fi
972             ;;
973         esac
974         ;;
975     *freebsd* | dragonfly* | *netbsd* | openbsd*)
976         DEFINES="$DEFINES -DHAVE_PTHREAD -DUSE_EXTERNAL_DXTN_LIB=1"
977         DEFINES="$DEFINES -DHAVE_ALIAS"
978         ;;
979     gnu*)
980         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1"
981         DEFINES="$DEFINES -DHAVE_ALIAS"
982         ;;
983     solaris*)
984         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1"
985         ;;
986     cygwin*)
987         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1"
988         if test "x$with_dri_drivers" = "xyes"; then
989             with_dri_drivers="swrast"
990         fi
991         ;;
992     esac
993
994     # default drivers
995     if test "x$with_dri_drivers" = "xyes"; then
996         with_dri_drivers="i915 i965 nouveau r200 radeon swrast"
997     fi
998
999     # Check for expat
1000     PKG_CHECK_EXISTS([EXPAT], [have_expat=yes], [have_expat=no])
1001     if test "x$have_expat" = "xyes"; then
1002        PKG_CHECK_MODULES([EXPAT], [expat], [],
1003                          AC_MSG_ERROR([Expat required for DRI.]))
1004     else
1005        # expat version 2.0 and earlier do not provide expat.pc
1006        EXPAT_LIBS=-lexpat
1007     fi
1008
1009     # If we are building any DRI driver other than swrast.
1010     if test -n "$with_dri_drivers"; then
1011         if test "x$with_dri_drivers" != xswrast; then
1012             # ... libdrm is required
1013             if test "x$have_libdrm" != xyes; then
1014                 AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
1015             fi
1016             DRICOMMON_NEED_LIBDRM=yes
1017         else
1018             DRICOMMON_NEED_LIBDRM=no
1019         fi
1020     fi
1021
1022     # put all the necessary libs together
1023     DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1024     GALLIUM_DRI_LIB_DEPS="$GALLIUM_DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIBS -lm $CLOCK_LIB $PTHREAD_LIBS $DLOPEN_LIBS"
1025
1026 fi
1027
1028 AC_SUBST([DRI_LIB_DEPS])
1029 AC_SUBST([GALLIUM_DRI_LIB_DEPS])
1030
1031 DRI_DIRS=''
1032 dnl Duplicates in DRI_DIRS are removed by sorting it at the end of this block
1033 if test -n "$with_dri_drivers"; then
1034     if test "x$enable_opengl" != xyes; then
1035         AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1036     fi
1037
1038     dri_drivers=`IFS=', '; echo $with_dri_drivers`
1039     for driver in $dri_drivers; do
1040         DRI_DIRS="$DRI_DIRS $driver"
1041         case "x$driver" in
1042         xi915)
1043             HAVE_I915_DRI=yes;
1044             PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1045             ;;
1046         xi965)
1047             HAVE_I965_DRI=yes;
1048             PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1049             ;;
1050         xnouveau)
1051             HAVE_NOUVEAU_DRI=yes;
1052             PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED])
1053             ;;
1054         xradeon)
1055             HAVE_RADEON_DRI=yes;
1056             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1057             ;;
1058         xr200)
1059             HAVE_R200_DRI=yes;
1060             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1061             ;;
1062         xswrast)
1063             HAVE_SWRAST_DRI=yes;
1064             ;;
1065         *)
1066             AC_MSG_ERROR([classic DRI driver '$driver' does not exist])
1067             ;;
1068         esac
1069     done
1070     DRI_DIRS=`echo $DRI_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1071 fi
1072
1073 AM_CONDITIONAL(NEED_MEGADRIVER, test -n "$DRI_DIRS")
1074 AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_xlib_glx" = xyes -o \
1075                                   "x$enable_osmesa" = xyes -o \
1076                                   -n "$DRI_DIRS")
1077
1078 dnl
1079 dnl OSMesa configuration
1080 dnl
1081
1082 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1083 AC_ARG_WITH([osmesa-bits],
1084     [AS_HELP_STRING([--with-osmesa-bits=BITS],
1085         [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1086     [osmesa_bits="$withval"],
1087     [osmesa_bits=8])
1088 if test "x$osmesa_bits" != x8; then
1089     if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then
1090         AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1091         osmesa_bits=8
1092     fi
1093 fi
1094 case "x$osmesa_bits" in
1095 x8)
1096     OSMESA_LIB="${OSMESA_LIB}"
1097     ;;
1098 x16|x32)
1099     OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
1100     DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1101     ;;
1102 *)
1103     AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1104     ;;
1105 esac
1106
1107 if test "x$enable_osmesa" = xyes -o "x$enable_gallium_osmesa" = xyes; then
1108     OSMESA_LIB_DEPS="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1109     OSMESA_MESA_DEPS=""
1110     OSMESA_PC_LIB_PRIV="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1111 fi
1112
1113 AC_SUBST([OSMESA_LIB_DEPS])
1114 AC_SUBST([OSMESA_MESA_DEPS])
1115 AC_SUBST([OSMESA_PC_REQ])
1116 AC_SUBST([OSMESA_PC_LIB_PRIV])
1117
1118 dnl
1119 dnl gbm configuration
1120 dnl
1121 if test "x$enable_gbm" = xauto; then
1122     case "$with_egl_platforms" in
1123         *drm*)
1124             enable_gbm=yes ;;
1125          *)
1126             enable_gbm=no ;;
1127     esac
1128 fi
1129 if test "x$enable_gbm" = xyes; then
1130     if test x"$have_libudev" != xyes; then
1131         AC_MSG_ERROR([gbm requires udev >= $LIBUDEV_REQUIRED])
1132     fi
1133
1134     if test "x$enable_dri" = xyes; then
1135         GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
1136         if test "x$enable_shared_glapi" = xno; then
1137             AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1138         fi
1139     fi
1140 fi
1141 AM_CONDITIONAL(HAVE_GBM, test "x$enable_gbm" = xyes)
1142 GBM_PC_REQ_PRIV="libudev >= $LIBUDEV_REQUIRED"
1143 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1144 AC_SUBST([GBM_PC_REQ_PRIV])
1145 AC_SUBST([GBM_PC_LIB_PRIV])
1146
1147 dnl
1148 dnl EGL configuration
1149 dnl
1150 EGL_CLIENT_APIS=""
1151
1152 if test "x$enable_egl" = xyes; then
1153     EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS $PTHREAD_LIBS"
1154
1155     AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1156
1157     if test "x$enable_dri" = xyes; then
1158         HAVE_EGL_DRIVER_DRI2=1
1159     fi
1160 fi
1161 AM_CONDITIONAL(HAVE_EGL, test "x$enable_egl" = xyes)
1162 AC_SUBST([EGL_LIB_DEPS])
1163
1164 dnl
1165 dnl EGL Gallium configuration
1166 dnl
1167 if test "x$enable_gallium_egl" = xyes; then
1168     if test -z "$with_gallium_drivers"; then
1169         AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
1170     fi
1171     if test "x$enable_egl" = xno; then
1172         AC_MSG_ERROR([cannot enable egl_gallium without EGL])
1173     fi
1174     if test "x$have_libdrm" != xyes; then
1175         AC_MSG_ERROR([egl_gallium requires libdrm >= $LIBDRM_REQUIRED])
1176     fi
1177
1178     GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
1179     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static"
1180 fi
1181 AM_CONDITIONAL(HAVE_GALLIUM_EGL, test "x$enable_gallium_egl" = xyes)
1182
1183 dnl
1184 dnl gbm Gallium configuration
1185 dnl
1186 if test "x$enable_gallium_gbm" = xauto; then
1187     case "$enable_gbm$enable_gallium_egl$enable_dri$with_egl_platforms" in
1188         yesyesyes*drm*)
1189             enable_gallium_gbm=yes ;;
1190          *)
1191             enable_gallium_gbm=no ;;
1192     esac
1193 fi
1194 if test "x$enable_gallium_gbm" = xyes; then
1195     if test -z "$with_gallium_drivers"; then
1196         AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
1197     fi
1198     if test "x$enable_gbm" = xno; then
1199         AC_MSG_ERROR([cannot enable gbm_gallium without gbm])
1200     fi
1201     # gbm_gallium abuses DRI_LIB_DEPS to link.  Make sure it is set.
1202     if test "x$enable_dri" = xno; then
1203         AC_MSG_ERROR([gbm_gallium requires --enable-dri to build])
1204     fi
1205
1206     GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS"
1207     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm"
1208     enable_gallium_loader=yes
1209 fi
1210 AM_CONDITIONAL(HAVE_GALLIUM_GBM, test "x$enable_gallium_gbm" = xyes)
1211
1212 dnl
1213 dnl XA configuration
1214 dnl
1215 if test "x$enable_xa" = xyes; then
1216     if test "x$with_gallium_drivers" = xswrast; then
1217        AC_MSG_ERROR([
1218           Building xa requires at least one non swrast gallium driver.
1219           If you are looking to use libxatracker.so with vmware's virtual gpu,
1220           make sure to include svga in the gallium drivers list, apart from
1221           enabling XA.
1222           Example: ./configure --enable-xa --with-gallium-drivers=svga...])
1223     fi
1224     GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS"
1225     enable_gallium_loader=yes
1226 fi
1227 AM_CONDITIONAL(HAVE_ST_XA, test "x$enable_xa" = xyes)
1228
1229 dnl
1230 dnl OpenVG configuration
1231 dnl
1232 VG_LIB_DEPS=""
1233
1234 if test "x$enable_openvg" = xyes; then
1235     if test "x$enable_egl" = xno; then
1236         AC_MSG_ERROR([cannot enable OpenVG without EGL])
1237     fi
1238     if test -z "$with_gallium_drivers"; then
1239         AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1240     fi
1241     if test "x$enable_gallium_egl" = xno; then
1242         AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
1243     fi
1244
1245     EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1246     VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS $PTHREAD_LIBS"
1247     GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1248     VG_PC_LIB_PRIV="-lm $CLOCK_LIB $PTHREAD_LIBS $DLOPEN_LIBS"
1249     AC_SUBST([VG_PC_LIB_PRIV])
1250 fi
1251 AM_CONDITIONAL(HAVE_OPENVG, test "x$enable_openvg" = xyes)
1252
1253 dnl
1254 dnl Gallium G3DVL configuration
1255 dnl
1256 if test -n "$with_gallium_drivers"; then
1257     if test "x$enable_xvmc" = xauto; then
1258         PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no])
1259     fi
1260
1261     if test "x$enable_vdpau" = xauto; then
1262         PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no])
1263     fi
1264
1265     if test "x$enable_omx" = xauto; then
1266         PKG_CHECK_EXISTS([libomxil-bellagio], [enable_omx=yes], [enable_omx=no])
1267     fi
1268 fi
1269
1270 if test "x$enable_xvmc" = xyes; then
1271     PKG_CHECK_MODULES([XVMC], [xvmc >= $XVMC_REQUIRED x11-xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
1272     GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xvmc"
1273 fi
1274 AM_CONDITIONAL(HAVE_ST_XVMC, test "x$enable_xvmc" = xyes)
1275
1276 if test "x$enable_vdpau" = xyes; then
1277     PKG_CHECK_MODULES([VDPAU], [vdpau >= $VDPAU_REQUIRED x11-xcb xcb-dri2 >= $XCBDRI2_REQUIRED],
1278                       [VDPAU_LIBS="`$PKG_CONFIG --libs x11-xcb xcb-dri2`"])
1279     GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau"
1280 fi
1281 AM_CONDITIONAL(HAVE_ST_VDPAU, test "x$enable_vdpau" = xyes)
1282
1283 if test "x$enable_omx" = xyes; then
1284     PKG_CHECK_MODULES([OMX], [libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED x11-xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
1285     GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS omx"
1286 fi
1287 AM_CONDITIONAL(HAVE_ST_OMX, test "x$enable_omx" = xyes)
1288
1289 dnl
1290 dnl OpenCL configuration
1291 dnl
1292
1293 AC_ARG_WITH([libclc-path],
1294    [AS_HELP_STRING([--with-libclc-path],
1295          [DEPRECATED: See http://dri.freedesktop.org/wiki/GalliumCompute#How_to_Install])],
1296    [LIBCLC_PATH="$withval"],
1297    [LIBCLC_PATH=''])
1298
1299 if test -n "$LIBCLC_PATH"; then
1300    AC_MSG_ERROR([The --with-libclc-path option has been deprecated.
1301                   Please review the updated build instructions for clover:
1302                   http://dri.freedesktop.org/wiki/GalliumCompute])
1303 fi
1304
1305
1306 AC_ARG_WITH([clang-libdir],
1307    [AS_HELP_STRING([--with-clang-libdir],
1308          [Path to Clang libraries @<:@default=llvm-config --libdir@:>@])],
1309    [CLANG_LIBDIR="$withval"],
1310    [CLANG_LIBDIR=''])
1311
1312 PKG_CHECK_EXISTS([libclc], [have_libclc=yes], [have_libclc=no])
1313
1314 if test "x$enable_opencl" = xyes; then
1315     if test -z "$with_gallium_drivers"; then
1316         AC_MSG_ERROR([cannot enable OpenCL without Gallium])
1317     fi
1318
1319     if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 7; then
1320         AC_MSG_ERROR([gcc >= 4.7 is required to build clover])
1321     fi
1322
1323     if test "x$have_libclc" = xno; then
1324         AC_MSG_ERROR([pkg-config cannot find libclc.pc which is required to build clover.
1325                     Make sure the directory containing libclc.pc is specified in your
1326                     PKG_CONFIG_PATH environment variable.
1327                     By default libclc.pc is installed to /usr/local/share/pkgconfig/])
1328     else
1329         LIBCLC_INCLUDEDIR=`$PKG_CONFIG --variable=includedir libclc`
1330         LIBCLC_LIBEXECDIR=`$PKG_CONFIG --variable=libexecdir libclc`
1331         AC_SUBST([LIBCLC_INCLUDEDIR])
1332         AC_SUBST([LIBCLC_LIBEXECDIR])
1333     fi
1334
1335     GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS clover"
1336     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS opencl"
1337     enable_gallium_loader=yes
1338
1339     if test "x$enable_opencl_icd" = xyes; then
1340         OPENCL_LIBNAME="MesaOpenCL"
1341     else
1342         OPENCL_LIBNAME="OpenCL"
1343     fi
1344 fi
1345 AM_CONDITIONAL(HAVE_CLOVER, test "x$enable_opencl" = xyes)
1346 AM_CONDITIONAL(HAVE_CLOVER_ICD, test "x$enable_opencl_icd" = xyes)
1347 AC_SUBST([OPENCL_LIBNAME])
1348
1349 dnl
1350 dnl Gallium configuration
1351 dnl
1352 AM_CONDITIONAL(HAVE_GALLIUM, test -n "$with_gallium_drivers")
1353
1354 AC_SUBST([LLVM_BINDIR])
1355 AC_SUBST([LLVM_CFLAGS])
1356 AC_SUBST([LLVM_CPPFLAGS])
1357 AC_SUBST([LLVM_CXXFLAGS])
1358 AC_SUBST([LLVM_LIBDIR])
1359 AC_SUBST([LLVM_LIBS])
1360 AC_SUBST([LLVM_LDFLAGS])
1361 AC_SUBST([LLVM_INCLUDEDIR])
1362 AC_SUBST([LLVM_VERSION])
1363 AC_SUBST([CLANG_RESOURCE_DIR])
1364
1365 case "x$enable_opengl$enable_gles1$enable_gles2" in
1366 x*yes*)
1367     EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1368     ;;
1369 esac
1370
1371 AC_SUBST([VG_LIB_DEPS])
1372 AC_SUBST([EGL_CLIENT_APIS])
1373
1374 dnl
1375 dnl EGL Platforms configuration
1376 dnl
1377 AC_ARG_WITH([egl-platforms],
1378     [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1379         [comma delimited native platforms libEGL supports, e.g.
1380         "x11,drm" @<:@default=auto@:>@])],
1381     [with_egl_platforms="$withval"],
1382     [if test "x$enable_egl" = xyes; then
1383         with_egl_platforms="x11"
1384     else
1385         with_egl_platforms=""
1386     fi])
1387
1388 if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
1389     AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1390 fi
1391
1392 # Do per-EGL platform setups and checks
1393 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1394 for plat in $egl_platforms; do
1395         case "$plat" in
1396         wayland)
1397                 PKG_CHECK_MODULES([WAYLAND], [wayland-client >= $WAYLAND_REQUIRED wayland-server >= $WAYLAND_REQUIRED])
1398                 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
1399
1400                 WAYLAND_PREFIX=`$PKG_CONFIG --variable=prefix wayland-client`
1401                 AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner],,
1402                              [${WAYLAND_PREFIX}/bin$PATH_SEPARATOR$PATH])
1403                 ;;
1404
1405         x11)
1406                 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 >= $XCBDRI2_REQUIRED xcb-xfixes])
1407                 ;;
1408
1409         drm)
1410                 test "x$enable_gbm" = "xno" &&
1411                         AC_MSG_ERROR([EGL platform drm needs gbm])
1412                 test "x$have_libdrm" != xyes &&
1413                         AC_MSG_ERROR([EGL platform drm requires libdrm >= $LIBDRM_REQUIRED])
1414                 ;;
1415
1416         android|fbdev|gdi|null)
1417                 ;;
1418
1419         *)
1420                 AC_MSG_ERROR([EGL platform '$plat' does not exist])
1421                 ;;
1422         esac
1423
1424         case "$plat$have_libudev" in
1425                 waylandno|drmno)
1426                     AC_MSG_ERROR([cannot build $plat platform without udev >= $LIBUDEV_REQUIRED]) ;;
1427         esac
1428 done
1429
1430 # libEGL wants to default to the first platform specified in
1431 # ./configure.  parse that here.
1432 if test "x$egl_platforms" != "x"; then
1433     FIRST_PLATFORM_CAPS=`echo $egl_platforms | sed 's| .*||' | tr 'a-z' 'A-Z'`
1434     EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
1435 else
1436     EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
1437 fi
1438
1439 if echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1; then
1440     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
1441     NEED_WINSYS_XLIB=yes
1442 fi
1443 AM_CONDITIONAL(HAVE_EGL_PLATFORM_X11, echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1)
1444 AM_CONDITIONAL(HAVE_EGL_PLATFORM_WAYLAND, echo "$egl_platforms" | grep 'wayland' >/dev/null 2>&1)
1445 AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep 'drm' >/dev/null 2>&1)
1446 AM_CONDITIONAL(HAVE_EGL_PLATFORM_FBDEV, echo "$egl_platforms" | grep 'fbdev' >/dev/null 2>&1)
1447 AM_CONDITIONAL(HAVE_EGL_PLATFORM_NULL, echo "$egl_platforms" | grep 'null' >/dev/null 2>&1)
1448
1449 AM_CONDITIONAL(HAVE_EGL_DRIVER_DRI2, test "x$HAVE_EGL_DRIVER_DRI2" != "x")
1450
1451 AC_SUBST([EGL_NATIVE_PLATFORM])
1452 AC_SUBST([EGL_CFLAGS])
1453
1454 # If we don't have the X11 platform, set this define so we don't try to include
1455 # the X11 headers.
1456 if ! echo "$egl_platforms" | grep -q 'x11'; then
1457     DEFINES="$DEFINES -DMESA_EGL_NO_X11_HEADERS"
1458     GL_PC_CFLAGS="$GL_PC_CFLAGS -DMESA_EGL_NO_X11_HEADERS"
1459 fi
1460
1461 AC_ARG_WITH([egl-driver-dir],
1462     [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1463                     [directory for EGL drivers [[default=${libdir}/egl]]])],
1464     [EGL_DRIVER_INSTALL_DIR="$withval"],
1465     [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1466 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1467
1468 AC_ARG_WITH([max-width],
1469     [AS_HELP_STRING([--with-max-width=N],
1470                     [Maximum framebuffer width (4096)])],
1471     [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1472      AS_IF([test "${withval}" -gt "4096"],
1473            [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1474 )
1475 AC_ARG_WITH([max-height],
1476     [AS_HELP_STRING([--with-max-height=N],
1477                     [Maximum framebuffer height (4096)])],
1478     [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1479      AS_IF([test "${withval}" -gt "4096"],
1480            [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1481 )
1482
1483 dnl
1484 dnl Gallium LLVM
1485 dnl
1486 AC_ARG_ENABLE([gallium-llvm],
1487     [AS_HELP_STRING([--enable-gallium-llvm],
1488         [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1489     [enable_gallium_llvm="$enableval"],
1490     [enable_gallium_llvm=auto])
1491
1492 AC_ARG_ENABLE([llvm-shared-libs],
1493     [AS_HELP_STRING([--enable-llvm-shared-libs],
1494         [link with LLVM shared libraries @<:@default=enabled@:>@])],
1495     [enable_llvm_shared_libs="$enableval"],
1496     [enable_llvm_shared_libs=yes])
1497
1498 AC_ARG_WITH([llvm-prefix],
1499     [AS_HELP_STRING([--with-llvm-prefix],
1500         [Prefix for LLVM installations in non-standard locations])],
1501     [llvm_prefix="$withval"],
1502     [llvm_prefix=''])
1503
1504
1505 # Call this inside ` ` to get the return value.
1506 # $1 is the llvm-config command with arguments.
1507 strip_unwanted_llvm_flags() {
1508     # Use \> (marks the end of the word)
1509     echo `$1` | sed \
1510         -e 's/-DNDEBUG\>//g' \
1511         -e 's/-pedantic\>//g' \
1512         -e 's/-Wcovered-switch-default\>//g' \
1513         -e 's/-O.\>//g' \
1514         -e 's/-g\>//g' \
1515         -e 's/-Wall\>//g' \
1516         -e 's/-Wcast-qual\>//g' \
1517         -e 's/-Woverloaded-virtual\>//g' \
1518         -e 's/-fcolor-diagnostics\>//g' \
1519         -e 's/-fdata-sections\>//g' \
1520         -e 's/-ffunction-sections\>//g' \
1521         -e 's/-fno-exceptions\>//g' \
1522         -e 's/-fomit-frame-pointer\>//g' \
1523         -e 's/-fvisibility-inlines-hidden\>//g' \
1524         -e 's/-fPIC\>//g'
1525 }
1526
1527
1528 if test -z "$with_gallium_drivers"; then
1529     enable_gallium_llvm=no
1530 fi
1531 if test "x$enable_gallium_llvm" = xauto; then
1532     case "$host_cpu" in
1533     i*86|x86_64|amd64) enable_gallium_llvm=yes;;
1534     esac
1535 fi
1536 if test "x$enable_gallium_llvm" = xyes; then
1537     if test -n "$llvm_prefix"; then
1538         AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no], ["$llvm_prefix/bin"])
1539     else
1540         AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no])
1541     fi
1542
1543     if test "x$LLVM_CONFIG" != xno; then
1544         LLVM_VERSION=`$LLVM_CONFIG --version | sed 's/svn.*//g'`
1545         LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1546         LLVM_BINDIR=`$LLVM_CONFIG --bindir`
1547         LLVM_CPPFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cppflags"`
1548         LLVM_CFLAGS=$LLVM_CPPFLAGS   # CPPFLAGS seem to be sufficient
1549         LLVM_CXXFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cxxflags"`
1550         LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
1551         LLVM_LIBDIR=`$LLVM_CONFIG --libdir`
1552         LLVM_LDFLAGS="-Wl,-rpath,$LLVM_LIBDIR $LLVM_LDFLAGS"
1553
1554         AC_COMPUTE_INT([LLVM_VERSION_MAJOR], [LLVM_VERSION_MAJOR],
1555             [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
1556         AC_COMPUTE_INT([LLVM_VERSION_MINOR], [LLVM_VERSION_MINOR],
1557             [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
1558
1559         if test -n "${LLVM_VERSION_MAJOR}"; then
1560             LLVM_VERSION_INT="${LLVM_VERSION_MAJOR}0${LLVM_VERSION_MINOR}"
1561         else
1562             LLVM_VERSION_INT=`echo $LLVM_VERSION | sed -e 's/\([[0-9]]\)\.\([[0-9]]\)/\10\2/g'`
1563         fi
1564
1565         LLVM_COMPONENTS="engine bitwriter"
1566         if $LLVM_CONFIG --components | grep -qw 'mcjit'; then
1567             LLVM_COMPONENTS="${LLVM_COMPONENTS} mcjit"
1568         fi
1569
1570         if test "x$enable_opencl" = xyes; then
1571             LLVM_COMPONENTS="${LLVM_COMPONENTS} ipo linker instrumentation"
1572             # LLVM 3.3 >= 177971 requires IRReader
1573             if $LLVM_CONFIG --components | grep -qw 'irreader'; then
1574                 LLVM_COMPONENTS="${LLVM_COMPONENTS} irreader"
1575             fi
1576             # LLVM 3.4 requires Option
1577             if $LLVM_CONFIG --components | grep -qw 'option'; then
1578                 LLVM_COMPONENTS="${LLVM_COMPONENTS} option"
1579             fi
1580         fi
1581         DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT"
1582         MESA_LLVM=1
1583
1584         dnl Check for Clang internal headers
1585         if test "x$enable_opencl" = xyes; then
1586             if test -z "$CLANG_LIBDIR"; then
1587                 CLANG_LIBDIR=${LLVM_LIBDIR}
1588             fi
1589             CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION}
1590             AS_IF([test ! -f "$CLANG_RESOURCE_DIR/include/stddef.h"],
1591                 [AC_MSG_ERROR([Could not find clang internal header stddef.h in $CLANG_RESOURCE_DIR Use --with-clang-libdir to specify the correct path to the clang libraries.])])
1592         fi
1593     else
1594         MESA_LLVM=0
1595         LLVM_VERSION_INT=0
1596     fi
1597 else
1598     MESA_LLVM=0
1599     LLVM_VERSION_INT=0
1600 fi
1601
1602 dnl Directory for XVMC libs
1603 AC_ARG_WITH([xvmc-libdir],
1604     [AS_HELP_STRING([--with-xvmc-libdir=DIR],
1605         [directory for the XVMC libraries @<:@default=${libdir}@:>@])],
1606     [XVMC_LIB_INSTALL_DIR="$withval"],
1607     [XVMC_LIB_INSTALL_DIR='${libdir}'])
1608 AC_SUBST([XVMC_LIB_INSTALL_DIR])
1609
1610 dnl
1611 dnl Gallium Tests
1612 dnl
1613 if test "x$enable_gallium_tests" = xyes; then
1614     enable_gallium_loader=yes
1615 fi
1616 AM_CONDITIONAL(HAVE_GALLIUM_TESTS, test "x$enable_gallium_tests" = xyes)
1617
1618 if test "x$enable_gallium_loader" = xyes; then
1619     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS pipe-loader"
1620 fi
1621 AM_CONDITIONAL(NEED_GALLIUM_LOADER, test "x$enable_gallium_loader" = xyes)
1622
1623 dnl Directory for VDPAU libs
1624 AC_ARG_WITH([vdpau-libdir],
1625     [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1626         [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1627     [VDPAU_LIB_INSTALL_DIR="$withval"],
1628     [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1629 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
1630
1631 OMX_LIB_INSTALL_DIR_DEFAULT=''
1632 if test "x$enable_omx" = xyes; then
1633     OMX_LIB_INSTALL_DIR_DEFAULT=`$PKG_CONFIG --variable=pluginsdir libomxil-bellagio`
1634 fi
1635
1636 AC_ARG_WITH([omx-libdir],
1637     [AS_HELP_STRING([--with-omx-libdir=DIR],
1638         [directory for the OMX libraries])],
1639     [OMX_LIB_INSTALL_DIR="$withval"],
1640     [OMX_LIB_INSTALL_DIR="$OMX_LIB_INSTALL_DIR_DEFAULT"])
1641 AC_SUBST([OMX_LIB_INSTALL_DIR])
1642
1643 dnl Directory for OpenCL libs
1644 AC_ARG_WITH([opencl-libdir],
1645     [AS_HELP_STRING([--with-opencl-libdir=DIR],
1646         [directory for auxiliary libraries used by the OpenCL implementation @<:@default=${libdir}/opencl@:>@])],
1647     [OPENCL_LIB_INSTALL_DIR="$withval"],
1648     [OPENCL_LIB_INSTALL_DIR='${libdir}/opencl'])
1649 AC_SUBST([OPENCL_LIB_INSTALL_DIR])
1650
1651 dnl
1652 dnl Gallium helper functions
1653 dnl
1654 gallium_check_st() {
1655     if test "x$NEED_NONNULL_WINSYS" = xyes; then
1656          if test "x$have_libdrm" != xyes; then
1657             AC_MSG_ERROR([DRI or Xorg DDX requires libdrm >= $LIBDRM_REQUIRED])
1658          fi
1659          GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1660     fi
1661     if test "x$enable_dri" = xyes && test -n "$2"; then
1662          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1663     fi
1664     if test "x$enable_xa" = xyes && test -n "$3"; then
1665          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1666     fi
1667     if test "x$enable_xvmc" = xyes && test -n "$4"; then
1668          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
1669     fi
1670     if test "x$enable_vdpau" = xyes && test -n "$5"; then
1671          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5"
1672     fi
1673     if test "x$enable_omx" = xyes && test "x$6" != x; then
1674          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6"
1675     fi
1676 }
1677
1678 gallium_require_llvm() {
1679     if test "x$MESA_LLVM" = x0; then
1680         case "$host_cpu" in
1681         i*86|x86_64|amd64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1682         esac
1683     fi
1684 }
1685
1686 gallium_require_drm_loader() {
1687     if test "x$enable_gallium_loader" = xyes; then
1688         if test "x$have_libudev" != xyes; then
1689             AC_MSG_ERROR([Gallium drm loader requires libudev >= $LIBUDEV_REQUIRED])
1690         fi
1691         if test "x$have_libdrm" != xyes; then
1692             AC_MSG_ERROR([Gallium drm loader requires libdrm >= $LIBDRM_REQUIRED])
1693         fi
1694         enable_gallium_drm_loader=yes
1695     fi
1696 }
1697
1698 radeon_llvm_check() {
1699     if test "x$enable_gallium_llvm" != "xyes"; then
1700         AC_MSG_ERROR([--enable-gallium-llvm is required when building $1])
1701     fi
1702     LLVM_REQUIRED_VERSION_MAJOR="3"
1703     LLVM_REQUIRED_VERSION_MINOR="3"
1704     if test "$LLVM_VERSION_INT" -lt "${LLVM_REQUIRED_VERSION_MAJOR}0${LLVM_REQUIRED_VERSION_MINOR}"; then
1705         AC_MSG_ERROR([LLVM $LLVM_REQUIRED_VERSION_MAJOR.$LLVM_REQUIRED_VERSION_MINOR or newer is required for $1])
1706     fi
1707     if test true && $LLVM_CONFIG --targets-built | grep -qvw 'R600' ; then
1708         AC_MSG_ERROR([LLVM R600 Target not enabled.  You can enable it when building the LLVM
1709                       sources with the --enable-experimental-targets=R600
1710                       configure flag])
1711     fi
1712     LLVM_COMPONENTS="${LLVM_COMPONENTS} r600 bitreader ipo"
1713     NEED_RADEON_LLVM=yes
1714     AC_CHECK_LIB([elf], [elf_memory], [ELF_LIB=-lelf],
1715                                  [AC_MSG_ERROR([$1 requires libelf when using LLVM])])
1716 }
1717
1718 dnl Gallium drivers
1719 if test "x$enable_dri" = xyes -o "x$enable_xa" = xyes -o \
1720         "x$enable_xvmc" = xyes -o "x$enable_vdpau" = xyes; then
1721     NEED_NONNULL_WINSYS=yes
1722 fi
1723 AM_CONDITIONAL(NEED_NONNULL_WINSYS, test "x$NEED_NONNULL_WINSYS" = xyes)
1724
1725 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
1726 if test -n "$with_gallium_drivers"; then
1727     gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1728     for driver in $gallium_drivers; do
1729         case "x$driver" in
1730         xsvga)
1731             HAVE_GALLIUM_SVGA=yes
1732             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
1733             gallium_require_drm_loader
1734             gallium_check_st "svga/drm" "dri-vmwgfx" ""
1735             ;;
1736         xi915)
1737             HAVE_GALLIUM_I915=yes
1738             PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1739             gallium_require_drm_loader
1740             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe"
1741             if test "x$MESA_LLVM" = x1; then
1742                 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1743             fi
1744             GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1745             gallium_check_st "i915/drm" "dri-i915"
1746             DRICOMMON_NEED_LIBDRM=yes
1747             ;;
1748         xilo)
1749             HAVE_GALLIUM_ILO=yes
1750             PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1751             gallium_require_drm_loader
1752             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS ilo"
1753             gallium_check_st "intel/drm" "dri-ilo"
1754             DRICOMMON_NEED_LIBDRM=yes
1755             ;;
1756         xr300)
1757             HAVE_GALLIUM_R300=yes
1758             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1759             gallium_require_drm_loader
1760             gallium_require_llvm "Gallium R300"
1761             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1762             gallium_check_st "radeon/drm" "r300/dri" "" "" ""
1763             DRICOMMON_NEED_LIBDRM=yes
1764             ;;
1765         xr600)
1766             HAVE_GALLIUM_R600=yes
1767             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1768             gallium_require_drm_loader
1769             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1770             if test "x$enable_r600_llvm" = xyes -o "x$enable_opencl" = xyes; then
1771                 radeon_llvm_check "r600g"
1772                 LLVM_COMPONENTS="${LLVM_COMPONENTS} bitreader asmparser"
1773             fi
1774             if test "x$enable_r600_llvm" = xyes; then
1775                 USE_R600_LLVM_COMPILER=yes;
1776             fi
1777             if test "x$enable_opencl" = xyes; then
1778                 LLVM_COMPONENTS="${LLVM_COMPONENTS} bitreader asmparser"
1779             fi
1780             gallium_check_st "radeon/drm" "r600/dri" "" "r600/xvmc" "r600/vdpau" "r600/omx"
1781             DRICOMMON_NEED_LIBDRM=yes
1782             ;;
1783         xradeonsi)
1784             HAVE_GALLIUM_RADEONSI=yes
1785             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1786             gallium_require_drm_loader
1787             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS radeonsi"
1788             radeon_llvm_check "radeonsi"
1789             gallium_check_st "radeon/drm" "radeonsi/dri" "" "" "radeonsi/vdpau" "radeonsi/omx"
1790             DRICOMMON_NEED_LIBDRM=yes
1791             ;;
1792         xnouveau)
1793             HAVE_GALLIUM_NOUVEAU=yes
1794             PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1795             gallium_require_drm_loader
1796             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau"
1797             gallium_check_st "nouveau/drm" "dri-nouveau" "" "xvmc-nouveau" "vdpau-nouveau"
1798             DRICOMMON_NEED_LIBDRM=yes
1799             ;;
1800         xfreedreno)
1801             HAVE_GALLIUM_FREEDRENO=yes
1802             PKG_CHECK_MODULES([FREEDRENO], [libdrm_freedreno >= $LIBDRM_FREEDRENO_REQUIRED])
1803             gallium_require_drm_loader
1804             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS freedreno"
1805             gallium_check_st "freedreno/drm" "dri-freedreno" "" "" ""
1806             DRICOMMON_NEED_LIBDRM=yes
1807             ;;
1808         xswrast)
1809             HAVE_GALLIUM_SOFTPIPE=yes
1810             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe"
1811             if test "x$MESA_LLVM" = x1; then
1812                 HAVE_GALLIUM_LLVMPIPE=yes
1813                 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1814             fi
1815
1816             if test "x$enable_dri" = xyes; then
1817                 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1818             fi
1819             ;;
1820         *)
1821             AC_MSG_ERROR([Unknown Gallium driver: $driver])
1822             ;;
1823         esac
1824     done
1825 fi
1826
1827 dnl Set LLVM_LIBS - This is done after the driver configuration so
1828 dnl that drivers can add additonal components to LLVM_COMPONENTS.
1829 dnl Previously, gallium drivers were updating LLVM_LIBS directly
1830 dnl by calling llvm-config --libs ${DRIVER_LLVM_COMPONENTS}, but
1831 dnl this was causing the same libraries to be appear multiple times
1832 dnl in LLVM_LIBS.
1833
1834 if test "x$MESA_LLVM" != x0; then
1835
1836     LLVM_LIBS="`$LLVM_CONFIG --libs ${LLVM_COMPONENTS}`"
1837
1838     if test "x$enable_llvm_shared_libs" = xyes; then
1839         dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
1840         LLVM_SO_NAME=LLVM-`$LLVM_CONFIG --version`
1841         AS_IF([test -f "$LLVM_LIBDIR/lib$LLVM_SO_NAME.so"], [llvm_have_one_so=yes])
1842
1843         if test "x$llvm_have_one_so" = xyes; then
1844             dnl LLVM was built using auto*, so there is only one shared object.
1845             LLVM_LIBS="-l$LLVM_SO_NAME"
1846         else
1847             dnl If LLVM was built with CMake, there will be one shared object per
1848             dnl component.
1849             AS_IF([test ! -f "$LLVM_LIBDIR/libLLVMTarget.so"],
1850                     [AC_MSG_ERROR([Could not find llvm shared libraries:
1851         Please make sure you have built llvm with the --enable-shared option
1852         and that your llvm libraries are installed in $LLVM_LIBDIR
1853         If you have installed your llvm libraries to a different directory you
1854         can use the --with-llvm-prefix= configure flag to specify this directory.
1855         NOTE: Mesa is attempting to use llvm shared libraries by default.
1856         If you do not want to build with llvm shared libraries and instead want to
1857         use llvm static libraries then add --disable-llvm-shared-libs to your configure
1858         invocation and rebuild.])])
1859
1860            dnl We don't need to update LLVM_LIBS in this case because the LLVM
1861            dnl install uses a shared object for each compoenent and we have
1862            dnl already added all of these objects to LLVM_LIBS.
1863         fi
1864     else
1865         AC_MSG_WARN([Building mesa with staticly linked LLVM may cause compilation issues])
1866     fi
1867 fi
1868
1869 AM_CONDITIONAL(HAVE_GALLIUM_SVGA, test "x$HAVE_GALLIUM_SVGA" = xyes)
1870 AM_CONDITIONAL(HAVE_GALLIUM_I915, test "x$HAVE_GALLIUM_I915" = xyes)
1871 AM_CONDITIONAL(HAVE_GALLIUM_ILO, test "x$HAVE_GALLIUM_ILO" = xyes)
1872 AM_CONDITIONAL(HAVE_GALLIUM_R300, test "x$HAVE_GALLIUM_R300" = xyes)
1873 AM_CONDITIONAL(HAVE_GALLIUM_R600, test "x$HAVE_GALLIUM_R600" = xyes)
1874 AM_CONDITIONAL(HAVE_GALLIUM_RADEONSI, test "x$HAVE_GALLIUM_RADEONSI" = xyes)
1875 AM_CONDITIONAL(HAVE_GALLIUM_NOUVEAU, test "x$HAVE_GALLIUM_NOUVEAU" = xyes)
1876 AM_CONDITIONAL(HAVE_GALLIUM_FREEDRENO, test "x$HAVE_GALLIUM_FREEDRENO" = xyes)
1877 AM_CONDITIONAL(HAVE_GALLIUM_SOFTPIPE, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes)
1878 AM_CONDITIONAL(HAVE_GALLIUM_LLVMPIPE, test "x$HAVE_GALLIUM_LLVMPIPE" = xyes)
1879
1880 AM_CONDITIONAL(NEED_GALLIUM_SOFTPIPE_DRIVER, test "x$HAVE_GALLIUM_SVGA" = xyes -o \
1881                                                   "x$HAVE_GALLIUM_I915" = xyes -o \
1882                                                   "x$HAVE_GALLIUM_SOFTPIPE" = xyes)
1883 AM_CONDITIONAL(NEED_GALLIUM_LLVMPIPE_DRIVER, test "x$HAVE_GALLIUM_I915" = xyes -o \
1884                                                   "x$HAVE_GALLIUM_SOFTPIPE" = xyes \
1885                                                   && test "x$MESA_LLVM" = x1)
1886
1887 # NOTE: anything using xcb or other client side libs ends up in separate
1888 #       _CLIENT variables.  The pipe loader is built in two variants,
1889 #       one that is standalone and does not link any x client libs (for
1890 #       use by XA tracker in particular, but could be used in any case
1891 #       where communication with xserver is not desired).
1892 if test "x$enable_gallium_loader" = xyes; then
1893     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
1894
1895     if test "x$enable_gallium_xlib_loader" = xyes; then
1896         GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
1897         NEED_WINSYS_XLIB="yes"
1898         GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_XLIB"
1899     fi
1900
1901     if test "x$enable_gallium_drm_loader" = xyes; then
1902         GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRM"
1903         PKG_CHECK_MODULES([GALLIUM_PIPE_LOADER_XCB], [xcb xcb-dri2],
1904                           pipe_loader_have_xcb=yes, pipe_loader_have_xcb=no)
1905         if test "x$pipe_loader_have_xcb" = xyes; then
1906             GALLIUM_PIPE_LOADER_CLIENT_DEFINES="$GALLIUM_PIPE_LOADER_CLIENT_DEFINES -DHAVE_PIPE_LOADER_XCB"
1907             GALLIUM_PIPE_LOADER_CLIENT_LIBS="$GALLIUM_PIPE_LOADER_CLIENT_LIBS $GALLIUM_PIPE_LOADER_XCB_LIBS $LIBDRM_LIBS"
1908         fi
1909     fi
1910
1911     GALLIUM_PIPE_LOADER_CLIENT_DEFINES="$GALLIUM_PIPE_LOADER_CLIENT_DEFINES $GALLIUM_PIPE_LOADER_DEFINES"
1912     GALLIUM_PIPE_LOADER_CLIENT_LIBS="$GALLIUM_PIPE_LOADER_CLIENT_LIBS $GALLIUM_PIPE_LOADER_LIBS"
1913
1914     AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
1915     AC_SUBST([GALLIUM_PIPE_LOADER_LIBS])
1916     AC_SUBST([GALLIUM_PIPE_LOADER_CLIENT_DEFINES])
1917     AC_SUBST([GALLIUM_PIPE_LOADER_CLIENT_LIBS])
1918 fi
1919 AM_CONDITIONAL(NEED_PIPE_LOADER_XLIB, test "x$enable_gallium_xlib_loader" = xyes)
1920
1921 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
1922 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
1923 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
1924 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
1925 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
1926 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
1927
1928 AM_CONDITIONAL(NEED_RADEON_DRM_WINSYS, test "x$NEED_NONNULL_WINSYS" = xyes -a \
1929                                             "x$HAVE_GALLIUM_R300" = xyes -o \
1930                                             "x$HAVE_GALLIUM_R600" = xyes -o \
1931                                             "x$HAVE_GALLIUM_RADEONSI" = xyes)
1932 AM_CONDITIONAL(NEED_WINSYS_WRAPPER, test "x$HAVE_GALLIUM_I915" = xyes -o \
1933                                          "x$HAVE_GALLIUM_SVGA" = xyes)
1934 AM_CONDITIONAL(NEED_WINSYS_XLIB, test "x$NEED_WINSYS_XLIB" = xyes)
1935 AM_CONDITIONAL(NEED_RADEON_LLVM, test x$NEED_RADEON_LLVM = xyes)
1936 AM_CONDITIONAL(USE_R600_LLVM_COMPILER, test x$USE_R600_LLVM_COMPILER = xyes)
1937 AM_CONDITIONAL(HAVE_LOADER_GALLIUM, test x$enable_gallium_loader = xyes)
1938 AM_CONDITIONAL(HAVE_DRM_LOADER_GALLIUM, test x$enable_gallium_drm_loader = xyes)
1939 AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
1940 AM_CONDITIONAL(HAVE_MESA_LLVM, test x$MESA_LLVM = x1)
1941
1942 AC_SUBST([ELF_LIB])
1943
1944 AM_CONDITIONAL(DRICOMMON_NEED_LIBDRM, test "x$DRICOMMON_NEED_LIBDRM" = xyes)
1945 AM_CONDITIONAL(HAVE_LIBDRM, test "x$have_libdrm" = xyes)
1946 AM_CONDITIONAL(HAVE_X11_DRIVER, test "x$enable_xlib_glx" = xyes)
1947 AM_CONDITIONAL(HAVE_OSMESA, test "x$enable_osmesa" = xyes)
1948 AM_CONDITIONAL(HAVE_GALLIUM_OSMESA, test "x$enable_gallium_osmesa" = xyes)
1949
1950 AM_CONDITIONAL(HAVE_X86_ASM, test "x$asm_arch" = xx86 -o "x$asm_arch" = xx86_64)
1951 AM_CONDITIONAL(HAVE_X86_64_ASM, test "x$asm_arch" = xx86_64)
1952 AM_CONDITIONAL(HAVE_SPARC_ASM, test "x$asm_arch" = xsparc)
1953
1954 AC_SUBST([VDPAU_MAJOR], 1)
1955 AC_SUBST([VDPAU_MINOR], 0)
1956
1957 AC_SUBST([XVMC_MAJOR], 1)
1958 AC_SUBST([XVMC_MINOR], 0)
1959
1960 AC_SUBST([XA_MAJOR], 2)
1961 AC_SUBST([XA_MINOR], 2)
1962 AC_SUBST([XA_TINY], 0)
1963 AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_TINY")
1964
1965 dnl Restore LDFLAGS and CPPFLAGS
1966 LDFLAGS="$_SAVE_LDFLAGS"
1967 CPPFLAGS="$_SAVE_CPPFLAGS"
1968
1969 dnl Suppress clang's warnings about unused CFLAGS and CXXFLAGS
1970 if test "x$acv_mesa_CLANG" = xyes; then
1971     CFLAGS="$CFLAGS -Qunused-arguments"
1972     CXXFLAGS="$CXXFLAGS -Qunused-arguments"
1973 fi
1974
1975 dnl Add user CFLAGS and CXXFLAGS
1976 CFLAGS="$CFLAGS $USER_CFLAGS"
1977 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
1978
1979 dnl Substitute the config
1980 AC_CONFIG_FILES([Makefile
1981                 src/Makefile
1982                 src/egl/Makefile
1983                 src/egl/drivers/Makefile
1984                 src/egl/drivers/dri2/Makefile
1985                 src/egl/main/Makefile
1986                 src/egl/main/egl.pc
1987                 src/egl/wayland/Makefile
1988                 src/egl/wayland/wayland-drm/Makefile
1989                 src/egl/wayland/wayland-egl/Makefile
1990                 src/egl/wayland/wayland-egl/wayland-egl.pc
1991                 src/gallium/auxiliary/Makefile
1992                 src/gallium/auxiliary/pipe-loader/Makefile
1993                 src/gallium/drivers/Makefile
1994                 src/gallium/drivers/freedreno/Makefile
1995                 src/gallium/drivers/galahad/Makefile
1996                 src/gallium/drivers/i915/Makefile
1997                 src/gallium/drivers/identity/Makefile
1998                 src/gallium/drivers/ilo/Makefile
1999                 src/gallium/drivers/llvmpipe/Makefile
2000                 src/gallium/drivers/noop/Makefile
2001                 src/gallium/drivers/nouveau/Makefile
2002                 src/gallium/drivers/r300/Makefile
2003                 src/gallium/drivers/r600/Makefile
2004                 src/gallium/drivers/radeon/Makefile
2005                 src/gallium/drivers/radeonsi/Makefile
2006                 src/gallium/drivers/rbug/Makefile
2007                 src/gallium/drivers/softpipe/Makefile
2008                 src/gallium/drivers/svga/Makefile
2009                 src/gallium/drivers/trace/Makefile
2010                 src/gallium/state_trackers/Makefile
2011                 src/gallium/state_trackers/clover/Makefile
2012                 src/gallium/state_trackers/dri/Makefile
2013                 src/gallium/state_trackers/dri/drm/Makefile
2014                 src/gallium/state_trackers/dri/sw/Makefile
2015                 src/gallium/state_trackers/egl/Makefile
2016                 src/gallium/state_trackers/gbm/Makefile
2017                 src/gallium/state_trackers/glx/xlib/Makefile
2018                 src/gallium/state_trackers/omx/Makefile
2019                 src/gallium/state_trackers/osmesa/Makefile
2020                 src/gallium/state_trackers/vdpau/Makefile
2021                 src/gallium/state_trackers/vega/Makefile
2022                 src/gallium/state_trackers/xa/Makefile
2023                 src/gallium/state_trackers/xvmc/Makefile
2024                 src/gallium/targets/Makefile
2025                 src/gallium/targets/dri-freedreno/Makefile
2026                 src/gallium/targets/dri-i915/Makefile
2027                 src/gallium/targets/dri-ilo/Makefile
2028                 src/gallium/targets/dri-nouveau/Makefile
2029                 src/gallium/targets/dri-swrast/Makefile
2030                 src/gallium/targets/dri-vmwgfx/Makefile
2031                 src/gallium/targets/egl-static/Makefile
2032                 src/gallium/targets/gbm/Makefile
2033                 src/gallium/targets/opencl/Makefile
2034                 src/gallium/targets/xa/Makefile
2035                 src/gallium/targets/xa/xatracker.pc
2036                 src/gallium/targets/osmesa/Makefile
2037                 src/gallium/targets/osmesa/osmesa.pc
2038                 src/gallium/targets/pipe-loader/Makefile
2039                 src/gallium/targets/radeonsi/dri/Makefile
2040                 src/gallium/targets/radeonsi/omx/Makefile
2041                 src/gallium/targets/radeonsi/vdpau/Makefile
2042                 src/gallium/targets/r300/dri/Makefile
2043                 src/gallium/targets/r600/dri/Makefile
2044                 src/gallium/targets/r600/omx/Makefile
2045                 src/gallium/targets/r600/vdpau/Makefile
2046                 src/gallium/targets/r600/xvmc/Makefile
2047                 src/gallium/targets/libgl-xlib/Makefile
2048                 src/gallium/targets/vdpau-nouveau/Makefile
2049                 src/gallium/targets/xvmc-nouveau/Makefile
2050                 src/gallium/tests/trivial/Makefile
2051                 src/gallium/tests/unit/Makefile
2052                 src/gallium/winsys/Makefile
2053                 src/gallium/winsys/freedreno/drm/Makefile
2054                 src/gallium/winsys/i915/drm/Makefile
2055                 src/gallium/winsys/i915/sw/Makefile
2056                 src/gallium/winsys/intel/drm/Makefile
2057                 src/gallium/winsys/nouveau/drm/Makefile
2058                 src/gallium/winsys/radeon/drm/Makefile
2059                 src/gallium/winsys/svga/drm/Makefile
2060                 src/gallium/winsys/sw/dri/Makefile
2061                 src/gallium/winsys/sw/fbdev/Makefile
2062                 src/gallium/winsys/sw/null/Makefile
2063                 src/gallium/winsys/sw/wayland/Makefile
2064                 src/gallium/winsys/sw/wrapper/Makefile
2065                 src/gallium/winsys/sw/xlib/Makefile
2066                 src/gbm/Makefile
2067                 src/gbm/main/gbm.pc
2068                 src/glsl/Makefile
2069                 src/glx/Makefile
2070                 src/glx/tests/Makefile
2071                 src/gtest/Makefile
2072                 src/loader/Makefile
2073                 src/mapi/Makefile
2074                 src/mapi/es1api/Makefile
2075                 src/mapi/es1api/glesv1_cm.pc
2076                 src/mapi/es2api/Makefile
2077                 src/mapi/es2api/glesv2.pc
2078                 src/mapi/glapi/Makefile
2079                 src/mapi/glapi/gen/Makefile
2080                 src/mapi/glapi/tests/Makefile
2081                 src/mapi/shared-glapi/Makefile
2082                 src/mapi/shared-glapi/tests/Makefile
2083                 src/mapi/vgapi/Makefile
2084                 src/mapi/vgapi/vg.pc
2085                 src/mesa/Makefile
2086                 src/mesa/gl.pc
2087                 src/mesa/drivers/dri/dri.pc
2088                 src/mesa/drivers/dri/common/Makefile
2089                 src/mesa/drivers/dri/common/xmlpool/Makefile
2090                 src/mesa/drivers/dri/i915/Makefile
2091                 src/mesa/drivers/dri/i965/Makefile
2092                 src/mesa/drivers/dri/Makefile
2093                 src/mesa/drivers/dri/nouveau/Makefile
2094                 src/mesa/drivers/dri/r200/Makefile
2095                 src/mesa/drivers/dri/radeon/Makefile
2096                 src/mesa/drivers/dri/swrast/Makefile
2097                 src/mesa/drivers/osmesa/Makefile
2098                 src/mesa/drivers/osmesa/osmesa.pc
2099                 src/mesa/drivers/x11/Makefile
2100                 src/mesa/main/tests/Makefile
2101                 src/mesa/main/tests/hash_table/Makefile])
2102
2103 dnl Sort the dirs alphabetically
2104 GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2105 GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2106 GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2107 GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2108
2109 AC_OUTPUT
2110
2111 dnl
2112 dnl Output some configuration info for the user
2113 dnl
2114 echo ""
2115 echo "        prefix:          $prefix"
2116 echo "        exec_prefix:     $exec_prefix"
2117 echo "        libdir:          $libdir"
2118 echo "        includedir:      $includedir"
2119
2120 dnl API info
2121 echo ""
2122 echo "        OpenGL:          $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
2123 echo "        OpenVG:          $enable_openvg"
2124
2125 dnl Driver info
2126 echo ""
2127 case "x$enable_osmesa$enable_gallium_osmesa" in
2128 xnoyes)
2129         echo "        OSMesa:          lib$OSMESA_LIB (Gallium)"
2130         ;;
2131 xyesno)
2132         echo "        OSMesa:          lib$OSMESA_LIB"
2133         ;;
2134 xnono)
2135         echo "        OSMesa:          no"
2136         ;;
2137 esac
2138
2139 if test "x$enable_dri" != xno; then
2140         if test -z "$DRI_DIRS"; then
2141             echo "        DRI drivers:     no"
2142         else
2143             echo "        DRI drivers:     $DRI_DIRS"
2144         fi
2145         echo "        DRI driver dir:  $DRI_DRIVER_INSTALL_DIR"
2146 fi
2147
2148 case "x$enable_glx$enable_xlib_glx" in
2149 xyesyes)
2150     echo "        GLX:             Xlib-based"
2151     ;;
2152 xyesno)
2153     echo "        GLX:             DRI-based"
2154     ;;
2155 *)
2156     echo "        GLX:             $enable_glx"
2157     ;;
2158 esac
2159
2160 dnl EGL
2161 echo ""
2162 echo "        EGL:             $enable_egl"
2163 if test "$enable_egl" = yes; then
2164     echo "        EGL platforms:   $egl_platforms"
2165
2166     egl_drivers=""
2167     if test "x$HAVE_EGL_DRIVER_DRI2" != "x"; then
2168         egl_drivers="$egl_drivers builtin:egl_dri2"
2169     fi
2170
2171     if test "x$enable_gallium_egl" = xyes; then
2172         echo "        EGL drivers:    ${egl_drivers} egl_gallium"
2173         echo "        EGL Gallium STs:$EGL_CLIENT_APIS"
2174     else
2175         echo "        EGL drivers:    $egl_drivers"
2176     fi
2177 fi
2178
2179 echo ""
2180 if test "x$MESA_LLVM" = x1; then
2181     echo "        llvm:            yes"
2182     echo "        llvm-config:     $LLVM_CONFIG"
2183     echo "        llvm-version:    $LLVM_VERSION"
2184 else
2185     echo "        llvm:            no"
2186 fi
2187
2188 echo ""
2189 if test -n "$with_gallium_drivers"; then
2190     echo "        Gallium:         yes"
2191     echo "        Target dirs:     $GALLIUM_TARGET_DIRS"
2192     echo "        Winsys dirs:     $GALLIUM_WINSYS_DIRS"
2193     echo "        Driver dirs:     $GALLIUM_DRIVERS_DIRS"
2194     echo "        Trackers dirs:   $GALLIUM_STATE_TRACKERS_DIRS"
2195 else
2196     echo "        Gallium:         no"
2197 fi
2198
2199
2200 dnl Libraries
2201 echo ""
2202 echo "        Shared libs:     $enable_shared"
2203 echo "        Static libs:     $enable_static"
2204 echo "        Shared-glapi:    $enable_shared_glapi"
2205
2206 dnl Compiler options
2207 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2208 cflags=`echo $CFLAGS | \
2209     $SED 's/^ *//;s/  */ /;s/ *$//'`
2210 cxxflags=`echo $CXXFLAGS | \
2211     $SED 's/^ *//;s/  */ /;s/ *$//'`
2212 defines=`echo $DEFINES | $SED 's/^ *//;s/  */ /;s/ *$//'`
2213 echo ""
2214 echo "        CFLAGS:          $cflags"
2215 echo "        CXXFLAGS:        $cxxflags"
2216 echo "        Macros:          $defines"
2217 echo ""
2218 if test "x$MESA_LLVM" = x1; then
2219     echo "        LLVM_CFLAGS:     $LLVM_CFLAGS"
2220     echo "        LLVM_CXXFLAGS:   $LLVM_CXXFLAGS"
2221     echo "        LLVM_CPPFLAGS:   $LLVM_CPPFLAGS"
2222     echo ""
2223 fi
2224 echo "        PYTHON2:         $PYTHON2"
2225
2226 echo ""
2227 echo "        Run '${MAKE-make}' to build Mesa"
2228 echo ""