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