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