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