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