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])
20 dnl Versions for external dependencies
21 LIBDRM_REQUIRED=2.4.24
22 LIBDRM_RADEON_REQUIRED=2.4.24
23 LIBDRM_INTEL_REQUIRED=2.4.24
24 LIBDRM_NOUVEAU_REQUIRED=0.6
25 DRI2PROTO_REQUIRED=2.6
26 GLPROTO_REQUIRED=1.4.14
27 LIBDRM_XORG_REQUIRED=2.4.24
28 LIBKMS_XORG_REQUIRED=1.0.0
34 AC_CHECK_PROGS([MAKE], [gmake make])
35 AC_CHECK_PROGS([PYTHON2], [python2 python])
36 AC_PATH_PROG([MKDEP], [makedepend])
37 AC_PATH_PROG([SED], [sed])
39 if test "x$MKDEP" = "x"; then
40 AC_MSG_ERROR([makedepend is required to build Mesa])
43 AC_PATH_PROG([FLEX], [flex])
44 test "x$FLEX" = "x" && AC_MSG_ERROR([flex is needed to build Mesa])
46 AC_PATH_PROG([BISON], [bison])
47 test "x$BISON" = "x" && AC_MSG_ERROR([bison is needed to build Mesa])
49 dnl Our fallback install-sh is a symlink to minstall. Use the existing
50 dnl configuration in that case.
52 test "x$INSTALL" = "x$ac_install_sh" && INSTALL='$(MINSTALL)'
54 dnl We need a POSIX shell for parts of the build. Assume we have one
58 # Solaris /bin/sh is too old/non-POSIX compliant
59 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
64 dnl clang is mostly GCC-compatible, but its version is much lower,
65 dnl so we have to check for it.
66 AC_MSG_CHECKING([if compiling with clang])
69 [AC_LANG_PROGRAM([], [[
74 [CLANG=yes], [CLANG=no])
76 AC_MSG_RESULT([$CLANG])
78 dnl If we're using GCC, make sure that it is at least version 3.3.0. Older
79 dnl versions are explictly not supported.
80 if test "x$GCC" = xyes -a "x$CLANG" = xno; then
81 AC_MSG_CHECKING([whether gcc version is sufficient])
85 GCC_VERSION=`$CC -dumpversion`
86 if test $? -eq 0; then
87 major=`echo $GCC_VERSION | cut -d. -f1`
88 minor=`echo $GCC_VERSION | cut -d. -f1`
91 if test $major -lt 3 -o $major -eq 3 -a $minor -lt 3 ; then
93 AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.])
100 MKDEP_OPTIONS=-fdepend
101 dnl Ask gcc where it's keeping its secret headers
102 if test "x$GCC" = xyes; then
103 for dir in include include-fixed; do
104 GCC_INCLUDES=`$CC -print-file-name=$dir`
105 if test "x$GCC_INCLUDES" != x && \
106 test "$GCC_INCLUDES" != "$dir" && \
107 test -d "$GCC_INCLUDES"; then
108 MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
112 AC_SUBST([MKDEP_OPTIONS])
114 dnl Make sure the pkg-config macros are defined
115 m4_ifndef([PKG_PROG_PKG_CONFIG],
116 [m4_fatal([Could not locate the pkg-config autoconf macros.
117 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
118 are in a different location, try setting the environment variable
119 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
120 PKG_PROG_PKG_CONFIG()
122 dnl LIB_DIR - library basename
123 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
126 dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
127 _SAVE_LDFLAGS="$LDFLAGS"
128 AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker])
129 AC_SUBST([EXTRA_LIB_PATH])
131 dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
132 _SAVE_CPPFLAGS="$CPPFLAGS"
133 AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers])
134 AC_SUBST([X11_INCLUDES])
141 DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS"
144 DEFINES="$DEFINES -DPTHREADS -DSVR4"
147 DEFINES="$DEFINES -DPTHREADS"
151 dnl Add flags for gcc and g++
152 if test "x$GCC" = xyes; then
153 CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99"
154 if test "x$CLANG" = "xno"; then
155 CFLAGS="$CFLAGS -ffast-math"
158 # Enable -fvisibility=hidden if using a gcc that supports it
159 save_CFLAGS="$CFLAGS"
160 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
161 VISIBILITY_CFLAGS="-fvisibility=hidden"
162 CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
163 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
164 [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
166 # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
169 # Work around aliasing bugs - developers should comment this out
170 CFLAGS="$CFLAGS -fno-strict-aliasing"
172 if test "x$GXX" = xyes; then
173 CXXFLAGS="$CXXFLAGS -Wall"
175 # Enable -fvisibility=hidden if using a gcc that supports it
176 save_CXXFLAGS="$CXXFLAGS"
177 AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
178 VISIBILITY_CXXFLAGS="-fvisibility=hidden"
179 CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
181 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
182 [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
185 # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
186 CXXFLAGS=$save_CXXFLAGS
188 # Work around aliasing bugs - developers should comment this out
189 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
192 dnl even if the compiler appears to support it, using visibility attributes isn't
193 dnl going to do anything useful currently on cygwin apart from emit lots of warnings
197 VISIBILITY_CXXFLAGS=""
201 AC_SUBST([VISIBILITY_CFLAGS])
202 AC_SUBST([VISIBILITY_CXXFLAGS])
204 dnl These should be unnecessary, but let the user set them if they want
205 AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
206 Default is to use CFLAGS.])
207 AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
208 compiler. Default is to use CFLAGS.])
209 AC_SUBST([OPT_FLAGS])
210 AC_SUBST([ARCH_FLAGS])
213 dnl Hacks to enable 32 or 64 bit build
215 AC_ARG_ENABLE([32-bit],
216 [AS_HELP_STRING([--enable-32-bit],
217 [build 32-bit libraries @<:@default=auto@:>@])],
218 [enable_32bit="$enableval"],
221 if test "x$enable_32bit" = xyes; then
222 if test "x$GCC" = xyes; then
223 CFLAGS="$CFLAGS -m32"
224 ARCH_FLAGS="$ARCH_FLAGS -m32"
226 if test "x$GXX" = xyes; then
227 CXXFLAGS="$CXXFLAGS -m32"
230 AC_ARG_ENABLE([64-bit],
231 [AS_HELP_STRING([--enable-64-bit],
232 [build 64-bit libraries @<:@default=auto@:>@])],
233 [enable_64bit="$enableval"],
236 if test "x$enable_64bit" = xyes; then
237 if test "x$GCC" = xyes; then
238 CFLAGS="$CFLAGS -m64"
240 if test "x$GXX" = xyes; then
241 CXXFLAGS="$CXXFLAGS -m64"
246 dnl shared/static libraries, mimic libtool options
248 AC_ARG_ENABLE([static],
249 [AS_HELP_STRING([--enable-static],
250 [build static libraries @<:@default=disabled@:>@])],
251 [enable_static="$enableval"],
254 case "x$enable_static" in
256 x ) enable_static=no ;;
258 AC_MSG_ERROR([Static library option '$enable_static' is not a valid])
261 AC_ARG_ENABLE([shared],
262 [AS_HELP_STRING([--disable-shared],
263 [build shared libraries @<:@default=enabled@:>@])],
264 [enable_shared="$enableval"],
267 case "x$enable_shared" in
269 x ) enable_shared=yes ;;
271 AC_MSG_ERROR([Shared library option '$enable_shared' is not a valid])
275 dnl Can't have static and shared libraries, default to static if user
276 dnl explicitly requested. If both disabled, set to static since shared
277 dnl was explicitly requirested.
278 case "x$enable_static$enable_shared" in
280 AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
284 AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
292 AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
293 if test "$enable_static" = yes; then
294 MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
296 AC_SUBST([MKLIB_OPTIONS])
299 dnl other compiler options
301 AC_ARG_ENABLE([debug],
302 [AS_HELP_STRING([--enable-debug],
303 [use debug compiler flags and macros @<:@default=disabled@:>@])],
304 [enable_debug="$enableval"],
307 if test "x$enable_debug" = xyes; then
308 DEFINES="$DEFINES -DDEBUG"
309 if test "x$GCC" = xyes; then
312 if test "x$GXX" = xyes; then
313 CXXFLAGS="$CXXFLAGS -g"
320 LIB_PREFIX_GLOB='lib'
321 LIB_VERSION_SEPARATOR='.'
322 if test "$enable_static" = yes; then
327 LIB_EXTENSION='dylib' ;;
329 dnl prefix can be 'cyg' or 'lib'
330 LIB_PREFIX_GLOB='???'
331 LIB_VERSION_SEPARATOR='-'
332 LIB_EXTENSION='dll' ;;
336 LIB_EXTENSION='so' ;;
341 dnl potentially-infringing-but-nobody-knows-for-sure stuff
343 AC_ARG_ENABLE([texture-float],
344 [AS_HELP_STRING([--enable-texture-float],
345 [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
346 [enable_texture_float="$enableval"],
347 [enable_texture_float=no]
349 if test "x$enable_texture_float" = xyes; then
350 AC_MSG_WARN([Floating-point textures enabled.])
351 AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
352 DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
355 GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
356 GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
357 GLUT_LIB_NAME='lib$(GLUT_LIB).'${LIB_EXTENSION}
358 GLW_LIB_NAME='lib$(GLW_LIB).'${LIB_EXTENSION}
359 OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
360 EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
361 GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
362 GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION}
363 VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION}
364 GLAPI_LIB_NAME='lib$(GLAPI_LIB).'${LIB_EXTENSION}
365 WAYLAND_EGL_LIB_NAME='lib$(WAYLAND_EGL_LIB).'${LIB_EXTENSION}
366 GBM_LIB_NAME='lib$(GBM_LIB).'${LIB_EXTENSION}
368 GL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
369 GLU_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLU_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
370 GLUT_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLUT_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
371 GLW_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLW_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
372 OSMESA_LIB_GLOB=${LIB_PREFIX_GLOB}'$(OSMESA_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
373 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
374 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
375 GLESv1_CM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv1_CM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
376 GLESv2_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv2_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
377 VG_LIB_GLOB=${LIB_PREFIX_GLOB}'$(VG_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
378 GLAPI_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLAPI_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
379 WAYLAND_EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(WAYLAND_EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
380 GBM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GBM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
382 AC_SUBST([GL_LIB_NAME])
383 AC_SUBST([GLU_LIB_NAME])
384 AC_SUBST([GLUT_LIB_NAME])
385 AC_SUBST([GLW_LIB_NAME])
386 AC_SUBST([OSMESA_LIB_NAME])
387 AC_SUBST([EGL_LIB_NAME])
388 AC_SUBST([GLESv1_CM_LIB_NAME])
389 AC_SUBST([GLESv2_LIB_NAME])
390 AC_SUBST([VG_LIB_NAME])
391 AC_SUBST([GLAPI_LIB_NAME])
392 AC_SUBST([WAYLAND_EGL_LIB_NAME])
393 AC_SUBST([GBM_LIB_NAME])
395 AC_SUBST([GL_LIB_GLOB])
396 AC_SUBST([GLU_LIB_GLOB])
397 AC_SUBST([GLUT_LIB_GLOB])
398 AC_SUBST([GLW_LIB_GLOB])
399 AC_SUBST([OSMESA_LIB_GLOB])
400 AC_SUBST([EGL_LIB_GLOB])
401 AC_SUBST([GLESv1_CM_LIB_GLOB])
402 AC_SUBST([GLESv2_LIB_GLOB])
403 AC_SUBST([VG_LIB_GLOB])
404 AC_SUBST([GLAPI_LIB_GLOB])
405 AC_SUBST([WAYLAND_EGL_LIB_GLOB])
406 AC_SUBST([GBM_LIB_GLOB])
409 dnl Arch/platform-specific settings
412 [AS_HELP_STRING([--disable-asm],
413 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
414 [enable_asm="$enableval"],
421 AC_MSG_CHECKING([whether to enable assembly])
422 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
423 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
424 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
428 AC_MSG_RESULT([no, cross compiling])
432 # check for supported arches
433 if test "x$enable_asm" = xyes; then
437 linux* | *freebsd* | dragonfly* | *netbsd*)
438 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
444 linux* | *freebsd* | dragonfly* | *netbsd*)
445 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
467 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
468 MESA_ASM_SOURCES='$(X86_SOURCES)'
469 GLAPI_ASM_SOURCES='$(X86_API)'
470 AC_MSG_RESULT([yes, x86])
473 ASM_FLAGS="-DUSE_X86_64_ASM"
474 MESA_ASM_SOURCES='$(X86-64_SOURCES)'
475 GLAPI_ASM_SOURCES='$(X86-64_API)'
476 AC_MSG_RESULT([yes, x86_64])
479 ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM"
480 MESA_ASM_SOURCES='$(PPC_SOURCES)'
481 AC_MSG_RESULT([yes, ppc])
484 ASM_FLAGS="-DUSE_SPARC_ASM"
485 MESA_ASM_SOURCES='$(SPARC_SOURCES)'
486 GLAPI_ASM_SOURCES='$(SPARC_API)'
487 AC_MSG_RESULT([yes, sparc])
490 AC_MSG_RESULT([no, platform not supported])
494 AC_SUBST([ASM_FLAGS])
495 AC_SUBST([MESA_ASM_SOURCES])
496 AC_SUBST([GLAPI_ASM_SOURCES])
501 dnl Check to see if dlopen is in default libraries (like Solaris, which
502 dnl has it in libc), or if libdl is needed to get it.
503 AC_CHECK_FUNC([dlopen], [],
504 [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
505 AC_SUBST([DLOPEN_LIBS])
507 dnl See if posix_memalign is available
508 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
510 dnl SELinux awareness.
511 AC_ARG_ENABLE([selinux],
512 [AS_HELP_STRING([--enable-selinux],
513 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
514 [MESA_SELINUX="$enableval"],
516 if test "x$enable_selinux" = "xyes"; then
517 AC_CHECK_HEADER([selinux/selinux.h],[],
518 [AC_MSG_ERROR([SELinux headers not found])])
519 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
520 [AC_MSG_ERROR([SELinux library not found])])
521 SELINUX_LIBS="-lselinux"
522 DEFINES="$DEFINES -DMESA_SELINUX"
526 AC_ARG_ENABLE([opengl],
527 [AS_HELP_STRING([--disable-opengl],
528 [disable support for standard OpenGL API @<:@default=no@:>@])],
529 [enable_opengl="$enableval"],
531 AC_ARG_ENABLE([gles1],
532 [AS_HELP_STRING([--enable-gles1],
533 [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
534 [enable_gles1="$enableval"],
536 AC_ARG_ENABLE([gles2],
537 [AS_HELP_STRING([--enable-gles2],
538 [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
539 [enable_gles2="$enableval"],
541 AC_ARG_ENABLE([openvg],
542 [AS_HELP_STRING([--enable-openvg],
543 [enable support for OpenVG API @<:@default=no@:>@])],
544 [enable_openvg="$enableval"],
548 [AS_HELP_STRING([--enable-dri],
549 [enable DRI modules @<:@default=auto@:>@])],
550 [enable_dri="$enableval"],
553 [AS_HELP_STRING([--enable-glx],
554 [enable GLX library @<:@default=auto@:>@])],
555 [enable_glx="$enableval"],
557 AC_ARG_ENABLE([osmesa],
558 [AS_HELP_STRING([--enable-osmesa],
559 [enable OSMesa library @<:@default=auto@:>@])],
560 [enable_osmesa="$enableval"],
561 [enable_osmesa=auto])
563 [AS_HELP_STRING([--disable-egl],
564 [disable EGL library @<:@default=enabled@:>@])],
565 [enable_egl="$enableval"],
568 AC_ARG_ENABLE([xorg],
569 [AS_HELP_STRING([--enable-xorg],
570 [enable support for X.Org DDX API @<:@default=no@:>@])],
571 [enable_xorg="$enableval"],
574 [AS_HELP_STRING([--enable-xa],
575 [enable build of the XA X Acceleration API @<:@default=no@:>@])],
576 [enable_xa="$enableval"],
578 AC_ARG_ENABLE([d3d1x],
579 [AS_HELP_STRING([--enable-d3d1x],
580 [enable support for Direct3D 10 & 11 low-level API @<:@default=no@:>@])],
581 [enable_d3d1x="$enableval"],
584 [AS_HELP_STRING([--enable-gbm],
585 [enable gbm library @<:@default=auto@:>@])],
586 [enable_gbm="$enableval"],
589 AC_ARG_ENABLE([xvmc],
590 [AS_HELP_STRING([--enable-xvmc],
591 [enable xvmc library @<:@default=auto@:>@])],
592 [enable_xvmc="$enableval"],
594 AC_ARG_ENABLE([vdpau],
595 [AS_HELP_STRING([--enable-vdpau],
596 [enable vdpau library @<:@default=auto@:>@])],
597 [enable_vdpau="$enableval"],
600 [AS_HELP_STRING([--enable-va],
601 [enable va library @<:@default=auto@:>@])],
602 [enable_va="$enableval"],
605 AC_ARG_ENABLE([xlib_glx],
606 [AS_HELP_STRING([--enable-xlib-glx],
607 [make GLX library Xlib-based instead of DRI-based @<:@default=disable@:>@])],
608 [enable_xlib_glx="$enableval"],
609 [enable_xlib_glx=auto])
610 AC_ARG_ENABLE([gallium_egl],
611 [AS_HELP_STRING([--enable-gallium-egl],
612 [enable optional EGL state tracker (not required
613 for EGL support in Gallium with OpenGL and OpenGL ES)
614 @<:@default=disable@:>@])],
615 [enable_gallium_egl="$enableval"],
616 [enable_gallium_egl=no])
617 AC_ARG_ENABLE([gallium_gbm],
618 [AS_HELP_STRING([--enable-gallium-gbm],
619 [enable optional gbm state tracker (not required for
620 gbm support in Gallium)
621 @<:@default=auto@:>@])],
622 [enable_gallium_gbm="$enableval"],
623 [enable_gallium_gbm=auto])
625 # Option for Gallium drivers
626 GALLIUM_DRIVERS_DEFAULT="r300,r600,swrast"
628 AC_ARG_WITH([gallium-drivers],
629 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
630 [comma delimited Gallium drivers list, e.g.
631 "i915,i965,nouveau,r300,r600,svga,swrast"
632 @<:@default=r300,r600,swrast@:>@])],
633 [with_gallium_drivers="$withval"],
634 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
636 # Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it
637 # here so that the script doesn't choke on an unknown driver name later.
638 case "$with_gallium_drivers" in
639 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
640 no) with_gallium_drivers='' ;;
643 if test "x$enable_opengl" = xno -a \
644 "x$enable_gles1" = xno -a \
645 "x$enable_gles2" = xno -a \
646 "x$enable_openvg" = xno -a \
647 "x$enable_xorg" = xno -a \
648 "x$enable_xa" = xno -a \
649 "x$enable_d3d1x" = xno -a \
650 "x$enable_xvmc" = xno -a \
651 "x$enable_vdpau" = xno -a \
652 "x$enable_va" = xno; then
653 AC_MSG_ERROR([at least one API should be enabled])
657 if test "x$enable_opengl" = xno; then
658 API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
660 API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
662 if test "x$enable_gles1" = xyes; then
663 API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
665 if test "x$enable_gles2" = xyes; then
666 API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
668 AC_SUBST([API_DEFINES])
670 AC_ARG_ENABLE([shared-glapi],
671 [AS_HELP_STRING([--enable-shared-glapi],
672 [EXPERIMENTAL. Enable shared glapi for OpenGL @<:@default=no@:>@])],
673 [enable_shared_glapi="$enableval"],
674 [enable_shared_glapi=no])
677 if test "x$enable_shared_glapi" = xyes; then
680 AC_SUBST([SHARED_GLAPI])
683 dnl Driver configuration. Options are xlib, dri and osmesa right now.
684 dnl More later: fbdev, ...
686 default_driver="xlib"
691 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
694 *freebsd* | dragonfly* | *netbsd*)
696 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
701 if test "x$enable_opengl" = xno; then
705 AC_ARG_WITH([driver],
706 [AS_HELP_STRING([--with-driver=DRIVER], [DEPRECATED])],
707 [mesa_driver="$withval"],
709 dnl Check for valid option
710 case "x$mesa_driver" in
711 xxlib|xdri|xosmesa|xno)
712 if test "x$enable_dri" != xauto -o \
713 "x$enable_glx" != xauto -o \
714 "x$enable_osmesa" != xauto -o \
715 "x$enable_xlib_glx" != xauto; then
716 AC_MSG_ERROR([--with-driver=$mesa_driver is deprecated])
720 mesa_driver="$default_driver"
723 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
727 # map $mesa_driver to APIs
728 if test "x$enable_dri" = xauto; then
729 case "x$mesa_driver" in
730 xdri) enable_dri=yes ;;
735 if test "x$enable_glx" = xauto; then
736 case "x$mesa_driver" in
737 xdri|xxlib) enable_glx=yes ;;
742 if test "x$enable_osmesa" = xauto; then
743 case "x$mesa_driver" in
744 xxlib|xosmesa) enable_osmesa=yes ;;
745 *) enable_osmesa=no ;;
749 if test "x$enable_xlib_glx" = xauto; then
750 case "x$mesa_driver" in
751 xxlib) enable_xlib_glx=yes ;;
752 *) enable_xlib_glx=no ;;
756 if test "x$enable_glx" = xno; then
761 dnl Driver specific build directories
764 dnl this variable will be prepended to SRC_DIRS and is not exported
769 GALLIUM_DIRS="auxiliary drivers state_trackers"
770 GALLIUM_TARGET_DIRS=""
771 GALLIUM_WINSYS_DIRS="sw"
772 GALLIUM_DRIVERS_DIRS="failover galahad trace rbug noop identity"
773 GALLIUM_STATE_TRACKERS_DIRS=""
775 # build shared-glapi if enabled for OpenGL or if OpenGL ES is enabled
776 case "x$enable_shared_glapi$enable_gles1$enable_gles2" in
778 CORE_DIRS="$CORE_DIRS mapi/shared-glapi"
782 # build glapi if OpenGL is enabled
783 if test "x$enable_opengl" = xyes; then
784 CORE_DIRS="$CORE_DIRS mapi/glapi"
787 # build es1api if OpenGL ES 1.x is enabled
788 if test "x$enable_gles1" = xyes; then
789 CORE_DIRS="$CORE_DIRS mapi/es1api"
792 # build es2api if OpenGL ES 2.x is enabled
793 if test "x$enable_gles2" = xyes; then
794 CORE_DIRS="$CORE_DIRS mapi/es2api"
797 # build glsl and mesa if OpenGL or OpenGL ES is enabled
798 case "x$enable_opengl$enable_gles1$enable_gles2" in
800 CORE_DIRS="$CORE_DIRS glsl mesa"
804 case "x$enable_glx$enable_xlib_glx" in
806 DRIVER_DIRS="$DRIVER_DIRS x11"
807 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
808 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
809 GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS"
813 SRC_DIRS="$SRC_DIRS glx"
817 if test "x$enable_dri" = xyes; then
818 DRIVER_DIRS="$DRIVER_DIRS dri"
820 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/dri"
821 GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
825 if test "x$enable_osmesa" = xyes; then
826 # the empty space matters for osmesa... (see src/mesa/Makefile)
827 if test -n "$DRIVER_DIRS"; then
828 DRIVER_DIRS="$DRIVER_DIRS osmesa"
836 AC_SUBST([DRIVER_DIRS])
837 AC_SUBST([GALLIUM_DIRS])
838 AC_SUBST([GALLIUM_TARGET_DIRS])
839 AC_SUBST([GALLIUM_WINSYS_DIRS])
840 AC_SUBST([GALLIUM_DRIVERS_DIRS])
841 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
842 AC_SUBST([MESA_LLVM])
845 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
846 [have_libdrm=yes], [have_libdrm=no])
848 if test "x$enable_dri" = xyes; then
849 # DRI must be shared, I think
850 if test "$enable_static" = yes; then
851 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
854 # not a hard requirement as swrast does not depend on it
855 if test "x$have_libdrm" = xyes; then
856 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
861 dnl Find out if X is available. The variable have_x is set if libX11 is
862 dnl found to mimic AC_PATH_XTRA.
864 if test -n "$PKG_CONFIG"; then
865 AC_MSG_CHECKING([pkg-config files for X11 are available])
866 PKG_CHECK_EXISTS([x11],[
872 AC_MSG_RESULT([$x11_pkgconfig])
876 dnl Use the autoconf macro if no pkg-config files
877 if test "$x11_pkgconfig" = yes; then
878 PKG_CHECK_MODULES([X11], [x11])
881 test -z "$X11_CFLAGS" && X11_CFLAGS="$X_CFLAGS"
882 test -z "$X11_LIBS" && X11_LIBS="$X_LIBS -lX11"
883 AC_SUBST([X11_CFLAGS])
887 dnl Try to tell the user that the --x-* options are only used when
888 dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
889 m4_divert_once([HELP_BEGIN],
890 [These options are only used when the X libraries cannot be found by the
891 pkg-config utility.])
893 dnl We need X for xlib and dri, so bomb now if it's not found
894 if test "x$enable_glx" = xyes -a "x$no_x" = xyes; then
895 AC_MSG_ERROR([X11 development libraries needed for GLX])
898 dnl XCB - this is only used for GLX right now
900 [AS_HELP_STRING([--enable-xcb],
901 [use XCB for GLX @<:@default=disabled@:>@])],
902 [enable_xcb="$enableval"],
904 if test "x$enable_xcb" = xyes; then
905 DEFINES="$DEFINES -DUSE_XCB"
910 dnl Direct rendering or just indirect rendering
913 dnl Disable by default on GNU/Hurd
914 driglx_direct_default="no"
917 dnl Disable by default on cygwin
918 driglx_direct_default="no"
921 driglx_direct_default="yes"
924 AC_ARG_ENABLE([driglx-direct],
925 [AS_HELP_STRING([--disable-driglx-direct],
926 [enable direct rendering in GLX and EGL for DRI \
927 @<:@default=auto@:>@])],
928 [driglx_direct="$enableval"],
929 [driglx_direct="$driglx_direct_default"])
932 dnl libGL configuration per driver
934 case "x$enable_glx$enable_xlib_glx" in
937 if test "$x11_pkgconfig" = yes; then
938 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
939 GL_PC_REQ_PRIV="x11 xext"
940 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
941 GL_LIB_DEPS="$XLIBGL_LIBS"
943 # should check these...
944 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
945 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
946 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
947 GL_PC_CFLAGS="$X11_INCLUDES"
949 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread"
950 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
952 # if static, move the external libraries to the programs
953 # and empty the libraries for libGL
954 if test "$enable_static" = yes; then
955 APP_LIB_DEPS="$APP_LIB_DEPS $GL_LIB_DEPS"
961 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
962 GL_PC_REQ_PRIV="glproto >= $GLPROTO_REQUIRED"
963 if test x"$driglx_direct" = xyes; then
964 if test "x$have_libdrm" != xyes; then
965 AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
967 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
968 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
971 # find the DRI deps for libGL
972 if test "$x11_pkgconfig" = yes; then
973 dri_modules="x11 xext xdamage xfixes"
975 # add xf86vidmode if available
976 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
977 if test "$HAVE_XF86VIDMODE" = yes ; then
978 dri_modules="$dri_modules xxf86vm"
981 # add xcb modules if necessary
982 if test "$enable_xcb" = yes; then
983 dri_modules="$dri_modules x11-xcb xcb-glx"
986 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
987 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
988 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
989 GL_LIB_DEPS="$DRIGL_LIBS"
991 # should check these...
992 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
993 if test "x$HAVE_XF86VIDMODE" == xyes; then
994 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
996 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXdamage -lXfixes"
998 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
999 GL_PC_CFLAGS="$X11_INCLUDES"
1001 # XCB can only be used from pkg-config
1002 if test "$enable_xcb" = yes; then
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"
1010 # need DRM libs, -lpthread, etc.
1011 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1012 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1016 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1017 GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1018 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1019 GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1021 AC_SUBST([GL_LIB_DEPS])
1022 AC_SUBST([GL_PC_REQ_PRIV])
1023 AC_SUBST([GL_PC_LIB_PRIV])
1024 AC_SUBST([GL_PC_CFLAGS])
1025 AC_SUBST([DRI_PC_REQ_PRIV])
1026 AC_SUBST([GLESv1_CM_LIB_DEPS])
1027 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
1028 AC_SUBST([GLESv2_LIB_DEPS])
1029 AC_SUBST([GLESv2_PC_LIB_PRIV])
1031 GLAPI_LIB_DEPS="-lpthread"
1032 AC_SUBST([GLAPI_LIB_DEPS])
1035 dnl Setup default DRI CFLAGS
1036 DRI_CFLAGS='$(CFLAGS)'
1037 DRI_CXXFLAGS='$(CXXFLAGS)'
1038 DRI_LIB_DEPS='$(TOP)/src/mesa/libmesa.a'
1039 MESA_MODULES='$(TOP)/src/mesa/libmesa.a'
1041 AC_ARG_ENABLE([shared-dricore],
1042 [AS_HELP_STRING([--enable-shared-dricore],
1043 [link DRI modules with shared core DRI routines @<:@default=disabled@:>@])],
1044 [enable_dricore="$enableval"],
1045 [enable_dricore=no])
1046 if test "x$enable_dri" = xyes ; then
1047 if test "$enable_dricore" = yes ; then
1048 if test "$GCC$GXX" != yesyes ; then
1049 AC_MSG_WARN([Shared dricore requires GCC-compatible rpath handling. Disabling shared dricore])
1052 DRICORE_GLSL_LIBS='$(TOP)/$(LIB_DIR)/libglsl.so'
1053 DRICORE_LIBS='$(TOP)/$(LIB_DIR)/libdricore.so'
1054 DRICORE_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -lglsl'
1055 DRI_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore -lglsl'
1056 DRI_CFLAGS='$(CFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1057 DRI_CXXFLAGS='$(CXXFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1058 MESA_MODULES='$(DRICORE_LIBS) $(DRICORE_GLSL_LIBS)'
1062 AC_SUBST([DRICORE_LIBS])
1063 AC_SUBST([DRICORE_GLSL_LIBS])
1064 AC_SUBST([DRICORE_LIB_DEPS])
1065 AC_SUBST([DRI_CXXFLAGS])
1066 AC_SUBST([DRI_CFLAGS])
1067 AC_SUBST([MESA_MODULES])
1069 AC_SUBST([HAVE_XF86VIDMODE])
1071 PKG_CHECK_MODULES([LIBDRM_RADEON],
1072 [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED],
1073 HAVE_LIBDRM_RADEON=yes,
1074 HAVE_LIBDRM_RADEON=no)
1079 case "x$enable_glx$enable_xlib_glx" in
1081 DEFINES="$DEFINES -DUSE_XSHM"
1084 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1085 if test "x$driglx_direct" = xyes; then
1086 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1095 AC_ARG_ENABLE([glx-tls],
1096 [AS_HELP_STRING([--enable-glx-tls],
1097 [enable TLS support in GLX @<:@default=disabled@:>@])],
1098 [GLX_USE_TLS="$enableval"],
1100 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
1102 AS_IF([test "x$GLX_USE_TLS" = xyes],
1103 [DEFINES="${DEFINES} -DGLX_USE_TLS -DPTHREADS"])
1108 dnl Directory for DRI drivers
1109 AC_ARG_WITH([dri-driverdir],
1110 [AS_HELP_STRING([--with-dri-driverdir=DIR],
1111 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
1112 [DRI_DRIVER_INSTALL_DIR="$withval"],
1113 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
1114 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
1115 dnl Extra search path for DRI drivers
1116 AC_ARG_WITH([dri-searchpath],
1117 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
1118 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
1119 [DRI_DRIVER_SEARCH_DIR="$withval"],
1120 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
1121 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
1122 dnl Which drivers to build - default is chosen by platform
1123 AC_ARG_WITH([dri-drivers],
1124 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
1125 [comma delimited DRI drivers list, e.g.
1126 "swrast,i965,radeon" @<:@default=auto@:>@])],
1127 [with_dri_drivers="$withval"],
1128 [with_dri_drivers=yes])
1129 if test "x$with_dri_drivers" = x; then
1133 dnl If $with_dri_drivers is yes, directories will be added through
1136 case "$with_dri_drivers" in
1139 # classic DRI drivers require FEATURE_GL to build
1140 if test "x$enable_opengl" = xyes; then
1145 # verify the requested driver directories exist
1146 dri_drivers=`IFS=', '; echo $with_dri_drivers`
1147 for driver in $dri_drivers; do
1148 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
1149 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
1151 DRI_DIRS="$dri_drivers"
1152 if test -n "$DRI_DIRS" -a "x$enable_opengl" != xyes; then
1153 AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1158 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
1159 if test "x$enable_dri" = xyes; then
1160 # Platform specific settings and drivers to build
1163 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1164 DEFINES="$DEFINES -DHAVE_ALIAS"
1168 # sis is missing because they have not be converted to use
1169 # the new interface. i810 are missing because there is no
1170 # x86-64 system where they could *ever* be used.
1171 if test "x$DRI_DIRS" = "xyes"; then
1172 DRI_DIRS="i915 i965 mach64 mga nouveau r128 r200 r300 r600 \
1173 radeon savage tdfx unichrome swrast"
1177 # Build only the drivers for cards that exist on PowerPC.
1178 # At some point MGA will be added, but not yet.
1179 if test "x$DRI_DIRS" = "xyes"; then
1180 DRI_DIRS="mach64 r128 r200 r300 r600 radeon tdfx swrast"
1184 # Build only the drivers for cards that exist on sparc`
1185 if test "x$DRI_DIRS" = "xyes"; then
1186 DRI_DIRS="mach64 r128 r200 r300 r600 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="i810 i915 i965 mach64 mga nouveau r128 r200 r300 r600 \
1197 radeon tdfx unichrome savage sis swrast"
1201 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1202 DEFINES="$DEFINES -DHAVE_ALIAS"
1205 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1208 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1209 if test "x$DRI_DIRS" = "xyes"; then
1216 if test "x$DRI_DIRS" = "xyes"; then
1217 DRI_DIRS="i810 i915 i965 mach64 mga nouveau r128 r200 r300 r600 radeon \
1218 savage sis tdfx unichrome swrast"
1221 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
1224 if test "x$enable_dri" = xyes; then
1227 AC_ARG_WITH([expat],
1228 [AS_HELP_STRING([--with-expat=DIR],
1229 [expat install directory])],[
1230 EXPAT_INCLUDES="-I$withval/include"
1231 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
1232 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
1233 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
1235 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
1236 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1237 [AC_MSG_ERROR([Expat required for DRI.])])
1240 # libdrm is required for all except swrast
1241 if test -n "$DRI_DIRS" -a x"$DRI_DIRS" != xswrast; then
1242 if test "x$have_libdrm" != xyes; then
1243 AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
1247 # put all the necessary libs together, including possibly libdricore
1248 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
1250 AC_SUBST([DRI_DIRS])
1251 AC_SUBST([EXPAT_INCLUDES])
1252 AC_SUBST([DRI_LIB_DEPS])
1256 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1262 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1267 *radeon*|*r200*|*r300*|*r600*)
1268 if test "x$HAVE_LIBDRM_RADEON" = xyes; then
1269 RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS"
1270 RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS
1274 AC_SUBST([RADEON_CFLAGS])
1275 AC_SUBST([RADEON_LDFLAGS])
1279 dnl OSMesa configuration
1282 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1283 AC_ARG_WITH([osmesa-bits],
1284 [AS_HELP_STRING([--with-osmesa-bits=BITS],
1285 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1286 [osmesa_bits="$withval"],
1288 if test "x$osmesa_bits" != x8; then
1289 if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then
1290 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1294 case "x$osmesa_bits" in
1299 OSMESA_LIB="OSMesa$osmesa_bits"
1300 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1303 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1306 AC_SUBST([OSMESA_LIB])
1308 if test "x$enable_osmesa" = xyes; then
1309 # only link libraries with osmesa if shared
1310 if test "$enable_static" = no; then
1311 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1316 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1318 AC_SUBST([OSMESA_LIB_DEPS])
1319 AC_SUBST([OSMESA_MESA_DEPS])
1320 AC_SUBST([OSMESA_PC_REQ])
1321 AC_SUBST([OSMESA_PC_LIB_PRIV])
1324 dnl EGL configuration
1328 if test "x$enable_egl" = xyes; then
1329 SRC_DIRS="$SRC_DIRS egl"
1330 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS -lpthread"
1333 if test "$enable_static" != yes; then
1334 # build egl_glx when libGL is built
1335 if test "x$enable_glx" = xyes; then
1336 EGL_DRIVERS_DIRS="glx"
1339 PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1340 [have_libudev=yes],[have_libudev=no])
1341 if test "$have_libudev" = yes; then
1342 DEFINES="$DEFINES -DHAVE_LIBUDEV"
1344 if test "x$enable_dri" = xyes; then
1345 # build egl_dri2 when xcb-dri2 is available
1346 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes],
1347 [have_xcb_dri2=yes],[have_xcb_dri2=no])
1349 if test "$have_xcb_dri2" = yes; then
1350 EGL_DRIVER_DRI2=dri2
1351 DEFINES="$DEFINES -DHAVE_XCB_DRI2"
1352 # workaround a bug in xcb-dri2 generated by xcb-proto 1.6
1353 AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [],
1354 [DEFINES="$DEFINES -DXCB_DRI2_CONNECT_DEVICE_NAME_BROKEN"])
1358 EGL_DRIVERS_DIRS="$EGL_DRIVERS_DIRS $EGL_DRIVER_DRI2"
1361 AC_SUBST([EGL_LIB_DEPS])
1362 AC_SUBST([EGL_DRIVERS_DIRS])
1365 dnl gbm configuration
1367 if test "x$enable_gbm" = xauto; then
1368 case "$with_egl_platforms" in
1375 if test "x$enable_gbm" = xyes; then
1376 SRC_DIRS="$SRC_DIRS gbm"
1379 PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1380 AC_MSG_ERROR([gbm needs udev]))
1381 GBM_LIB_DEPS="$DLOPEN_LIBS $LIBUDEV_LIBS"
1383 if test "x$enable_dri" = xyes; then
1384 GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
1385 if test "$SHARED_GLAPI" -eq 0; then
1386 AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1390 AC_SUBST([GBM_LIB_DEPS])
1391 AC_SUBST([GBM_BACKEND_DIRS])
1392 GBM_PC_REQ_PRIV="libudev"
1393 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1395 AC_SUBST([GBM_PC_REQ_PRIV])
1396 AC_SUBST([GBM_PC_LIB_PRIV])
1397 AC_SUBST([GBM_PC_CFLAGS])
1400 dnl EGL Gallium configuration
1402 if test "x$enable_gallium_egl" = xyes; then
1403 if test "x$with_gallium_drivers" = x; then
1404 AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
1406 if test "x$enable_egl" = xno; then
1407 AC_MSG_ERROR([cannot enable egl_gallium without EGL])
1409 if test "x$have_libdrm" != xyes; then
1410 AC_MSG_ERROR([egl_gallium requires libdrm >= $LIBDRM_REQUIRED])
1413 GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
1414 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static"
1419 dnl gbm Gallium configuration
1421 if test "x$enable_gallium_gbm" = xauto; then
1422 case "$enable_gbm$HAVE_ST_EGL$with_egl_platforms" in
1424 enable_gallium_gbm=yes ;;
1426 enable_gallium_gbm=no ;;
1429 if test "x$enable_gallium_gbm" = xyes; then
1430 if test "x$with_gallium_drivers" = x; then
1431 AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
1433 if test "x$enable_gbm" = xno; then
1434 AC_MSG_ERROR([cannot enable gbm_gallium without gbm])
1437 GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS"
1438 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm"
1443 dnl X.Org DDX configuration
1445 if test "x$enable_xorg" = xyes; then
1446 PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1447 PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1448 PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1449 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1450 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1451 HAVE_XEXTPROTO_71="no")
1452 GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS"
1457 dnl XA configuration
1459 if test "x$enable_xa" = xyes; then
1460 GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS"
1465 dnl OpenVG configuration
1469 if test "x$enable_openvg" = xyes; then
1470 if test "x$enable_egl" = xno; then
1471 AC_MSG_ERROR([cannot enable OpenVG without EGL])
1473 if test "x$with_gallium_drivers" = x; then
1474 AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1476 if test "x$enable_gallium_egl" = xno; then
1477 AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
1480 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1481 VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS -lpthread"
1482 CORE_DIRS="$CORE_DIRS mapi/vgapi"
1483 GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1488 dnl D3D1X configuration
1491 if test "x$enable_d3d1x" = xyes; then
1492 if test "x$with_gallium_drivers" = x; then
1493 AC_MSG_ERROR([cannot enable D3D1X without Gallium])
1496 GALLIUM_STATE_TRACKERS_DIRS="d3d1x $GALLIUM_STATE_TRACKERS_DIRS"
1501 dnl Gallium G3DVL configuration
1503 AC_ARG_ENABLE([gallium-g3dvl],
1504 [AS_HELP_STRING([--enable-gallium-g3dvl],
1505 [build gallium g3dvl @<:@default=disabled@:>@])],
1506 [enable_gallium_g3dvl="$enableval"],
1507 [enable_gallium_g3dvl=no])
1508 if test "x$enable_gallium_g3dvl" = xyes; then
1509 if test "x$with_gallium_drivers" = x; then
1510 AC_MSG_ERROR([cannot enable G3DVL without Gallium])
1513 if test "x$enable_xvmc" = xauto; then
1517 if test "x$enable_vdpau" = xauto; then
1521 if test "x$enable_va" = xauto; then
1526 #TODO: Check for xvmc libs/headers
1527 if test "x$enable_xvmc" = xyes; then
1528 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg/xvmc"
1532 #TODO: Check for vdpau libs/headers
1533 if test "x$enable_vdpau" = xyes; then
1534 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau"
1538 #TODO: Check for va libs/headers
1539 if test "x$enable_va" = xyes; then
1540 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS va"
1544 if test "x$enable_xvmc" = xyes ||
1545 test "x$enable_vdpau" = xyes ||
1546 test "x$enable_va" = xyes; then
1547 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS g3dvl/dri"
1551 dnl GLU configuration
1553 AC_ARG_ENABLE([glu],
1554 [AS_HELP_STRING([--disable-glu],
1555 [enable OpenGL Utility library @<:@default=enabled@:>@])],
1556 [enable_glu="$enableval"],
1559 if test "x$enable_glu" = xyes; then
1560 if test "x$enable_glx" = xno -a "x$enable_osmesa" = xno; then
1561 AC_MSG_NOTICE([Disabling GLU since there is no OpenGL driver])
1566 if test "x$enable_glu" = xyes; then
1567 SRC_DIRS="$SRC_DIRS glu"
1569 if test "x$enable_glx" = xno; then
1570 # Link libGLU to libOSMesa instead of libGL
1573 if test "$enable_static" = no; then
1574 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
1579 # If static, empty GLU_LIB_DEPS and add libs for programs to link
1581 GLU_PC_LIB_PRIV="-lm"
1582 if test "$enable_static" = no; then
1584 GLU_MESA_DEPS='-l$(GL_LIB)'
1588 APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
1592 if test "$enable_static" = no; then
1593 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
1595 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
1596 AC_SUBST([GLU_LIB_DEPS])
1597 AC_SUBST([GLU_MESA_DEPS])
1598 AC_SUBST([GLU_PC_REQ])
1599 AC_SUBST([GLU_PC_REQ_PRIV])
1600 AC_SUBST([GLU_PC_LIB_PRIV])
1601 AC_SUBST([GLU_PC_CFLAGS])
1604 dnl GLw configuration
1606 AC_ARG_ENABLE([glw],
1607 [AS_HELP_STRING([--disable-glw],
1608 [enable Xt/Motif widget library @<:@default=enabled@:>@])],
1609 [enable_glw="$enableval"],
1611 dnl Don't build GLw on osmesa
1612 if test "x$enable_glw" = xyes -a "x$enable_glx" = xno; then
1613 AC_MSG_NOTICE([Disabling GLw since there is no OpenGL driver])
1616 AC_ARG_ENABLE([motif],
1617 [AS_HELP_STRING([--enable-motif],
1618 [use Motif widgets in GLw @<:@default=disabled@:>@])],
1619 [enable_motif="$enableval"],
1622 if test "x$enable_glw" = xyes; then
1623 SRC_DIRS="$SRC_DIRS glw"
1624 if test "$x11_pkgconfig" = yes; then
1625 PKG_CHECK_MODULES([GLW],[x11 xt])
1626 GLW_PC_REQ_PRIV="x11 xt"
1627 GLW_LIB_DEPS="$GLW_LIBS"
1629 # should check these...
1630 GLW_LIB_DEPS="$X_LIBS -lXt -lX11"
1631 GLW_PC_LIB_PRIV="$GLW_LIB_DEPS"
1632 GLW_PC_CFLAGS="$X11_INCLUDES"
1635 GLW_SOURCES="GLwDrawA.c"
1637 if test "x$enable_motif" = xyes; then
1638 GLW_SOURCES="$GLW_SOURCES GLwMDrawA.c"
1639 AC_PATH_PROG([MOTIF_CONFIG], [motif-config], [no])
1640 if test "x$MOTIF_CONFIG" != xno; then
1641 MOTIF_CFLAGS=`$MOTIF_CONFIG --cflags`
1642 MOTIF_LIBS=`$MOTIF_CONFIG --libs`
1644 AC_CHECK_HEADER([Xm/PrimitiveP.h], [],
1645 [AC_MSG_ERROR([Can't locate Motif headers])])
1646 AC_CHECK_LIB([Xm], [XmGetPixmap], [MOTIF_LIBS="-lXm"],
1647 [AC_MSG_ERROR([Can't locate Motif Xm library])])
1649 # MOTIF_LIBS is prepended to GLW_LIB_DEPS since Xm needs Xt/X11
1650 GLW_LIB_DEPS="$MOTIF_LIBS $GLW_LIB_DEPS"
1651 GLW_PC_LIB_PRIV="$MOTIF_LIBS $GLW_PC_LIB_PRIV"
1652 GLW_PC_CFLAGS="$MOTIF_CFLAGS $GLW_PC_CFLAGS"
1655 # If static, empty GLW_LIB_DEPS and add libs for programs to link
1656 GLW_PC_LIB_PRIV="$GLW_PC_LIB_PRIV"
1657 if test "$enable_static" = no; then
1658 GLW_MESA_DEPS='-l$(GL_LIB)'
1659 GLW_LIB_DEPS="$GLW_LIB_DEPS"
1661 APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
1666 AC_SUBST([GLW_LIB_DEPS])
1667 AC_SUBST([GLW_MESA_DEPS])
1668 AC_SUBST([GLW_SOURCES])
1669 AC_SUBST([MOTIF_CFLAGS])
1670 AC_SUBST([GLW_PC_REQ_PRIV])
1671 AC_SUBST([GLW_PC_LIB_PRIV])
1672 AC_SUBST([GLW_PC_CFLAGS])
1675 dnl GLUT configuration
1677 if test -f "$srcdir/include/GL/glut.h"; then
1682 AC_ARG_ENABLE([glut],
1683 [AS_HELP_STRING([--disable-glut],
1684 [enable GLUT library @<:@default=enabled if source available@:>@])],
1685 [enable_glut="$enableval"],
1686 [enable_glut="$default_glut"])
1688 dnl Don't build glut without GLX
1689 if test "x$enable_glut" = xyes -a "x$enable_glx" = xno; then
1690 AC_MSG_NOTICE([Disabling glut since there is no OpenGL driver])
1693 dnl Can't build glut if GLU not available
1694 if test "x$enable_glu$enable_glut" = xnoyes; then
1695 AC_MSG_WARN([Disabling glut since GLU is disabled])
1699 if test "x$enable_glut" = xyes; then
1700 SRC_DIRS="$SRC_DIRS glut/glx"
1701 if test "$x11_pkgconfig" = yes; then
1702 PKG_CHECK_MODULES([GLUT],[x11 xmu xi])
1703 GLUT_PC_REQ_PRIV="x11 xmu xi"
1704 GLUT_LIB_DEPS="$GLUT_LIBS"
1706 # should check these...
1707 GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
1708 GLUT_PC_LIB_PRIV="$GLUT_LIB_DEPS"
1709 GLUT_PC_CFLAGS="$X11_INCLUDES"
1711 if test "x$GCC" = xyes; then
1712 GLUT_CFLAGS="$GLUT_CFLAGS -fexceptions"
1714 GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
1715 GLUT_PC_LIB_PRIV="$GLUT_PC_LIB_PRIV -lm"
1717 # If static, empty GLUT_LIB_DEPS and add libs for programs to link
1718 if test "$enable_static" = no; then
1719 GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
1721 APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
1726 AC_SUBST([GLUT_LIB_DEPS])
1727 AC_SUBST([GLUT_MESA_DEPS])
1728 AC_SUBST([GLUT_CFLAGS])
1729 AC_SUBST([GLUT_PC_REQ_PRIV])
1730 AC_SUBST([GLUT_PC_LIB_PRIV])
1731 AC_SUBST([GLUT_PC_CFLAGS])
1734 dnl Program library dependencies
1735 dnl Only libm is added here if necessary as the libraries should
1736 dnl be pulled in by the linker
1738 if test "x$APP_LIB_DEPS" = x; then
1741 APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm"
1744 APP_LIB_DEPS="-lX11"
1751 AC_SUBST([APP_LIB_DEPS])
1752 AC_SUBST([PROGRAM_DIRS])
1755 dnl Gallium configuration
1757 if test "x$with_gallium_drivers" != x; then
1758 SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
1759 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1764 AC_SUBST([LLVM_CFLAGS])
1765 AC_SUBST([LLVM_LIBS])
1766 AC_SUBST([LLVM_LDFLAGS])
1767 AC_SUBST([LLVM_VERSION])
1769 case "x$enable_opengl$enable_gles1$enable_gles2" in
1771 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1775 AC_SUBST([VG_LIB_DEPS])
1776 AC_SUBST([EGL_CLIENT_APIS])
1778 AC_ARG_WITH([egl-platforms],
1779 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1780 [comma delimited native platforms libEGL supports, e.g.
1781 "x11,drm" @<:@default=auto@:>@])],
1782 [with_egl_platforms="$withval"],
1783 [with_egl_platforms=yes])
1786 WAYLAND_EGL_LIB_DEPS=""
1788 case "$with_egl_platforms" in
1790 if test "x$enable_egl" = xyes; then
1795 if test "x$enable_egl" != xyes; then
1796 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1798 # verify the requested driver directories exist
1799 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1800 for plat in $egl_platforms; do
1801 test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \
1802 AC_MSG_ERROR([EGL platform '$plat' doesn't exist])
1803 if test "$plat" = "fbdev"; then
1804 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev"
1806 if test "$plat" = "wayland"; then
1807 PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-server],, \
1808 [AC_MSG_ERROR([cannot find libwayland-client])])
1809 WAYLAND_EGL_LIB_DEPS="$WAYLAND_LIBS $LIBDRM_LIBS"
1810 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
1812 if test "$plat" = "drm" && test "x$enable_gbm" = "xno"; then
1813 AC_MSG_ERROR([EGL platform drm needs gbm])
1815 case "$plat$have_libudev" in
1817 AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;;
1820 EGL_PLATFORMS="$egl_platforms"
1823 AC_SUBST([EGL_PLATFORMS])
1825 AC_SUBST([WAYLAND_EGL_LIB_DEPS])
1826 WAYLAND_EGL_PC_REQ_PRIV="wayland-client libdrm"
1827 WAYLAND_EGL_PC_LIB_PRIV=
1828 WAYLAND_EGL_PC_CFLAGS=
1830 AC_SUBST([WAYLAND_EGL_PC_REQ_PRIV])
1831 AC_SUBST([WAYLAND_EGL_PC_LIB_PRIV])
1832 AC_SUBST([WAYLAND_EGL_PC_CFLAGS])
1835 AC_ARG_WITH([egl-driver-dir],
1836 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1837 [directory for EGL drivers [[default=${libdir}/egl]]])],
1838 [EGL_DRIVER_INSTALL_DIR="$withval"],
1839 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1840 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1842 AC_ARG_WITH([xorg-driver-dir],
1843 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1844 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1845 [XORG_DRIVER_INSTALL_DIR="$withval"],
1846 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1847 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1849 AC_ARG_WITH([max-width],
1850 [AS_HELP_STRING([--with-max-width=N],
1851 [Maximum framebuffer width (4096)])],
1852 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1853 AS_IF([test "${withval}" -gt "4096"],
1854 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1856 AC_ARG_WITH([max-height],
1857 [AS_HELP_STRING([--with-max-height=N],
1858 [Maximum framebuffer height (4096)])],
1859 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1860 AS_IF([test "${withval}" -gt "4096"],
1861 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1867 AC_ARG_ENABLE([gallium-llvm],
1868 [AS_HELP_STRING([--enable-gallium-llvm],
1869 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1870 [enable_gallium_llvm="$enableval"],
1871 [enable_gallium_llvm=auto])
1872 if test "x$with_gallium_drivers" = x; then
1873 enable_gallium_llvm=no
1875 if test "x$enable_gallium_llvm" = xauto; then
1877 i*86|x86_64) enable_gallium_llvm=yes;;
1880 if test "x$enable_gallium_llvm" = xyes; then
1881 if test "x$LLVM_CONFIG" != xno; then
1882 LLVM_VERSION=`$LLVM_CONFIG --version`
1883 LLVM_CFLAGS=`$LLVM_CONFIG --cppflags|sed 's/-DNDEBUG\>//g'`
1884 LLVM_LIBS="`$LLVM_CONFIG --libs` -lstdc++"
1886 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1887 DEFINES="$DEFINES -D__STDC_CONSTANT_MACROS"
1896 dnl Directory for VDPAU libs
1897 AC_ARG_WITH([vdpau-libdir],
1898 [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1899 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1900 [VDPAU_LIB_INSTALL_DIR="$withval"],
1901 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1902 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
1904 dnl Directory for VA libs
1905 AC_ARG_WITH([va-libdir],
1906 [AS_HELP_STRING([--with-va-libdir=DIR],
1907 [directory for the VA libraries @<:@default=${libdir}/va@:>@])],
1908 [VA_LIB_INSTALL_DIR="$withval"],
1909 [VA_LIB_INSTALL_DIR='${libdir}/va'])
1910 AC_SUBST([VA_LIB_INSTALL_DIR])
1913 dnl Gallium helper functions
1915 gallium_check_st() {
1916 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes ||
1917 test "x$HAVE_ST_XA" = xyes || test "x$HAVE_ST_XVMC" = xyes ||
1918 test "x$HAVE_ST_VDPAU" = xyes || test "x$HAVE_ST_VA" = xyes; then
1919 if test "x$have_libdrm" != xyes; then
1920 AC_MSG_ERROR([DRI or Xorg DDX requires libdrm >= $LIBDRM_REQUIRED])
1922 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1924 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1925 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1927 if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
1928 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1930 if test "x$HAVE_ST_XA" = xyes && test "x$4" != x; then
1931 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
1933 if test "x$HAVE_ST_XVMC" = xyes && test "x$5" != x; then
1934 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5"
1936 if test "x$HAVE_ST_VDPAU" = xyes && test "x$6" != x; then
1937 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6"
1939 if test "x$HAVE_ST_VA" = xyes && test "x$7" != x; then
1940 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $7"
1944 gallium_require_llvm() {
1945 if test "x$MESA_LLVM" = x0; then
1947 i*86|x86_64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1953 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
1954 if test "x$with_gallium_drivers" != x; then
1955 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1956 for driver in $gallium_drivers; do
1959 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
1960 gallium_check_st "svga/drm" "dri-vmwgfx" "xorg-vmwgfx" "xa-vmwgfx"
1963 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe"
1964 if test "x$MESA_LLVM" = x1; then
1965 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1967 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1968 gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1971 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i965 softpipe"
1972 if test "x$MESA_LLVM" = x1; then
1973 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1975 gallium_check_st "i965/drm" "dri-i965" "xorg-i965"
1978 gallium_require_llvm "Gallium R300"
1979 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1980 gallium_check_st "radeon/drm" "dri-r300" "xorg-r300" "" "xvmc-r300" "vdpau-r300" "va-r300"
1983 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1984 gallium_check_st "r600/drm" "dri-r600" "" "" "xvmc-r600" "vdpau-r600" "va-r600"
1987 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50 nvc0"
1988 gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau" "" "xvmc-nouveau"
1991 if test "x$HAVE_ST_DRI" = xyes; then
1992 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe"
1993 if test "x$MESA_LLVM" = x1; then
1994 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1996 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1998 if test "x$HAVE_ST_VDPAU" = xyes; then
1999 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS vdpau-softpipe"
2001 if test "x$HAVE_ST_XVMC" = xyes; then
2002 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS xvmc-softpipe"
2004 if test "x$HAVE_ST_VA" = xyes; then
2005 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS va-softpipe"
2009 AC_MSG_ERROR([Unknown Gallium driver: $driver])
2015 dnl prepend CORE_DIRS to SRC_DIRS
2016 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
2018 dnl Restore LDFLAGS and CPPFLAGS
2019 LDFLAGS="$_SAVE_LDFLAGS"
2020 CPPFLAGS="$_SAVE_CPPFLAGS"
2022 dnl Substitute the config
2023 AC_CONFIG_FILES([configs/autoconf])
2025 dnl Replace the configs/current symlink
2026 AC_CONFIG_COMMANDS([configs],[
2027 if test -f configs/current || test -L configs/current; then
2028 rm -f configs/current
2030 ln -s autoconf configs/current
2033 dnl Sort the dirs alphabetically
2034 GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort|tr "\n" " "`
2035 GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort|tr "\n" " "`
2036 GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort|tr "\n" " "`
2037 GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort|tr "\n" " "`
2042 dnl Output some configuration info for the user
2045 echo " prefix: $prefix"
2046 echo " exec_prefix: $exec_prefix"
2047 echo " libdir: $libdir"
2048 echo " includedir: $includedir"
2052 echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
2053 echo " OpenVG: $enable_openvg"
2057 if test "x$enable_osmesa" != xno; then
2058 echo " OSMesa: lib$OSMESA_LIB"
2063 if test "x$enable_dri" != xno; then
2064 # cleanup the drivers var
2065 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
2066 if test "x$DRI_DIRS" = x; then
2067 echo " DRI drivers: no"
2069 echo " DRI drivers: $dri_dirs"
2071 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
2072 echo " Shared dricore: $enable_dricore"
2075 case "x$enable_glx$enable_xlib_glx" in
2077 echo " GLX: Xlib-based"
2080 echo " GLX: DRI-based"
2081 echo " Use XCB: $enable_xcb"
2084 echo " GLX: $enable_glx"
2089 echo " GLU: $enable_glu"
2090 echo " GLw: $enable_glw (Motif: $enable_motif)"
2091 echo " glut: $enable_glut"
2095 echo " EGL: $enable_egl"
2096 if test "$enable_egl" = yes; then
2097 echo " EGL platforms: $EGL_PLATFORMS"
2100 for d in $EGL_DRIVERS_DIRS; do
2101 egl_drivers="$egl_drivers builtin:egl_$d"
2104 if test "x$HAVE_ST_EGL" = xyes; then
2105 echo " EGL drivers: ${egl_drivers} egl_gallium"
2106 echo " EGL Gallium STs:$EGL_CLIENT_APIS"
2108 echo " EGL drivers: $egl_drivers"
2113 if test "x$MESA_LLVM" = x1; then
2115 echo " llvm-config: $LLVM_CONFIG"
2116 echo " llvm-version: $LLVM_VERSION"
2122 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
2123 echo " Gallium: yes"
2124 echo " Gallium dirs: $GALLIUM_DIRS"
2125 echo " Target dirs: $GALLIUM_TARGET_DIRS"
2126 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
2127 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
2128 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
2135 echo " Shared libs: $enable_shared"
2136 echo " Static libs: $enable_static"
2138 dnl Compiler options
2139 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2140 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2141 $SED 's/^ *//;s/ */ /;s/ *$//'`
2142 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2143 $SED 's/^ *//;s/ */ /;s/ *$//'`
2144 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
2146 echo " CFLAGS: $cflags"
2147 echo " CXXFLAGS: $cxxflags"
2148 echo " Macros: $defines"
2150 echo " PYTHON2: $PYTHON2"
2153 echo " Run '${MAKE-make}' to build Mesa"