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 -Wall])
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.34
41 LIBDRM_NVVIEUX_REQUIRED=2.4.33
42 LIBDRM_NOUVEAU_REQUIRED=2.4.33
43 DRI2PROTO_REQUIRED=2.6
44 GLPROTO_REQUIRED=1.4.14
45 LIBDRM_XORG_REQUIRED=2.4.24
46 LIBKMS_XORG_REQUIRED=1.0.0
54 AC_CHECK_PROGS([MAKE], [gmake make])
55 AC_CHECK_PROGS([PYTHON2], [python2 python])
58 AC_PATH_PROG([MKDEP], [makedepend])
60 if test "x$MKDEP" = "x"; then
61 AC_MSG_ERROR([makedepend is required to build Mesa])
65 AC_PATH_PROG([YACC_INST], $YACC)
66 if test ! -f "$srcdir/src/glsl/glcpp/glcpp-parse.y"; then
67 if test -z "$YACC_INST"; then
68 AC_MSG_ERROR([yacc not found - unable to compile glcpp-parse.y])
73 AC_PATH_PROG([PERL], [perl])
75 AC_CHECK_PROG(INDENT, indent, indent, cat)
76 if test "x$INDENT" != "xcat"; then
77 AC_SUBST(INDENT_FLAGS, '-i4 -nut -br -brs -npcs -ce -T GLubyte -T GLbyte -T Bool')
80 dnl Our fallback install-sh is a symlink to minstall. Use the existing
81 dnl configuration in that case.
83 test "x$INSTALL" = "x$ac_install_sh" && INSTALL='$(MINSTALL)'
85 dnl We need a POSIX shell for parts of the build. Assume we have one
89 # Solaris /bin/sh is too old/non-POSIX compliant
90 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
95 dnl clang is mostly GCC-compatible, but its version is much lower,
96 dnl so we have to check for it.
97 AC_MSG_CHECKING([if compiling with clang])
100 [AC_LANG_PROGRAM([], [[
105 [acv_mesa_CLANG=yes], [acv_mesa_CLANG=no])
107 AC_MSG_RESULT([$acv_mesa_CLANG])
109 dnl If we're using GCC, make sure that it is at least version 3.3.0. Older
110 dnl versions are explictly not supported.
111 if test "x$GCC" = xyes -a "x$acv_mesa_CLANG" = xno; then
112 AC_MSG_CHECKING([whether gcc version is sufficient])
116 GCC_VERSION=`$CC -dumpversion`
117 if test $? -eq 0; then
118 GCC_VERSION_MAJOR=`echo $GCC_VERSION | cut -d. -f1`
119 GCC_VERSION_MINOR=`echo $GCC_VERSION | cut -d. -f2`
122 if test $GCC_VERSION_MAJOR -lt 3 -o $GCC_VERSION_MAJOR -eq 3 -a $GCC_VERSION_MINOR -lt 3 ; then
124 AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.])
131 MKDEP_OPTIONS=-fdepend
132 dnl Ask gcc where it's keeping its secret headers
133 if test "x$GCC" = xyes; then
134 for dir in include include-fixed; do
135 GCC_INCLUDES=`$CC -print-file-name=$dir`
136 if test "x$GCC_INCLUDES" != x && \
137 test "$GCC_INCLUDES" != "$dir" && \
138 test -d "$GCC_INCLUDES"; then
139 MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
143 AC_SUBST([MKDEP_OPTIONS])
145 dnl Make sure the pkg-config macros are defined
146 m4_ifndef([PKG_PROG_PKG_CONFIG],
147 [m4_fatal([Could not locate the pkg-config autoconf macros.
148 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
149 are in a different location, try setting the environment variable
150 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
151 PKG_PROG_PKG_CONFIG()
153 dnl LIB_DIR - library basename
154 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
157 dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
158 _SAVE_LDFLAGS="$LDFLAGS"
159 AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker])
160 AC_SUBST([EXTRA_LIB_PATH])
162 dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
163 _SAVE_CPPFLAGS="$CPPFLAGS"
164 AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers])
165 AC_SUBST([X11_INCLUDES])
172 DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS"
175 DEFINES="$DEFINES -DPTHREADS -DSVR4"
178 DEFINES="$DEFINES -DPTHREADS"
182 dnl Add flags for gcc and g++
183 if test "x$GCC" = xyes; then
184 CFLAGS="$CFLAGS -Wall -std=c99"
186 # Enable -Werror=implicit-function-declaration and
187 # -Werror=missing-prototypes, if available, or otherwise, just
188 # -Wmissing-prototypes. This is particularly useful to avoid
189 # generating a loadable driver module that has undefined symbols.
190 save_CFLAGS="$CFLAGS"
191 AC_MSG_CHECKING([whether $CC supports -Werror=missing-prototypes])
192 CFLAGS="$CFLAGS -Werror=implicit-function-declaration"
193 CFLAGS="$CFLAGS -Werror=missing-prototypes"
194 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
195 AC_MSG_RESULT([yes]),
196 [CFLAGS="$save_CFLAGS -Wmissing-prototypes";
197 AC_MSG_RESULT([no])]);
199 # Enable -fvisibility=hidden if using a gcc that supports it
200 save_CFLAGS="$CFLAGS"
201 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
202 VISIBILITY_CFLAGS="-fvisibility=hidden"
203 CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
204 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
205 [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
207 # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
210 # Work around aliasing bugs - developers should comment this out
211 CFLAGS="$CFLAGS -fno-strict-aliasing"
213 # gcc's builtin memcmp is slower than glibc's
214 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
215 CFLAGS="$CFLAGS -fno-builtin-memcmp"
217 if test "x$GXX" = xyes; then
218 CXXFLAGS="$CXXFLAGS -Wall"
220 # Enable -fvisibility=hidden if using a gcc that supports it
221 save_CXXFLAGS="$CXXFLAGS"
222 AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
223 VISIBILITY_CXXFLAGS="-fvisibility=hidden"
224 CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
226 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
227 [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
230 # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
231 CXXFLAGS=$save_CXXFLAGS
233 # Work around aliasing bugs - developers should comment this out
234 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
236 # gcc's builtin memcmp is slower than glibc's
237 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
238 CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp"
241 dnl even if the compiler appears to support it, using visibility attributes isn't
242 dnl going to do anything useful currently on cygwin apart from emit lots of warnings
246 VISIBILITY_CXXFLAGS=""
250 AC_SUBST([VISIBILITY_CFLAGS])
251 AC_SUBST([VISIBILITY_CXXFLAGS])
253 dnl These should be unnecessary, but let the user set them if they want
254 AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
255 Default is to use CFLAGS.])
256 AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
257 compiler. Default is to use CFLAGS.])
258 AC_SUBST([OPT_FLAGS])
259 AC_SUBST([ARCH_FLAGS])
262 dnl Hacks to enable 32 or 64 bit build
264 AC_ARG_ENABLE([32-bit],
265 [AS_HELP_STRING([--enable-32-bit],
266 [build 32-bit libraries @<:@default=auto@:>@])],
267 [enable_32bit="$enableval"],
270 if test "x$enable_32bit" = xyes; then
271 if test "x$GCC" = xyes; then
272 CFLAGS="$CFLAGS -m32"
273 ARCH_FLAGS="$ARCH_FLAGS -m32"
274 CCASFLAGS="$CCASFLAGS -m32"
276 if test "x$GXX" = xyes; then
277 CXXFLAGS="$CXXFLAGS -m32"
280 AC_ARG_ENABLE([64-bit],
281 [AS_HELP_STRING([--enable-64-bit],
282 [build 64-bit libraries @<:@default=auto@:>@])],
283 [enable_64bit="$enableval"],
286 if test "x$enable_64bit" = xyes; then
287 if test "x$GCC" = xyes; then
288 CFLAGS="$CFLAGS -m64"
290 if test "x$GXX" = xyes; then
291 CXXFLAGS="$CXXFLAGS -m64"
295 dnl Can't have static and shared libraries, default to static if user
296 dnl explicitly requested. If both disabled, set to static since shared
297 dnl was explicitly requested.
298 case "x$enable_static$enable_shared" in
300 AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
304 AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
312 AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
313 if test "$enable_static" = yes; then
314 MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
316 AC_SUBST([MKLIB_OPTIONS])
319 dnl other compiler options
321 AC_ARG_ENABLE([debug],
322 [AS_HELP_STRING([--enable-debug],
323 [use debug compiler flags and macros @<:@default=disabled@:>@])],
324 [enable_debug="$enableval"],
327 if test "x$enable_debug" = xyes; then
328 DEFINES="$DEFINES -DDEBUG"
329 if test "x$GCC" = xyes; then
332 if test "x$GXX" = xyes; then
333 CXXFLAGS="$CXXFLAGS -g"
340 LIB_PREFIX_GLOB='lib'
341 LIB_VERSION_SEPARATOR='.'
342 if test "$enable_static" = yes; then
347 LIB_EXTENSION='dylib' ;;
349 dnl prefix can be 'cyg' or 'lib'
350 LIB_PREFIX_GLOB='???'
351 LIB_VERSION_SEPARATOR='-'
352 LIB_EXTENSION='dll' ;;
356 LIB_EXTENSION='so' ;;
361 dnl Mangled Mesa support
363 AC_ARG_ENABLE([mangling],
364 [AS_HELP_STRING([--enable-mangling],
365 [enable mangled symbols and library name @<:@default=disabled@:>@])],
366 [enable_mangling="${enableval}"],
372 if test "x${enable_mangling}" = "xyes" ; then
373 DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
376 OSMESA_LIB="MangledOSMesa"
380 AC_SUBST([OSMESA_LIB])
381 AM_CONDITIONAL(HAVE_MANGLED_GL, test $GL_LIB = MangledGL)
384 dnl potentially-infringing-but-nobody-knows-for-sure stuff
386 AC_ARG_ENABLE([texture-float],
387 [AS_HELP_STRING([--enable-texture-float],
388 [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
389 [enable_texture_float="$enableval"],
390 [enable_texture_float=no]
392 if test "x$enable_texture_float" = xyes; then
393 AC_MSG_WARN([Floating-point textures enabled.])
394 AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
395 DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
398 GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
399 GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
400 OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
401 EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
402 GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
403 GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION}
404 VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION}
405 GLAPI_LIB_NAME='lib$(GLAPI_LIB).'${LIB_EXTENSION}
407 GL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
408 GLU_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLU_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
409 OSMESA_LIB_GLOB=${LIB_PREFIX_GLOB}'$(OSMESA_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
410 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
411 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
412 GLESv1_CM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv1_CM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
413 GLESv2_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv2_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
414 VG_LIB_GLOB=${LIB_PREFIX_GLOB}'$(VG_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
415 GLAPI_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLAPI_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
417 AC_SUBST([GL_LIB_NAME])
418 AC_SUBST([GLU_LIB_NAME])
419 AC_SUBST([OSMESA_LIB_NAME])
420 AC_SUBST([EGL_LIB_NAME])
421 AC_SUBST([GLESv1_CM_LIB_NAME])
422 AC_SUBST([GLESv2_LIB_NAME])
423 AC_SUBST([VG_LIB_NAME])
424 AC_SUBST([GLAPI_LIB_NAME])
426 AC_SUBST([GL_LIB_GLOB])
427 AC_SUBST([GLU_LIB_GLOB])
428 AC_SUBST([OSMESA_LIB_GLOB])
429 AC_SUBST([EGL_LIB_GLOB])
430 AC_SUBST([GLESv1_CM_LIB_GLOB])
431 AC_SUBST([GLESv2_LIB_GLOB])
432 AC_SUBST([VG_LIB_GLOB])
433 AC_SUBST([GLAPI_LIB_GLOB])
436 dnl Arch/platform-specific settings
439 [AS_HELP_STRING([--disable-asm],
440 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
441 [enable_asm="$enableval"],
448 AC_MSG_CHECKING([whether to enable assembly])
449 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
450 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
451 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
455 AC_MSG_RESULT([no, cross compiling])
459 # check for supported arches
460 if test "x$enable_asm" = xyes; then
464 linux* | *freebsd* | dragonfly* | *netbsd*)
465 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
471 linux* | *freebsd* | dragonfly* | *netbsd*)
472 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
494 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
495 MESA_ASM_FILES='$(X86_FILES)'
496 GLAPI_ASM_SOURCES='$(X86_API)'
497 AC_MSG_RESULT([yes, x86])
500 ASM_FLAGS="-DUSE_X86_64_ASM"
501 MESA_ASM_FILES='$(X86_64_FILES)'
502 GLAPI_ASM_SOURCES='$(X86-64_API)'
503 AC_MSG_RESULT([yes, x86_64])
506 ASM_FLAGS="-DUSE_SPARC_ASM"
507 MESA_ASM_FILES='$(SPARC_FILES)'
508 GLAPI_ASM_SOURCES='$(SPARC_API)'
509 AC_MSG_RESULT([yes, sparc])
512 AC_MSG_RESULT([no, platform not supported])
516 AC_SUBST([ASM_FLAGS])
517 AC_SUBST([MESA_ASM_FILES])
518 AC_SUBST([GLAPI_ASM_SOURCES])
523 dnl Check to see if dlopen is in default libraries (like Solaris, which
524 dnl has it in libc), or if libdl is needed to get it.
525 AC_CHECK_FUNC([dlopen], [],
526 [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
527 AC_SUBST([DLOPEN_LIBS])
529 dnl See if posix_memalign is available
530 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
532 dnl SELinux awareness.
533 AC_ARG_ENABLE([selinux],
534 [AS_HELP_STRING([--enable-selinux],
535 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
536 [MESA_SELINUX="$enableval"],
538 if test "x$enable_selinux" = "xyes"; then
539 AC_CHECK_HEADER([selinux/selinux.h],[],
540 [AC_MSG_ERROR([SELinux headers not found])])
541 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
542 [AC_MSG_ERROR([SELinux library not found])])
543 SELINUX_LIBS="-lselinux"
544 DEFINES="$DEFINES -DMESA_SELINUX"
548 AC_ARG_ENABLE([opengl],
549 [AS_HELP_STRING([--disable-opengl],
550 [disable support for standard OpenGL API @<:@default=no@:>@])],
551 [enable_opengl="$enableval"],
553 AC_ARG_ENABLE([gles1],
554 [AS_HELP_STRING([--enable-gles1],
555 [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
556 [enable_gles1="$enableval"],
558 AC_ARG_ENABLE([gles2],
559 [AS_HELP_STRING([--enable-gles2],
560 [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
561 [enable_gles2="$enableval"],
563 AC_ARG_ENABLE([openvg],
564 [AS_HELP_STRING([--enable-openvg],
565 [enable support for OpenVG API @<:@default=no@:>@])],
566 [enable_openvg="$enableval"],
570 [AS_HELP_STRING([--enable-dri],
571 [enable DRI modules @<:@default=auto@:>@])],
572 [enable_dri="$enableval"],
575 [AS_HELP_STRING([--enable-glx],
576 [enable GLX library @<:@default=auto@:>@])],
577 [enable_glx="$enableval"],
579 AC_ARG_ENABLE([osmesa],
580 [AS_HELP_STRING([--enable-osmesa],
581 [enable OSMesa library @<:@default=auto@:>@])],
582 [enable_osmesa="$enableval"],
583 [enable_osmesa=auto])
585 [AS_HELP_STRING([--disable-egl],
586 [disable EGL library @<:@default=enabled@:>@])],
587 [enable_egl="$enableval"],
590 AC_ARG_ENABLE([xorg],
591 [AS_HELP_STRING([--enable-xorg],
592 [enable support for X.Org DDX API @<:@default=no@:>@])],
593 [enable_xorg="$enableval"],
596 [AS_HELP_STRING([--enable-xa],
597 [enable build of the XA X Acceleration API @<:@default=no@:>@])],
598 [enable_xa="$enableval"],
600 AC_ARG_ENABLE([d3d1x],
601 [AS_HELP_STRING([--enable-d3d1x],
602 [enable support for Direct3D 10 & 11 low-level API @<:@default=no@:>@])],
603 [enable_d3d1x="$enableval"],
606 [AS_HELP_STRING([--enable-gbm],
607 [enable gbm library @<:@default=auto@:>@])],
608 [enable_gbm="$enableval"],
611 AC_ARG_ENABLE([xvmc],
612 [AS_HELP_STRING([--enable-xvmc],
613 [enable xvmc library @<:@default=auto@:>@])],
614 [enable_xvmc="$enableval"],
616 AC_ARG_ENABLE([vdpau],
617 [AS_HELP_STRING([--enable-vdpau],
618 [enable vdpau library @<:@default=auto@:>@])],
619 [enable_vdpau="$enableval"],
622 [AS_HELP_STRING([--enable-va],
623 [enable va library @<:@default=auto@:>@])],
624 [enable_va="$enableval"],
626 AC_ARG_ENABLE([opencl],
627 [AS_HELP_STRING([--enable-opencl],
628 [enable OpenCL library @<:@default=no@:>@])],
629 [enable_opencl="$enableval"],
631 AC_ARG_ENABLE([xlib_glx],
632 [AS_HELP_STRING([--enable-xlib-glx],
633 [make GLX library Xlib-based instead of DRI-based @<:@default=disable@:>@])],
634 [enable_xlib_glx="$enableval"],
635 [enable_xlib_glx=auto])
636 AC_ARG_ENABLE([gallium_egl],
637 [AS_HELP_STRING([--enable-gallium-egl],
638 [enable optional EGL state tracker (not required
639 for EGL support in Gallium with OpenGL and OpenGL ES)
640 @<:@default=disable@:>@])],
641 [enable_gallium_egl="$enableval"],
642 [enable_gallium_egl=no])
643 AC_ARG_ENABLE([gallium_gbm],
644 [AS_HELP_STRING([--enable-gallium-gbm],
645 [enable optional gbm state tracker (not required for
646 gbm support in Gallium)
647 @<:@default=auto@:>@])],
648 [enable_gallium_gbm="$enableval"],
649 [enable_gallium_gbm=auto])
651 AC_ARG_ENABLE([r600-llvm-compiler],
652 [AS_HELP_STRING([--enable-r600-llvm-compiler],
653 [Enable experimental LLVM backend for graphics shaders @<:@default=disable@:>@])],
654 [enable_r600_llvm="$enableval"],
655 [enable_r600_llvm=no])
657 AC_ARG_ENABLE([gallium_tests],
658 [AS_HELP_STRING([--enable-gallium-tests],
659 [Enable optional Gallium tests) @<:@default=disable@:>@])],
660 [enable_gallium_tests="$enableval"],
661 [enable_gallium_tests=no])
663 # Option for Gallium drivers
664 GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
666 AC_ARG_WITH([gallium-drivers],
667 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
668 [comma delimited Gallium drivers list, e.g.
669 "i915,nouveau,r300,r600,svga,swrast"
670 @<:@default=r300,r600,swrast@:>@])],
671 [with_gallium_drivers="$withval"],
672 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
674 # Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it
675 # here so that the script doesn't choke on an unknown driver name later.
676 case "$with_gallium_drivers" in
677 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
678 no) with_gallium_drivers='' ;;
681 if test "x$enable_opengl" = xno -a \
682 "x$enable_gles1" = xno -a \
683 "x$enable_gles2" = xno -a \
684 "x$enable_openvg" = xno -a \
685 "x$enable_xorg" = xno -a \
686 "x$enable_xa" = xno -a \
687 "x$enable_d3d1x" = xno -a \
688 "x$enable_xvmc" = xno -a \
689 "x$enable_vdpau" = xno -a \
690 "x$enable_va" = xno -a \
691 "x$enable_opencl" = xno; then
692 AC_MSG_ERROR([at least one API should be enabled])
696 if test "x$enable_opengl" = xno; then
697 API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
699 API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
701 if test "x$enable_gles1" = xyes; then
702 API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
704 if test "x$enable_gles2" = xyes; then
705 API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
707 AC_SUBST([API_DEFINES])
709 AC_ARG_ENABLE([shared-glapi],
710 [AS_HELP_STRING([--enable-shared-glapi],
711 [EXPERIMENTAL. Enable shared glapi for OpenGL @<:@default=no@:>@])],
712 [enable_shared_glapi="$enableval"],
713 [enable_shared_glapi=no])
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 SRC_DIRS="$SRC_DIRS mapi/shared-glapi"
723 AC_SUBST([SHARED_GLAPI])
724 AM_CONDITIONAL(HAVE_SHARED_GLAPI, test $SHARED_GLAPI = 1)
727 dnl Driver configuration. Options are xlib, dri and osmesa right now.
728 dnl More later: fbdev, ...
730 default_driver="xlib"
735 i*86|x86_64|powerpc*|sparc*|ia64*) default_driver="dri";;
738 *freebsd* | dragonfly* | *netbsd*)
740 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
745 if test "x$enable_opengl" = xno; then
749 AC_ARG_WITH([driver],
750 [AS_HELP_STRING([--with-driver=DRIVER], [DEPRECATED])],
751 [mesa_driver="$withval"],
753 dnl Check for valid option
754 case "x$mesa_driver" in
755 xxlib|xdri|xosmesa|xno)
756 if test "x$enable_dri" != xauto -o \
757 "x$enable_glx" != xauto -o \
758 "x$enable_osmesa" != xauto -o \
759 "x$enable_xlib_glx" != xauto; then
760 AC_MSG_ERROR([--with-driver=$mesa_driver is deprecated])
764 mesa_driver="$default_driver"
767 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
771 # map $mesa_driver to APIs
772 if test "x$enable_dri" = xauto; then
773 case "x$mesa_driver" in
774 xdri) enable_dri=yes ;;
779 if test "x$enable_glx" = xauto; then
780 case "x$mesa_driver" in
781 xdri|xxlib) enable_glx=yes ;;
786 if test "x$enable_osmesa" = xauto; then
787 case "x$mesa_driver" in
788 xxlib|xosmesa) enable_osmesa=yes ;;
789 *) enable_osmesa=no ;;
793 if test "x$enable_xlib_glx" = xauto; then
794 case "x$mesa_driver" in
795 xxlib) enable_xlib_glx=yes ;;
796 *) enable_xlib_glx=no ;;
800 if test "x$enable_glx" = xno; then
804 AM_CONDITIONAL(HAVE_DRI, test x"$enable_dri" = xyes)
807 dnl Driver specific build directories
810 dnl this variable will be prepended to SRC_DIRS and is not exported
815 GALLIUM_DIRS="auxiliary drivers state_trackers"
816 GALLIUM_TARGET_DIRS=""
817 GALLIUM_WINSYS_DIRS="sw"
818 GALLIUM_DRIVERS_DIRS="galahad trace rbug noop identity"
819 GALLIUM_STATE_TRACKERS_DIRS=""
821 # build shared-glapi if enabled for OpenGL or if OpenGL ES is enabled
822 case "x$enable_shared_glapi$enable_gles1$enable_gles2" in
824 CORE_DIRS="$CORE_DIRS mapi/shared-glapi"
828 # build glapi if OpenGL is enabled
829 if test "x$enable_opengl" = xyes; then
830 CORE_DIRS="$CORE_DIRS mapi/glapi"
833 # build es1api if OpenGL ES 1.x is enabled
834 if test "x$enable_gles1" = xyes; then
835 CORE_DIRS="$CORE_DIRS mapi/es1api"
838 # build es2api if OpenGL ES 2.x is enabled
839 if test "x$enable_gles2" = xyes; then
840 CORE_DIRS="$CORE_DIRS mapi/es2api"
843 # build glsl and mesa if OpenGL or OpenGL ES is enabled
844 case "x$enable_opengl$enable_gles1$enable_gles2" in
846 CORE_DIRS="mapi/glapi/gen $CORE_DIRS glsl mesa"
850 case "x$enable_glx$enable_xlib_glx" in
852 DRIVER_DIRS="$DRIVER_DIRS x11"
853 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
854 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
855 GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS"
856 HAVE_WINSYS_XLIB="yes"
860 SRC_DIRS="$SRC_DIRS glx"
864 if test "x$enable_dri" = xyes; then
865 DRIVER_DIRS="$DRIVER_DIRS dri"
867 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/dri"
868 GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
872 if test "x$enable_osmesa" = xyes; then
873 # the empty space matters for osmesa... (see src/mesa/Makefile)
874 if test -n "$DRIVER_DIRS"; then
875 DRIVER_DIRS="$DRIVER_DIRS osmesa"
883 AC_SUBST([DRIVER_DIRS])
884 AC_SUBST([GALLIUM_DIRS])
885 AC_SUBST([GALLIUM_TARGET_DIRS])
886 AC_SUBST([GALLIUM_WINSYS_DIRS])
887 AC_SUBST([GALLIUM_DRIVERS_DIRS])
888 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
889 AC_SUBST([MESA_LLVM])
892 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
893 [have_libdrm=yes], [have_libdrm=no])
895 if test "x$enable_dri" = xyes; then
896 # DRI must be shared, I think
897 if test "$enable_static" = yes; then
898 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
901 # not a hard requirement as swrast does not depend on it
902 if test "x$have_libdrm" = xyes; then
903 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
908 dnl Find out if X is available. The variable have_x is set if libX11 is
909 dnl found to mimic AC_PATH_XTRA.
911 if test -n "$PKG_CONFIG"; then
912 AC_MSG_CHECKING([pkg-config files for X11 are available])
913 PKG_CHECK_EXISTS([x11],[
919 AC_MSG_RESULT([$x11_pkgconfig])
923 dnl Use the autoconf macro if no pkg-config files
924 if test "$x11_pkgconfig" = yes; then
925 PKG_CHECK_MODULES([X11], [x11])
928 test -z "$X11_CFLAGS" && X11_CFLAGS="$X_CFLAGS"
929 test -z "$X11_LIBS" && X11_LIBS="$X_LIBS -lX11"
930 AC_SUBST([X11_CFLAGS])
934 dnl Try to tell the user that the --x-* options are only used when
935 dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
936 m4_divert_once([HELP_BEGIN],
937 [These options are only used when the X libraries cannot be found by the
938 pkg-config utility.])
940 dnl We need X for xlib and dri, so bomb now if it's not found
941 if test "x$enable_glx" = xyes -a "x$no_x" = xyes; then
942 AC_MSG_ERROR([X11 development libraries needed for GLX])
945 if test "x$enable_glx" = xyes; then
946 DEFINES="$DEFINES -DUSE_XCB"
949 dnl Direct rendering or just indirect rendering
952 dnl Disable by default on GNU/Hurd
953 driglx_direct_default="no"
956 dnl Disable by default on cygwin
957 driglx_direct_default="no"
960 driglx_direct_default="yes"
963 AC_ARG_ENABLE([driglx-direct],
964 [AS_HELP_STRING([--disable-driglx-direct],
965 [enable direct rendering in GLX and EGL for DRI \
966 @<:@default=auto@:>@])],
967 [driglx_direct="$enableval"],
968 [driglx_direct="$driglx_direct_default"])
971 dnl libGL configuration per driver
973 case "x$enable_glx$enable_xlib_glx" in
976 if test "$x11_pkgconfig" = yes; then
977 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
978 GL_PC_REQ_PRIV="x11 xext"
979 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
980 GL_LIB_DEPS="$XLIBGL_LIBS"
982 # should check these...
983 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
984 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
985 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
986 GL_PC_CFLAGS="$X11_INCLUDES"
988 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread $DLOPEN_LIBS"
989 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
993 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
994 GL_PC_REQ_PRIV="glproto >= $GLPROTO_REQUIRED"
995 if test x"$driglx_direct" = xyes; then
996 if test "x$have_libdrm" != xyes; then
997 AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
999 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
1000 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
1003 # find the DRI deps for libGL
1004 if test "$x11_pkgconfig" = yes; then
1005 dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx"
1007 # add xf86vidmode if available
1008 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
1009 if test "$HAVE_XF86VIDMODE" = yes ; then
1010 dri_modules="$dri_modules xxf86vm"
1013 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
1014 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
1015 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
1016 GL_LIB_DEPS="$DRIGL_LIBS"
1018 # should check these...
1019 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
1020 if test "x$HAVE_XF86VIDMODE" == xyes; then
1021 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
1023 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXdamage -lXfixes"
1025 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
1026 GL_PC_CFLAGS="$X11_INCLUDES"
1028 # XCB can only be used from pkg-config
1029 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
1030 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
1031 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
1032 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
1035 # Check to see if the xcb-glx library is new enough to support
1036 # GLX_ARB_create_context. This bit of hackery is necessary until XCB 1.8
1038 save_CPPFLAGS="$CPPFLAGS"
1039 save_LDFLAGS="$LDFLAGS"
1040 CPPFLAGS="$CPPFLAGS $X11_INCLUDES"
1041 LDFLAGS="$LDFLAGS $GL_LIB_DEPS"
1042 AC_CHECK_LIB(xcb-glx, xcb_glx_create_context_attribs_arb_checked,
1043 [HAVE_XCB_GLX_CREATE_CONTEXT=yes],
1044 [HAVE_XCB_GLX_CREATE_CONTEXT=no])
1045 CPPFLAGS="$save_CPPFLAGS"
1046 LDFLAGS="$save_LDFLAGS"
1048 if test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes; then
1049 X11_INCLUDES="$X11_INCLUDES -DHAVE_XCB_GLX_CREATE_CONTEXT"
1052 # need DRM libs, -lpthread, etc.
1053 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1054 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1058 # This is outside the case (above) so that it is invoked even for non-GLX
1060 AM_CONDITIONAL(HAVE_XCB_GLX_CREATE_CONTEXT,
1061 test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes)
1062 AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
1064 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1065 GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1066 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1067 GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1069 AC_SUBST([GL_LIB_DEPS])
1070 AC_SUBST([GL_PC_REQ_PRIV])
1071 AC_SUBST([GL_PC_LIB_PRIV])
1072 AC_SUBST([GL_PC_CFLAGS])
1073 AC_SUBST([DRI_PC_REQ_PRIV])
1074 AC_SUBST([GLESv1_CM_LIB_DEPS])
1075 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
1076 AC_SUBST([GLESv2_LIB_DEPS])
1077 AC_SUBST([GLESv2_PC_LIB_PRIV])
1079 GLAPI_LIB_DEPS="-lpthread $SELINUX_LIBS"
1080 AC_SUBST([GLAPI_LIB_DEPS])
1083 dnl Setup default DRI CFLAGS
1084 DRI_CFLAGS='$(CFLAGS)'
1085 DRI_CXXFLAGS='$(CXXFLAGS)'
1086 DRI_LIB_DEPS='$(TOP)/src/mesa/libmesa.a'
1087 MESA_MODULES='$(TOP)/src/mesa/libmesa.a'
1089 if test "x$enable_dri" = xyes && test "x$driglx_direct" = xyes ; then
1090 DRICORE_GLSL_LIBS='$(TOP)/$(LIB_DIR)/libglsl.so'
1091 DRICORE_LIBS='$(TOP)/$(LIB_DIR)/libdricore.so'
1092 DRICORE_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -lglsl'
1093 DRI_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore -lglsl'
1094 DRI_CFLAGS='$(CFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1095 DRI_CXXFLAGS='$(CXXFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1096 MESA_MODULES='$(DRICORE_LIBS) $(DRICORE_GLSL_LIBS)'
1099 AM_CONDITIONAL(HAVE_DRICORE, test x$HAVE_DRICORE = xyes)
1100 AC_SUBST([DRICORE_LIBS])
1101 AC_SUBST([DRICORE_GLSL_LIBS])
1102 AC_SUBST([DRICORE_LIB_DEPS])
1103 AC_SUBST([DRI_CXXFLAGS])
1104 AC_SUBST([DRI_CFLAGS])
1105 AC_SUBST([MESA_MODULES])
1107 AC_SUBST([HAVE_XF86VIDMODE])
1112 case "x$enable_glx$enable_xlib_glx" in
1114 DEFINES="$DEFINES -DUSE_XSHM"
1117 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1118 if test "x$driglx_direct" = xyes; then
1119 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1128 AC_ARG_ENABLE([glx-tls],
1129 [AS_HELP_STRING([--enable-glx-tls],
1130 [enable TLS support in GLX @<:@default=disabled@:>@])],
1131 [GLX_USE_TLS="$enableval"],
1133 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
1135 AS_IF([test "x$GLX_USE_TLS" = xyes],
1136 [DEFINES="${DEFINES} -DGLX_USE_TLS -DPTHREADS"])
1141 dnl Directory for DRI drivers
1142 AC_ARG_WITH([dri-driverdir],
1143 [AS_HELP_STRING([--with-dri-driverdir=DIR],
1144 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
1145 [DRI_DRIVER_INSTALL_DIR="$withval"],
1146 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
1147 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
1148 dnl Extra search path for DRI drivers
1149 AC_ARG_WITH([dri-searchpath],
1150 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
1151 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
1152 [DRI_DRIVER_SEARCH_DIR="$withval"],
1153 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
1154 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
1155 dnl Which drivers to build - default is chosen by platform
1156 AC_ARG_WITH([dri-drivers],
1157 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
1158 [comma delimited DRI drivers list, e.g.
1159 "swrast,i965,radeon" @<:@default=auto@:>@])],
1160 [with_dri_drivers="$withval"],
1161 [with_dri_drivers=yes])
1162 if test "x$with_dri_drivers" = x; then
1166 dnl If $with_dri_drivers is yes, directories will be added through
1169 case "$with_dri_drivers" in
1172 # classic DRI drivers require FEATURE_GL to build
1173 if test "x$enable_opengl" = xyes; then
1178 # verify the requested driver directories exist
1179 dri_drivers=`IFS=', '; echo $with_dri_drivers`
1180 for driver in $dri_drivers; do
1181 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
1182 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
1184 DRI_DIRS="$dri_drivers"
1185 if test -n "$DRI_DIRS" -a "x$enable_opengl" != xyes; then
1186 AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1191 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
1192 if test "x$enable_dri" = xyes; then
1193 # Platform specific settings and drivers to build
1196 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1197 DEFINES="$DEFINES -DHAVE_ALIAS"
1201 if test "x$DRI_DIRS" = "xyes"; then
1202 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1206 # Build only the drivers for cards that exist on PowerPC.
1207 if test "x$DRI_DIRS" = "xyes"; then
1208 DRI_DIRS="r200 radeon swrast"
1212 # Build only the drivers for cards that exist on sparc
1213 if test "x$DRI_DIRS" = "xyes"; then
1214 DRI_DIRS="r200 radeon swrast"
1219 freebsd* | dragonfly* | *netbsd*)
1220 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
1221 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
1223 if test "x$DRI_DIRS" = "xyes"; then
1224 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1228 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1229 DEFINES="$DEFINES -DHAVE_ALIAS"
1232 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1235 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1236 if test "x$DRI_DIRS" = "xyes"; then
1243 if test "x$DRI_DIRS" = "xyes"; then
1244 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1247 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
1250 if test "x$enable_dri" = xyes; then
1253 AC_ARG_WITH([expat],
1254 [AS_HELP_STRING([--with-expat=DIR],
1255 [expat install directory])],[
1256 EXPAT_INCLUDES="-I$withval/include"
1257 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
1258 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
1259 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
1261 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
1263 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1264 [AC_MSG_ERROR([Expat required for DRI.])])
1268 # if we are building any dri driver other than swrast ...
1269 if test -n "$DRI_DIRS" -a x"$DRI_DIRS" != xswrast; then
1270 # ... libdrm is required
1271 if test "x$have_libdrm" != xyes; then
1272 AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
1274 # ... and build dricommon
1278 # put all the necessary libs together
1279 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
1281 AC_SUBST([DRI_DIRS])
1282 AC_SUBST([EXPAT_INCLUDES])
1283 AC_SUBST([DRI_LIB_DEPS])
1287 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1289 for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1305 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED])
1306 HAVE_NOUVEAU_DRI=yes;
1312 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1314 for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1317 HAVE_RADEON_DRI=yes;
1330 HAVE_SWRAST_DRI=yes;
1334 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
1335 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
1336 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
1337 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
1338 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
1339 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
1340 AM_CONDITIONAL(HAVE_COMMON_DRI, test x$HAVE_COMMON_DRI = xyes)
1343 dnl OSMesa configuration
1346 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1347 AC_ARG_WITH([osmesa-bits],
1348 [AS_HELP_STRING([--with-osmesa-bits=BITS],
1349 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1350 [osmesa_bits="$withval"],
1352 if test "x$osmesa_bits" != x8; then
1353 if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then
1354 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1358 case "x$osmesa_bits" in
1360 OSMESA_LIB="${OSMESA_LIB}"
1363 OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
1364 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1367 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1371 if test "x$enable_osmesa" = xyes; then
1372 # only link libraries with osmesa if shared
1373 if test "$enable_static" = no; then
1374 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1379 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1381 AC_SUBST([OSMESA_LIB_DEPS])
1382 AC_SUBST([OSMESA_MESA_DEPS])
1383 AC_SUBST([OSMESA_PC_REQ])
1384 AC_SUBST([OSMESA_PC_LIB_PRIV])
1387 dnl gbm configuration
1389 if test "x$enable_gbm" = xauto; then
1390 case "$with_egl_platforms" in
1397 if test "x$enable_gbm" = xyes; then
1398 SRC_DIRS="$SRC_DIRS gbm"
1400 PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1401 AC_MSG_ERROR([gbm needs udev]))
1403 if test "x$enable_dri" = xyes; then
1404 GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
1405 if test "$SHARED_GLAPI" -eq 0; then
1406 AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1410 GBM_PC_REQ_PRIV="libudev"
1411 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1412 AC_SUBST([GBM_PC_REQ_PRIV])
1413 AC_SUBST([GBM_PC_LIB_PRIV])
1416 dnl EGL configuration
1420 if test "x$enable_egl" = xyes; then
1421 SRC_DIRS="$SRC_DIRS egl"
1422 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS -lpthread"
1424 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1426 if test "$enable_static" != yes; then
1427 # build egl_glx when libGL is built
1428 if test "x$enable_glx" = xyes; then
1429 HAVE_EGL_DRIVER_GLX=1
1432 PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1433 [have_libudev=yes],[have_libudev=no])
1434 if test "$have_libudev" = yes; then
1435 DEFINES="$DEFINES -DHAVE_LIBUDEV"
1437 if test "x$enable_dri" = xyes; then
1438 # build egl_dri2 when xcb-dri2 is available
1439 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes],
1440 [have_xcb_dri2=yes],[have_xcb_dri2=no])
1441 if test "$have_xcb_dri2" = yes; then
1442 HAVE_EGL_DRIVER_DRI2=1
1443 # workaround a bug in xcb-dri2 generated by xcb-proto 1.6
1445 AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [],
1446 [DEFINES="$DEFINES -DXCB_DRI2_CONNECT_DEVICE_NAME_BROKEN"])
1453 AC_SUBST([EGL_LIB_DEPS])
1456 dnl EGL Gallium configuration
1458 if test "x$enable_gallium_egl" = xyes; then
1459 if test "x$with_gallium_drivers" = x; then
1460 AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
1462 if test "x$enable_egl" = xno; then
1463 AC_MSG_ERROR([cannot enable egl_gallium without EGL])
1465 if test "x$have_libdrm" != xyes; then
1466 AC_MSG_ERROR([egl_gallium requires libdrm >= $LIBDRM_REQUIRED])
1469 GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
1470 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static"
1475 dnl gbm Gallium configuration
1477 if test "x$enable_gallium_gbm" = xauto; then
1478 case "$enable_gbm$HAVE_ST_EGL$enable_dri$with_egl_platforms" in
1480 enable_gallium_gbm=yes ;;
1482 enable_gallium_gbm=no ;;
1485 if test "x$enable_gallium_gbm" = xyes; then
1486 if test "x$with_gallium_drivers" = x; then
1487 AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
1489 if test "x$enable_gbm" = xno; then
1490 AC_MSG_ERROR([cannot enable gbm_gallium without gbm])
1492 # gbm_gallium abuses DRI_LIB_DEPS to link. Make sure it is set.
1493 if test "x$enable_dri" = xno; then
1494 AC_MSG_ERROR([gbm_gallium requires --enable-dri to build])
1497 GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS"
1498 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm"
1500 enable_gallium_loader=yes
1504 dnl X.Org DDX configuration
1506 if test "x$enable_xorg" = xyes; then
1507 PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1508 PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1509 PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1510 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1511 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1512 HAVE_XEXTPROTO_71="no")
1513 GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS"
1518 dnl XA configuration
1520 if test "x$enable_xa" = xyes; then
1523 AC_CHECK_PROG(NM, nm, "nm")
1524 if test "x$AWK" = x || test "x$GREP" = x || test "x$NM" = x; then
1525 AC_MSG_WARN([Missing one of nm, grep or awk. Disabling xa.])
1529 if test "x$enable_xa" = xyes; then
1530 GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS"
1538 dnl OpenVG configuration
1542 if test "x$enable_openvg" = xyes; then
1543 if test "x$enable_egl" = xno; then
1544 AC_MSG_ERROR([cannot enable OpenVG without EGL])
1546 if test "x$with_gallium_drivers" = x; then
1547 AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1549 if test "x$enable_gallium_egl" = xno; then
1550 AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
1553 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1554 VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS -lpthread"
1555 CORE_DIRS="$CORE_DIRS mapi/vgapi"
1556 GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1561 dnl D3D1X configuration
1564 if test "x$enable_d3d1x" = xyes; then
1565 if test "x$with_gallium_drivers" = x; then
1566 AC_MSG_ERROR([cannot enable D3D1X without Gallium])
1569 GALLIUM_STATE_TRACKERS_DIRS="d3d1x $GALLIUM_STATE_TRACKERS_DIRS"
1574 dnl Gallium G3DVL configuration
1576 AC_ARG_ENABLE([gallium-g3dvl],
1577 [AS_HELP_STRING([--enable-gallium-g3dvl],
1578 [build gallium g3dvl @<:@default=disabled@:>@])],
1579 [enable_gallium_g3dvl="$enableval"],
1580 [enable_gallium_g3dvl=no])
1581 if test "x$enable_gallium_g3dvl" = xyes; then
1582 if test "x$with_gallium_drivers" = x; then
1583 AC_MSG_ERROR([cannot enable G3DVL without Gallium])
1586 if test "x$enable_xvmc" = xauto; then
1587 PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no])
1590 if test "x$enable_vdpau" = xauto; then
1591 PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no])
1594 if test "x$enable_va" = xauto; then
1595 #don't enable vaapi state tracker even if package exists
1596 #PKG_CHECK_EXISTS([libva], [enable_vdpau=yes], [enable_vdpau=no])
1601 if test "x$enable_xvmc" = xyes; then
1602 PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6 x11-xcb xcb-dri2 >= 1.8])
1603 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xvmc"
1607 if test "x$enable_vdpau" = xyes; then
1608 PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.4.1 x11-xcb xcb-dri2 >= 1.8])
1609 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau"
1613 if test "x$enable_va" = xyes; then
1614 PKG_CHECK_MODULES([LIBVA], [libva = 0.31.1 x11-xcb xcb-dri2 >= 1.8])
1615 AC_MSG_WARN([vaapi state tracker currently unmaintained])
1616 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS va"
1621 dnl OpenCL configuration
1624 AC_ARG_WITH([libclc-path],
1625 [AS_HELP_STRING([--with-libclc-path],
1626 [Path to libclc builtins library. Example: --with-libclc-path=\$HOME/libclc/])],
1627 [LIBCLC_PATH="$withval"],
1630 AC_SUBST([LIBCLC_PATH])
1632 if test "x$enable_opencl" = xyes; then
1633 if test "x$with_gallium_drivers" = x; then
1634 AC_MSG_ERROR([cannot enable OpenCL without Gallium])
1637 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6; then
1638 AC_MSG_ERROR([gcc >= 4.6 is required to build clover])
1641 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS clover"
1642 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS opencl"
1643 enable_gallium_loader=yes
1647 dnl GLU configuration
1649 AC_ARG_ENABLE([glu],
1650 [AS_HELP_STRING([--disable-glu],
1651 [enable OpenGL Utility library @<:@default=enabled@:>@])],
1652 [enable_glu="$enableval"],
1655 if test "x$enable_glu" = xyes; then
1656 if test "x$enable_glx" = xno -a "x$enable_osmesa" = xno; then
1657 AC_MSG_NOTICE([Disabling GLU since there is no OpenGL driver])
1662 if test "x$enable_glu" = xyes; then
1663 SRC_DIRS="$SRC_DIRS glu"
1665 if test "x$enable_glx" = xno; then
1666 # Link libGLU to libOSMesa instead of libGL
1669 if test "$enable_static" = no; then
1670 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
1675 # If static, empty GLU_LIB_DEPS and add libs for programs to link
1677 GLU_PC_LIB_PRIV="-lm"
1678 if test "$enable_static" = no; then
1680 GLU_MESA_DEPS='-l$(GL_LIB)'
1687 if test "$enable_static" = no; then
1688 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
1690 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
1691 AC_SUBST([GLU_LIB_DEPS])
1692 AC_SUBST([GLU_MESA_DEPS])
1693 AC_SUBST([GLU_PC_REQ])
1694 AC_SUBST([GLU_PC_REQ_PRIV])
1695 AC_SUBST([GLU_PC_LIB_PRIV])
1696 AC_SUBST([GLU_PC_CFLAGS])
1698 AC_SUBST([PROGRAM_DIRS])
1701 dnl Gallium configuration
1703 if test "x$with_gallium_drivers" != x; then
1704 SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
1707 AC_SUBST([LLVM_BINDIR])
1708 AC_SUBST([LLVM_CFLAGS])
1709 AC_SUBST([LLVM_CPPFLAGS])
1710 AC_SUBST([LLVM_CXXFLAGS])
1711 AC_SUBST([LLVM_LIBDIR])
1712 AC_SUBST([LLVM_LIBS])
1713 AC_SUBST([LLVM_LDFLAGS])
1714 AC_SUBST([LLVM_INCLUDEDIR])
1715 AC_SUBST([LLVM_VERSION])
1717 case "x$enable_opengl$enable_gles1$enable_gles2" in
1719 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1723 AC_SUBST([VG_LIB_DEPS])
1724 AC_SUBST([EGL_CLIENT_APIS])
1726 AC_ARG_WITH([egl-platforms],
1727 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1728 [comma delimited native platforms libEGL supports, e.g.
1729 "x11,drm" @<:@default=auto@:>@])],
1730 [with_egl_platforms="$withval"],
1731 [if test "x$enable_egl" = xyes; then
1732 with_egl_platforms="x11"
1734 with_egl_platforms=""
1739 if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
1740 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1743 # verify the requested driver directories exist
1744 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1745 for plat in $egl_platforms; do
1746 test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \
1747 AC_MSG_ERROR([EGL platform '$plat' does not exist])
1748 if test "$plat" = "fbdev"; then
1749 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev"
1751 if test "$plat" = "null"; then
1752 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
1754 if test "$plat" = "wayland"; then
1755 PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-server],, \
1756 [AC_MSG_ERROR([cannot find libwayland-client])])
1757 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
1759 m4_ifdef([WAYLAND_SCANNER_RULES],
1760 [WAYLAND_SCANNER_RULES(['$(top_srcdir)/src/egl/wayland/wayland-drm/protocol'])])
1762 if test "$plat" = "drm" && test "x$enable_gbm" = "xno"; then
1763 AC_MSG_ERROR([EGL platform drm needs gbm])
1765 case "$plat$have_libudev" in
1767 AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;;
1771 # libEGL wants to default to the first platform specified in
1772 # ./configure. parse that here.
1773 if test "x$egl_platforms" != "x"; then
1774 FIRST_PLATFORM_CAPS=`echo $egl_platforms | sed 's| .*||' | tr 'a-z' 'A-Z'`
1775 EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
1777 EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
1780 EGL_PLATFORMS="$egl_platforms"
1782 AM_CONDITIONAL(HAVE_EGL_PLATFORM_X11, echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1)
1783 AM_CONDITIONAL(HAVE_EGL_PLATFORM_WAYLAND, echo "$egl_platforms" | grep 'wayland' >/dev/null 2>&1)
1784 AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep 'drm' >/dev/null 2>&1)
1785 AM_CONDITIONAL(HAVE_EGL_PLATFORM_FBDEV, echo "$egl_platforms" | grep 'fbdev' >/dev/null 2>&1)
1786 AM_CONDITIONAL(HAVE_EGL_PLATFORM_NULL, echo "$egl_platforms" | grep 'null' >/dev/null 2>&1)
1788 AM_CONDITIONAL(HAVE_EGL_DRIVER_DRI2, test "x$HAVE_EGL_DRIVER_DRI2" != "x")
1789 AM_CONDITIONAL(HAVE_EGL_DRIVER_GLX, test "x$HAVE_EGL_DRIVER_GLX" != "x")
1791 AC_SUBST([EGL_NATIVE_PLATFORM])
1792 AC_SUBST([EGL_PLATFORMS])
1793 AC_SUBST([EGL_CFLAGS])
1795 AC_ARG_WITH([egl-driver-dir],
1796 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1797 [directory for EGL drivers [[default=${libdir}/egl]]])],
1798 [EGL_DRIVER_INSTALL_DIR="$withval"],
1799 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1800 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1802 AC_ARG_WITH([xorg-driver-dir],
1803 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1804 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1805 [XORG_DRIVER_INSTALL_DIR="$withval"],
1806 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1807 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1809 AC_ARG_WITH([max-width],
1810 [AS_HELP_STRING([--with-max-width=N],
1811 [Maximum framebuffer width (4096)])],
1812 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1813 AS_IF([test "${withval}" -gt "4096"],
1814 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1816 AC_ARG_WITH([max-height],
1817 [AS_HELP_STRING([--with-max-height=N],
1818 [Maximum framebuffer height (4096)])],
1819 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1820 AS_IF([test "${withval}" -gt "4096"],
1821 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1827 AC_ARG_ENABLE([gallium-llvm],
1828 [AS_HELP_STRING([--enable-gallium-llvm],
1829 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1830 [enable_gallium_llvm="$enableval"],
1831 [enable_gallium_llvm=auto])
1833 AC_ARG_WITH([llvm-shared-libs],
1834 [AS_HELP_STRING([--with-llvm-shared-libs],
1835 [link with LLVM shared libraries @<:@default=disabled@:>@])],
1836 [with_llvm_shared_libs=yes],
1837 [with_llvm_shared_libs=no])
1839 if test "x$with_gallium_drivers" = x; then
1840 enable_gallium_llvm=no
1842 if test "x$enable_gallium_llvm" = xauto; then
1844 i*86|x86_64) enable_gallium_llvm=yes;;
1847 if test "x$enable_gallium_llvm" = xyes; then
1848 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1850 if test "x$LLVM_CONFIG" != xno; then
1851 LLVM_VERSION=`$LLVM_CONFIG --version | sed 's/svn.*//g'`
1852 LLVM_CFLAGS=`$LLVM_CONFIG --cppflags|sed -e 's/-DNDEBUG\>//g' -e 's/-pedantic//g' -e 's/-Wcovered-switch-default//g'`
1853 if test "x$with_llvm_shared_libs" = xyes; then
1854 dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
1855 LLVM_LIBS="-lLLVM-`$LLVM_CONFIG --version`"
1857 LLVM_LIBS="`$LLVM_CONFIG --libs engine bitwriter`"
1858 if test "x$enable_opencl" = xyes; then
1859 LLVM_LIBS="${LLVM_LIBS} `llvm-config --libs ipo linker instrumentation`"
1862 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1863 LLVM_BINDIR=`$LLVM_CONFIG --bindir`
1864 LLVM_CXXFLAGS=`$LLVM_CONFIG --cxxflags`
1865 LLVM_CPPFLAGS=`$LLVM_CONFIG --cppflags`
1866 LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
1867 LLVM_LIBDIR=`$LLVM_CONFIG --libdir`
1868 DEFINES="${DEFINES} -DHAVE_LLVM=`echo $LLVM_VERSION | sed -e 's/\([[0-9]]\)\.\([[0-9]]\)/0x0\10\2/g'`"
1877 dnl Directory for XVMC libs
1878 AC_ARG_WITH([xvmc-libdir],
1879 [AS_HELP_STRING([--with-xvmc-libdir=DIR],
1880 [directory for the XVMC libraries @<:@default=${libdir}@:>@])],
1881 [XVMC_LIB_INSTALL_DIR="$withval"],
1882 [XVMC_LIB_INSTALL_DIR='${libdir}'])
1883 AC_SUBST([XVMC_LIB_INSTALL_DIR])
1888 if test "x$enable_gallium_tests" = xyes; then
1889 SRC_DIRS="$SRC_DIRS gallium/tests/trivial"
1890 enable_gallium_loader=yes
1893 dnl Directory for VDPAU libs
1894 AC_ARG_WITH([vdpau-libdir],
1895 [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1896 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1897 [VDPAU_LIB_INSTALL_DIR="$withval"],
1898 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1899 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
1901 dnl Directory for VA libs
1902 AC_ARG_WITH([va-libdir],
1903 [AS_HELP_STRING([--with-va-libdir=DIR],
1904 [directory for the VA libraries @<:@default=${libdir}/va@:>@])],
1905 [VA_LIB_INSTALL_DIR="$withval"],
1906 [VA_LIB_INSTALL_DIR='${libdir}/va'])
1907 AC_SUBST([VA_LIB_INSTALL_DIR])
1909 dnl Directory for OpenCL libs
1910 AC_ARG_WITH([opencl-libdir],
1911 [AS_HELP_STRING([--with-opencl-libdir=DIR],
1912 [directory for the OpenCL libraries @<:@default=${libdir}/opencl@:>@])],
1913 [OPENCL_LIB_INSTALL_DIR="$withval"],
1914 [OPENCL_LIB_INSTALL_DIR='${libdir}/opencl'])
1915 AC_SUBST([OPENCL_LIB_INSTALL_DIR])
1918 dnl Gallium helper functions
1920 gallium_check_st() {
1921 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes ||
1922 test "x$HAVE_ST_XA" = xyes || test "x$HAVE_ST_XVMC" = xyes ||
1923 test "x$HAVE_ST_VDPAU" = xyes || test "x$HAVE_ST_VA" = xyes; then
1924 if test "x$have_libdrm" != xyes; then
1925 AC_MSG_ERROR([DRI or Xorg DDX requires libdrm >= $LIBDRM_REQUIRED])
1927 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1929 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1930 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1932 if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
1933 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1935 if test "x$HAVE_ST_XA" = xyes && test "x$4" != x; then
1936 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
1938 if test "x$HAVE_ST_XVMC" = xyes && test "x$5" != x; then
1939 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5"
1941 if test "x$HAVE_ST_VDPAU" = xyes && test "x$6" != x; then
1942 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6"
1944 if test "x$HAVE_ST_VA" = xyes && test "x$7" != x; then
1945 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $7"
1949 gallium_require_llvm() {
1950 if test "x$MESA_LLVM" = x0; then
1952 i*86|x86_64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1957 gallium_require_drm_loader() {
1958 if test "x$enable_gallium_loader" = xyes; then
1959 PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1960 AC_MSG_ERROR([Gallium drm loader requrires libudev]))
1961 if test "x$have_libdrm" != xyes; then
1962 AC_MSG_ERROR([Gallium drm loader requires libdrm >= $LIBDRM_REQUIRED])
1964 enable_gallium_drm_loader=yes
1969 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
1970 if test "x$with_gallium_drivers" != x; then
1971 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1972 for driver in $gallium_drivers; do
1975 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
1976 gallium_check_st "svga/drm" "dri-vmwgfx" "" "xa-vmwgfx"
1979 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1980 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe"
1981 if test "x$MESA_LLVM" = x1; then
1982 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1984 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1985 gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1988 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1989 gallium_require_llvm "Gallium R300"
1990 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1991 gallium_check_st "radeon/drm" "dri-r300" "xorg-r300" "" "xvmc-r300" "vdpau-r300" "va-r300"
1994 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1995 gallium_require_drm_loader
1996 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1997 if test "x$enable_r600_llvm" = xyes -o "x$enable_opencl" = xyes; then
1998 if test "x$LLVM_VERSION" != "x3.1"; then
1999 AC_MSG_ERROR([LLVM 3.1 is required for the r600 llvm compiler.])
2001 NEED_RADEON_GALLIUM=yes;
2003 if test "x$enable_r600_llvm" = xyes; then
2004 USE_R600_LLVM_COMPILER=yes;
2006 if test "x$enable_opencl" = xyes -a "x$with_llvm_shared_libs" = xno; then
2007 LLVM_LIBS="${LLVM_LIBS} `llvm-config --libs bitreader asmparser`"
2009 gallium_check_st "radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600" "va-r600"
2012 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2013 gallium_require_drm_loader
2014 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS radeonsi"
2015 if test "x$LLVM_VERSION" != "x3.1"; then
2016 AC_MSG_ERROR([LLVM 3.1 is required to build the radeonsi driver.])
2018 NEED_RADEON_GALLIUM=yes;
2019 gallium_check_st "radeon/drm" "dri-radeonsi" "xorg-radeonsi"
2022 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
2023 gallium_require_drm_loader
2024 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nv30 nv50 nvc0"
2025 gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau" "" "xvmc-nouveau" "vdpau-nouveau"
2028 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe"
2029 if test "x$MESA_LLVM" = x1; then
2030 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
2033 if test "x$HAVE_ST_DRI" = xyes; then
2034 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
2036 if test "x$HAVE_ST_VDPAU" = xyes; then
2037 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS vdpau-softpipe"
2039 if test "x$HAVE_ST_XVMC" = xyes; then
2040 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS xvmc-softpipe"
2042 if test "x$HAVE_ST_VA" = xyes; then
2043 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS va-softpipe"
2045 if test "x$HAVE_ST_VDPAU" = xyes ||
2046 test "x$HAVE_ST_XVMC" = xyes ||
2047 test "x$HAVE_ST_VA" = xyes; then
2048 if test "x$HAVE_WINSYS_XLIB" != xyes; then
2049 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
2054 AC_MSG_ERROR([Unknown Gallium driver: $driver])
2060 if test "x$enable_gallium_loader" = xyes; then
2061 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
2062 GALLIUM_PIPE_LOADER_DEFINES="-DHAVE_PIPE_LOADER_SW"
2063 GALLIUM_PIPE_LOADER_LIBS="\$(TOP)/src/gallium/auxiliary/pipe-loader/libpipe_loader.a"
2064 GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS \$(TOP)/src/gallium/winsys/sw/null/libws_null.a"
2066 if test "x$HAVE_WINSYS_XLIB" = xyes; then
2067 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_XLIB"
2068 GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS \$(TOP)/src/gallium/winsys/sw/xlib/libws_xlib.a"
2071 if test "x$enable_gallium_drm_loader" = xyes; then
2072 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRM"
2075 AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
2076 AC_SUBST([GALLIUM_PIPE_LOADER_LIBS])
2079 dnl Tell Automake which drivers to build
2080 for driver in $GALLIUM_DRIVERS_DIRS; do
2083 HAVE_GALAHAD_GALLIUM=yes;
2086 HAVE_IDENTITY_GALLIUM=yes;
2089 HAVE_NOOP_GALLIUM=yes;
2092 GALLIUM_MAKE_DIRS="$GALLIUM_MAKE_DIRS $driver"
2097 AM_CONDITIONAL(HAVE_GALAHAD_GALLIUM, test x$HAVE_GALAHAD_GALLIUM = xyes)
2098 AM_CONDITIONAL(HAVE_IDENTITY_GALLIUM, test x$HAVE_IDENTITY_GALLIUM = xyes)
2099 AM_CONDITIONAL(HAVE_NOOP_GALLIUM, test x$HAVE_NOOP_GALLIUM = xyes)
2100 AM_CONDITIONAL(NEED_RADEON_GALLIUM, test x$NEED_RADEON_GALLIUM = xyes)
2101 AM_CONDITIONAL(USE_R600_LLVM_COMPILER, test x$USE_R600_LLVM_COMPILER = xyes)
2102 AM_CONDITIONAL(HAVE_LOADER_GALLIUM, test x$enable_gallium_loader = xyes)
2103 AM_CONDITIONAL(HAVE_DRM_LOADER_GALLIUM, test x$enable_gallium_drm_loader = xyes)
2104 AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
2105 AC_SUBST([GALLIUM_MAKE_DIRS])
2107 AM_CONDITIONAL(HAVE_X11_DRIVER, echo "$DRIVER_DIRS" | grep 'x11' >/dev/null 2>&1)
2108 AM_CONDITIONAL(HAVE_DRI_DRIVER, echo "$DRIVER_DIRS" | grep 'dri' >/dev/null 2>&1)
2109 AM_CONDITIONAL(HAVE_OSMESA_DRIVER, echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1)
2111 AM_CONDITIONAL(HAVE_X86_ASM, echo "$ASM_FLAGS" | grep 'X86_ASM' >/dev/null 2>&1)
2112 AM_CONDITIONAL(HAVE_X86_64_ASM, echo "$ASM_FLAGS" | grep 'X86_64_ASM' >/dev/null 2>&1)
2113 AM_CONDITIONAL(HAVE_SPARC_ASM, echo "$ASM_FLAGS" | grep 'SPARC_ASM' >/dev/null 2>&1)
2115 dnl prepend CORE_DIRS to SRC_DIRS
2116 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
2118 dnl Restore LDFLAGS and CPPFLAGS
2119 LDFLAGS="$_SAVE_LDFLAGS"
2120 CPPFLAGS="$_SAVE_CPPFLAGS"
2122 dnl Add user CFLAGS and CXXFLAGS
2123 CFLAGS="$CFLAGS $USER_CFLAGS"
2124 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
2126 dnl Substitute the config
2127 AC_CONFIG_FILES([configs/autoconf
2128 src/gallium/auxiliary/pipe-loader/Makefile
2129 src/gallium/state_trackers/clover/Makefile
2130 src/gallium/drivers/Makefile
2131 src/gallium/drivers/r300/Makefile
2132 src/gallium/drivers/r600/Makefile
2133 src/gallium/targets/opencl/Makefile
2136 src/egl/drivers/Makefile
2137 src/egl/drivers/dri2/Makefile
2138 src/egl/drivers/glx/Makefile
2139 src/egl/main/Makefile
2141 src/egl/wayland/Makefile
2142 src/egl/wayland/wayland-egl/Makefile
2143 src/egl/wayland/wayland-egl/wayland-egl.pc
2144 src/egl/wayland/wayland-drm/Makefile
2145 src/glsl/tests/Makefile
2147 src/mapi/shared-glapi/Makefile
2149 src/mesa/libdricore/Makefile
2150 src/mesa/drivers/dri/dri.pc
2151 src/mesa/drivers/dri/Makefile
2152 src/mesa/drivers/dri/common/Makefile
2153 src/mesa/drivers/dri/i915/Makefile
2154 src/mesa/drivers/dri/i965/Makefile
2155 src/mesa/drivers/dri/nouveau/Makefile
2156 src/mesa/drivers/dri/r200/Makefile
2157 src/mesa/drivers/dri/radeon/Makefile
2158 src/mesa/drivers/dri/swrast/Makefile
2160 tests/glx/Makefile])
2162 dnl Replace the configs/current symlink
2163 AC_CONFIG_COMMANDS([configs],[
2164 if test -f configs/current || test -L configs/current; then
2165 rm -f configs/current
2167 ln -s autoconf configs/current
2170 dnl Sort the dirs alphabetically
2171 GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2172 GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2173 GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2174 GALLIUM_MAKE_DIRS=`echo $GALLIUM_MAKE_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2175 GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2180 dnl Output some configuration info for the user
2183 echo " prefix: $prefix"
2184 echo " exec_prefix: $exec_prefix"
2185 echo " libdir: $libdir"
2186 echo " includedir: $includedir"
2190 echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
2191 echo " OpenVG: $enable_openvg"
2195 if test "x$enable_osmesa" != xno; then
2196 echo " OSMesa: lib$OSMESA_LIB"
2201 if test "x$enable_dri" != xno; then
2202 # cleanup the drivers var
2203 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
2204 if test "x$DRI_DIRS" = x; then
2205 echo " DRI drivers: no"
2207 echo " DRI drivers: $dri_dirs"
2209 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
2212 case "x$enable_glx$enable_xlib_glx" in
2214 echo " GLX: Xlib-based"
2217 echo " GLX: DRI-based"
2220 echo " GLX: $enable_glx"
2225 echo " GLU: $enable_glu"
2229 echo " EGL: $enable_egl"
2230 if test "$enable_egl" = yes; then
2231 echo " EGL platforms: $EGL_PLATFORMS"
2234 if test "x$HAVE_EGL_DRIVER_GLX" != "x"; then
2235 egl_drivers="$egl_drivers builtin:egl_glx"
2237 if test "x$HAVE_EGL_DRIVER_DRI2" != "x"; then
2238 egl_drivers="$egl_drivers builtin:egl_dri2"
2241 if test "x$HAVE_ST_EGL" = xyes; then
2242 echo " EGL drivers: ${egl_drivers} egl_gallium"
2243 echo " EGL Gallium STs:$EGL_CLIENT_APIS"
2245 echo " EGL drivers: $egl_drivers"
2250 if test "x$MESA_LLVM" = x1; then
2252 echo " llvm-config: $LLVM_CONFIG"
2253 echo " llvm-version: $LLVM_VERSION"
2259 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
2260 echo " Gallium: yes"
2261 echo " Gallium dirs: $GALLIUM_DIRS"
2262 echo " Target dirs: $GALLIUM_TARGET_DIRS"
2263 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
2264 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
2265 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
2273 echo " Shared libs: $enable_shared"
2274 echo " Static libs: $enable_static"
2276 dnl Compiler options
2277 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2278 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2279 $SED 's/^ *//;s/ */ /;s/ *$//'`
2280 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2281 $SED 's/^ *//;s/ */ /;s/ *$//'`
2282 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
2284 echo " CFLAGS: $cflags"
2285 echo " CXXFLAGS: $cxxflags"
2286 echo " Macros: $defines"
2288 echo " PYTHON2: $PYTHON2"
2291 echo " Run '${MAKE-make}' to build Mesa"