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 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
1843 gallium_check_st "svga/drm" "dri-vmwgfx" "" "xa-vmwgfx"
1846 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1847 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe"
1848 if test "x$MESA_LLVM" = x1; then
1849 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1851 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1852 gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1855 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1856 gallium_require_llvm "Gallium R300"
1857 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1858 gallium_check_st "radeon/drm" "dri-r300" "xorg-r300" "" "xvmc-r300" "vdpau-r300"
1861 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1862 gallium_require_drm_loader
1863 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1864 if test "x$enable_r600_llvm" = xyes -o "x$enable_opencl" = xyes; then
1866 NEED_RADEON_GALLIUM=yes;
1868 if test "x$enable_r600_llvm" = xyes; then
1869 USE_R600_LLVM_COMPILER=yes;
1871 if test "x$enable_opencl" = xyes -a "x$with_llvm_shared_libs" = xno; then
1872 LLVM_LIBS="${LLVM_LIBS} `$LLVM_CONFIG --libs bitreader asmparser`"
1874 gallium_check_st "radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600"
1877 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1878 gallium_require_drm_loader
1879 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS radeonsi"
1881 NEED_RADEON_GALLIUM=yes;
1882 gallium_check_st "radeon/drm" "dri-radeonsi" "xorg-radeonsi" "" "" "vdpau-radeonsi" ""
1885 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1886 gallium_require_drm_loader
1887 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nv30 nv50 nvc0"
1888 gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau" "" "xvmc-nouveau" "vdpau-nouveau"
1891 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe"
1892 if test "x$MESA_LLVM" = x1; then
1893 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1896 if test "x$HAVE_ST_DRI" = xyes; then
1897 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1899 if test "x$HAVE_ST_VDPAU" = xyes; then
1900 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS vdpau-softpipe"
1902 if test "x$HAVE_ST_XVMC" = xyes; then
1903 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS xvmc-softpipe"
1905 if test "x$HAVE_ST_VDPAU" = xyes ||
1906 test "x$HAVE_ST_XVMC" = xyes; then
1907 if test "x$HAVE_WINSYS_XLIB" != xyes; then
1908 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
1913 AC_MSG_ERROR([Unknown Gallium driver: $driver])
1919 if test "x$enable_gallium_loader" = xyes; then
1920 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
1921 GALLIUM_PIPE_LOADER_DEFINES="-DHAVE_PIPE_LOADER_SW"
1922 GALLIUM_PIPE_LOADER_LIBS="\$(TOP)/src/gallium/auxiliary/pipe-loader/libpipe_loader.a"
1923 GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS \$(TOP)/src/gallium/winsys/sw/null/libws_null.a"
1925 if test "x$HAVE_WINSYS_XLIB" = xyes; then
1926 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_XLIB"
1927 GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS \$(TOP)/src/gallium/winsys/sw/xlib/libws_xlib.a"
1930 if test "x$enable_gallium_drm_loader" = xyes; then
1931 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRM"
1932 PKG_CHECK_MODULES([GALLIUM_PIPE_LOADER_XCB], [xcb xcb-dri2],
1933 pipe_loader_have_xcb=yes, pipe_loader_have_xcb=no)
1934 if test "x$pipe_loader_have_xcb" = xyes; then
1935 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DPIPE_LOADER_HAVE_XCB"
1936 GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS $GALLIUM_PIPE_LOADER_XCB_LIBS $LIBDRM_LIBS"
1940 AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
1941 AC_SUBST([GALLIUM_PIPE_LOADER_LIBS])
1944 dnl Tell Automake which drivers to build
1945 for driver in $GALLIUM_DRIVERS_DIRS; do
1948 HAVE_GALAHAD_GALLIUM=yes;
1951 HAVE_IDENTITY_GALLIUM=yes;
1954 HAVE_NOOP_GALLIUM=yes;
1957 GALLIUM_MAKE_DIRS="$GALLIUM_MAKE_DIRS $driver"
1962 AM_CONDITIONAL(HAVE_GALAHAD_GALLIUM, test x$HAVE_GALAHAD_GALLIUM = xyes)
1963 AM_CONDITIONAL(HAVE_IDENTITY_GALLIUM, test x$HAVE_IDENTITY_GALLIUM = xyes)
1964 AM_CONDITIONAL(HAVE_NOOP_GALLIUM, test x$HAVE_NOOP_GALLIUM = xyes)
1965 AM_CONDITIONAL(NEED_RADEON_GALLIUM, test x$NEED_RADEON_GALLIUM = xyes)
1966 AM_CONDITIONAL(USE_R600_LLVM_COMPILER, test x$USE_R600_LLVM_COMPILER = xyes)
1967 AM_CONDITIONAL(HAVE_LOADER_GALLIUM, test x$enable_gallium_loader = xyes)
1968 AM_CONDITIONAL(HAVE_DRM_LOADER_GALLIUM, test x$enable_gallium_drm_loader = xyes)
1969 AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
1970 AM_CONDITIONAL(HAVE_MESA_LLVM, test x$MESA_LLVM = x1)
1971 AM_CONDITIONAL(LLVM_NEEDS_FNORTTI, test $LLVM_VERSION_INT -ge 302)
1973 AC_SUBST([GALLIUM_MAKE_DIRS])
1975 AM_CONDITIONAL(NEED_LIBPROGRAM, test "x$with_gallium_drivers" != x -o \
1976 "x$enable_xlib_glx" = xyes -o \
1977 "x$enable_osmesa" = xyes)
1978 AM_CONDITIONAL(HAVE_X11_DRIVER, echo "$DRIVER_DIRS" | grep 'x11' >/dev/null 2>&1)
1980 AM_CONDITIONAL(HAVE_X86_ASM, echo "$DEFINES" | grep 'X86_ASM' >/dev/null 2>&1)
1981 AM_CONDITIONAL(HAVE_X86_64_ASM, echo "$DEFINES" | grep 'X86_64_ASM' >/dev/null 2>&1)
1982 AM_CONDITIONAL(HAVE_SPARC_ASM, echo "$DEFINES" | grep 'SPARC_ASM' >/dev/null 2>&1)
1984 dnl prepend CORE_DIRS to SRC_DIRS
1985 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
1987 dnl Restore LDFLAGS and CPPFLAGS
1988 LDFLAGS="$_SAVE_LDFLAGS"
1989 CPPFLAGS="$_SAVE_CPPFLAGS"
1991 dnl Add user CFLAGS and CXXFLAGS
1992 CFLAGS="$CFLAGS $USER_CFLAGS"
1993 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
1995 dnl Substitute the config
1996 AC_CONFIG_FILES([configs/current
2000 src/egl/drivers/Makefile
2001 src/egl/drivers/dri2/Makefile
2002 src/egl/drivers/glx/Makefile
2003 src/egl/main/Makefile
2005 src/egl/wayland/Makefile
2006 src/egl/wayland/wayland-drm/Makefile
2007 src/egl/wayland/wayland-egl/Makefile
2008 src/egl/wayland/wayland-egl/wayland-egl.pc
2009 src/gallium/Makefile
2010 src/gallium/auxiliary/Makefile
2011 src/gallium/auxiliary/pipe-loader/Makefile
2012 src/gallium/drivers/Makefile
2013 src/gallium/drivers/i915/Makefile
2014 src/gallium/drivers/llvmpipe/Makefile
2015 src/gallium/drivers/nouveau/Makefile
2016 src/gallium/drivers/r300/Makefile
2017 src/gallium/drivers/r600/Makefile
2018 src/gallium/drivers/rbug/Makefile
2019 src/gallium/drivers/softpipe/Makefile
2020 src/gallium/drivers/svga/Makefile
2021 src/gallium/drivers/trace/Makefile
2022 src/gallium/state_trackers/clover/Makefile
2023 src/gallium/targets/Makefile
2024 src/gallium/targets/opencl/Makefile
2025 src/gallium/winsys/Makefile
2026 src/gallium/winsys/i915/drm/Makefile
2027 src/gallium/winsys/i915/sw/Makefile
2028 src/gallium/winsys/radeon/drm/Makefile
2032 src/glsl/builtin_compiler/Makefile
2033 src/glsl/glcpp/Makefile
2034 src/glsl/tests/Makefile
2036 src/glx/tests/Makefile
2038 src/mapi/es1api/Makefile
2039 src/mapi/es1api/glesv1_cm.pc
2040 src/mapi/es2api/Makefile
2041 src/mapi/es2api/glesv2.pc
2042 src/mapi/glapi/Makefile
2043 src/mapi/glapi/gen/Makefile
2044 src/mapi/glapi/tests/Makefile
2045 src/mapi/shared-glapi/Makefile
2046 src/mapi/shared-glapi/tests/Makefile
2047 src/mapi/vgapi/Makefile
2048 src/mapi/vgapi/vg.pc
2051 src/mesa/drivers/Makefile
2052 src/mesa/drivers/dri/dri.pc
2053 src/mesa/drivers/dri/common/Makefile
2054 src/mesa/drivers/dri/i915/Makefile
2055 src/mesa/drivers/dri/i965/Makefile
2056 src/mesa/drivers/dri/Makefile
2057 src/mesa/drivers/dri/nouveau/Makefile
2058 src/mesa/drivers/dri/r200/Makefile
2059 src/mesa/drivers/dri/radeon/Makefile
2060 src/mesa/drivers/dri/swrast/Makefile
2061 src/mesa/drivers/osmesa/Makefile
2062 src/mesa/drivers/osmesa/osmesa.pc
2063 src/mesa/drivers/x11/Makefile
2064 src/mesa/libdricore/Makefile
2065 src/mesa/main/tests/Makefile
2066 src/mesa/main/tests/hash_table/Makefile
2067 src/mesa/program/Makefile
2068 src/mesa/x86-64/Makefile
2069 src/mesa/x86/Makefile])
2071 dnl Sort the dirs alphabetically
2072 GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2073 GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2074 GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2075 GALLIUM_MAKE_DIRS=`echo $GALLIUM_MAKE_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2076 GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2081 dnl Output some configuration info for the user
2084 echo " prefix: $prefix"
2085 echo " exec_prefix: $exec_prefix"
2086 echo " libdir: $libdir"
2087 echo " includedir: $includedir"
2091 echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
2092 echo " OpenVG: $enable_openvg"
2096 if test "x$enable_osmesa" != xno; then
2097 echo " OSMesa: lib$OSMESA_LIB"
2102 if test "x$enable_dri" != xno; then
2103 # cleanup the drivers var
2104 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
2105 if test "x$DRI_DIRS" = x; then
2106 echo " DRI drivers: no"
2108 echo " DRI drivers: $dri_dirs"
2110 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
2113 case "x$enable_glx$enable_xlib_glx" in
2115 echo " GLX: Xlib-based"
2118 echo " GLX: DRI-based"
2121 echo " GLX: $enable_glx"
2127 echo " EGL: $enable_egl"
2128 if test "$enable_egl" = yes; then
2129 echo " EGL platforms: $EGL_PLATFORMS"
2132 if test "x$HAVE_EGL_DRIVER_GLX" != "x"; then
2133 egl_drivers="$egl_drivers builtin:egl_glx"
2135 if test "x$HAVE_EGL_DRIVER_DRI2" != "x"; then
2136 egl_drivers="$egl_drivers builtin:egl_dri2"
2139 if test "x$HAVE_ST_EGL" = xyes; then
2140 echo " EGL drivers: ${egl_drivers} egl_gallium"
2141 echo " EGL Gallium STs:$EGL_CLIENT_APIS"
2143 echo " EGL drivers: $egl_drivers"
2148 if test "x$MESA_LLVM" = x1; then
2150 echo " llvm-config: $LLVM_CONFIG"
2151 echo " llvm-version: $LLVM_VERSION"
2157 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
2158 echo " Gallium: yes"
2159 echo " Gallium dirs: $GALLIUM_DIRS"
2160 echo " Target dirs: $GALLIUM_TARGET_DIRS"
2161 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
2162 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
2163 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
2171 echo " Shared libs: $enable_shared"
2172 echo " Static libs: $enable_static"
2173 echo " Shared-glapi: $enable_shared_glapi"
2175 dnl Compiler options
2176 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2177 cflags=`echo $CFLAGS $PIC_FLAGS | \
2178 $SED 's/^ *//;s/ */ /;s/ *$//'`
2179 cxxflags=`echo $CXXFLAGS $PIC_FLAGS | \
2180 $SED 's/^ *//;s/ */ /;s/ *$//'`
2181 defines=`echo $DEFINES | $SED 's/^ *//;s/ */ /;s/ *$//'`
2183 echo " CFLAGS: $cflags"
2184 echo " CXXFLAGS: $cxxflags"
2185 echo " Macros: $defines"
2187 if test "x$MESA_LLVM" = x1; then
2188 echo " LLVM_CFLAGS: $LLVM_CFLAGS"
2189 echo " LLVM_CXXFLAGS: $LLVM_CXXFLAGS"
2190 echo " LLVM_CPPFLAGS: $LLVM_CPPFLAGS"
2193 echo " PYTHON2: $PYTHON2"
2196 echo " Run '${MAKE-make}' to build Mesa"