1 dnl Process this file with autoconf to create configure.
5 dnl Tell the user about autoconf.html in the --help output
6 m4_divert_once([HELP_END], [
7 See docs/autoconf.html for more details on the options for Mesa.])
9 AC_INIT([Mesa], [9.1.0],
10 [https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa])
11 AC_CONFIG_AUX_DIR([bin])
12 AC_CONFIG_MACRO_DIR([m4])
14 AM_INIT_AUTOMAKE([foreign])
16 dnl http://people.gnome.org/~walters/docs/build-api.txt
17 dnl We don't support srcdir != builddir.
18 echo \#buildapi-variable-no-builddir >/dev/null
20 # Support silent build rules, requires at least automake-1.11. Disable
21 # by either passing --disable-silent-rules to configure or passing V=1
23 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
25 m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
27 dnl Set internal versions
29 AC_SUBST([OSMESA_VERSION])
31 dnl Versions for external dependencies
32 LIBDRM_REQUIRED=2.4.24
33 LIBDRM_RADEON_REQUIRED=2.4.40
34 LIBDRM_INTEL_REQUIRED=2.4.38
35 LIBDRM_NVVIEUX_REQUIRED=2.4.33
36 LIBDRM_NOUVEAU_REQUIRED=2.4.33
37 DRI2PROTO_REQUIRED=2.6
38 GLPROTO_REQUIRED=1.4.14
39 LIBDRM_XORG_REQUIRED=2.4.24
40 LIBKMS_XORG_REQUIRED=1.0.0
50 AC_CHECK_PROGS([MAKE], [gmake make])
51 AC_CHECK_PROGS([PYTHON2], [python2 python])
54 AC_PATH_PROG([MKDEP], [makedepend])
57 LT_INIT([disable-static])
59 if test "x$MKDEP" = "x"; then
60 AC_MSG_ERROR([makedepend is required to build Mesa])
64 AC_PATH_PROG([YACC_INST], $YACC)
65 if test ! -f "$srcdir/src/glsl/glcpp/glcpp-parse.c"; then
66 if test -z "$YACC_INST"; then
67 AC_MSG_ERROR([yacc not found - unable to compile glcpp-parse.y])
72 AC_PATH_PROG([PERL], [perl])
74 AC_CHECK_PROG(INDENT, indent, indent, cat)
75 if test "x$INDENT" != "xcat"; then
76 AC_SUBST(INDENT_FLAGS, '-i4 -nut -br -brs -npcs -ce -TGLubyte -TGLbyte -TBool')
79 dnl Our fallback install-sh is a symlink to minstall. Use the existing
80 dnl configuration in that case.
82 test "x$INSTALL" = "x$ac_install_sh" && INSTALL='$(MINSTALL)'
84 dnl We need a POSIX shell for parts of the build. Assume we have one
88 # Solaris /bin/sh is too old/non-POSIX compliant
89 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
94 dnl clang is mostly GCC-compatible, but its version is much lower,
95 dnl so we have to check for it.
96 AC_MSG_CHECKING([if compiling with clang])
99 [AC_LANG_PROGRAM([], [[
104 [acv_mesa_CLANG=yes], [acv_mesa_CLANG=no])
106 AC_MSG_RESULT([$acv_mesa_CLANG])
108 dnl If we're using GCC, make sure that it is at least version 3.3.0. Older
109 dnl versions are explictly not supported.
110 if test "x$GCC" = xyes -a "x$acv_mesa_CLANG" = xno; then
111 AC_MSG_CHECKING([whether gcc version is sufficient])
115 GCC_VERSION=`$CC -dumpversion`
116 if test $? -eq 0; then
117 GCC_VERSION_MAJOR=`echo $GCC_VERSION | cut -d. -f1`
118 GCC_VERSION_MINOR=`echo $GCC_VERSION | cut -d. -f2`
121 if test $GCC_VERSION_MAJOR -lt 3 -o $GCC_VERSION_MAJOR -eq 3 -a $GCC_VERSION_MINOR -lt 3 ; then
123 AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.])
130 MKDEP_OPTIONS=-fdepend
131 dnl Ask gcc where it's keeping its secret headers
132 if test "x$GCC" = xyes; then
133 for dir in include include-fixed; do
134 GCC_INCLUDES=`$CC -print-file-name=$dir`
135 if test "x$GCC_INCLUDES" != x && \
136 test "$GCC_INCLUDES" != "$dir" && \
137 test -d "$GCC_INCLUDES"; then
138 MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
142 AC_SUBST([MKDEP_OPTIONS])
144 dnl Make sure the pkg-config macros are defined
145 m4_ifndef([PKG_PROG_PKG_CONFIG],
146 [m4_fatal([Could not locate the pkg-config autoconf macros.
147 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
148 are in a different location, try setting the environment variable
149 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
150 PKG_PROG_PKG_CONFIG()
152 dnl LIB_DIR - library basename
153 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
156 dnl Cache LDFLAGS and CPPFLAGS so we can add to them and restore later
157 _SAVE_LDFLAGS="$LDFLAGS"
158 _SAVE_CPPFLAGS="$CPPFLAGS"
160 dnl build host compiler macros
162 AC_SUBST([DEFINES_FOR_BUILD])
165 DEFINES_FOR_BUILD="$DEFINES_FOR_BUILD -D_GNU_SOURCE"
168 DEFINES_FOR_BUILD="$DEFINES_FOR_BUILD -DSVR4"
171 DEFINES_FOR_BUILD="$DEFINES_FOR_BUILD"
180 DEFINES="$DEFINES -D_GNU_SOURCE -DHAVE_PTHREAD"
183 DEFINES="$DEFINES -DHAVE_PTHREAD -DSVR4"
186 DEFINES="$DEFINES -DHAVE_PTHREAD"
190 dnl Add flags for gcc and g++
191 if test "x$GCC" = xyes; then
194 CFLAGS="$CFLAGS -Wall -std=gnu99"
197 CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD -Wall -std=c99"
198 CFLAGS="$CFLAGS -Wall -std=c99"
202 # Enable -Werror=implicit-function-declaration and
203 # -Werror=missing-prototypes, if available, or otherwise, just
204 # -Wmissing-prototypes. This is particularly useful to avoid
205 # generating a loadable driver module that has undefined symbols.
206 save_CFLAGS="$CFLAGS"
207 AC_MSG_CHECKING([whether $CC supports -Werror=missing-prototypes])
208 CFLAGS="$CFLAGS -Werror=implicit-function-declaration"
209 CFLAGS="$CFLAGS -Werror=missing-prototypes"
210 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
211 AC_MSG_RESULT([yes]),
212 [CFLAGS="$save_CFLAGS -Wmissing-prototypes";
213 AC_MSG_RESULT([no])]);
215 # Enable -fvisibility=hidden if using a gcc that supports it
216 save_CFLAGS="$CFLAGS"
217 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
218 VISIBILITY_CFLAGS="-fvisibility=hidden"
219 CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
220 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
221 [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
223 # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
226 # Work around aliasing bugs - developers should comment this out
227 CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD -fno-strict-aliasing"
228 CFLAGS="$CFLAGS -fno-strict-aliasing"
230 # gcc's builtin memcmp is slower than glibc's
231 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
232 CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD -fno-builtin-memcmp"
233 CFLAGS="$CFLAGS -fno-builtin-memcmp"
235 if test "x$GXX" = xyes; then
236 CXXFLAGS_FOR_BUILD="$CXXFLAGS_FOR_BUILD -Wall"
237 CXXFLAGS="$CXXFLAGS -Wall"
239 # Enable -fvisibility=hidden if using a gcc that supports it
240 save_CXXFLAGS="$CXXFLAGS"
241 AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
242 VISIBILITY_CXXFLAGS="-fvisibility=hidden"
243 CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
245 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
246 [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
249 # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
250 CXXFLAGS=$save_CXXFLAGS
252 # Work around aliasing bugs - developers should comment this out
253 CXXFLAGS_FOR_BUILD="$CXXFLAGS_FOR_BUILD -fno-strict-aliasing"
254 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
256 # gcc's builtin memcmp is slower than glibc's
257 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
258 CXXFLAGS_FOR_BUILD="$CXXFLAGS_FOR_BUILD -fno-builtin-memcmp"
259 CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp"
262 dnl even if the compiler appears to support it, using visibility attributes isn't
263 dnl going to do anything useful currently on cygwin apart from emit lots of warnings
267 VISIBILITY_CXXFLAGS=""
271 AC_SUBST([VISIBILITY_CFLAGS])
272 AC_SUBST([VISIBILITY_CXXFLAGS])
275 dnl Hacks to enable 32 or 64 bit build
277 AC_ARG_ENABLE([32-bit],
278 [AS_HELP_STRING([--enable-32-bit],
279 [build 32-bit libraries @<:@default=auto@:>@])],
280 [enable_32bit="$enableval"],
283 if test "x$enable_32bit" = xyes; then
284 if test "x$GCC" = xyes; then
285 CFLAGS="$CFLAGS -m32"
286 CCASFLAGS="$CCASFLAGS -m32"
288 if test "x$GXX" = xyes; then
289 CXXFLAGS="$CXXFLAGS -m32"
292 AC_ARG_ENABLE([64-bit],
293 [AS_HELP_STRING([--enable-64-bit],
294 [build 64-bit libraries @<:@default=auto@:>@])],
295 [enable_64bit="$enableval"],
298 if test "x$enable_64bit" = xyes; then
299 if test "x$GCC" = xyes; then
300 CFLAGS="$CFLAGS -m64"
302 if test "x$GXX" = xyes; then
303 CXXFLAGS="$CXXFLAGS -m64"
307 dnl Can't have static and shared libraries, default to static if user
308 dnl explicitly requested. If both disabled, set to static since shared
309 dnl was explicitly requested.
310 case "x$enable_static$enable_shared" in
312 AC_MSG_WARN([Cannot build static and shared libraries, disabling shared])
316 AC_MSG_WARN([Cannot disable both static and shared libraries, enabling static])
321 AM_CONDITIONAL(BUILD_SHARED, test "x$enable_shared" = xyes)
326 AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
327 if test "$enable_static" = yes; then
328 MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
330 AC_SUBST([MKLIB_OPTIONS])
333 dnl other compiler options
335 AC_ARG_ENABLE([debug],
336 [AS_HELP_STRING([--enable-debug],
337 [use debug compiler flags and macros @<:@default=disabled@:>@])],
338 [enable_debug="$enableval"],
341 if test "x$enable_debug" = xyes; then
342 DEFINES_FOR_BUILD="$DEFINES_FOR_BUILD -DDEBUG"
343 if test "x$GCC_FOR_BUILD" = xyes; then
344 CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD -g -O0"
346 if test "x$GXX_FOR_BUILD" = xyes; then
347 CXXFLAGS_FOR_BUILD="$CXXFLAGS_FOR_BUILD -g -O0"
350 DEFINES="$DEFINES -DDEBUG"
351 if test "x$GCC" = xyes; then
352 CFLAGS="$CFLAGS -g -O0"
354 if test "x$GXX" = xyes; then
355 CXXFLAGS="$CXXFLAGS -g -O0"
362 LIB_PREFIX_GLOB='lib'
363 LIB_VERSION_SEPARATOR='.'
364 if test "$enable_static" = yes; then
369 LIB_EXTENSION='dylib' ;;
371 dnl prefix can be 'cyg' or 'lib'
372 LIB_PREFIX_GLOB='???'
373 LIB_VERSION_SEPARATOR='-'
374 LIB_EXTENSION='dll' ;;
378 LIB_EXTENSION='so' ;;
381 AC_ARG_WITH([gl-lib-name],
382 [AS_HELP_STRING([--with-gl-lib-name@<:@=NAME@:>@],
383 [specify GL library name @<:@default=GL@:>@])],
386 AC_ARG_WITH([osmesa-lib-name],
387 [AS_HELP_STRING([--with-osmesa-lib-name@<:@=NAME@:>@],
388 [specify OSMesa library name @<:@default=OSMesa@:>@])],
389 [OSMESA_LIB=$withval],
391 AS_IF([test "x$GL_LIB" = xyes], [GL_LIB=GL])
392 AS_IF([test "x$OSMESA_LIB" = xyes], [OSMESA_LIB=OSMesa])
395 dnl Mangled Mesa support
397 AC_ARG_ENABLE([mangling],
398 [AS_HELP_STRING([--enable-mangling],
399 [enable mangled symbols and library name @<:@default=disabled@:>@])],
400 [enable_mangling="${enableval}"],
403 if test "x${enable_mangling}" = "xyes" ; then
404 DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
405 GL_LIB="Mangled${GL_LIB}"
406 OSMESA_LIB="Mangled${OSMESA_LIB}"
409 AC_SUBST([OSMESA_LIB])
412 dnl potentially-infringing-but-nobody-knows-for-sure stuff
414 AC_ARG_ENABLE([texture-float],
415 [AS_HELP_STRING([--enable-texture-float],
416 [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
417 [enable_texture_float="$enableval"],
418 [enable_texture_float=no]
420 if test "x$enable_texture_float" = xyes; then
421 AC_MSG_WARN([Floating-point textures enabled.])
422 AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
423 DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
426 GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
427 OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
428 EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
429 GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
430 GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION}
431 VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION}
432 GLAPI_LIB_NAME='lib$(GLAPI_LIB).'${LIB_EXTENSION}
434 GL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
435 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
436 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
437 GLESv1_CM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv1_CM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
438 GLESv2_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv2_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
439 VG_LIB_GLOB=${LIB_PREFIX_GLOB}'$(VG_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
440 GLAPI_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLAPI_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
442 AC_SUBST([GL_LIB_NAME])
443 AC_SUBST([OSMESA_LIB_NAME])
444 AC_SUBST([EGL_LIB_NAME])
445 AC_SUBST([GLESv1_CM_LIB_NAME])
446 AC_SUBST([GLESv2_LIB_NAME])
447 AC_SUBST([VG_LIB_NAME])
448 AC_SUBST([GLAPI_LIB_NAME])
450 AC_SUBST([GL_LIB_GLOB])
451 AC_SUBST([EGL_LIB_GLOB])
452 AC_SUBST([GLESv1_CM_LIB_GLOB])
453 AC_SUBST([GLESv2_LIB_GLOB])
454 AC_SUBST([VG_LIB_GLOB])
455 AC_SUBST([GLAPI_LIB_GLOB])
458 dnl Arch/platform-specific settings
461 [AS_HELP_STRING([--disable-asm],
462 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
463 [enable_asm="$enableval"],
468 AC_MSG_CHECKING([whether to enable assembly])
469 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
470 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
471 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
475 AC_MSG_RESULT([no, cross compiling])
479 # check for supported arches
480 if test "x$enable_asm" = xyes; then
484 linux* | *freebsd* | dragonfly* | *netbsd*)
485 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
491 linux* | *freebsd* | dragonfly* | *netbsd*)
492 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
507 DEFINES="$DEFINES -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
508 MESA_ASM_FILES='$(X86_FILES)'
509 AC_MSG_RESULT([yes, x86])
512 DEFINES="$DEFINES -DUSE_X86_64_ASM"
513 MESA_ASM_FILES='$(X86_64_FILES)'
514 AC_MSG_RESULT([yes, x86_64])
517 DEFINES="$DEFINES -DUSE_SPARC_ASM"
518 MESA_ASM_FILES='$(SPARC_FILES)'
519 AC_MSG_RESULT([yes, sparc])
522 AC_MSG_RESULT([no, platform not supported])
526 AC_SUBST([MESA_ASM_FILES])
531 dnl Check to see if dlopen is in default libraries (like Solaris, which
532 dnl has it in libc), or if libdl is needed to get it.
533 AC_CHECK_FUNC([dlopen], [DEFINES="$DEFINES -DHAVE_DLOPEN"],
534 [AC_CHECK_LIB([dl], [dlopen],
535 [DEFINES="$DEFINES -DHAVE_DLOPEN"; DLOPEN_LIBS="-ldl"])])
536 AC_SUBST([DLOPEN_LIBS])
538 AC_CHECK_FUNCS([clock_gettime], [CLOCK_LIB=],
539 [AC_CHECK_LIB([rt], [clock_gettime], [CLOCK_LIB=-lrt],
540 [AC_MSG_ERROR([Couldn't find clock_gettime])])])
541 AC_SUBST([CLOCK_LIB])
543 dnl See if posix_memalign is available
544 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
546 dnl Check for pthreads
548 dnl AX_PTHREADS leaves PTHREAD_LIBS empty for gcc and sets PTHREAD_CFLAGS
549 dnl to -pthread, which causes problems if we need -lpthread to appear in
551 test -z "$PTHREAD_LIBS" && PTHREAD_LIBS="-lpthread"
553 dnl SELinux awareness.
554 AC_ARG_ENABLE([selinux],
555 [AS_HELP_STRING([--enable-selinux],
556 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
557 [MESA_SELINUX="$enableval"],
559 if test "x$enable_selinux" = "xyes"; then
560 AC_CHECK_HEADER([selinux/selinux.h],[],
561 [AC_MSG_ERROR([SELinux headers not found])])
562 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
563 [AC_MSG_ERROR([SELinux library not found])])
564 SELINUX_LIBS="-lselinux"
565 DEFINES="$DEFINES -DMESA_SELINUX"
567 AC_SUBST([SELINUX_LIBS])
570 AC_ARG_ENABLE([opengl],
571 [AS_HELP_STRING([--disable-opengl],
572 [disable support for standard OpenGL API @<:@default=no@:>@])],
573 [enable_opengl="$enableval"],
575 AC_ARG_ENABLE([gles1],
576 [AS_HELP_STRING([--enable-gles1],
577 [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
578 [enable_gles1="$enableval"],
580 AC_ARG_ENABLE([gles2],
581 [AS_HELP_STRING([--enable-gles2],
582 [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
583 [enable_gles2="$enableval"],
585 AC_ARG_ENABLE([openvg],
586 [AS_HELP_STRING([--enable-openvg],
587 [enable support for OpenVG API @<:@default=no@:>@])],
588 [enable_openvg="$enableval"],
592 [AS_HELP_STRING([--enable-dri],
593 [enable DRI modules @<:@default=enabled@:>@])],
594 [enable_dri="$enableval"],
597 [AS_HELP_STRING([--enable-glx],
598 [enable GLX library @<:@default=enabled@:>@])],
599 [enable_glx="$enableval"],
601 AC_ARG_ENABLE([osmesa],
602 [AS_HELP_STRING([--enable-osmesa],
603 [enable OSMesa library @<:@default=disabled@:>@])],
604 [enable_osmesa="$enableval"],
607 [AS_HELP_STRING([--disable-egl],
608 [disable EGL library @<:@default=enabled@:>@])],
609 [enable_egl="$enableval"],
612 AC_ARG_ENABLE([xorg],
613 [AS_HELP_STRING([--enable-xorg],
614 [enable support for X.Org DDX API @<:@default=no@:>@])],
615 [enable_xorg="$enableval"],
618 [AS_HELP_STRING([--enable-xa],
619 [enable build of the XA X Acceleration API @<:@default=no@:>@])],
620 [enable_xa="$enableval"],
622 dnl Broken, unmaintained. Don't want to see bug reports about it without patches.
624 dnl AC_ARG_ENABLE([d3d1x],
625 dnl [AS_HELP_STRING([--enable-d3d1x],
626 dnl [enable support for Direct3D 10 & 11 low-level API @<:@default=no@:>@])],
627 dnl [enable_d3d1x="$enableval"],
628 dnl [enable_d3d1x=no])
630 [AS_HELP_STRING([--enable-gbm],
631 [enable gbm library @<:@default=auto@:>@])],
632 [enable_gbm="$enableval"],
635 AC_ARG_ENABLE([xvmc],
636 [AS_HELP_STRING([--enable-xvmc],
637 [enable xvmc library @<:@default=auto@:>@])],
638 [enable_xvmc="$enableval"],
640 AC_ARG_ENABLE([vdpau],
641 [AS_HELP_STRING([--enable-vdpau],
642 [enable vdpau library @<:@default=auto@:>@])],
643 [enable_vdpau="$enableval"],
645 AC_ARG_ENABLE([opencl],
646 [AS_HELP_STRING([--enable-opencl],
647 [enable OpenCL library @<:@default=no@:>@])],
648 [enable_opencl="$enableval"],
650 AC_ARG_ENABLE([xlib_glx],
651 [AS_HELP_STRING([--enable-xlib-glx],
652 [make GLX library Xlib-based instead of DRI-based @<:@default=disabled@:>@])],
653 [enable_xlib_glx="$enableval"],
654 [enable_xlib_glx=no])
655 AC_ARG_ENABLE([gallium_egl],
656 [AS_HELP_STRING([--enable-gallium-egl],
657 [enable optional EGL state tracker (not required
658 for EGL support in Gallium with OpenGL and OpenGL ES)
659 @<:@default=disable@:>@])],
660 [enable_gallium_egl="$enableval"],
661 [enable_gallium_egl=no])
662 AC_ARG_ENABLE([gallium_gbm],
663 [AS_HELP_STRING([--enable-gallium-gbm],
664 [enable optional gbm state tracker (not required for
665 gbm support in Gallium)
666 @<:@default=auto@:>@])],
667 [enable_gallium_gbm="$enableval"],
668 [enable_gallium_gbm=auto])
670 AC_ARG_ENABLE([r600-llvm-compiler],
671 [AS_HELP_STRING([--enable-r600-llvm-compiler],
672 [Enable experimental LLVM backend for graphics shaders @<:@default=disable@:>@])],
673 [enable_r600_llvm="$enableval"],
674 [enable_r600_llvm=no])
676 AC_ARG_ENABLE([gallium_tests],
677 [AS_HELP_STRING([--enable-gallium-tests],
678 [Enable optional Gallium tests) @<:@default=disable@:>@])],
679 [enable_gallium_tests="$enableval"],
680 [enable_gallium_tests=no])
682 # Option for Gallium drivers
683 GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
685 AC_ARG_WITH([gallium-drivers],
686 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
687 [comma delimited Gallium drivers list, e.g.
688 "i915,nouveau,r300,r600,radeonsi,svga,swrast"
689 @<:@default=r300,r600,swrast@:>@])],
690 [with_gallium_drivers="$withval"],
691 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
693 # Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it
694 # here so that the script doesn't choke on an unknown driver name later.
695 case "$with_gallium_drivers" in
696 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
697 no) with_gallium_drivers='' ;;
700 if test "x$enable_opengl" = xno -a \
701 "x$enable_gles1" = xno -a \
702 "x$enable_gles2" = xno -a \
703 "x$enable_openvg" = xno -a \
704 "x$enable_xorg" = xno -a \
705 "x$enable_xa" = xno -a \
706 "x$enable_d3d1x" = xno -a \
707 "x$enable_xvmc" = xno -a \
708 "x$enable_vdpau" = xno -a \
709 "x$enable_opencl" = xno; then
710 AC_MSG_ERROR([at least one API should be enabled])
714 if test "x$enable_opengl" = xno; then
715 API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
717 API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
719 if test "x$enable_gles1" = xyes; then
720 API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
722 if test "x$enable_gles2" = xyes; then
723 API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
725 AC_SUBST([API_DEFINES])
727 if test "x$enable_glx" = xno; then
728 AC_MSG_WARN([GLX disabled, disabling Xlib-GLX])
732 if test "x$enable_dri$enable_xlib_glx" = xyesyes; then
733 AC_MSG_ERROR([DRI and Xlib-GLX cannot be built together])
736 # Disable GLX if DRI and Xlib-GLX are not enabled
737 if test "x$enable_glx" = xyes -a \
738 "x$enable_dri" = xno -a \
739 "x$enable_xlib_glx" = xno; then
740 AC_MSG_WARN([Neither DRI nor Xlib-GLX enabled, disabling GLX])
744 AM_CONDITIONAL(HAVE_DRI, test "x$enable_dri" = xyes)
745 AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_xlib_glx" = xyes -o \
746 "x$enable_osmesa" = xyes)
748 AC_ARG_ENABLE([shared-glapi],
749 [AS_HELP_STRING([--enable-shared-glapi],
750 [Enable shared glapi for OpenGL @<:@default=yes@:>@])],
751 [enable_shared_glapi="$enableval"],
752 [enable_shared_glapi="$enable_dri"])
754 # Shared GLAPI is only useful for DRI
755 if test "x$enable_dri" = xno; then
756 AC_MSG_NOTICE([Shared GLAPI is only useful for DRI, disabling])
757 enable_shared_glapi=no
760 # TODO: Get rid of SHARED_GLAPI variable
762 if test "x$enable_shared_glapi" = xyes; then
764 # libGL will use libglapi for function lookups (IN_DRI_DRIVER means to use
766 DEFINES="$DEFINES -DIN_DRI_DRIVER"
767 CORE_DIRS="mapi/shared-glapi"
769 AC_SUBST([SHARED_GLAPI])
770 AM_CONDITIONAL(HAVE_SHARED_GLAPI, test "x$enable_shared_glapi" = xyes)
773 dnl Driver specific build directories
776 GALLIUM_DIRS="auxiliary drivers state_trackers"
777 GALLIUM_TARGET_DIRS=""
778 GALLIUM_WINSYS_DIRS="sw"
779 GALLIUM_DRIVERS_DIRS="galahad trace rbug noop identity"
780 GALLIUM_STATE_TRACKERS_DIRS=""
782 # build glapi if OpenGL is enabled
783 if test "x$enable_opengl" = xyes; then
784 CORE_DIRS="$CORE_DIRS mapi/glapi"
787 # build es1api if OpenGL ES 1.x is enabled
788 if test "x$enable_gles1" = xyes; then
789 CORE_DIRS="$CORE_DIRS mapi/es1api"
792 # build es2api if OpenGL ES 2.x is enabled
793 if test "x$enable_gles2" = xyes; then
794 CORE_DIRS="$CORE_DIRS mapi/es2api"
797 # build glsl and mesa if OpenGL or OpenGL ES is enabled
798 case "x$enable_opengl$enable_gles1$enable_gles2" in
800 CORE_DIRS="mapi/glapi/gen $CORE_DIRS glsl mesa"
804 case "x$enable_glx$enable_xlib_glx" in
806 DRIVER_DIRS="$DRIVER_DIRS x11"
807 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
808 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
809 GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS"
810 HAVE_WINSYS_XLIB="yes"
814 SRC_DIRS="$SRC_DIRS glx"
818 if test "x$enable_dri" = xyes; then
819 DRIVER_DIRS="$DRIVER_DIRS dri"
821 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/dri"
822 GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
826 if test "x$enable_osmesa" = xyes; then
827 DRIVER_DIRS="$DRIVER_DIRS osmesa"
831 AC_SUBST([DRIVER_DIRS])
832 AC_SUBST([GALLIUM_DIRS])
833 AC_SUBST([GALLIUM_TARGET_DIRS])
834 AC_SUBST([GALLIUM_WINSYS_DIRS])
835 AC_SUBST([GALLIUM_DRIVERS_DIRS])
836 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
837 AC_SUBST([MESA_LLVM])
840 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
841 [have_libdrm=yes], [have_libdrm=no])
843 if test "x$enable_dri" = xyes; then
844 # DRI must be shared, I think
845 if test "$enable_static" = yes; then
846 AC_MSG_ERROR([Cannot use static libraries for DRI drivers])
849 # not a hard requirement as swrast does not depend on it
850 if test "x$have_libdrm" = xyes; then
851 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
855 dnl Find out if X is available.
856 PKG_CHECK_MODULES([X11], [x11], [no_x=no], [no_x=yes])
858 dnl Try to tell the user that the --x-* options are only used when
859 dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
860 m4_divert_once([HELP_BEGIN],
861 [These options are only used when the X libraries cannot be found by the
862 pkg-config utility.])
864 dnl We need X for xlib and dri, so bomb now if it's not found
865 if test "x$enable_glx" = xyes -a "x$no_x" = xyes; then
866 AC_MSG_ERROR([X11 development libraries needed for GLX])
869 dnl Direct rendering or just indirect rendering
872 dnl Disable by default on GNU/Hurd
873 driglx_direct_default="no"
876 dnl Disable by default on cygwin
877 driglx_direct_default="no"
880 driglx_direct_default="yes"
883 AC_ARG_ENABLE([driglx-direct],
884 [AS_HELP_STRING([--disable-driglx-direct],
885 [disable direct rendering in GLX and EGL for DRI \
886 @<:@default=auto@:>@])],
887 [driglx_direct="$enableval"],
888 [driglx_direct="$driglx_direct_default"])
891 dnl libGL configuration per driver
893 case "x$enable_glx$enable_xlib_glx" in
896 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
897 GL_PC_REQ_PRIV="x11 xext"
898 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
899 GL_LIB_DEPS="$XLIBGL_LIBS"
900 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
901 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm $PTHREAD_LIBS"
905 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
906 if test x"$driglx_direct" = xyes; then
907 if test "x$have_libdrm" != xyes; then
908 AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
910 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
911 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED"
914 # find the DRI deps for libGL
915 dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx >= 1.8.1 xcb-dri2 >= 1.8"
917 # add xf86vidmode if available
918 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
919 if test "$HAVE_XF86VIDMODE" = yes ; then
920 dri_modules="$dri_modules xxf86vm"
923 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
924 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
925 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
926 GL_LIB_DEPS="$DRIGL_LIBS"
928 # need DRM libs, $PTHREAD_LIBS, etc.
929 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
930 GL_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
934 # This is outside the case (above) so that it is invoked even for non-GLX
936 AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
938 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
939 GLESv1_CM_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
940 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
941 GLESv2_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
943 AC_SUBST([X11_INCLUDES])
944 AC_SUBST([GL_LIB_DEPS])
945 AC_SUBST([GL_PC_REQ_PRIV])
946 AC_SUBST([GL_PC_LIB_PRIV])
947 AC_SUBST([GL_PC_CFLAGS])
948 AC_SUBST([DRI_PC_REQ_PRIV])
949 AC_SUBST([GLESv1_CM_LIB_DEPS])
950 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
951 AC_SUBST([GLESv2_LIB_DEPS])
952 AC_SUBST([GLESv2_PC_LIB_PRIV])
954 DRI_LIB_DEPS="\$(top_builddir)/src/mesa/libdricore/libdricore${VERSION}.la"
956 AC_SUBST([HAVE_XF86VIDMODE])
961 case "x$enable_glx$enable_xlib_glx" in
963 DEFINES="$DEFINES -DUSE_XSHM"
966 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
967 if test "x$driglx_direct" = xyes; then
968 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
977 AC_ARG_ENABLE([glx-tls],
978 [AS_HELP_STRING([--enable-glx-tls],
979 [enable TLS support in GLX @<:@default=disabled@:>@])],
980 [GLX_USE_TLS="$enableval"],
982 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
984 AS_IF([test "x$GLX_USE_TLS" = xyes -a "x$ax_pthread_ok" = xyes],
985 [DEFINES="${DEFINES} -DGLX_USE_TLS -DHAVE_PTHREAD"])
990 dnl Directory for DRI drivers
991 AC_ARG_WITH([dri-driverdir],
992 [AS_HELP_STRING([--with-dri-driverdir=DIR],
993 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
994 [DRI_DRIVER_INSTALL_DIR="$withval"],
995 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
996 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
997 dnl Extra search path for DRI drivers
998 AC_ARG_WITH([dri-searchpath],
999 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
1000 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
1001 [DRI_DRIVER_SEARCH_DIR="$withval"],
1002 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
1003 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
1004 dnl Which drivers to build - default is chosen by platform
1005 AC_ARG_WITH([dri-drivers],
1006 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
1007 [comma delimited DRI drivers list, e.g.
1008 "swrast,i965,radeon" @<:@default=auto@:>@])],
1009 [with_dri_drivers="$withval"],
1010 [with_dri_drivers=yes])
1011 if test "x$with_dri_drivers" = x; then
1015 dnl If $with_dri_drivers is yes, directories will be added through
1018 case "$with_dri_drivers" in
1021 # classic DRI drivers require FEATURE_GL to build
1022 if test "x$enable_opengl" = xyes; then
1027 # verify the requested driver directories exist
1028 dri_drivers=`IFS=', '; echo $with_dri_drivers`
1029 for driver in $dri_drivers; do
1030 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
1031 AC_MSG_ERROR([DRI driver directory '$driver' does not exist])
1033 DRI_DIRS="$dri_drivers"
1034 if test -n "$DRI_DIRS" -a "x$enable_opengl" != xyes; then
1035 AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1040 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
1041 if test "x$enable_dri" = xyes; then
1042 # Platform specific settings and drivers to build
1045 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1046 DEFINES="$DEFINES -DHAVE_ALIAS"
1050 if test "x$DRI_DIRS" = "xyes"; then
1051 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1055 # Build only the drivers for cards that exist on PowerPC.
1056 if test "x$DRI_DIRS" = "xyes"; then
1057 DRI_DIRS="r200 radeon swrast"
1061 # Build only the drivers for cards that exist on sparc
1062 if test "x$DRI_DIRS" = "xyes"; then
1063 DRI_DIRS="r200 radeon swrast"
1068 freebsd* | dragonfly* | *netbsd*)
1069 DEFINES="$DEFINES -DHAVE_PTHREAD -DUSE_EXTERNAL_DXTN_LIB=1"
1070 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
1072 if test "x$DRI_DIRS" = "xyes"; then
1073 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1077 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1078 DEFINES="$DEFINES -DHAVE_ALIAS"
1081 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1084 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1085 if test "x$DRI_DIRS" = "xyes"; then
1092 if test "x$DRI_DIRS" = "xyes"; then
1093 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1096 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
1099 if test "x$enable_dri" = xyes; then
1102 AC_ARG_WITH([expat],
1103 [AS_HELP_STRING([--with-expat=DIR],
1104 [expat install directory])],[
1105 EXPAT_INCLUDES="-I$withval/include"
1106 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
1107 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
1108 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
1110 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
1112 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1113 [AC_MSG_ERROR([Expat required for DRI.])])
1117 # if we are building any dri driver other than swrast ...
1118 if test -n "$DRI_DIRS" -a x"$DRI_DIRS" != xswrast; then
1119 # ... libdrm is required
1120 if test "x$have_libdrm" != xyes; then
1121 AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
1123 # ... and build dricommon
1127 # put all the necessary libs together
1128 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1129 GALLIUM_DRI_LIB_DEPS="$GALLIUM_DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm $CLOCK_LIB $PTHREAD_LIBS $DLOPEN_LIBS"
1131 AM_CONDITIONAL(NEED_LIBDRICORE, test -n "$DRI_DIRS")
1132 AC_SUBST([DRI_DIRS])
1133 AC_SUBST([EXPAT_INCLUDES])
1134 AC_SUBST([DRI_LIB_DEPS])
1135 AC_SUBST([GALLIUM_DRI_LIB_DEPS])
1139 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1141 for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1157 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED])
1158 HAVE_NOUVEAU_DRI=yes;
1164 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1166 for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1169 HAVE_RADEON_DRI=yes;
1182 HAVE_SWRAST_DRI=yes;
1186 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
1187 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
1188 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
1189 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
1190 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
1191 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
1192 AM_CONDITIONAL(HAVE_COMMON_DRI, test x$HAVE_COMMON_DRI = xyes)
1195 dnl OSMesa configuration
1198 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1199 AC_ARG_WITH([osmesa-bits],
1200 [AS_HELP_STRING([--with-osmesa-bits=BITS],
1201 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1202 [osmesa_bits="$withval"],
1204 if test "x$osmesa_bits" != x8; then
1205 if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then
1206 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1210 case "x$osmesa_bits" in
1212 OSMESA_LIB="${OSMESA_LIB}"
1215 OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
1216 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1219 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1223 if test "x$enable_osmesa" = xyes; then
1224 # only link libraries with osmesa if shared
1225 if test "$enable_static" = no; then
1226 OSMESA_LIB_DEPS="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1231 OSMESA_PC_LIB_PRIV="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1234 AC_SUBST([OSMESA_LIB_DEPS])
1235 AC_SUBST([OSMESA_MESA_DEPS])
1236 AC_SUBST([OSMESA_PC_REQ])
1237 AC_SUBST([OSMESA_PC_LIB_PRIV])
1240 dnl gbm configuration
1242 if test "x$enable_gbm" = xauto; then
1243 case "$with_egl_platforms" in
1250 if test "x$enable_gbm" = xyes; then
1251 SRC_DIRS="$SRC_DIRS gbm"
1253 PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1254 AC_MSG_ERROR([gbm needs udev]))
1256 if test "x$enable_dri" = xyes; then
1257 GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
1258 if test "x$enable_shared_glapi" = xno; then
1259 AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1263 GBM_PC_REQ_PRIV="libudev"
1264 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1265 AC_SUBST([GBM_PC_REQ_PRIV])
1266 AC_SUBST([GBM_PC_LIB_PRIV])
1269 dnl EGL configuration
1273 if test "x$enable_egl" = xyes; then
1274 SRC_DIRS="$SRC_DIRS egl"
1275 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS $PTHREAD_LIBS"
1277 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1279 if test "$enable_static" != yes; then
1280 # build egl_glx when libGL is built
1281 PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1282 [have_libudev=yes],[have_libudev=no])
1283 if test "$have_libudev" = yes; then
1284 DEFINES="$DEFINES -DHAVE_LIBUDEV"
1287 if test "x$enable_dri" = xyes; then
1288 HAVE_EGL_DRIVER_DRI2=1
1293 AC_SUBST([EGL_LIB_DEPS])
1296 dnl EGL Gallium configuration
1298 if test "x$enable_gallium_egl" = xyes; then
1299 if test "x$with_gallium_drivers" = x; then
1300 AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
1302 if test "x$enable_egl" = xno; then
1303 AC_MSG_ERROR([cannot enable egl_gallium without EGL])
1305 if test "x$have_libdrm" != xyes; then
1306 AC_MSG_ERROR([egl_gallium requires libdrm >= $LIBDRM_REQUIRED])
1309 GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
1310 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static"
1315 dnl gbm Gallium configuration
1317 if test "x$enable_gallium_gbm" = xauto; then
1318 case "$enable_gbm$HAVE_ST_EGL$enable_dri$with_egl_platforms" in
1320 enable_gallium_gbm=yes ;;
1322 enable_gallium_gbm=no ;;
1325 if test "x$enable_gallium_gbm" = xyes; then
1326 if test "x$with_gallium_drivers" = x; then
1327 AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
1329 if test "x$enable_gbm" = xno; then
1330 AC_MSG_ERROR([cannot enable gbm_gallium without gbm])
1332 # gbm_gallium abuses DRI_LIB_DEPS to link. Make sure it is set.
1333 if test "x$enable_dri" = xno; then
1334 AC_MSG_ERROR([gbm_gallium requires --enable-dri to build])
1337 GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS"
1338 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm"
1340 enable_gallium_loader=yes
1344 dnl X.Org DDX configuration
1346 if test "x$enable_xorg" = xyes; then
1347 PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1348 PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1349 PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1350 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1351 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1352 HAVE_XEXTPROTO_71="no")
1353 GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS"
1358 dnl XA configuration
1360 if test "x$enable_xa" = xyes; then
1363 AC_CHECK_PROG(NM, nm, "nm")
1364 if test "x$AWK" = x || test "x$GREP" = x || test "x$NM" = x; then
1365 AC_MSG_WARN([Missing one of nm, grep or awk. Disabling xa.])
1369 if test "x$enable_xa" = xyes; then
1370 GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS"
1378 dnl OpenVG configuration
1382 if test "x$enable_openvg" = xyes; then
1383 if test "x$enable_egl" = xno; then
1384 AC_MSG_ERROR([cannot enable OpenVG without EGL])
1386 if test "x$with_gallium_drivers" = x; then
1387 AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1389 if test "x$enable_gallium_egl" = xno; then
1390 AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
1393 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1394 VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS $PTHREAD_LIBS"
1395 CORE_DIRS="$CORE_DIRS mapi/vgapi"
1396 GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1398 VG_PC_LIB_PRIV="-lm $CLOCK_LIB $PTHREAD_LIBS $DLOPEN_LIBS"
1399 AC_SUBST([VG_PC_LIB_PRIV])
1403 dnl D3D1X configuration
1406 if test "x$enable_d3d1x" = xyes; then
1407 if test "x$with_gallium_drivers" = x; then
1408 AC_MSG_ERROR([cannot enable D3D1X without Gallium])
1411 GALLIUM_STATE_TRACKERS_DIRS="d3d1x $GALLIUM_STATE_TRACKERS_DIRS"
1416 dnl Gallium G3DVL configuration
1418 AC_ARG_ENABLE([gallium-g3dvl],
1419 [AS_HELP_STRING([--enable-gallium-g3dvl],
1420 [build gallium g3dvl @<:@default=disabled@:>@])],
1421 [enable_gallium_g3dvl="$enableval"],
1422 [enable_gallium_g3dvl=no])
1423 if test "x$enable_gallium_g3dvl" = xyes; then
1424 if test "x$with_gallium_drivers" = x; then
1425 AC_MSG_ERROR([cannot enable G3DVL without Gallium])
1428 if test "x$enable_xvmc" = xauto; then
1429 PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no])
1432 if test "x$enable_vdpau" = xauto; then
1433 PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no])
1437 if test "x$enable_xvmc" = xyes; then
1438 PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6 x11-xcb xcb-dri2 >= 1.8])
1439 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xvmc"
1443 if test "x$enable_vdpau" = xyes; then
1444 PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.4.1 x11-xcb xcb-dri2 >= 1.8])
1445 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau"
1450 dnl OpenCL configuration
1453 AC_ARG_WITH([libclc-path],
1454 [AS_HELP_STRING([--with-libclc-path],
1455 [DEPRECATED: See http://dri.freedesktop.org/wiki/GalliumCompute#How_to_Install])],
1456 [LIBCLC_PATH="$withval"],
1459 if test "x$LIBCLC_PATH" != x; then
1460 AC_MSG_ERROR([The --with-libclc-path option has been deprecated.
1461 Please review the updated build instructions for clover:
1462 http://dri.freedesktop.org/wiki/GalliumCompute])
1466 AC_ARG_WITH([clang-libdir],
1467 [AS_HELP_STRING([--with-clang-libdir],
1468 [Path to Clang libraries @<:@default=llvm-config --libdir@:>@])],
1469 [CLANG_LIBDIR="$withval"],
1472 LIBCLC_INCLUDEDIR=`pkg-config --variable=includedir libclc`
1473 LIBCLC_LIBEXECDIR=`pkg-config --variable=libexecdir libclc`
1474 AC_SUBST([LIBCLC_INCLUDEDIR])
1475 AC_SUBST([LIBCLC_LIBEXECDIR])
1477 if test "x$enable_opencl" = xyes; then
1478 if test "x$with_gallium_drivers" = x; then
1479 AC_MSG_ERROR([cannot enable OpenCL without Gallium])
1482 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6; then
1483 AC_MSG_ERROR([gcc >= 4.6 is required to build clover])
1486 if test "x$LIBCLC_INCLUDEDIR" == x || test "x$LIBCLC_LIBEXECDIR" == x; then
1487 AC_MSG_ERROR([pkg-config cannot use libclc.pc which is required to build clover])
1490 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS clover"
1491 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS opencl"
1492 enable_gallium_loader=yes
1496 dnl Gallium configuration
1498 if test "x$with_gallium_drivers" != x; then
1499 SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
1501 AM_CONDITIONAL(HAVE_GALLIUM, test "x$with_gallium_drivers" != x)
1503 AC_SUBST([LLVM_BINDIR])
1504 AC_SUBST([LLVM_CFLAGS])
1505 AC_SUBST([LLVM_CPPFLAGS])
1506 AC_SUBST([LLVM_CXXFLAGS])
1507 AC_SUBST([LLVM_LIBDIR])
1508 AC_SUBST([LLVM_LIBS])
1509 AC_SUBST([LLVM_LDFLAGS])
1510 AC_SUBST([LLVM_INCLUDEDIR])
1511 AC_SUBST([LLVM_VERSION])
1512 AC_SUBST([CLANG_RESOURCE_DIR])
1514 case "x$enable_opengl$enable_gles1$enable_gles2" in
1516 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1520 AC_SUBST([VG_LIB_DEPS])
1521 AC_SUBST([EGL_CLIENT_APIS])
1524 dnl EGL Platforms configuration
1526 AC_ARG_WITH([egl-platforms],
1527 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1528 [comma delimited native platforms libEGL supports, e.g.
1529 "x11,drm" @<:@default=auto@:>@])],
1530 [with_egl_platforms="$withval"],
1531 [if test "x$enable_egl" = xyes; then
1532 with_egl_platforms="x11"
1534 with_egl_platforms=""
1539 if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
1540 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1543 # Do per-EGL platform setups and checks
1544 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1545 for plat in $egl_platforms; do
1548 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/$plat"
1552 PKG_CHECK_MODULES([WAYLAND], [wayland-client >= 1.0.2 wayland-server >= 1.0.2])
1553 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
1555 WAYLAND_PREFIX=`$PKG_CONFIG --variable=prefix wayland-client`
1556 AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner],,
1557 [${WAYLAND_PREFIX}/bin$PATH_SEPARATOR$PATH])
1561 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 >= 1.8 xcb-xfixes])
1563 if test "x$enable_glx" = xyes; then
1564 HAVE_EGL_DRIVER_GLX=1
1569 test "x$enable_gbm" = "xno" &&
1570 AC_MSG_ERROR([EGL platform drm needs gbm])
1577 AC_MSG_ERROR([EGL platform '$plat' does not exist])
1581 case "$plat$have_libudev" in
1583 AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;;
1587 # libEGL wants to default to the first platform specified in
1588 # ./configure. parse that here.
1589 if test "x$egl_platforms" != "x"; then
1590 FIRST_PLATFORM_CAPS=`echo $egl_platforms | sed 's| .*||' | tr 'a-z' 'A-Z'`
1591 EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
1593 EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
1596 EGL_PLATFORMS="$egl_platforms"
1598 AM_CONDITIONAL(HAVE_EGL_PLATFORM_X11, echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1)
1599 AM_CONDITIONAL(HAVE_EGL_PLATFORM_WAYLAND, echo "$egl_platforms" | grep 'wayland' >/dev/null 2>&1)
1600 AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep 'drm' >/dev/null 2>&1)
1601 AM_CONDITIONAL(HAVE_EGL_PLATFORM_FBDEV, echo "$egl_platforms" | grep 'fbdev' >/dev/null 2>&1)
1602 AM_CONDITIONAL(HAVE_EGL_PLATFORM_NULL, echo "$egl_platforms" | grep 'null' >/dev/null 2>&1)
1604 AM_CONDITIONAL(HAVE_EGL_DRIVER_DRI2, test "x$HAVE_EGL_DRIVER_DRI2" != "x")
1605 AM_CONDITIONAL(HAVE_EGL_DRIVER_GLX, test "x$HAVE_EGL_DRIVER_GLX" != "x")
1607 AC_SUBST([EGL_NATIVE_PLATFORM])
1608 AC_SUBST([EGL_PLATFORMS])
1609 AC_SUBST([EGL_CFLAGS])
1611 AC_ARG_WITH([egl-driver-dir],
1612 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1613 [directory for EGL drivers [[default=${libdir}/egl]]])],
1614 [EGL_DRIVER_INSTALL_DIR="$withval"],
1615 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1616 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1618 AC_ARG_WITH([xorg-driver-dir],
1619 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1620 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1621 [XORG_DRIVER_INSTALL_DIR="$withval"],
1622 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1623 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1625 AC_ARG_WITH([max-width],
1626 [AS_HELP_STRING([--with-max-width=N],
1627 [Maximum framebuffer width (4096)])],
1628 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1629 AS_IF([test "${withval}" -gt "4096"],
1630 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1632 AC_ARG_WITH([max-height],
1633 [AS_HELP_STRING([--with-max-height=N],
1634 [Maximum framebuffer height (4096)])],
1635 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1636 AS_IF([test "${withval}" -gt "4096"],
1637 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1643 AC_ARG_ENABLE([gallium-llvm],
1644 [AS_HELP_STRING([--enable-gallium-llvm],
1645 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1646 [enable_gallium_llvm="$enableval"],
1647 [enable_gallium_llvm=auto])
1649 AC_ARG_WITH([llvm-shared-libs],
1650 [AS_HELP_STRING([--with-llvm-shared-libs],
1651 [link with LLVM shared libraries @<:@default=disabled@:>@])],
1652 [with_llvm_shared_libs=yes],
1653 [with_llvm_shared_libs=no])
1655 AC_ARG_WITH([llvm-prefix],
1656 [AS_HELP_STRING([--with-llvm-prefix],
1657 [Prefix for LLVM installations in non-standard locations])],
1658 [llvm_prefix="$withval"],
1662 # Call this inside ` ` to get the return value.
1663 # $1 is the llvm-config command with arguments.
1664 strip_unwanted_llvm_flags() {
1665 # Use \> (marks the end of the word)
1667 -e 's/-DNDEBUG\>//g' \
1668 -e 's/-pedantic\>//g' \
1669 -e 's/-Wcovered-switch-default\>//g' \
1673 -e 's/-fomit-frame-pointer\>//g'
1677 if test "x$with_gallium_drivers" = x; then
1678 enable_gallium_llvm=no
1680 if test "x$enable_gallium_llvm" = xauto; then
1682 i*86|x86_64) enable_gallium_llvm=yes;;
1685 if test "x$enable_gallium_llvm" = xyes; then
1686 if test "x$llvm_prefix" != x; then
1687 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no], ["$llvm_prefix/bin"])
1689 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1692 if test "x$LLVM_CONFIG" != xno; then
1693 LLVM_VERSION=`$LLVM_CONFIG --version | sed 's/svn.*//g'`
1694 LLVM_VERSION_INT=`echo $LLVM_VERSION | sed -e 's/\([[0-9]]\)\.\([[0-9]]\)/\10\2/g'`
1695 if test "x$with_llvm_shared_libs" = xyes; then
1696 dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
1697 LLVM_LIBS="-lLLVM-`$LLVM_CONFIG --version`"
1699 LLVM_COMPONENTS="engine bitwriter"
1700 if $LLVM_CONFIG --components | grep -q '\<mcjit\>'; then
1701 LLVM_COMPONENTS="${LLVM_COMPONENTS} mcjit"
1704 if test "x$enable_opencl" = xyes; then
1705 LLVM_COMPONENTS="${LLVM_COMPONENTS} ipo linker instrumentation"
1707 LLVM_LIBS="`$LLVM_CONFIG --libs ${LLVM_COMPONENTS}`"
1709 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1710 LLVM_BINDIR=`$LLVM_CONFIG --bindir`
1711 LLVM_CPPFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cppflags"`
1712 LLVM_CFLAGS=$LLVM_CPPFLAGS # CPPFLAGS seem to be sufficient
1713 LLVM_CXXFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cxxflags"`
1714 LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
1715 LLVM_LIBDIR=`$LLVM_CONFIG --libdir`
1716 DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT"
1719 dnl Check for Clang interanl headers
1720 if test "x$enable_opencl" = xyes; then
1721 if test "x$CLANG_LIBDIR" = x; then
1722 CLANG_LIBDIR=${LLVM_LIBDIR}
1724 CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION}
1725 AC_CHECK_FILE("$CLANG_RESOURCE_DIR/include/stddef.h",,
1726 AC_MSG_ERROR([Could not find clang internal header stddef.h in $CLANG_RESOURCE_DIR Use --with-clang-libdir to specify the correct path to the clang libraries.]))
1737 dnl Directory for XVMC libs
1738 AC_ARG_WITH([xvmc-libdir],
1739 [AS_HELP_STRING([--with-xvmc-libdir=DIR],
1740 [directory for the XVMC libraries @<:@default=${libdir}@:>@])],
1741 [XVMC_LIB_INSTALL_DIR="$withval"],
1742 [XVMC_LIB_INSTALL_DIR='${libdir}'])
1743 AC_SUBST([XVMC_LIB_INSTALL_DIR])
1748 if test "x$enable_gallium_tests" = xyes; then
1749 SRC_DIRS="$SRC_DIRS gallium/tests/trivial"
1750 enable_gallium_loader=yes
1753 dnl Directory for VDPAU libs
1754 AC_ARG_WITH([vdpau-libdir],
1755 [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1756 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1757 [VDPAU_LIB_INSTALL_DIR="$withval"],
1758 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1759 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
1761 dnl Directory for OpenCL libs
1762 AC_ARG_WITH([opencl-libdir],
1763 [AS_HELP_STRING([--with-opencl-libdir=DIR],
1764 [directory for the OpenCL libraries @<:@default=${libdir}/opencl@:>@])],
1765 [OPENCL_LIB_INSTALL_DIR="$withval"],
1766 [OPENCL_LIB_INSTALL_DIR='${libdir}/opencl'])
1767 AC_SUBST([OPENCL_LIB_INSTALL_DIR])
1770 dnl Gallium helper functions
1772 gallium_check_st() {
1773 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes ||
1774 test "x$HAVE_ST_XA" = xyes || test "x$HAVE_ST_XVMC" = xyes ||
1775 test "x$HAVE_ST_VDPAU" = xyes; then
1776 if test "x$have_libdrm" != xyes; then
1777 AC_MSG_ERROR([DRI or Xorg DDX requires libdrm >= $LIBDRM_REQUIRED])
1779 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1781 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1782 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1784 if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
1785 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1787 if test "x$HAVE_ST_XA" = xyes && test "x$4" != x; then
1788 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
1790 if test "x$HAVE_ST_XVMC" = xyes && test "x$5" != x; then
1791 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5"
1793 if test "x$HAVE_ST_VDPAU" = xyes && test "x$6" != x; then
1794 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6"
1798 gallium_require_llvm() {
1799 if test "x$MESA_LLVM" = x0; then
1801 i*86|x86_64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1806 gallium_require_drm_loader() {
1807 if test "x$enable_gallium_loader" = xyes; then
1808 PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1809 AC_MSG_ERROR([Gallium drm loader requires libudev]))
1810 if test "x$have_libdrm" != xyes; then
1811 AC_MSG_ERROR([Gallium drm loader requires libdrm >= $LIBDRM_REQUIRED])
1813 enable_gallium_drm_loader=yes
1817 radeon_llvm_check() {
1818 LLVM_REQUIRED_VERSION_MAJOR="3"
1819 LLVM_REQUIRED_VERSION_MINOR="2"
1820 if test "$LLVM_VERSION_INT" -lt "${LLVM_REQUIRED_VERSION_MAJOR}0${LLVM_REQUIRED_VERSION_MINOR}"; then
1821 AC_MSG_ERROR([LLVM $LLVM_REQUIRED_VERSION_MAJOR.$LLVM_REQUIRED_VERSION_MINOR or newer with R600 target enabled is required.
1822 To use the r600/radeonsi LLVM backend, you need to fetch the LLVM source from:
1823 git://people.freedesktop.org/~tstellar/llvm master
1824 and build with --enable-experimental-targets=R600])
1826 if test true && $LLVM_CONFIG --targets-built | grep -qv '\<R600\>' ; then
1827 AC_MSG_ERROR([LLVM R600 Target not enabled. You can enable it when building the LLVM
1828 sources with the --enable-experimental-targets=R600
1831 AC_MSG_WARN([Please ensure you use the latest llvm tree from git://people.freedesktop.org/~tstellar/llvm master before submitting a bug])
1832 LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --libs r600`"
1836 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
1837 if test "x$with_gallium_drivers" != x; then
1838 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1839 for driver in $gallium_drivers; do
1842 HAVE_GALLIUM_SVGA=yes
1843 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
1844 gallium_check_st "svga/drm" "dri-vmwgfx" "" "xa-vmwgfx"
1847 HAVE_GALLIUM_I915=yes
1848 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1849 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe"
1850 if test "x$MESA_LLVM" = x1; then
1851 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1853 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1854 gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1857 HAVE_GALLIUM_R300=yes
1858 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1859 gallium_require_llvm "Gallium R300"
1860 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1861 gallium_check_st "radeon/drm" "dri-r300" "xorg-r300" "" "xvmc-r300" "vdpau-r300"
1864 HAVE_GALLIUM_R600=yes
1865 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1866 gallium_require_drm_loader
1867 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1868 if test "x$enable_r600_llvm" = xyes -o "x$enable_opencl" = xyes; then
1870 NEED_RADEON_GALLIUM=yes;
1872 if test "x$enable_r600_llvm" = xyes; then
1873 USE_R600_LLVM_COMPILER=yes;
1875 if test "x$enable_opencl" = xyes -a "x$with_llvm_shared_libs" = xno; then
1876 LLVM_LIBS="${LLVM_LIBS} `$LLVM_CONFIG --libs bitreader asmparser`"
1878 gallium_check_st "radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600"
1881 HAVE_GALLIUM_RADEONSI=yes
1882 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1883 gallium_require_drm_loader
1884 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS radeonsi"
1886 NEED_RADEON_GALLIUM=yes;
1887 gallium_check_st "radeon/drm" "dri-radeonsi" "xorg-radeonsi" "" "" "vdpau-radeonsi" ""
1890 HAVE_GALLIUM_NOUVEAU=yes
1891 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1892 gallium_require_drm_loader
1893 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nv30 nv50 nvc0"
1894 gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau" "" "xvmc-nouveau" "vdpau-nouveau"
1897 HAVE_GALLIUM_SOFTPIPE=yes
1898 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe"
1899 if test "x$MESA_LLVM" = x1; then
1900 HAVE_GALLIUM_LLVMPIPE=yes
1901 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1904 if test "x$HAVE_ST_DRI" = xyes; then
1905 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1907 if test "x$HAVE_ST_VDPAU" = xyes; then
1908 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS vdpau-softpipe"
1910 if test "x$HAVE_ST_XVMC" = xyes; then
1911 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS xvmc-softpipe"
1913 if test "x$HAVE_ST_VDPAU" = xyes ||
1914 test "x$HAVE_ST_XVMC" = xyes; then
1915 if test "x$HAVE_WINSYS_XLIB" != xyes; then
1916 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
1921 AC_MSG_ERROR([Unknown Gallium driver: $driver])
1926 AM_CONDITIONAL(HAVE_GALLIUM_SVGA, test "x$HAVE_GALLIUM_SVGA" = xyes)
1927 AM_CONDITIONAL(HAVE_GALLIUM_I915, test "x$HAVE_GALLIUM_I915" = xyes)
1928 AM_CONDITIONAL(HAVE_GALLIUM_R300, test "x$HAVE_GALLIUM_R300" = xyes)
1929 AM_CONDITIONAL(HAVE_GALLIUM_R600, test "x$HAVE_GALLIUM_R600" = xyes)
1930 AM_CONDITIONAL(HAVE_GALLIUM_RADEONSI, test "x$HAVE_GALLIUM_RADEONSI" = xyes)
1931 AM_CONDITIONAL(HAVE_GALLIUM_NOUVEAU, test "x$HAVE_GALLIUM_NOUVEAU" = xyes)
1932 AM_CONDITIONAL(HAVE_GALLIUM_SOFTPIPE, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes)
1933 AM_CONDITIONAL(HAVE_GALLIUM_LLVMPIPE, test "x$HAVE_GALLIUM_LLVMPIPE" = xyes)
1935 if test "x$enable_gallium_loader" = xyes; then
1936 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
1937 GALLIUM_PIPE_LOADER_DEFINES="-DHAVE_PIPE_LOADER_SW"
1938 GALLIUM_PIPE_LOADER_LIBS="\$(TOP)/src/gallium/auxiliary/pipe-loader/libpipe_loader.a"
1939 GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS \$(TOP)/src/gallium/winsys/sw/null/libws_null.a"
1941 if test "x$HAVE_WINSYS_XLIB" = xyes; then
1942 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_XLIB"
1943 GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS \$(TOP)/src/gallium/winsys/sw/xlib/libws_xlib.a"
1946 if test "x$enable_gallium_drm_loader" = xyes; then
1947 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRM"
1948 PKG_CHECK_MODULES([GALLIUM_PIPE_LOADER_XCB], [xcb xcb-dri2],
1949 pipe_loader_have_xcb=yes, pipe_loader_have_xcb=no)
1950 if test "x$pipe_loader_have_xcb" = xyes; then
1951 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DPIPE_LOADER_HAVE_XCB"
1952 GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS $GALLIUM_PIPE_LOADER_XCB_LIBS $LIBDRM_LIBS"
1956 AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
1957 AC_SUBST([GALLIUM_PIPE_LOADER_LIBS])
1960 dnl Tell Automake which drivers to build
1961 for driver in $GALLIUM_DRIVERS_DIRS; do
1964 HAVE_GALAHAD_GALLIUM=yes;
1967 HAVE_IDENTITY_GALLIUM=yes;
1970 HAVE_NOOP_GALLIUM=yes;
1973 GALLIUM_MAKE_DIRS="$GALLIUM_MAKE_DIRS $driver"
1978 AM_CONDITIONAL(HAVE_GALAHAD_GALLIUM, test x$HAVE_GALAHAD_GALLIUM = xyes)
1979 AM_CONDITIONAL(HAVE_IDENTITY_GALLIUM, test x$HAVE_IDENTITY_GALLIUM = xyes)
1980 AM_CONDITIONAL(HAVE_NOOP_GALLIUM, test x$HAVE_NOOP_GALLIUM = xyes)
1981 AM_CONDITIONAL(NEED_RADEON_GALLIUM, test x$NEED_RADEON_GALLIUM = xyes)
1982 AM_CONDITIONAL(USE_R600_LLVM_COMPILER, test x$USE_R600_LLVM_COMPILER = xyes)
1983 AM_CONDITIONAL(HAVE_LOADER_GALLIUM, test x$enable_gallium_loader = xyes)
1984 AM_CONDITIONAL(HAVE_DRM_LOADER_GALLIUM, test x$enable_gallium_drm_loader = xyes)
1985 AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
1986 AM_CONDITIONAL(HAVE_MESA_LLVM, test x$MESA_LLVM = x1)
1987 AM_CONDITIONAL(LLVM_NEEDS_FNORTTI, test $LLVM_VERSION_INT -ge 302)
1989 AC_SUBST([GALLIUM_MAKE_DIRS])
1991 AM_CONDITIONAL(NEED_LIBPROGRAM, test "x$with_gallium_drivers" != x -o \
1992 "x$enable_xlib_glx" = xyes -o \
1993 "x$enable_osmesa" = xyes)
1994 AM_CONDITIONAL(HAVE_X11_DRIVER, echo "$DRIVER_DIRS" | grep 'x11' >/dev/null 2>&1)
1996 AM_CONDITIONAL(HAVE_X86_ASM, echo "$DEFINES" | grep 'X86_ASM' >/dev/null 2>&1)
1997 AM_CONDITIONAL(HAVE_X86_64_ASM, echo "$DEFINES" | grep 'X86_64_ASM' >/dev/null 2>&1)
1998 AM_CONDITIONAL(HAVE_SPARC_ASM, echo "$DEFINES" | grep 'SPARC_ASM' >/dev/null 2>&1)
2000 dnl prepend CORE_DIRS to SRC_DIRS
2001 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
2003 dnl Restore LDFLAGS and CPPFLAGS
2004 LDFLAGS="$_SAVE_LDFLAGS"
2005 CPPFLAGS="$_SAVE_CPPFLAGS"
2007 dnl Add user CFLAGS and CXXFLAGS
2008 CFLAGS="$CFLAGS $USER_CFLAGS"
2009 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
2011 dnl Substitute the config
2012 AC_CONFIG_FILES([configs/current
2016 src/egl/drivers/Makefile
2017 src/egl/drivers/dri2/Makefile
2018 src/egl/drivers/glx/Makefile
2019 src/egl/main/Makefile
2021 src/egl/wayland/Makefile
2022 src/egl/wayland/wayland-drm/Makefile
2023 src/egl/wayland/wayland-egl/Makefile
2024 src/egl/wayland/wayland-egl/wayland-egl.pc
2025 src/gallium/Makefile
2026 src/gallium/auxiliary/Makefile
2027 src/gallium/auxiliary/pipe-loader/Makefile
2028 src/gallium/drivers/Makefile
2029 src/gallium/drivers/i915/Makefile
2030 src/gallium/drivers/llvmpipe/Makefile
2031 src/gallium/drivers/nouveau/Makefile
2032 src/gallium/drivers/nv30/Makefile
2033 src/gallium/drivers/nv50/Makefile
2034 src/gallium/drivers/nvc0/Makefile
2035 src/gallium/drivers/r300/Makefile
2036 src/gallium/drivers/r600/Makefile
2037 src/gallium/drivers/radeon/Makefile
2038 src/gallium/drivers/radeonsi/Makefile
2039 src/gallium/drivers/rbug/Makefile
2040 src/gallium/drivers/softpipe/Makefile
2041 src/gallium/drivers/svga/Makefile
2042 src/gallium/drivers/trace/Makefile
2043 src/gallium/state_trackers/Makefile
2044 src/gallium/state_trackers/clover/Makefile
2045 src/gallium/state_trackers/dri/Makefile
2046 src/gallium/state_trackers/dri/drm/Makefile
2047 src/gallium/state_trackers/dri/sw/Makefile
2048 src/gallium/state_trackers/egl/Makefile
2049 src/gallium/state_trackers/gbm/Makefile
2050 src/gallium/state_trackers/glx/Makefile
2051 src/gallium/targets/Makefile
2052 src/gallium/targets/opencl/Makefile
2053 src/gallium/winsys/Makefile
2054 src/gallium/winsys/i915/drm/Makefile
2055 src/gallium/winsys/i915/sw/Makefile
2056 src/gallium/winsys/nouveau/drm/Makefile
2057 src/gallium/winsys/radeon/drm/Makefile
2058 src/gallium/winsys/svga/drm/Makefile
2059 src/gallium/winsys/sw/Makefile
2060 src/gallium/winsys/sw/dri/Makefile
2061 src/gallium/winsys/sw/fbdev/Makefile
2062 src/gallium/winsys/sw/null/Makefile
2063 src/gallium/winsys/sw/wayland/Makefile
2064 src/gallium/winsys/sw/wrapper/Makefile
2065 src/gallium/winsys/sw/xlib/Makefile
2069 src/glsl/builtin_compiler/Makefile
2070 src/glsl/glcpp/Makefile
2071 src/glsl/tests/Makefile
2073 src/glx/tests/Makefile
2075 src/mapi/es1api/Makefile
2076 src/mapi/es1api/glesv1_cm.pc
2077 src/mapi/es2api/Makefile
2078 src/mapi/es2api/glesv2.pc
2079 src/mapi/glapi/Makefile
2080 src/mapi/glapi/gen/Makefile
2081 src/mapi/glapi/tests/Makefile
2082 src/mapi/shared-glapi/Makefile
2083 src/mapi/shared-glapi/tests/Makefile
2084 src/mapi/vgapi/Makefile
2085 src/mapi/vgapi/vg.pc
2088 src/mesa/drivers/Makefile
2089 src/mesa/drivers/dri/dri.pc
2090 src/mesa/drivers/dri/common/Makefile
2091 src/mesa/drivers/dri/i915/Makefile
2092 src/mesa/drivers/dri/i965/Makefile
2093 src/mesa/drivers/dri/Makefile
2094 src/mesa/drivers/dri/nouveau/Makefile
2095 src/mesa/drivers/dri/r200/Makefile
2096 src/mesa/drivers/dri/radeon/Makefile
2097 src/mesa/drivers/dri/swrast/Makefile
2098 src/mesa/drivers/osmesa/Makefile
2099 src/mesa/drivers/osmesa/osmesa.pc
2100 src/mesa/drivers/x11/Makefile
2101 src/mesa/libdricore/Makefile
2102 src/mesa/main/tests/Makefile
2103 src/mesa/main/tests/hash_table/Makefile
2104 src/mesa/program/Makefile
2105 src/mesa/x86-64/Makefile
2106 src/mesa/x86/Makefile])
2108 dnl Sort the dirs alphabetically
2109 GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2110 GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2111 GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2112 GALLIUM_MAKE_DIRS=`echo $GALLIUM_MAKE_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2113 GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2118 dnl Output some configuration info for the user
2121 echo " prefix: $prefix"
2122 echo " exec_prefix: $exec_prefix"
2123 echo " libdir: $libdir"
2124 echo " includedir: $includedir"
2128 echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
2129 echo " OpenVG: $enable_openvg"
2133 if test "x$enable_osmesa" != xno; then
2134 echo " OSMesa: lib$OSMESA_LIB"
2139 if test "x$enable_dri" != xno; then
2140 # cleanup the drivers var
2141 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
2142 if test "x$DRI_DIRS" = x; then
2143 echo " DRI drivers: no"
2145 echo " DRI drivers: $dri_dirs"
2147 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
2150 case "x$enable_glx$enable_xlib_glx" in
2152 echo " GLX: Xlib-based"
2155 echo " GLX: DRI-based"
2158 echo " GLX: $enable_glx"
2164 echo " EGL: $enable_egl"
2165 if test "$enable_egl" = yes; then
2166 echo " EGL platforms: $EGL_PLATFORMS"
2169 if test "x$HAVE_EGL_DRIVER_GLX" != "x"; then
2170 egl_drivers="$egl_drivers builtin:egl_glx"
2172 if test "x$HAVE_EGL_DRIVER_DRI2" != "x"; then
2173 egl_drivers="$egl_drivers builtin:egl_dri2"
2176 if test "x$HAVE_ST_EGL" = xyes; then
2177 echo " EGL drivers: ${egl_drivers} egl_gallium"
2178 echo " EGL Gallium STs:$EGL_CLIENT_APIS"
2180 echo " EGL drivers: $egl_drivers"
2185 if test "x$MESA_LLVM" = x1; then
2187 echo " llvm-config: $LLVM_CONFIG"
2188 echo " llvm-version: $LLVM_VERSION"
2194 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
2195 echo " Gallium: yes"
2196 echo " Gallium dirs: $GALLIUM_DIRS"
2197 echo " Target dirs: $GALLIUM_TARGET_DIRS"
2198 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
2199 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
2200 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
2208 echo " Shared libs: $enable_shared"
2209 echo " Static libs: $enable_static"
2210 echo " Shared-glapi: $enable_shared_glapi"
2212 dnl Compiler options
2213 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2214 cflags=`echo $CFLAGS $PIC_FLAGS | \
2215 $SED 's/^ *//;s/ */ /;s/ *$//'`
2216 cxxflags=`echo $CXXFLAGS $PIC_FLAGS | \
2217 $SED 's/^ *//;s/ */ /;s/ *$//'`
2218 defines=`echo $DEFINES | $SED 's/^ *//;s/ */ /;s/ *$//'`
2220 echo " CFLAGS: $cflags"
2221 echo " CXXFLAGS: $cxxflags"
2222 echo " Macros: $defines"
2224 if test "x$MESA_LLVM" = x1; then
2225 echo " LLVM_CFLAGS: $LLVM_CFLAGS"
2226 echo " LLVM_CXXFLAGS: $LLVM_CXXFLAGS"
2227 echo " LLVM_CPPFLAGS: $LLVM_CPPFLAGS"
2230 echo " PYTHON2: $PYTHON2"
2233 echo " Run '${MAKE-make}' to build Mesa"