1 dnl Process this file with autoconf to create configure.
5 dnl Versioning - scrape the version from configs/default
6 m4_define([mesa_version],
7 [m4_esyscmd([${MAKE-make} -s -f bin/version.mk version | tr -d '\n' | tr -d '\r'])])
8 m4_ifval(mesa_version,,
9 [m4_fatal([Failed to get the Mesa version from `make -f bin/version.mk version`])])
11 dnl Tell the user about autoconf.html in the --help output
12 m4_divert_once([HELP_END], [
13 See docs/autoconf.html for more details on the options for Mesa.])
15 AC_INIT([Mesa],[mesa_version],
16 [https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa])
17 AC_CONFIG_AUX_DIR([bin])
19 AM_INIT_AUTOMAKE([foreign])
21 dnl http://people.gnome.org/~walters/docs/build-api.txt
22 dnl We don't support srcdir != builddir.
23 echo \#buildapi-variable-no-builddir >/dev/null
25 # Support silent build rules, requires at least automake-1.11. Disable
26 # by either passing --disable-silent-rules to configure or passing V=1
28 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
31 LT_INIT([disable-static])
33 dnl Save user CFLAGS and CXXFLAGS so one can override the default ones
35 USER_CXXFLAGS="$CXXFLAGS"
37 dnl Versions for external dependencies
38 LIBDRM_REQUIRED=2.4.24
39 LIBDRM_RADEON_REQUIRED=2.4.31
40 LIBDRM_INTEL_REQUIRED=2.4.32
41 LIBDRM_NOUVEAU_REQUIRED=0.6
42 DRI2PROTO_REQUIRED=2.6
43 GLPROTO_REQUIRED=1.4.14
44 LIBDRM_XORG_REQUIRED=2.4.24
45 LIBKMS_XORG_REQUIRED=1.0.0
51 AC_CHECK_PROGS([MAKE], [gmake make])
52 AC_CHECK_PROGS([PYTHON2], [python2 python])
55 AC_PATH_PROG([MKDEP], [makedepend])
57 if test "x$MKDEP" = "x"; then
58 AC_MSG_ERROR([makedepend is required to build Mesa])
62 AC_PATH_PROG([YACC_INST], $YACC)
63 if test ! -f "$srcdir/src/glsl/glcpp/glcpp-parse.y"; then
64 if test -z "$YACC_INST"; then
65 AC_MSG_ERROR([yacc not found - unable to compile glcpp-parse.y])
70 AC_PATH_PROG([PERL], [perl])
72 dnl Our fallback install-sh is a symlink to minstall. Use the existing
73 dnl configuration in that case.
75 test "x$INSTALL" = "x$ac_install_sh" && INSTALL='$(MINSTALL)'
77 dnl We need a POSIX shell for parts of the build. Assume we have one
81 # Solaris /bin/sh is too old/non-POSIX compliant
82 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
87 dnl clang is mostly GCC-compatible, but its version is much lower,
88 dnl so we have to check for it.
89 AC_MSG_CHECKING([if compiling with clang])
92 [AC_LANG_PROGRAM([], [[
97 [acv_mesa_CLANG=yes], [acv_mesa_CLANG=no])
99 AC_MSG_RESULT([$acv_mesa_CLANG])
101 dnl If we're using GCC, make sure that it is at least version 3.3.0. Older
102 dnl versions are explictly not supported.
103 if test "x$GCC" = xyes -a "x$acv_mesa_CLANG" = xno; then
104 AC_MSG_CHECKING([whether gcc version is sufficient])
108 GCC_VERSION=`$CC -dumpversion`
109 if test $? -eq 0; then
110 major=`echo $GCC_VERSION | cut -d. -f1`
111 minor=`echo $GCC_VERSION | cut -d. -f2`
114 if test $major -lt 3 -o $major -eq 3 -a $minor -lt 3 ; then
116 AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.])
123 MKDEP_OPTIONS=-fdepend
124 dnl Ask gcc where it's keeping its secret headers
125 if test "x$GCC" = xyes; then
126 for dir in include include-fixed; do
127 GCC_INCLUDES=`$CC -print-file-name=$dir`
128 if test "x$GCC_INCLUDES" != x && \
129 test "$GCC_INCLUDES" != "$dir" && \
130 test -d "$GCC_INCLUDES"; then
131 MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
135 AC_SUBST([MKDEP_OPTIONS])
137 dnl Make sure the pkg-config macros are defined
138 m4_ifndef([PKG_PROG_PKG_CONFIG],
139 [m4_fatal([Could not locate the pkg-config autoconf macros.
140 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
141 are in a different location, try setting the environment variable
142 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
143 PKG_PROG_PKG_CONFIG()
145 dnl LIB_DIR - library basename
146 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
149 dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
150 _SAVE_LDFLAGS="$LDFLAGS"
151 AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker])
152 AC_SUBST([EXTRA_LIB_PATH])
154 dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
155 _SAVE_CPPFLAGS="$CPPFLAGS"
156 AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers])
157 AC_SUBST([X11_INCLUDES])
164 DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS"
167 DEFINES="$DEFINES -DPTHREADS -DSVR4"
170 DEFINES="$DEFINES -DPTHREADS"
174 dnl Add flags for gcc and g++
175 if test "x$GCC" = xyes; then
176 CFLAGS="$CFLAGS -Wall -std=c99"
178 # Enable -Werror=implicit-function-declaration and
179 # -Werror=missing-prototypes, if available, or otherwise, just
180 # -Wmissing-prototypes. This is particularly useful to avoid
181 # generating a loadable driver module that has undefined symbols.
182 save_CFLAGS="$CFLAGS"
183 AC_MSG_CHECKING([whether $CC supports -Werror=missing-prototypes])
184 CFLAGS="$CFLAGS -Werror=implicit-function-declaration"
185 CFLAGS="$CFLAGS -Werror=missing-prototypes"
186 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
187 AC_MSG_RESULT([yes]),
188 [CFLAGS="$save_CFLAGS -Wmissing-prototypes";
189 AC_MSG_RESULT([no])]);
191 # Enable -fvisibility=hidden if using a gcc that supports it
192 save_CFLAGS="$CFLAGS"
193 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
194 VISIBILITY_CFLAGS="-fvisibility=hidden"
195 CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
196 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
197 [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
199 # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
202 # Work around aliasing bugs - developers should comment this out
203 CFLAGS="$CFLAGS -fno-strict-aliasing"
205 # gcc's builtin memcmp is slower than glibc's
206 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
207 CFLAGS="$CFLAGS -fno-builtin-memcmp"
209 if test "x$GXX" = xyes; then
210 CXXFLAGS="$CXXFLAGS -Wall"
212 # Enable -fvisibility=hidden if using a gcc that supports it
213 save_CXXFLAGS="$CXXFLAGS"
214 AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
215 VISIBILITY_CXXFLAGS="-fvisibility=hidden"
216 CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
218 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
219 [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
222 # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
223 CXXFLAGS=$save_CXXFLAGS
225 # Work around aliasing bugs - developers should comment this out
226 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
228 # gcc's builtin memcmp is slower than glibc's
229 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
230 CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp"
233 dnl even if the compiler appears to support it, using visibility attributes isn't
234 dnl going to do anything useful currently on cygwin apart from emit lots of warnings
238 VISIBILITY_CXXFLAGS=""
242 AC_SUBST([VISIBILITY_CFLAGS])
243 AC_SUBST([VISIBILITY_CXXFLAGS])
245 dnl These should be unnecessary, but let the user set them if they want
246 AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
247 Default is to use CFLAGS.])
248 AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
249 compiler. Default is to use CFLAGS.])
250 AC_SUBST([OPT_FLAGS])
251 AC_SUBST([ARCH_FLAGS])
254 dnl Hacks to enable 32 or 64 bit build
256 AC_ARG_ENABLE([32-bit],
257 [AS_HELP_STRING([--enable-32-bit],
258 [build 32-bit libraries @<:@default=auto@:>@])],
259 [enable_32bit="$enableval"],
262 if test "x$enable_32bit" = xyes; then
263 if test "x$GCC" = xyes; then
264 CFLAGS="$CFLAGS -m32"
265 ARCH_FLAGS="$ARCH_FLAGS -m32"
267 if test "x$GXX" = xyes; then
268 CXXFLAGS="$CXXFLAGS -m32"
271 AC_ARG_ENABLE([64-bit],
272 [AS_HELP_STRING([--enable-64-bit],
273 [build 64-bit libraries @<:@default=auto@:>@])],
274 [enable_64bit="$enableval"],
277 if test "x$enable_64bit" = xyes; then
278 if test "x$GCC" = xyes; then
279 CFLAGS="$CFLAGS -m64"
281 if test "x$GXX" = xyes; then
282 CXXFLAGS="$CXXFLAGS -m64"
286 dnl Can't have static and shared libraries, default to static if user
287 dnl explicitly requested. If both disabled, set to static since shared
288 dnl was explicitly requested.
289 case "x$enable_static$enable_shared" in
291 AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
295 AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
303 AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
304 if test "$enable_static" = yes; then
305 MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
307 AC_SUBST([MKLIB_OPTIONS])
310 dnl other compiler options
312 AC_ARG_ENABLE([debug],
313 [AS_HELP_STRING([--enable-debug],
314 [use debug compiler flags and macros @<:@default=disabled@:>@])],
315 [enable_debug="$enableval"],
318 if test "x$enable_debug" = xyes; then
319 DEFINES="$DEFINES -DDEBUG"
320 if test "x$GCC" = xyes; then
323 if test "x$GXX" = xyes; then
324 CXXFLAGS="$CXXFLAGS -g"
331 LIB_PREFIX_GLOB='lib'
332 LIB_VERSION_SEPARATOR='.'
333 if test "$enable_static" = yes; then
338 LIB_EXTENSION='dylib' ;;
340 dnl prefix can be 'cyg' or 'lib'
341 LIB_PREFIX_GLOB='???'
342 LIB_VERSION_SEPARATOR='-'
343 LIB_EXTENSION='dll' ;;
347 LIB_EXTENSION='so' ;;
352 dnl Mangled Mesa support
354 AC_ARG_ENABLE([mangling],
355 [AS_HELP_STRING([--enable-mangling],
356 [enable mangled symbols and library name @<:@default=disabled@:>@])],
357 [enable_mangling="${enableval}"],
363 if test "x${enable_mangling}" = "xyes" ; then
364 DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
367 OSMESA_LIB="MangledOSMesa"
371 AC_SUBST([OSMESA_LIB])
372 AM_CONDITIONAL(HAVE_MANGLED_GL, test $GL_LIB = MangledGL)
375 dnl potentially-infringing-but-nobody-knows-for-sure stuff
377 AC_ARG_ENABLE([texture-float],
378 [AS_HELP_STRING([--enable-texture-float],
379 [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
380 [enable_texture_float="$enableval"],
381 [enable_texture_float=no]
383 if test "x$enable_texture_float" = xyes; then
384 AC_MSG_WARN([Floating-point textures enabled.])
385 AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
386 DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
389 GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
390 GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
391 OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
392 EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
393 GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
394 GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION}
395 VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION}
396 GLAPI_LIB_NAME='lib$(GLAPI_LIB).'${LIB_EXTENSION}
398 GL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
399 GLU_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLU_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
400 OSMESA_LIB_GLOB=${LIB_PREFIX_GLOB}'$(OSMESA_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
401 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
402 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
403 GLESv1_CM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv1_CM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
404 GLESv2_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv2_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
405 VG_LIB_GLOB=${LIB_PREFIX_GLOB}'$(VG_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
406 GLAPI_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLAPI_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
408 AC_SUBST([GL_LIB_NAME])
409 AC_SUBST([GLU_LIB_NAME])
410 AC_SUBST([OSMESA_LIB_NAME])
411 AC_SUBST([EGL_LIB_NAME])
412 AC_SUBST([GLESv1_CM_LIB_NAME])
413 AC_SUBST([GLESv2_LIB_NAME])
414 AC_SUBST([VG_LIB_NAME])
415 AC_SUBST([GLAPI_LIB_NAME])
417 AC_SUBST([GL_LIB_GLOB])
418 AC_SUBST([GLU_LIB_GLOB])
419 AC_SUBST([OSMESA_LIB_GLOB])
420 AC_SUBST([EGL_LIB_GLOB])
421 AC_SUBST([GLESv1_CM_LIB_GLOB])
422 AC_SUBST([GLESv2_LIB_GLOB])
423 AC_SUBST([VG_LIB_GLOB])
424 AC_SUBST([GLAPI_LIB_GLOB])
427 dnl Arch/platform-specific settings
430 [AS_HELP_STRING([--disable-asm],
431 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
432 [enable_asm="$enableval"],
439 AC_MSG_CHECKING([whether to enable assembly])
440 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
441 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
442 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
446 AC_MSG_RESULT([no, cross compiling])
450 # check for supported arches
451 if test "x$enable_asm" = xyes; then
455 linux* | *freebsd* | dragonfly* | *netbsd*)
456 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
462 linux* | *freebsd* | dragonfly* | *netbsd*)
463 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
485 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
486 MESA_ASM_SOURCES='$(X86_SOURCES)'
487 GLAPI_ASM_SOURCES='$(X86_API)'
488 AC_MSG_RESULT([yes, x86])
491 ASM_FLAGS="-DUSE_X86_64_ASM"
492 MESA_ASM_SOURCES='$(X86-64_SOURCES)'
493 GLAPI_ASM_SOURCES='$(X86-64_API)'
494 AC_MSG_RESULT([yes, x86_64])
497 ASM_FLAGS="-DUSE_SPARC_ASM"
498 MESA_ASM_SOURCES='$(SPARC_SOURCES)'
499 GLAPI_ASM_SOURCES='$(SPARC_API)'
500 AC_MSG_RESULT([yes, sparc])
503 AC_MSG_RESULT([no, platform not supported])
507 AC_SUBST([ASM_FLAGS])
508 AC_SUBST([MESA_ASM_SOURCES])
509 AC_SUBST([GLAPI_ASM_SOURCES])
514 dnl Check to see if dlopen is in default libraries (like Solaris, which
515 dnl has it in libc), or if libdl is needed to get it.
516 AC_CHECK_FUNC([dlopen], [],
517 [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
518 AC_SUBST([DLOPEN_LIBS])
520 dnl See if posix_memalign is available
521 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
523 dnl SELinux awareness.
524 AC_ARG_ENABLE([selinux],
525 [AS_HELP_STRING([--enable-selinux],
526 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
527 [MESA_SELINUX="$enableval"],
529 if test "x$enable_selinux" = "xyes"; then
530 AC_CHECK_HEADER([selinux/selinux.h],[],
531 [AC_MSG_ERROR([SELinux headers not found])])
532 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
533 [AC_MSG_ERROR([SELinux library not found])])
534 SELINUX_LIBS="-lselinux"
535 DEFINES="$DEFINES -DMESA_SELINUX"
539 AC_ARG_ENABLE([opengl],
540 [AS_HELP_STRING([--disable-opengl],
541 [disable support for standard OpenGL API @<:@default=no@:>@])],
542 [enable_opengl="$enableval"],
544 AC_ARG_ENABLE([gles1],
545 [AS_HELP_STRING([--enable-gles1],
546 [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
547 [enable_gles1="$enableval"],
549 AC_ARG_ENABLE([gles2],
550 [AS_HELP_STRING([--enable-gles2],
551 [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
552 [enable_gles2="$enableval"],
554 AC_ARG_ENABLE([openvg],
555 [AS_HELP_STRING([--enable-openvg],
556 [enable support for OpenVG API @<:@default=no@:>@])],
557 [enable_openvg="$enableval"],
561 [AS_HELP_STRING([--enable-dri],
562 [enable DRI modules @<:@default=auto@:>@])],
563 [enable_dri="$enableval"],
566 [AS_HELP_STRING([--enable-glx],
567 [enable GLX library @<:@default=auto@:>@])],
568 [enable_glx="$enableval"],
570 AC_ARG_ENABLE([osmesa],
571 [AS_HELP_STRING([--enable-osmesa],
572 [enable OSMesa library @<:@default=auto@:>@])],
573 [enable_osmesa="$enableval"],
574 [enable_osmesa=auto])
576 [AS_HELP_STRING([--disable-egl],
577 [disable EGL library @<:@default=enabled@:>@])],
578 [enable_egl="$enableval"],
581 AC_ARG_ENABLE([xorg],
582 [AS_HELP_STRING([--enable-xorg],
583 [enable support for X.Org DDX API @<:@default=no@:>@])],
584 [enable_xorg="$enableval"],
587 [AS_HELP_STRING([--enable-xa],
588 [enable build of the XA X Acceleration API @<:@default=no@:>@])],
589 [enable_xa="$enableval"],
591 AC_ARG_ENABLE([d3d1x],
592 [AS_HELP_STRING([--enable-d3d1x],
593 [enable support for Direct3D 10 & 11 low-level API @<:@default=no@:>@])],
594 [enable_d3d1x="$enableval"],
597 [AS_HELP_STRING([--enable-gbm],
598 [enable gbm library @<:@default=auto@:>@])],
599 [enable_gbm="$enableval"],
602 AC_ARG_ENABLE([xvmc],
603 [AS_HELP_STRING([--enable-xvmc],
604 [enable xvmc library @<:@default=auto@:>@])],
605 [enable_xvmc="$enableval"],
607 AC_ARG_ENABLE([vdpau],
608 [AS_HELP_STRING([--enable-vdpau],
609 [enable vdpau library @<:@default=auto@:>@])],
610 [enable_vdpau="$enableval"],
613 [AS_HELP_STRING([--enable-va],
614 [enable va library @<:@default=auto@:>@])],
615 [enable_va="$enableval"],
618 AC_ARG_ENABLE([xlib_glx],
619 [AS_HELP_STRING([--enable-xlib-glx],
620 [make GLX library Xlib-based instead of DRI-based @<:@default=disable@:>@])],
621 [enable_xlib_glx="$enableval"],
622 [enable_xlib_glx=auto])
623 AC_ARG_ENABLE([gallium_egl],
624 [AS_HELP_STRING([--enable-gallium-egl],
625 [enable optional EGL state tracker (not required
626 for EGL support in Gallium with OpenGL and OpenGL ES)
627 @<:@default=disable@:>@])],
628 [enable_gallium_egl="$enableval"],
629 [enable_gallium_egl=no])
630 AC_ARG_ENABLE([gallium_gbm],
631 [AS_HELP_STRING([--enable-gallium-gbm],
632 [enable optional gbm state tracker (not required for
633 gbm support in Gallium)
634 @<:@default=auto@:>@])],
635 [enable_gallium_gbm="$enableval"],
636 [enable_gallium_gbm=auto])
638 # Option for Gallium drivers
639 GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
641 AC_ARG_WITH([gallium-drivers],
642 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
643 [comma delimited Gallium drivers list, e.g.
644 "i915,nouveau,r300,r600,svga,swrast"
645 @<:@default=r300,r600,swrast@:>@])],
646 [with_gallium_drivers="$withval"],
647 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
649 # Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it
650 # here so that the script doesn't choke on an unknown driver name later.
651 case "$with_gallium_drivers" in
652 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
653 no) with_gallium_drivers='' ;;
656 if test "x$enable_opengl" = xno -a \
657 "x$enable_gles1" = xno -a \
658 "x$enable_gles2" = xno -a \
659 "x$enable_openvg" = xno -a \
660 "x$enable_xorg" = xno -a \
661 "x$enable_xa" = xno -a \
662 "x$enable_d3d1x" = xno -a \
663 "x$enable_xvmc" = xno -a \
664 "x$enable_vdpau" = xno -a \
665 "x$enable_va" = xno; then
666 AC_MSG_ERROR([at least one API should be enabled])
670 if test "x$enable_opengl" = xno; then
671 API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
673 API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
675 if test "x$enable_gles1" = xyes; then
676 API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
678 if test "x$enable_gles2" = xyes; then
679 API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
681 AC_SUBST([API_DEFINES])
683 AC_ARG_ENABLE([shared-glapi],
684 [AS_HELP_STRING([--enable-shared-glapi],
685 [EXPERIMENTAL. Enable shared glapi for OpenGL @<:@default=no@:>@])],
686 [enable_shared_glapi="$enableval"],
687 [enable_shared_glapi=no])
690 if test "x$enable_shared_glapi" = xyes; then
692 # libGL will use libglapi for function lookups (IN_DRI_DRIVER means to use
694 DEFINES="$DEFINES -DIN_DRI_DRIVER"
695 SRC_DIRS="$SRC_DIRS mapi/shared-glapi"
697 AC_SUBST([SHARED_GLAPI])
698 AM_CONDITIONAL(HAVE_SHARED_GLAPI, test $SHARED_GLAPI = 1)
701 dnl Driver configuration. Options are xlib, dri and osmesa right now.
702 dnl More later: fbdev, ...
704 default_driver="xlib"
709 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
712 *freebsd* | dragonfly* | *netbsd*)
714 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
719 if test "x$enable_opengl" = xno; then
723 AC_ARG_WITH([driver],
724 [AS_HELP_STRING([--with-driver=DRIVER], [DEPRECATED])],
725 [mesa_driver="$withval"],
727 dnl Check for valid option
728 case "x$mesa_driver" in
729 xxlib|xdri|xosmesa|xno)
730 if test "x$enable_dri" != xauto -o \
731 "x$enable_glx" != xauto -o \
732 "x$enable_osmesa" != xauto -o \
733 "x$enable_xlib_glx" != xauto; then
734 AC_MSG_ERROR([--with-driver=$mesa_driver is deprecated])
738 mesa_driver="$default_driver"
741 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
745 # map $mesa_driver to APIs
746 if test "x$enable_dri" = xauto; then
747 case "x$mesa_driver" in
748 xdri) enable_dri=yes ;;
753 if test "x$enable_glx" = xauto; then
754 case "x$mesa_driver" in
755 xdri|xxlib) enable_glx=yes ;;
760 if test "x$enable_osmesa" = xauto; then
761 case "x$mesa_driver" in
762 xxlib|xosmesa) enable_osmesa=yes ;;
763 *) enable_osmesa=no ;;
767 if test "x$enable_xlib_glx" = xauto; then
768 case "x$mesa_driver" in
769 xxlib) enable_xlib_glx=yes ;;
770 *) enable_xlib_glx=no ;;
774 if test "x$enable_glx" = xno; then
778 AM_CONDITIONAL(HAVE_DRI, test x"$enable_dri" = xyes)
781 dnl Driver specific build directories
784 dnl this variable will be prepended to SRC_DIRS and is not exported
789 GALLIUM_DIRS="auxiliary drivers state_trackers"
790 GALLIUM_TARGET_DIRS=""
791 GALLIUM_WINSYS_DIRS="sw"
792 GALLIUM_DRIVERS_DIRS="galahad trace rbug noop identity"
793 GALLIUM_STATE_TRACKERS_DIRS=""
795 # build shared-glapi if enabled for OpenGL or if OpenGL ES is enabled
796 case "x$enable_shared_glapi$enable_gles1$enable_gles2" in
798 CORE_DIRS="$CORE_DIRS mapi/shared-glapi"
802 # build glapi if OpenGL is enabled
803 if test "x$enable_opengl" = xyes; then
804 CORE_DIRS="$CORE_DIRS mapi/glapi"
807 # build es1api if OpenGL ES 1.x is enabled
808 if test "x$enable_gles1" = xyes; then
809 CORE_DIRS="$CORE_DIRS mapi/es1api"
812 # build es2api if OpenGL ES 2.x is enabled
813 if test "x$enable_gles2" = xyes; then
814 CORE_DIRS="$CORE_DIRS mapi/es2api"
817 # build glsl and mesa if OpenGL or OpenGL ES is enabled
818 case "x$enable_opengl$enable_gles1$enable_gles2" in
820 CORE_DIRS="$CORE_DIRS glsl mesa"
824 case "x$enable_glx$enable_xlib_glx" in
826 DRIVER_DIRS="$DRIVER_DIRS x11"
827 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
828 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
829 GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS"
830 HAVE_WINSYS_XLIB="yes"
834 SRC_DIRS="$SRC_DIRS glx"
838 if test "x$enable_dri" = xyes; then
839 DRIVER_DIRS="$DRIVER_DIRS dri"
841 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/dri"
842 GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
846 if test "x$enable_osmesa" = xyes; then
847 # the empty space matters for osmesa... (see src/mesa/Makefile)
848 if test -n "$DRIVER_DIRS"; then
849 DRIVER_DIRS="$DRIVER_DIRS osmesa"
857 AC_SUBST([DRIVER_DIRS])
858 AC_SUBST([GALLIUM_DIRS])
859 AC_SUBST([GALLIUM_TARGET_DIRS])
860 AC_SUBST([GALLIUM_WINSYS_DIRS])
861 AC_SUBST([GALLIUM_DRIVERS_DIRS])
862 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
863 AC_SUBST([MESA_LLVM])
866 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
867 [have_libdrm=yes], [have_libdrm=no])
869 if test "x$enable_dri" = xyes; then
870 # DRI must be shared, I think
871 if test "$enable_static" = yes; then
872 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
875 # not a hard requirement as swrast does not depend on it
876 if test "x$have_libdrm" = xyes; then
877 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
882 dnl Find out if X is available. The variable have_x is set if libX11 is
883 dnl found to mimic AC_PATH_XTRA.
885 if test -n "$PKG_CONFIG"; then
886 AC_MSG_CHECKING([pkg-config files for X11 are available])
887 PKG_CHECK_EXISTS([x11],[
893 AC_MSG_RESULT([$x11_pkgconfig])
897 dnl Use the autoconf macro if no pkg-config files
898 if test "$x11_pkgconfig" = yes; then
899 PKG_CHECK_MODULES([X11], [x11])
902 test -z "$X11_CFLAGS" && X11_CFLAGS="$X_CFLAGS"
903 test -z "$X11_LIBS" && X11_LIBS="$X_LIBS -lX11"
904 AC_SUBST([X11_CFLAGS])
908 dnl Try to tell the user that the --x-* options are only used when
909 dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
910 m4_divert_once([HELP_BEGIN],
911 [These options are only used when the X libraries cannot be found by the
912 pkg-config utility.])
914 dnl We need X for xlib and dri, so bomb now if it's not found
915 if test "x$enable_glx" = xyes -a "x$no_x" = xyes; then
916 AC_MSG_ERROR([X11 development libraries needed for GLX])
919 if test "x$enable_glx" = xyes; then
920 DEFINES="$DEFINES -DUSE_XCB"
923 dnl Direct rendering or just indirect rendering
926 dnl Disable by default on GNU/Hurd
927 driglx_direct_default="no"
930 dnl Disable by default on cygwin
931 driglx_direct_default="no"
934 driglx_direct_default="yes"
937 AC_ARG_ENABLE([driglx-direct],
938 [AS_HELP_STRING([--disable-driglx-direct],
939 [enable direct rendering in GLX and EGL for DRI \
940 @<:@default=auto@:>@])],
941 [driglx_direct="$enableval"],
942 [driglx_direct="$driglx_direct_default"])
945 dnl libGL configuration per driver
947 case "x$enable_glx$enable_xlib_glx" in
950 if test "$x11_pkgconfig" = yes; then
951 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
952 GL_PC_REQ_PRIV="x11 xext"
953 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
954 GL_LIB_DEPS="$XLIBGL_LIBS"
956 # should check these...
957 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
958 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
959 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
960 GL_PC_CFLAGS="$X11_INCLUDES"
962 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread $DLOPEN_LIBS"
963 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
967 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
968 GL_PC_REQ_PRIV="glproto >= $GLPROTO_REQUIRED"
969 if test x"$driglx_direct" = xyes; then
970 if test "x$have_libdrm" != xyes; then
971 AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
973 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
974 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
977 # find the DRI deps for libGL
978 if test "$x11_pkgconfig" = yes; then
979 dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx"
981 # add xf86vidmode if available
982 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
983 if test "$HAVE_XF86VIDMODE" = yes ; then
984 dri_modules="$dri_modules xxf86vm"
987 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
988 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
989 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
990 GL_LIB_DEPS="$DRIGL_LIBS"
992 # should check these...
993 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
994 if test "x$HAVE_XF86VIDMODE" == xyes; then
995 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
997 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXdamage -lXfixes"
999 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
1000 GL_PC_CFLAGS="$X11_INCLUDES"
1002 # XCB can only be used from pkg-config
1003 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
1004 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
1005 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
1006 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
1009 # Check to see if the xcb-glx library is new enough to support
1010 # GLX_ARB_create_context. This bit of hackery is necessary until XCB 1.8
1012 save_CPPFLAGS="$CPPFLAGS"
1013 save_LDFLAGS="$LDFLAGS"
1014 CPPFLAGS="$CPPFLAGS $X11_INCLUDES"
1015 LDFLAGS="$LDFLAGS $GL_LIB_DEPS"
1016 AC_CHECK_LIB(xcb-glx, xcb_glx_create_context_attribs_arb_checked,
1017 [HAVE_XCB_GLX_CREATE_CONTEXT=yes],
1018 [HAVE_XCB_GLX_CREATE_CONTEXT=no])
1019 CPPFLAGS="$save_CPPFLAGS"
1020 LDFLAGS="$save_LDFLAGS"
1022 if test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes; then
1023 X11_INCLUDES="$X11_INCLUDES -DHAVE_XCB_GLX_CREATE_CONTEXT"
1026 # need DRM libs, -lpthread, etc.
1027 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1028 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1032 # This is outside the case (above) so that it is invoked even for non-GLX
1034 AM_CONDITIONAL(HAVE_XCB_GLX_CREATE_CONTEXT,
1035 test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes)
1036 AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
1038 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1039 GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1040 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1041 GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1043 AC_SUBST([GL_LIB_DEPS])
1044 AC_SUBST([GL_PC_REQ_PRIV])
1045 AC_SUBST([GL_PC_LIB_PRIV])
1046 AC_SUBST([GL_PC_CFLAGS])
1047 AC_SUBST([DRI_PC_REQ_PRIV])
1048 AC_SUBST([GLESv1_CM_LIB_DEPS])
1049 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
1050 AC_SUBST([GLESv2_LIB_DEPS])
1051 AC_SUBST([GLESv2_PC_LIB_PRIV])
1053 GLAPI_LIB_DEPS="-lpthread $SELINUX_LIBS"
1054 AC_SUBST([GLAPI_LIB_DEPS])
1057 dnl Setup default DRI CFLAGS
1058 DRI_CFLAGS='$(CFLAGS)'
1059 DRI_CXXFLAGS='$(CXXFLAGS)'
1060 DRI_LIB_DEPS='$(TOP)/src/mesa/libmesa.a'
1061 MESA_MODULES='$(TOP)/src/mesa/libmesa.a'
1063 if test "x$enable_dri" = xyes && test "x$driglx_direct" = xyes ; then
1064 DRICORE_GLSL_LIBS='$(TOP)/$(LIB_DIR)/libglsl.so'
1065 DRICORE_LIBS='$(TOP)/$(LIB_DIR)/libdricore.so'
1066 DRICORE_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -lglsl'
1067 DRI_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore -lglsl'
1068 DRI_CFLAGS='$(CFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1069 DRI_CXXFLAGS='$(CXXFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1070 MESA_MODULES='$(DRICORE_LIBS) $(DRICORE_GLSL_LIBS)'
1072 AC_SUBST([DRICORE_LIBS])
1073 AC_SUBST([DRICORE_GLSL_LIBS])
1074 AC_SUBST([DRICORE_LIB_DEPS])
1075 AC_SUBST([DRI_CXXFLAGS])
1076 AC_SUBST([DRI_CFLAGS])
1077 AC_SUBST([MESA_MODULES])
1079 AC_SUBST([HAVE_XF86VIDMODE])
1084 case "x$enable_glx$enable_xlib_glx" in
1086 DEFINES="$DEFINES -DUSE_XSHM"
1089 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1090 if test "x$driglx_direct" = xyes; then
1091 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1100 AC_ARG_ENABLE([glx-tls],
1101 [AS_HELP_STRING([--enable-glx-tls],
1102 [enable TLS support in GLX @<:@default=disabled@:>@])],
1103 [GLX_USE_TLS="$enableval"],
1105 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
1107 AS_IF([test "x$GLX_USE_TLS" = xyes],
1108 [DEFINES="${DEFINES} -DGLX_USE_TLS -DPTHREADS"])
1113 dnl Directory for DRI drivers
1114 AC_ARG_WITH([dri-driverdir],
1115 [AS_HELP_STRING([--with-dri-driverdir=DIR],
1116 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
1117 [DRI_DRIVER_INSTALL_DIR="$withval"],
1118 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
1119 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
1120 dnl Extra search path for DRI drivers
1121 AC_ARG_WITH([dri-searchpath],
1122 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
1123 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
1124 [DRI_DRIVER_SEARCH_DIR="$withval"],
1125 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
1126 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
1127 dnl Which drivers to build - default is chosen by platform
1128 AC_ARG_WITH([dri-drivers],
1129 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
1130 [comma delimited DRI drivers list, e.g.
1131 "swrast,i965,radeon" @<:@default=auto@:>@])],
1132 [with_dri_drivers="$withval"],
1133 [with_dri_drivers=yes])
1134 if test "x$with_dri_drivers" = x; then
1138 dnl If $with_dri_drivers is yes, directories will be added through
1141 case "$with_dri_drivers" in
1144 # classic DRI drivers require FEATURE_GL to build
1145 if test "x$enable_opengl" = xyes; then
1150 # verify the requested driver directories exist
1151 dri_drivers=`IFS=', '; echo $with_dri_drivers`
1152 for driver in $dri_drivers; do
1153 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
1154 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
1156 DRI_DIRS="$dri_drivers"
1157 if test -n "$DRI_DIRS" -a "x$enable_opengl" != xyes; then
1158 AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1163 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
1164 if test "x$enable_dri" = xyes; then
1165 # Platform specific settings and drivers to build
1168 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1169 DEFINES="$DEFINES -DHAVE_ALIAS"
1173 if test "x$DRI_DIRS" = "xyes"; then
1174 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1178 # Build only the drivers for cards that exist on PowerPC.
1179 if test "x$DRI_DIRS" = "xyes"; then
1180 DRI_DIRS="r200 radeon swrast"
1184 # Build only the drivers for cards that exist on sparc
1185 if test "x$DRI_DIRS" = "xyes"; then
1186 DRI_DIRS="r200 radeon swrast"
1191 freebsd* | dragonfly* | *netbsd*)
1192 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
1193 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
1195 if test "x$DRI_DIRS" = "xyes"; then
1196 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1200 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1201 DEFINES="$DEFINES -DHAVE_ALIAS"
1204 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1207 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1208 if test "x$DRI_DIRS" = "xyes"; then
1215 if test "x$DRI_DIRS" = "xyes"; then
1216 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1219 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
1222 if test "x$enable_dri" = xyes; then
1225 AC_ARG_WITH([expat],
1226 [AS_HELP_STRING([--with-expat=DIR],
1227 [expat install directory])],[
1228 EXPAT_INCLUDES="-I$withval/include"
1229 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
1230 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
1231 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
1233 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
1235 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1236 [AC_MSG_ERROR([Expat required for DRI.])])
1240 # if we are building any dri driver other than swrast ...
1241 if test -n "$DRI_DIRS" -a x"$DRI_DIRS" != xswrast; then
1242 # ... libdrm is required
1243 if test "x$have_libdrm" != xyes; then
1244 AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
1246 # ... and build dricommon
1250 # put all the necessary libs together
1251 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
1253 AC_SUBST([DRI_DIRS])
1254 AC_SUBST([EXPAT_INCLUDES])
1255 AC_SUBST([DRI_LIB_DEPS])
1259 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1261 for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1277 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1278 HAVE_NOUVEAU_DRI=yes;
1284 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1286 for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1289 HAVE_RADEON_DRI=yes;
1302 HAVE_SWRAST_DRI=yes;
1306 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
1307 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
1308 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
1309 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
1310 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
1311 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
1312 AM_CONDITIONAL(HAVE_COMMON_DRI, test x$HAVE_COMMON_DRI = xyes)
1315 dnl OSMesa configuration
1318 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1319 AC_ARG_WITH([osmesa-bits],
1320 [AS_HELP_STRING([--with-osmesa-bits=BITS],
1321 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1322 [osmesa_bits="$withval"],
1324 if test "x$osmesa_bits" != x8; then
1325 if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then
1326 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1330 case "x$osmesa_bits" in
1332 OSMESA_LIB="${OSMESA_LIB}"
1335 OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
1336 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1339 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1343 if test "x$enable_osmesa" = xyes; then
1344 # only link libraries with osmesa if shared
1345 if test "$enable_static" = no; then
1346 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1351 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1353 AC_SUBST([OSMESA_LIB_DEPS])
1354 AC_SUBST([OSMESA_MESA_DEPS])
1355 AC_SUBST([OSMESA_PC_REQ])
1356 AC_SUBST([OSMESA_PC_LIB_PRIV])
1359 dnl gbm configuration
1361 if test "x$enable_gbm" = xauto; then
1362 case "$with_egl_platforms" in
1369 if test "x$enable_gbm" = xyes; then
1370 SRC_DIRS="$SRC_DIRS gbm"
1372 PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1373 AC_MSG_ERROR([gbm needs udev]))
1375 if test "x$enable_dri" = xyes; then
1376 GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
1377 if test "$SHARED_GLAPI" -eq 0; then
1378 AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1382 GBM_PC_REQ_PRIV="libudev"
1383 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1384 AC_SUBST([GBM_PC_REQ_PRIV])
1385 AC_SUBST([GBM_PC_LIB_PRIV])
1388 dnl EGL configuration
1392 if test "x$enable_egl" = xyes; then
1393 SRC_DIRS="$SRC_DIRS egl"
1394 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS -lpthread"
1396 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1398 if test "$enable_static" != yes; then
1399 # build egl_glx when libGL is built
1400 if test "x$enable_glx" = xyes; then
1401 HAVE_EGL_DRIVER_GLX=1
1404 PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1405 [have_libudev=yes],[have_libudev=no])
1406 if test "$have_libudev" = yes; then
1407 DEFINES="$DEFINES -DHAVE_LIBUDEV"
1409 if test "x$enable_dri" = xyes; then
1410 # build egl_dri2 when xcb-dri2 is available
1411 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes],
1412 [have_xcb_dri2=yes],[have_xcb_dri2=no])
1413 if test "$have_xcb_dri2" = yes; then
1414 HAVE_EGL_DRIVER_DRI2=1
1415 # workaround a bug in xcb-dri2 generated by xcb-proto 1.6
1417 AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [],
1418 [DEFINES="$DEFINES -DXCB_DRI2_CONNECT_DEVICE_NAME_BROKEN"])
1425 AC_SUBST([EGL_LIB_DEPS])
1428 dnl EGL Gallium configuration
1430 if test "x$enable_gallium_egl" = xyes; then
1431 if test "x$with_gallium_drivers" = x; then
1432 AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
1434 if test "x$enable_egl" = xno; then
1435 AC_MSG_ERROR([cannot enable egl_gallium without EGL])
1437 if test "x$have_libdrm" != xyes; then
1438 AC_MSG_ERROR([egl_gallium requires libdrm >= $LIBDRM_REQUIRED])
1441 GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
1442 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static"
1447 dnl gbm Gallium configuration
1449 if test "x$enable_gallium_gbm" = xauto; then
1450 case "$enable_gbm$HAVE_ST_EGL$enable_dri$with_egl_platforms" in
1452 enable_gallium_gbm=yes ;;
1454 enable_gallium_gbm=no ;;
1457 if test "x$enable_gallium_gbm" = xyes; then
1458 if test "x$with_gallium_drivers" = x; then
1459 AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
1461 if test "x$enable_gbm" = xno; then
1462 AC_MSG_ERROR([cannot enable gbm_gallium without gbm])
1464 # gbm_gallium abuses DRI_LIB_DEPS to link. Make sure it is set.
1465 if test "x$enable_dri" = xno; then
1466 AC_MSG_ERROR([gbm_gallium requires --enable-dri to build])
1469 GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS"
1470 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm"
1475 dnl X.Org DDX configuration
1477 if test "x$enable_xorg" = xyes; then
1478 PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1479 PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1480 PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1481 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1482 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1483 HAVE_XEXTPROTO_71="no")
1484 GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS"
1489 dnl XA configuration
1491 if test "x$enable_xa" = xyes; then
1494 AC_CHECK_PROG(NM, nm, "nm")
1495 if test "x$AWK" = x || test "x$GREP" = x || test "x$NM" = x; then
1496 AC_MSG_WARN([Missing one of nm, grep or awk. Disabling xa.])
1500 if test "x$enable_xa" = xyes; then
1501 GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS"
1509 dnl OpenVG configuration
1513 if test "x$enable_openvg" = xyes; then
1514 if test "x$enable_egl" = xno; then
1515 AC_MSG_ERROR([cannot enable OpenVG without EGL])
1517 if test "x$with_gallium_drivers" = x; then
1518 AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1520 if test "x$enable_gallium_egl" = xno; then
1521 AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
1524 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1525 VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS -lpthread"
1526 CORE_DIRS="$CORE_DIRS mapi/vgapi"
1527 GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1532 dnl D3D1X configuration
1535 if test "x$enable_d3d1x" = xyes; then
1536 if test "x$with_gallium_drivers" = x; then
1537 AC_MSG_ERROR([cannot enable D3D1X without Gallium])
1540 GALLIUM_STATE_TRACKERS_DIRS="d3d1x $GALLIUM_STATE_TRACKERS_DIRS"
1545 dnl Gallium G3DVL configuration
1547 AC_ARG_ENABLE([gallium-g3dvl],
1548 [AS_HELP_STRING([--enable-gallium-g3dvl],
1549 [build gallium g3dvl @<:@default=disabled@:>@])],
1550 [enable_gallium_g3dvl="$enableval"],
1551 [enable_gallium_g3dvl=no])
1552 if test "x$enable_gallium_g3dvl" = xyes; then
1553 if test "x$with_gallium_drivers" = x; then
1554 AC_MSG_ERROR([cannot enable G3DVL without Gallium])
1557 if test "x$enable_xvmc" = xauto; then
1558 PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no])
1561 if test "x$enable_vdpau" = xauto; then
1562 PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no])
1565 if test "x$enable_va" = xauto; then
1566 #don't enable vaapi state tracker even if package exists
1567 #PKG_CHECK_EXISTS([libva], [enable_vdpau=yes], [enable_vdpau=no])
1572 if test "x$enable_xvmc" = xyes; then
1573 PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6 x11-xcb xcb-dri2 >= 1.8])
1574 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xvmc"
1578 if test "x$enable_vdpau" = xyes; then
1579 PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.4.1 x11-xcb xcb-dri2 >= 1.8])
1580 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau"
1584 if test "x$enable_va" = xyes; then
1585 PKG_CHECK_MODULES([LIBVA], [libva = 0.31.1 x11-xcb xcb-dri2 >= 1.8])
1586 AC_MSG_WARN([vaapi state tracker currently unmaintained])
1587 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS va"
1592 dnl GLU configuration
1594 AC_ARG_ENABLE([glu],
1595 [AS_HELP_STRING([--disable-glu],
1596 [enable OpenGL Utility library @<:@default=enabled@:>@])],
1597 [enable_glu="$enableval"],
1600 if test "x$enable_glu" = xyes; then
1601 if test "x$enable_glx" = xno -a "x$enable_osmesa" = xno; then
1602 AC_MSG_NOTICE([Disabling GLU since there is no OpenGL driver])
1607 if test "x$enable_glu" = xyes; then
1608 SRC_DIRS="$SRC_DIRS glu"
1610 if test "x$enable_glx" = xno; then
1611 # Link libGLU to libOSMesa instead of libGL
1614 if test "$enable_static" = no; then
1615 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
1620 # If static, empty GLU_LIB_DEPS and add libs for programs to link
1622 GLU_PC_LIB_PRIV="-lm"
1623 if test "$enable_static" = no; then
1625 GLU_MESA_DEPS='-l$(GL_LIB)'
1632 if test "$enable_static" = no; then
1633 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
1635 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
1636 AC_SUBST([GLU_LIB_DEPS])
1637 AC_SUBST([GLU_MESA_DEPS])
1638 AC_SUBST([GLU_PC_REQ])
1639 AC_SUBST([GLU_PC_REQ_PRIV])
1640 AC_SUBST([GLU_PC_LIB_PRIV])
1641 AC_SUBST([GLU_PC_CFLAGS])
1643 AC_SUBST([PROGRAM_DIRS])
1646 dnl Gallium configuration
1648 if test "x$with_gallium_drivers" != x; then
1649 SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
1652 AC_SUBST([LLVM_BINDIR])
1653 AC_SUBST([LLVM_CFLAGS])
1654 AC_SUBST([LLVM_CXXFLAGS])
1655 AC_SUBST([LLVM_LIBS])
1656 AC_SUBST([LLVM_LDFLAGS])
1657 AC_SUBST([LLVM_INCLUDEDIR])
1658 AC_SUBST([LLVM_VERSION])
1660 case "x$enable_opengl$enable_gles1$enable_gles2" in
1662 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1666 AC_SUBST([VG_LIB_DEPS])
1667 AC_SUBST([EGL_CLIENT_APIS])
1669 AC_ARG_WITH([egl-platforms],
1670 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1671 [comma delimited native platforms libEGL supports, e.g.
1672 "x11,drm" @<:@default=auto@:>@])],
1673 [with_egl_platforms="$withval"],
1674 [if test "x$enable_egl" = xyes; then
1675 with_egl_platforms="x11"
1677 with_egl_platforms=""
1682 if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
1683 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1686 # verify the requested driver directories exist
1687 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1688 for plat in $egl_platforms; do
1689 test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \
1690 AC_MSG_ERROR([EGL platform '$plat' does not exist])
1691 if test "$plat" = "fbdev"; then
1692 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev"
1694 if test "$plat" = "null"; then
1695 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
1697 if test "$plat" = "wayland"; then
1698 PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-server],, \
1699 [AC_MSG_ERROR([cannot find libwayland-client])])
1700 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
1702 m4_ifdef([WAYLAND_SCANNER_RULES],
1703 [WAYLAND_SCANNER_RULES(['$(top_srcdir)/src/egl/wayland/wayland-drm/protocol'])])
1705 if test "$plat" = "drm" && test "x$enable_gbm" = "xno"; then
1706 AC_MSG_ERROR([EGL platform drm needs gbm])
1708 case "$plat$have_libudev" in
1710 AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;;
1714 # libEGL wants to default to the first platform specified in
1715 # ./configure. parse that here.
1716 if test "x$egl_platforms" != "x"; then
1717 FIRST_PLATFORM_CAPS=`echo $egl_platforms | sed 's| .*||' | tr 'a-z' 'A-Z'`
1718 EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
1720 EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
1723 EGL_PLATFORMS="$egl_platforms"
1725 AM_CONDITIONAL(HAVE_EGL_PLATFORM_X11, echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1)
1726 AM_CONDITIONAL(HAVE_EGL_PLATFORM_WAYLAND, echo "$egl_platforms" | grep 'wayland' >/dev/null 2>&1)
1727 AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep 'drm' >/dev/null 2>&1)
1728 AM_CONDITIONAL(HAVE_EGL_PLATFORM_FBDEV, echo "$egl_platforms" | grep 'fbdev' >/dev/null 2>&1)
1729 AM_CONDITIONAL(HAVE_EGL_PLATFORM_NULL, echo "$egl_platforms" | grep 'null' >/dev/null 2>&1)
1731 AM_CONDITIONAL(HAVE_EGL_DRIVER_DRI2, test "x$HAVE_EGL_DRIVER_DRI2" != "x")
1732 AM_CONDITIONAL(HAVE_EGL_DRIVER_GLX, test "x$HAVE_EGL_DRIVER_GLX" != "x")
1734 AC_SUBST([EGL_NATIVE_PLATFORM])
1735 AC_SUBST([EGL_PLATFORMS])
1736 AC_SUBST([EGL_CFLAGS])
1738 AC_ARG_WITH([egl-driver-dir],
1739 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1740 [directory for EGL drivers [[default=${libdir}/egl]]])],
1741 [EGL_DRIVER_INSTALL_DIR="$withval"],
1742 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1743 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1745 AC_ARG_WITH([xorg-driver-dir],
1746 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1747 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1748 [XORG_DRIVER_INSTALL_DIR="$withval"],
1749 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1750 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1752 AC_ARG_WITH([max-width],
1753 [AS_HELP_STRING([--with-max-width=N],
1754 [Maximum framebuffer width (4096)])],
1755 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1756 AS_IF([test "${withval}" -gt "4096"],
1757 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1759 AC_ARG_WITH([max-height],
1760 [AS_HELP_STRING([--with-max-height=N],
1761 [Maximum framebuffer height (4096)])],
1762 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1763 AS_IF([test "${withval}" -gt "4096"],
1764 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1770 AC_ARG_ENABLE([gallium-llvm],
1771 [AS_HELP_STRING([--enable-gallium-llvm],
1772 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1773 [enable_gallium_llvm="$enableval"],
1774 [enable_gallium_llvm=auto])
1776 AC_ARG_WITH([llvm-shared-libs],
1777 [AS_HELP_STRING([--with-llvm-shared-libs],
1778 [link with LLVM shared libraries @<:@default=disabled@:>@])],
1779 [with_llvm_shared_libs=yes],
1780 [with_llvm_shared_libs=no])
1782 if test "x$with_gallium_drivers" = x; then
1783 enable_gallium_llvm=no
1785 if test "x$enable_gallium_llvm" = xauto; then
1787 i*86|x86_64) enable_gallium_llvm=yes;;
1790 if test "x$enable_gallium_llvm" = xyes; then
1791 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1793 if test "x$LLVM_CONFIG" != xno; then
1794 LLVM_VERSION=`$LLVM_CONFIG --version | sed 's/svn.*//g'`
1795 LLVM_CFLAGS=`$LLVM_CONFIG --cppflags|sed -e 's/-DNDEBUG\>//g' -e 's/-pedantic//g'`
1796 if test "x$with_llvm_shared_libs" = xyes; then
1797 dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
1798 LLVM_LIBS="-lLLVM-`$LLVM_CONFIG --version`"
1800 LLVM_LIBS="`$LLVM_CONFIG --libs engine bitwriter`"
1802 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1803 LLVM_BINDIR=`$LLVM_CONFIG --bindir`
1804 LLVM_CXXFLAGS=`$LLVM_CONFIG --cxxflags`
1805 LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
1806 DEFINES="$DEFINES -D__STDC_CONSTANT_MACROS"
1815 dnl Directory for XVMC libs
1816 AC_ARG_WITH([xvmc-libdir],
1817 [AS_HELP_STRING([--with-xvmc-libdir=DIR],
1818 [directory for the XVMC libraries @<:@default=${libdir}@:>@])],
1819 [XVMC_LIB_INSTALL_DIR="$withval"],
1820 [XVMC_LIB_INSTALL_DIR='${libdir}'])
1821 AC_SUBST([XVMC_LIB_INSTALL_DIR])
1823 dnl Directory for VDPAU libs
1824 AC_ARG_WITH([vdpau-libdir],
1825 [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1826 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1827 [VDPAU_LIB_INSTALL_DIR="$withval"],
1828 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1829 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
1831 dnl Directory for VA libs
1832 AC_ARG_WITH([va-libdir],
1833 [AS_HELP_STRING([--with-va-libdir=DIR],
1834 [directory for the VA libraries @<:@default=${libdir}/va@:>@])],
1835 [VA_LIB_INSTALL_DIR="$withval"],
1836 [VA_LIB_INSTALL_DIR='${libdir}/va'])
1837 AC_SUBST([VA_LIB_INSTALL_DIR])
1840 dnl Gallium helper functions
1842 gallium_check_st() {
1843 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes ||
1844 test "x$HAVE_ST_XA" = xyes || test "x$HAVE_ST_XVMC" = xyes ||
1845 test "x$HAVE_ST_VDPAU" = xyes || test "x$HAVE_ST_VA" = xyes; then
1846 if test "x$have_libdrm" != xyes; then
1847 AC_MSG_ERROR([DRI or Xorg DDX requires libdrm >= $LIBDRM_REQUIRED])
1849 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1851 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1852 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1854 if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
1855 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1857 if test "x$HAVE_ST_XA" = xyes && test "x$4" != x; then
1858 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
1860 if test "x$HAVE_ST_XVMC" = xyes && test "x$5" != x; then
1861 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5"
1863 if test "x$HAVE_ST_VDPAU" = xyes && test "x$6" != x; then
1864 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6"
1866 if test "x$HAVE_ST_VA" = xyes && test "x$7" != x; then
1867 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $7"
1871 gallium_require_llvm() {
1872 if test "x$MESA_LLVM" = x0; then
1874 i*86|x86_64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1880 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
1881 if test "x$with_gallium_drivers" != x; then
1882 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1883 for driver in $gallium_drivers; do
1886 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
1887 gallium_check_st "svga/drm" "dri-vmwgfx" "" "xa-vmwgfx"
1890 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1891 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe"
1892 if test "x$MESA_LLVM" = x1; then
1893 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1895 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1896 gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1899 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1900 gallium_require_llvm "Gallium R300"
1901 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1902 gallium_check_st "radeon/drm" "dri-r300" "xorg-r300" "" "xvmc-r300" "vdpau-r300" "va-r300"
1905 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1906 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1907 gallium_check_st "radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600" "va-r600"
1910 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS radeonsi"
1911 if test "x$LLVM_VERSION" != "x3.1"; then
1912 AC_MSG_ERROR([LLVM 3.1 is required to build the radeonsi driver.])
1914 NEED_RADEON_GALLIUM=yes;
1915 gallium_check_st "radeon/drm" "dri-radeonsi" "xorg-radeonsi"
1918 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1919 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50 nvc0"
1920 gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau" "" "xvmc-nouveau" "vdpau-nouveau"
1923 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe"
1924 if test "x$MESA_LLVM" = x1; then
1925 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1928 if test "x$HAVE_ST_DRI" = xyes; then
1929 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1931 if test "x$HAVE_ST_VDPAU" = xyes; then
1932 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS vdpau-softpipe"
1934 if test "x$HAVE_ST_XVMC" = xyes; then
1935 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS xvmc-softpipe"
1937 if test "x$HAVE_ST_VA" = xyes; then
1938 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS va-softpipe"
1940 if test "x$HAVE_ST_VDPAU" = xyes ||
1941 test "x$HAVE_ST_XVMC" = xyes ||
1942 test "x$HAVE_ST_VA" = xyes; then
1943 if test "x$HAVE_WINSYS_XLIB" != xyes; then
1944 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
1949 AC_MSG_ERROR([Unknown Gallium driver: $driver])
1955 dnl Tell Automake which drivers to build
1956 for driver in $GALLIUM_DRIVERS_DIRS; do
1959 HAVE_GALAHAD_GALLIUM=yes;
1962 HAVE_IDENTITY_GALLIUM=yes;
1965 HAVE_NOOP_GALLIUM=yes;
1968 GALLIUM_MAKE_DIRS="$GALLIUM_MAKE_DIRS $driver"
1973 AM_CONDITIONAL(HAVE_GALAHAD_GALLIUM, test x$HAVE_GALAHAD_GALLIUM = xyes)
1974 AM_CONDITIONAL(HAVE_IDENTITY_GALLIUM, test x$HAVE_IDENTITY_GALLIUM = xyes)
1975 AM_CONDITIONAL(HAVE_NOOP_GALLIUM, test x$HAVE_NOOP_GALLIUM = xyes)
1976 AM_CONDITIONAL(NEED_RADEON_GALLIUM, test x$NEED_RADEON_GALLIUM = xyes)
1977 AC_SUBST([GALLIUM_MAKE_DIRS])
1979 dnl prepend CORE_DIRS to SRC_DIRS
1980 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
1982 dnl Restore LDFLAGS and CPPFLAGS
1983 LDFLAGS="$_SAVE_LDFLAGS"
1984 CPPFLAGS="$_SAVE_CPPFLAGS"
1986 dnl Add user CFLAGS and CXXFLAGS
1987 CFLAGS="$CFLAGS $USER_CFLAGS"
1988 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
1990 dnl Substitute the config
1991 AC_CONFIG_FILES([configs/autoconf
1992 src/gallium/drivers/Makefile
1993 src/gallium/drivers/r300/Makefile
1996 src/egl/drivers/Makefile
1997 src/egl/drivers/dri2/Makefile
1998 src/egl/drivers/glx/Makefile
1999 src/egl/main/Makefile
2001 src/egl/wayland/Makefile
2002 src/egl/wayland/wayland-egl/Makefile
2003 src/egl/wayland/wayland-egl/wayland-egl.pc
2004 src/egl/wayland/wayland-drm/Makefile
2006 src/mapi/shared-glapi/Makefile
2008 src/mesa/drivers/dri/dri.pc
2009 src/mesa/drivers/dri/Makefile
2010 src/mesa/drivers/dri/common/Makefile
2011 src/mesa/drivers/dri/i915/Makefile
2012 src/mesa/drivers/dri/i965/Makefile
2013 src/mesa/drivers/dri/nouveau/Makefile
2014 src/mesa/drivers/dri/r200/Makefile
2015 src/mesa/drivers/dri/radeon/Makefile
2016 src/mesa/drivers/dri/swrast/Makefile
2018 tests/glx/Makefile])
2020 dnl Replace the configs/current symlink
2021 AC_CONFIG_COMMANDS([configs],[
2022 if test -f configs/current || test -L configs/current; then
2023 rm -f configs/current
2025 ln -s autoconf configs/current
2028 dnl Sort the dirs alphabetically
2029 GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2030 GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2031 GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2032 GALLIUM_MAKE_DIRS=`echo $GALLIUM_MAKE_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2033 GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2038 dnl Output some configuration info for the user
2041 echo " prefix: $prefix"
2042 echo " exec_prefix: $exec_prefix"
2043 echo " libdir: $libdir"
2044 echo " includedir: $includedir"
2048 echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
2049 echo " OpenVG: $enable_openvg"
2053 if test "x$enable_osmesa" != xno; then
2054 echo " OSMesa: lib$OSMESA_LIB"
2059 if test "x$enable_dri" != xno; then
2060 # cleanup the drivers var
2061 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
2062 if test "x$DRI_DIRS" = x; then
2063 echo " DRI drivers: no"
2065 echo " DRI drivers: $dri_dirs"
2067 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
2070 case "x$enable_glx$enable_xlib_glx" in
2072 echo " GLX: Xlib-based"
2075 echo " GLX: DRI-based"
2078 echo " GLX: $enable_glx"
2083 echo " GLU: $enable_glu"
2087 echo " EGL: $enable_egl"
2088 if test "$enable_egl" = yes; then
2089 echo " EGL platforms: $EGL_PLATFORMS"
2092 if test "x$HAVE_EGL_DRIVER_GLX" != "x"; then
2093 egl_drivers="$egl_drivers builtin:egl_glx"
2095 if test "x$HAVE_EGL_DRIVER_DRI2" != "x"; then
2096 egl_drivers="$egl_drivers builtin:egl_dri2"
2099 if test "x$HAVE_ST_EGL" = xyes; then
2100 echo " EGL drivers: ${egl_drivers} egl_gallium"
2101 echo " EGL Gallium STs:$EGL_CLIENT_APIS"
2103 echo " EGL drivers: $egl_drivers"
2108 if test "x$MESA_LLVM" = x1; then
2110 echo " llvm-config: $LLVM_CONFIG"
2111 echo " llvm-version: $LLVM_VERSION"
2117 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
2118 echo " Gallium: yes"
2119 echo " Gallium dirs: $GALLIUM_DIRS"
2120 echo " Target dirs: $GALLIUM_TARGET_DIRS"
2121 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
2122 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
2123 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
2131 echo " Shared libs: $enable_shared"
2132 echo " Static libs: $enable_static"
2134 dnl Compiler options
2135 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2136 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2137 $SED 's/^ *//;s/ */ /;s/ *$//'`
2138 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2139 $SED 's/^ *//;s/ */ /;s/ *$//'`
2140 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
2142 echo " CFLAGS: $cflags"
2143 echo " CXXFLAGS: $cxxflags"
2144 echo " Macros: $defines"
2146 echo " PYTHON2: $PYTHON2"
2149 echo " Run '${MAKE-make}' to build Mesa"