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 dnl clang is mostly GCC-compatible, but its version is much lower,
86 dnl so we have to check for it.
87 AC_MSG_CHECKING([if compiling with clang])
90 [AC_LANG_PROGRAM([], [[
95 [acv_mesa_CLANG=yes], [acv_mesa_CLANG=no])
97 AC_MSG_RESULT([$acv_mesa_CLANG])
99 dnl If we're using GCC, make sure that it is at least version 3.3.0. Older
100 dnl versions are explictly not supported.
101 if test "x$GCC" = xyes -a "x$acv_mesa_CLANG" = xno; then
102 AC_MSG_CHECKING([whether gcc version is sufficient])
106 GCC_VERSION=`$CC -dumpversion`
107 if test $? -eq 0; then
108 major=`echo $GCC_VERSION | cut -d. -f1`
109 minor=`echo $GCC_VERSION | cut -d. -f2`
112 if test $major -lt 3 -o $major -eq 3 -a $minor -lt 3 ; then
114 AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.])
121 MKDEP_OPTIONS=-fdepend
122 dnl Ask gcc where it's keeping its secret headers
123 if test "x$GCC" = xyes; then
124 for dir in include include-fixed; do
125 GCC_INCLUDES=`$CC -print-file-name=$dir`
126 if test "x$GCC_INCLUDES" != x && \
127 test "$GCC_INCLUDES" != "$dir" && \
128 test -d "$GCC_INCLUDES"; then
129 MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
133 AC_SUBST([MKDEP_OPTIONS])
135 dnl Make sure the pkg-config macros are defined
136 m4_ifndef([PKG_PROG_PKG_CONFIG],
137 [m4_fatal([Could not locate the pkg-config autoconf macros.
138 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
139 are in a different location, try setting the environment variable
140 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
141 PKG_PROG_PKG_CONFIG()
143 dnl LIB_DIR - library basename
144 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
147 dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
148 _SAVE_LDFLAGS="$LDFLAGS"
149 AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker])
150 AC_SUBST([EXTRA_LIB_PATH])
152 dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
153 _SAVE_CPPFLAGS="$CPPFLAGS"
154 AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers])
155 AC_SUBST([X11_INCLUDES])
162 DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS"
165 DEFINES="$DEFINES -DPTHREADS -DSVR4"
168 DEFINES="$DEFINES -DPTHREADS"
172 dnl Add flags for gcc and g++
173 if test "x$GCC" = xyes; then
174 CFLAGS="$CFLAGS -Wall -std=c99"
176 # Enable -Werror=implicit-function-declaration and
177 # -Werror=missing-prototypes, if available, or otherwise, just
178 # -Wmissing-prototypes. This is particularly useful to avoid
179 # generating a loadable driver module that has undefined symbols.
180 save_CFLAGS="$CFLAGS"
181 AC_MSG_CHECKING([whether $CC supports -Werror=missing-prototypes])
182 CFLAGS="$CFLAGS -Werror=implicit-function-declaration"
183 CFLAGS="$CFLAGS -Werror=missing-prototypes"
184 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
185 AC_MSG_RESULT([yes]),
186 [CFLAGS="$save_CFLAGS -Wmissing-prototypes";
187 AC_MSG_RESULT([no])]);
189 # Enable -fvisibility=hidden if using a gcc that supports it
190 save_CFLAGS="$CFLAGS"
191 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
192 VISIBILITY_CFLAGS="-fvisibility=hidden"
193 CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
194 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
195 [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
197 # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
200 # Work around aliasing bugs - developers should comment this out
201 CFLAGS="$CFLAGS -fno-strict-aliasing"
203 # gcc's builtin memcmp is slower than glibc's
204 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
205 CFLAGS="$CFLAGS -fno-builtin-memcmp"
207 if test "x$GXX" = xyes; then
208 CXXFLAGS="$CXXFLAGS -Wall"
210 # Enable -fvisibility=hidden if using a gcc that supports it
211 save_CXXFLAGS="$CXXFLAGS"
212 AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
213 VISIBILITY_CXXFLAGS="-fvisibility=hidden"
214 CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
216 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
217 [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
220 # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
221 CXXFLAGS=$save_CXXFLAGS
223 # Work around aliasing bugs - developers should comment this out
224 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
226 # gcc's builtin memcmp is slower than glibc's
227 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
228 CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp"
231 dnl even if the compiler appears to support it, using visibility attributes isn't
232 dnl going to do anything useful currently on cygwin apart from emit lots of warnings
236 VISIBILITY_CXXFLAGS=""
240 AC_SUBST([VISIBILITY_CFLAGS])
241 AC_SUBST([VISIBILITY_CXXFLAGS])
243 dnl These should be unnecessary, but let the user set them if they want
244 AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
245 Default is to use CFLAGS.])
246 AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
247 compiler. Default is to use CFLAGS.])
248 AC_SUBST([OPT_FLAGS])
249 AC_SUBST([ARCH_FLAGS])
252 dnl Hacks to enable 32 or 64 bit build
254 AC_ARG_ENABLE([32-bit],
255 [AS_HELP_STRING([--enable-32-bit],
256 [build 32-bit libraries @<:@default=auto@:>@])],
257 [enable_32bit="$enableval"],
260 if test "x$enable_32bit" = xyes; then
261 if test "x$GCC" = xyes; then
262 CFLAGS="$CFLAGS -m32"
263 ARCH_FLAGS="$ARCH_FLAGS -m32"
265 if test "x$GXX" = xyes; then
266 CXXFLAGS="$CXXFLAGS -m32"
269 AC_ARG_ENABLE([64-bit],
270 [AS_HELP_STRING([--enable-64-bit],
271 [build 64-bit libraries @<:@default=auto@:>@])],
272 [enable_64bit="$enableval"],
275 if test "x$enable_64bit" = xyes; then
276 if test "x$GCC" = xyes; then
277 CFLAGS="$CFLAGS -m64"
279 if test "x$GXX" = xyes; then
280 CXXFLAGS="$CXXFLAGS -m64"
284 dnl Can't have static and shared libraries, default to static if user
285 dnl explicitly requested. If both disabled, set to static since shared
286 dnl was explicitly requested.
287 case "x$enable_static$enable_shared" in
289 AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
293 AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
301 AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
302 if test "$enable_static" = yes; then
303 MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
305 AC_SUBST([MKLIB_OPTIONS])
308 dnl other compiler options
310 AC_ARG_ENABLE([debug],
311 [AS_HELP_STRING([--enable-debug],
312 [use debug compiler flags and macros @<:@default=disabled@:>@])],
313 [enable_debug="$enableval"],
316 if test "x$enable_debug" = xyes; then
317 DEFINES="$DEFINES -DDEBUG"
318 if test "x$GCC" = xyes; then
321 if test "x$GXX" = xyes; then
322 CXXFLAGS="$CXXFLAGS -g"
329 LIB_PREFIX_GLOB='lib'
330 LIB_VERSION_SEPARATOR='.'
331 if test "$enable_static" = yes; then
336 LIB_EXTENSION='dylib' ;;
338 dnl prefix can be 'cyg' or 'lib'
339 LIB_PREFIX_GLOB='???'
340 LIB_VERSION_SEPARATOR='-'
341 LIB_EXTENSION='dll' ;;
345 LIB_EXTENSION='so' ;;
350 dnl Mangled Mesa support
352 AC_ARG_ENABLE([mangling],
353 [AS_HELP_STRING([--enable-mangling],
354 [enable mangled symbols and library name @<:@default=disabled@:>@])],
355 [enable_mangling="${enableval}"],
361 if test "x${enable_mangling}" = "xyes" ; then
362 DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
365 OSMESA_LIB="MangledOSMesa"
369 AC_SUBST([OSMESA_LIB])
370 AM_CONDITIONAL(HAVE_MANGLED_GL, test $GL_LIB = MangledGL)
373 dnl potentially-infringing-but-nobody-knows-for-sure stuff
375 AC_ARG_ENABLE([texture-float],
376 [AS_HELP_STRING([--enable-texture-float],
377 [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
378 [enable_texture_float="$enableval"],
379 [enable_texture_float=no]
381 if test "x$enable_texture_float" = xyes; then
382 AC_MSG_WARN([Floating-point textures enabled.])
383 AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
384 DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
387 GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
388 GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
389 OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
390 EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
391 GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
392 GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION}
393 VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION}
394 GLAPI_LIB_NAME='lib$(GLAPI_LIB).'${LIB_EXTENSION}
396 GL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
397 GLU_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLU_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
398 OSMESA_LIB_GLOB=${LIB_PREFIX_GLOB}'$(OSMESA_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
399 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
400 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
401 GLESv1_CM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv1_CM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
402 GLESv2_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv2_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
403 VG_LIB_GLOB=${LIB_PREFIX_GLOB}'$(VG_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
404 GLAPI_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLAPI_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
406 AC_SUBST([GL_LIB_NAME])
407 AC_SUBST([GLU_LIB_NAME])
408 AC_SUBST([OSMESA_LIB_NAME])
409 AC_SUBST([EGL_LIB_NAME])
410 AC_SUBST([GLESv1_CM_LIB_NAME])
411 AC_SUBST([GLESv2_LIB_NAME])
412 AC_SUBST([VG_LIB_NAME])
413 AC_SUBST([GLAPI_LIB_NAME])
415 AC_SUBST([GL_LIB_GLOB])
416 AC_SUBST([GLU_LIB_GLOB])
417 AC_SUBST([OSMESA_LIB_GLOB])
418 AC_SUBST([EGL_LIB_GLOB])
419 AC_SUBST([GLESv1_CM_LIB_GLOB])
420 AC_SUBST([GLESv2_LIB_GLOB])
421 AC_SUBST([VG_LIB_GLOB])
422 AC_SUBST([GLAPI_LIB_GLOB])
425 dnl Arch/platform-specific settings
428 [AS_HELP_STRING([--disable-asm],
429 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
430 [enable_asm="$enableval"],
437 AC_MSG_CHECKING([whether to enable assembly])
438 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
439 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
440 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
444 AC_MSG_RESULT([no, cross compiling])
448 # check for supported arches
449 if test "x$enable_asm" = xyes; then
453 linux* | *freebsd* | dragonfly* | *netbsd*)
454 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
460 linux* | *freebsd* | dragonfly* | *netbsd*)
461 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
483 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
484 MESA_ASM_SOURCES='$(X86_SOURCES)'
485 GLAPI_ASM_SOURCES='$(X86_API)'
486 AC_MSG_RESULT([yes, x86])
489 ASM_FLAGS="-DUSE_X86_64_ASM"
490 MESA_ASM_SOURCES='$(X86-64_SOURCES)'
491 GLAPI_ASM_SOURCES='$(X86-64_API)'
492 AC_MSG_RESULT([yes, x86_64])
495 ASM_FLAGS="-DUSE_SPARC_ASM"
496 MESA_ASM_SOURCES='$(SPARC_SOURCES)'
497 GLAPI_ASM_SOURCES='$(SPARC_API)'
498 AC_MSG_RESULT([yes, sparc])
501 AC_MSG_RESULT([no, platform not supported])
505 AC_SUBST([ASM_FLAGS])
506 AC_SUBST([MESA_ASM_SOURCES])
507 AC_SUBST([GLAPI_ASM_SOURCES])
512 dnl Check to see if dlopen is in default libraries (like Solaris, which
513 dnl has it in libc), or if libdl is needed to get it.
514 AC_CHECK_FUNC([dlopen], [],
515 [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
516 AC_SUBST([DLOPEN_LIBS])
518 dnl See if posix_memalign is available
519 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
521 dnl SELinux awareness.
522 AC_ARG_ENABLE([selinux],
523 [AS_HELP_STRING([--enable-selinux],
524 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
525 [MESA_SELINUX="$enableval"],
527 if test "x$enable_selinux" = "xyes"; then
528 AC_CHECK_HEADER([selinux/selinux.h],[],
529 [AC_MSG_ERROR([SELinux headers not found])])
530 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
531 [AC_MSG_ERROR([SELinux library not found])])
532 SELINUX_LIBS="-lselinux"
533 DEFINES="$DEFINES -DMESA_SELINUX"
537 AC_ARG_ENABLE([opengl],
538 [AS_HELP_STRING([--disable-opengl],
539 [disable support for standard OpenGL API @<:@default=no@:>@])],
540 [enable_opengl="$enableval"],
542 AC_ARG_ENABLE([gles1],
543 [AS_HELP_STRING([--enable-gles1],
544 [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
545 [enable_gles1="$enableval"],
547 AC_ARG_ENABLE([gles2],
548 [AS_HELP_STRING([--enable-gles2],
549 [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
550 [enable_gles2="$enableval"],
552 AC_ARG_ENABLE([openvg],
553 [AS_HELP_STRING([--enable-openvg],
554 [enable support for OpenVG API @<:@default=no@:>@])],
555 [enable_openvg="$enableval"],
559 [AS_HELP_STRING([--enable-dri],
560 [enable DRI modules @<:@default=auto@:>@])],
561 [enable_dri="$enableval"],
564 [AS_HELP_STRING([--enable-glx],
565 [enable GLX library @<:@default=auto@:>@])],
566 [enable_glx="$enableval"],
568 AC_ARG_ENABLE([osmesa],
569 [AS_HELP_STRING([--enable-osmesa],
570 [enable OSMesa library @<:@default=auto@:>@])],
571 [enable_osmesa="$enableval"],
572 [enable_osmesa=auto])
574 [AS_HELP_STRING([--disable-egl],
575 [disable EGL library @<:@default=enabled@:>@])],
576 [enable_egl="$enableval"],
579 AC_ARG_ENABLE([xorg],
580 [AS_HELP_STRING([--enable-xorg],
581 [enable support for X.Org DDX API @<:@default=no@:>@])],
582 [enable_xorg="$enableval"],
585 [AS_HELP_STRING([--enable-xa],
586 [enable build of the XA X Acceleration API @<:@default=no@:>@])],
587 [enable_xa="$enableval"],
589 AC_ARG_ENABLE([d3d1x],
590 [AS_HELP_STRING([--enable-d3d1x],
591 [enable support for Direct3D 10 & 11 low-level API @<:@default=no@:>@])],
592 [enable_d3d1x="$enableval"],
595 [AS_HELP_STRING([--enable-gbm],
596 [enable gbm library @<:@default=auto@:>@])],
597 [enable_gbm="$enableval"],
600 AC_ARG_ENABLE([xvmc],
601 [AS_HELP_STRING([--enable-xvmc],
602 [enable xvmc library @<:@default=auto@:>@])],
603 [enable_xvmc="$enableval"],
605 AC_ARG_ENABLE([vdpau],
606 [AS_HELP_STRING([--enable-vdpau],
607 [enable vdpau library @<:@default=auto@:>@])],
608 [enable_vdpau="$enableval"],
611 [AS_HELP_STRING([--enable-va],
612 [enable va library @<:@default=auto@:>@])],
613 [enable_va="$enableval"],
616 AC_ARG_ENABLE([xlib_glx],
617 [AS_HELP_STRING([--enable-xlib-glx],
618 [make GLX library Xlib-based instead of DRI-based @<:@default=disable@:>@])],
619 [enable_xlib_glx="$enableval"],
620 [enable_xlib_glx=auto])
621 AC_ARG_ENABLE([gallium_egl],
622 [AS_HELP_STRING([--enable-gallium-egl],
623 [enable optional EGL state tracker (not required
624 for EGL support in Gallium with OpenGL and OpenGL ES)
625 @<:@default=disable@:>@])],
626 [enable_gallium_egl="$enableval"],
627 [enable_gallium_egl=no])
628 AC_ARG_ENABLE([gallium_gbm],
629 [AS_HELP_STRING([--enable-gallium-gbm],
630 [enable optional gbm state tracker (not required for
631 gbm support in Gallium)
632 @<:@default=auto@:>@])],
633 [enable_gallium_gbm="$enableval"],
634 [enable_gallium_gbm=auto])
636 # Option for Gallium drivers
637 GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
639 AC_ARG_WITH([gallium-drivers],
640 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
641 [comma delimited Gallium drivers list, e.g.
642 "i915,nouveau,r300,r600,svga,swrast"
643 @<:@default=r300,r600,swrast@:>@])],
644 [with_gallium_drivers="$withval"],
645 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
647 # Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it
648 # here so that the script doesn't choke on an unknown driver name later.
649 case "$with_gallium_drivers" in
650 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
651 no) with_gallium_drivers='' ;;
654 if test "x$enable_opengl" = xno -a \
655 "x$enable_gles1" = xno -a \
656 "x$enable_gles2" = xno -a \
657 "x$enable_openvg" = xno -a \
658 "x$enable_xorg" = xno -a \
659 "x$enable_xa" = xno -a \
660 "x$enable_d3d1x" = xno -a \
661 "x$enable_xvmc" = xno -a \
662 "x$enable_vdpau" = xno -a \
663 "x$enable_va" = xno; then
664 AC_MSG_ERROR([at least one API should be enabled])
668 if test "x$enable_opengl" = xno; then
669 API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
671 API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
673 if test "x$enable_gles1" = xyes; then
674 API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
676 if test "x$enable_gles2" = xyes; then
677 API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
679 AC_SUBST([API_DEFINES])
681 AC_ARG_ENABLE([shared-glapi],
682 [AS_HELP_STRING([--enable-shared-glapi],
683 [EXPERIMENTAL. Enable shared glapi for OpenGL @<:@default=no@:>@])],
684 [enable_shared_glapi="$enableval"],
685 [enable_shared_glapi=no])
688 if test "x$enable_shared_glapi" = xyes; then
690 # libGL will use libglapi for function lookups (IN_DRI_DRIVER means to use
692 DEFINES="$DEFINES -DIN_DRI_DRIVER"
693 SRC_DIRS="$SRC_DIRS mapi/shared-glapi"
695 AC_SUBST([SHARED_GLAPI])
696 AM_CONDITIONAL(HAVE_SHARED_GLAPI, test $SHARED_GLAPI = 1)
699 dnl Driver configuration. Options are xlib, dri and osmesa right now.
700 dnl More later: fbdev, ...
702 default_driver="xlib"
707 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
710 *freebsd* | dragonfly* | *netbsd*)
712 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
717 if test "x$enable_opengl" = xno; then
721 AC_ARG_WITH([driver],
722 [AS_HELP_STRING([--with-driver=DRIVER], [DEPRECATED])],
723 [mesa_driver="$withval"],
725 dnl Check for valid option
726 case "x$mesa_driver" in
727 xxlib|xdri|xosmesa|xno)
728 if test "x$enable_dri" != xauto -o \
729 "x$enable_glx" != xauto -o \
730 "x$enable_osmesa" != xauto -o \
731 "x$enable_xlib_glx" != xauto; then
732 AC_MSG_ERROR([--with-driver=$mesa_driver is deprecated])
736 mesa_driver="$default_driver"
739 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
743 # map $mesa_driver to APIs
744 if test "x$enable_dri" = xauto; then
745 case "x$mesa_driver" in
746 xdri) enable_dri=yes ;;
751 if test "x$enable_glx" = xauto; then
752 case "x$mesa_driver" in
753 xdri|xxlib) enable_glx=yes ;;
758 if test "x$enable_osmesa" = xauto; then
759 case "x$mesa_driver" in
760 xxlib|xosmesa) enable_osmesa=yes ;;
761 *) enable_osmesa=no ;;
765 if test "x$enable_xlib_glx" = xauto; then
766 case "x$mesa_driver" in
767 xxlib) enable_xlib_glx=yes ;;
768 *) enable_xlib_glx=no ;;
772 if test "x$enable_glx" = xno; then
776 AM_CONDITIONAL(HAVE_DRI, test x"$enable_dri" = xyes)
779 dnl Driver specific build directories
782 dnl this variable will be prepended to SRC_DIRS and is not exported
787 GALLIUM_DIRS="auxiliary drivers state_trackers"
788 GALLIUM_TARGET_DIRS=""
789 GALLIUM_WINSYS_DIRS="sw"
790 GALLIUM_DRIVERS_DIRS="galahad trace rbug noop identity"
791 GALLIUM_STATE_TRACKERS_DIRS=""
793 # build shared-glapi if enabled for OpenGL or if OpenGL ES is enabled
794 case "x$enable_shared_glapi$enable_gles1$enable_gles2" in
796 CORE_DIRS="$CORE_DIRS mapi/shared-glapi"
800 # build glapi if OpenGL is enabled
801 if test "x$enable_opengl" = xyes; then
802 CORE_DIRS="$CORE_DIRS mapi/glapi"
805 # build es1api if OpenGL ES 1.x is enabled
806 if test "x$enable_gles1" = xyes; then
807 CORE_DIRS="$CORE_DIRS mapi/es1api"
810 # build es2api if OpenGL ES 2.x is enabled
811 if test "x$enable_gles2" = xyes; then
812 CORE_DIRS="$CORE_DIRS mapi/es2api"
815 # build glsl and mesa if OpenGL or OpenGL ES is enabled
816 case "x$enable_opengl$enable_gles1$enable_gles2" in
818 CORE_DIRS="$CORE_DIRS glsl mesa"
822 case "x$enable_glx$enable_xlib_glx" in
824 DRIVER_DIRS="$DRIVER_DIRS x11"
825 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
826 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
827 GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS"
828 HAVE_WINSYS_XLIB="yes"
832 SRC_DIRS="$SRC_DIRS glx"
836 if test "x$enable_dri" = xyes; then
837 DRIVER_DIRS="$DRIVER_DIRS dri"
839 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/dri"
840 GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
844 if test "x$enable_osmesa" = xyes; then
845 # the empty space matters for osmesa... (see src/mesa/Makefile)
846 if test -n "$DRIVER_DIRS"; then
847 DRIVER_DIRS="$DRIVER_DIRS osmesa"
855 AC_SUBST([DRIVER_DIRS])
856 AC_SUBST([GALLIUM_DIRS])
857 AC_SUBST([GALLIUM_TARGET_DIRS])
858 AC_SUBST([GALLIUM_WINSYS_DIRS])
859 AC_SUBST([GALLIUM_DRIVERS_DIRS])
860 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
861 AC_SUBST([MESA_LLVM])
864 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
865 [have_libdrm=yes], [have_libdrm=no])
867 if test "x$enable_dri" = xyes; then
868 # DRI must be shared, I think
869 if test "$enable_static" = yes; then
870 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
873 # not a hard requirement as swrast does not depend on it
874 if test "x$have_libdrm" = xyes; then
875 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
880 dnl Find out if X is available. The variable have_x is set if libX11 is
881 dnl found to mimic AC_PATH_XTRA.
883 if test -n "$PKG_CONFIG"; then
884 AC_MSG_CHECKING([pkg-config files for X11 are available])
885 PKG_CHECK_EXISTS([x11],[
891 AC_MSG_RESULT([$x11_pkgconfig])
895 dnl Use the autoconf macro if no pkg-config files
896 if test "$x11_pkgconfig" = yes; then
897 PKG_CHECK_MODULES([X11], [x11])
900 test -z "$X11_CFLAGS" && X11_CFLAGS="$X_CFLAGS"
901 test -z "$X11_LIBS" && X11_LIBS="$X_LIBS -lX11"
902 AC_SUBST([X11_CFLAGS])
906 dnl Try to tell the user that the --x-* options are only used when
907 dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
908 m4_divert_once([HELP_BEGIN],
909 [These options are only used when the X libraries cannot be found by the
910 pkg-config utility.])
912 dnl We need X for xlib and dri, so bomb now if it's not found
913 if test "x$enable_glx" = xyes -a "x$no_x" = xyes; then
914 AC_MSG_ERROR([X11 development libraries needed for GLX])
917 if test "x$enable_glx" = xyes; then
918 DEFINES="$DEFINES -DUSE_XCB"
921 dnl Direct rendering or just indirect rendering
924 dnl Disable by default on GNU/Hurd
925 driglx_direct_default="no"
928 dnl Disable by default on cygwin
929 driglx_direct_default="no"
932 driglx_direct_default="yes"
935 AC_ARG_ENABLE([driglx-direct],
936 [AS_HELP_STRING([--disable-driglx-direct],
937 [enable direct rendering in GLX and EGL for DRI \
938 @<:@default=auto@:>@])],
939 [driglx_direct="$enableval"],
940 [driglx_direct="$driglx_direct_default"])
943 dnl libGL configuration per driver
945 case "x$enable_glx$enable_xlib_glx" in
948 if test "$x11_pkgconfig" = yes; then
949 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
950 GL_PC_REQ_PRIV="x11 xext"
951 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
952 GL_LIB_DEPS="$XLIBGL_LIBS"
954 # should check these...
955 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
956 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
957 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
958 GL_PC_CFLAGS="$X11_INCLUDES"
960 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread $DLOPEN_LIBS"
961 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
965 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
966 GL_PC_REQ_PRIV="glproto >= $GLPROTO_REQUIRED"
967 if test x"$driglx_direct" = xyes; then
968 if test "x$have_libdrm" != xyes; then
969 AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
971 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
972 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
975 # find the DRI deps for libGL
976 if test "$x11_pkgconfig" = yes; then
977 dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx"
979 # add xf86vidmode if available
980 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
981 if test "$HAVE_XF86VIDMODE" = yes ; then
982 dri_modules="$dri_modules xxf86vm"
985 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
986 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
987 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
988 GL_LIB_DEPS="$DRIGL_LIBS"
990 # should check these...
991 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
992 if test "x$HAVE_XF86VIDMODE" == xyes; then
993 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
995 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXdamage -lXfixes"
997 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
998 GL_PC_CFLAGS="$X11_INCLUDES"
1000 # XCB can only be used from pkg-config
1001 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
1002 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
1003 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
1004 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
1007 # Check to see if the xcb-glx library is new enough to support
1008 # GLX_ARB_create_context. This bit of hackery is necessary until XCB 1.8
1010 save_CPPFLAGS="$CPPFLAGS"
1011 save_LDFLAGS="$LDFLAGS"
1012 CPPFLAGS="$CPPFLAGS $X11_INCLUDES"
1013 LDFLAGS="$LDFLAGS $GL_LIB_DEPS"
1014 AC_CHECK_LIB(xcb-glx, xcb_glx_create_context_attribs_arb_checked,
1015 [HAVE_XCB_GLX_CREATE_CONTEXT=yes],
1016 [HAVE_XCB_GLX_CREATE_CONTEXT=no])
1017 CPPFLAGS="$save_CPPFLAGS"
1018 LDFLAGS="$save_LDFLAGS"
1020 if test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes; then
1021 X11_INCLUDES="$X11_INCLUDES -DHAVE_XCB_GLX_CREATE_CONTEXT"
1024 # need DRM libs, -lpthread, etc.
1025 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1026 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1030 # This is outside the case (above) so that it is invoked even for non-GLX
1032 AM_CONDITIONAL(HAVE_XCB_GLX_CREATE_CONTEXT,
1033 test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes)
1034 AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
1036 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1037 GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1038 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1039 GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1041 AC_SUBST([GL_LIB_DEPS])
1042 AC_SUBST([GL_PC_REQ_PRIV])
1043 AC_SUBST([GL_PC_LIB_PRIV])
1044 AC_SUBST([GL_PC_CFLAGS])
1045 AC_SUBST([DRI_PC_REQ_PRIV])
1046 AC_SUBST([GLESv1_CM_LIB_DEPS])
1047 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
1048 AC_SUBST([GLESv2_LIB_DEPS])
1049 AC_SUBST([GLESv2_PC_LIB_PRIV])
1051 GLAPI_LIB_DEPS="-lpthread $SELINUX_LIBS"
1052 AC_SUBST([GLAPI_LIB_DEPS])
1055 dnl Setup default DRI CFLAGS
1056 DRI_CFLAGS='$(CFLAGS)'
1057 DRI_CXXFLAGS='$(CXXFLAGS)'
1058 DRI_LIB_DEPS='$(TOP)/src/mesa/libmesa.a'
1059 MESA_MODULES='$(TOP)/src/mesa/libmesa.a'
1061 if test "x$enable_dri" = xyes && test "x$driglx_direct" = xyes ; then
1062 DRICORE_GLSL_LIBS='$(TOP)/$(LIB_DIR)/libglsl.so'
1063 DRICORE_LIBS='$(TOP)/$(LIB_DIR)/libdricore.so'
1064 DRICORE_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -lglsl'
1065 DRI_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore -lglsl'
1066 DRI_CFLAGS='$(CFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1067 DRI_CXXFLAGS='$(CXXFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1068 MESA_MODULES='$(DRICORE_LIBS) $(DRICORE_GLSL_LIBS)'
1070 AC_SUBST([DRICORE_LIBS])
1071 AC_SUBST([DRICORE_GLSL_LIBS])
1072 AC_SUBST([DRICORE_LIB_DEPS])
1073 AC_SUBST([DRI_CXXFLAGS])
1074 AC_SUBST([DRI_CFLAGS])
1075 AC_SUBST([MESA_MODULES])
1077 AC_SUBST([HAVE_XF86VIDMODE])
1082 case "x$enable_glx$enable_xlib_glx" in
1084 DEFINES="$DEFINES -DUSE_XSHM"
1087 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1088 if test "x$driglx_direct" = xyes; then
1089 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1098 AC_ARG_ENABLE([glx-tls],
1099 [AS_HELP_STRING([--enable-glx-tls],
1100 [enable TLS support in GLX @<:@default=disabled@:>@])],
1101 [GLX_USE_TLS="$enableval"],
1103 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
1105 AS_IF([test "x$GLX_USE_TLS" = xyes],
1106 [DEFINES="${DEFINES} -DGLX_USE_TLS -DPTHREADS"])
1111 dnl Directory for DRI drivers
1112 AC_ARG_WITH([dri-driverdir],
1113 [AS_HELP_STRING([--with-dri-driverdir=DIR],
1114 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
1115 [DRI_DRIVER_INSTALL_DIR="$withval"],
1116 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
1117 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
1118 dnl Extra search path for DRI drivers
1119 AC_ARG_WITH([dri-searchpath],
1120 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
1121 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
1122 [DRI_DRIVER_SEARCH_DIR="$withval"],
1123 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
1124 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
1125 dnl Which drivers to build - default is chosen by platform
1126 AC_ARG_WITH([dri-drivers],
1127 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
1128 [comma delimited DRI drivers list, e.g.
1129 "swrast,i965,radeon" @<:@default=auto@:>@])],
1130 [with_dri_drivers="$withval"],
1131 [with_dri_drivers=yes])
1132 if test "x$with_dri_drivers" = x; then
1136 dnl If $with_dri_drivers is yes, directories will be added through
1139 case "$with_dri_drivers" in
1142 # classic DRI drivers require FEATURE_GL to build
1143 if test "x$enable_opengl" = xyes; then
1148 # verify the requested driver directories exist
1149 dri_drivers=`IFS=', '; echo $with_dri_drivers`
1150 for driver in $dri_drivers; do
1151 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
1152 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
1154 DRI_DIRS="$dri_drivers"
1155 if test -n "$DRI_DIRS" -a "x$enable_opengl" != xyes; then
1156 AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1161 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
1162 if test "x$enable_dri" = xyes; then
1163 # Platform specific settings and drivers to build
1166 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1167 DEFINES="$DEFINES -DHAVE_ALIAS"
1171 if test "x$DRI_DIRS" = "xyes"; then
1172 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1176 # Build only the drivers for cards that exist on PowerPC.
1177 if test "x$DRI_DIRS" = "xyes"; then
1178 DRI_DIRS="r200 radeon swrast"
1182 # Build only the drivers for cards that exist on sparc
1183 if test "x$DRI_DIRS" = "xyes"; then
1184 DRI_DIRS="r200 radeon swrast"
1189 freebsd* | dragonfly* | *netbsd*)
1190 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
1191 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
1193 if test "x$DRI_DIRS" = "xyes"; then
1194 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1198 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1199 DEFINES="$DEFINES -DHAVE_ALIAS"
1202 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1205 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1206 if test "x$DRI_DIRS" = "xyes"; then
1213 if test "x$DRI_DIRS" = "xyes"; then
1214 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1217 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
1220 if test "x$enable_dri" = xyes; then
1223 AC_ARG_WITH([expat],
1224 [AS_HELP_STRING([--with-expat=DIR],
1225 [expat install directory])],[
1226 EXPAT_INCLUDES="-I$withval/include"
1227 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
1228 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
1229 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
1231 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
1233 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1234 [AC_MSG_ERROR([Expat required for DRI.])])
1238 # if we are building any dri driver other than swrast ...
1239 if test -n "$DRI_DIRS" -a x"$DRI_DIRS" != xswrast; then
1240 # ... libdrm is required
1241 if test "x$have_libdrm" != xyes; then
1242 AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
1244 # ... and build dricommon
1248 # put all the necessary libs together
1249 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
1251 AC_SUBST([DRI_DIRS])
1252 AC_SUBST([EXPAT_INCLUDES])
1253 AC_SUBST([DRI_LIB_DEPS])
1257 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1259 for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1275 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1276 HAVE_NOUVEAU_DRI=yes;
1282 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1284 for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1287 HAVE_RADEON_DRI=yes;
1300 HAVE_SWRAST_DRI=yes;
1304 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
1305 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
1306 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
1307 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
1308 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
1309 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
1310 AM_CONDITIONAL(HAVE_COMMON_DRI, test x$HAVE_COMMON_DRI = xyes)
1313 dnl OSMesa configuration
1316 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1317 AC_ARG_WITH([osmesa-bits],
1318 [AS_HELP_STRING([--with-osmesa-bits=BITS],
1319 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1320 [osmesa_bits="$withval"],
1322 if test "x$osmesa_bits" != x8; then
1323 if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then
1324 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1328 case "x$osmesa_bits" in
1330 OSMESA_LIB="${OSMESA_LIB}"
1333 OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
1334 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1337 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1341 if test "x$enable_osmesa" = xyes; then
1342 # only link libraries with osmesa if shared
1343 if test "$enable_static" = no; then
1344 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1349 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1351 AC_SUBST([OSMESA_LIB_DEPS])
1352 AC_SUBST([OSMESA_MESA_DEPS])
1353 AC_SUBST([OSMESA_PC_REQ])
1354 AC_SUBST([OSMESA_PC_LIB_PRIV])
1357 dnl gbm configuration
1359 if test "x$enable_gbm" = xauto; then
1360 case "$with_egl_platforms" in
1367 if test "x$enable_gbm" = xyes; then
1368 SRC_DIRS="$SRC_DIRS gbm"
1370 PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1371 AC_MSG_ERROR([gbm needs udev]))
1373 if test "x$enable_dri" = xyes; then
1374 GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
1375 if test "$SHARED_GLAPI" -eq 0; then
1376 AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1380 GBM_PC_REQ_PRIV="libudev"
1381 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1382 AC_SUBST([GBM_PC_REQ_PRIV])
1383 AC_SUBST([GBM_PC_LIB_PRIV])
1386 dnl EGL configuration
1390 if test "x$enable_egl" = xyes; then
1391 SRC_DIRS="$SRC_DIRS egl"
1392 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS -lpthread"
1394 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1396 if test "$enable_static" != yes; then
1397 # build egl_glx when libGL is built
1398 if test "x$enable_glx" = xyes; then
1399 HAVE_EGL_DRIVER_GLX=1
1402 PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1403 [have_libudev=yes],[have_libudev=no])
1404 if test "$have_libudev" = yes; then
1405 DEFINES="$DEFINES -DHAVE_LIBUDEV"
1407 if test "x$enable_dri" = xyes; then
1408 # build egl_dri2 when xcb-dri2 is available
1409 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes],
1410 [have_xcb_dri2=yes],[have_xcb_dri2=no])
1411 if test "$have_xcb_dri2" = yes; then
1412 HAVE_EGL_DRIVER_DRI2=1
1413 # workaround a bug in xcb-dri2 generated by xcb-proto 1.6
1415 AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [],
1416 [DEFINES="$DEFINES -DXCB_DRI2_CONNECT_DEVICE_NAME_BROKEN"])
1423 AC_SUBST([EGL_LIB_DEPS])
1426 dnl EGL Gallium configuration
1428 if test "x$enable_gallium_egl" = xyes; then
1429 if test "x$with_gallium_drivers" = x; then
1430 AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
1432 if test "x$enable_egl" = xno; then
1433 AC_MSG_ERROR([cannot enable egl_gallium without EGL])
1435 if test "x$have_libdrm" != xyes; then
1436 AC_MSG_ERROR([egl_gallium requires libdrm >= $LIBDRM_REQUIRED])
1439 GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
1440 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static"
1445 dnl gbm Gallium configuration
1447 if test "x$enable_gallium_gbm" = xauto; then
1448 case "$enable_gbm$HAVE_ST_EGL$enable_dri$with_egl_platforms" in
1450 enable_gallium_gbm=yes ;;
1452 enable_gallium_gbm=no ;;
1455 if test "x$enable_gallium_gbm" = xyes; then
1456 if test "x$with_gallium_drivers" = x; then
1457 AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
1459 if test "x$enable_gbm" = xno; then
1460 AC_MSG_ERROR([cannot enable gbm_gallium without gbm])
1462 # gbm_gallium abuses DRI_LIB_DEPS to link. Make sure it is set.
1463 if test "x$enable_dri" = xno; then
1464 AC_MSG_ERROR([gbm_gallium requires --enable-dri to build])
1467 GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS"
1468 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm"
1473 dnl X.Org DDX configuration
1475 if test "x$enable_xorg" = xyes; then
1476 PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1477 PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1478 PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1479 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1480 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1481 HAVE_XEXTPROTO_71="no")
1482 GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS"
1487 dnl XA configuration
1489 if test "x$enable_xa" = xyes; then
1492 AC_CHECK_PROG(NM, nm, "nm")
1493 if test "x$AWK" = x || test "x$GREP" = x || test "x$NM" = x; then
1494 AC_MSG_WARN([Missing one of nm, grep or awk. Disabling xa.])
1498 if test "x$enable_xa" = xyes; then
1499 GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS"
1507 dnl OpenVG configuration
1511 if test "x$enable_openvg" = xyes; then
1512 if test "x$enable_egl" = xno; then
1513 AC_MSG_ERROR([cannot enable OpenVG without EGL])
1515 if test "x$with_gallium_drivers" = x; then
1516 AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1518 if test "x$enable_gallium_egl" = xno; then
1519 AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
1522 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1523 VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS -lpthread"
1524 CORE_DIRS="$CORE_DIRS mapi/vgapi"
1525 GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1530 dnl D3D1X configuration
1533 if test "x$enable_d3d1x" = xyes; then
1534 if test "x$with_gallium_drivers" = x; then
1535 AC_MSG_ERROR([cannot enable D3D1X without Gallium])
1538 GALLIUM_STATE_TRACKERS_DIRS="d3d1x $GALLIUM_STATE_TRACKERS_DIRS"
1543 dnl Gallium G3DVL configuration
1545 AC_ARG_ENABLE([gallium-g3dvl],
1546 [AS_HELP_STRING([--enable-gallium-g3dvl],
1547 [build gallium g3dvl @<:@default=disabled@:>@])],
1548 [enable_gallium_g3dvl="$enableval"],
1549 [enable_gallium_g3dvl=no])
1550 if test "x$enable_gallium_g3dvl" = xyes; then
1551 if test "x$with_gallium_drivers" = x; then
1552 AC_MSG_ERROR([cannot enable G3DVL without Gallium])
1555 if test "x$enable_xvmc" = xauto; then
1556 PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no])
1559 if test "x$enable_vdpau" = xauto; then
1560 PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no])
1563 if test "x$enable_va" = xauto; then
1564 #don't enable vaapi state tracker even if package exists
1565 #PKG_CHECK_EXISTS([libva], [enable_vdpau=yes], [enable_vdpau=no])
1570 if test "x$enable_xvmc" = xyes; then
1571 PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6 x11-xcb xcb-dri2 >= 1.8])
1572 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xvmc"
1576 if test "x$enable_vdpau" = xyes; then
1577 PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.4.1 x11-xcb xcb-dri2 >= 1.8])
1578 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau"
1582 if test "x$enable_va" = xyes; then
1583 PKG_CHECK_MODULES([LIBVA], [libva = 0.31.1 x11-xcb xcb-dri2 >= 1.8])
1584 AC_MSG_WARN([vaapi state tracker currently unmaintained])
1585 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS va"
1590 dnl GLU configuration
1592 AC_ARG_ENABLE([glu],
1593 [AS_HELP_STRING([--disable-glu],
1594 [enable OpenGL Utility library @<:@default=enabled@:>@])],
1595 [enable_glu="$enableval"],
1598 if test "x$enable_glu" = xyes; then
1599 if test "x$enable_glx" = xno -a "x$enable_osmesa" = xno; then
1600 AC_MSG_NOTICE([Disabling GLU since there is no OpenGL driver])
1605 if test "x$enable_glu" = xyes; then
1606 SRC_DIRS="$SRC_DIRS glu"
1608 if test "x$enable_glx" = xno; then
1609 # Link libGLU to libOSMesa instead of libGL
1612 if test "$enable_static" = no; then
1613 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
1618 # If static, empty GLU_LIB_DEPS and add libs for programs to link
1620 GLU_PC_LIB_PRIV="-lm"
1621 if test "$enable_static" = no; then
1623 GLU_MESA_DEPS='-l$(GL_LIB)'
1630 if test "$enable_static" = no; then
1631 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
1633 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
1634 AC_SUBST([GLU_LIB_DEPS])
1635 AC_SUBST([GLU_MESA_DEPS])
1636 AC_SUBST([GLU_PC_REQ])
1637 AC_SUBST([GLU_PC_REQ_PRIV])
1638 AC_SUBST([GLU_PC_LIB_PRIV])
1639 AC_SUBST([GLU_PC_CFLAGS])
1641 AC_SUBST([PROGRAM_DIRS])
1644 dnl Gallium configuration
1646 if test "x$with_gallium_drivers" != x; then
1647 SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
1650 AC_SUBST([LLVM_CFLAGS])
1651 AC_SUBST([LLVM_LIBS])
1652 AC_SUBST([LLVM_LDFLAGS])
1653 AC_SUBST([LLVM_VERSION])
1655 case "x$enable_opengl$enable_gles1$enable_gles2" in
1657 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1661 AC_SUBST([VG_LIB_DEPS])
1662 AC_SUBST([EGL_CLIENT_APIS])
1664 AC_ARG_WITH([egl-platforms],
1665 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1666 [comma delimited native platforms libEGL supports, e.g.
1667 "x11,drm" @<:@default=auto@:>@])],
1668 [with_egl_platforms="$withval"],
1669 [if test "x$enable_egl" = xyes; then
1670 with_egl_platforms="x11"
1672 with_egl_platforms=""
1677 if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
1678 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1681 # verify the requested driver directories exist
1682 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1683 for plat in $egl_platforms; do
1684 test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \
1685 AC_MSG_ERROR([EGL platform '$plat' does not exist])
1686 if test "$plat" = "fbdev"; then
1687 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev"
1689 if test "$plat" = "null"; then
1690 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
1692 if test "$plat" = "wayland"; then
1693 PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-server],, \
1694 [AC_MSG_ERROR([cannot find libwayland-client])])
1695 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
1697 m4_ifdef([WAYLAND_SCANNER_RULES],
1698 [WAYLAND_SCANNER_RULES(['$(top_srcdir)/src/egl/wayland/wayland-drm/protocol'])])
1700 if test "$plat" = "drm" && test "x$enable_gbm" = "xno"; then
1701 AC_MSG_ERROR([EGL platform drm needs gbm])
1703 case "$plat$have_libudev" in
1705 AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;;
1709 # libEGL wants to default to the first platform specified in
1710 # ./configure. parse that here.
1711 if test "x$egl_platforms" != "x"; then
1712 FIRST_PLATFORM_CAPS=`echo $egl_platforms | sed 's| .*||' | tr 'a-z' 'A-Z'`
1713 EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
1715 EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
1718 EGL_PLATFORMS="$egl_platforms"
1720 AM_CONDITIONAL(HAVE_EGL_PLATFORM_X11, echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1)
1721 AM_CONDITIONAL(HAVE_EGL_PLATFORM_WAYLAND, echo "$egl_platforms" | grep 'wayland' >/dev/null 2>&1)
1722 AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep 'drm' >/dev/null 2>&1)
1723 AM_CONDITIONAL(HAVE_EGL_PLATFORM_FBDEV, echo "$egl_platforms" | grep 'fbdev' >/dev/null 2>&1)
1724 AM_CONDITIONAL(HAVE_EGL_PLATFORM_NULL, echo "$egl_platforms" | grep 'null' >/dev/null 2>&1)
1726 AM_CONDITIONAL(HAVE_EGL_DRIVER_DRI2, test "x$HAVE_EGL_DRIVER_DRI2" != "x")
1727 AM_CONDITIONAL(HAVE_EGL_DRIVER_GLX, test "x$HAVE_EGL_DRIVER_GLX" != "x")
1729 AC_SUBST([EGL_NATIVE_PLATFORM])
1730 AC_SUBST([EGL_PLATFORMS])
1731 AC_SUBST([EGL_CFLAGS])
1733 AC_ARG_WITH([egl-driver-dir],
1734 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1735 [directory for EGL drivers [[default=${libdir}/egl]]])],
1736 [EGL_DRIVER_INSTALL_DIR="$withval"],
1737 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1738 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1740 AC_ARG_WITH([xorg-driver-dir],
1741 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1742 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1743 [XORG_DRIVER_INSTALL_DIR="$withval"],
1744 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1745 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1747 AC_ARG_WITH([max-width],
1748 [AS_HELP_STRING([--with-max-width=N],
1749 [Maximum framebuffer width (4096)])],
1750 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1751 AS_IF([test "${withval}" -gt "4096"],
1752 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1754 AC_ARG_WITH([max-height],
1755 [AS_HELP_STRING([--with-max-height=N],
1756 [Maximum framebuffer height (4096)])],
1757 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1758 AS_IF([test "${withval}" -gt "4096"],
1759 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1765 AC_ARG_ENABLE([gallium-llvm],
1766 [AS_HELP_STRING([--enable-gallium-llvm],
1767 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1768 [enable_gallium_llvm="$enableval"],
1769 [enable_gallium_llvm=auto])
1771 AC_ARG_WITH([llvm-shared-libs],
1772 [AS_HELP_STRING([--with-llvm-shared-libs],
1773 [link with LLVM shared libraries @<:@default=disabled@:>@])],
1774 [with_llvm_shared_libs=yes],
1775 [with_llvm_shared_libs=no])
1777 if test "x$with_gallium_drivers" = x; then
1778 enable_gallium_llvm=no
1780 if test "x$enable_gallium_llvm" = xauto; then
1782 i*86|x86_64) enable_gallium_llvm=yes;;
1785 if test "x$enable_gallium_llvm" = xyes; then
1786 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1788 if test "x$LLVM_CONFIG" != xno; then
1789 LLVM_VERSION=`$LLVM_CONFIG --version | sed 's/svn.*//g'`
1790 LLVM_CFLAGS=`$LLVM_CONFIG --cppflags|sed -e 's/-DNDEBUG\>//g' -e 's/-pedantic//g'`
1791 if test "x$with_llvm_shared_libs" = xyes; then
1792 dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
1793 LLVM_LIBS="-lLLVM-`$LLVM_CONFIG --version`"
1795 LLVM_LIBS="`$LLVM_CONFIG --libs engine bitwriter`"
1797 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1798 DEFINES="$DEFINES -D__STDC_CONSTANT_MACROS"
1807 dnl Directory for XVMC libs
1808 AC_ARG_WITH([xvmc-libdir],
1809 [AS_HELP_STRING([--with-xvmc-libdir=DIR],
1810 [directory for the XVMC libraries @<:@default=${libdir}@:>@])],
1811 [XVMC_LIB_INSTALL_DIR="$withval"],
1812 [XVMC_LIB_INSTALL_DIR='${libdir}'])
1813 AC_SUBST([XVMC_LIB_INSTALL_DIR])
1815 dnl Directory for VDPAU libs
1816 AC_ARG_WITH([vdpau-libdir],
1817 [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1818 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1819 [VDPAU_LIB_INSTALL_DIR="$withval"],
1820 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1821 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
1823 dnl Directory for VA libs
1824 AC_ARG_WITH([va-libdir],
1825 [AS_HELP_STRING([--with-va-libdir=DIR],
1826 [directory for the VA libraries @<:@default=${libdir}/va@:>@])],
1827 [VA_LIB_INSTALL_DIR="$withval"],
1828 [VA_LIB_INSTALL_DIR='${libdir}/va'])
1829 AC_SUBST([VA_LIB_INSTALL_DIR])
1832 dnl Gallium helper functions
1834 gallium_check_st() {
1835 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes ||
1836 test "x$HAVE_ST_XA" = xyes || test "x$HAVE_ST_XVMC" = xyes ||
1837 test "x$HAVE_ST_VDPAU" = xyes || test "x$HAVE_ST_VA" = xyes; then
1838 if test "x$have_libdrm" != xyes; then
1839 AC_MSG_ERROR([DRI or Xorg DDX requires libdrm >= $LIBDRM_REQUIRED])
1841 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1843 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1844 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1846 if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
1847 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1849 if test "x$HAVE_ST_XA" = xyes && test "x$4" != x; then
1850 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
1852 if test "x$HAVE_ST_XVMC" = xyes && test "x$5" != x; then
1853 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5"
1855 if test "x$HAVE_ST_VDPAU" = xyes && test "x$6" != x; then
1856 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6"
1858 if test "x$HAVE_ST_VA" = xyes && test "x$7" != x; then
1859 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $7"
1863 gallium_require_llvm() {
1864 if test "x$MESA_LLVM" = x0; then
1866 i*86|x86_64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1872 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
1873 if test "x$with_gallium_drivers" != x; then
1874 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1875 for driver in $gallium_drivers; do
1878 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
1879 gallium_check_st "svga/drm" "dri-vmwgfx" "" "xa-vmwgfx"
1882 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1883 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe"
1884 if test "x$MESA_LLVM" = x1; then
1885 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1887 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1888 gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1891 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1892 gallium_require_llvm "Gallium R300"
1893 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1894 gallium_check_st "radeon/drm" "dri-r300" "xorg-r300" "" "xvmc-r300" "vdpau-r300" "va-r300"
1897 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1898 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1899 gallium_check_st "radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600" "va-r600"
1902 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1903 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50 nvc0"
1904 gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau" "" "xvmc-nouveau" "vdpau-nouveau"
1907 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe"
1908 if test "x$MESA_LLVM" = x1; then
1909 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1912 if test "x$HAVE_ST_DRI" = xyes; then
1913 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1915 if test "x$HAVE_ST_VDPAU" = xyes; then
1916 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS vdpau-softpipe"
1918 if test "x$HAVE_ST_XVMC" = xyes; then
1919 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS xvmc-softpipe"
1921 if test "x$HAVE_ST_VA" = xyes; then
1922 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS va-softpipe"
1924 if test "x$HAVE_ST_VDPAU" = xyes ||
1925 test "x$HAVE_ST_XVMC" = xyes ||
1926 test "x$HAVE_ST_VA" = xyes; then
1927 if test "x$HAVE_WINSYS_XLIB" != xyes; then
1928 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
1933 AC_MSG_ERROR([Unknown Gallium driver: $driver])
1939 dnl Tell Automake which drivers to build
1940 for driver in $GALLIUM_DRIVERS_DIRS; do
1943 HAVE_GALAHAD_GALLIUM=yes;
1946 HAVE_IDENTITY_GALLIUM=yes;
1949 HAVE_NOOP_GALLIUM=yes;
1952 GALLIUM_MAKE_DIRS="$GALLIUM_MAKE_DIRS $driver"
1957 AM_CONDITIONAL(HAVE_GALAHAD_GALLIUM, test x$HAVE_GALAHAD_GALLIUM = xyes)
1958 AM_CONDITIONAL(HAVE_IDENTITY_GALLIUM, test x$HAVE_IDENTITY_GALLIUM = xyes)
1959 AM_CONDITIONAL(HAVE_NOOP_GALLIUM, test x$HAVE_NOOP_GALLIUM = xyes)
1960 AC_SUBST([GALLIUM_MAKE_DIRS])
1962 dnl prepend CORE_DIRS to SRC_DIRS
1963 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
1965 dnl Restore LDFLAGS and CPPFLAGS
1966 LDFLAGS="$_SAVE_LDFLAGS"
1967 CPPFLAGS="$_SAVE_CPPFLAGS"
1969 dnl Add user CFLAGS and CXXFLAGS
1970 CFLAGS="$CFLAGS $USER_CFLAGS"
1971 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
1973 dnl Substitute the config
1974 AC_CONFIG_FILES([configs/autoconf
1975 src/gallium/drivers/Makefile
1976 src/gallium/drivers/r300/Makefile
1979 src/egl/drivers/Makefile
1980 src/egl/drivers/dri2/Makefile
1981 src/egl/drivers/glx/Makefile
1982 src/egl/main/Makefile
1984 src/egl/wayland/Makefile
1985 src/egl/wayland/wayland-egl/Makefile
1986 src/egl/wayland/wayland-egl/wayland-egl.pc
1987 src/egl/wayland/wayland-drm/Makefile
1989 src/mapi/shared-glapi/Makefile
1991 src/mesa/drivers/dri/dri.pc
1992 src/mesa/drivers/dri/Makefile
1993 src/mesa/drivers/dri/common/Makefile
1994 src/mesa/drivers/dri/i915/Makefile
1995 src/mesa/drivers/dri/i965/Makefile
1996 src/mesa/drivers/dri/nouveau/Makefile
1997 src/mesa/drivers/dri/r200/Makefile
1998 src/mesa/drivers/dri/radeon/Makefile
1999 src/mesa/drivers/dri/swrast/Makefile
2001 tests/glx/Makefile])
2003 dnl Replace the configs/current symlink
2004 AC_CONFIG_COMMANDS([configs],[
2005 if test -f configs/current || test -L configs/current; then
2006 rm -f configs/current
2008 ln -s autoconf configs/current
2011 dnl Sort the dirs alphabetically
2012 GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2013 GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2014 GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2015 GALLIUM_MAKE_DIRS=`echo $GALLIUM_MAKE_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2016 GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2021 dnl Output some configuration info for the user
2024 echo " prefix: $prefix"
2025 echo " exec_prefix: $exec_prefix"
2026 echo " libdir: $libdir"
2027 echo " includedir: $includedir"
2031 echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
2032 echo " OpenVG: $enable_openvg"
2036 if test "x$enable_osmesa" != xno; then
2037 echo " OSMesa: lib$OSMESA_LIB"
2042 if test "x$enable_dri" != xno; then
2043 # cleanup the drivers var
2044 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
2045 if test "x$DRI_DIRS" = x; then
2046 echo " DRI drivers: no"
2048 echo " DRI drivers: $dri_dirs"
2050 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
2053 case "x$enable_glx$enable_xlib_glx" in
2055 echo " GLX: Xlib-based"
2058 echo " GLX: DRI-based"
2061 echo " GLX: $enable_glx"
2066 echo " GLU: $enable_glu"
2070 echo " EGL: $enable_egl"
2071 if test "$enable_egl" = yes; then
2072 echo " EGL platforms: $EGL_PLATFORMS"
2075 if test "x$HAVE_EGL_DRIVER_GLX" != "x"; then
2076 egl_drivers="$egl_drivers builtin:egl_glx"
2078 if test "x$HAVE_EGL_DRIVER_DRI2" != "x"; then
2079 egl_drivers="$egl_drivers builtin:egl_dri2"
2082 if test "x$HAVE_ST_EGL" = xyes; then
2083 echo " EGL drivers: ${egl_drivers} egl_gallium"
2084 echo " EGL Gallium STs:$EGL_CLIENT_APIS"
2086 echo " EGL drivers: $egl_drivers"
2091 if test "x$MESA_LLVM" = x1; then
2093 echo " llvm-config: $LLVM_CONFIG"
2094 echo " llvm-version: $LLVM_VERSION"
2100 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
2101 echo " Gallium: yes"
2102 echo " Gallium dirs: $GALLIUM_DIRS"
2103 echo " Target dirs: $GALLIUM_TARGET_DIRS"
2104 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
2105 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
2106 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
2114 echo " Shared libs: $enable_shared"
2115 echo " Static libs: $enable_static"
2117 dnl Compiler options
2118 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2119 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2120 $SED 's/^ *//;s/ */ /;s/ *$//'`
2121 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2122 $SED 's/^ *//;s/ */ /;s/ *$//'`
2123 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
2125 echo " CFLAGS: $cflags"
2126 echo " CXXFLAGS: $cxxflags"
2127 echo " Macros: $defines"
2129 echo " PYTHON2: $PYTHON2"
2132 echo " Run '${MAKE-make}' to build Mesa"