1 dnl Process this file with autoconf to create configure.
5 dnl Versioning - scrape the version from configs/default
6 m4_define([mesa_version],
7 [m4_esyscmd([${MAKE-make} -s -f bin/version.mk version | tr -d '\n' | tr -d '\r'])])
8 m4_ifval(mesa_version,,
9 [m4_fatal([Failed to get the Mesa version from `make -f bin/version.mk version`])])
11 dnl Tell the user about autoconf.html in the --help output
12 m4_divert_once([HELP_END], [
13 See docs/autoconf.html for more details on the options for Mesa.])
15 AC_INIT([Mesa],[mesa_version],
16 [https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa])
17 AC_CONFIG_AUX_DIR([bin])
19 AM_INIT_AUTOMAKE([foreign])
21 dnl http://people.gnome.org/~walters/docs/build-api.txt
22 dnl We don't support srcdir != builddir.
23 echo \#buildapi-variable-no-builddir >/dev/null
25 # Support silent build rules, requires at least automake-1.11. Disable
26 # by either passing --disable-silent-rules to configure or passing V=1
28 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
31 LT_INIT([disable-static])
33 dnl Save user CFLAGS and CXXFLAGS so one can override the default ones
35 USER_CXXFLAGS="$CXXFLAGS"
37 dnl Versions for external dependencies
38 LIBDRM_REQUIRED=2.4.24
39 LIBDRM_RADEON_REQUIRED=2.4.31
40 LIBDRM_INTEL_REQUIRED=2.4.32
41 LIBDRM_NOUVEAU_REQUIRED=0.6
42 DRI2PROTO_REQUIRED=2.6
43 GLPROTO_REQUIRED=1.4.14
44 LIBDRM_XORG_REQUIRED=2.4.24
45 LIBKMS_XORG_REQUIRED=1.0.0
51 AC_CHECK_PROGS([MAKE], [gmake make])
52 AC_CHECK_PROGS([PYTHON2], [python2 python])
55 AC_PATH_PROG([MKDEP], [makedepend])
57 if test "x$MKDEP" = "x"; then
58 AC_MSG_ERROR([makedepend is required to build Mesa])
62 AC_PATH_PROG([YACC_INST], $YACC)
63 if test ! -f "$srcdir/src/glsl/glcpp/glcpp-parse.y"; then
64 if test -z "$YACC_INST"; then
65 AC_MSG_ERROR([yacc not found - unable to compile glcpp-parse.y])
70 dnl Our fallback install-sh is a symlink to minstall. Use the existing
71 dnl configuration in that case.
73 test "x$INSTALL" = "x$ac_install_sh" && INSTALL='$(MINSTALL)'
75 dnl We need a POSIX shell for parts of the build. Assume we have one
79 # Solaris /bin/sh is too old/non-POSIX compliant
80 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
85 AC_PATH_PROG([GTESTCONFIG], [gtest-config])
86 if test "x$GTESTCONFIG" != "x"; then
87 GTEST_CFLAGS=`gtest-config --cppflags --cxxflags`
88 GTEST_LIBS=`gtest-config --ldflags --libs`
89 AC_SUBST([GTEST_CFLAGS])
90 AC_SUBST([GTEST_LIBS])
95 AM_CONDITIONAL(HAVE_GTEST, test x$HAVE_GTEST = xyes)
97 dnl clang is mostly GCC-compatible, but its version is much lower,
98 dnl so we have to check for it.
99 AC_MSG_CHECKING([if compiling with clang])
102 [AC_LANG_PROGRAM([], [[
107 [acv_mesa_CLANG=yes], [acv_mesa_CLANG=no])
109 AC_MSG_RESULT([$acv_mesa_CLANG])
111 dnl If we're using GCC, make sure that it is at least version 3.3.0. Older
112 dnl versions are explictly not supported.
113 if test "x$GCC" = xyes -a "x$acv_mesa_CLANG" = xno; then
114 AC_MSG_CHECKING([whether gcc version is sufficient])
118 GCC_VERSION=`$CC -dumpversion`
119 if test $? -eq 0; then
120 major=`echo $GCC_VERSION | cut -d. -f1`
121 minor=`echo $GCC_VERSION | cut -d. -f2`
124 if test $major -lt 3 -o $major -eq 3 -a $minor -lt 3 ; then
126 AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.])
133 MKDEP_OPTIONS=-fdepend
134 dnl Ask gcc where it's keeping its secret headers
135 if test "x$GCC" = xyes; then
136 for dir in include include-fixed; do
137 GCC_INCLUDES=`$CC -print-file-name=$dir`
138 if test "x$GCC_INCLUDES" != x && \
139 test "$GCC_INCLUDES" != "$dir" && \
140 test -d "$GCC_INCLUDES"; then
141 MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
145 AC_SUBST([MKDEP_OPTIONS])
147 dnl Make sure the pkg-config macros are defined
148 m4_ifndef([PKG_PROG_PKG_CONFIG],
149 [m4_fatal([Could not locate the pkg-config autoconf macros.
150 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
151 are in a different location, try setting the environment variable
152 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
153 PKG_PROG_PKG_CONFIG()
155 dnl LIB_DIR - library basename
156 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
159 dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
160 _SAVE_LDFLAGS="$LDFLAGS"
161 AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker])
162 AC_SUBST([EXTRA_LIB_PATH])
164 dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
165 _SAVE_CPPFLAGS="$CPPFLAGS"
166 AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers])
167 AC_SUBST([X11_INCLUDES])
174 DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS"
177 DEFINES="$DEFINES -DPTHREADS -DSVR4"
180 DEFINES="$DEFINES -DPTHREADS"
184 dnl Add flags for gcc and g++
185 if test "x$GCC" = xyes; then
186 CFLAGS="$CFLAGS -Wall -std=c99"
188 # Enable -Werror=implicit-function-declaration and
189 # -Werror=missing-prototypes, if available, or otherwise, just
190 # -Wmissing-prototypes. This is particularly useful to avoid
191 # generating a loadable driver module that has undefined symbols.
192 save_CFLAGS="$CFLAGS"
193 AC_MSG_CHECKING([whether $CC supports -Werror=missing-prototypes])
194 CFLAGS="$CFLAGS -Werror=implicit-function-declaration"
195 CFLAGS="$CFLAGS -Werror=missing-prototypes"
196 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
197 AC_MSG_RESULT([yes]),
198 [CFLAGS="$save_CFLAGS -Wmissing-prototypes";
199 AC_MSG_RESULT([no])]);
201 # Enable -fvisibility=hidden if using a gcc that supports it
202 save_CFLAGS="$CFLAGS"
203 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
204 VISIBILITY_CFLAGS="-fvisibility=hidden"
205 CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
206 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
207 [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
209 # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
212 # Work around aliasing bugs - developers should comment this out
213 CFLAGS="$CFLAGS -fno-strict-aliasing"
215 # gcc's builtin memcmp is slower than glibc's
216 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
217 CFLAGS="$CFLAGS -fno-builtin-memcmp"
219 if test "x$GXX" = xyes; then
220 CXXFLAGS="$CXXFLAGS -Wall"
222 # Enable -fvisibility=hidden if using a gcc that supports it
223 save_CXXFLAGS="$CXXFLAGS"
224 AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
225 VISIBILITY_CXXFLAGS="-fvisibility=hidden"
226 CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
228 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
229 [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
232 # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
233 CXXFLAGS=$save_CXXFLAGS
235 # Work around aliasing bugs - developers should comment this out
236 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
238 # gcc's builtin memcmp is slower than glibc's
239 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
240 CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp"
243 dnl even if the compiler appears to support it, using visibility attributes isn't
244 dnl going to do anything useful currently on cygwin apart from emit lots of warnings
248 VISIBILITY_CXXFLAGS=""
252 AC_SUBST([VISIBILITY_CFLAGS])
253 AC_SUBST([VISIBILITY_CXXFLAGS])
255 dnl These should be unnecessary, but let the user set them if they want
256 AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
257 Default is to use CFLAGS.])
258 AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
259 compiler. Default is to use CFLAGS.])
260 AC_SUBST([OPT_FLAGS])
261 AC_SUBST([ARCH_FLAGS])
264 dnl Hacks to enable 32 or 64 bit build
266 AC_ARG_ENABLE([32-bit],
267 [AS_HELP_STRING([--enable-32-bit],
268 [build 32-bit libraries @<:@default=auto@:>@])],
269 [enable_32bit="$enableval"],
272 if test "x$enable_32bit" = xyes; then
273 if test "x$GCC" = xyes; then
274 CFLAGS="$CFLAGS -m32"
275 ARCH_FLAGS="$ARCH_FLAGS -m32"
277 if test "x$GXX" = xyes; then
278 CXXFLAGS="$CXXFLAGS -m32"
281 AC_ARG_ENABLE([64-bit],
282 [AS_HELP_STRING([--enable-64-bit],
283 [build 64-bit libraries @<:@default=auto@:>@])],
284 [enable_64bit="$enableval"],
287 if test "x$enable_64bit" = xyes; then
288 if test "x$GCC" = xyes; then
289 CFLAGS="$CFLAGS -m64"
291 if test "x$GXX" = xyes; then
292 CXXFLAGS="$CXXFLAGS -m64"
296 dnl Can't have static and shared libraries, default to static if user
297 dnl explicitly requested. If both disabled, set to static since shared
298 dnl was explicitly requested.
299 case "x$enable_static$enable_shared" in
301 AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
305 AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
313 AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
314 if test "$enable_static" = yes; then
315 MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
317 AC_SUBST([MKLIB_OPTIONS])
320 dnl other compiler options
322 AC_ARG_ENABLE([debug],
323 [AS_HELP_STRING([--enable-debug],
324 [use debug compiler flags and macros @<:@default=disabled@:>@])],
325 [enable_debug="$enableval"],
328 if test "x$enable_debug" = xyes; then
329 DEFINES="$DEFINES -DDEBUG"
330 if test "x$GCC" = xyes; then
333 if test "x$GXX" = xyes; then
334 CXXFLAGS="$CXXFLAGS -g"
341 LIB_PREFIX_GLOB='lib'
342 LIB_VERSION_SEPARATOR='.'
343 if test "$enable_static" = yes; then
348 LIB_EXTENSION='dylib' ;;
350 dnl prefix can be 'cyg' or 'lib'
351 LIB_PREFIX_GLOB='???'
352 LIB_VERSION_SEPARATOR='-'
353 LIB_EXTENSION='dll' ;;
357 LIB_EXTENSION='so' ;;
362 dnl Mangled Mesa support
364 AC_ARG_ENABLE([mangling],
365 [AS_HELP_STRING([--enable-mangling],
366 [enable mangled symbols and library name @<:@default=disabled@:>@])],
367 [enable_mangling="${enableval}"],
373 if test "x${enable_mangling}" = "xyes" ; then
374 DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
377 OSMESA_LIB="MangledOSMesa"
381 AC_SUBST([OSMESA_LIB])
382 AM_CONDITIONAL(HAVE_MANGLED_GL, test $GL_LIB = MangledGL)
385 dnl potentially-infringing-but-nobody-knows-for-sure stuff
387 AC_ARG_ENABLE([texture-float],
388 [AS_HELP_STRING([--enable-texture-float],
389 [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
390 [enable_texture_float="$enableval"],
391 [enable_texture_float=no]
393 if test "x$enable_texture_float" = xyes; then
394 AC_MSG_WARN([Floating-point textures enabled.])
395 AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
396 DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
399 GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
400 GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
401 OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
402 EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
403 GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
404 GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION}
405 VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION}
406 GLAPI_LIB_NAME='lib$(GLAPI_LIB).'${LIB_EXTENSION}
408 GL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
409 GLU_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLU_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
410 OSMESA_LIB_GLOB=${LIB_PREFIX_GLOB}'$(OSMESA_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
411 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
412 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
413 GLESv1_CM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv1_CM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
414 GLESv2_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv2_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
415 VG_LIB_GLOB=${LIB_PREFIX_GLOB}'$(VG_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
416 GLAPI_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLAPI_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
418 AC_SUBST([GL_LIB_NAME])
419 AC_SUBST([GLU_LIB_NAME])
420 AC_SUBST([OSMESA_LIB_NAME])
421 AC_SUBST([EGL_LIB_NAME])
422 AC_SUBST([GLESv1_CM_LIB_NAME])
423 AC_SUBST([GLESv2_LIB_NAME])
424 AC_SUBST([VG_LIB_NAME])
425 AC_SUBST([GLAPI_LIB_NAME])
427 AC_SUBST([GL_LIB_GLOB])
428 AC_SUBST([GLU_LIB_GLOB])
429 AC_SUBST([OSMESA_LIB_GLOB])
430 AC_SUBST([EGL_LIB_GLOB])
431 AC_SUBST([GLESv1_CM_LIB_GLOB])
432 AC_SUBST([GLESv2_LIB_GLOB])
433 AC_SUBST([VG_LIB_GLOB])
434 AC_SUBST([GLAPI_LIB_GLOB])
437 dnl Arch/platform-specific settings
440 [AS_HELP_STRING([--disable-asm],
441 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
442 [enable_asm="$enableval"],
449 AC_MSG_CHECKING([whether to enable assembly])
450 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
451 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
452 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
456 AC_MSG_RESULT([no, cross compiling])
460 # check for supported arches
461 if test "x$enable_asm" = xyes; then
465 linux* | *freebsd* | dragonfly* | *netbsd*)
466 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
472 linux* | *freebsd* | dragonfly* | *netbsd*)
473 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
495 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
496 MESA_ASM_SOURCES='$(X86_SOURCES)'
497 GLAPI_ASM_SOURCES='$(X86_API)'
498 AC_MSG_RESULT([yes, x86])
501 ASM_FLAGS="-DUSE_X86_64_ASM"
502 MESA_ASM_SOURCES='$(X86-64_SOURCES)'
503 GLAPI_ASM_SOURCES='$(X86-64_API)'
504 AC_MSG_RESULT([yes, x86_64])
507 ASM_FLAGS="-DUSE_SPARC_ASM"
508 MESA_ASM_SOURCES='$(SPARC_SOURCES)'
509 GLAPI_ASM_SOURCES='$(SPARC_API)'
510 AC_MSG_RESULT([yes, sparc])
513 AC_MSG_RESULT([no, platform not supported])
517 AC_SUBST([ASM_FLAGS])
518 AC_SUBST([MESA_ASM_SOURCES])
519 AC_SUBST([GLAPI_ASM_SOURCES])
524 dnl Check to see if dlopen is in default libraries (like Solaris, which
525 dnl has it in libc), or if libdl is needed to get it.
526 AC_CHECK_FUNC([dlopen], [],
527 [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
528 AC_SUBST([DLOPEN_LIBS])
530 dnl See if posix_memalign is available
531 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
533 dnl SELinux awareness.
534 AC_ARG_ENABLE([selinux],
535 [AS_HELP_STRING([--enable-selinux],
536 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
537 [MESA_SELINUX="$enableval"],
539 if test "x$enable_selinux" = "xyes"; then
540 AC_CHECK_HEADER([selinux/selinux.h],[],
541 [AC_MSG_ERROR([SELinux headers not found])])
542 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
543 [AC_MSG_ERROR([SELinux library not found])])
544 SELINUX_LIBS="-lselinux"
545 DEFINES="$DEFINES -DMESA_SELINUX"
549 AC_ARG_ENABLE([opengl],
550 [AS_HELP_STRING([--disable-opengl],
551 [disable support for standard OpenGL API @<:@default=no@:>@])],
552 [enable_opengl="$enableval"],
554 AC_ARG_ENABLE([gles1],
555 [AS_HELP_STRING([--enable-gles1],
556 [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
557 [enable_gles1="$enableval"],
559 AC_ARG_ENABLE([gles2],
560 [AS_HELP_STRING([--enable-gles2],
561 [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
562 [enable_gles2="$enableval"],
564 AC_ARG_ENABLE([openvg],
565 [AS_HELP_STRING([--enable-openvg],
566 [enable support for OpenVG API @<:@default=no@:>@])],
567 [enable_openvg="$enableval"],
571 [AS_HELP_STRING([--enable-dri],
572 [enable DRI modules @<:@default=auto@:>@])],
573 [enable_dri="$enableval"],
576 [AS_HELP_STRING([--enable-glx],
577 [enable GLX library @<:@default=auto@:>@])],
578 [enable_glx="$enableval"],
580 AC_ARG_ENABLE([osmesa],
581 [AS_HELP_STRING([--enable-osmesa],
582 [enable OSMesa library @<:@default=auto@:>@])],
583 [enable_osmesa="$enableval"],
584 [enable_osmesa=auto])
586 [AS_HELP_STRING([--disable-egl],
587 [disable EGL library @<:@default=enabled@:>@])],
588 [enable_egl="$enableval"],
591 AC_ARG_ENABLE([xorg],
592 [AS_HELP_STRING([--enable-xorg],
593 [enable support for X.Org DDX API @<:@default=no@:>@])],
594 [enable_xorg="$enableval"],
597 [AS_HELP_STRING([--enable-xa],
598 [enable build of the XA X Acceleration API @<:@default=no@:>@])],
599 [enable_xa="$enableval"],
601 AC_ARG_ENABLE([d3d1x],
602 [AS_HELP_STRING([--enable-d3d1x],
603 [enable support for Direct3D 10 & 11 low-level API @<:@default=no@:>@])],
604 [enable_d3d1x="$enableval"],
607 [AS_HELP_STRING([--enable-gbm],
608 [enable gbm library @<:@default=auto@:>@])],
609 [enable_gbm="$enableval"],
612 AC_ARG_ENABLE([xvmc],
613 [AS_HELP_STRING([--enable-xvmc],
614 [enable xvmc library @<:@default=auto@:>@])],
615 [enable_xvmc="$enableval"],
617 AC_ARG_ENABLE([vdpau],
618 [AS_HELP_STRING([--enable-vdpau],
619 [enable vdpau library @<:@default=auto@:>@])],
620 [enable_vdpau="$enableval"],
623 [AS_HELP_STRING([--enable-va],
624 [enable va library @<:@default=auto@:>@])],
625 [enable_va="$enableval"],
628 AC_ARG_ENABLE([xlib_glx],
629 [AS_HELP_STRING([--enable-xlib-glx],
630 [make GLX library Xlib-based instead of DRI-based @<:@default=disable@:>@])],
631 [enable_xlib_glx="$enableval"],
632 [enable_xlib_glx=auto])
633 AC_ARG_ENABLE([gallium_egl],
634 [AS_HELP_STRING([--enable-gallium-egl],
635 [enable optional EGL state tracker (not required
636 for EGL support in Gallium with OpenGL and OpenGL ES)
637 @<:@default=disable@:>@])],
638 [enable_gallium_egl="$enableval"],
639 [enable_gallium_egl=no])
640 AC_ARG_ENABLE([gallium_gbm],
641 [AS_HELP_STRING([--enable-gallium-gbm],
642 [enable optional gbm state tracker (not required for
643 gbm support in Gallium)
644 @<:@default=auto@:>@])],
645 [enable_gallium_gbm="$enableval"],
646 [enable_gallium_gbm=auto])
648 # Option for Gallium drivers
649 GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
651 AC_ARG_WITH([gallium-drivers],
652 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
653 [comma delimited Gallium drivers list, e.g.
654 "i915,nouveau,r300,r600,svga,swrast"
655 @<:@default=r300,r600,swrast@:>@])],
656 [with_gallium_drivers="$withval"],
657 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
659 # Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it
660 # here so that the script doesn't choke on an unknown driver name later.
661 case "$with_gallium_drivers" in
662 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
663 no) with_gallium_drivers='' ;;
666 if test "x$enable_opengl" = xno -a \
667 "x$enable_gles1" = xno -a \
668 "x$enable_gles2" = xno -a \
669 "x$enable_openvg" = xno -a \
670 "x$enable_xorg" = xno -a \
671 "x$enable_xa" = xno -a \
672 "x$enable_d3d1x" = xno -a \
673 "x$enable_xvmc" = xno -a \
674 "x$enable_vdpau" = xno -a \
675 "x$enable_va" = xno; then
676 AC_MSG_ERROR([at least one API should be enabled])
680 if test "x$enable_opengl" = xno; then
681 API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
683 API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
685 if test "x$enable_gles1" = xyes; then
686 API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
688 if test "x$enable_gles2" = xyes; then
689 API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
691 AC_SUBST([API_DEFINES])
693 AC_ARG_ENABLE([shared-glapi],
694 [AS_HELP_STRING([--enable-shared-glapi],
695 [EXPERIMENTAL. Enable shared glapi for OpenGL @<:@default=no@:>@])],
696 [enable_shared_glapi="$enableval"],
697 [enable_shared_glapi=no])
700 if test "x$enable_shared_glapi" = xyes; then
702 # libGL will use libglapi for function lookups (IN_DRI_DRIVER means to use
704 DEFINES="$DEFINES -DIN_DRI_DRIVER"
705 SRC_DIRS="$SRC_DIRS mapi/shared-glapi"
707 AC_SUBST([SHARED_GLAPI])
708 AM_CONDITIONAL(HAVE_SHARED_GLAPI, test $SHARED_GLAPI = 1)
711 dnl Driver configuration. Options are xlib, dri and osmesa right now.
712 dnl More later: fbdev, ...
714 default_driver="xlib"
719 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
722 *freebsd* | dragonfly* | *netbsd*)
724 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
729 if test "x$enable_opengl" = xno; then
733 AC_ARG_WITH([driver],
734 [AS_HELP_STRING([--with-driver=DRIVER], [DEPRECATED])],
735 [mesa_driver="$withval"],
737 dnl Check for valid option
738 case "x$mesa_driver" in
739 xxlib|xdri|xosmesa|xno)
740 if test "x$enable_dri" != xauto -o \
741 "x$enable_glx" != xauto -o \
742 "x$enable_osmesa" != xauto -o \
743 "x$enable_xlib_glx" != xauto; then
744 AC_MSG_ERROR([--with-driver=$mesa_driver is deprecated])
748 mesa_driver="$default_driver"
751 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
755 # map $mesa_driver to APIs
756 if test "x$enable_dri" = xauto; then
757 case "x$mesa_driver" in
758 xdri) enable_dri=yes ;;
763 if test "x$enable_glx" = xauto; then
764 case "x$mesa_driver" in
765 xdri|xxlib) enable_glx=yes ;;
770 if test "x$enable_osmesa" = xauto; then
771 case "x$mesa_driver" in
772 xxlib|xosmesa) enable_osmesa=yes ;;
773 *) enable_osmesa=no ;;
777 if test "x$enable_xlib_glx" = xauto; then
778 case "x$mesa_driver" in
779 xxlib) enable_xlib_glx=yes ;;
780 *) enable_xlib_glx=no ;;
784 if test "x$enable_glx" = xno; then
788 AM_CONDITIONAL(HAVE_DRI, test x"$enable_dri" = xyes)
791 dnl Driver specific build directories
794 dnl this variable will be prepended to SRC_DIRS and is not exported
799 GALLIUM_DIRS="auxiliary drivers state_trackers"
800 GALLIUM_TARGET_DIRS=""
801 GALLIUM_WINSYS_DIRS="sw"
802 GALLIUM_DRIVERS_DIRS="galahad trace rbug noop identity"
803 GALLIUM_STATE_TRACKERS_DIRS=""
805 # build shared-glapi if enabled for OpenGL or if OpenGL ES is enabled
806 case "x$enable_shared_glapi$enable_gles1$enable_gles2" in
808 CORE_DIRS="$CORE_DIRS mapi/shared-glapi"
812 # build glapi if OpenGL is enabled
813 if test "x$enable_opengl" = xyes; then
814 CORE_DIRS="$CORE_DIRS mapi/glapi"
817 # build es1api if OpenGL ES 1.x is enabled
818 if test "x$enable_gles1" = xyes; then
819 CORE_DIRS="$CORE_DIRS mapi/es1api"
822 # build es2api if OpenGL ES 2.x is enabled
823 if test "x$enable_gles2" = xyes; then
824 CORE_DIRS="$CORE_DIRS mapi/es2api"
827 # build glsl and mesa if OpenGL or OpenGL ES is enabled
828 case "x$enable_opengl$enable_gles1$enable_gles2" in
830 CORE_DIRS="$CORE_DIRS glsl mesa"
834 case "x$enable_glx$enable_xlib_glx" in
836 DRIVER_DIRS="$DRIVER_DIRS x11"
837 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
838 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
839 GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS"
840 HAVE_WINSYS_XLIB="yes"
844 SRC_DIRS="$SRC_DIRS glx"
848 if test "x$enable_dri" = xyes; then
849 DRIVER_DIRS="$DRIVER_DIRS dri"
851 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/dri"
852 GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
856 if test "x$enable_osmesa" = xyes; then
857 # the empty space matters for osmesa... (see src/mesa/Makefile)
858 if test -n "$DRIVER_DIRS"; then
859 DRIVER_DIRS="$DRIVER_DIRS osmesa"
867 AC_SUBST([DRIVER_DIRS])
868 AC_SUBST([GALLIUM_DIRS])
869 AC_SUBST([GALLIUM_TARGET_DIRS])
870 AC_SUBST([GALLIUM_WINSYS_DIRS])
871 AC_SUBST([GALLIUM_DRIVERS_DIRS])
872 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
873 AC_SUBST([MESA_LLVM])
876 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
877 [have_libdrm=yes], [have_libdrm=no])
879 if test "x$enable_dri" = xyes; then
880 # DRI must be shared, I think
881 if test "$enable_static" = yes; then
882 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
885 # not a hard requirement as swrast does not depend on it
886 if test "x$have_libdrm" = xyes; then
887 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
892 dnl Find out if X is available. The variable have_x is set if libX11 is
893 dnl found to mimic AC_PATH_XTRA.
895 if test -n "$PKG_CONFIG"; then
896 AC_MSG_CHECKING([pkg-config files for X11 are available])
897 PKG_CHECK_EXISTS([x11],[
903 AC_MSG_RESULT([$x11_pkgconfig])
907 dnl Use the autoconf macro if no pkg-config files
908 if test "$x11_pkgconfig" = yes; then
909 PKG_CHECK_MODULES([X11], [x11])
912 test -z "$X11_CFLAGS" && X11_CFLAGS="$X_CFLAGS"
913 test -z "$X11_LIBS" && X11_LIBS="$X_LIBS -lX11"
914 AC_SUBST([X11_CFLAGS])
918 dnl Try to tell the user that the --x-* options are only used when
919 dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
920 m4_divert_once([HELP_BEGIN],
921 [These options are only used when the X libraries cannot be found by the
922 pkg-config utility.])
924 dnl We need X for xlib and dri, so bomb now if it's not found
925 if test "x$enable_glx" = xyes -a "x$no_x" = xyes; then
926 AC_MSG_ERROR([X11 development libraries needed for GLX])
929 if test "x$enable_glx" = xyes; then
930 DEFINES="$DEFINES -DUSE_XCB"
933 dnl Direct rendering or just indirect rendering
936 dnl Disable by default on GNU/Hurd
937 driglx_direct_default="no"
940 dnl Disable by default on cygwin
941 driglx_direct_default="no"
944 driglx_direct_default="yes"
947 AC_ARG_ENABLE([driglx-direct],
948 [AS_HELP_STRING([--disable-driglx-direct],
949 [enable direct rendering in GLX and EGL for DRI \
950 @<:@default=auto@:>@])],
951 [driglx_direct="$enableval"],
952 [driglx_direct="$driglx_direct_default"])
955 dnl libGL configuration per driver
957 case "x$enable_glx$enable_xlib_glx" in
960 if test "$x11_pkgconfig" = yes; then
961 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
962 GL_PC_REQ_PRIV="x11 xext"
963 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
964 GL_LIB_DEPS="$XLIBGL_LIBS"
966 # should check these...
967 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
968 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
969 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
970 GL_PC_CFLAGS="$X11_INCLUDES"
972 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread $DLOPEN_LIBS"
973 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
977 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
978 GL_PC_REQ_PRIV="glproto >= $GLPROTO_REQUIRED"
979 if test x"$driglx_direct" = xyes; then
980 if test "x$have_libdrm" != xyes; then
981 AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
983 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
984 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
987 # find the DRI deps for libGL
988 if test "$x11_pkgconfig" = yes; then
989 dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx"
991 # add xf86vidmode if available
992 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
993 if test "$HAVE_XF86VIDMODE" = yes ; then
994 dri_modules="$dri_modules xxf86vm"
997 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
998 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
999 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
1000 GL_LIB_DEPS="$DRIGL_LIBS"
1002 # should check these...
1003 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
1004 if test "x$HAVE_XF86VIDMODE" == xyes; then
1005 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
1007 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXdamage -lXfixes"
1009 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
1010 GL_PC_CFLAGS="$X11_INCLUDES"
1012 # XCB can only be used from pkg-config
1013 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
1014 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
1015 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
1016 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
1019 # Check to see if the xcb-glx library is new enough to support
1020 # GLX_ARB_create_context. This bit of hackery is necessary until XCB 1.8
1022 save_CPPFLAGS="$CPPFLAGS"
1023 save_LDFLAGS="$LDFLAGS"
1024 CPPFLAGS="$CPPFLAGS $X11_INCLUDES"
1025 LDFLAGS="$LDFLAGS $GL_LIB_DEPS"
1026 AC_CHECK_LIB(xcb-glx, xcb_glx_create_context_attribs_arb_checked,
1027 [HAVE_XCB_GLX_CREATE_CONTEXT=yes],
1028 [HAVE_XCB_GLX_CREATE_CONTEXT=no])
1029 CPPFLAGS="$save_CPPFLAGS"
1030 LDFLAGS="$save_LDFLAGS"
1032 if test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes; then
1033 X11_INCLUDES="$X11_INCLUDES -DHAVE_XCB_GLX_CREATE_CONTEXT"
1036 # need DRM libs, -lpthread, etc.
1037 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1038 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1042 # This is outside the case (above) so that it is invoked even for non-GLX
1044 AM_CONDITIONAL(HAVE_XCB_GLX_CREATE_CONTEXT,
1045 test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes)
1046 AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
1048 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1049 GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1050 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1051 GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1053 AC_SUBST([GL_LIB_DEPS])
1054 AC_SUBST([GL_PC_REQ_PRIV])
1055 AC_SUBST([GL_PC_LIB_PRIV])
1056 AC_SUBST([GL_PC_CFLAGS])
1057 AC_SUBST([DRI_PC_REQ_PRIV])
1058 AC_SUBST([GLESv1_CM_LIB_DEPS])
1059 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
1060 AC_SUBST([GLESv2_LIB_DEPS])
1061 AC_SUBST([GLESv2_PC_LIB_PRIV])
1063 GLAPI_LIB_DEPS="-lpthread $SELINUX_LIBS"
1064 AC_SUBST([GLAPI_LIB_DEPS])
1067 dnl Setup default DRI CFLAGS
1068 DRI_CFLAGS='$(CFLAGS)'
1069 DRI_CXXFLAGS='$(CXXFLAGS)'
1070 DRI_LIB_DEPS='$(TOP)/src/mesa/libmesa.a'
1071 MESA_MODULES='$(TOP)/src/mesa/libmesa.a'
1073 if test "x$enable_dri" = xyes && test "x$driglx_direct" = xyes ; then
1074 DRICORE_GLSL_LIBS='$(TOP)/$(LIB_DIR)/libglsl.so'
1075 DRICORE_LIBS='$(TOP)/$(LIB_DIR)/libdricore.so'
1076 DRICORE_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -lglsl'
1077 DRI_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore -lglsl'
1078 DRI_CFLAGS='$(CFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1079 DRI_CXXFLAGS='$(CXXFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1080 MESA_MODULES='$(DRICORE_LIBS) $(DRICORE_GLSL_LIBS)'
1082 AC_SUBST([DRICORE_LIBS])
1083 AC_SUBST([DRICORE_GLSL_LIBS])
1084 AC_SUBST([DRICORE_LIB_DEPS])
1085 AC_SUBST([DRI_CXXFLAGS])
1086 AC_SUBST([DRI_CFLAGS])
1087 AC_SUBST([MESA_MODULES])
1089 AC_SUBST([HAVE_XF86VIDMODE])
1094 case "x$enable_glx$enable_xlib_glx" in
1096 DEFINES="$DEFINES -DUSE_XSHM"
1099 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1100 if test "x$driglx_direct" = xyes; then
1101 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1110 AC_ARG_ENABLE([glx-tls],
1111 [AS_HELP_STRING([--enable-glx-tls],
1112 [enable TLS support in GLX @<:@default=disabled@:>@])],
1113 [GLX_USE_TLS="$enableval"],
1115 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
1117 AS_IF([test "x$GLX_USE_TLS" = xyes],
1118 [DEFINES="${DEFINES} -DGLX_USE_TLS -DPTHREADS"])
1123 dnl Directory for DRI drivers
1124 AC_ARG_WITH([dri-driverdir],
1125 [AS_HELP_STRING([--with-dri-driverdir=DIR],
1126 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
1127 [DRI_DRIVER_INSTALL_DIR="$withval"],
1128 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
1129 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
1130 dnl Extra search path for DRI drivers
1131 AC_ARG_WITH([dri-searchpath],
1132 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
1133 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
1134 [DRI_DRIVER_SEARCH_DIR="$withval"],
1135 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
1136 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
1137 dnl Which drivers to build - default is chosen by platform
1138 AC_ARG_WITH([dri-drivers],
1139 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
1140 [comma delimited DRI drivers list, e.g.
1141 "swrast,i965,radeon" @<:@default=auto@:>@])],
1142 [with_dri_drivers="$withval"],
1143 [with_dri_drivers=yes])
1144 if test "x$with_dri_drivers" = x; then
1148 dnl If $with_dri_drivers is yes, directories will be added through
1151 case "$with_dri_drivers" in
1154 # classic DRI drivers require FEATURE_GL to build
1155 if test "x$enable_opengl" = xyes; then
1160 # verify the requested driver directories exist
1161 dri_drivers=`IFS=', '; echo $with_dri_drivers`
1162 for driver in $dri_drivers; do
1163 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
1164 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
1166 DRI_DIRS="$dri_drivers"
1167 if test -n "$DRI_DIRS" -a "x$enable_opengl" != xyes; then
1168 AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1173 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
1174 if test "x$enable_dri" = xyes; then
1175 # Platform specific settings and drivers to build
1178 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1179 DEFINES="$DEFINES -DHAVE_ALIAS"
1183 if test "x$DRI_DIRS" = "xyes"; then
1184 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1188 # Build only the drivers for cards that exist on PowerPC.
1189 if test "x$DRI_DIRS" = "xyes"; then
1190 DRI_DIRS="r200 radeon swrast"
1194 # Build only the drivers for cards that exist on sparc
1195 if test "x$DRI_DIRS" = "xyes"; then
1196 DRI_DIRS="r200 radeon swrast"
1201 freebsd* | dragonfly* | *netbsd*)
1202 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
1203 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
1205 if test "x$DRI_DIRS" = "xyes"; then
1206 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1210 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1211 DEFINES="$DEFINES -DHAVE_ALIAS"
1214 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1217 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1218 if test "x$DRI_DIRS" = "xyes"; then
1225 if test "x$DRI_DIRS" = "xyes"; then
1226 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1229 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
1232 if test "x$enable_dri" = xyes; then
1235 AC_ARG_WITH([expat],
1236 [AS_HELP_STRING([--with-expat=DIR],
1237 [expat install directory])],[
1238 EXPAT_INCLUDES="-I$withval/include"
1239 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
1240 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
1241 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
1243 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
1245 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1246 [AC_MSG_ERROR([Expat required for DRI.])])
1250 # if we are building any dri driver other than swrast ...
1251 if test -n "$DRI_DIRS" -a x"$DRI_DIRS" != xswrast; then
1252 # ... libdrm is required
1253 if test "x$have_libdrm" != xyes; then
1254 AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
1256 # ... and build dricommon
1260 # put all the necessary libs together
1261 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
1263 AC_SUBST([DRI_DIRS])
1264 AC_SUBST([EXPAT_INCLUDES])
1265 AC_SUBST([DRI_LIB_DEPS])
1269 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1271 for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1287 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1288 HAVE_NOUVEAU_DRI=yes;
1294 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1296 for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1299 HAVE_RADEON_DRI=yes;
1312 HAVE_SWRAST_DRI=yes;
1316 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
1317 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
1318 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
1319 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
1320 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
1321 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
1322 AM_CONDITIONAL(HAVE_COMMON_DRI, test x$HAVE_COMMON_DRI = xyes)
1325 dnl OSMesa configuration
1328 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1329 AC_ARG_WITH([osmesa-bits],
1330 [AS_HELP_STRING([--with-osmesa-bits=BITS],
1331 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1332 [osmesa_bits="$withval"],
1334 if test "x$osmesa_bits" != x8; then
1335 if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then
1336 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1340 case "x$osmesa_bits" in
1342 OSMESA_LIB="${OSMESA_LIB}"
1345 OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
1346 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1349 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1353 if test "x$enable_osmesa" = xyes; then
1354 # only link libraries with osmesa if shared
1355 if test "$enable_static" = no; then
1356 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1361 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1363 AC_SUBST([OSMESA_LIB_DEPS])
1364 AC_SUBST([OSMESA_MESA_DEPS])
1365 AC_SUBST([OSMESA_PC_REQ])
1366 AC_SUBST([OSMESA_PC_LIB_PRIV])
1369 dnl gbm configuration
1371 if test "x$enable_gbm" = xauto; then
1372 case "$with_egl_platforms" in
1379 if test "x$enable_gbm" = xyes; then
1380 SRC_DIRS="$SRC_DIRS gbm"
1382 PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1383 AC_MSG_ERROR([gbm needs udev]))
1385 if test "x$enable_dri" = xyes; then
1386 GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
1387 if test "$SHARED_GLAPI" -eq 0; then
1388 AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1392 GBM_PC_REQ_PRIV="libudev"
1393 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1394 AC_SUBST([GBM_PC_REQ_PRIV])
1395 AC_SUBST([GBM_PC_LIB_PRIV])
1398 dnl EGL configuration
1402 if test "x$enable_egl" = xyes; then
1403 SRC_DIRS="$SRC_DIRS egl"
1404 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS -lpthread"
1406 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1408 if test "$enable_static" != yes; then
1409 # build egl_glx when libGL is built
1410 if test "x$enable_glx" = xyes; then
1411 HAVE_EGL_DRIVER_GLX=1
1414 PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1415 [have_libudev=yes],[have_libudev=no])
1416 if test "$have_libudev" = yes; then
1417 DEFINES="$DEFINES -DHAVE_LIBUDEV"
1419 if test "x$enable_dri" = xyes; then
1420 # build egl_dri2 when xcb-dri2 is available
1421 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes],
1422 [have_xcb_dri2=yes],[have_xcb_dri2=no])
1423 if test "$have_xcb_dri2" = yes; then
1424 HAVE_EGL_DRIVER_DRI2=1
1425 # workaround a bug in xcb-dri2 generated by xcb-proto 1.6
1427 AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [],
1428 [DEFINES="$DEFINES -DXCB_DRI2_CONNECT_DEVICE_NAME_BROKEN"])
1435 AC_SUBST([EGL_LIB_DEPS])
1438 dnl EGL Gallium configuration
1440 if test "x$enable_gallium_egl" = xyes; then
1441 if test "x$with_gallium_drivers" = x; then
1442 AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
1444 if test "x$enable_egl" = xno; then
1445 AC_MSG_ERROR([cannot enable egl_gallium without EGL])
1447 if test "x$have_libdrm" != xyes; then
1448 AC_MSG_ERROR([egl_gallium requires libdrm >= $LIBDRM_REQUIRED])
1451 GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
1452 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static"
1457 dnl gbm Gallium configuration
1459 if test "x$enable_gallium_gbm" = xauto; then
1460 case "$enable_gbm$HAVE_ST_EGL$enable_dri$with_egl_platforms" in
1462 enable_gallium_gbm=yes ;;
1464 enable_gallium_gbm=no ;;
1467 if test "x$enable_gallium_gbm" = xyes; then
1468 if test "x$with_gallium_drivers" = x; then
1469 AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
1471 if test "x$enable_gbm" = xno; then
1472 AC_MSG_ERROR([cannot enable gbm_gallium without gbm])
1474 # gbm_gallium abuses DRI_LIB_DEPS to link. Make sure it is set.
1475 if test "x$enable_dri" = xno; then
1476 AC_MSG_ERROR([gbm_gallium requires --enable-dri to build])
1479 GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS"
1480 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm"
1485 dnl X.Org DDX configuration
1487 if test "x$enable_xorg" = xyes; then
1488 PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1489 PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1490 PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1491 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1492 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1493 HAVE_XEXTPROTO_71="no")
1494 GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS"
1499 dnl XA configuration
1501 if test "x$enable_xa" = xyes; then
1504 AC_CHECK_PROG(NM, nm, "nm")
1505 if test "x$AWK" = x || test "x$GREP" = x || test "x$NM" = x; then
1506 AC_MSG_WARN([Missing one of nm, grep or awk. Disabling xa.])
1510 if test "x$enable_xa" = xyes; then
1511 GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS"
1519 dnl OpenVG configuration
1523 if test "x$enable_openvg" = xyes; then
1524 if test "x$enable_egl" = xno; then
1525 AC_MSG_ERROR([cannot enable OpenVG without EGL])
1527 if test "x$with_gallium_drivers" = x; then
1528 AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1530 if test "x$enable_gallium_egl" = xno; then
1531 AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
1534 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1535 VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS -lpthread"
1536 CORE_DIRS="$CORE_DIRS mapi/vgapi"
1537 GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1542 dnl D3D1X configuration
1545 if test "x$enable_d3d1x" = xyes; then
1546 if test "x$with_gallium_drivers" = x; then
1547 AC_MSG_ERROR([cannot enable D3D1X without Gallium])
1550 GALLIUM_STATE_TRACKERS_DIRS="d3d1x $GALLIUM_STATE_TRACKERS_DIRS"
1555 dnl Gallium G3DVL configuration
1557 AC_ARG_ENABLE([gallium-g3dvl],
1558 [AS_HELP_STRING([--enable-gallium-g3dvl],
1559 [build gallium g3dvl @<:@default=disabled@:>@])],
1560 [enable_gallium_g3dvl="$enableval"],
1561 [enable_gallium_g3dvl=no])
1562 if test "x$enable_gallium_g3dvl" = xyes; then
1563 if test "x$with_gallium_drivers" = x; then
1564 AC_MSG_ERROR([cannot enable G3DVL without Gallium])
1567 if test "x$enable_xvmc" = xauto; then
1568 PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no])
1571 if test "x$enable_vdpau" = xauto; then
1572 PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no])
1575 if test "x$enable_va" = xauto; then
1576 #don't enable vaapi state tracker even if package exists
1577 #PKG_CHECK_EXISTS([libva], [enable_vdpau=yes], [enable_vdpau=no])
1582 if test "x$enable_xvmc" = xyes; then
1583 PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6 x11-xcb xcb-dri2 >= 1.8])
1584 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xvmc"
1588 if test "x$enable_vdpau" = xyes; then
1589 PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.4.1 x11-xcb xcb-dri2 >= 1.8])
1590 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau"
1594 if test "x$enable_va" = xyes; then
1595 PKG_CHECK_MODULES([LIBVA], [libva = 0.31.1 x11-xcb xcb-dri2 >= 1.8])
1596 AC_MSG_WARN([vaapi state tracker currently unmaintained])
1597 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS va"
1602 dnl GLU configuration
1604 AC_ARG_ENABLE([glu],
1605 [AS_HELP_STRING([--disable-glu],
1606 [enable OpenGL Utility library @<:@default=enabled@:>@])],
1607 [enable_glu="$enableval"],
1610 if test "x$enable_glu" = xyes; then
1611 if test "x$enable_glx" = xno -a "x$enable_osmesa" = xno; then
1612 AC_MSG_NOTICE([Disabling GLU since there is no OpenGL driver])
1617 if test "x$enable_glu" = xyes; then
1618 SRC_DIRS="$SRC_DIRS glu"
1620 if test "x$enable_glx" = xno; then
1621 # Link libGLU to libOSMesa instead of libGL
1624 if test "$enable_static" = no; then
1625 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
1630 # If static, empty GLU_LIB_DEPS and add libs for programs to link
1632 GLU_PC_LIB_PRIV="-lm"
1633 if test "$enable_static" = no; then
1635 GLU_MESA_DEPS='-l$(GL_LIB)'
1642 if test "$enable_static" = no; then
1643 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
1645 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
1646 AC_SUBST([GLU_LIB_DEPS])
1647 AC_SUBST([GLU_MESA_DEPS])
1648 AC_SUBST([GLU_PC_REQ])
1649 AC_SUBST([GLU_PC_REQ_PRIV])
1650 AC_SUBST([GLU_PC_LIB_PRIV])
1651 AC_SUBST([GLU_PC_CFLAGS])
1653 AC_SUBST([PROGRAM_DIRS])
1656 dnl Gallium configuration
1658 if test "x$with_gallium_drivers" != x; then
1659 SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
1662 AC_SUBST([LLVM_CFLAGS])
1663 AC_SUBST([LLVM_LIBS])
1664 AC_SUBST([LLVM_LDFLAGS])
1665 AC_SUBST([LLVM_VERSION])
1667 case "x$enable_opengl$enable_gles1$enable_gles2" in
1669 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1673 AC_SUBST([VG_LIB_DEPS])
1674 AC_SUBST([EGL_CLIENT_APIS])
1676 AC_ARG_WITH([egl-platforms],
1677 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1678 [comma delimited native platforms libEGL supports, e.g.
1679 "x11,drm" @<:@default=auto@:>@])],
1680 [with_egl_platforms="$withval"],
1681 [if test "x$enable_egl" = xyes; then
1682 with_egl_platforms="x11"
1684 with_egl_platforms=""
1689 if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
1690 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1693 # verify the requested driver directories exist
1694 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1695 for plat in $egl_platforms; do
1696 test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \
1697 AC_MSG_ERROR([EGL platform '$plat' does not exist])
1698 if test "$plat" = "fbdev"; then
1699 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev"
1701 if test "$plat" = "null"; then
1702 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
1704 if test "$plat" = "wayland"; then
1705 PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-server],, \
1706 [AC_MSG_ERROR([cannot find libwayland-client])])
1707 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
1709 m4_ifdef([WAYLAND_SCANNER_RULES],
1710 [WAYLAND_SCANNER_RULES(['$(top_srcdir)/src/egl/wayland/wayland-drm/protocol'])])
1712 if test "$plat" = "drm" && test "x$enable_gbm" = "xno"; then
1713 AC_MSG_ERROR([EGL platform drm needs gbm])
1715 case "$plat$have_libudev" in
1717 AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;;
1721 # libEGL wants to default to the first platform specified in
1722 # ./configure. parse that here.
1723 if test "x$egl_platforms" != "x"; then
1724 FIRST_PLATFORM_CAPS=`echo $egl_platforms | sed 's| .*||' | tr 'a-z' 'A-Z'`
1725 EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
1727 EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
1730 EGL_PLATFORMS="$egl_platforms"
1732 AM_CONDITIONAL(HAVE_EGL_PLATFORM_X11, echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1)
1733 AM_CONDITIONAL(HAVE_EGL_PLATFORM_WAYLAND, echo "$egl_platforms" | grep 'wayland' >/dev/null 2>&1)
1734 AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep 'drm' >/dev/null 2>&1)
1735 AM_CONDITIONAL(HAVE_EGL_PLATFORM_FBDEV, echo "$egl_platforms" | grep 'fbdev' >/dev/null 2>&1)
1736 AM_CONDITIONAL(HAVE_EGL_PLATFORM_NULL, echo "$egl_platforms" | grep 'null' >/dev/null 2>&1)
1738 AM_CONDITIONAL(HAVE_EGL_DRIVER_DRI2, test "x$HAVE_EGL_DRIVER_DRI2" != "x")
1739 AM_CONDITIONAL(HAVE_EGL_DRIVER_GLX, test "x$HAVE_EGL_DRIVER_GLX" != "x")
1741 AC_SUBST([EGL_NATIVE_PLATFORM])
1742 AC_SUBST([EGL_PLATFORMS])
1743 AC_SUBST([EGL_CFLAGS])
1745 AC_ARG_WITH([egl-driver-dir],
1746 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1747 [directory for EGL drivers [[default=${libdir}/egl]]])],
1748 [EGL_DRIVER_INSTALL_DIR="$withval"],
1749 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1750 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1752 AC_ARG_WITH([xorg-driver-dir],
1753 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1754 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1755 [XORG_DRIVER_INSTALL_DIR="$withval"],
1756 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1757 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1759 AC_ARG_WITH([max-width],
1760 [AS_HELP_STRING([--with-max-width=N],
1761 [Maximum framebuffer width (4096)])],
1762 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1763 AS_IF([test "${withval}" -gt "4096"],
1764 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1766 AC_ARG_WITH([max-height],
1767 [AS_HELP_STRING([--with-max-height=N],
1768 [Maximum framebuffer height (4096)])],
1769 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1770 AS_IF([test "${withval}" -gt "4096"],
1771 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1777 AC_ARG_ENABLE([gallium-llvm],
1778 [AS_HELP_STRING([--enable-gallium-llvm],
1779 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1780 [enable_gallium_llvm="$enableval"],
1781 [enable_gallium_llvm=auto])
1783 AC_ARG_WITH([llvm-shared-libs],
1784 [AS_HELP_STRING([--with-llvm-shared-libs],
1785 [link with LLVM shared libraries @<:@default=disabled@:>@])],
1786 [with_llvm_shared_libs=yes],
1787 [with_llvm_shared_libs=no])
1789 if test "x$with_gallium_drivers" = x; then
1790 enable_gallium_llvm=no
1792 if test "x$enable_gallium_llvm" = xauto; then
1794 i*86|x86_64) enable_gallium_llvm=yes;;
1797 if test "x$enable_gallium_llvm" = xyes; then
1798 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1800 if test "x$LLVM_CONFIG" != xno; then
1801 LLVM_VERSION=`$LLVM_CONFIG --version | sed 's/svn.*//g'`
1802 LLVM_CFLAGS=`$LLVM_CONFIG --cppflags|sed -e 's/-DNDEBUG\>//g' -e 's/-pedantic//g'`
1803 if test "x$with_llvm_shared_libs" = xyes; then
1804 dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
1805 LLVM_LIBS="-lLLVM-`$LLVM_CONFIG --version`"
1807 LLVM_LIBS="`$LLVM_CONFIG --libs engine bitwriter`"
1809 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1810 DEFINES="$DEFINES -D__STDC_CONSTANT_MACROS"
1819 dnl Directory for VDPAU libs
1820 AC_ARG_WITH([vdpau-libdir],
1821 [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1822 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1823 [VDPAU_LIB_INSTALL_DIR="$withval"],
1824 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1825 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
1827 dnl Directory for VA libs
1828 AC_ARG_WITH([va-libdir],
1829 [AS_HELP_STRING([--with-va-libdir=DIR],
1830 [directory for the VA libraries @<:@default=${libdir}/va@:>@])],
1831 [VA_LIB_INSTALL_DIR="$withval"],
1832 [VA_LIB_INSTALL_DIR='${libdir}/va'])
1833 AC_SUBST([VA_LIB_INSTALL_DIR])
1836 dnl Gallium helper functions
1838 gallium_check_st() {
1839 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes ||
1840 test "x$HAVE_ST_XA" = xyes || test "x$HAVE_ST_XVMC" = xyes ||
1841 test "x$HAVE_ST_VDPAU" = xyes || test "x$HAVE_ST_VA" = xyes; then
1842 if test "x$have_libdrm" != xyes; then
1843 AC_MSG_ERROR([DRI or Xorg DDX requires libdrm >= $LIBDRM_REQUIRED])
1845 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1847 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1848 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1850 if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
1851 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1853 if test "x$HAVE_ST_XA" = xyes && test "x$4" != x; then
1854 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
1856 if test "x$HAVE_ST_XVMC" = xyes && test "x$5" != x; then
1857 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5"
1859 if test "x$HAVE_ST_VDPAU" = xyes && test "x$6" != x; then
1860 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6"
1862 if test "x$HAVE_ST_VA" = xyes && test "x$7" != x; then
1863 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $7"
1867 gallium_require_llvm() {
1868 if test "x$MESA_LLVM" = x0; then
1870 i*86|x86_64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1876 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
1877 if test "x$with_gallium_drivers" != x; then
1878 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1879 for driver in $gallium_drivers; do
1882 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
1883 gallium_check_st "svga/drm" "dri-vmwgfx" "" "xa-vmwgfx"
1886 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1887 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe"
1888 if test "x$MESA_LLVM" = x1; then
1889 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1891 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1892 gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1895 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1896 gallium_require_llvm "Gallium R300"
1897 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1898 gallium_check_st "radeon/drm" "dri-r300" "xorg-r300" "" "xvmc-r300" "vdpau-r300" "va-r300"
1901 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1902 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1903 gallium_check_st "radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600" "va-r600"
1906 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1907 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50 nvc0"
1908 gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau" "" "xvmc-nouveau" "vdpau-nouveau"
1911 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe"
1912 if test "x$MESA_LLVM" = x1; then
1913 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1916 if test "x$HAVE_ST_DRI" = xyes; then
1917 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1919 if test "x$HAVE_ST_VDPAU" = xyes; then
1920 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS vdpau-softpipe"
1922 if test "x$HAVE_ST_XVMC" = xyes; then
1923 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS xvmc-softpipe"
1925 if test "x$HAVE_ST_VA" = xyes; then
1926 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS va-softpipe"
1928 if test "x$HAVE_ST_VDPAU" = xyes ||
1929 test "x$HAVE_ST_XVMC" = xyes ||
1930 test "x$HAVE_ST_VA" = xyes; then
1931 if test "x$HAVE_WINSYS_XLIB" != xyes; then
1932 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
1937 AC_MSG_ERROR([Unknown Gallium driver: $driver])
1943 dnl Tell Automake which drivers to build
1944 for driver in $GALLIUM_DRIVERS_DIRS; do
1947 HAVE_GALAHAD_GALLIUM=yes;
1950 HAVE_IDENTITY_GALLIUM=yes;
1953 HAVE_NOOP_GALLIUM=yes;
1956 GALLIUM_MAKE_DIRS="$GALLIUM_MAKE_DIRS $driver"
1961 AM_CONDITIONAL(HAVE_GALAHAD_GALLIUM, test x$HAVE_GALAHAD_GALLIUM = xyes)
1962 AM_CONDITIONAL(HAVE_IDENTITY_GALLIUM, test x$HAVE_IDENTITY_GALLIUM = xyes)
1963 AM_CONDITIONAL(HAVE_NOOP_GALLIUM, test x$HAVE_NOOP_GALLIUM = xyes)
1964 AC_SUBST([GALLIUM_MAKE_DIRS])
1966 dnl prepend CORE_DIRS to SRC_DIRS
1967 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
1969 dnl Restore LDFLAGS and CPPFLAGS
1970 LDFLAGS="$_SAVE_LDFLAGS"
1971 CPPFLAGS="$_SAVE_CPPFLAGS"
1973 dnl Add user CFLAGS and CXXFLAGS
1974 CFLAGS="$CFLAGS $USER_CFLAGS"
1975 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
1977 dnl Substitute the config
1978 AC_CONFIG_FILES([configs/autoconf
1979 src/gallium/drivers/Makefile
1980 src/gallium/drivers/r300/Makefile
1983 src/egl/drivers/Makefile
1984 src/egl/drivers/dri2/Makefile
1985 src/egl/drivers/glx/Makefile
1986 src/egl/main/Makefile
1988 src/egl/wayland/Makefile
1989 src/egl/wayland/wayland-egl/Makefile
1990 src/egl/wayland/wayland-egl/wayland-egl.pc
1991 src/egl/wayland/wayland-drm/Makefile
1993 src/mapi/shared-glapi/Makefile
1994 src/mesa/drivers/dri/dri.pc
1995 src/mesa/drivers/dri/Makefile
1996 src/mesa/drivers/dri/common/Makefile
1997 src/mesa/drivers/dri/i915/Makefile
1998 src/mesa/drivers/dri/i965/Makefile
1999 src/mesa/drivers/dri/nouveau/Makefile
2000 src/mesa/drivers/dri/r200/Makefile
2001 src/mesa/drivers/dri/radeon/Makefile
2002 src/mesa/drivers/dri/swrast/Makefile
2004 tests/glx/Makefile])
2006 dnl Replace the configs/current symlink
2007 AC_CONFIG_COMMANDS([configs],[
2008 if test -f configs/current || test -L configs/current; then
2009 rm -f configs/current
2011 ln -s autoconf configs/current
2014 dnl Sort the dirs alphabetically
2015 GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2016 GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2017 GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2018 GALLIUM_MAKE_DIRS=`echo $GALLIUM_MAKE_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2019 GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2024 dnl Output some configuration info for the user
2027 echo " prefix: $prefix"
2028 echo " exec_prefix: $exec_prefix"
2029 echo " libdir: $libdir"
2030 echo " includedir: $includedir"
2034 echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
2035 echo " OpenVG: $enable_openvg"
2039 if test "x$enable_osmesa" != xno; then
2040 echo " OSMesa: lib$OSMESA_LIB"
2045 if test "x$enable_dri" != xno; then
2046 # cleanup the drivers var
2047 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
2048 if test "x$DRI_DIRS" = x; then
2049 echo " DRI drivers: no"
2051 echo " DRI drivers: $dri_dirs"
2053 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
2056 case "x$enable_glx$enable_xlib_glx" in
2058 echo " GLX: Xlib-based"
2061 echo " GLX: DRI-based"
2064 echo " GLX: $enable_glx"
2069 echo " GLU: $enable_glu"
2073 echo " EGL: $enable_egl"
2074 if test "$enable_egl" = yes; then
2075 echo " EGL platforms: $EGL_PLATFORMS"
2078 if test "x$HAVE_EGL_DRIVER_GLX" != "x"; then
2079 egl_drivers="$egl_drivers builtin:egl_glx"
2081 if test "x$HAVE_EGL_DRIVER_DRI2" != "x"; then
2082 egl_drivers="$egl_drivers builtin:egl_dri2"
2085 if test "x$HAVE_ST_EGL" = xyes; then
2086 echo " EGL drivers: ${egl_drivers} egl_gallium"
2087 echo " EGL Gallium STs:$EGL_CLIENT_APIS"
2089 echo " EGL drivers: $egl_drivers"
2094 if test "x$MESA_LLVM" = x1; then
2096 echo " llvm-config: $LLVM_CONFIG"
2097 echo " llvm-version: $LLVM_VERSION"
2103 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
2104 echo " Gallium: yes"
2105 echo " Gallium dirs: $GALLIUM_DIRS"
2106 echo " Target dirs: $GALLIUM_TARGET_DIRS"
2107 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
2108 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
2109 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
2117 echo " Shared libs: $enable_shared"
2118 echo " Static libs: $enable_static"
2120 dnl Compiler options
2121 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2122 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2123 $SED 's/^ *//;s/ */ /;s/ *$//'`
2124 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2125 $SED 's/^ *//;s/ */ /;s/ *$//'`
2126 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
2128 echo " CFLAGS: $cflags"
2129 echo " CXXFLAGS: $cxxflags"
2130 echo " Macros: $defines"
2132 echo " PYTHON2: $PYTHON2"
2135 echo " Run '${MAKE-make}' to build Mesa"