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], [9.0.0],
10 [https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa])
11 AC_CONFIG_AUX_DIR([bin])
13 AM_INIT_AUTOMAKE([foreign])
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 Set internal versions
31 AC_SUBST([OSMESA_VERSION])
33 dnl Versions for external dependencies
34 LIBDRM_REQUIRED=2.4.24
35 LIBDRM_RADEON_REQUIRED=2.4.39
36 LIBDRM_INTEL_REQUIRED=2.4.38
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.c"; 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 and CPPFLAGS so we can add to them and restore later
154 _SAVE_LDFLAGS="$LDFLAGS"
155 _SAVE_CPPFLAGS="$CPPFLAGS"
162 DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS"
165 DEFINES="$DEFINES -DPTHREADS -DSVR4"
168 DEFINES="$DEFINES -DPTHREADS"
172 dnl Add flags for gcc and g++
173 if test "x$GCC" = xyes; then
174 CFLAGS="$CFLAGS -Wall -std=c99"
176 # Enable -Werror=implicit-function-declaration and
177 # -Werror=missing-prototypes, if available, or otherwise, just
178 # -Wmissing-prototypes. This is particularly useful to avoid
179 # generating a loadable driver module that has undefined symbols.
180 save_CFLAGS="$CFLAGS"
181 AC_MSG_CHECKING([whether $CC supports -Werror=missing-prototypes])
182 CFLAGS="$CFLAGS -Werror=implicit-function-declaration"
183 CFLAGS="$CFLAGS -Werror=missing-prototypes"
184 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
185 AC_MSG_RESULT([yes]),
186 [CFLAGS="$save_CFLAGS -Wmissing-prototypes";
187 AC_MSG_RESULT([no])]);
189 # Enable -fvisibility=hidden if using a gcc that supports it
190 save_CFLAGS="$CFLAGS"
191 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
192 VISIBILITY_CFLAGS="-fvisibility=hidden"
193 CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
194 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
195 [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
197 # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
200 # Work around aliasing bugs - developers should comment this out
201 CFLAGS="$CFLAGS -fno-strict-aliasing"
203 # gcc's builtin memcmp is slower than glibc's
204 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
205 CFLAGS="$CFLAGS -fno-builtin-memcmp"
207 if test "x$GXX" = xyes; then
208 CXXFLAGS="$CXXFLAGS -Wall"
210 # Enable -fvisibility=hidden if using a gcc that supports it
211 save_CXXFLAGS="$CXXFLAGS"
212 AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
213 VISIBILITY_CXXFLAGS="-fvisibility=hidden"
214 CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
216 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
217 [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
220 # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
221 CXXFLAGS=$save_CXXFLAGS
223 # Work around aliasing bugs - developers should comment this out
224 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
226 # gcc's builtin memcmp is slower than glibc's
227 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
228 CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp"
231 dnl even if the compiler appears to support it, using visibility attributes isn't
232 dnl going to do anything useful currently on cygwin apart from emit lots of warnings
236 VISIBILITY_CXXFLAGS=""
240 AC_SUBST([VISIBILITY_CFLAGS])
241 AC_SUBST([VISIBILITY_CXXFLAGS])
244 dnl Hacks to enable 32 or 64 bit build
246 AC_ARG_ENABLE([32-bit],
247 [AS_HELP_STRING([--enable-32-bit],
248 [build 32-bit libraries @<:@default=auto@:>@])],
249 [enable_32bit="$enableval"],
252 if test "x$enable_32bit" = xyes; then
253 if test "x$GCC" = xyes; then
254 CFLAGS="$CFLAGS -m32"
255 CCASFLAGS="$CCASFLAGS -m32"
257 if test "x$GXX" = xyes; then
258 CXXFLAGS="$CXXFLAGS -m32"
261 AC_ARG_ENABLE([64-bit],
262 [AS_HELP_STRING([--enable-64-bit],
263 [build 64-bit libraries @<:@default=auto@:>@])],
264 [enable_64bit="$enableval"],
267 if test "x$enable_64bit" = xyes; then
268 if test "x$GCC" = xyes; then
269 CFLAGS="$CFLAGS -m64"
271 if test "x$GXX" = xyes; then
272 CXXFLAGS="$CXXFLAGS -m64"
276 dnl Can't have static and shared libraries, default to static if user
277 dnl explicitly requested. If both disabled, set to static since shared
278 dnl was explicitly requested.
279 case "x$enable_static$enable_shared" in
281 AC_MSG_WARN([Cannot build static and shared libraries, disabling shared])
285 AC_MSG_WARN([Cannot disable both static and shared libraries, enabling static])
290 AM_CONDITIONAL(BUILD_SHARED, test "x$enable_shared" = xyes)
295 AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
296 if test "$enable_static" = yes; then
297 MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
299 AC_SUBST([MKLIB_OPTIONS])
302 dnl other compiler options
304 AC_ARG_ENABLE([debug],
305 [AS_HELP_STRING([--enable-debug],
306 [use debug compiler flags and macros @<:@default=disabled@:>@])],
307 [enable_debug="$enableval"],
310 if test "x$enable_debug" = xyes; then
311 DEFINES="$DEFINES -DDEBUG"
312 if test "x$GCC" = xyes; then
315 if test "x$GXX" = xyes; then
316 CXXFLAGS="$CXXFLAGS -g"
323 LIB_PREFIX_GLOB='lib'
324 LIB_VERSION_SEPARATOR='.'
325 if test "$enable_static" = yes; then
330 LIB_EXTENSION='dylib' ;;
332 dnl prefix can be 'cyg' or 'lib'
333 LIB_PREFIX_GLOB='???'
334 LIB_VERSION_SEPARATOR='-'
335 LIB_EXTENSION='dll' ;;
339 LIB_EXTENSION='so' ;;
342 AC_ARG_WITH([gl-lib-name],
343 [AS_HELP_STRING([--with-gl-lib-name@<:@=NAME@:>@],
344 [specify GL library name @<:@default=GL@:>@])],
347 AC_ARG_WITH([osmesa-lib-name],
348 [AS_HELP_STRING([--with-osmesa-lib-name@<:@=NAME@:>@],
349 [specify OSMesa library name @<:@default=OSMesa@:>@])],
350 [OSMESA_LIB=$withval],
352 AS_IF([test "x$GL_LIB" = xyes], [GL_LIB=GL])
353 AS_IF([test "x$OSMESA_LIB" = xyes], [OSMESA_LIB=OSMesa])
356 dnl Mangled Mesa support
358 AC_ARG_ENABLE([mangling],
359 [AS_HELP_STRING([--enable-mangling],
360 [enable mangled symbols and library name @<:@default=disabled@:>@])],
361 [enable_mangling="${enableval}"],
364 if test "x${enable_mangling}" = "xyes" ; then
365 DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
366 GL_LIB="Mangled${GL_LIB}"
367 OSMESA_LIB="Mangled${OSMESA_LIB}"
370 AC_SUBST([OSMESA_LIB])
373 dnl potentially-infringing-but-nobody-knows-for-sure stuff
375 AC_ARG_ENABLE([texture-float],
376 [AS_HELP_STRING([--enable-texture-float],
377 [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
378 [enable_texture_float="$enableval"],
379 [enable_texture_float=no]
381 if test "x$enable_texture_float" = xyes; then
382 AC_MSG_WARN([Floating-point textures enabled.])
383 AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
384 DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
387 GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
388 OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
389 EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
390 GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
391 GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION}
392 VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION}
393 GLAPI_LIB_NAME='lib$(GLAPI_LIB).'${LIB_EXTENSION}
395 GL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
396 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
397 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
398 GLESv1_CM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv1_CM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
399 GLESv2_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv2_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
400 VG_LIB_GLOB=${LIB_PREFIX_GLOB}'$(VG_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
401 GLAPI_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLAPI_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
403 AC_SUBST([GL_LIB_NAME])
404 AC_SUBST([OSMESA_LIB_NAME])
405 AC_SUBST([EGL_LIB_NAME])
406 AC_SUBST([GLESv1_CM_LIB_NAME])
407 AC_SUBST([GLESv2_LIB_NAME])
408 AC_SUBST([VG_LIB_NAME])
409 AC_SUBST([GLAPI_LIB_NAME])
411 AC_SUBST([GL_LIB_GLOB])
412 AC_SUBST([EGL_LIB_GLOB])
413 AC_SUBST([GLESv1_CM_LIB_GLOB])
414 AC_SUBST([GLESv2_LIB_GLOB])
415 AC_SUBST([VG_LIB_GLOB])
416 AC_SUBST([GLAPI_LIB_GLOB])
419 dnl Arch/platform-specific settings
422 [AS_HELP_STRING([--disable-asm],
423 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
424 [enable_asm="$enableval"],
429 AC_MSG_CHECKING([whether to enable assembly])
430 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
431 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
432 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
436 AC_MSG_RESULT([no, cross compiling])
440 # check for supported arches
441 if test "x$enable_asm" = xyes; then
445 linux* | *freebsd* | dragonfly* | *netbsd*)
446 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
452 linux* | *freebsd* | dragonfly* | *netbsd*)
453 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
468 DEFINES="$DEFINES -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
469 MESA_ASM_FILES='$(X86_FILES)'
470 AC_MSG_RESULT([yes, x86])
473 DEFINES="$DEFINES -DUSE_X86_64_ASM"
474 MESA_ASM_FILES='$(X86_64_FILES)'
475 AC_MSG_RESULT([yes, x86_64])
478 DEFINES="$DEFINES -DUSE_SPARC_ASM"
479 MESA_ASM_FILES='$(SPARC_FILES)'
480 AC_MSG_RESULT([yes, sparc])
483 AC_MSG_RESULT([no, platform not supported])
487 AC_SUBST([MESA_ASM_FILES])
492 dnl Check to see if dlopen is in default libraries (like Solaris, which
493 dnl has it in libc), or if libdl is needed to get it.
494 AC_CHECK_FUNC([dlopen], [DEFINES="$DEFINES -DHAVE_DLOPEN"],
495 [AC_CHECK_LIB([dl], [dlopen],
496 [DEFINES="$DEFINES -DHAVE_DLOPEN"; DLOPEN_LIBS="-ldl"])])
497 AC_SUBST([DLOPEN_LIBS])
499 dnl See if posix_memalign is available
500 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
502 dnl SELinux awareness.
503 AC_ARG_ENABLE([selinux],
504 [AS_HELP_STRING([--enable-selinux],
505 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
506 [MESA_SELINUX="$enableval"],
508 if test "x$enable_selinux" = "xyes"; then
509 AC_CHECK_HEADER([selinux/selinux.h],[],
510 [AC_MSG_ERROR([SELinux headers not found])])
511 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
512 [AC_MSG_ERROR([SELinux library not found])])
513 SELINUX_LIBS="-lselinux"
514 DEFINES="$DEFINES -DMESA_SELINUX"
518 AC_ARG_ENABLE([opengl],
519 [AS_HELP_STRING([--disable-opengl],
520 [disable support for standard OpenGL API @<:@default=no@:>@])],
521 [enable_opengl="$enableval"],
523 AC_ARG_ENABLE([gles1],
524 [AS_HELP_STRING([--enable-gles1],
525 [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
526 [enable_gles1="$enableval"],
528 AC_ARG_ENABLE([gles2],
529 [AS_HELP_STRING([--enable-gles2],
530 [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
531 [enable_gles2="$enableval"],
533 AC_ARG_ENABLE([openvg],
534 [AS_HELP_STRING([--enable-openvg],
535 [enable support for OpenVG API @<:@default=no@:>@])],
536 [enable_openvg="$enableval"],
540 [AS_HELP_STRING([--enable-dri],
541 [enable DRI modules @<:@default=enabled@:>@])],
542 [enable_dri="$enableval"],
545 [AS_HELP_STRING([--enable-glx],
546 [enable GLX library @<:@default=enabled@:>@])],
547 [enable_glx="$enableval"],
549 AC_ARG_ENABLE([osmesa],
550 [AS_HELP_STRING([--enable-osmesa],
551 [enable OSMesa library @<:@default=disabled@:>@])],
552 [enable_osmesa="$enableval"],
555 [AS_HELP_STRING([--disable-egl],
556 [disable EGL library @<:@default=enabled@:>@])],
557 [enable_egl="$enableval"],
560 AC_ARG_ENABLE([xorg],
561 [AS_HELP_STRING([--enable-xorg],
562 [enable support for X.Org DDX API @<:@default=no@:>@])],
563 [enable_xorg="$enableval"],
566 [AS_HELP_STRING([--enable-xa],
567 [enable build of the XA X Acceleration API @<:@default=no@:>@])],
568 [enable_xa="$enableval"],
570 dnl Broken, unmaintained. Don't want to see bug reports about it without patches.
572 dnl AC_ARG_ENABLE([d3d1x],
573 dnl [AS_HELP_STRING([--enable-d3d1x],
574 dnl [enable support for Direct3D 10 & 11 low-level API @<:@default=no@:>@])],
575 dnl [enable_d3d1x="$enableval"],
576 dnl [enable_d3d1x=no])
578 [AS_HELP_STRING([--enable-gbm],
579 [enable gbm library @<:@default=auto@:>@])],
580 [enable_gbm="$enableval"],
583 AC_ARG_ENABLE([xvmc],
584 [AS_HELP_STRING([--enable-xvmc],
585 [enable xvmc library @<:@default=auto@:>@])],
586 [enable_xvmc="$enableval"],
588 AC_ARG_ENABLE([vdpau],
589 [AS_HELP_STRING([--enable-vdpau],
590 [enable vdpau library @<:@default=auto@:>@])],
591 [enable_vdpau="$enableval"],
594 [AS_HELP_STRING([--enable-va],
595 [enable va library @<:@default=auto@:>@])],
596 [enable_va="$enableval"],
598 AC_ARG_ENABLE([opencl],
599 [AS_HELP_STRING([--enable-opencl],
600 [enable OpenCL library @<:@default=no@:>@])],
601 [enable_opencl="$enableval"],
603 AC_ARG_ENABLE([xlib_glx],
604 [AS_HELP_STRING([--enable-xlib-glx],
605 [make GLX library Xlib-based instead of DRI-based @<:@default=disabled@:>@])],
606 [enable_xlib_glx="$enableval"],
607 [enable_xlib_glx=no])
608 AC_ARG_ENABLE([gallium_egl],
609 [AS_HELP_STRING([--enable-gallium-egl],
610 [enable optional EGL state tracker (not required
611 for EGL support in Gallium with OpenGL and OpenGL ES)
612 @<:@default=disable@:>@])],
613 [enable_gallium_egl="$enableval"],
614 [enable_gallium_egl=no])
615 AC_ARG_ENABLE([gallium_gbm],
616 [AS_HELP_STRING([--enable-gallium-gbm],
617 [enable optional gbm state tracker (not required for
618 gbm support in Gallium)
619 @<:@default=auto@:>@])],
620 [enable_gallium_gbm="$enableval"],
621 [enable_gallium_gbm=auto])
623 AC_ARG_ENABLE([r600-llvm-compiler],
624 [AS_HELP_STRING([--enable-r600-llvm-compiler],
625 [Enable experimental LLVM backend for graphics shaders @<:@default=disable@:>@])],
626 [enable_r600_llvm="$enableval"],
627 [enable_r600_llvm=no])
629 AC_ARG_ENABLE([gallium_tests],
630 [AS_HELP_STRING([--enable-gallium-tests],
631 [Enable optional Gallium tests) @<:@default=disable@:>@])],
632 [enable_gallium_tests="$enableval"],
633 [enable_gallium_tests=no])
635 # Option for Gallium drivers
636 GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
638 AC_ARG_WITH([gallium-drivers],
639 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
640 [comma delimited Gallium drivers list, e.g.
641 "i915,nouveau,r300,r600,radeonsi,svga,swrast"
642 @<:@default=r300,r600,swrast@:>@])],
643 [with_gallium_drivers="$withval"],
644 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
646 # Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it
647 # here so that the script doesn't choke on an unknown driver name later.
648 case "$with_gallium_drivers" in
649 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
650 no) with_gallium_drivers='' ;;
653 if test "x$enable_opengl" = xno -a \
654 "x$enable_gles1" = xno -a \
655 "x$enable_gles2" = xno -a \
656 "x$enable_openvg" = xno -a \
657 "x$enable_xorg" = xno -a \
658 "x$enable_xa" = xno -a \
659 "x$enable_d3d1x" = xno -a \
660 "x$enable_xvmc" = xno -a \
661 "x$enable_vdpau" = xno -a \
662 "x$enable_va" = xno -a \
663 "x$enable_opencl" = xno; then
664 AC_MSG_ERROR([at least one API should be enabled])
668 if test "x$enable_opengl" = xno; then
669 API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
671 API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
673 if test "x$enable_gles1" = xyes; then
674 API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
676 if test "x$enable_gles2" = xyes; then
677 API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
679 AC_SUBST([API_DEFINES])
681 if test "x$enable_glx" = xno; then
682 AC_MSG_WARN([GLX disabled, disabling Xlib-GLX])
686 if test "x$enable_dri$enable_xlib_glx" = xyesyes; then
687 AC_MSG_ERROR([DRI and Xlib-GLX cannot be built together])
690 # Disable GLX if DRI and Xlib-GLX are not enabled
691 if test "x$enable_glx" = xyes -a \
692 "x$enable_dri" = xno -a \
693 "x$enable_xlib_glx" = xno; then
694 AC_MSG_WARN([Neither DRI nor Xlib-GLX enabled, disabling GLX])
698 AM_CONDITIONAL(HAVE_DRI, test "x$enable_dri" = xyes)
699 AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_xlib_glx" = xyes -o \
700 "x$enable_osmesa" = xyes)
702 AC_ARG_ENABLE([shared-glapi],
703 [AS_HELP_STRING([--enable-shared-glapi],
704 [Enable shared glapi for OpenGL @<:@default=yes@:>@])],
705 [enable_shared_glapi="$enableval"],
706 [enable_shared_glapi="$enable_dri"])
708 # Shared GLAPI is only useful for DRI
709 if test "x$enable_dri" = xno; then
710 AC_MSG_NOTICE([Shared GLAPI is only useful for DRI, disabling])
711 enable_shared_glapi=no
714 # TODO: Get rid of SHARED_GLAPI variable
716 if test "x$enable_shared_glapi" = xyes; then
718 # libGL will use libglapi for function lookups (IN_DRI_DRIVER means to use
720 DEFINES="$DEFINES -DIN_DRI_DRIVER"
721 CORE_DIRS="mapi/shared-glapi"
723 AC_SUBST([SHARED_GLAPI])
724 AM_CONDITIONAL(HAVE_SHARED_GLAPI, test "x$enable_shared_glapi" = xyes)
727 dnl Driver specific build directories
730 GALLIUM_DIRS="auxiliary drivers state_trackers"
731 GALLIUM_TARGET_DIRS=""
732 GALLIUM_WINSYS_DIRS="sw"
733 GALLIUM_DRIVERS_DIRS="galahad trace rbug noop identity"
734 GALLIUM_STATE_TRACKERS_DIRS=""
736 # build glapi if OpenGL is enabled
737 if test "x$enable_opengl" = xyes; then
738 CORE_DIRS="$CORE_DIRS mapi/glapi"
741 # build es1api if OpenGL ES 1.x is enabled
742 if test "x$enable_gles1" = xyes; then
743 CORE_DIRS="$CORE_DIRS mapi/es1api"
746 # build es2api if OpenGL ES 2.x is enabled
747 if test "x$enable_gles2" = xyes; then
748 CORE_DIRS="$CORE_DIRS mapi/es2api"
751 # build glsl and mesa if OpenGL or OpenGL ES is enabled
752 case "x$enable_opengl$enable_gles1$enable_gles2" in
754 CORE_DIRS="mapi/glapi/gen $CORE_DIRS glsl mesa"
758 case "x$enable_glx$enable_xlib_glx" in
760 DRIVER_DIRS="$DRIVER_DIRS x11"
761 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
762 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
763 GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS"
764 HAVE_WINSYS_XLIB="yes"
768 SRC_DIRS="$SRC_DIRS glx"
772 if test "x$enable_dri" = xyes; then
773 DRIVER_DIRS="$DRIVER_DIRS dri"
775 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/dri"
776 GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
780 if test "x$enable_osmesa" = xyes; then
781 DRIVER_DIRS="$DRIVER_DIRS osmesa"
785 AC_SUBST([DRIVER_DIRS])
786 AC_SUBST([GALLIUM_DIRS])
787 AC_SUBST([GALLIUM_TARGET_DIRS])
788 AC_SUBST([GALLIUM_WINSYS_DIRS])
789 AC_SUBST([GALLIUM_DRIVERS_DIRS])
790 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
791 AC_SUBST([MESA_LLVM])
794 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
795 [have_libdrm=yes], [have_libdrm=no])
797 if test "x$enable_dri" = xyes; then
798 # DRI must be shared, I think
799 if test "$enable_static" = yes; then
800 AC_MSG_ERROR([Cannot use static libraries for DRI drivers])
803 # not a hard requirement as swrast does not depend on it
804 if test "x$have_libdrm" = xyes; then
805 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
809 dnl Find out if X is available.
810 PKG_CHECK_MODULES([X11], [x11])
812 dnl Try to tell the user that the --x-* options are only used when
813 dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
814 m4_divert_once([HELP_BEGIN],
815 [These options are only used when the X libraries cannot be found by the
816 pkg-config utility.])
818 dnl We need X for xlib and dri, so bomb now if it's not found
819 if test "x$enable_glx" = xyes -a "x$no_x" = xyes; then
820 AC_MSG_ERROR([X11 development libraries needed for GLX])
823 if test "x$enable_glx" = xyes; then
824 DEFINES="$DEFINES -DUSE_XCB"
827 dnl Direct rendering or just indirect rendering
830 dnl Disable by default on GNU/Hurd
831 driglx_direct_default="no"
834 dnl Disable by default on cygwin
835 driglx_direct_default="no"
838 driglx_direct_default="yes"
841 AC_ARG_ENABLE([driglx-direct],
842 [AS_HELP_STRING([--disable-driglx-direct],
843 [enable direct rendering in GLX and EGL for DRI \
844 @<:@default=auto@:>@])],
845 [driglx_direct="$enableval"],
846 [driglx_direct="$driglx_direct_default"])
849 dnl libGL configuration per driver
851 case "x$enable_glx$enable_xlib_glx" in
854 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
855 GL_PC_REQ_PRIV="x11 xext"
856 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
857 GL_LIB_DEPS="$XLIBGL_LIBS"
858 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread $DLOPEN_LIBS"
859 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
863 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
864 GL_PC_REQ_PRIV="glproto >= $GLPROTO_REQUIRED"
865 if test x"$driglx_direct" = xyes; then
866 if test "x$have_libdrm" != xyes; then
867 AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
869 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
870 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
873 # find the DRI deps for libGL
874 dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx >= 1.8.1"
876 # add xf86vidmode if available
877 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
878 if test "$HAVE_XF86VIDMODE" = yes ; then
879 dri_modules="$dri_modules xxf86vm"
882 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
883 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
884 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
885 GL_LIB_DEPS="$DRIGL_LIBS"
887 # need DRM libs, -lpthread, etc.
888 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
889 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
893 # This is outside the case (above) so that it is invoked even for non-GLX
895 AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
897 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
898 GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
899 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
900 GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
902 AC_SUBST([GL_LIB_DEPS])
903 AC_SUBST([GL_PC_REQ_PRIV])
904 AC_SUBST([GL_PC_LIB_PRIV])
905 AC_SUBST([GL_PC_CFLAGS])
906 AC_SUBST([DRI_PC_REQ_PRIV])
907 AC_SUBST([GLESv1_CM_LIB_DEPS])
908 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
909 AC_SUBST([GLESv2_LIB_DEPS])
910 AC_SUBST([GLESv2_PC_LIB_PRIV])
912 GLAPI_LIB_DEPS="-lpthread $SELINUX_LIBS"
913 AC_SUBST([GLAPI_LIB_DEPS])
916 DRI_LIB_DEPS="\$(top_builddir)/src/mesa/libdricore/libdricore${VERSION}.la"
918 AC_SUBST([HAVE_XF86VIDMODE])
923 case "x$enable_glx$enable_xlib_glx" in
925 DEFINES="$DEFINES -DUSE_XSHM"
928 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
929 if test "x$driglx_direct" = xyes; then
930 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
939 AC_ARG_ENABLE([glx-tls],
940 [AS_HELP_STRING([--enable-glx-tls],
941 [enable TLS support in GLX @<:@default=disabled@:>@])],
942 [GLX_USE_TLS="$enableval"],
944 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
946 AS_IF([test "x$GLX_USE_TLS" = xyes],
947 [DEFINES="${DEFINES} -DGLX_USE_TLS -DPTHREADS"])
952 dnl Directory for DRI drivers
953 AC_ARG_WITH([dri-driverdir],
954 [AS_HELP_STRING([--with-dri-driverdir=DIR],
955 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
956 [DRI_DRIVER_INSTALL_DIR="$withval"],
957 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
958 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
959 dnl Extra search path for DRI drivers
960 AC_ARG_WITH([dri-searchpath],
961 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
962 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
963 [DRI_DRIVER_SEARCH_DIR="$withval"],
964 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
965 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
966 dnl Which drivers to build - default is chosen by platform
967 AC_ARG_WITH([dri-drivers],
968 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
969 [comma delimited DRI drivers list, e.g.
970 "swrast,i965,radeon" @<:@default=auto@:>@])],
971 [with_dri_drivers="$withval"],
972 [with_dri_drivers=yes])
973 if test "x$with_dri_drivers" = x; then
977 dnl If $with_dri_drivers is yes, directories will be added through
980 case "$with_dri_drivers" in
983 # classic DRI drivers require FEATURE_GL to build
984 if test "x$enable_opengl" = xyes; then
989 # verify the requested driver directories exist
990 dri_drivers=`IFS=', '; echo $with_dri_drivers`
991 for driver in $dri_drivers; do
992 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
993 AC_MSG_ERROR([DRI driver directory '$driver' does not exist])
995 DRI_DIRS="$dri_drivers"
996 if test -n "$DRI_DIRS" -a "x$enable_opengl" != xyes; then
997 AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1002 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
1003 if test "x$enable_dri" = xyes; then
1004 # Platform specific settings and drivers to build
1007 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1008 DEFINES="$DEFINES -DHAVE_ALIAS"
1012 if test "x$DRI_DIRS" = "xyes"; then
1013 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1017 # Build only the drivers for cards that exist on PowerPC.
1018 if test "x$DRI_DIRS" = "xyes"; then
1019 DRI_DIRS="r200 radeon swrast"
1023 # Build only the drivers for cards that exist on sparc
1024 if test "x$DRI_DIRS" = "xyes"; then
1025 DRI_DIRS="r200 radeon swrast"
1030 freebsd* | dragonfly* | *netbsd*)
1031 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
1032 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
1034 if test "x$DRI_DIRS" = "xyes"; then
1035 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1039 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1040 DEFINES="$DEFINES -DHAVE_ALIAS"
1043 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1046 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1047 if test "x$DRI_DIRS" = "xyes"; then
1054 if test "x$DRI_DIRS" = "xyes"; then
1055 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1058 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
1061 if test "x$enable_dri" = xyes; then
1064 AC_ARG_WITH([expat],
1065 [AS_HELP_STRING([--with-expat=DIR],
1066 [expat install directory])],[
1067 EXPAT_INCLUDES="-I$withval/include"
1068 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
1069 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
1070 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
1072 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
1074 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1075 [AC_MSG_ERROR([Expat required for DRI.])])
1079 # if we are building any dri driver other than swrast ...
1080 if test -n "$DRI_DIRS" -a x"$DRI_DIRS" != xswrast; then
1081 # ... libdrm is required
1082 if test "x$have_libdrm" != xyes; then
1083 AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
1085 # ... and build dricommon
1089 # put all the necessary libs together
1090 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
1091 GALLIUM_DRI_LIB_DEPS="$GALLIUM_DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
1093 AC_SUBST([DRI_DIRS])
1094 AC_SUBST([EXPAT_INCLUDES])
1095 AC_SUBST([DRI_LIB_DEPS])
1096 AC_SUBST([GALLIUM_DRI_LIB_DEPS])
1100 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1102 for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1118 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED])
1119 HAVE_NOUVEAU_DRI=yes;
1125 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1127 for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1130 HAVE_RADEON_DRI=yes;
1143 HAVE_SWRAST_DRI=yes;
1147 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
1148 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
1149 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
1150 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
1151 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
1152 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
1153 AM_CONDITIONAL(HAVE_COMMON_DRI, test x$HAVE_COMMON_DRI = xyes)
1156 dnl OSMesa configuration
1159 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1160 AC_ARG_WITH([osmesa-bits],
1161 [AS_HELP_STRING([--with-osmesa-bits=BITS],
1162 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1163 [osmesa_bits="$withval"],
1165 if test "x$osmesa_bits" != x8; then
1166 if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then
1167 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1171 case "x$osmesa_bits" in
1173 OSMESA_LIB="${OSMESA_LIB}"
1176 OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
1177 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1180 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1184 if test "x$enable_osmesa" = xyes; then
1185 # only link libraries with osmesa if shared
1186 if test "$enable_static" = no; then
1187 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1192 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1195 AC_SUBST([OSMESA_LIB_DEPS])
1196 AC_SUBST([OSMESA_MESA_DEPS])
1197 AC_SUBST([OSMESA_PC_REQ])
1198 AC_SUBST([OSMESA_PC_LIB_PRIV])
1201 dnl gbm configuration
1203 if test "x$enable_gbm" = xauto; then
1204 case "$with_egl_platforms" in
1211 if test "x$enable_gbm" = xyes; then
1212 SRC_DIRS="$SRC_DIRS gbm"
1214 PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1215 AC_MSG_ERROR([gbm needs udev]))
1217 if test "x$enable_dri" = xyes; then
1218 GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
1219 if test "x$enable_shared_glapi" = xno; then
1220 AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1222 PKG_CHECK_MODULES([LIBKMS], [libkms], [],
1223 AC_MSG_ERROR([gbm needs libkms]))
1226 GBM_PC_REQ_PRIV="libudev"
1227 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1228 AC_SUBST([GBM_PC_REQ_PRIV])
1229 AC_SUBST([GBM_PC_LIB_PRIV])
1232 dnl EGL configuration
1236 if test "x$enable_egl" = xyes; then
1237 SRC_DIRS="$SRC_DIRS egl"
1238 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS -lpthread"
1240 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1242 if test "$enable_static" != yes; then
1243 # build egl_glx when libGL is built
1244 if test "x$enable_glx" = xyes; then
1245 HAVE_EGL_DRIVER_GLX=1
1248 PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1249 [have_libudev=yes],[have_libudev=no])
1250 if test "$have_libudev" = yes; then
1251 DEFINES="$DEFINES -DHAVE_LIBUDEV"
1254 if test "x$enable_dri" = xyes; then
1255 HAVE_EGL_DRIVER_DRI2=1
1260 AC_SUBST([EGL_LIB_DEPS])
1263 dnl EGL Gallium configuration
1265 if test "x$enable_gallium_egl" = xyes; then
1266 if test "x$with_gallium_drivers" = x; then
1267 AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
1269 if test "x$enable_egl" = xno; then
1270 AC_MSG_ERROR([cannot enable egl_gallium without EGL])
1272 if test "x$have_libdrm" != xyes; then
1273 AC_MSG_ERROR([egl_gallium requires libdrm >= $LIBDRM_REQUIRED])
1276 GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
1277 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static"
1282 dnl gbm Gallium configuration
1284 if test "x$enable_gallium_gbm" = xauto; then
1285 case "$enable_gbm$HAVE_ST_EGL$enable_dri$with_egl_platforms" in
1287 enable_gallium_gbm=yes ;;
1289 enable_gallium_gbm=no ;;
1292 if test "x$enable_gallium_gbm" = xyes; then
1293 if test "x$with_gallium_drivers" = x; then
1294 AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
1296 if test "x$enable_gbm" = xno; then
1297 AC_MSG_ERROR([cannot enable gbm_gallium without gbm])
1299 # gbm_gallium abuses DRI_LIB_DEPS to link. Make sure it is set.
1300 if test "x$enable_dri" = xno; then
1301 AC_MSG_ERROR([gbm_gallium requires --enable-dri to build])
1304 GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS"
1305 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm"
1307 enable_gallium_loader=yes
1311 dnl X.Org DDX configuration
1313 if test "x$enable_xorg" = xyes; then
1314 PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1315 PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1316 PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1317 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1318 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1319 HAVE_XEXTPROTO_71="no")
1320 GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS"
1325 dnl XA configuration
1327 if test "x$enable_xa" = xyes; then
1330 AC_CHECK_PROG(NM, nm, "nm")
1331 if test "x$AWK" = x || test "x$GREP" = x || test "x$NM" = x; then
1332 AC_MSG_WARN([Missing one of nm, grep or awk. Disabling xa.])
1336 if test "x$enable_xa" = xyes; then
1337 GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS"
1345 dnl OpenVG configuration
1349 if test "x$enable_openvg" = xyes; then
1350 if test "x$enable_egl" = xno; then
1351 AC_MSG_ERROR([cannot enable OpenVG without EGL])
1353 if test "x$with_gallium_drivers" = x; then
1354 AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1356 if test "x$enable_gallium_egl" = xno; then
1357 AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
1360 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1361 VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS -lpthread"
1362 CORE_DIRS="$CORE_DIRS mapi/vgapi"
1363 GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1365 VG_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1366 AC_SUBST([VG_PC_LIB_PRIV])
1370 dnl D3D1X configuration
1373 if test "x$enable_d3d1x" = xyes; then
1374 if test "x$with_gallium_drivers" = x; then
1375 AC_MSG_ERROR([cannot enable D3D1X without Gallium])
1378 GALLIUM_STATE_TRACKERS_DIRS="d3d1x $GALLIUM_STATE_TRACKERS_DIRS"
1383 dnl Gallium G3DVL configuration
1385 AC_ARG_ENABLE([gallium-g3dvl],
1386 [AS_HELP_STRING([--enable-gallium-g3dvl],
1387 [build gallium g3dvl @<:@default=disabled@:>@])],
1388 [enable_gallium_g3dvl="$enableval"],
1389 [enable_gallium_g3dvl=no])
1390 if test "x$enable_gallium_g3dvl" = xyes; then
1391 if test "x$with_gallium_drivers" = x; then
1392 AC_MSG_ERROR([cannot enable G3DVL without Gallium])
1395 if test "x$enable_xvmc" = xauto; then
1396 PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no])
1399 if test "x$enable_vdpau" = xauto; then
1400 PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no])
1403 if test "x$enable_va" = xauto; then
1404 #don't enable vaapi state tracker even if package exists
1405 #PKG_CHECK_EXISTS([libva], [enable_vdpau=yes], [enable_vdpau=no])
1410 if test "x$enable_xvmc" = xyes; then
1411 PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6 x11-xcb xcb-dri2 >= 1.8])
1412 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xvmc"
1416 if test "x$enable_vdpau" = xyes; then
1417 PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.4.1 x11-xcb xcb-dri2 >= 1.8])
1418 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau"
1422 if test "x$enable_va" = xyes; then
1423 PKG_CHECK_MODULES([LIBVA], [libva = 0.31.1 x11-xcb xcb-dri2 >= 1.8])
1424 AC_MSG_WARN([vaapi state tracker currently unmaintained])
1425 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS va"
1430 dnl OpenCL configuration
1433 AC_ARG_WITH([libclc-path],
1434 [AS_HELP_STRING([--with-libclc-path],
1435 [Path to libclc builtins library. Example: --with-libclc-path=\$HOME/libclc/])],
1436 [LIBCLC_PATH="$withval"],
1439 AC_ARG_WITH([clang-libdir],
1440 [AS_HELP_STRING([--with-clang-libdir],
1441 [Path to Clang libraries @<:@default=llvm-config --libdir@:>@])],
1442 [CLANG_LIBDIR="$withval"],
1445 AC_SUBST([LIBCLC_PATH])
1447 if test "x$enable_opencl" = xyes; then
1448 if test "x$with_gallium_drivers" = x; then
1449 AC_MSG_ERROR([cannot enable OpenCL without Gallium])
1452 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6; then
1453 AC_MSG_ERROR([gcc >= 4.6 is required to build clover])
1456 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS clover"
1457 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS opencl"
1458 enable_gallium_loader=yes
1462 dnl Gallium configuration
1464 if test "x$with_gallium_drivers" != x; then
1465 SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
1467 AM_CONDITIONAL(HAVE_GALLIUM, test "x$with_gallium_drivers" != x)
1469 AC_SUBST([LLVM_BINDIR])
1470 AC_SUBST([LLVM_CFLAGS])
1471 AC_SUBST([LLVM_CPPFLAGS])
1472 AC_SUBST([LLVM_CXXFLAGS])
1473 AC_SUBST([LLVM_LIBDIR])
1474 AC_SUBST([LLVM_LIBS])
1475 AC_SUBST([LLVM_LDFLAGS])
1476 AC_SUBST([LLVM_INCLUDEDIR])
1477 AC_SUBST([LLVM_VERSION])
1478 AC_SUBST([CLANG_RESOURCE_DIR])
1480 case "x$enable_opengl$enable_gles1$enable_gles2" in
1482 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1486 AC_SUBST([VG_LIB_DEPS])
1487 AC_SUBST([EGL_CLIENT_APIS])
1490 dnl EGL Platforms configuration
1492 AC_ARG_WITH([egl-platforms],
1493 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1494 [comma delimited native platforms libEGL supports, e.g.
1495 "x11,drm" @<:@default=auto@:>@])],
1496 [with_egl_platforms="$withval"],
1497 [if test "x$enable_egl" = xyes; then
1498 with_egl_platforms="x11"
1500 with_egl_platforms=""
1505 if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
1506 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1509 # Do per-EGL platform setups and checks
1510 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1511 for plat in $egl_platforms; do
1514 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/$plat"
1518 PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-server],, \
1519 [AC_MSG_ERROR([cannot find libwayland-client])])
1520 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
1522 WAYLAND_PREFIX=`$PKG_CONFIG --variable=prefix wayland-client`
1523 AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner],,
1524 [${WAYLAND_PREFIX}/bin$PATH_SEPARATOR$PATH])
1528 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes])
1529 # workaround a bug in xcb-dri2 generated by xcb-proto 1.6
1531 AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [],
1532 [DEFINES="$DEFINES -DXCB_DRI2_CONNECT_DEVICE_NAME_BROKEN"])
1537 test "x$enable_gbm" = "xno" &&
1538 AC_MSG_ERROR([EGL platform drm needs gbm])
1545 AC_MSG_ERROR([EGL platform '$plat' does not exist])
1549 case "$plat$have_libudev" in
1551 AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;;
1555 # libEGL wants to default to the first platform specified in
1556 # ./configure. parse that here.
1557 if test "x$egl_platforms" != "x"; then
1558 FIRST_PLATFORM_CAPS=`echo $egl_platforms | sed 's| .*||' | tr 'a-z' 'A-Z'`
1559 EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
1561 EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
1564 EGL_PLATFORMS="$egl_platforms"
1566 AM_CONDITIONAL(HAVE_EGL_PLATFORM_X11, echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1)
1567 AM_CONDITIONAL(HAVE_EGL_PLATFORM_WAYLAND, echo "$egl_platforms" | grep 'wayland' >/dev/null 2>&1)
1568 AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep 'drm' >/dev/null 2>&1)
1569 AM_CONDITIONAL(HAVE_EGL_PLATFORM_FBDEV, echo "$egl_platforms" | grep 'fbdev' >/dev/null 2>&1)
1570 AM_CONDITIONAL(HAVE_EGL_PLATFORM_NULL, echo "$egl_platforms" | grep 'null' >/dev/null 2>&1)
1572 AM_CONDITIONAL(HAVE_EGL_DRIVER_DRI2, test "x$HAVE_EGL_DRIVER_DRI2" != "x")
1573 AM_CONDITIONAL(HAVE_EGL_DRIVER_GLX, test "x$HAVE_EGL_DRIVER_GLX" != "x")
1575 AC_SUBST([EGL_NATIVE_PLATFORM])
1576 AC_SUBST([EGL_PLATFORMS])
1577 AC_SUBST([EGL_CFLAGS])
1579 AC_ARG_WITH([egl-driver-dir],
1580 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1581 [directory for EGL drivers [[default=${libdir}/egl]]])],
1582 [EGL_DRIVER_INSTALL_DIR="$withval"],
1583 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1584 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1586 AC_ARG_WITH([xorg-driver-dir],
1587 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1588 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1589 [XORG_DRIVER_INSTALL_DIR="$withval"],
1590 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1591 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1593 AC_ARG_WITH([max-width],
1594 [AS_HELP_STRING([--with-max-width=N],
1595 [Maximum framebuffer width (4096)])],
1596 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1597 AS_IF([test "${withval}" -gt "4096"],
1598 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1600 AC_ARG_WITH([max-height],
1601 [AS_HELP_STRING([--with-max-height=N],
1602 [Maximum framebuffer height (4096)])],
1603 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1604 AS_IF([test "${withval}" -gt "4096"],
1605 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1611 AC_ARG_ENABLE([gallium-llvm],
1612 [AS_HELP_STRING([--enable-gallium-llvm],
1613 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1614 [enable_gallium_llvm="$enableval"],
1615 [enable_gallium_llvm=auto])
1617 AC_ARG_WITH([llvm-shared-libs],
1618 [AS_HELP_STRING([--with-llvm-shared-libs],
1619 [link with LLVM shared libraries @<:@default=disabled@:>@])],
1620 [with_llvm_shared_libs=yes],
1621 [with_llvm_shared_libs=no])
1623 AC_ARG_WITH([llvm-prefix],
1624 [AS_HELP_STRING([--with-llvm-prefix],
1625 [Prefix for LLVM installations in non-standard locations])],
1626 [llvm_prefix="$withval"],
1630 if test "x$with_gallium_drivers" = x; then
1631 enable_gallium_llvm=no
1633 if test "x$enable_gallium_llvm" = xauto; then
1635 i*86|x86_64) enable_gallium_llvm=yes;;
1638 if test "x$enable_gallium_llvm" = xyes; then
1639 if test "x$llvm_prefix" != x; then
1640 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no], ["$llvm_prefix/bin"])
1642 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1645 if test "x$LLVM_CONFIG" != xno; then
1646 LLVM_VERSION=`$LLVM_CONFIG --version | sed 's/svn.*//g'`
1647 LLVM_CFLAGS=`$LLVM_CONFIG --cppflags|sed -e 's/-DNDEBUG\>//g' -e 's/-pedantic//g' -e 's/-Wcovered-switch-default//g'`
1648 if test "x$with_llvm_shared_libs" = xyes; then
1649 dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
1650 LLVM_LIBS="-lLLVM-`$LLVM_CONFIG --version`"
1652 LLVM_COMPONENTS="engine bitwriter"
1653 if $LLVM_CONFIG --components | grep -q '\<mcjit\>'; then
1654 LLVM_COMPONENTS="${LLVM_COMPONENTS} mcjit"
1656 if test "x$enable_opencl" = xyes; then
1657 LLVM_COMPONENTS="${LLVM_COMPONENTS} ipo linker instrumentation"
1659 LLVM_LIBS="`$LLVM_CONFIG --libs ${LLVM_COMPONENTS}`"
1661 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1662 LLVM_BINDIR=`$LLVM_CONFIG --bindir`
1663 LLVM_CXXFLAGS=`$LLVM_CONFIG --cxxflags`
1664 LLVM_CPPFLAGS=`$LLVM_CONFIG --cppflags`
1665 LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
1666 LLVM_LIBDIR=`$LLVM_CONFIG --libdir`
1667 DEFINES="${DEFINES} -DHAVE_LLVM=`echo $LLVM_VERSION | sed -e 's/\([[0-9]]\)\.\([[0-9]]\)/0x0\10\2/g'`"
1670 dnl Check for Clang interanl headers
1671 if test "x$enable_opencl" = xyes; then
1672 if test "x$CLANG_LIBDIR" = x; then
1673 CLANG_LIBDIR=${LLVM_LIBDIR}
1675 CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION}
1676 AC_CHECK_FILE("$CLANG_RESOURCE_DIR/include/stddef.h",,
1677 AC_MSG_ERROR([Could not find clang internal header stddef.h in $CLANG_RESOURCE_DIR Use --with-clang-libdir to specify the correct path to the clang libraries.]))
1686 dnl Directory for XVMC libs
1687 AC_ARG_WITH([xvmc-libdir],
1688 [AS_HELP_STRING([--with-xvmc-libdir=DIR],
1689 [directory for the XVMC libraries @<:@default=${libdir}@:>@])],
1690 [XVMC_LIB_INSTALL_DIR="$withval"],
1691 [XVMC_LIB_INSTALL_DIR='${libdir}'])
1692 AC_SUBST([XVMC_LIB_INSTALL_DIR])
1697 if test "x$enable_gallium_tests" = xyes; then
1698 SRC_DIRS="$SRC_DIRS gallium/tests/trivial"
1699 enable_gallium_loader=yes
1702 dnl Directory for VDPAU libs
1703 AC_ARG_WITH([vdpau-libdir],
1704 [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1705 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1706 [VDPAU_LIB_INSTALL_DIR="$withval"],
1707 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1708 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
1710 dnl Directory for VA libs
1711 AC_ARG_WITH([va-libdir],
1712 [AS_HELP_STRING([--with-va-libdir=DIR],
1713 [directory for the VA libraries @<:@default=${libdir}/va@:>@])],
1714 [VA_LIB_INSTALL_DIR="$withval"],
1715 [VA_LIB_INSTALL_DIR='${libdir}/va'])
1716 AC_SUBST([VA_LIB_INSTALL_DIR])
1718 dnl Directory for OpenCL libs
1719 AC_ARG_WITH([opencl-libdir],
1720 [AS_HELP_STRING([--with-opencl-libdir=DIR],
1721 [directory for the OpenCL libraries @<:@default=${libdir}/opencl@:>@])],
1722 [OPENCL_LIB_INSTALL_DIR="$withval"],
1723 [OPENCL_LIB_INSTALL_DIR='${libdir}/opencl'])
1724 AC_SUBST([OPENCL_LIB_INSTALL_DIR])
1727 dnl Gallium helper functions
1729 gallium_check_st() {
1730 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes ||
1731 test "x$HAVE_ST_XA" = xyes || test "x$HAVE_ST_XVMC" = xyes ||
1732 test "x$HAVE_ST_VDPAU" = xyes || test "x$HAVE_ST_VA" = xyes; then
1733 if test "x$have_libdrm" != xyes; then
1734 AC_MSG_ERROR([DRI or Xorg DDX requires libdrm >= $LIBDRM_REQUIRED])
1736 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1738 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1739 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1741 if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
1742 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1744 if test "x$HAVE_ST_XA" = xyes && test "x$4" != x; then
1745 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
1747 if test "x$HAVE_ST_XVMC" = xyes && test "x$5" != x; then
1748 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5"
1750 if test "x$HAVE_ST_VDPAU" = xyes && test "x$6" != x; then
1751 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6"
1753 if test "x$HAVE_ST_VA" = xyes && test "x$7" != x; then
1754 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $7"
1758 gallium_require_llvm() {
1759 if test "x$MESA_LLVM" = x0; then
1761 i*86|x86_64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1766 gallium_require_drm_loader() {
1767 if test "x$enable_gallium_loader" = xyes; then
1768 PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1769 AC_MSG_ERROR([Gallium drm loader requrires libudev]))
1770 if test "x$have_libdrm" != xyes; then
1771 AC_MSG_ERROR([Gallium drm loader requires libdrm >= $LIBDRM_REQUIRED])
1773 enable_gallium_drm_loader=yes
1778 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
1779 if test "x$with_gallium_drivers" != x; then
1780 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1781 for driver in $gallium_drivers; do
1784 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
1785 gallium_check_st "svga/drm" "dri-vmwgfx" "" "xa-vmwgfx"
1788 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1789 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe"
1790 if test "x$MESA_LLVM" = x1; then
1791 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1793 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1794 gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1797 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1798 gallium_require_llvm "Gallium R300"
1799 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1800 gallium_check_st "radeon/drm" "dri-r300" "xorg-r300" "" "xvmc-r300" "vdpau-r300" "va-r300"
1803 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1804 gallium_require_drm_loader
1805 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1806 if test "x$enable_r600_llvm" = xyes -o "x$enable_opencl" = xyes; then
1807 if test "x$LLVM_VERSION" != "x3.1"; then
1808 AC_MSG_ERROR([LLVM 3.1 is required for the r600 llvm compiler.])
1810 NEED_RADEON_GALLIUM=yes;
1812 if test "x$enable_r600_llvm" = xyes; then
1813 USE_R600_LLVM_COMPILER=yes;
1815 if test "x$enable_opencl" = xyes -a "x$with_llvm_shared_libs" = xno; then
1816 LLVM_LIBS="${LLVM_LIBS} `$LLVM_CONFIG --libs bitreader asmparser`"
1818 gallium_check_st "radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600" "va-r600"
1821 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1822 gallium_require_drm_loader
1823 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS radeonsi"
1824 if test "x$LLVM_VERSION" != "x3.1"; then
1825 AC_MSG_ERROR([LLVM 3.1 is required to build the radeonsi driver.])
1827 NEED_RADEON_GALLIUM=yes;
1828 gallium_check_st "radeon/drm" "dri-radeonsi" "xorg-radeonsi" "" "" "vdpau-radeonsi" ""
1831 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1832 gallium_require_drm_loader
1833 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nv30 nv50 nvc0"
1834 gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau" "" "xvmc-nouveau" "vdpau-nouveau"
1837 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe"
1838 if test "x$MESA_LLVM" = x1; then
1839 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1842 if test "x$HAVE_ST_DRI" = xyes; then
1843 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1845 if test "x$HAVE_ST_VDPAU" = xyes; then
1846 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS vdpau-softpipe"
1848 if test "x$HAVE_ST_XVMC" = xyes; then
1849 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS xvmc-softpipe"
1851 if test "x$HAVE_ST_VA" = xyes; then
1852 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS va-softpipe"
1854 if test "x$HAVE_ST_VDPAU" = xyes ||
1855 test "x$HAVE_ST_XVMC" = xyes ||
1856 test "x$HAVE_ST_VA" = xyes; then
1857 if test "x$HAVE_WINSYS_XLIB" != xyes; then
1858 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
1863 AC_MSG_ERROR([Unknown Gallium driver: $driver])
1869 if test "x$enable_gallium_loader" = xyes; then
1870 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
1871 GALLIUM_PIPE_LOADER_DEFINES="-DHAVE_PIPE_LOADER_SW"
1872 GALLIUM_PIPE_LOADER_LIBS="\$(TOP)/src/gallium/auxiliary/pipe-loader/libpipe_loader.a"
1873 GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS \$(TOP)/src/gallium/winsys/sw/null/libws_null.a"
1875 if test "x$HAVE_WINSYS_XLIB" = xyes; then
1876 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_XLIB"
1877 GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS \$(TOP)/src/gallium/winsys/sw/xlib/libws_xlib.a"
1880 if test "x$enable_gallium_drm_loader" = xyes; then
1881 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRM"
1882 PKG_CHECK_MODULES([GALLIUM_PIPE_LOADER_XCB], [xcb xcb-dri2],
1883 pipe_loader_have_xcb=yes, pipe_loader_have_xcb=no)
1884 if test "x$pipe_loader_have_xcb" = xyes; then
1885 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DPIPE_LOADER_HAVE_XCB"
1886 GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS $GALLIUM_PIPE_LOADER_XCB_LIBS $LIBDRM_LIBS"
1890 AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
1891 AC_SUBST([GALLIUM_PIPE_LOADER_LIBS])
1894 dnl Tell Automake which drivers to build
1895 for driver in $GALLIUM_DRIVERS_DIRS; do
1898 HAVE_GALAHAD_GALLIUM=yes;
1901 HAVE_IDENTITY_GALLIUM=yes;
1904 HAVE_NOOP_GALLIUM=yes;
1907 GALLIUM_MAKE_DIRS="$GALLIUM_MAKE_DIRS $driver"
1912 AM_CONDITIONAL(HAVE_GALAHAD_GALLIUM, test x$HAVE_GALAHAD_GALLIUM = xyes)
1913 AM_CONDITIONAL(HAVE_IDENTITY_GALLIUM, test x$HAVE_IDENTITY_GALLIUM = xyes)
1914 AM_CONDITIONAL(HAVE_NOOP_GALLIUM, test x$HAVE_NOOP_GALLIUM = xyes)
1915 AM_CONDITIONAL(NEED_RADEON_GALLIUM, test x$NEED_RADEON_GALLIUM = xyes)
1916 AM_CONDITIONAL(USE_R600_LLVM_COMPILER, test x$USE_R600_LLVM_COMPILER = xyes)
1917 AM_CONDITIONAL(HAVE_LOADER_GALLIUM, test x$enable_gallium_loader = xyes)
1918 AM_CONDITIONAL(HAVE_DRM_LOADER_GALLIUM, test x$enable_gallium_drm_loader = xyes)
1919 AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
1920 AC_SUBST([GALLIUM_MAKE_DIRS])
1922 AM_CONDITIONAL(HAVE_X11_DRIVER, echo "$DRIVER_DIRS" | grep 'x11' >/dev/null 2>&1)
1924 AM_CONDITIONAL(HAVE_X86_ASM, echo "$DEFINES" | grep 'X86_ASM' >/dev/null 2>&1)
1925 AM_CONDITIONAL(HAVE_X86_64_ASM, echo "$DEFINES" | grep 'X86_64_ASM' >/dev/null 2>&1)
1926 AM_CONDITIONAL(HAVE_SPARC_ASM, echo "$DEFINES" | grep 'SPARC_ASM' >/dev/null 2>&1)
1928 dnl prepend CORE_DIRS to SRC_DIRS
1929 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
1931 dnl Restore LDFLAGS and CPPFLAGS
1932 LDFLAGS="$_SAVE_LDFLAGS"
1933 CPPFLAGS="$_SAVE_CPPFLAGS"
1935 dnl Add user CFLAGS and CXXFLAGS
1936 CFLAGS="$CFLAGS $USER_CFLAGS"
1937 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
1939 dnl Substitute the config
1940 AC_CONFIG_FILES([configs/current
1943 src/egl/drivers/Makefile
1944 src/egl/drivers/dri2/Makefile
1945 src/egl/drivers/glx/Makefile
1946 src/egl/main/Makefile
1948 src/egl/wayland/Makefile
1949 src/egl/wayland/wayland-drm/Makefile
1950 src/egl/wayland/wayland-egl/Makefile
1951 src/egl/wayland/wayland-egl/wayland-egl.pc
1952 src/gallium/Makefile
1953 src/gallium/auxiliary/pipe-loader/Makefile
1954 src/gallium/drivers/Makefile
1955 src/gallium/drivers/r300/Makefile
1956 src/gallium/drivers/r600/Makefile
1957 src/gallium/state_trackers/clover/Makefile
1958 src/gallium/targets/opencl/Makefile
1962 src/glsl/glcpp/Makefile
1963 src/glsl/tests/Makefile
1965 src/glx/tests/Makefile
1968 src/mapi/es1api/Makefile
1969 src/mapi/es1api/glesv1_cm.pc
1970 src/mapi/es2api/Makefile
1971 src/mapi/es2api/glesv2.pc
1972 src/mapi/glapi/Makefile
1973 src/mapi/glapi/gen/Makefile
1974 src/mapi/glapi/tests/Makefile
1975 src/mapi/shared-glapi/Makefile
1976 src/mapi/shared-glapi/tests/Makefile
1977 src/mapi/vgapi/Makefile
1978 src/mapi/vgapi/vg.pc
1981 src/mesa/drivers/Makefile
1982 src/mesa/drivers/dri/dri.pc
1983 src/mesa/drivers/dri/common/Makefile
1984 src/mesa/drivers/dri/i915/Makefile
1985 src/mesa/drivers/dri/i965/Makefile
1986 src/mesa/drivers/dri/Makefile
1987 src/mesa/drivers/dri/nouveau/Makefile
1988 src/mesa/drivers/dri/r200/Makefile
1989 src/mesa/drivers/dri/radeon/Makefile
1990 src/mesa/drivers/dri/swrast/Makefile
1991 src/mesa/drivers/osmesa/Makefile
1992 src/mesa/drivers/osmesa/osmesa.pc
1993 src/mesa/drivers/x11/Makefile
1994 src/mesa/libdricore/Makefile
1995 src/mesa/main/tests/Makefile
1996 src/mesa/x86-64/Makefile
1997 src/mesa/x86/Makefile])
1999 dnl Sort the dirs alphabetically
2000 GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2001 GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2002 GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2003 GALLIUM_MAKE_DIRS=`echo $GALLIUM_MAKE_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2004 GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2009 dnl Output some configuration info for the user
2012 echo " prefix: $prefix"
2013 echo " exec_prefix: $exec_prefix"
2014 echo " libdir: $libdir"
2015 echo " includedir: $includedir"
2019 echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
2020 echo " OpenVG: $enable_openvg"
2024 if test "x$enable_osmesa" != xno; then
2025 echo " OSMesa: lib$OSMESA_LIB"
2030 if test "x$enable_dri" != xno; then
2031 # cleanup the drivers var
2032 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
2033 if test "x$DRI_DIRS" = x; then
2034 echo " DRI drivers: no"
2036 echo " DRI drivers: $dri_dirs"
2038 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
2041 case "x$enable_glx$enable_xlib_glx" in
2043 echo " GLX: Xlib-based"
2046 echo " GLX: DRI-based"
2049 echo " GLX: $enable_glx"
2055 echo " EGL: $enable_egl"
2056 if test "$enable_egl" = yes; then
2057 echo " EGL platforms: $EGL_PLATFORMS"
2060 if test "x$HAVE_EGL_DRIVER_GLX" != "x"; then
2061 egl_drivers="$egl_drivers builtin:egl_glx"
2063 if test "x$HAVE_EGL_DRIVER_DRI2" != "x"; then
2064 egl_drivers="$egl_drivers builtin:egl_dri2"
2067 if test "x$HAVE_ST_EGL" = xyes; then
2068 echo " EGL drivers: ${egl_drivers} egl_gallium"
2069 echo " EGL Gallium STs:$EGL_CLIENT_APIS"
2071 echo " EGL drivers: $egl_drivers"
2076 if test "x$MESA_LLVM" = x1; then
2078 echo " llvm-config: $LLVM_CONFIG"
2079 echo " llvm-version: $LLVM_VERSION"
2085 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
2086 echo " Gallium: yes"
2087 echo " Gallium dirs: $GALLIUM_DIRS"
2088 echo " Target dirs: $GALLIUM_TARGET_DIRS"
2089 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
2090 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
2091 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
2099 echo " Shared libs: $enable_shared"
2100 echo " Static libs: $enable_static"
2101 echo " Shared-glapi: $enable_shared_glapi"
2103 dnl Compiler options
2104 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2105 cflags=`echo $CFLAGS $PIC_FLAGS | \
2106 $SED 's/^ *//;s/ */ /;s/ *$//'`
2107 cxxflags=`echo $CXXFLAGS $PIC_FLAGS | \
2108 $SED 's/^ *//;s/ */ /;s/ *$//'`
2109 defines=`echo $DEFINES | $SED 's/^ *//;s/ */ /;s/ *$//'`
2111 echo " CFLAGS: $cflags"
2112 echo " CXXFLAGS: $cxxflags"
2113 echo " Macros: $defines"
2115 echo " PYTHON2: $PYTHON2"
2118 echo " Run '${MAKE-make}' to build Mesa"