OSDN Git Service

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