1 dnl Process this file with autoconf to create configure.
5 dnl Tell the user about autoconf.html in the --help output
6 m4_divert_once([HELP_END], [
7 See docs/autoconf.html for more details on the options for Mesa.])
9 AC_INIT([Mesa], [8.1.0],
10 [https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa])
11 AC_CONFIG_AUX_DIR([bin])
13 AM_INIT_AUTOMAKE([foreign -Wall])
15 dnl http://people.gnome.org/~walters/docs/build-api.txt
16 dnl We don't support srcdir != builddir.
17 echo \#buildapi-variable-no-builddir >/dev/null
19 # Support silent build rules, requires at least automake-1.11. Disable
20 # by either passing --disable-silent-rules to configure or passing V=1
22 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
25 LT_INIT([disable-static])
27 dnl Save user CFLAGS and CXXFLAGS so one can override the default ones
29 USER_CXXFLAGS="$CXXFLAGS"
31 dnl Versions for external dependencies
32 LIBDRM_REQUIRED=2.4.24
33 LIBDRM_RADEON_REQUIRED=2.4.31
34 LIBDRM_INTEL_REQUIRED=2.4.34
35 LIBDRM_NVVIEUX_REQUIRED=2.4.33
36 LIBDRM_NOUVEAU_REQUIRED=2.4.33
37 DRI2PROTO_REQUIRED=2.6
38 GLPROTO_REQUIRED=1.4.14
39 LIBDRM_XORG_REQUIRED=2.4.24
40 LIBKMS_XORG_REQUIRED=1.0.0
48 AC_CHECK_PROGS([MAKE], [gmake make])
49 AC_CHECK_PROGS([PYTHON2], [python2 python])
52 AC_PATH_PROG([MKDEP], [makedepend])
54 if test "x$MKDEP" = "x"; then
55 AC_MSG_ERROR([makedepend is required to build Mesa])
59 AC_PATH_PROG([YACC_INST], $YACC)
60 if test ! -f "$srcdir/src/glsl/glcpp/glcpp-parse.y"; then
61 if test -z "$YACC_INST"; then
62 AC_MSG_ERROR([yacc not found - unable to compile glcpp-parse.y])
67 AC_PATH_PROG([PERL], [perl])
69 AC_CHECK_PROG(INDENT, indent, indent, cat)
70 if test "x$INDENT" != "xcat"; then
71 AC_SUBST(INDENT_FLAGS, '-i4 -nut -br -brs -npcs -ce -T GLubyte -T GLbyte -T Bool')
74 dnl Our fallback install-sh is a symlink to minstall. Use the existing
75 dnl configuration in that case.
77 test "x$INSTALL" = "x$ac_install_sh" && INSTALL='$(MINSTALL)'
79 dnl We need a POSIX shell for parts of the build. Assume we have one
83 # Solaris /bin/sh is too old/non-POSIX compliant
84 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
89 dnl clang is mostly GCC-compatible, but its version is much lower,
90 dnl so we have to check for it.
91 AC_MSG_CHECKING([if compiling with clang])
94 [AC_LANG_PROGRAM([], [[
99 [acv_mesa_CLANG=yes], [acv_mesa_CLANG=no])
101 AC_MSG_RESULT([$acv_mesa_CLANG])
103 dnl If we're using GCC, make sure that it is at least version 3.3.0. Older
104 dnl versions are explictly not supported.
105 if test "x$GCC" = xyes -a "x$acv_mesa_CLANG" = xno; then
106 AC_MSG_CHECKING([whether gcc version is sufficient])
110 GCC_VERSION=`$CC -dumpversion`
111 if test $? -eq 0; then
112 GCC_VERSION_MAJOR=`echo $GCC_VERSION | cut -d. -f1`
113 GCC_VERSION_MINOR=`echo $GCC_VERSION | cut -d. -f2`
116 if test $GCC_VERSION_MAJOR -lt 3 -o $GCC_VERSION_MAJOR -eq 3 -a $GCC_VERSION_MINOR -lt 3 ; then
118 AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.])
125 MKDEP_OPTIONS=-fdepend
126 dnl Ask gcc where it's keeping its secret headers
127 if test "x$GCC" = xyes; then
128 for dir in include include-fixed; do
129 GCC_INCLUDES=`$CC -print-file-name=$dir`
130 if test "x$GCC_INCLUDES" != x && \
131 test "$GCC_INCLUDES" != "$dir" && \
132 test -d "$GCC_INCLUDES"; then
133 MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
137 AC_SUBST([MKDEP_OPTIONS])
139 dnl Make sure the pkg-config macros are defined
140 m4_ifndef([PKG_PROG_PKG_CONFIG],
141 [m4_fatal([Could not locate the pkg-config autoconf macros.
142 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
143 are in a different location, try setting the environment variable
144 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
145 PKG_PROG_PKG_CONFIG()
147 dnl LIB_DIR - library basename
148 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
151 dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
152 _SAVE_LDFLAGS="$LDFLAGS"
153 AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker])
154 AC_SUBST([EXTRA_LIB_PATH])
156 dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
157 _SAVE_CPPFLAGS="$CPPFLAGS"
158 AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers])
159 AC_SUBST([X11_INCLUDES])
166 DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS"
169 DEFINES="$DEFINES -DPTHREADS -DSVR4"
172 DEFINES="$DEFINES -DPTHREADS"
176 dnl Add flags for gcc and g++
177 if test "x$GCC" = xyes; then
178 CFLAGS="$CFLAGS -Wall -std=c99"
180 # Enable -Werror=implicit-function-declaration and
181 # -Werror=missing-prototypes, if available, or otherwise, just
182 # -Wmissing-prototypes. This is particularly useful to avoid
183 # generating a loadable driver module that has undefined symbols.
184 save_CFLAGS="$CFLAGS"
185 AC_MSG_CHECKING([whether $CC supports -Werror=missing-prototypes])
186 CFLAGS="$CFLAGS -Werror=implicit-function-declaration"
187 CFLAGS="$CFLAGS -Werror=missing-prototypes"
188 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
189 AC_MSG_RESULT([yes]),
190 [CFLAGS="$save_CFLAGS -Wmissing-prototypes";
191 AC_MSG_RESULT([no])]);
193 # Enable -fvisibility=hidden if using a gcc that supports it
194 save_CFLAGS="$CFLAGS"
195 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
196 VISIBILITY_CFLAGS="-fvisibility=hidden"
197 CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
198 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
199 [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
201 # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
204 # Work around aliasing bugs - developers should comment this out
205 CFLAGS="$CFLAGS -fno-strict-aliasing"
207 # gcc's builtin memcmp is slower than glibc's
208 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
209 CFLAGS="$CFLAGS -fno-builtin-memcmp"
211 if test "x$GXX" = xyes; then
212 CXXFLAGS="$CXXFLAGS -Wall"
214 # Enable -fvisibility=hidden if using a gcc that supports it
215 save_CXXFLAGS="$CXXFLAGS"
216 AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
217 VISIBILITY_CXXFLAGS="-fvisibility=hidden"
218 CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
220 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
221 [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
224 # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
225 CXXFLAGS=$save_CXXFLAGS
227 # Work around aliasing bugs - developers should comment this out
228 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
230 # gcc's builtin memcmp is slower than glibc's
231 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
232 CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp"
235 dnl even if the compiler appears to support it, using visibility attributes isn't
236 dnl going to do anything useful currently on cygwin apart from emit lots of warnings
240 VISIBILITY_CXXFLAGS=""
244 AC_SUBST([VISIBILITY_CFLAGS])
245 AC_SUBST([VISIBILITY_CXXFLAGS])
247 dnl These should be unnecessary, but let the user set them if they want
248 AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
249 Default is to use CFLAGS.])
250 AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
251 compiler. Default is to use CFLAGS.])
252 AC_SUBST([OPT_FLAGS])
253 AC_SUBST([ARCH_FLAGS])
256 dnl Hacks to enable 32 or 64 bit build
258 AC_ARG_ENABLE([32-bit],
259 [AS_HELP_STRING([--enable-32-bit],
260 [build 32-bit libraries @<:@default=auto@:>@])],
261 [enable_32bit="$enableval"],
264 if test "x$enable_32bit" = xyes; then
265 if test "x$GCC" = xyes; then
266 CFLAGS="$CFLAGS -m32"
267 ARCH_FLAGS="$ARCH_FLAGS -m32"
268 CCASFLAGS="$CCASFLAGS -m32"
270 if test "x$GXX" = xyes; then
271 CXXFLAGS="$CXXFLAGS -m32"
274 AC_ARG_ENABLE([64-bit],
275 [AS_HELP_STRING([--enable-64-bit],
276 [build 64-bit libraries @<:@default=auto@:>@])],
277 [enable_64bit="$enableval"],
280 if test "x$enable_64bit" = xyes; then
281 if test "x$GCC" = xyes; then
282 CFLAGS="$CFLAGS -m64"
284 if test "x$GXX" = xyes; then
285 CXXFLAGS="$CXXFLAGS -m64"
289 dnl Can't have static and shared libraries, default to static if user
290 dnl explicitly requested. If both disabled, set to static since shared
291 dnl was explicitly requested.
292 case "x$enable_static$enable_shared" in
294 AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
298 AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
306 AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
307 if test "$enable_static" = yes; then
308 MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
310 AC_SUBST([MKLIB_OPTIONS])
313 dnl other compiler options
315 AC_ARG_ENABLE([debug],
316 [AS_HELP_STRING([--enable-debug],
317 [use debug compiler flags and macros @<:@default=disabled@:>@])],
318 [enable_debug="$enableval"],
321 if test "x$enable_debug" = xyes; then
322 DEFINES="$DEFINES -DDEBUG"
323 if test "x$GCC" = xyes; then
326 if test "x$GXX" = xyes; then
327 CXXFLAGS="$CXXFLAGS -g"
334 LIB_PREFIX_GLOB='lib'
335 LIB_VERSION_SEPARATOR='.'
336 if test "$enable_static" = yes; then
341 LIB_EXTENSION='dylib' ;;
343 dnl prefix can be 'cyg' or 'lib'
344 LIB_PREFIX_GLOB='???'
345 LIB_VERSION_SEPARATOR='-'
346 LIB_EXTENSION='dll' ;;
350 LIB_EXTENSION='so' ;;
355 dnl Mangled Mesa support
357 AC_ARG_ENABLE([mangling],
358 [AS_HELP_STRING([--enable-mangling],
359 [enable mangled symbols and library name @<:@default=disabled@:>@])],
360 [enable_mangling="${enableval}"],
366 if test "x${enable_mangling}" = "xyes" ; then
367 DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
370 OSMESA_LIB="MangledOSMesa"
374 AC_SUBST([OSMESA_LIB])
375 AM_CONDITIONAL(HAVE_MANGLED_GL, test $GL_LIB = MangledGL)
378 dnl potentially-infringing-but-nobody-knows-for-sure stuff
380 AC_ARG_ENABLE([texture-float],
381 [AS_HELP_STRING([--enable-texture-float],
382 [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
383 [enable_texture_float="$enableval"],
384 [enable_texture_float=no]
386 if test "x$enable_texture_float" = xyes; then
387 AC_MSG_WARN([Floating-point textures enabled.])
388 AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
389 DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
392 GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
393 GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
394 OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
395 EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
396 GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
397 GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION}
398 VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION}
399 GLAPI_LIB_NAME='lib$(GLAPI_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 OSMESA_LIB_GLOB=${LIB_PREFIX_GLOB}'$(OSMESA_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
404 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
405 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
406 GLESv1_CM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv1_CM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
407 GLESv2_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv2_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
408 VG_LIB_GLOB=${LIB_PREFIX_GLOB}'$(VG_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
409 GLAPI_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLAPI_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
411 AC_SUBST([GL_LIB_NAME])
412 AC_SUBST([GLU_LIB_NAME])
413 AC_SUBST([OSMESA_LIB_NAME])
414 AC_SUBST([EGL_LIB_NAME])
415 AC_SUBST([GLESv1_CM_LIB_NAME])
416 AC_SUBST([GLESv2_LIB_NAME])
417 AC_SUBST([VG_LIB_NAME])
418 AC_SUBST([GLAPI_LIB_NAME])
420 AC_SUBST([GL_LIB_GLOB])
421 AC_SUBST([GLU_LIB_GLOB])
422 AC_SUBST([OSMESA_LIB_GLOB])
423 AC_SUBST([EGL_LIB_GLOB])
424 AC_SUBST([GLESv1_CM_LIB_GLOB])
425 AC_SUBST([GLESv2_LIB_GLOB])
426 AC_SUBST([VG_LIB_GLOB])
427 AC_SUBST([GLAPI_LIB_GLOB])
430 dnl Arch/platform-specific settings
433 [AS_HELP_STRING([--disable-asm],
434 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
435 [enable_asm="$enableval"],
442 AC_MSG_CHECKING([whether to enable assembly])
443 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
444 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
445 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
449 AC_MSG_RESULT([no, cross compiling])
453 # check for supported arches
454 if test "x$enable_asm" = xyes; then
458 linux* | *freebsd* | dragonfly* | *netbsd*)
459 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
465 linux* | *freebsd* | dragonfly* | *netbsd*)
466 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
488 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
489 MESA_ASM_FILES='$(X86_FILES)'
490 GLAPI_ASM_SOURCES='$(X86_API)'
491 AC_MSG_RESULT([yes, x86])
494 ASM_FLAGS="-DUSE_X86_64_ASM"
495 MESA_ASM_FILES='$(X86_64_FILES)'
496 GLAPI_ASM_SOURCES='$(X86-64_API)'
497 AC_MSG_RESULT([yes, x86_64])
500 ASM_FLAGS="-DUSE_SPARC_ASM"
501 MESA_ASM_FILES='$(SPARC_FILES)'
502 GLAPI_ASM_SOURCES='$(SPARC_API)'
503 AC_MSG_RESULT([yes, sparc])
506 AC_MSG_RESULT([no, platform not supported])
510 AC_SUBST([ASM_FLAGS])
511 AC_SUBST([MESA_ASM_FILES])
512 AC_SUBST([GLAPI_ASM_SOURCES])
517 dnl Check to see if dlopen is in default libraries (like Solaris, which
518 dnl has it in libc), or if libdl is needed to get it.
519 AC_CHECK_FUNC([dlopen], [],
520 [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
521 AC_SUBST([DLOPEN_LIBS])
523 dnl See if posix_memalign is available
524 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
526 dnl SELinux awareness.
527 AC_ARG_ENABLE([selinux],
528 [AS_HELP_STRING([--enable-selinux],
529 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
530 [MESA_SELINUX="$enableval"],
532 if test "x$enable_selinux" = "xyes"; then
533 AC_CHECK_HEADER([selinux/selinux.h],[],
534 [AC_MSG_ERROR([SELinux headers not found])])
535 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
536 [AC_MSG_ERROR([SELinux library not found])])
537 SELINUX_LIBS="-lselinux"
538 DEFINES="$DEFINES -DMESA_SELINUX"
542 AC_ARG_ENABLE([opengl],
543 [AS_HELP_STRING([--disable-opengl],
544 [disable support for standard OpenGL API @<:@default=no@:>@])],
545 [enable_opengl="$enableval"],
547 AC_ARG_ENABLE([gles1],
548 [AS_HELP_STRING([--enable-gles1],
549 [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
550 [enable_gles1="$enableval"],
552 AC_ARG_ENABLE([gles2],
553 [AS_HELP_STRING([--enable-gles2],
554 [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
555 [enable_gles2="$enableval"],
557 AC_ARG_ENABLE([openvg],
558 [AS_HELP_STRING([--enable-openvg],
559 [enable support for OpenVG API @<:@default=no@:>@])],
560 [enable_openvg="$enableval"],
564 [AS_HELP_STRING([--enable-dri],
565 [enable DRI modules @<:@default=auto@:>@])],
566 [enable_dri="$enableval"],
569 [AS_HELP_STRING([--enable-glx],
570 [enable GLX library @<:@default=auto@:>@])],
571 [enable_glx="$enableval"],
573 AC_ARG_ENABLE([osmesa],
574 [AS_HELP_STRING([--enable-osmesa],
575 [enable OSMesa library @<:@default=auto@:>@])],
576 [enable_osmesa="$enableval"],
577 [enable_osmesa=auto])
579 [AS_HELP_STRING([--disable-egl],
580 [disable EGL library @<:@default=enabled@:>@])],
581 [enable_egl="$enableval"],
584 AC_ARG_ENABLE([xorg],
585 [AS_HELP_STRING([--enable-xorg],
586 [enable support for X.Org DDX API @<:@default=no@:>@])],
587 [enable_xorg="$enableval"],
590 [AS_HELP_STRING([--enable-xa],
591 [enable build of the XA X Acceleration API @<:@default=no@:>@])],
592 [enable_xa="$enableval"],
594 AC_ARG_ENABLE([d3d1x],
595 [AS_HELP_STRING([--enable-d3d1x],
596 [enable support for Direct3D 10 & 11 low-level API @<:@default=no@:>@])],
597 [enable_d3d1x="$enableval"],
600 [AS_HELP_STRING([--enable-gbm],
601 [enable gbm library @<:@default=auto@:>@])],
602 [enable_gbm="$enableval"],
605 AC_ARG_ENABLE([xvmc],
606 [AS_HELP_STRING([--enable-xvmc],
607 [enable xvmc library @<:@default=auto@:>@])],
608 [enable_xvmc="$enableval"],
610 AC_ARG_ENABLE([vdpau],
611 [AS_HELP_STRING([--enable-vdpau],
612 [enable vdpau library @<:@default=auto@:>@])],
613 [enable_vdpau="$enableval"],
616 [AS_HELP_STRING([--enable-va],
617 [enable va library @<:@default=auto@:>@])],
618 [enable_va="$enableval"],
620 AC_ARG_ENABLE([opencl],
621 [AS_HELP_STRING([--enable-opencl],
622 [enable OpenCL library @<:@default=no@:>@])],
623 [enable_opencl="$enableval"],
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])
645 AC_ARG_ENABLE([r600-llvm-compiler],
646 [AS_HELP_STRING([--enable-r600-llvm-compiler],
647 [Enable experimental LLVM backend for graphics shaders @<:@default=disable@:>@])],
648 [enable_r600_llvm="$enableval"],
649 [enable_r600_llvm=no])
651 AC_ARG_ENABLE([gallium_tests],
652 [AS_HELP_STRING([--enable-gallium-tests],
653 [Enable optional Gallium tests) @<:@default=disable@:>@])],
654 [enable_gallium_tests="$enableval"],
655 [enable_gallium_tests=no])
657 # Option for Gallium drivers
658 GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
660 AC_ARG_WITH([gallium-drivers],
661 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
662 [comma delimited Gallium drivers list, e.g.
663 "i915,nouveau,r300,r600,svga,swrast"
664 @<:@default=r300,r600,swrast@:>@])],
665 [with_gallium_drivers="$withval"],
666 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
668 # Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it
669 # here so that the script doesn't choke on an unknown driver name later.
670 case "$with_gallium_drivers" in
671 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
672 no) with_gallium_drivers='' ;;
675 if test "x$enable_opengl" = xno -a \
676 "x$enable_gles1" = xno -a \
677 "x$enable_gles2" = xno -a \
678 "x$enable_openvg" = xno -a \
679 "x$enable_xorg" = xno -a \
680 "x$enable_xa" = xno -a \
681 "x$enable_d3d1x" = xno -a \
682 "x$enable_xvmc" = xno -a \
683 "x$enable_vdpau" = xno -a \
684 "x$enable_va" = xno -a \
685 "x$enable_opencl" = xno; then
686 AC_MSG_ERROR([at least one API should be enabled])
690 if test "x$enable_opengl" = xno; then
691 API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
693 API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
695 if test "x$enable_gles1" = xyes; then
696 API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
698 if test "x$enable_gles2" = xyes; then
699 API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
701 AC_SUBST([API_DEFINES])
703 AC_ARG_ENABLE([shared-glapi],
704 [AS_HELP_STRING([--enable-shared-glapi],
705 [EXPERIMENTAL. Enable shared glapi for OpenGL @<:@default=no@:>@])],
706 [enable_shared_glapi="$enableval"],
707 [enable_shared_glapi=no])
710 if test "x$enable_shared_glapi" = xyes; then
712 # libGL will use libglapi for function lookups (IN_DRI_DRIVER means to use
714 DEFINES="$DEFINES -DIN_DRI_DRIVER"
715 SRC_DIRS="$SRC_DIRS mapi/shared-glapi"
717 AC_SUBST([SHARED_GLAPI])
718 AM_CONDITIONAL(HAVE_SHARED_GLAPI, test $SHARED_GLAPI = 1)
721 dnl Driver configuration. Options are xlib, dri and osmesa right now.
722 dnl More later: fbdev, ...
724 default_driver="xlib"
729 i*86|x86_64|powerpc*|sparc*|ia64*) default_driver="dri";;
732 *freebsd* | dragonfly* | *netbsd*)
734 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
739 if test "x$enable_opengl" = xno; then
743 AC_ARG_WITH([driver],
744 [AS_HELP_STRING([--with-driver=DRIVER], [DEPRECATED])],
745 [mesa_driver="$withval"],
747 dnl Check for valid option
748 case "x$mesa_driver" in
749 xxlib|xdri|xosmesa|xno)
750 if test "x$enable_dri" != xauto -o \
751 "x$enable_glx" != xauto -o \
752 "x$enable_osmesa" != xauto -o \
753 "x$enable_xlib_glx" != xauto; then
754 AC_MSG_ERROR([--with-driver=$mesa_driver is deprecated])
758 mesa_driver="$default_driver"
761 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
765 # map $mesa_driver to APIs
766 if test "x$enable_dri" = xauto; then
767 case "x$mesa_driver" in
768 xdri) enable_dri=yes ;;
773 if test "x$enable_glx" = xauto; then
774 case "x$mesa_driver" in
775 xdri|xxlib) enable_glx=yes ;;
780 if test "x$enable_osmesa" = xauto; then
781 case "x$mesa_driver" in
782 xxlib|xosmesa) enable_osmesa=yes ;;
783 *) enable_osmesa=no ;;
787 if test "x$enable_xlib_glx" = xauto; then
788 case "x$mesa_driver" in
789 xxlib) enable_xlib_glx=yes ;;
790 *) enable_xlib_glx=no ;;
794 if test "x$enable_glx" = xno; then
798 AM_CONDITIONAL(HAVE_DRI, test x"$enable_dri" = xyes)
801 dnl Driver specific build directories
804 dnl this variable will be prepended to SRC_DIRS and is not exported
809 GALLIUM_DIRS="auxiliary drivers state_trackers"
810 GALLIUM_TARGET_DIRS=""
811 GALLIUM_WINSYS_DIRS="sw"
812 GALLIUM_DRIVERS_DIRS="galahad trace rbug noop identity"
813 GALLIUM_STATE_TRACKERS_DIRS=""
815 # build shared-glapi if enabled for OpenGL or if OpenGL ES is enabled
816 case "x$enable_shared_glapi$enable_gles1$enable_gles2" in
818 CORE_DIRS="$CORE_DIRS mapi/shared-glapi"
822 # build glapi if OpenGL is enabled
823 if test "x$enable_opengl" = xyes; then
824 CORE_DIRS="$CORE_DIRS mapi/glapi"
827 # build es1api if OpenGL ES 1.x is enabled
828 if test "x$enable_gles1" = xyes; then
829 CORE_DIRS="$CORE_DIRS mapi/es1api"
832 # build es2api if OpenGL ES 2.x is enabled
833 if test "x$enable_gles2" = xyes; then
834 CORE_DIRS="$CORE_DIRS mapi/es2api"
837 # build glsl and mesa if OpenGL or OpenGL ES is enabled
838 case "x$enable_opengl$enable_gles1$enable_gles2" in
840 CORE_DIRS="mapi/glapi/gen $CORE_DIRS glsl mesa"
844 case "x$enable_glx$enable_xlib_glx" in
846 DRIVER_DIRS="$DRIVER_DIRS x11"
847 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
848 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
849 GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS"
850 HAVE_WINSYS_XLIB="yes"
854 SRC_DIRS="$SRC_DIRS glx"
858 if test "x$enable_dri" = xyes; then
859 DRIVER_DIRS="$DRIVER_DIRS dri"
861 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/dri"
862 GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
866 if test "x$enable_osmesa" = xyes; then
867 # the empty space matters for osmesa... (see src/mesa/Makefile)
868 if test -n "$DRIVER_DIRS"; then
869 DRIVER_DIRS="$DRIVER_DIRS osmesa"
877 AC_SUBST([DRIVER_DIRS])
878 AC_SUBST([GALLIUM_DIRS])
879 AC_SUBST([GALLIUM_TARGET_DIRS])
880 AC_SUBST([GALLIUM_WINSYS_DIRS])
881 AC_SUBST([GALLIUM_DRIVERS_DIRS])
882 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
883 AC_SUBST([MESA_LLVM])
886 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
887 [have_libdrm=yes], [have_libdrm=no])
889 if test "x$enable_dri" = xyes; then
890 # DRI must be shared, I think
891 if test "$enable_static" = yes; then
892 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
895 # not a hard requirement as swrast does not depend on it
896 if test "x$have_libdrm" = xyes; then
897 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
902 dnl Find out if X is available. The variable have_x is set if libX11 is
903 dnl found to mimic AC_PATH_XTRA.
905 if test -n "$PKG_CONFIG"; then
906 AC_MSG_CHECKING([pkg-config files for X11 are available])
907 PKG_CHECK_EXISTS([x11],[
913 AC_MSG_RESULT([$x11_pkgconfig])
917 dnl Use the autoconf macro if no pkg-config files
918 if test "$x11_pkgconfig" = yes; then
919 PKG_CHECK_MODULES([X11], [x11])
922 test -z "$X11_CFLAGS" && X11_CFLAGS="$X_CFLAGS"
923 test -z "$X11_LIBS" && X11_LIBS="$X_LIBS -lX11"
924 AC_SUBST([X11_CFLAGS])
928 dnl Try to tell the user that the --x-* options are only used when
929 dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
930 m4_divert_once([HELP_BEGIN],
931 [These options are only used when the X libraries cannot be found by the
932 pkg-config utility.])
934 dnl We need X for xlib and dri, so bomb now if it's not found
935 if test "x$enable_glx" = xyes -a "x$no_x" = xyes; then
936 AC_MSG_ERROR([X11 development libraries needed for GLX])
939 if test "x$enable_glx" = xyes; then
940 DEFINES="$DEFINES -DUSE_XCB"
943 dnl Direct rendering or just indirect rendering
946 dnl Disable by default on GNU/Hurd
947 driglx_direct_default="no"
950 dnl Disable by default on cygwin
951 driglx_direct_default="no"
954 driglx_direct_default="yes"
957 AC_ARG_ENABLE([driglx-direct],
958 [AS_HELP_STRING([--disable-driglx-direct],
959 [enable direct rendering in GLX and EGL for DRI \
960 @<:@default=auto@:>@])],
961 [driglx_direct="$enableval"],
962 [driglx_direct="$driglx_direct_default"])
965 dnl libGL configuration per driver
967 case "x$enable_glx$enable_xlib_glx" in
970 if test "$x11_pkgconfig" = yes; then
971 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
972 GL_PC_REQ_PRIV="x11 xext"
973 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
974 GL_LIB_DEPS="$XLIBGL_LIBS"
976 # should check these...
977 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
978 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
979 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
980 GL_PC_CFLAGS="$X11_INCLUDES"
982 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread $DLOPEN_LIBS"
983 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
987 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
988 GL_PC_REQ_PRIV="glproto >= $GLPROTO_REQUIRED"
989 if test x"$driglx_direct" = xyes; then
990 if test "x$have_libdrm" != xyes; then
991 AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
993 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
994 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
997 # find the DRI deps for libGL
998 if test "$x11_pkgconfig" = yes; then
999 dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx"
1001 # add xf86vidmode if available
1002 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
1003 if test "$HAVE_XF86VIDMODE" = yes ; then
1004 dri_modules="$dri_modules xxf86vm"
1007 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
1008 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
1009 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
1010 GL_LIB_DEPS="$DRIGL_LIBS"
1012 # should check these...
1013 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
1014 if test "x$HAVE_XF86VIDMODE" == xyes; then
1015 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
1017 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXdamage -lXfixes"
1019 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
1020 GL_PC_CFLAGS="$X11_INCLUDES"
1022 # XCB can only be used from pkg-config
1023 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
1024 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
1025 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
1026 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
1029 # Check to see if the xcb-glx library is new enough to support
1030 # GLX_ARB_create_context. This bit of hackery is necessary until XCB 1.8
1032 save_CPPFLAGS="$CPPFLAGS"
1033 save_LDFLAGS="$LDFLAGS"
1034 CPPFLAGS="$CPPFLAGS $X11_INCLUDES"
1035 LDFLAGS="$LDFLAGS $GL_LIB_DEPS"
1036 AC_CHECK_LIB(xcb-glx, xcb_glx_create_context_attribs_arb_checked,
1037 [HAVE_XCB_GLX_CREATE_CONTEXT=yes],
1038 [HAVE_XCB_GLX_CREATE_CONTEXT=no])
1039 CPPFLAGS="$save_CPPFLAGS"
1040 LDFLAGS="$save_LDFLAGS"
1042 if test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes; then
1043 X11_INCLUDES="$X11_INCLUDES -DHAVE_XCB_GLX_CREATE_CONTEXT"
1046 # need DRM libs, -lpthread, etc.
1047 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1048 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1052 # This is outside the case (above) so that it is invoked even for non-GLX
1054 AM_CONDITIONAL(HAVE_XCB_GLX_CREATE_CONTEXT,
1055 test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes)
1056 AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
1058 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1059 GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1060 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1061 GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1063 AC_SUBST([GL_LIB_DEPS])
1064 AC_SUBST([GL_PC_REQ_PRIV])
1065 AC_SUBST([GL_PC_LIB_PRIV])
1066 AC_SUBST([GL_PC_CFLAGS])
1067 AC_SUBST([DRI_PC_REQ_PRIV])
1068 AC_SUBST([GLESv1_CM_LIB_DEPS])
1069 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
1070 AC_SUBST([GLESv2_LIB_DEPS])
1071 AC_SUBST([GLESv2_PC_LIB_PRIV])
1073 GLAPI_LIB_DEPS="-lpthread $SELINUX_LIBS"
1074 AC_SUBST([GLAPI_LIB_DEPS])
1077 dnl Setup default DRI CFLAGS
1078 DRI_CFLAGS='$(CFLAGS)'
1079 DRI_CXXFLAGS='$(CXXFLAGS)'
1080 DRI_LIB_DEPS='$(TOP)/src/mesa/libmesa.a'
1081 MESA_MODULES='$(TOP)/src/mesa/libmesa.a'
1083 if test "x$enable_dri" = xyes && test "x$driglx_direct" = xyes ; then
1084 DRICORE_GLSL_LIBS='$(TOP)/$(LIB_DIR)/libglsl.so'
1085 DRICORE_LIBS='$(TOP)/$(LIB_DIR)/libdricore.so'
1086 DRICORE_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -lglsl'
1087 DRI_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore -lglsl'
1088 DRI_CFLAGS='$(CFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1089 DRI_CXXFLAGS='$(CXXFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1090 MESA_MODULES='$(DRICORE_LIBS) $(DRICORE_GLSL_LIBS)'
1093 AM_CONDITIONAL(HAVE_DRICORE, test x$HAVE_DRICORE = xyes)
1094 AC_SUBST([DRICORE_LIBS])
1095 AC_SUBST([DRICORE_GLSL_LIBS])
1096 AC_SUBST([DRICORE_LIB_DEPS])
1097 AC_SUBST([DRI_CXXFLAGS])
1098 AC_SUBST([DRI_CFLAGS])
1099 AC_SUBST([MESA_MODULES])
1101 AC_SUBST([HAVE_XF86VIDMODE])
1106 case "x$enable_glx$enable_xlib_glx" in
1108 DEFINES="$DEFINES -DUSE_XSHM"
1111 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1112 if test "x$driglx_direct" = xyes; then
1113 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1122 AC_ARG_ENABLE([glx-tls],
1123 [AS_HELP_STRING([--enable-glx-tls],
1124 [enable TLS support in GLX @<:@default=disabled@:>@])],
1125 [GLX_USE_TLS="$enableval"],
1127 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
1129 AS_IF([test "x$GLX_USE_TLS" = xyes],
1130 [DEFINES="${DEFINES} -DGLX_USE_TLS -DPTHREADS"])
1135 dnl Directory for DRI drivers
1136 AC_ARG_WITH([dri-driverdir],
1137 [AS_HELP_STRING([--with-dri-driverdir=DIR],
1138 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
1139 [DRI_DRIVER_INSTALL_DIR="$withval"],
1140 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
1141 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
1142 dnl Extra search path for DRI drivers
1143 AC_ARG_WITH([dri-searchpath],
1144 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
1145 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
1146 [DRI_DRIVER_SEARCH_DIR="$withval"],
1147 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
1148 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
1149 dnl Which drivers to build - default is chosen by platform
1150 AC_ARG_WITH([dri-drivers],
1151 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
1152 [comma delimited DRI drivers list, e.g.
1153 "swrast,i965,radeon" @<:@default=auto@:>@])],
1154 [with_dri_drivers="$withval"],
1155 [with_dri_drivers=yes])
1156 if test "x$with_dri_drivers" = x; then
1160 dnl If $with_dri_drivers is yes, directories will be added through
1163 case "$with_dri_drivers" in
1166 # classic DRI drivers require FEATURE_GL to build
1167 if test "x$enable_opengl" = xyes; then
1172 # verify the requested driver directories exist
1173 dri_drivers=`IFS=', '; echo $with_dri_drivers`
1174 for driver in $dri_drivers; do
1175 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
1176 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
1178 DRI_DIRS="$dri_drivers"
1179 if test -n "$DRI_DIRS" -a "x$enable_opengl" != xyes; then
1180 AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1185 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
1186 if test "x$enable_dri" = xyes; then
1187 # Platform specific settings and drivers to build
1190 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1191 DEFINES="$DEFINES -DHAVE_ALIAS"
1195 if test "x$DRI_DIRS" = "xyes"; then
1196 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1200 # Build only the drivers for cards that exist on PowerPC.
1201 if test "x$DRI_DIRS" = "xyes"; then
1202 DRI_DIRS="r200 radeon swrast"
1206 # Build only the drivers for cards that exist on sparc
1207 if test "x$DRI_DIRS" = "xyes"; then
1208 DRI_DIRS="r200 radeon swrast"
1213 freebsd* | dragonfly* | *netbsd*)
1214 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
1215 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
1217 if test "x$DRI_DIRS" = "xyes"; then
1218 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1222 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1223 DEFINES="$DEFINES -DHAVE_ALIAS"
1226 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1229 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1230 if test "x$DRI_DIRS" = "xyes"; then
1237 if test "x$DRI_DIRS" = "xyes"; then
1238 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1241 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
1244 if test "x$enable_dri" = xyes; then
1247 AC_ARG_WITH([expat],
1248 [AS_HELP_STRING([--with-expat=DIR],
1249 [expat install directory])],[
1250 EXPAT_INCLUDES="-I$withval/include"
1251 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
1252 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
1253 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
1255 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
1257 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1258 [AC_MSG_ERROR([Expat required for DRI.])])
1262 # if we are building any dri driver other than swrast ...
1263 if test -n "$DRI_DIRS" -a x"$DRI_DIRS" != xswrast; then
1264 # ... libdrm is required
1265 if test "x$have_libdrm" != xyes; then
1266 AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
1268 # ... and build dricommon
1272 # put all the necessary libs together
1273 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
1275 AC_SUBST([DRI_DIRS])
1276 AC_SUBST([EXPAT_INCLUDES])
1277 AC_SUBST([DRI_LIB_DEPS])
1281 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1283 for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1299 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED])
1300 HAVE_NOUVEAU_DRI=yes;
1306 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1308 for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1311 HAVE_RADEON_DRI=yes;
1324 HAVE_SWRAST_DRI=yes;
1328 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
1329 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
1330 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
1331 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
1332 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
1333 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
1334 AM_CONDITIONAL(HAVE_COMMON_DRI, test x$HAVE_COMMON_DRI = xyes)
1337 dnl OSMesa configuration
1340 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1341 AC_ARG_WITH([osmesa-bits],
1342 [AS_HELP_STRING([--with-osmesa-bits=BITS],
1343 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1344 [osmesa_bits="$withval"],
1346 if test "x$osmesa_bits" != x8; then
1347 if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then
1348 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1352 case "x$osmesa_bits" in
1354 OSMESA_LIB="${OSMESA_LIB}"
1357 OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
1358 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1361 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1365 if test "x$enable_osmesa" = xyes; then
1366 # only link libraries with osmesa if shared
1367 if test "$enable_static" = no; then
1368 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1373 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1375 AC_SUBST([OSMESA_LIB_DEPS])
1376 AC_SUBST([OSMESA_MESA_DEPS])
1377 AC_SUBST([OSMESA_PC_REQ])
1378 AC_SUBST([OSMESA_PC_LIB_PRIV])
1381 dnl gbm configuration
1383 if test "x$enable_gbm" = xauto; then
1384 case "$with_egl_platforms" in
1391 if test "x$enable_gbm" = xyes; then
1392 SRC_DIRS="$SRC_DIRS gbm"
1394 PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1395 AC_MSG_ERROR([gbm needs udev]))
1397 if test "x$enable_dri" = xyes; then
1398 GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
1399 if test "$SHARED_GLAPI" -eq 0; then
1400 AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1404 GBM_PC_REQ_PRIV="libudev"
1405 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1406 AC_SUBST([GBM_PC_REQ_PRIV])
1407 AC_SUBST([GBM_PC_LIB_PRIV])
1410 dnl EGL configuration
1414 if test "x$enable_egl" = xyes; then
1415 SRC_DIRS="$SRC_DIRS egl"
1416 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS -lpthread"
1418 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1420 if test "$enable_static" != yes; then
1421 # build egl_glx when libGL is built
1422 if test "x$enable_glx" = xyes; then
1423 HAVE_EGL_DRIVER_GLX=1
1426 PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1427 [have_libudev=yes],[have_libudev=no])
1428 if test "$have_libudev" = yes; then
1429 DEFINES="$DEFINES -DHAVE_LIBUDEV"
1432 if test "x$enable_dri" = xyes; then
1433 HAVE_EGL_DRIVER_DRI2=1
1438 AC_SUBST([EGL_LIB_DEPS])
1441 dnl EGL Gallium configuration
1443 if test "x$enable_gallium_egl" = xyes; then
1444 if test "x$with_gallium_drivers" = x; then
1445 AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
1447 if test "x$enable_egl" = xno; then
1448 AC_MSG_ERROR([cannot enable egl_gallium without EGL])
1450 if test "x$have_libdrm" != xyes; then
1451 AC_MSG_ERROR([egl_gallium requires libdrm >= $LIBDRM_REQUIRED])
1454 GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
1455 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static"
1460 dnl gbm Gallium configuration
1462 if test "x$enable_gallium_gbm" = xauto; then
1463 case "$enable_gbm$HAVE_ST_EGL$enable_dri$with_egl_platforms" in
1465 enable_gallium_gbm=yes ;;
1467 enable_gallium_gbm=no ;;
1470 if test "x$enable_gallium_gbm" = xyes; then
1471 if test "x$with_gallium_drivers" = x; then
1472 AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
1474 if test "x$enable_gbm" = xno; then
1475 AC_MSG_ERROR([cannot enable gbm_gallium without gbm])
1477 # gbm_gallium abuses DRI_LIB_DEPS to link. Make sure it is set.
1478 if test "x$enable_dri" = xno; then
1479 AC_MSG_ERROR([gbm_gallium requires --enable-dri to build])
1482 GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS"
1483 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm"
1485 enable_gallium_loader=yes
1489 dnl X.Org DDX configuration
1491 if test "x$enable_xorg" = xyes; then
1492 PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1493 PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1494 PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1495 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1496 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1497 HAVE_XEXTPROTO_71="no")
1498 GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS"
1503 dnl XA configuration
1505 if test "x$enable_xa" = xyes; then
1508 AC_CHECK_PROG(NM, nm, "nm")
1509 if test "x$AWK" = x || test "x$GREP" = x || test "x$NM" = x; then
1510 AC_MSG_WARN([Missing one of nm, grep or awk. Disabling xa.])
1514 if test "x$enable_xa" = xyes; then
1515 GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS"
1523 dnl OpenVG configuration
1527 if test "x$enable_openvg" = xyes; then
1528 if test "x$enable_egl" = xno; then
1529 AC_MSG_ERROR([cannot enable OpenVG without EGL])
1531 if test "x$with_gallium_drivers" = x; then
1532 AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1534 if test "x$enable_gallium_egl" = xno; then
1535 AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
1538 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1539 VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS -lpthread"
1540 CORE_DIRS="$CORE_DIRS mapi/vgapi"
1541 GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1546 dnl D3D1X configuration
1549 if test "x$enable_d3d1x" = xyes; then
1550 if test "x$with_gallium_drivers" = x; then
1551 AC_MSG_ERROR([cannot enable D3D1X without Gallium])
1554 GALLIUM_STATE_TRACKERS_DIRS="d3d1x $GALLIUM_STATE_TRACKERS_DIRS"
1559 dnl Gallium G3DVL configuration
1561 AC_ARG_ENABLE([gallium-g3dvl],
1562 [AS_HELP_STRING([--enable-gallium-g3dvl],
1563 [build gallium g3dvl @<:@default=disabled@:>@])],
1564 [enable_gallium_g3dvl="$enableval"],
1565 [enable_gallium_g3dvl=no])
1566 if test "x$enable_gallium_g3dvl" = xyes; then
1567 if test "x$with_gallium_drivers" = x; then
1568 AC_MSG_ERROR([cannot enable G3DVL without Gallium])
1571 if test "x$enable_xvmc" = xauto; then
1572 PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no])
1575 if test "x$enable_vdpau" = xauto; then
1576 PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no])
1579 if test "x$enable_va" = xauto; then
1580 #don't enable vaapi state tracker even if package exists
1581 #PKG_CHECK_EXISTS([libva], [enable_vdpau=yes], [enable_vdpau=no])
1586 if test "x$enable_xvmc" = xyes; then
1587 PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6 x11-xcb xcb-dri2 >= 1.8])
1588 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xvmc"
1592 if test "x$enable_vdpau" = xyes; then
1593 PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.4.1 x11-xcb xcb-dri2 >= 1.8])
1594 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau"
1598 if test "x$enable_va" = xyes; then
1599 PKG_CHECK_MODULES([LIBVA], [libva = 0.31.1 x11-xcb xcb-dri2 >= 1.8])
1600 AC_MSG_WARN([vaapi state tracker currently unmaintained])
1601 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS va"
1606 dnl OpenCL configuration
1609 AC_ARG_WITH([libclc-path],
1610 [AS_HELP_STRING([--with-libclc-path],
1611 [Path to libclc builtins library. Example: --with-libclc-path=\$HOME/libclc/])],
1612 [LIBCLC_PATH="$withval"],
1615 AC_SUBST([LIBCLC_PATH])
1617 if test "x$enable_opencl" = xyes; then
1618 if test "x$with_gallium_drivers" = x; then
1619 AC_MSG_ERROR([cannot enable OpenCL without Gallium])
1622 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6; then
1623 AC_MSG_ERROR([gcc >= 4.6 is required to build clover])
1626 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS clover"
1627 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS opencl"
1628 enable_gallium_loader=yes
1632 dnl GLU configuration
1634 AC_ARG_ENABLE([glu],
1635 [AS_HELP_STRING([--disable-glu],
1636 [enable OpenGL Utility library @<:@default=enabled@:>@])],
1637 [enable_glu="$enableval"],
1640 if test "x$enable_glu" = xyes; then
1641 if test "x$enable_glx" = xno -a "x$enable_osmesa" = xno; then
1642 AC_MSG_NOTICE([Disabling GLU since there is no OpenGL driver])
1647 if test "x$enable_glu" = xyes; then
1648 SRC_DIRS="$SRC_DIRS glu"
1650 if test "x$enable_glx" = xno; then
1651 # Link libGLU to libOSMesa instead of libGL
1654 if test "$enable_static" = no; then
1655 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
1660 # If static, empty GLU_LIB_DEPS and add libs for programs to link
1662 GLU_PC_LIB_PRIV="-lm"
1663 if test "$enable_static" = no; then
1665 GLU_MESA_DEPS='-l$(GL_LIB)'
1672 if test "$enable_static" = no; then
1673 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
1675 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
1676 AC_SUBST([GLU_LIB_DEPS])
1677 AC_SUBST([GLU_MESA_DEPS])
1678 AC_SUBST([GLU_PC_REQ])
1679 AC_SUBST([GLU_PC_REQ_PRIV])
1680 AC_SUBST([GLU_PC_LIB_PRIV])
1681 AC_SUBST([GLU_PC_CFLAGS])
1683 AC_SUBST([PROGRAM_DIRS])
1686 dnl Gallium configuration
1688 if test "x$with_gallium_drivers" != x; then
1689 SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
1692 AC_SUBST([LLVM_BINDIR])
1693 AC_SUBST([LLVM_CFLAGS])
1694 AC_SUBST([LLVM_CPPFLAGS])
1695 AC_SUBST([LLVM_CXXFLAGS])
1696 AC_SUBST([LLVM_LIBDIR])
1697 AC_SUBST([LLVM_LIBS])
1698 AC_SUBST([LLVM_LDFLAGS])
1699 AC_SUBST([LLVM_INCLUDEDIR])
1700 AC_SUBST([LLVM_VERSION])
1702 case "x$enable_opengl$enable_gles1$enable_gles2" in
1704 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1708 AC_SUBST([VG_LIB_DEPS])
1709 AC_SUBST([EGL_CLIENT_APIS])
1712 dnl EGL Platforms configuration
1714 AC_ARG_WITH([egl-platforms],
1715 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1716 [comma delimited native platforms libEGL supports, e.g.
1717 "x11,drm" @<:@default=auto@:>@])],
1718 [with_egl_platforms="$withval"],
1719 [if test "x$enable_egl" = xyes; then
1720 with_egl_platforms="x11"
1722 with_egl_platforms=""
1727 if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
1728 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1731 # Do per-EGL platform setups and checks
1732 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1733 for plat in $egl_platforms; do
1736 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/$plat"
1740 PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-server],, \
1741 [AC_MSG_ERROR([cannot find libwayland-client])])
1742 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
1744 m4_ifdef([WAYLAND_SCANNER_RULES],
1745 [WAYLAND_SCANNER_RULES(['$(top_srcdir)/src/egl/wayland/wayland-drm/protocol'])])
1749 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes])
1750 # workaround a bug in xcb-dri2 generated by xcb-proto 1.6
1752 AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [],
1753 [DEFINES="$DEFINES -DXCB_DRI2_CONNECT_DEVICE_NAME_BROKEN"])
1758 test "x$enable_gbm" = "xno" &&
1759 AC_MSG_ERROR([EGL platform drm needs gbm])
1766 AC_MSG_ERROR([EGL platform '$plat' does not exist])
1770 case "$plat$have_libudev" in
1772 AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;;
1776 # libEGL wants to default to the first platform specified in
1777 # ./configure. parse that here.
1778 if test "x$egl_platforms" != "x"; then
1779 FIRST_PLATFORM_CAPS=`echo $egl_platforms | sed 's| .*||' | tr 'a-z' 'A-Z'`
1780 EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
1782 EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
1785 EGL_PLATFORMS="$egl_platforms"
1787 AM_CONDITIONAL(HAVE_EGL_PLATFORM_X11, echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1)
1788 AM_CONDITIONAL(HAVE_EGL_PLATFORM_WAYLAND, echo "$egl_platforms" | grep 'wayland' >/dev/null 2>&1)
1789 AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep 'drm' >/dev/null 2>&1)
1790 AM_CONDITIONAL(HAVE_EGL_PLATFORM_FBDEV, echo "$egl_platforms" | grep 'fbdev' >/dev/null 2>&1)
1791 AM_CONDITIONAL(HAVE_EGL_PLATFORM_NULL, echo "$egl_platforms" | grep 'null' >/dev/null 2>&1)
1793 AM_CONDITIONAL(HAVE_EGL_DRIVER_DRI2, test "x$HAVE_EGL_DRIVER_DRI2" != "x")
1794 AM_CONDITIONAL(HAVE_EGL_DRIVER_GLX, test "x$HAVE_EGL_DRIVER_GLX" != "x")
1796 AC_SUBST([EGL_NATIVE_PLATFORM])
1797 AC_SUBST([EGL_PLATFORMS])
1798 AC_SUBST([EGL_CFLAGS])
1800 AC_ARG_WITH([egl-driver-dir],
1801 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1802 [directory for EGL drivers [[default=${libdir}/egl]]])],
1803 [EGL_DRIVER_INSTALL_DIR="$withval"],
1804 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1805 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1807 AC_ARG_WITH([xorg-driver-dir],
1808 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1809 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1810 [XORG_DRIVER_INSTALL_DIR="$withval"],
1811 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1812 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1814 AC_ARG_WITH([max-width],
1815 [AS_HELP_STRING([--with-max-width=N],
1816 [Maximum framebuffer width (4096)])],
1817 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1818 AS_IF([test "${withval}" -gt "4096"],
1819 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1821 AC_ARG_WITH([max-height],
1822 [AS_HELP_STRING([--with-max-height=N],
1823 [Maximum framebuffer height (4096)])],
1824 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1825 AS_IF([test "${withval}" -gt "4096"],
1826 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1832 AC_ARG_ENABLE([gallium-llvm],
1833 [AS_HELP_STRING([--enable-gallium-llvm],
1834 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1835 [enable_gallium_llvm="$enableval"],
1836 [enable_gallium_llvm=auto])
1838 AC_ARG_WITH([llvm-shared-libs],
1839 [AS_HELP_STRING([--with-llvm-shared-libs],
1840 [link with LLVM shared libraries @<:@default=disabled@:>@])],
1841 [with_llvm_shared_libs=yes],
1842 [with_llvm_shared_libs=no])
1844 if test "x$with_gallium_drivers" = x; then
1845 enable_gallium_llvm=no
1847 if test "x$enable_gallium_llvm" = xauto; then
1849 i*86|x86_64) enable_gallium_llvm=yes;;
1852 if test "x$enable_gallium_llvm" = xyes; then
1853 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1855 if test "x$LLVM_CONFIG" != xno; then
1856 LLVM_VERSION=`$LLVM_CONFIG --version | sed 's/svn.*//g'`
1857 LLVM_CFLAGS=`$LLVM_CONFIG --cppflags|sed -e 's/-DNDEBUG\>//g' -e 's/-pedantic//g' -e 's/-Wcovered-switch-default//g'`
1858 if test "x$with_llvm_shared_libs" = xyes; then
1859 dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
1860 LLVM_LIBS="-lLLVM-`$LLVM_CONFIG --version`"
1862 LLVM_LIBS="`$LLVM_CONFIG --libs engine bitwriter`"
1863 if test "x$enable_opencl" = xyes; then
1864 LLVM_LIBS="${LLVM_LIBS} `llvm-config --libs ipo linker instrumentation`"
1867 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1868 LLVM_BINDIR=`$LLVM_CONFIG --bindir`
1869 LLVM_CXXFLAGS=`$LLVM_CONFIG --cxxflags`
1870 LLVM_CPPFLAGS=`$LLVM_CONFIG --cppflags`
1871 LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
1872 LLVM_LIBDIR=`$LLVM_CONFIG --libdir`
1873 DEFINES="${DEFINES} -DHAVE_LLVM=`echo $LLVM_VERSION | sed -e 's/\([[0-9]]\)\.\([[0-9]]\)/0x0\10\2/g'`"
1882 dnl Directory for XVMC libs
1883 AC_ARG_WITH([xvmc-libdir],
1884 [AS_HELP_STRING([--with-xvmc-libdir=DIR],
1885 [directory for the XVMC libraries @<:@default=${libdir}@:>@])],
1886 [XVMC_LIB_INSTALL_DIR="$withval"],
1887 [XVMC_LIB_INSTALL_DIR='${libdir}'])
1888 AC_SUBST([XVMC_LIB_INSTALL_DIR])
1893 if test "x$enable_gallium_tests" = xyes; then
1894 SRC_DIRS="$SRC_DIRS gallium/tests/trivial"
1895 enable_gallium_loader=yes
1898 dnl Directory for VDPAU libs
1899 AC_ARG_WITH([vdpau-libdir],
1900 [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1901 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1902 [VDPAU_LIB_INSTALL_DIR="$withval"],
1903 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1904 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
1906 dnl Directory for VA libs
1907 AC_ARG_WITH([va-libdir],
1908 [AS_HELP_STRING([--with-va-libdir=DIR],
1909 [directory for the VA libraries @<:@default=${libdir}/va@:>@])],
1910 [VA_LIB_INSTALL_DIR="$withval"],
1911 [VA_LIB_INSTALL_DIR='${libdir}/va'])
1912 AC_SUBST([VA_LIB_INSTALL_DIR])
1914 dnl Directory for OpenCL libs
1915 AC_ARG_WITH([opencl-libdir],
1916 [AS_HELP_STRING([--with-opencl-libdir=DIR],
1917 [directory for the OpenCL libraries @<:@default=${libdir}/opencl@:>@])],
1918 [OPENCL_LIB_INSTALL_DIR="$withval"],
1919 [OPENCL_LIB_INSTALL_DIR='${libdir}/opencl'])
1920 AC_SUBST([OPENCL_LIB_INSTALL_DIR])
1923 dnl Gallium helper functions
1925 gallium_check_st() {
1926 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes ||
1927 test "x$HAVE_ST_XA" = xyes || test "x$HAVE_ST_XVMC" = xyes ||
1928 test "x$HAVE_ST_VDPAU" = xyes || test "x$HAVE_ST_VA" = xyes; then
1929 if test "x$have_libdrm" != xyes; then
1930 AC_MSG_ERROR([DRI or Xorg DDX requires libdrm >= $LIBDRM_REQUIRED])
1932 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1934 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1935 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1937 if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
1938 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1940 if test "x$HAVE_ST_XA" = xyes && test "x$4" != x; then
1941 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
1943 if test "x$HAVE_ST_XVMC" = xyes && test "x$5" != x; then
1944 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5"
1946 if test "x$HAVE_ST_VDPAU" = xyes && test "x$6" != x; then
1947 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6"
1949 if test "x$HAVE_ST_VA" = xyes && test "x$7" != x; then
1950 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $7"
1954 gallium_require_llvm() {
1955 if test "x$MESA_LLVM" = x0; then
1957 i*86|x86_64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1962 gallium_require_drm_loader() {
1963 if test "x$enable_gallium_loader" = xyes; then
1964 PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1965 AC_MSG_ERROR([Gallium drm loader requrires libudev]))
1966 if test "x$have_libdrm" != xyes; then
1967 AC_MSG_ERROR([Gallium drm loader requires libdrm >= $LIBDRM_REQUIRED])
1969 enable_gallium_drm_loader=yes
1974 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
1975 if test "x$with_gallium_drivers" != x; then
1976 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1977 for driver in $gallium_drivers; do
1980 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
1981 gallium_check_st "svga/drm" "dri-vmwgfx" "" "xa-vmwgfx"
1984 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1985 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe"
1986 if test "x$MESA_LLVM" = x1; then
1987 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1989 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1990 gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1993 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1994 gallium_require_llvm "Gallium R300"
1995 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1996 gallium_check_st "radeon/drm" "dri-r300" "xorg-r300" "" "xvmc-r300" "vdpau-r300" "va-r300"
1999 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2000 gallium_require_drm_loader
2001 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
2002 if test "x$enable_r600_llvm" = xyes -o "x$enable_opencl" = xyes; then
2003 if test "x$LLVM_VERSION" != "x3.1"; then
2004 AC_MSG_ERROR([LLVM 3.1 is required for the r600 llvm compiler.])
2006 NEED_RADEON_GALLIUM=yes;
2008 if test "x$enable_r600_llvm" = xyes; then
2009 USE_R600_LLVM_COMPILER=yes;
2011 if test "x$enable_opencl" = xyes -a "x$with_llvm_shared_libs" = xno; then
2012 LLVM_LIBS="${LLVM_LIBS} `llvm-config --libs bitreader asmparser`"
2014 gallium_check_st "radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600" "va-r600"
2017 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2018 gallium_require_drm_loader
2019 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS radeonsi"
2020 if test "x$LLVM_VERSION" != "x3.1"; then
2021 AC_MSG_ERROR([LLVM 3.1 is required to build the radeonsi driver.])
2023 NEED_RADEON_GALLIUM=yes;
2024 gallium_check_st "radeon/drm" "dri-radeonsi" "xorg-radeonsi"
2027 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
2028 gallium_require_drm_loader
2029 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nv30 nv50 nvc0"
2030 gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau" "" "xvmc-nouveau" "vdpau-nouveau"
2033 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe"
2034 if test "x$MESA_LLVM" = x1; then
2035 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
2038 if test "x$HAVE_ST_DRI" = xyes; then
2039 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
2041 if test "x$HAVE_ST_VDPAU" = xyes; then
2042 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS vdpau-softpipe"
2044 if test "x$HAVE_ST_XVMC" = xyes; then
2045 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS xvmc-softpipe"
2047 if test "x$HAVE_ST_VA" = xyes; then
2048 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS va-softpipe"
2050 if test "x$HAVE_ST_VDPAU" = xyes ||
2051 test "x$HAVE_ST_XVMC" = xyes ||
2052 test "x$HAVE_ST_VA" = xyes; then
2053 if test "x$HAVE_WINSYS_XLIB" != xyes; then
2054 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
2059 AC_MSG_ERROR([Unknown Gallium driver: $driver])
2065 if test "x$enable_gallium_loader" = xyes; then
2066 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
2067 GALLIUM_PIPE_LOADER_DEFINES="-DHAVE_PIPE_LOADER_SW"
2068 GALLIUM_PIPE_LOADER_LIBS="\$(TOP)/src/gallium/auxiliary/pipe-loader/libpipe_loader.a"
2069 GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS \$(TOP)/src/gallium/winsys/sw/null/libws_null.a"
2071 if test "x$HAVE_WINSYS_XLIB" = xyes; then
2072 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_XLIB"
2073 GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS \$(TOP)/src/gallium/winsys/sw/xlib/libws_xlib.a"
2076 if test "x$enable_gallium_drm_loader" = xyes; then
2077 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRM"
2080 AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
2081 AC_SUBST([GALLIUM_PIPE_LOADER_LIBS])
2084 dnl Tell Automake which drivers to build
2085 for driver in $GALLIUM_DRIVERS_DIRS; do
2088 HAVE_GALAHAD_GALLIUM=yes;
2091 HAVE_IDENTITY_GALLIUM=yes;
2094 HAVE_NOOP_GALLIUM=yes;
2097 GALLIUM_MAKE_DIRS="$GALLIUM_MAKE_DIRS $driver"
2102 AM_CONDITIONAL(HAVE_GALAHAD_GALLIUM, test x$HAVE_GALAHAD_GALLIUM = xyes)
2103 AM_CONDITIONAL(HAVE_IDENTITY_GALLIUM, test x$HAVE_IDENTITY_GALLIUM = xyes)
2104 AM_CONDITIONAL(HAVE_NOOP_GALLIUM, test x$HAVE_NOOP_GALLIUM = xyes)
2105 AM_CONDITIONAL(NEED_RADEON_GALLIUM, test x$NEED_RADEON_GALLIUM = xyes)
2106 AM_CONDITIONAL(USE_R600_LLVM_COMPILER, test x$USE_R600_LLVM_COMPILER = xyes)
2107 AM_CONDITIONAL(HAVE_LOADER_GALLIUM, test x$enable_gallium_loader = xyes)
2108 AM_CONDITIONAL(HAVE_DRM_LOADER_GALLIUM, test x$enable_gallium_drm_loader = xyes)
2109 AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
2110 AC_SUBST([GALLIUM_MAKE_DIRS])
2112 AM_CONDITIONAL(HAVE_X11_DRIVER, echo "$DRIVER_DIRS" | grep 'x11' >/dev/null 2>&1)
2113 AM_CONDITIONAL(HAVE_DRI_DRIVER, echo "$DRIVER_DIRS" | grep 'dri' >/dev/null 2>&1)
2114 AM_CONDITIONAL(HAVE_OSMESA_DRIVER, echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1)
2116 AM_CONDITIONAL(HAVE_X86_ASM, echo "$ASM_FLAGS" | grep 'X86_ASM' >/dev/null 2>&1)
2117 AM_CONDITIONAL(HAVE_X86_64_ASM, echo "$ASM_FLAGS" | grep 'X86_64_ASM' >/dev/null 2>&1)
2118 AM_CONDITIONAL(HAVE_SPARC_ASM, echo "$ASM_FLAGS" | grep 'SPARC_ASM' >/dev/null 2>&1)
2120 dnl prepend CORE_DIRS to SRC_DIRS
2121 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
2123 dnl Restore LDFLAGS and CPPFLAGS
2124 LDFLAGS="$_SAVE_LDFLAGS"
2125 CPPFLAGS="$_SAVE_CPPFLAGS"
2127 dnl Add user CFLAGS and CXXFLAGS
2128 CFLAGS="$CFLAGS $USER_CFLAGS"
2129 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
2131 dnl Substitute the config
2132 AC_CONFIG_FILES([configs/autoconf
2135 src/gallium/auxiliary/pipe-loader/Makefile
2136 src/gallium/state_trackers/clover/Makefile
2137 src/gallium/drivers/Makefile
2138 src/gallium/drivers/r300/Makefile
2139 src/gallium/drivers/r600/Makefile
2140 src/gallium/targets/opencl/Makefile
2143 src/egl/drivers/Makefile
2144 src/egl/drivers/dri2/Makefile
2145 src/egl/drivers/glx/Makefile
2146 src/egl/main/Makefile
2148 src/egl/wayland/Makefile
2149 src/egl/wayland/wayland-egl/Makefile
2150 src/egl/wayland/wayland-egl/wayland-egl.pc
2151 src/egl/wayland/wayland-drm/Makefile
2152 src/glsl/tests/Makefile
2154 src/mapi/shared-glapi/Makefile
2156 src/mesa/libdricore/Makefile
2157 src/mesa/drivers/dri/dri.pc
2158 src/mesa/drivers/dri/Makefile
2159 src/mesa/drivers/dri/common/Makefile
2160 src/mesa/drivers/dri/i915/Makefile
2161 src/mesa/drivers/dri/i965/Makefile
2162 src/mesa/drivers/dri/nouveau/Makefile
2163 src/mesa/drivers/dri/r200/Makefile
2164 src/mesa/drivers/dri/radeon/Makefile
2165 src/mesa/drivers/dri/swrast/Makefile
2167 tests/glx/Makefile])
2169 dnl Replace the configs/current symlink
2170 AC_CONFIG_COMMANDS([configs],[
2171 if test -f configs/current || test -L configs/current; then
2172 rm -f configs/current
2174 ln -s autoconf configs/current
2177 dnl Sort the dirs alphabetically
2178 GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2179 GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2180 GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2181 GALLIUM_MAKE_DIRS=`echo $GALLIUM_MAKE_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2182 GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2187 dnl Output some configuration info for the user
2190 echo " prefix: $prefix"
2191 echo " exec_prefix: $exec_prefix"
2192 echo " libdir: $libdir"
2193 echo " includedir: $includedir"
2197 echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
2198 echo " OpenVG: $enable_openvg"
2202 if test "x$enable_osmesa" != xno; then
2203 echo " OSMesa: lib$OSMESA_LIB"
2208 if test "x$enable_dri" != xno; then
2209 # cleanup the drivers var
2210 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
2211 if test "x$DRI_DIRS" = x; then
2212 echo " DRI drivers: no"
2214 echo " DRI drivers: $dri_dirs"
2216 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
2219 case "x$enable_glx$enable_xlib_glx" in
2221 echo " GLX: Xlib-based"
2224 echo " GLX: DRI-based"
2227 echo " GLX: $enable_glx"
2232 echo " GLU: $enable_glu"
2236 echo " EGL: $enable_egl"
2237 if test "$enable_egl" = yes; then
2238 echo " EGL platforms: $EGL_PLATFORMS"
2241 if test "x$HAVE_EGL_DRIVER_GLX" != "x"; then
2242 egl_drivers="$egl_drivers builtin:egl_glx"
2244 if test "x$HAVE_EGL_DRIVER_DRI2" != "x"; then
2245 egl_drivers="$egl_drivers builtin:egl_dri2"
2248 if test "x$HAVE_ST_EGL" = xyes; then
2249 echo " EGL drivers: ${egl_drivers} egl_gallium"
2250 echo " EGL Gallium STs:$EGL_CLIENT_APIS"
2252 echo " EGL drivers: $egl_drivers"
2257 if test "x$MESA_LLVM" = x1; then
2259 echo " llvm-config: $LLVM_CONFIG"
2260 echo " llvm-version: $LLVM_VERSION"
2266 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
2267 echo " Gallium: yes"
2268 echo " Gallium dirs: $GALLIUM_DIRS"
2269 echo " Target dirs: $GALLIUM_TARGET_DIRS"
2270 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
2271 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
2272 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
2280 echo " Shared libs: $enable_shared"
2281 echo " Static libs: $enable_static"
2283 dnl Compiler options
2284 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2285 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2286 $SED 's/^ *//;s/ */ /;s/ *$//'`
2287 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2288 $SED 's/^ *//;s/ */ /;s/ *$//'`
2289 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
2291 echo " CFLAGS: $cflags"
2292 echo " CXXFLAGS: $cxxflags"
2293 echo " Macros: $defines"
2295 echo " PYTHON2: $PYTHON2"
2298 echo " Run '${MAKE-make}' to build Mesa"