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