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])])
24 m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
27 LT_INIT([disable-static])
29 dnl Save user CFLAGS and CXXFLAGS so one can override the default ones
31 USER_CXXFLAGS="$CXXFLAGS"
33 dnl Versions for external dependencies
34 LIBDRM_REQUIRED=2.4.24
35 LIBDRM_RADEON_REQUIRED=2.4.31
36 LIBDRM_INTEL_REQUIRED=2.4.34
37 LIBDRM_NVVIEUX_REQUIRED=2.4.33
38 LIBDRM_NOUVEAU_REQUIRED=2.4.33
39 DRI2PROTO_REQUIRED=2.6
40 GLPROTO_REQUIRED=1.4.14
41 LIBDRM_XORG_REQUIRED=2.4.24
42 LIBKMS_XORG_REQUIRED=1.0.0
50 AC_CHECK_PROGS([MAKE], [gmake make])
51 AC_CHECK_PROGS([PYTHON2], [python2 python])
54 AC_PATH_PROG([MKDEP], [makedepend])
56 if test "x$MKDEP" = "x"; then
57 AC_MSG_ERROR([makedepend is required to build Mesa])
61 AC_PATH_PROG([YACC_INST], $YACC)
62 if test ! -f "$srcdir/src/glsl/glcpp/glcpp-parse.y"; then
63 if test -z "$YACC_INST"; then
64 AC_MSG_ERROR([yacc not found - unable to compile glcpp-parse.y])
69 AC_PATH_PROG([PERL], [perl])
71 AC_CHECK_PROG(INDENT, indent, indent, cat)
72 if test "x$INDENT" != "xcat"; then
73 AC_SUBST(INDENT_FLAGS, '-i4 -nut -br -brs -npcs -ce -T GLubyte -T GLbyte -T Bool')
76 dnl Our fallback install-sh is a symlink to minstall. Use the existing
77 dnl configuration in that case.
79 test "x$INSTALL" = "x$ac_install_sh" && INSTALL='$(MINSTALL)'
81 dnl We need a POSIX shell for parts of the build. Assume we have one
85 # Solaris /bin/sh is too old/non-POSIX compliant
86 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
91 dnl clang is mostly GCC-compatible, but its version is much lower,
92 dnl so we have to check for it.
93 AC_MSG_CHECKING([if compiling with clang])
96 [AC_LANG_PROGRAM([], [[
101 [acv_mesa_CLANG=yes], [acv_mesa_CLANG=no])
103 AC_MSG_RESULT([$acv_mesa_CLANG])
105 dnl If we're using GCC, make sure that it is at least version 3.3.0. Older
106 dnl versions are explictly not supported.
107 if test "x$GCC" = xyes -a "x$acv_mesa_CLANG" = xno; then
108 AC_MSG_CHECKING([whether gcc version is sufficient])
112 GCC_VERSION=`$CC -dumpversion`
113 if test $? -eq 0; then
114 GCC_VERSION_MAJOR=`echo $GCC_VERSION | cut -d. -f1`
115 GCC_VERSION_MINOR=`echo $GCC_VERSION | cut -d. -f2`
118 if test $GCC_VERSION_MAJOR -lt 3 -o $GCC_VERSION_MAJOR -eq 3 -a $GCC_VERSION_MINOR -lt 3 ; then
120 AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.])
127 MKDEP_OPTIONS=-fdepend
128 dnl Ask gcc where it's keeping its secret headers
129 if test "x$GCC" = xyes; then
130 for dir in include include-fixed; do
131 GCC_INCLUDES=`$CC -print-file-name=$dir`
132 if test "x$GCC_INCLUDES" != x && \
133 test "$GCC_INCLUDES" != "$dir" && \
134 test -d "$GCC_INCLUDES"; then
135 MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
139 AC_SUBST([MKDEP_OPTIONS])
141 dnl Make sure the pkg-config macros are defined
142 m4_ifndef([PKG_PROG_PKG_CONFIG],
143 [m4_fatal([Could not locate the pkg-config autoconf macros.
144 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
145 are in a different location, try setting the environment variable
146 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
147 PKG_PROG_PKG_CONFIG()
149 dnl LIB_DIR - library basename
150 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
153 dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
154 _SAVE_LDFLAGS="$LDFLAGS"
155 AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker])
156 AC_SUBST([EXTRA_LIB_PATH])
158 dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
159 _SAVE_CPPFLAGS="$CPPFLAGS"
160 AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers])
161 AC_SUBST([X11_INCLUDES])
168 DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS"
171 DEFINES="$DEFINES -DPTHREADS -DSVR4"
174 DEFINES="$DEFINES -DPTHREADS"
178 dnl Add flags for gcc and g++
179 if test "x$GCC" = xyes; then
180 CFLAGS="$CFLAGS -Wall -std=c99"
182 # Enable -Werror=implicit-function-declaration and
183 # -Werror=missing-prototypes, if available, or otherwise, just
184 # -Wmissing-prototypes. This is particularly useful to avoid
185 # generating a loadable driver module that has undefined symbols.
186 save_CFLAGS="$CFLAGS"
187 AC_MSG_CHECKING([whether $CC supports -Werror=missing-prototypes])
188 CFLAGS="$CFLAGS -Werror=implicit-function-declaration"
189 CFLAGS="$CFLAGS -Werror=missing-prototypes"
190 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
191 AC_MSG_RESULT([yes]),
192 [CFLAGS="$save_CFLAGS -Wmissing-prototypes";
193 AC_MSG_RESULT([no])]);
195 # Enable -fvisibility=hidden if using a gcc that supports it
196 save_CFLAGS="$CFLAGS"
197 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
198 VISIBILITY_CFLAGS="-fvisibility=hidden"
199 CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
200 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
201 [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
203 # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
206 # Work around aliasing bugs - developers should comment this out
207 CFLAGS="$CFLAGS -fno-strict-aliasing"
209 # gcc's builtin memcmp is slower than glibc's
210 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
211 CFLAGS="$CFLAGS -fno-builtin-memcmp"
213 if test "x$GXX" = xyes; then
214 CXXFLAGS="$CXXFLAGS -Wall"
216 # Enable -fvisibility=hidden if using a gcc that supports it
217 save_CXXFLAGS="$CXXFLAGS"
218 AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
219 VISIBILITY_CXXFLAGS="-fvisibility=hidden"
220 CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
222 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
223 [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
226 # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
227 CXXFLAGS=$save_CXXFLAGS
229 # Work around aliasing bugs - developers should comment this out
230 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
232 # gcc's builtin memcmp is slower than glibc's
233 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
234 CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp"
237 dnl even if the compiler appears to support it, using visibility attributes isn't
238 dnl going to do anything useful currently on cygwin apart from emit lots of warnings
242 VISIBILITY_CXXFLAGS=""
246 AC_SUBST([VISIBILITY_CFLAGS])
247 AC_SUBST([VISIBILITY_CXXFLAGS])
249 dnl These should be unnecessary, but let the user set them if they want
250 AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
251 Default is to use CFLAGS.])
252 AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
253 compiler. Default is to use CFLAGS.])
254 AC_SUBST([OPT_FLAGS])
255 AC_SUBST([ARCH_FLAGS])
258 dnl Hacks to enable 32 or 64 bit build
260 AC_ARG_ENABLE([32-bit],
261 [AS_HELP_STRING([--enable-32-bit],
262 [build 32-bit libraries @<:@default=auto@:>@])],
263 [enable_32bit="$enableval"],
266 if test "x$enable_32bit" = xyes; then
267 if test "x$GCC" = xyes; then
268 CFLAGS="$CFLAGS -m32"
269 ARCH_FLAGS="$ARCH_FLAGS -m32"
270 CCASFLAGS="$CCASFLAGS -m32"
272 if test "x$GXX" = xyes; then
273 CXXFLAGS="$CXXFLAGS -m32"
276 AC_ARG_ENABLE([64-bit],
277 [AS_HELP_STRING([--enable-64-bit],
278 [build 64-bit libraries @<:@default=auto@:>@])],
279 [enable_64bit="$enableval"],
282 if test "x$enable_64bit" = xyes; then
283 if test "x$GCC" = xyes; then
284 CFLAGS="$CFLAGS -m64"
286 if test "x$GXX" = xyes; then
287 CXXFLAGS="$CXXFLAGS -m64"
291 dnl Can't have static and shared libraries, default to static if user
292 dnl explicitly requested. If both disabled, set to static since shared
293 dnl was explicitly requested.
294 case "x$enable_static$enable_shared" in
296 AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
300 AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
308 AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
309 if test "$enable_static" = yes; then
310 MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
312 AC_SUBST([MKLIB_OPTIONS])
315 dnl other compiler options
317 AC_ARG_ENABLE([debug],
318 [AS_HELP_STRING([--enable-debug],
319 [use debug compiler flags and macros @<:@default=disabled@:>@])],
320 [enable_debug="$enableval"],
323 if test "x$enable_debug" = xyes; then
324 DEFINES="$DEFINES -DDEBUG"
325 if test "x$GCC" = xyes; then
328 if test "x$GXX" = xyes; then
329 CXXFLAGS="$CXXFLAGS -g"
336 LIB_PREFIX_GLOB='lib'
337 LIB_VERSION_SEPARATOR='.'
338 if test "$enable_static" = yes; then
343 LIB_EXTENSION='dylib' ;;
345 dnl prefix can be 'cyg' or 'lib'
346 LIB_PREFIX_GLOB='???'
347 LIB_VERSION_SEPARATOR='-'
348 LIB_EXTENSION='dll' ;;
352 LIB_EXTENSION='so' ;;
355 AC_ARG_WITH([gl-lib-name],
356 [AS_HELP_STRING([--with-gl-lib-name@<:@=NAME@:>@],
357 [specify GL library name @<:@default=GL@:>@])],
360 AC_ARG_WITH([glu-lib-name],
361 [AS_HELP_STRING([--with-glu-lib-name@<:@=NAME@:>@],
362 [specify GLU library name @<:@default=GLU@:>@])],
365 AC_ARG_WITH([osmesa-lib-name],
366 [AS_HELP_STRING([--with-osmesa-lib-name@<:@=NAME@:>@],
367 [specify OSMesa library name @<:@default=OSMesa@:>@])],
368 [OSMESA_LIB=$withval],
370 AS_IF([test "x$GL_LIB" = xyes], [GL_LIB=GL])
371 AS_IF([test "x$GLU_LIB" = xyes], [GLU_LIB=GLU])
372 AS_IF([test "x$OSMESA_LIB" = xyes], [OSMESA_LIB=OSMesa])
375 dnl Mangled Mesa support
377 AC_ARG_ENABLE([mangling],
378 [AS_HELP_STRING([--enable-mangling],
379 [enable mangled symbols and library name @<:@default=disabled@:>@])],
380 [enable_mangling="${enableval}"],
383 if test "x${enable_mangling}" = "xyes" ; then
384 DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
385 GL_LIB="Mangled${GL_LIB}"
386 GLU_LIB="Mangled${GLU_LIB}"
387 OSMESA_LIB="Mangled${OSMESA_LIB}"
391 AC_SUBST([OSMESA_LIB])
392 AM_CONDITIONAL(HAVE_MANGLED_GL, test "x${enable_mangling}" = "xyes")
395 dnl potentially-infringing-but-nobody-knows-for-sure stuff
397 AC_ARG_ENABLE([texture-float],
398 [AS_HELP_STRING([--enable-texture-float],
399 [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
400 [enable_texture_float="$enableval"],
401 [enable_texture_float=no]
403 if test "x$enable_texture_float" = xyes; then
404 AC_MSG_WARN([Floating-point textures enabled.])
405 AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
406 DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
409 GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
410 GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
411 OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
412 EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
413 GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
414 GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION}
415 VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION}
416 GLAPI_LIB_NAME='lib$(GLAPI_LIB).'${LIB_EXTENSION}
418 GL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
419 GLU_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLU_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
420 OSMESA_LIB_GLOB=${LIB_PREFIX_GLOB}'$(OSMESA_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
421 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
422 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
423 GLESv1_CM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv1_CM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
424 GLESv2_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv2_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
425 VG_LIB_GLOB=${LIB_PREFIX_GLOB}'$(VG_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
426 GLAPI_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLAPI_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
428 AC_SUBST([GL_LIB_NAME])
429 AC_SUBST([GLU_LIB_NAME])
430 AC_SUBST([OSMESA_LIB_NAME])
431 AC_SUBST([EGL_LIB_NAME])
432 AC_SUBST([GLESv1_CM_LIB_NAME])
433 AC_SUBST([GLESv2_LIB_NAME])
434 AC_SUBST([VG_LIB_NAME])
435 AC_SUBST([GLAPI_LIB_NAME])
437 AC_SUBST([GL_LIB_GLOB])
438 AC_SUBST([GLU_LIB_GLOB])
439 AC_SUBST([OSMESA_LIB_GLOB])
440 AC_SUBST([EGL_LIB_GLOB])
441 AC_SUBST([GLESv1_CM_LIB_GLOB])
442 AC_SUBST([GLESv2_LIB_GLOB])
443 AC_SUBST([VG_LIB_GLOB])
444 AC_SUBST([GLAPI_LIB_GLOB])
447 dnl Arch/platform-specific settings
450 [AS_HELP_STRING([--disable-asm],
451 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
452 [enable_asm="$enableval"],
459 AC_MSG_CHECKING([whether to enable assembly])
460 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
461 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
462 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
466 AC_MSG_RESULT([no, cross compiling])
470 # check for supported arches
471 if test "x$enable_asm" = xyes; then
475 linux* | *freebsd* | dragonfly* | *netbsd*)
476 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
482 linux* | *freebsd* | dragonfly* | *netbsd*)
483 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
505 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
506 MESA_ASM_FILES='$(X86_FILES)'
507 GLAPI_ASM_SOURCES='$(X86_API)'
508 AC_MSG_RESULT([yes, x86])
511 ASM_FLAGS="-DUSE_X86_64_ASM"
512 MESA_ASM_FILES='$(X86_64_FILES)'
513 GLAPI_ASM_SOURCES='$(X86-64_API)'
514 AC_MSG_RESULT([yes, x86_64])
517 ASM_FLAGS="-DUSE_SPARC_ASM"
518 MESA_ASM_FILES='$(SPARC_FILES)'
519 GLAPI_ASM_SOURCES='$(SPARC_API)'
520 AC_MSG_RESULT([yes, sparc])
523 AC_MSG_RESULT([no, platform not supported])
527 AC_SUBST([ASM_FLAGS])
528 AC_SUBST([MESA_ASM_FILES])
529 AC_SUBST([GLAPI_ASM_SOURCES])
534 dnl Check to see if dlopen is in default libraries (like Solaris, which
535 dnl has it in libc), or if libdl is needed to get it.
536 AC_CHECK_FUNC([dlopen], [],
537 [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
538 AC_SUBST([DLOPEN_LIBS])
540 dnl See if posix_memalign is available
541 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
543 dnl SELinux awareness.
544 AC_ARG_ENABLE([selinux],
545 [AS_HELP_STRING([--enable-selinux],
546 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
547 [MESA_SELINUX="$enableval"],
549 if test "x$enable_selinux" = "xyes"; then
550 AC_CHECK_HEADER([selinux/selinux.h],[],
551 [AC_MSG_ERROR([SELinux headers not found])])
552 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
553 [AC_MSG_ERROR([SELinux library not found])])
554 SELINUX_LIBS="-lselinux"
555 DEFINES="$DEFINES -DMESA_SELINUX"
559 AC_ARG_ENABLE([opengl],
560 [AS_HELP_STRING([--disable-opengl],
561 [disable support for standard OpenGL API @<:@default=no@:>@])],
562 [enable_opengl="$enableval"],
564 AC_ARG_ENABLE([gles1],
565 [AS_HELP_STRING([--enable-gles1],
566 [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
567 [enable_gles1="$enableval"],
569 AC_ARG_ENABLE([gles2],
570 [AS_HELP_STRING([--enable-gles2],
571 [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
572 [enable_gles2="$enableval"],
574 AC_ARG_ENABLE([openvg],
575 [AS_HELP_STRING([--enable-openvg],
576 [enable support for OpenVG API @<:@default=no@:>@])],
577 [enable_openvg="$enableval"],
581 [AS_HELP_STRING([--enable-dri],
582 [enable DRI modules @<:@default=auto@:>@])],
583 [enable_dri="$enableval"],
586 [AS_HELP_STRING([--enable-glx],
587 [enable GLX library @<:@default=auto@:>@])],
588 [enable_glx="$enableval"],
590 AC_ARG_ENABLE([osmesa],
591 [AS_HELP_STRING([--enable-osmesa],
592 [enable OSMesa library @<:@default=auto@:>@])],
593 [enable_osmesa="$enableval"],
594 [enable_osmesa=auto])
596 [AS_HELP_STRING([--disable-egl],
597 [disable EGL library @<:@default=enabled@:>@])],
598 [enable_egl="$enableval"],
601 AC_ARG_ENABLE([xorg],
602 [AS_HELP_STRING([--enable-xorg],
603 [enable support for X.Org DDX API @<:@default=no@:>@])],
604 [enable_xorg="$enableval"],
607 [AS_HELP_STRING([--enable-xa],
608 [enable build of the XA X Acceleration API @<:@default=no@:>@])],
609 [enable_xa="$enableval"],
611 AC_ARG_ENABLE([d3d1x],
612 [AS_HELP_STRING([--enable-d3d1x],
613 [enable support for Direct3D 10 & 11 low-level API @<:@default=no@:>@])],
614 [enable_d3d1x="$enableval"],
617 [AS_HELP_STRING([--enable-gbm],
618 [enable gbm library @<:@default=auto@:>@])],
619 [enable_gbm="$enableval"],
622 AC_ARG_ENABLE([xvmc],
623 [AS_HELP_STRING([--enable-xvmc],
624 [enable xvmc library @<:@default=auto@:>@])],
625 [enable_xvmc="$enableval"],
627 AC_ARG_ENABLE([vdpau],
628 [AS_HELP_STRING([--enable-vdpau],
629 [enable vdpau library @<:@default=auto@:>@])],
630 [enable_vdpau="$enableval"],
633 [AS_HELP_STRING([--enable-va],
634 [enable va library @<:@default=auto@:>@])],
635 [enable_va="$enableval"],
637 AC_ARG_ENABLE([opencl],
638 [AS_HELP_STRING([--enable-opencl],
639 [enable OpenCL library @<:@default=no@:>@])],
640 [enable_opencl="$enableval"],
642 AC_ARG_ENABLE([xlib_glx],
643 [AS_HELP_STRING([--enable-xlib-glx],
644 [make GLX library Xlib-based instead of DRI-based @<:@default=disable@:>@])],
645 [enable_xlib_glx="$enableval"],
646 [enable_xlib_glx=auto])
647 AC_ARG_ENABLE([gallium_egl],
648 [AS_HELP_STRING([--enable-gallium-egl],
649 [enable optional EGL state tracker (not required
650 for EGL support in Gallium with OpenGL and OpenGL ES)
651 @<:@default=disable@:>@])],
652 [enable_gallium_egl="$enableval"],
653 [enable_gallium_egl=no])
654 AC_ARG_ENABLE([gallium_gbm],
655 [AS_HELP_STRING([--enable-gallium-gbm],
656 [enable optional gbm state tracker (not required for
657 gbm support in Gallium)
658 @<:@default=auto@:>@])],
659 [enable_gallium_gbm="$enableval"],
660 [enable_gallium_gbm=auto])
662 AC_ARG_ENABLE([r600-llvm-compiler],
663 [AS_HELP_STRING([--enable-r600-llvm-compiler],
664 [Enable experimental LLVM backend for graphics shaders @<:@default=disable@:>@])],
665 [enable_r600_llvm="$enableval"],
666 [enable_r600_llvm=no])
668 AC_ARG_ENABLE([gallium_tests],
669 [AS_HELP_STRING([--enable-gallium-tests],
670 [Enable optional Gallium tests) @<:@default=disable@:>@])],
671 [enable_gallium_tests="$enableval"],
672 [enable_gallium_tests=no])
674 # Option for Gallium drivers
675 GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
677 AC_ARG_WITH([gallium-drivers],
678 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
679 [comma delimited Gallium drivers list, e.g.
680 "i915,nouveau,r300,r600,svga,swrast"
681 @<:@default=r300,r600,swrast@:>@])],
682 [with_gallium_drivers="$withval"],
683 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
685 # Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it
686 # here so that the script doesn't choke on an unknown driver name later.
687 case "$with_gallium_drivers" in
688 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
689 no) with_gallium_drivers='' ;;
692 if test "x$enable_opengl" = xno -a \
693 "x$enable_gles1" = xno -a \
694 "x$enable_gles2" = xno -a \
695 "x$enable_openvg" = xno -a \
696 "x$enable_xorg" = xno -a \
697 "x$enable_xa" = xno -a \
698 "x$enable_d3d1x" = xno -a \
699 "x$enable_xvmc" = xno -a \
700 "x$enable_vdpau" = xno -a \
701 "x$enable_va" = xno -a \
702 "x$enable_opencl" = xno; then
703 AC_MSG_ERROR([at least one API should be enabled])
707 if test "x$enable_opengl" = xno; then
708 API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
710 API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
712 if test "x$enable_gles1" = xyes; then
713 API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
715 if test "x$enable_gles2" = xyes; then
716 API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
718 AC_SUBST([API_DEFINES])
720 AC_ARG_ENABLE([shared-glapi],
721 [AS_HELP_STRING([--enable-shared-glapi],
722 [EXPERIMENTAL. Enable shared glapi for OpenGL @<:@default=no@:>@])],
723 [enable_shared_glapi="$enableval"],
724 [enable_shared_glapi=no])
727 if test "x$enable_shared_glapi" = xyes; then
729 # libGL will use libglapi for function lookups (IN_DRI_DRIVER means to use
731 DEFINES="$DEFINES -DIN_DRI_DRIVER"
732 SRC_DIRS="$SRC_DIRS mapi/shared-glapi"
734 AC_SUBST([SHARED_GLAPI])
735 AM_CONDITIONAL(HAVE_SHARED_GLAPI, test $SHARED_GLAPI = 1)
738 dnl Driver configuration. Options are xlib, dri and osmesa right now.
739 dnl More later: fbdev, ...
741 default_driver="xlib"
746 i*86|x86_64|powerpc*|sparc*|ia64*) default_driver="dri";;
749 *freebsd* | dragonfly* | *netbsd*)
751 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
756 if test "x$enable_opengl" = xno; then
760 AC_ARG_WITH([driver],
761 [AS_HELP_STRING([--with-driver=DRIVER], [DEPRECATED])],
762 [mesa_driver="$withval"],
764 dnl Check for valid option
765 case "x$mesa_driver" in
766 xxlib|xdri|xosmesa|xno)
767 if test "x$enable_dri" != xauto -o \
768 "x$enable_glx" != xauto -o \
769 "x$enable_osmesa" != xauto -o \
770 "x$enable_xlib_glx" != xauto; then
771 AC_MSG_ERROR([--with-driver=$mesa_driver is deprecated])
775 mesa_driver="$default_driver"
778 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
782 # map $mesa_driver to APIs
783 if test "x$enable_dri" = xauto; then
784 case "x$mesa_driver" in
785 xdri) enable_dri=yes ;;
790 if test "x$enable_glx" = xauto; then
791 case "x$mesa_driver" in
792 xdri|xxlib) enable_glx=yes ;;
797 if test "x$enable_osmesa" = xauto; then
798 case "x$mesa_driver" in
799 xxlib|xosmesa) enable_osmesa=yes ;;
800 *) enable_osmesa=no ;;
804 if test "x$enable_xlib_glx" = xauto; then
805 case "x$mesa_driver" in
806 xxlib) enable_xlib_glx=yes ;;
807 *) enable_xlib_glx=no ;;
811 if test "x$enable_glx" = xno; then
815 AM_CONDITIONAL(HAVE_DRI, test x"$enable_dri" = xyes)
818 dnl Driver specific build directories
821 dnl this variable will be prepended to SRC_DIRS and is not exported
826 GALLIUM_DIRS="auxiliary drivers state_trackers"
827 GALLIUM_TARGET_DIRS=""
828 GALLIUM_WINSYS_DIRS="sw"
829 GALLIUM_DRIVERS_DIRS="galahad trace rbug noop identity"
830 GALLIUM_STATE_TRACKERS_DIRS=""
832 # build shared-glapi if enabled for OpenGL or if OpenGL ES is enabled
833 case "x$enable_shared_glapi$enable_gles1$enable_gles2" in
835 CORE_DIRS="$CORE_DIRS mapi/shared-glapi"
839 # build glapi if OpenGL is enabled
840 if test "x$enable_opengl" = xyes; then
841 CORE_DIRS="$CORE_DIRS mapi/glapi"
844 # build es1api if OpenGL ES 1.x is enabled
845 if test "x$enable_gles1" = xyes; then
846 CORE_DIRS="$CORE_DIRS mapi/es1api"
849 # build es2api if OpenGL ES 2.x is enabled
850 if test "x$enable_gles2" = xyes; then
851 CORE_DIRS="$CORE_DIRS mapi/es2api"
854 # build glsl and mesa if OpenGL or OpenGL ES is enabled
855 case "x$enable_opengl$enable_gles1$enable_gles2" in
857 CORE_DIRS="mapi/glapi/gen $CORE_DIRS glsl mesa"
861 case "x$enable_glx$enable_xlib_glx" in
863 DRIVER_DIRS="$DRIVER_DIRS x11"
864 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
865 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
866 GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS"
867 HAVE_WINSYS_XLIB="yes"
871 SRC_DIRS="$SRC_DIRS glx"
875 if test "x$enable_dri" = xyes; then
876 DRIVER_DIRS="$DRIVER_DIRS dri"
878 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/dri"
879 GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
883 if test "x$enable_osmesa" = xyes; then
884 # the empty space matters for osmesa... (see src/mesa/Makefile)
885 if test -n "$DRIVER_DIRS"; then
886 DRIVER_DIRS="$DRIVER_DIRS osmesa"
894 AC_SUBST([DRIVER_DIRS])
895 AC_SUBST([GALLIUM_DIRS])
896 AC_SUBST([GALLIUM_TARGET_DIRS])
897 AC_SUBST([GALLIUM_WINSYS_DIRS])
898 AC_SUBST([GALLIUM_DRIVERS_DIRS])
899 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
900 AC_SUBST([MESA_LLVM])
903 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
904 [have_libdrm=yes], [have_libdrm=no])
906 if test "x$enable_dri" = xyes; then
907 # DRI must be shared, I think
908 if test "$enable_static" = yes; then
909 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
912 # not a hard requirement as swrast does not depend on it
913 if test "x$have_libdrm" = xyes; then
914 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
919 dnl Find out if X is available. The variable have_x is set if libX11 is
920 dnl found to mimic AC_PATH_XTRA.
922 if test -n "$PKG_CONFIG"; then
923 AC_MSG_CHECKING([pkg-config files for X11 are available])
924 PKG_CHECK_EXISTS([x11],[
930 AC_MSG_RESULT([$x11_pkgconfig])
934 dnl Use the autoconf macro if no pkg-config files
935 if test "$x11_pkgconfig" = yes; then
936 PKG_CHECK_MODULES([X11], [x11])
939 test -z "$X11_CFLAGS" && X11_CFLAGS="$X_CFLAGS"
940 test -z "$X11_LIBS" && X11_LIBS="$X_LIBS -lX11"
941 AC_SUBST([X11_CFLAGS])
945 dnl Try to tell the user that the --x-* options are only used when
946 dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
947 m4_divert_once([HELP_BEGIN],
948 [These options are only used when the X libraries cannot be found by the
949 pkg-config utility.])
951 dnl We need X for xlib and dri, so bomb now if it's not found
952 if test "x$enable_glx" = xyes -a "x$no_x" = xyes; then
953 AC_MSG_ERROR([X11 development libraries needed for GLX])
956 if test "x$enable_glx" = xyes; then
957 DEFINES="$DEFINES -DUSE_XCB"
960 dnl Direct rendering or just indirect rendering
963 dnl Disable by default on GNU/Hurd
964 driglx_direct_default="no"
967 dnl Disable by default on cygwin
968 driglx_direct_default="no"
971 driglx_direct_default="yes"
974 AC_ARG_ENABLE([driglx-direct],
975 [AS_HELP_STRING([--disable-driglx-direct],
976 [enable direct rendering in GLX and EGL for DRI \
977 @<:@default=auto@:>@])],
978 [driglx_direct="$enableval"],
979 [driglx_direct="$driglx_direct_default"])
982 dnl libGL configuration per driver
984 case "x$enable_glx$enable_xlib_glx" in
987 if test "$x11_pkgconfig" = yes; then
988 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
989 GL_PC_REQ_PRIV="x11 xext"
990 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
991 GL_LIB_DEPS="$XLIBGL_LIBS"
993 # should check these...
994 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
995 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
996 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
997 GL_PC_CFLAGS="$X11_INCLUDES"
999 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread $DLOPEN_LIBS"
1000 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
1004 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
1005 GL_PC_REQ_PRIV="glproto >= $GLPROTO_REQUIRED"
1006 if test x"$driglx_direct" = xyes; then
1007 if test "x$have_libdrm" != xyes; then
1008 AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
1010 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
1011 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
1014 # find the DRI deps for libGL
1015 if test "$x11_pkgconfig" = yes; then
1016 dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx"
1018 # add xf86vidmode if available
1019 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
1020 if test "$HAVE_XF86VIDMODE" = yes ; then
1021 dri_modules="$dri_modules xxf86vm"
1024 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
1025 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
1026 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
1027 GL_LIB_DEPS="$DRIGL_LIBS"
1029 # should check these...
1030 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
1031 if test "x$HAVE_XF86VIDMODE" == xyes; then
1032 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
1034 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXdamage -lXfixes"
1036 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
1037 GL_PC_CFLAGS="$X11_INCLUDES"
1039 # XCB can only be used from pkg-config
1040 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
1041 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
1042 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
1043 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
1046 # Check to see if the xcb-glx library is new enough to support
1047 # GLX_ARB_create_context. This bit of hackery is necessary until XCB 1.8
1049 save_CPPFLAGS="$CPPFLAGS"
1050 save_LDFLAGS="$LDFLAGS"
1051 CPPFLAGS="$CPPFLAGS $X11_INCLUDES"
1052 LDFLAGS="$LDFLAGS $GL_LIB_DEPS"
1053 AC_CHECK_LIB(xcb-glx, xcb_glx_create_context_attribs_arb_checked,
1054 [HAVE_XCB_GLX_CREATE_CONTEXT=yes],
1055 [HAVE_XCB_GLX_CREATE_CONTEXT=no])
1056 CPPFLAGS="$save_CPPFLAGS"
1057 LDFLAGS="$save_LDFLAGS"
1059 if test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes; then
1060 X11_INCLUDES="$X11_INCLUDES -DHAVE_XCB_GLX_CREATE_CONTEXT"
1063 # need DRM libs, -lpthread, etc.
1064 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1065 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1069 # This is outside the case (above) so that it is invoked even for non-GLX
1071 AM_CONDITIONAL(HAVE_XCB_GLX_CREATE_CONTEXT,
1072 test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes)
1073 AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
1075 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1076 GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1077 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1078 GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1080 AC_SUBST([GL_LIB_DEPS])
1081 AC_SUBST([GL_PC_REQ_PRIV])
1082 AC_SUBST([GL_PC_LIB_PRIV])
1083 AC_SUBST([GL_PC_CFLAGS])
1084 AC_SUBST([DRI_PC_REQ_PRIV])
1085 AC_SUBST([GLESv1_CM_LIB_DEPS])
1086 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
1087 AC_SUBST([GLESv2_LIB_DEPS])
1088 AC_SUBST([GLESv2_PC_LIB_PRIV])
1090 GLAPI_LIB_DEPS="-lpthread $SELINUX_LIBS"
1091 AC_SUBST([GLAPI_LIB_DEPS])
1094 dnl Setup default DRI CFLAGS
1095 DRI_CFLAGS='$(CFLAGS)'
1096 DRI_CXXFLAGS='$(CXXFLAGS)'
1097 DRI_LIB_DEPS='$(TOP)/src/mesa/libmesa.a'
1098 MESA_MODULES='$(TOP)/src/mesa/libmesa.a'
1100 if test "x$enable_dri" = xyes && test "x$driglx_direct" = xyes ; then
1101 DRICORE_LIBS='$(TOP)/$(LIB_DIR)/libdricore.so'
1102 DRICORE_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR)'
1103 DRI_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore'
1104 DRI_CFLAGS='$(CFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1105 DRI_CXXFLAGS='$(CXXFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1106 MESA_MODULES='$(DRICORE_LIBS)'
1109 AM_CONDITIONAL(HAVE_DRICORE, test x$HAVE_DRICORE = xyes)
1110 AC_SUBST([DRICORE_LIBS])
1111 AC_SUBST([DRICORE_LIB_DEPS])
1112 AC_SUBST([DRI_CXXFLAGS])
1113 AC_SUBST([DRI_CFLAGS])
1114 AC_SUBST([MESA_MODULES])
1116 AC_SUBST([HAVE_XF86VIDMODE])
1121 case "x$enable_glx$enable_xlib_glx" in
1123 DEFINES="$DEFINES -DUSE_XSHM"
1126 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1127 if test "x$driglx_direct" = xyes; then
1128 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1137 AC_ARG_ENABLE([glx-tls],
1138 [AS_HELP_STRING([--enable-glx-tls],
1139 [enable TLS support in GLX @<:@default=disabled@:>@])],
1140 [GLX_USE_TLS="$enableval"],
1142 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
1144 AS_IF([test "x$GLX_USE_TLS" = xyes],
1145 [DEFINES="${DEFINES} -DGLX_USE_TLS -DPTHREADS"])
1150 dnl Directory for DRI drivers
1151 AC_ARG_WITH([dri-driverdir],
1152 [AS_HELP_STRING([--with-dri-driverdir=DIR],
1153 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
1154 [DRI_DRIVER_INSTALL_DIR="$withval"],
1155 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
1156 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
1157 dnl Extra search path for DRI drivers
1158 AC_ARG_WITH([dri-searchpath],
1159 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
1160 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
1161 [DRI_DRIVER_SEARCH_DIR="$withval"],
1162 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
1163 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
1164 dnl Which drivers to build - default is chosen by platform
1165 AC_ARG_WITH([dri-drivers],
1166 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
1167 [comma delimited DRI drivers list, e.g.
1168 "swrast,i965,radeon" @<:@default=auto@:>@])],
1169 [with_dri_drivers="$withval"],
1170 [with_dri_drivers=yes])
1171 if test "x$with_dri_drivers" = x; then
1175 dnl If $with_dri_drivers is yes, directories will be added through
1178 case "$with_dri_drivers" in
1181 # classic DRI drivers require FEATURE_GL to build
1182 if test "x$enable_opengl" = xyes; then
1187 # verify the requested driver directories exist
1188 dri_drivers=`IFS=', '; echo $with_dri_drivers`
1189 for driver in $dri_drivers; do
1190 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
1191 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
1193 DRI_DIRS="$dri_drivers"
1194 if test -n "$DRI_DIRS" -a "x$enable_opengl" != xyes; then
1195 AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1200 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
1201 if test "x$enable_dri" = xyes; then
1202 # Platform specific settings and drivers to build
1205 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1206 DEFINES="$DEFINES -DHAVE_ALIAS"
1210 if test "x$DRI_DIRS" = "xyes"; then
1211 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1215 # Build only the drivers for cards that exist on PowerPC.
1216 if test "x$DRI_DIRS" = "xyes"; then
1217 DRI_DIRS="r200 radeon swrast"
1221 # Build only the drivers for cards that exist on sparc
1222 if test "x$DRI_DIRS" = "xyes"; then
1223 DRI_DIRS="r200 radeon swrast"
1228 freebsd* | dragonfly* | *netbsd*)
1229 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
1230 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
1232 if test "x$DRI_DIRS" = "xyes"; then
1233 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1237 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1238 DEFINES="$DEFINES -DHAVE_ALIAS"
1241 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1244 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1245 if test "x$DRI_DIRS" = "xyes"; then
1252 if test "x$DRI_DIRS" = "xyes"; then
1253 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1256 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
1259 if test "x$enable_dri" = xyes; then
1262 AC_ARG_WITH([expat],
1263 [AS_HELP_STRING([--with-expat=DIR],
1264 [expat install directory])],[
1265 EXPAT_INCLUDES="-I$withval/include"
1266 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
1267 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
1268 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
1270 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
1272 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1273 [AC_MSG_ERROR([Expat required for DRI.])])
1277 # if we are building any dri driver other than swrast ...
1278 if test -n "$DRI_DIRS" -a x"$DRI_DIRS" != xswrast; then
1279 # ... libdrm is required
1280 if test "x$have_libdrm" != xyes; then
1281 AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
1283 # ... and build dricommon
1287 # put all the necessary libs together
1288 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
1290 AC_SUBST([DRI_DIRS])
1291 AC_SUBST([EXPAT_INCLUDES])
1292 AC_SUBST([DRI_LIB_DEPS])
1296 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1298 for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1314 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED])
1315 HAVE_NOUVEAU_DRI=yes;
1321 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1323 for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1326 HAVE_RADEON_DRI=yes;
1339 HAVE_SWRAST_DRI=yes;
1343 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
1344 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
1345 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
1346 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
1347 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
1348 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
1349 AM_CONDITIONAL(HAVE_COMMON_DRI, test x$HAVE_COMMON_DRI = xyes)
1352 dnl OSMesa configuration
1355 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1356 AC_ARG_WITH([osmesa-bits],
1357 [AS_HELP_STRING([--with-osmesa-bits=BITS],
1358 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1359 [osmesa_bits="$withval"],
1361 if test "x$osmesa_bits" != x8; then
1362 if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then
1363 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1367 case "x$osmesa_bits" in
1369 OSMESA_LIB="${OSMESA_LIB}"
1372 OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
1373 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1376 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1380 if test "x$enable_osmesa" = xyes; then
1381 # only link libraries with osmesa if shared
1382 if test "$enable_static" = no; then
1383 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1388 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1390 AC_SUBST([OSMESA_LIB_DEPS])
1391 AC_SUBST([OSMESA_MESA_DEPS])
1392 AC_SUBST([OSMESA_PC_REQ])
1393 AC_SUBST([OSMESA_PC_LIB_PRIV])
1396 dnl gbm configuration
1398 if test "x$enable_gbm" = xauto; then
1399 case "$with_egl_platforms" in
1406 if test "x$enable_gbm" = xyes; then
1407 SRC_DIRS="$SRC_DIRS gbm"
1409 PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1410 AC_MSG_ERROR([gbm needs udev]))
1412 if test "x$enable_dri" = xyes; then
1413 GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
1414 if test "$SHARED_GLAPI" -eq 0; then
1415 AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1419 GBM_PC_REQ_PRIV="libudev"
1420 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1421 AC_SUBST([GBM_PC_REQ_PRIV])
1422 AC_SUBST([GBM_PC_LIB_PRIV])
1425 dnl EGL configuration
1429 if test "x$enable_egl" = xyes; then
1430 SRC_DIRS="$SRC_DIRS egl"
1431 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS -lpthread"
1433 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1435 if test "$enable_static" != yes; then
1436 # build egl_glx when libGL is built
1437 if test "x$enable_glx" = xyes; then
1438 HAVE_EGL_DRIVER_GLX=1
1441 PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1442 [have_libudev=yes],[have_libudev=no])
1443 if test "$have_libudev" = yes; then
1444 DEFINES="$DEFINES -DHAVE_LIBUDEV"
1447 if test "x$enable_dri" = xyes; then
1448 HAVE_EGL_DRIVER_DRI2=1
1453 AC_SUBST([EGL_LIB_DEPS])
1456 dnl EGL Gallium configuration
1458 if test "x$enable_gallium_egl" = xyes; then
1459 if test "x$with_gallium_drivers" = x; then
1460 AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
1462 if test "x$enable_egl" = xno; then
1463 AC_MSG_ERROR([cannot enable egl_gallium without EGL])
1465 if test "x$have_libdrm" != xyes; then
1466 AC_MSG_ERROR([egl_gallium requires libdrm >= $LIBDRM_REQUIRED])
1469 GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
1470 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static"
1475 dnl gbm Gallium configuration
1477 if test "x$enable_gallium_gbm" = xauto; then
1478 case "$enable_gbm$HAVE_ST_EGL$enable_dri$with_egl_platforms" in
1480 enable_gallium_gbm=yes ;;
1482 enable_gallium_gbm=no ;;
1485 if test "x$enable_gallium_gbm" = xyes; then
1486 if test "x$with_gallium_drivers" = x; then
1487 AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
1489 if test "x$enable_gbm" = xno; then
1490 AC_MSG_ERROR([cannot enable gbm_gallium without gbm])
1492 # gbm_gallium abuses DRI_LIB_DEPS to link. Make sure it is set.
1493 if test "x$enable_dri" = xno; then
1494 AC_MSG_ERROR([gbm_gallium requires --enable-dri to build])
1497 GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS"
1498 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm"
1500 enable_gallium_loader=yes
1504 dnl X.Org DDX configuration
1506 if test "x$enable_xorg" = xyes; then
1507 PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1508 PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1509 PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1510 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1511 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1512 HAVE_XEXTPROTO_71="no")
1513 GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS"
1518 dnl XA configuration
1520 if test "x$enable_xa" = xyes; then
1523 AC_CHECK_PROG(NM, nm, "nm")
1524 if test "x$AWK" = x || test "x$GREP" = x || test "x$NM" = x; then
1525 AC_MSG_WARN([Missing one of nm, grep or awk. Disabling xa.])
1529 if test "x$enable_xa" = xyes; then
1530 GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS"
1538 dnl OpenVG configuration
1542 if test "x$enable_openvg" = xyes; then
1543 if test "x$enable_egl" = xno; then
1544 AC_MSG_ERROR([cannot enable OpenVG without EGL])
1546 if test "x$with_gallium_drivers" = x; then
1547 AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1549 if test "x$enable_gallium_egl" = xno; then
1550 AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
1553 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1554 VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS -lpthread"
1555 CORE_DIRS="$CORE_DIRS mapi/vgapi"
1556 GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1561 dnl D3D1X configuration
1564 if test "x$enable_d3d1x" = xyes; then
1565 if test "x$with_gallium_drivers" = x; then
1566 AC_MSG_ERROR([cannot enable D3D1X without Gallium])
1569 GALLIUM_STATE_TRACKERS_DIRS="d3d1x $GALLIUM_STATE_TRACKERS_DIRS"
1574 dnl Gallium G3DVL configuration
1576 AC_ARG_ENABLE([gallium-g3dvl],
1577 [AS_HELP_STRING([--enable-gallium-g3dvl],
1578 [build gallium g3dvl @<:@default=disabled@:>@])],
1579 [enable_gallium_g3dvl="$enableval"],
1580 [enable_gallium_g3dvl=no])
1581 if test "x$enable_gallium_g3dvl" = xyes; then
1582 if test "x$with_gallium_drivers" = x; then
1583 AC_MSG_ERROR([cannot enable G3DVL without Gallium])
1586 if test "x$enable_xvmc" = xauto; then
1587 PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no])
1590 if test "x$enable_vdpau" = xauto; then
1591 PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no])
1594 if test "x$enable_va" = xauto; then
1595 #don't enable vaapi state tracker even if package exists
1596 #PKG_CHECK_EXISTS([libva], [enable_vdpau=yes], [enable_vdpau=no])
1601 if test "x$enable_xvmc" = xyes; then
1602 PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6 x11-xcb xcb-dri2 >= 1.8])
1603 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xvmc"
1607 if test "x$enable_vdpau" = xyes; then
1608 PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.4.1 x11-xcb xcb-dri2 >= 1.8])
1609 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau"
1613 if test "x$enable_va" = xyes; then
1614 PKG_CHECK_MODULES([LIBVA], [libva = 0.31.1 x11-xcb xcb-dri2 >= 1.8])
1615 AC_MSG_WARN([vaapi state tracker currently unmaintained])
1616 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS va"
1621 dnl OpenCL configuration
1624 AC_ARG_WITH([libclc-path],
1625 [AS_HELP_STRING([--with-libclc-path],
1626 [Path to libclc builtins library. Example: --with-libclc-path=\$HOME/libclc/])],
1627 [LIBCLC_PATH="$withval"],
1630 AC_SUBST([LIBCLC_PATH])
1632 if test "x$enable_opencl" = xyes; then
1633 if test "x$with_gallium_drivers" = x; then
1634 AC_MSG_ERROR([cannot enable OpenCL without Gallium])
1637 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6; then
1638 AC_MSG_ERROR([gcc >= 4.6 is required to build clover])
1641 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS clover"
1642 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS opencl"
1643 enable_gallium_loader=yes
1647 dnl GLU configuration
1649 AC_ARG_ENABLE([glu],
1650 [AS_HELP_STRING([--disable-glu],
1651 [enable OpenGL Utility library @<:@default=enabled@:>@])],
1652 [enable_glu="$enableval"],
1655 if test "x$enable_glu" = xyes; then
1656 if test "x$enable_glx" = xno -a "x$enable_osmesa" = xno; then
1657 AC_MSG_NOTICE([Disabling GLU since there is no OpenGL driver])
1662 if test "x$enable_glu" = xyes; then
1663 SRC_DIRS="$SRC_DIRS glu"
1665 if test "x$enable_glx" = xno; then
1666 # Link libGLU to libOSMesa instead of libGL
1669 if test "$enable_static" = no; then
1670 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
1675 # If static, empty GLU_LIB_DEPS and add libs for programs to link
1677 GLU_PC_LIB_PRIV="-lm"
1678 if test "$enable_static" = no; then
1680 GLU_MESA_DEPS='-l$(GL_LIB)'
1687 if test "$enable_static" = no; then
1688 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
1690 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
1691 AC_SUBST([GLU_LIB_DEPS])
1692 AC_SUBST([GLU_MESA_DEPS])
1693 AC_SUBST([GLU_PC_REQ])
1694 AC_SUBST([GLU_PC_REQ_PRIV])
1695 AC_SUBST([GLU_PC_LIB_PRIV])
1696 AC_SUBST([GLU_PC_CFLAGS])
1698 AC_SUBST([PROGRAM_DIRS])
1701 dnl Gallium configuration
1703 if test "x$with_gallium_drivers" != x; then
1704 SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
1707 AC_SUBST([LLVM_BINDIR])
1708 AC_SUBST([LLVM_CFLAGS])
1709 AC_SUBST([LLVM_CPPFLAGS])
1710 AC_SUBST([LLVM_CXXFLAGS])
1711 AC_SUBST([LLVM_LIBDIR])
1712 AC_SUBST([LLVM_LIBS])
1713 AC_SUBST([LLVM_LDFLAGS])
1714 AC_SUBST([LLVM_INCLUDEDIR])
1715 AC_SUBST([LLVM_VERSION])
1717 case "x$enable_opengl$enable_gles1$enable_gles2" in
1719 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1723 AC_SUBST([VG_LIB_DEPS])
1724 AC_SUBST([EGL_CLIENT_APIS])
1727 dnl EGL Platforms configuration
1729 AC_ARG_WITH([egl-platforms],
1730 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1731 [comma delimited native platforms libEGL supports, e.g.
1732 "x11,drm" @<:@default=auto@:>@])],
1733 [with_egl_platforms="$withval"],
1734 [if test "x$enable_egl" = xyes; then
1735 with_egl_platforms="x11"
1737 with_egl_platforms=""
1742 if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
1743 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1746 # Do per-EGL platform setups and checks
1747 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1748 for plat in $egl_platforms; do
1751 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/$plat"
1755 PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-server],, \
1756 [AC_MSG_ERROR([cannot find libwayland-client])])
1757 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
1759 m4_ifdef([WAYLAND_SCANNER_RULES],
1760 [WAYLAND_SCANNER_RULES(['$(top_srcdir)/src/egl/wayland/wayland-drm/protocol'])])
1764 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes])
1765 # workaround a bug in xcb-dri2 generated by xcb-proto 1.6
1767 AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [],
1768 [DEFINES="$DEFINES -DXCB_DRI2_CONNECT_DEVICE_NAME_BROKEN"])
1773 test "x$enable_gbm" = "xno" &&
1774 AC_MSG_ERROR([EGL platform drm needs gbm])
1781 AC_MSG_ERROR([EGL platform '$plat' does not exist])
1785 case "$plat$have_libudev" in
1787 AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;;
1791 # libEGL wants to default to the first platform specified in
1792 # ./configure. parse that here.
1793 if test "x$egl_platforms" != "x"; then
1794 FIRST_PLATFORM_CAPS=`echo $egl_platforms | sed 's| .*||' | tr 'a-z' 'A-Z'`
1795 EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
1797 EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
1800 EGL_PLATFORMS="$egl_platforms"
1802 AM_CONDITIONAL(HAVE_EGL_PLATFORM_X11, echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1)
1803 AM_CONDITIONAL(HAVE_EGL_PLATFORM_WAYLAND, echo "$egl_platforms" | grep 'wayland' >/dev/null 2>&1)
1804 AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep 'drm' >/dev/null 2>&1)
1805 AM_CONDITIONAL(HAVE_EGL_PLATFORM_FBDEV, echo "$egl_platforms" | grep 'fbdev' >/dev/null 2>&1)
1806 AM_CONDITIONAL(HAVE_EGL_PLATFORM_NULL, echo "$egl_platforms" | grep 'null' >/dev/null 2>&1)
1808 AM_CONDITIONAL(HAVE_EGL_DRIVER_DRI2, test "x$HAVE_EGL_DRIVER_DRI2" != "x")
1809 AM_CONDITIONAL(HAVE_EGL_DRIVER_GLX, test "x$HAVE_EGL_DRIVER_GLX" != "x")
1811 AC_SUBST([EGL_NATIVE_PLATFORM])
1812 AC_SUBST([EGL_PLATFORMS])
1813 AC_SUBST([EGL_CFLAGS])
1815 AC_ARG_WITH([egl-driver-dir],
1816 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1817 [directory for EGL drivers [[default=${libdir}/egl]]])],
1818 [EGL_DRIVER_INSTALL_DIR="$withval"],
1819 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1820 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1822 AC_ARG_WITH([xorg-driver-dir],
1823 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1824 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1825 [XORG_DRIVER_INSTALL_DIR="$withval"],
1826 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1827 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1829 AC_ARG_WITH([max-width],
1830 [AS_HELP_STRING([--with-max-width=N],
1831 [Maximum framebuffer width (4096)])],
1832 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1833 AS_IF([test "${withval}" -gt "4096"],
1834 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1836 AC_ARG_WITH([max-height],
1837 [AS_HELP_STRING([--with-max-height=N],
1838 [Maximum framebuffer height (4096)])],
1839 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1840 AS_IF([test "${withval}" -gt "4096"],
1841 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1847 AC_ARG_ENABLE([gallium-llvm],
1848 [AS_HELP_STRING([--enable-gallium-llvm],
1849 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1850 [enable_gallium_llvm="$enableval"],
1851 [enable_gallium_llvm=auto])
1853 AC_ARG_WITH([llvm-shared-libs],
1854 [AS_HELP_STRING([--with-llvm-shared-libs],
1855 [link with LLVM shared libraries @<:@default=disabled@:>@])],
1856 [with_llvm_shared_libs=yes],
1857 [with_llvm_shared_libs=no])
1859 if test "x$with_gallium_drivers" = x; then
1860 enable_gallium_llvm=no
1862 if test "x$enable_gallium_llvm" = xauto; then
1864 i*86|x86_64) enable_gallium_llvm=yes;;
1867 if test "x$enable_gallium_llvm" = xyes; then
1868 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1870 if test "x$LLVM_CONFIG" != xno; then
1871 LLVM_VERSION=`$LLVM_CONFIG --version | sed 's/svn.*//g'`
1872 LLVM_CFLAGS=`$LLVM_CONFIG --cppflags|sed -e 's/-DNDEBUG\>//g' -e 's/-pedantic//g' -e 's/-Wcovered-switch-default//g'`
1873 if test "x$with_llvm_shared_libs" = xyes; then
1874 dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
1875 LLVM_LIBS="-lLLVM-`$LLVM_CONFIG --version`"
1877 LLVM_LIBS="`$LLVM_CONFIG --libs engine bitwriter`"
1878 if test "x$enable_opencl" = xyes; then
1879 LLVM_LIBS="${LLVM_LIBS} `llvm-config --libs ipo linker instrumentation`"
1882 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1883 LLVM_BINDIR=`$LLVM_CONFIG --bindir`
1884 LLVM_CXXFLAGS=`$LLVM_CONFIG --cxxflags`
1885 LLVM_CPPFLAGS=`$LLVM_CONFIG --cppflags`
1886 LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
1887 LLVM_LIBDIR=`$LLVM_CONFIG --libdir`
1888 DEFINES="${DEFINES} -DHAVE_LLVM=`echo $LLVM_VERSION | sed -e 's/\([[0-9]]\)\.\([[0-9]]\)/0x0\10\2/g'`"
1897 dnl Directory for XVMC libs
1898 AC_ARG_WITH([xvmc-libdir],
1899 [AS_HELP_STRING([--with-xvmc-libdir=DIR],
1900 [directory for the XVMC libraries @<:@default=${libdir}@:>@])],
1901 [XVMC_LIB_INSTALL_DIR="$withval"],
1902 [XVMC_LIB_INSTALL_DIR='${libdir}'])
1903 AC_SUBST([XVMC_LIB_INSTALL_DIR])
1908 if test "x$enable_gallium_tests" = xyes; then
1909 SRC_DIRS="$SRC_DIRS gallium/tests/trivial"
1910 enable_gallium_loader=yes
1913 dnl Directory for VDPAU libs
1914 AC_ARG_WITH([vdpau-libdir],
1915 [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1916 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1917 [VDPAU_LIB_INSTALL_DIR="$withval"],
1918 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1919 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
1921 dnl Directory for VA libs
1922 AC_ARG_WITH([va-libdir],
1923 [AS_HELP_STRING([--with-va-libdir=DIR],
1924 [directory for the VA libraries @<:@default=${libdir}/va@:>@])],
1925 [VA_LIB_INSTALL_DIR="$withval"],
1926 [VA_LIB_INSTALL_DIR='${libdir}/va'])
1927 AC_SUBST([VA_LIB_INSTALL_DIR])
1929 dnl Directory for OpenCL libs
1930 AC_ARG_WITH([opencl-libdir],
1931 [AS_HELP_STRING([--with-opencl-libdir=DIR],
1932 [directory for the OpenCL libraries @<:@default=${libdir}/opencl@:>@])],
1933 [OPENCL_LIB_INSTALL_DIR="$withval"],
1934 [OPENCL_LIB_INSTALL_DIR='${libdir}/opencl'])
1935 AC_SUBST([OPENCL_LIB_INSTALL_DIR])
1938 dnl Gallium helper functions
1940 gallium_check_st() {
1941 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes ||
1942 test "x$HAVE_ST_XA" = xyes || test "x$HAVE_ST_XVMC" = xyes ||
1943 test "x$HAVE_ST_VDPAU" = xyes || test "x$HAVE_ST_VA" = xyes; then
1944 if test "x$have_libdrm" != xyes; then
1945 AC_MSG_ERROR([DRI or Xorg DDX requires libdrm >= $LIBDRM_REQUIRED])
1947 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1949 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1950 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1952 if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
1953 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1955 if test "x$HAVE_ST_XA" = xyes && test "x$4" != x; then
1956 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
1958 if test "x$HAVE_ST_XVMC" = xyes && test "x$5" != x; then
1959 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5"
1961 if test "x$HAVE_ST_VDPAU" = xyes && test "x$6" != x; then
1962 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6"
1964 if test "x$HAVE_ST_VA" = xyes && test "x$7" != x; then
1965 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $7"
1969 gallium_require_llvm() {
1970 if test "x$MESA_LLVM" = x0; then
1972 i*86|x86_64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1977 gallium_require_drm_loader() {
1978 if test "x$enable_gallium_loader" = xyes; then
1979 PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1980 AC_MSG_ERROR([Gallium drm loader requrires libudev]))
1981 if test "x$have_libdrm" != xyes; then
1982 AC_MSG_ERROR([Gallium drm loader requires libdrm >= $LIBDRM_REQUIRED])
1984 enable_gallium_drm_loader=yes
1989 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
1990 if test "x$with_gallium_drivers" != x; then
1991 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1992 for driver in $gallium_drivers; do
1995 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
1996 gallium_check_st "svga/drm" "dri-vmwgfx" "" "xa-vmwgfx"
1999 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
2000 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe"
2001 if test "x$MESA_LLVM" = x1; then
2002 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
2004 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
2005 gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
2008 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2009 gallium_require_llvm "Gallium R300"
2010 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
2011 gallium_check_st "radeon/drm" "dri-r300" "xorg-r300" "" "xvmc-r300" "vdpau-r300" "va-r300"
2014 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2015 gallium_require_drm_loader
2016 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
2017 if test "x$enable_r600_llvm" = xyes -o "x$enable_opencl" = xyes; then
2018 if test "x$LLVM_VERSION" != "x3.1"; then
2019 AC_MSG_ERROR([LLVM 3.1 is required for the r600 llvm compiler.])
2021 NEED_RADEON_GALLIUM=yes;
2023 if test "x$enable_r600_llvm" = xyes; then
2024 USE_R600_LLVM_COMPILER=yes;
2026 if test "x$enable_opencl" = xyes -a "x$with_llvm_shared_libs" = xno; then
2027 LLVM_LIBS="${LLVM_LIBS} `llvm-config --libs bitreader asmparser`"
2029 gallium_check_st "radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600" "va-r600"
2032 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2033 gallium_require_drm_loader
2034 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS radeonsi"
2035 if test "x$LLVM_VERSION" != "x3.1"; then
2036 AC_MSG_ERROR([LLVM 3.1 is required to build the radeonsi driver.])
2038 NEED_RADEON_GALLIUM=yes;
2039 gallium_check_st "radeon/drm" "dri-radeonsi" "xorg-radeonsi"
2042 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
2043 gallium_require_drm_loader
2044 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nv30 nv50 nvc0"
2045 gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau" "" "xvmc-nouveau" "vdpau-nouveau"
2048 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe"
2049 if test "x$MESA_LLVM" = x1; then
2050 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
2053 if test "x$HAVE_ST_DRI" = xyes; then
2054 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
2056 if test "x$HAVE_ST_VDPAU" = xyes; then
2057 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS vdpau-softpipe"
2059 if test "x$HAVE_ST_XVMC" = xyes; then
2060 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS xvmc-softpipe"
2062 if test "x$HAVE_ST_VA" = xyes; then
2063 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS va-softpipe"
2065 if test "x$HAVE_ST_VDPAU" = xyes ||
2066 test "x$HAVE_ST_XVMC" = xyes ||
2067 test "x$HAVE_ST_VA" = xyes; then
2068 if test "x$HAVE_WINSYS_XLIB" != xyes; then
2069 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
2074 AC_MSG_ERROR([Unknown Gallium driver: $driver])
2080 if test "x$enable_gallium_loader" = xyes; then
2081 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
2082 GALLIUM_PIPE_LOADER_DEFINES="-DHAVE_PIPE_LOADER_SW"
2083 GALLIUM_PIPE_LOADER_LIBS="\$(TOP)/src/gallium/auxiliary/pipe-loader/libpipe_loader.a"
2084 GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS \$(TOP)/src/gallium/winsys/sw/null/libws_null.a"
2086 if test "x$HAVE_WINSYS_XLIB" = xyes; then
2087 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_XLIB"
2088 GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS \$(TOP)/src/gallium/winsys/sw/xlib/libws_xlib.a"
2091 if test "x$enable_gallium_drm_loader" = xyes; then
2092 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRM"
2095 AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
2096 AC_SUBST([GALLIUM_PIPE_LOADER_LIBS])
2099 dnl Tell Automake which drivers to build
2100 for driver in $GALLIUM_DRIVERS_DIRS; do
2103 HAVE_GALAHAD_GALLIUM=yes;
2106 HAVE_IDENTITY_GALLIUM=yes;
2109 HAVE_NOOP_GALLIUM=yes;
2112 GALLIUM_MAKE_DIRS="$GALLIUM_MAKE_DIRS $driver"
2117 AM_CONDITIONAL(HAVE_GALAHAD_GALLIUM, test x$HAVE_GALAHAD_GALLIUM = xyes)
2118 AM_CONDITIONAL(HAVE_IDENTITY_GALLIUM, test x$HAVE_IDENTITY_GALLIUM = xyes)
2119 AM_CONDITIONAL(HAVE_NOOP_GALLIUM, test x$HAVE_NOOP_GALLIUM = xyes)
2120 AM_CONDITIONAL(NEED_RADEON_GALLIUM, test x$NEED_RADEON_GALLIUM = xyes)
2121 AM_CONDITIONAL(USE_R600_LLVM_COMPILER, test x$USE_R600_LLVM_COMPILER = xyes)
2122 AM_CONDITIONAL(HAVE_LOADER_GALLIUM, test x$enable_gallium_loader = xyes)
2123 AM_CONDITIONAL(HAVE_DRM_LOADER_GALLIUM, test x$enable_gallium_drm_loader = xyes)
2124 AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
2125 AC_SUBST([GALLIUM_MAKE_DIRS])
2127 AM_CONDITIONAL(HAVE_X11_DRIVER, echo "$DRIVER_DIRS" | grep 'x11' >/dev/null 2>&1)
2128 AM_CONDITIONAL(HAVE_DRI_DRIVER, echo "$DRIVER_DIRS" | grep 'dri' >/dev/null 2>&1)
2129 AM_CONDITIONAL(HAVE_OSMESA_DRIVER, echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1)
2131 AM_CONDITIONAL(HAVE_X86_ASM, echo "$ASM_FLAGS" | grep 'X86_ASM' >/dev/null 2>&1)
2132 AM_CONDITIONAL(HAVE_X86_64_ASM, echo "$ASM_FLAGS" | grep 'X86_64_ASM' >/dev/null 2>&1)
2133 AM_CONDITIONAL(HAVE_SPARC_ASM, echo "$ASM_FLAGS" | grep 'SPARC_ASM' >/dev/null 2>&1)
2135 dnl prepend CORE_DIRS to SRC_DIRS
2136 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
2138 dnl Restore LDFLAGS and CPPFLAGS
2139 LDFLAGS="$_SAVE_LDFLAGS"
2140 CPPFLAGS="$_SAVE_CPPFLAGS"
2142 dnl Add user CFLAGS and CXXFLAGS
2143 CFLAGS="$CFLAGS $USER_CFLAGS"
2144 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
2146 dnl Substitute the config
2147 AC_CONFIG_FILES([configs/autoconf
2150 src/gallium/auxiliary/pipe-loader/Makefile
2151 src/gallium/state_trackers/clover/Makefile
2152 src/gallium/drivers/Makefile
2153 src/gallium/drivers/r300/Makefile
2154 src/gallium/drivers/r600/Makefile
2155 src/gallium/targets/opencl/Makefile
2158 src/egl/drivers/Makefile
2159 src/egl/drivers/dri2/Makefile
2160 src/egl/drivers/glx/Makefile
2161 src/egl/main/Makefile
2163 src/egl/wayland/Makefile
2164 src/egl/wayland/wayland-egl/Makefile
2165 src/egl/wayland/wayland-egl/wayland-egl.pc
2166 src/egl/wayland/wayland-drm/Makefile
2167 src/glsl/tests/Makefile
2169 src/mapi/shared-glapi/Makefile
2171 src/mesa/libdricore/Makefile
2172 src/mesa/drivers/dri/dri.pc
2173 src/mesa/drivers/dri/Makefile
2174 src/mesa/drivers/dri/common/Makefile
2175 src/mesa/drivers/dri/i915/Makefile
2176 src/mesa/drivers/dri/i965/Makefile
2177 src/mesa/drivers/dri/nouveau/Makefile
2178 src/mesa/drivers/dri/r200/Makefile
2179 src/mesa/drivers/dri/radeon/Makefile
2180 src/mesa/drivers/dri/swrast/Makefile
2182 tests/glx/Makefile])
2184 dnl Replace the configs/current symlink
2185 AC_CONFIG_COMMANDS([configs],[
2186 if test -f configs/current || test -L configs/current; then
2187 rm -f configs/current
2189 ln -s autoconf configs/current
2192 dnl Sort the dirs alphabetically
2193 GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2194 GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2195 GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2196 GALLIUM_MAKE_DIRS=`echo $GALLIUM_MAKE_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2197 GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2202 dnl Output some configuration info for the user
2205 echo " prefix: $prefix"
2206 echo " exec_prefix: $exec_prefix"
2207 echo " libdir: $libdir"
2208 echo " includedir: $includedir"
2212 echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
2213 echo " OpenVG: $enable_openvg"
2217 if test "x$enable_osmesa" != xno; then
2218 echo " OSMesa: lib$OSMESA_LIB"
2223 if test "x$enable_dri" != xno; then
2224 # cleanup the drivers var
2225 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
2226 if test "x$DRI_DIRS" = x; then
2227 echo " DRI drivers: no"
2229 echo " DRI drivers: $dri_dirs"
2231 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
2234 case "x$enable_glx$enable_xlib_glx" in
2236 echo " GLX: Xlib-based"
2239 echo " GLX: DRI-based"
2242 echo " GLX: $enable_glx"
2247 echo " GLU: $enable_glu"
2251 echo " EGL: $enable_egl"
2252 if test "$enable_egl" = yes; then
2253 echo " EGL platforms: $EGL_PLATFORMS"
2256 if test "x$HAVE_EGL_DRIVER_GLX" != "x"; then
2257 egl_drivers="$egl_drivers builtin:egl_glx"
2259 if test "x$HAVE_EGL_DRIVER_DRI2" != "x"; then
2260 egl_drivers="$egl_drivers builtin:egl_dri2"
2263 if test "x$HAVE_ST_EGL" = xyes; then
2264 echo " EGL drivers: ${egl_drivers} egl_gallium"
2265 echo " EGL Gallium STs:$EGL_CLIENT_APIS"
2267 echo " EGL drivers: $egl_drivers"
2272 if test "x$MESA_LLVM" = x1; then
2274 echo " llvm-config: $LLVM_CONFIG"
2275 echo " llvm-version: $LLVM_VERSION"
2281 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
2282 echo " Gallium: yes"
2283 echo " Gallium dirs: $GALLIUM_DIRS"
2284 echo " Target dirs: $GALLIUM_TARGET_DIRS"
2285 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
2286 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
2287 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
2295 echo " Shared libs: $enable_shared"
2296 echo " Static libs: $enable_static"
2298 dnl Compiler options
2299 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2300 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2301 $SED 's/^ *//;s/ */ /;s/ *$//'`
2302 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2303 $SED 's/^ *//;s/ */ /;s/ *$//'`
2304 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
2306 echo " CFLAGS: $cflags"
2307 echo " CXXFLAGS: $cxxflags"
2308 echo " Macros: $defines"
2310 echo " PYTHON2: $PYTHON2"
2313 echo " Run '${MAKE-make}' to build Mesa"