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])
56 LT_INIT([disable-static])
59 AC_PATH_PROG([YACC_INST], $YACC)
60 if test ! -f "$srcdir/src/glsl/glcpp/glcpp-parse.c"; then
61 if test -z "$YACC_INST"; then
62 AC_MSG_ERROR([yacc not found - unable to compile glcpp-parse.y])
67 AC_PATH_PROG([PERL], [perl])
69 AC_CHECK_PROG(INDENT, indent, indent, cat)
70 if test "x$INDENT" != "xcat"; then
71 AC_SUBST(INDENT_FLAGS, '-i4 -nut -br -brs -npcs -ce -TGLubyte -TGLbyte -TBool')
74 dnl Our fallback install-sh is a symlink to minstall. Use the existing
75 dnl configuration in that case.
77 test "x$INSTALL" = "x$ac_install_sh" && INSTALL='$(MINSTALL)'
79 dnl We need a POSIX shell for parts of the build. Assume we have one
83 # Solaris /bin/sh is too old/non-POSIX compliant
84 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
89 dnl clang is mostly GCC-compatible, but its version is much lower,
90 dnl so we have to check for it.
91 AC_MSG_CHECKING([if compiling with clang])
94 [AC_LANG_PROGRAM([], [[
99 [acv_mesa_CLANG=yes], [acv_mesa_CLANG=no])
101 AC_MSG_RESULT([$acv_mesa_CLANG])
103 dnl If we're using GCC, make sure that it is at least version 3.3.0. Older
104 dnl versions are explictly not supported.
105 if test "x$GCC" = xyes -a "x$acv_mesa_CLANG" = xno; then
106 AC_MSG_CHECKING([whether gcc version is sufficient])
110 GCC_VERSION=`$CC -dumpversion`
111 if test $? -eq 0; then
112 GCC_VERSION_MAJOR=`echo $GCC_VERSION | cut -d. -f1`
113 GCC_VERSION_MINOR=`echo $GCC_VERSION | cut -d. -f2`
116 if test $GCC_VERSION_MAJOR -lt 3 -o $GCC_VERSION_MAJOR -eq 3 -a $GCC_VERSION_MINOR -lt 3 ; then
118 AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.])
124 dnl Make sure the pkg-config macros are defined
125 m4_ifndef([PKG_PROG_PKG_CONFIG],
126 [m4_fatal([Could not locate the pkg-config autoconf macros.
127 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
128 are in a different location, try setting the environment variable
129 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
130 PKG_PROG_PKG_CONFIG()
132 dnl LIB_DIR - library basename
133 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
136 dnl Cache LDFLAGS and CPPFLAGS so we can add to them and restore later
137 _SAVE_LDFLAGS="$LDFLAGS"
138 _SAVE_CPPFLAGS="$CPPFLAGS"
140 dnl build host compiler macros
142 AC_SUBST([DEFINES_FOR_BUILD])
145 DEFINES_FOR_BUILD="$DEFINES_FOR_BUILD -D_GNU_SOURCE"
148 DEFINES_FOR_BUILD="$DEFINES_FOR_BUILD -DSVR4"
151 DEFINES_FOR_BUILD="$DEFINES_FOR_BUILD"
160 DEFINES="$DEFINES -D_GNU_SOURCE -DHAVE_PTHREAD"
163 DEFINES="$DEFINES -DHAVE_PTHREAD -DSVR4"
166 DEFINES="$DEFINES -DHAVE_PTHREAD"
170 dnl Add flags for gcc and g++
171 if test "x$GCC" = xyes; then
174 CFLAGS="$CFLAGS -Wall -std=gnu99"
177 CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD -Wall -std=c99"
178 CFLAGS="$CFLAGS -Wall -std=c99"
182 # Enable -Werror=implicit-function-declaration and
183 # -Werror=missing-prototypes, if available, or otherwise, just
184 # -Wmissing-prototypes. This is particularly useful to avoid
185 # generating a loadable driver module that has undefined symbols.
186 save_CFLAGS="$CFLAGS"
187 AC_MSG_CHECKING([whether $CC supports -Werror=missing-prototypes])
188 CFLAGS="$CFLAGS -Werror=implicit-function-declaration"
189 CFLAGS="$CFLAGS -Werror=missing-prototypes"
190 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
191 AC_MSG_RESULT([yes]),
192 [CFLAGS="$save_CFLAGS -Wmissing-prototypes";
193 AC_MSG_RESULT([no])]);
195 # Enable -fvisibility=hidden if using a gcc that supports it
196 save_CFLAGS="$CFLAGS"
197 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
198 VISIBILITY_CFLAGS="-fvisibility=hidden"
199 CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
200 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
201 [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
203 # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
206 # Work around aliasing bugs - developers should comment this out
207 CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD -fno-strict-aliasing"
208 CFLAGS="$CFLAGS -fno-strict-aliasing"
210 # gcc's builtin memcmp is slower than glibc's
211 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
212 CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD -fno-builtin-memcmp"
213 CFLAGS="$CFLAGS -fno-builtin-memcmp"
215 if test "x$GXX" = xyes; then
216 CXXFLAGS_FOR_BUILD="$CXXFLAGS_FOR_BUILD -Wall"
217 CXXFLAGS="$CXXFLAGS -Wall"
219 # Enable -fvisibility=hidden if using a gcc that supports it
220 save_CXXFLAGS="$CXXFLAGS"
221 AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
222 VISIBILITY_CXXFLAGS="-fvisibility=hidden"
223 CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
225 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
226 [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
229 # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
230 CXXFLAGS=$save_CXXFLAGS
232 # Work around aliasing bugs - developers should comment this out
233 CXXFLAGS_FOR_BUILD="$CXXFLAGS_FOR_BUILD -fno-strict-aliasing"
234 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
236 # gcc's builtin memcmp is slower than glibc's
237 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
238 CXXFLAGS_FOR_BUILD="$CXXFLAGS_FOR_BUILD -fno-builtin-memcmp"
239 CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp"
242 dnl even if the compiler appears to support it, using visibility attributes isn't
243 dnl going to do anything useful currently on cygwin apart from emit lots of warnings
247 VISIBILITY_CXXFLAGS=""
251 AC_SUBST([VISIBILITY_CFLAGS])
252 AC_SUBST([VISIBILITY_CXXFLAGS])
255 dnl Hacks to enable 32 or 64 bit build
257 AC_ARG_ENABLE([32-bit],
258 [AS_HELP_STRING([--enable-32-bit],
259 [build 32-bit libraries @<:@default=auto@:>@])],
260 [enable_32bit="$enableval"],
263 if test "x$enable_32bit" = xyes; then
264 if test "x$GCC" = xyes; then
265 CFLAGS="$CFLAGS -m32"
266 CCASFLAGS="$CCASFLAGS -m32"
268 if test "x$GXX" = xyes; then
269 CXXFLAGS="$CXXFLAGS -m32"
272 AC_ARG_ENABLE([64-bit],
273 [AS_HELP_STRING([--enable-64-bit],
274 [build 64-bit libraries @<:@default=auto@:>@])],
275 [enable_64bit="$enableval"],
278 if test "x$enable_64bit" = xyes; then
279 if test "x$GCC" = xyes; then
280 CFLAGS="$CFLAGS -m64"
282 if test "x$GXX" = xyes; then
283 CXXFLAGS="$CXXFLAGS -m64"
287 dnl Can't have static and shared libraries, default to static if user
288 dnl explicitly requested. If both disabled, set to static since shared
289 dnl was explicitly requested.
290 case "x$enable_static$enable_shared" in
292 AC_MSG_WARN([Cannot build static and shared libraries, disabling shared])
296 AC_MSG_WARN([Cannot disable both static and shared libraries, enabling static])
301 AM_CONDITIONAL(BUILD_SHARED, test "x$enable_shared" = xyes)
304 dnl other compiler options
306 AC_ARG_ENABLE([debug],
307 [AS_HELP_STRING([--enable-debug],
308 [use debug compiler flags and macros @<:@default=disabled@:>@])],
309 [enable_debug="$enableval"],
312 if test "x$enable_debug" = xyes; then
313 DEFINES_FOR_BUILD="$DEFINES_FOR_BUILD -DDEBUG"
314 if test "x$GCC_FOR_BUILD" = xyes; then
315 CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD -g -O0"
317 if test "x$GXX_FOR_BUILD" = xyes; then
318 CXXFLAGS_FOR_BUILD="$CXXFLAGS_FOR_BUILD -g -O0"
321 DEFINES="$DEFINES -DDEBUG"
322 if test "x$GCC" = xyes; then
323 CFLAGS="$CFLAGS -g -O0"
325 if test "x$GXX" = xyes; then
326 CXXFLAGS="$CXXFLAGS -g -O0"
333 LIB_PREFIX_GLOB='lib'
334 LIB_VERSION_SEPARATOR='.'
335 if test "$enable_static" = yes; then
340 LIB_EXTENSION='dylib' ;;
342 dnl prefix can be 'cyg' or 'lib'
343 LIB_PREFIX_GLOB='???'
344 LIB_VERSION_SEPARATOR='-'
345 LIB_EXTENSION='dll' ;;
349 LIB_EXTENSION='so' ;;
352 AC_ARG_WITH([gl-lib-name],
353 [AS_HELP_STRING([--with-gl-lib-name@<:@=NAME@:>@],
354 [specify GL library name @<:@default=GL@:>@])],
357 AC_ARG_WITH([osmesa-lib-name],
358 [AS_HELP_STRING([--with-osmesa-lib-name@<:@=NAME@:>@],
359 [specify OSMesa library name @<:@default=OSMesa@:>@])],
360 [OSMESA_LIB=$withval],
362 AS_IF([test "x$GL_LIB" = xyes], [GL_LIB=GL])
363 AS_IF([test "x$OSMESA_LIB" = xyes], [OSMESA_LIB=OSMesa])
366 dnl Mangled Mesa support
368 AC_ARG_ENABLE([mangling],
369 [AS_HELP_STRING([--enable-mangling],
370 [enable mangled symbols and library name @<:@default=disabled@:>@])],
371 [enable_mangling="${enableval}"],
374 if test "x${enable_mangling}" = "xyes" ; then
375 DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
376 GL_LIB="Mangled${GL_LIB}"
377 OSMESA_LIB="Mangled${OSMESA_LIB}"
380 AC_SUBST([OSMESA_LIB])
383 dnl potentially-infringing-but-nobody-knows-for-sure stuff
385 AC_ARG_ENABLE([texture-float],
386 [AS_HELP_STRING([--enable-texture-float],
387 [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
388 [enable_texture_float="$enableval"],
389 [enable_texture_float=no]
391 if test "x$enable_texture_float" = xyes; then
392 AC_MSG_WARN([Floating-point textures enabled.])
393 AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
394 DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
397 GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
398 OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
399 EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
400 GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
401 GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION}
402 VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION}
403 GLAPI_LIB_NAME='lib$(GLAPI_LIB).'${LIB_EXTENSION}
405 GL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
406 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
407 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
408 GLESv1_CM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv1_CM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
409 GLESv2_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv2_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
410 VG_LIB_GLOB=${LIB_PREFIX_GLOB}'$(VG_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
411 GLAPI_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLAPI_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
413 AC_SUBST([GL_LIB_NAME])
414 AC_SUBST([OSMESA_LIB_NAME])
415 AC_SUBST([EGL_LIB_NAME])
416 AC_SUBST([GLESv1_CM_LIB_NAME])
417 AC_SUBST([GLESv2_LIB_NAME])
418 AC_SUBST([VG_LIB_NAME])
419 AC_SUBST([GLAPI_LIB_NAME])
421 AC_SUBST([GL_LIB_GLOB])
422 AC_SUBST([EGL_LIB_GLOB])
423 AC_SUBST([GLESv1_CM_LIB_GLOB])
424 AC_SUBST([GLESv2_LIB_GLOB])
425 AC_SUBST([VG_LIB_GLOB])
426 AC_SUBST([GLAPI_LIB_GLOB])
429 dnl Arch/platform-specific settings
432 [AS_HELP_STRING([--disable-asm],
433 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
434 [enable_asm="$enableval"],
439 AC_MSG_CHECKING([whether to enable assembly])
440 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
441 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
442 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
446 AC_MSG_RESULT([no, cross compiling])
450 # check for supported arches
451 if test "x$enable_asm" = xyes; then
455 linux* | *freebsd* | dragonfly* | *netbsd*)
456 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
462 linux* | *freebsd* | dragonfly* | *netbsd*)
463 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
478 DEFINES="$DEFINES -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
479 MESA_ASM_FILES='$(X86_FILES)'
480 AC_MSG_RESULT([yes, x86])
483 DEFINES="$DEFINES -DUSE_X86_64_ASM"
484 MESA_ASM_FILES='$(X86_64_FILES)'
485 AC_MSG_RESULT([yes, x86_64])
488 DEFINES="$DEFINES -DUSE_SPARC_ASM"
489 MESA_ASM_FILES='$(SPARC_FILES)'
490 AC_MSG_RESULT([yes, sparc])
493 AC_MSG_RESULT([no, platform not supported])
497 AC_SUBST([MESA_ASM_FILES])
502 dnl Check to see if dlopen is in default libraries (like Solaris, which
503 dnl has it in libc), or if libdl is needed to get it.
504 AC_CHECK_FUNC([dlopen], [DEFINES="$DEFINES -DHAVE_DLOPEN"],
505 [AC_CHECK_LIB([dl], [dlopen],
506 [DEFINES="$DEFINES -DHAVE_DLOPEN"; DLOPEN_LIBS="-ldl"])])
507 AC_SUBST([DLOPEN_LIBS])
509 AC_CHECK_FUNCS([clock_gettime], [CLOCK_LIB=],
510 [AC_CHECK_LIB([rt], [clock_gettime], [CLOCK_LIB=-lrt],
511 [AC_MSG_ERROR([Couldn't find clock_gettime])])])
512 AC_SUBST([CLOCK_LIB])
514 dnl See if posix_memalign is available
515 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
517 dnl Check for pthreads
519 dnl AX_PTHREADS leaves PTHREAD_LIBS empty for gcc and sets PTHREAD_CFLAGS
520 dnl to -pthread, which causes problems if we need -lpthread to appear in
522 test -z "$PTHREAD_LIBS" && PTHREAD_LIBS="-lpthread"
524 dnl SELinux awareness.
525 AC_ARG_ENABLE([selinux],
526 [AS_HELP_STRING([--enable-selinux],
527 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
528 [MESA_SELINUX="$enableval"],
530 if test "x$enable_selinux" = "xyes"; then
531 AC_CHECK_HEADER([selinux/selinux.h],[],
532 [AC_MSG_ERROR([SELinux headers not found])])
533 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
534 [AC_MSG_ERROR([SELinux library not found])])
535 SELINUX_LIBS="-lselinux"
536 DEFINES="$DEFINES -DMESA_SELINUX"
538 AC_SUBST([SELINUX_LIBS])
541 AC_ARG_ENABLE([opengl],
542 [AS_HELP_STRING([--disable-opengl],
543 [disable support for standard OpenGL API @<:@default=no@:>@])],
544 [enable_opengl="$enableval"],
546 AC_ARG_ENABLE([gles1],
547 [AS_HELP_STRING([--enable-gles1],
548 [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
549 [enable_gles1="$enableval"],
551 AC_ARG_ENABLE([gles2],
552 [AS_HELP_STRING([--enable-gles2],
553 [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
554 [enable_gles2="$enableval"],
556 AC_ARG_ENABLE([openvg],
557 [AS_HELP_STRING([--enable-openvg],
558 [enable support for OpenVG API @<:@default=no@:>@])],
559 [enable_openvg="$enableval"],
563 [AS_HELP_STRING([--enable-dri],
564 [enable DRI modules @<:@default=enabled@:>@])],
565 [enable_dri="$enableval"],
568 [AS_HELP_STRING([--enable-glx],
569 [enable GLX library @<:@default=enabled@:>@])],
570 [enable_glx="$enableval"],
572 AC_ARG_ENABLE([osmesa],
573 [AS_HELP_STRING([--enable-osmesa],
574 [enable OSMesa library @<:@default=disabled@:>@])],
575 [enable_osmesa="$enableval"],
578 [AS_HELP_STRING([--disable-egl],
579 [disable EGL library @<:@default=enabled@:>@])],
580 [enable_egl="$enableval"],
583 AC_ARG_ENABLE([xorg],
584 [AS_HELP_STRING([--enable-xorg],
585 [enable support for X.Org DDX API @<:@default=no@:>@])],
586 [enable_xorg="$enableval"],
589 [AS_HELP_STRING([--enable-xa],
590 [enable build of the XA X Acceleration API @<:@default=no@:>@])],
591 [enable_xa="$enableval"],
593 dnl Broken, unmaintained. Don't want to see bug reports about it without patches.
595 dnl AC_ARG_ENABLE([d3d1x],
596 dnl [AS_HELP_STRING([--enable-d3d1x],
597 dnl [enable support for Direct3D 10 & 11 low-level API @<:@default=no@:>@])],
598 dnl [enable_d3d1x="$enableval"],
599 dnl [enable_d3d1x=no])
601 [AS_HELP_STRING([--enable-gbm],
602 [enable gbm library @<:@default=auto@:>@])],
603 [enable_gbm="$enableval"],
606 AC_ARG_ENABLE([xvmc],
607 [AS_HELP_STRING([--enable-xvmc],
608 [enable xvmc library @<:@default=auto@:>@])],
609 [enable_xvmc="$enableval"],
611 AC_ARG_ENABLE([vdpau],
612 [AS_HELP_STRING([--enable-vdpau],
613 [enable vdpau library @<:@default=auto@:>@])],
614 [enable_vdpau="$enableval"],
616 AC_ARG_ENABLE([opencl],
617 [AS_HELP_STRING([--enable-opencl],
618 [enable OpenCL library @<:@default=no@:>@])],
619 [enable_opencl="$enableval"],
621 AC_ARG_ENABLE([xlib_glx],
622 [AS_HELP_STRING([--enable-xlib-glx],
623 [make GLX library Xlib-based instead of DRI-based @<:@default=disabled@:>@])],
624 [enable_xlib_glx="$enableval"],
625 [enable_xlib_glx=no])
626 AC_ARG_ENABLE([gallium_egl],
627 [AS_HELP_STRING([--enable-gallium-egl],
628 [enable optional EGL state tracker (not required
629 for EGL support in Gallium with OpenGL and OpenGL ES)
630 @<:@default=disable@:>@])],
631 [enable_gallium_egl="$enableval"],
632 [enable_gallium_egl=no])
633 AC_ARG_ENABLE([gallium_gbm],
634 [AS_HELP_STRING([--enable-gallium-gbm],
635 [enable optional gbm state tracker (not required for
636 gbm support in Gallium)
637 @<:@default=auto@:>@])],
638 [enable_gallium_gbm="$enableval"],
639 [enable_gallium_gbm=auto])
641 AC_ARG_ENABLE([r600-llvm-compiler],
642 [AS_HELP_STRING([--enable-r600-llvm-compiler],
643 [Enable experimental LLVM backend for graphics shaders @<:@default=disable@:>@])],
644 [enable_r600_llvm="$enableval"],
645 [enable_r600_llvm=no])
647 AC_ARG_ENABLE([gallium_tests],
648 [AS_HELP_STRING([--enable-gallium-tests],
649 [Enable optional Gallium tests) @<:@default=disable@:>@])],
650 [enable_gallium_tests="$enableval"],
651 [enable_gallium_tests=no])
653 # Option for Gallium drivers
654 GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
656 AC_ARG_WITH([gallium-drivers],
657 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
658 [comma delimited Gallium drivers list, e.g.
659 "i915,nouveau,r300,r600,radeonsi,svga,swrast"
660 @<:@default=r300,r600,swrast@:>@])],
661 [with_gallium_drivers="$withval"],
662 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
664 # Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it
665 # here so that the script doesn't choke on an unknown driver name later.
666 case "$with_gallium_drivers" in
667 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
668 no) with_gallium_drivers='' ;;
671 if test "x$enable_opengl" = xno -a \
672 "x$enable_gles1" = xno -a \
673 "x$enable_gles2" = xno -a \
674 "x$enable_openvg" = xno -a \
675 "x$enable_xorg" = xno -a \
676 "x$enable_xa" = xno -a \
677 "x$enable_d3d1x" = xno -a \
678 "x$enable_xvmc" = xno -a \
679 "x$enable_vdpau" = xno -a \
680 "x$enable_opencl" = xno; then
681 AC_MSG_ERROR([at least one API should be enabled])
685 if test "x$enable_opengl" = xno; then
686 API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
688 API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
690 if test "x$enable_gles1" = xyes; then
691 API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
693 if test "x$enable_gles2" = xyes; then
694 API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
696 AC_SUBST([API_DEFINES])
698 if test "x$enable_glx" = xno; then
699 AC_MSG_WARN([GLX disabled, disabling Xlib-GLX])
703 if test "x$enable_dri$enable_xlib_glx" = xyesyes; then
704 AC_MSG_ERROR([DRI and Xlib-GLX cannot be built together])
707 # Disable GLX if DRI and Xlib-GLX are not enabled
708 if test "x$enable_glx" = xyes -a \
709 "x$enable_dri" = xno -a \
710 "x$enable_xlib_glx" = xno; then
711 AC_MSG_WARN([Neither DRI nor Xlib-GLX enabled, disabling GLX])
715 AM_CONDITIONAL(HAVE_DRI, test "x$enable_dri" = xyes)
716 AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_xlib_glx" = xyes -o \
717 "x$enable_osmesa" = xyes)
719 AC_ARG_ENABLE([shared-glapi],
720 [AS_HELP_STRING([--enable-shared-glapi],
721 [Enable shared glapi for OpenGL @<:@default=yes@:>@])],
722 [enable_shared_glapi="$enableval"],
723 [enable_shared_glapi="$enable_dri"])
725 # Shared GLAPI is only useful for DRI
726 if test "x$enable_dri" = xno; then
727 AC_MSG_NOTICE([Shared GLAPI is only useful for DRI, disabling])
728 enable_shared_glapi=no
731 # TODO: Get rid of SHARED_GLAPI variable
733 if test "x$enable_shared_glapi" = xyes; then
735 # libGL will use libglapi for function lookups (IN_DRI_DRIVER means to use
737 DEFINES="$DEFINES -DIN_DRI_DRIVER"
738 CORE_DIRS="mapi/shared-glapi"
740 AC_SUBST([SHARED_GLAPI])
741 AM_CONDITIONAL(HAVE_SHARED_GLAPI, test "x$enable_shared_glapi" = xyes)
744 dnl Driver specific build directories
747 GALLIUM_DIRS="auxiliary drivers state_trackers"
748 GALLIUM_TARGET_DIRS=""
749 GALLIUM_WINSYS_DIRS="sw"
750 GALLIUM_DRIVERS_DIRS="galahad trace rbug noop identity"
751 GALLIUM_STATE_TRACKERS_DIRS=""
753 # build glapi if OpenGL is enabled
754 if test "x$enable_opengl" = xyes; then
755 CORE_DIRS="$CORE_DIRS mapi/glapi"
758 # build es1api if OpenGL ES 1.x is enabled
759 if test "x$enable_gles1" = xyes; then
760 CORE_DIRS="$CORE_DIRS mapi/es1api"
763 # build es2api if OpenGL ES 2.x is enabled
764 if test "x$enable_gles2" = xyes; then
765 CORE_DIRS="$CORE_DIRS mapi/es2api"
768 # build glsl and mesa if OpenGL or OpenGL ES is enabled
769 case "x$enable_opengl$enable_gles1$enable_gles2" in
771 CORE_DIRS="mapi/glapi/gen $CORE_DIRS glsl mesa"
775 case "x$enable_glx$enable_xlib_glx" in
777 DRIVER_DIRS="$DRIVER_DIRS x11"
778 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
779 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
780 GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS"
781 HAVE_WINSYS_XLIB="yes"
785 SRC_DIRS="$SRC_DIRS glx"
789 if test "x$enable_dri" = xyes; then
790 DRIVER_DIRS="$DRIVER_DIRS dri"
792 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/dri"
793 GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
797 if test "x$enable_osmesa" = xyes; then
798 DRIVER_DIRS="$DRIVER_DIRS osmesa"
802 AC_SUBST([DRIVER_DIRS])
803 AC_SUBST([GALLIUM_DIRS])
804 AC_SUBST([GALLIUM_TARGET_DIRS])
805 AC_SUBST([GALLIUM_WINSYS_DIRS])
806 AC_SUBST([GALLIUM_DRIVERS_DIRS])
807 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
808 AC_SUBST([MESA_LLVM])
811 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
812 [have_libdrm=yes], [have_libdrm=no])
814 if test "x$enable_dri" = xyes; then
815 # DRI must be shared, I think
816 if test "$enable_static" = yes; then
817 AC_MSG_ERROR([Cannot use static libraries for DRI drivers])
820 # not a hard requirement as swrast does not depend on it
821 if test "x$have_libdrm" = xyes; then
822 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
826 dnl Find out if X is available.
827 PKG_CHECK_MODULES([X11], [x11], [no_x=no], [no_x=yes])
829 dnl Try to tell the user that the --x-* options are only used when
830 dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
831 m4_divert_once([HELP_BEGIN],
832 [These options are only used when the X libraries cannot be found by the
833 pkg-config utility.])
835 dnl We need X for xlib and dri, so bomb now if it's not found
836 if test "x$enable_glx" = xyes -a "x$no_x" = xyes; then
837 AC_MSG_ERROR([X11 development libraries needed for GLX])
840 dnl Direct rendering or just indirect rendering
843 dnl Disable by default on GNU/Hurd
844 driglx_direct_default="no"
847 dnl Disable by default on cygwin
848 driglx_direct_default="no"
851 driglx_direct_default="yes"
854 AC_ARG_ENABLE([driglx-direct],
855 [AS_HELP_STRING([--disable-driglx-direct],
856 [disable direct rendering in GLX and EGL for DRI \
857 @<:@default=auto@:>@])],
858 [driglx_direct="$enableval"],
859 [driglx_direct="$driglx_direct_default"])
862 dnl libGL configuration per driver
864 case "x$enable_glx$enable_xlib_glx" in
867 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
868 GL_PC_REQ_PRIV="x11 xext"
869 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
870 GL_LIB_DEPS="$XLIBGL_LIBS"
871 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
872 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm $PTHREAD_LIBS"
876 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
877 if test x"$driglx_direct" = xyes; then
878 if test "x$have_libdrm" != xyes; then
879 AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
881 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
882 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED"
885 # find the DRI deps for libGL
886 dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx >= 1.8.1 xcb-dri2 >= 1.8"
888 # add xf86vidmode if available
889 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
890 if test "$HAVE_XF86VIDMODE" = yes ; then
891 dri_modules="$dri_modules xxf86vm"
894 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
895 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
896 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
897 GL_LIB_DEPS="$DRIGL_LIBS"
899 # need DRM libs, $PTHREAD_LIBS, etc.
900 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
901 GL_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
905 # This is outside the case (above) so that it is invoked even for non-GLX
907 AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
909 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
910 GLESv1_CM_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
911 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
912 GLESv2_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
914 AC_SUBST([X11_INCLUDES])
915 AC_SUBST([GL_LIB_DEPS])
916 AC_SUBST([GL_PC_REQ_PRIV])
917 AC_SUBST([GL_PC_LIB_PRIV])
918 AC_SUBST([GL_PC_CFLAGS])
919 AC_SUBST([DRI_PC_REQ_PRIV])
920 AC_SUBST([GLESv1_CM_LIB_DEPS])
921 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
922 AC_SUBST([GLESv2_LIB_DEPS])
923 AC_SUBST([GLESv2_PC_LIB_PRIV])
925 DRI_LIB_DEPS="\$(top_builddir)/src/mesa/libdricore/libdricore${VERSION}.la"
927 AC_SUBST([HAVE_XF86VIDMODE])
932 case "x$enable_glx$enable_xlib_glx" in
934 DEFINES="$DEFINES -DUSE_XSHM"
937 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
938 if test "x$driglx_direct" = xyes; then
939 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
948 AC_ARG_ENABLE([glx-tls],
949 [AS_HELP_STRING([--enable-glx-tls],
950 [enable TLS support in GLX @<:@default=disabled@:>@])],
951 [GLX_USE_TLS="$enableval"],
953 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
955 AS_IF([test "x$GLX_USE_TLS" = xyes -a "x$ax_pthread_ok" = xyes],
956 [DEFINES="${DEFINES} -DGLX_USE_TLS -DHAVE_PTHREAD"])
961 dnl Directory for DRI drivers
962 AC_ARG_WITH([dri-driverdir],
963 [AS_HELP_STRING([--with-dri-driverdir=DIR],
964 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
965 [DRI_DRIVER_INSTALL_DIR="$withval"],
966 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
967 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
968 dnl Extra search path for DRI drivers
969 AC_ARG_WITH([dri-searchpath],
970 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
971 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
972 [DRI_DRIVER_SEARCH_DIR="$withval"],
973 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
974 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
975 dnl Which drivers to build - default is chosen by platform
976 AC_ARG_WITH([dri-drivers],
977 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
978 [comma delimited DRI drivers list, e.g.
979 "swrast,i965,radeon" @<:@default=auto@:>@])],
980 [with_dri_drivers="$withval"],
981 [with_dri_drivers=yes])
982 if test "x$with_dri_drivers" = x; then
986 dnl If $with_dri_drivers is yes, directories will be added through
989 case "$with_dri_drivers" in
992 # classic DRI drivers require FEATURE_GL to build
993 if test "x$enable_opengl" = xyes; then
998 # verify the requested driver directories exist
999 dri_drivers=`IFS=', '; echo $with_dri_drivers`
1000 for driver in $dri_drivers; do
1001 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
1002 AC_MSG_ERROR([DRI driver directory '$driver' does not exist])
1004 DRI_DIRS="$dri_drivers"
1005 if test -n "$DRI_DIRS" -a "x$enable_opengl" != xyes; then
1006 AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1011 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
1012 if test "x$enable_dri" = xyes; then
1013 # Platform specific settings and drivers to build
1016 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1017 DEFINES="$DEFINES -DHAVE_ALIAS"
1021 if test "x$DRI_DIRS" = "xyes"; then
1022 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1026 # Build only the drivers for cards that exist on PowerPC.
1027 if test "x$DRI_DIRS" = "xyes"; then
1028 DRI_DIRS="r200 radeon swrast"
1032 # Build only the drivers for cards that exist on sparc
1033 if test "x$DRI_DIRS" = "xyes"; then
1034 DRI_DIRS="r200 radeon swrast"
1039 freebsd* | dragonfly* | *netbsd*)
1040 DEFINES="$DEFINES -DHAVE_PTHREAD -DUSE_EXTERNAL_DXTN_LIB=1"
1041 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
1043 if test "x$DRI_DIRS" = "xyes"; then
1044 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1048 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1049 DEFINES="$DEFINES -DHAVE_ALIAS"
1052 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1055 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1056 if test "x$DRI_DIRS" = "xyes"; then
1063 if test "x$DRI_DIRS" = "xyes"; then
1064 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1067 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
1070 if test "x$enable_dri" = xyes; then
1073 AC_ARG_WITH([expat],
1074 [AS_HELP_STRING([--with-expat=DIR],
1075 [expat install directory])],[
1076 EXPAT_INCLUDES="-I$withval/include"
1077 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
1078 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
1079 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
1081 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
1083 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1084 [AC_MSG_ERROR([Expat required for DRI.])])
1088 # if we are building any dri driver other than swrast ...
1089 if test -n "$DRI_DIRS" -a x"$DRI_DIRS" != xswrast; then
1090 # ... libdrm is required
1091 if test "x$have_libdrm" != xyes; then
1092 AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
1094 # ... and build dricommon
1098 # put all the necessary libs together
1099 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1100 GALLIUM_DRI_LIB_DEPS="$GALLIUM_DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm $CLOCK_LIB $PTHREAD_LIBS $DLOPEN_LIBS"
1102 AM_CONDITIONAL(NEED_LIBDRICORE, test -n "$DRI_DIRS")
1103 AC_SUBST([DRI_DIRS])
1104 AC_SUBST([EXPAT_INCLUDES])
1105 AC_SUBST([DRI_LIB_DEPS])
1106 AC_SUBST([GALLIUM_DRI_LIB_DEPS])
1110 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1112 for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1128 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED])
1129 HAVE_NOUVEAU_DRI=yes;
1135 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1137 for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1140 HAVE_RADEON_DRI=yes;
1153 HAVE_SWRAST_DRI=yes;
1157 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
1158 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
1159 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
1160 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
1161 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
1162 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
1163 AM_CONDITIONAL(HAVE_COMMON_DRI, test x$HAVE_COMMON_DRI = xyes)
1166 dnl OSMesa configuration
1169 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1170 AC_ARG_WITH([osmesa-bits],
1171 [AS_HELP_STRING([--with-osmesa-bits=BITS],
1172 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1173 [osmesa_bits="$withval"],
1175 if test "x$osmesa_bits" != x8; then
1176 if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then
1177 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1181 case "x$osmesa_bits" in
1183 OSMESA_LIB="${OSMESA_LIB}"
1186 OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
1187 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1190 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1194 if test "x$enable_osmesa" = xyes; then
1195 # only link libraries with osmesa if shared
1196 if test "$enable_static" = no; then
1197 OSMESA_LIB_DEPS="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1202 OSMESA_PC_LIB_PRIV="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1205 AC_SUBST([OSMESA_LIB_DEPS])
1206 AC_SUBST([OSMESA_MESA_DEPS])
1207 AC_SUBST([OSMESA_PC_REQ])
1208 AC_SUBST([OSMESA_PC_LIB_PRIV])
1211 dnl gbm configuration
1213 if test "x$enable_gbm" = xauto; then
1214 case "$with_egl_platforms" in
1221 if test "x$enable_gbm" = xyes; then
1222 SRC_DIRS="$SRC_DIRS gbm"
1224 PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1225 AC_MSG_ERROR([gbm needs udev]))
1227 if test "x$enable_dri" = xyes; then
1228 GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
1229 if test "x$enable_shared_glapi" = xno; then
1230 AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1234 GBM_PC_REQ_PRIV="libudev"
1235 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1236 AC_SUBST([GBM_PC_REQ_PRIV])
1237 AC_SUBST([GBM_PC_LIB_PRIV])
1240 dnl EGL configuration
1244 if test "x$enable_egl" = xyes; then
1245 SRC_DIRS="$SRC_DIRS egl"
1246 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS $PTHREAD_LIBS"
1248 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1250 if test "$enable_static" != yes; then
1251 # build egl_glx when libGL is built
1252 PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1253 [have_libudev=yes],[have_libudev=no])
1254 if test "$have_libudev" = yes; then
1255 DEFINES="$DEFINES -DHAVE_LIBUDEV"
1258 if test "x$enable_dri" = xyes; then
1259 HAVE_EGL_DRIVER_DRI2=1
1264 AC_SUBST([EGL_LIB_DEPS])
1267 dnl EGL Gallium configuration
1269 if test "x$enable_gallium_egl" = xyes; then
1270 if test "x$with_gallium_drivers" = x; then
1271 AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
1273 if test "x$enable_egl" = xno; then
1274 AC_MSG_ERROR([cannot enable egl_gallium without EGL])
1276 if test "x$have_libdrm" != xyes; then
1277 AC_MSG_ERROR([egl_gallium requires libdrm >= $LIBDRM_REQUIRED])
1280 GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
1281 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static"
1286 dnl gbm Gallium configuration
1288 if test "x$enable_gallium_gbm" = xauto; then
1289 case "$enable_gbm$HAVE_ST_EGL$enable_dri$with_egl_platforms" in
1291 enable_gallium_gbm=yes ;;
1293 enable_gallium_gbm=no ;;
1296 if test "x$enable_gallium_gbm" = xyes; then
1297 if test "x$with_gallium_drivers" = x; then
1298 AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
1300 if test "x$enable_gbm" = xno; then
1301 AC_MSG_ERROR([cannot enable gbm_gallium without gbm])
1303 # gbm_gallium abuses DRI_LIB_DEPS to link. Make sure it is set.
1304 if test "x$enable_dri" = xno; then
1305 AC_MSG_ERROR([gbm_gallium requires --enable-dri to build])
1308 GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS"
1309 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm"
1311 enable_gallium_loader=yes
1315 dnl X.Org DDX configuration
1317 if test "x$enable_xorg" = xyes; then
1318 PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1319 PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1320 PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1321 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1322 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1323 HAVE_XEXTPROTO_71="no")
1324 GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS"
1329 dnl XA configuration
1331 if test "x$enable_xa" = xyes; then
1334 AC_CHECK_PROG(NM, nm, "nm")
1335 if test "x$AWK" = x || test "x$GREP" = x || test "x$NM" = x; then
1336 AC_MSG_WARN([Missing one of nm, grep or awk. Disabling xa.])
1340 if test "x$enable_xa" = xyes; then
1341 GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS"
1349 dnl OpenVG configuration
1353 if test "x$enable_openvg" = xyes; then
1354 if test "x$enable_egl" = xno; then
1355 AC_MSG_ERROR([cannot enable OpenVG without EGL])
1357 if test "x$with_gallium_drivers" = x; then
1358 AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1360 if test "x$enable_gallium_egl" = xno; then
1361 AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
1364 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1365 VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS $PTHREAD_LIBS"
1366 CORE_DIRS="$CORE_DIRS mapi/vgapi"
1367 GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1369 VG_PC_LIB_PRIV="-lm $CLOCK_LIB $PTHREAD_LIBS $DLOPEN_LIBS"
1370 AC_SUBST([VG_PC_LIB_PRIV])
1372 AM_CONDITIONAL(HAVE_OPENVG, test "x$enable_openvg" = xyes)
1375 dnl D3D1X configuration
1378 if test "x$enable_d3d1x" = xyes; then
1379 if test "x$with_gallium_drivers" = x; then
1380 AC_MSG_ERROR([cannot enable D3D1X without Gallium])
1383 GALLIUM_STATE_TRACKERS_DIRS="d3d1x $GALLIUM_STATE_TRACKERS_DIRS"
1388 dnl Gallium G3DVL configuration
1390 AC_ARG_ENABLE([gallium-g3dvl],
1391 [AS_HELP_STRING([--enable-gallium-g3dvl],
1392 [build gallium g3dvl @<:@default=disabled@:>@])],
1393 [enable_gallium_g3dvl="$enableval"],
1394 [enable_gallium_g3dvl=no])
1395 if test "x$enable_gallium_g3dvl" = xyes; then
1396 if test "x$with_gallium_drivers" = x; then
1397 AC_MSG_ERROR([cannot enable G3DVL without Gallium])
1400 if test "x$enable_xvmc" = xauto; then
1401 PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no])
1404 if test "x$enable_vdpau" = xauto; then
1405 PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no])
1409 if test "x$enable_xvmc" = xyes; then
1410 PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6 x11-xcb xcb-dri2 >= 1.8])
1411 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xvmc"
1415 if test "x$enable_vdpau" = xyes; then
1416 PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.4.1 x11-xcb xcb-dri2 >= 1.8])
1417 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau"
1422 dnl OpenCL configuration
1425 AC_ARG_WITH([libclc-path],
1426 [AS_HELP_STRING([--with-libclc-path],
1427 [DEPRECATED: See http://dri.freedesktop.org/wiki/GalliumCompute#How_to_Install])],
1428 [LIBCLC_PATH="$withval"],
1431 if test "x$LIBCLC_PATH" != x; then
1432 AC_MSG_ERROR([The --with-libclc-path option has been deprecated.
1433 Please review the updated build instructions for clover:
1434 http://dri.freedesktop.org/wiki/GalliumCompute])
1438 AC_ARG_WITH([clang-libdir],
1439 [AS_HELP_STRING([--with-clang-libdir],
1440 [Path to Clang libraries @<:@default=llvm-config --libdir@:>@])],
1441 [CLANG_LIBDIR="$withval"],
1444 LIBCLC_INCLUDEDIR=`pkg-config --variable=includedir libclc`
1445 LIBCLC_LIBEXECDIR=`pkg-config --variable=libexecdir libclc`
1446 AC_SUBST([LIBCLC_INCLUDEDIR])
1447 AC_SUBST([LIBCLC_LIBEXECDIR])
1449 if test "x$enable_opencl" = xyes; then
1450 if test "x$with_gallium_drivers" = x; then
1451 AC_MSG_ERROR([cannot enable OpenCL without Gallium])
1454 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6; then
1455 AC_MSG_ERROR([gcc >= 4.6 is required to build clover])
1458 if test "x$LIBCLC_INCLUDEDIR" == x || test "x$LIBCLC_LIBEXECDIR" == x; then
1459 AC_MSG_ERROR([pkg-config cannot use libclc.pc which is required to build clover])
1462 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS clover"
1463 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS opencl"
1464 enable_gallium_loader=yes
1467 if test "x$enable_gallium_gbm" = xyes || test "x$enable_opencl" = xyes; then
1468 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS pipe-loader"
1472 dnl Gallium configuration
1474 if test "x$with_gallium_drivers" != x; then
1475 SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
1477 AM_CONDITIONAL(HAVE_GALLIUM, test "x$with_gallium_drivers" != x)
1479 AC_SUBST([LLVM_BINDIR])
1480 AC_SUBST([LLVM_CFLAGS])
1481 AC_SUBST([LLVM_CPPFLAGS])
1482 AC_SUBST([LLVM_CXXFLAGS])
1483 AC_SUBST([LLVM_LIBDIR])
1484 AC_SUBST([LLVM_LIBS])
1485 AC_SUBST([LLVM_LDFLAGS])
1486 AC_SUBST([LLVM_INCLUDEDIR])
1487 AC_SUBST([LLVM_VERSION])
1488 AC_SUBST([CLANG_RESOURCE_DIR])
1490 case "x$enable_opengl$enable_gles1$enable_gles2" in
1492 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1496 AM_CONDITIONAL(HAVE_OPENGL, test "x$HAVE_OPENGL" = xyes)
1498 AC_SUBST([VG_LIB_DEPS])
1499 AC_SUBST([EGL_CLIENT_APIS])
1502 dnl EGL Platforms configuration
1504 AC_ARG_WITH([egl-platforms],
1505 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1506 [comma delimited native platforms libEGL supports, e.g.
1507 "x11,drm" @<:@default=auto@:>@])],
1508 [with_egl_platforms="$withval"],
1509 [if test "x$enable_egl" = xyes; then
1510 with_egl_platforms="x11"
1512 with_egl_platforms=""
1517 if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
1518 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1521 # Do per-EGL platform setups and checks
1522 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1523 for plat in $egl_platforms; do
1526 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/$plat"
1530 PKG_CHECK_MODULES([WAYLAND], [wayland-client >= 1.0.2 wayland-server >= 1.0.2])
1531 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
1533 WAYLAND_PREFIX=`$PKG_CONFIG --variable=prefix wayland-client`
1534 AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner],,
1535 [${WAYLAND_PREFIX}/bin$PATH_SEPARATOR$PATH])
1539 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 >= 1.8 xcb-xfixes])
1541 if test "x$enable_glx" = xyes; then
1542 HAVE_EGL_DRIVER_GLX=1
1547 test "x$enable_gbm" = "xno" &&
1548 AC_MSG_ERROR([EGL platform drm needs gbm])
1555 AC_MSG_ERROR([EGL platform '$plat' does not exist])
1559 case "$plat$have_libudev" in
1561 AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;;
1565 # libEGL wants to default to the first platform specified in
1566 # ./configure. parse that here.
1567 if test "x$egl_platforms" != "x"; then
1568 FIRST_PLATFORM_CAPS=`echo $egl_platforms | sed 's| .*||' | tr 'a-z' 'A-Z'`
1569 EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
1571 EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
1574 EGL_PLATFORMS="$egl_platforms"
1576 AM_CONDITIONAL(HAVE_EGL_PLATFORM_X11, echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1)
1577 AM_CONDITIONAL(HAVE_EGL_PLATFORM_WAYLAND, echo "$egl_platforms" | grep 'wayland' >/dev/null 2>&1)
1578 AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep 'drm' >/dev/null 2>&1)
1579 AM_CONDITIONAL(HAVE_EGL_PLATFORM_FBDEV, echo "$egl_platforms" | grep 'fbdev' >/dev/null 2>&1)
1580 AM_CONDITIONAL(HAVE_EGL_PLATFORM_NULL, echo "$egl_platforms" | grep 'null' >/dev/null 2>&1)
1582 AM_CONDITIONAL(HAVE_EGL_DRIVER_DRI2, test "x$HAVE_EGL_DRIVER_DRI2" != "x")
1583 AM_CONDITIONAL(HAVE_EGL_DRIVER_GLX, test "x$HAVE_EGL_DRIVER_GLX" != "x")
1585 AC_SUBST([EGL_NATIVE_PLATFORM])
1586 AC_SUBST([EGL_PLATFORMS])
1587 AC_SUBST([EGL_CFLAGS])
1589 AC_ARG_WITH([egl-driver-dir],
1590 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1591 [directory for EGL drivers [[default=${libdir}/egl]]])],
1592 [EGL_DRIVER_INSTALL_DIR="$withval"],
1593 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1594 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1596 AC_ARG_WITH([xorg-driver-dir],
1597 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1598 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1599 [XORG_DRIVER_INSTALL_DIR="$withval"],
1600 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1601 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1603 AC_ARG_WITH([max-width],
1604 [AS_HELP_STRING([--with-max-width=N],
1605 [Maximum framebuffer width (4096)])],
1606 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1607 AS_IF([test "${withval}" -gt "4096"],
1608 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1610 AC_ARG_WITH([max-height],
1611 [AS_HELP_STRING([--with-max-height=N],
1612 [Maximum framebuffer height (4096)])],
1613 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1614 AS_IF([test "${withval}" -gt "4096"],
1615 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1621 AC_ARG_ENABLE([gallium-llvm],
1622 [AS_HELP_STRING([--enable-gallium-llvm],
1623 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1624 [enable_gallium_llvm="$enableval"],
1625 [enable_gallium_llvm=auto])
1627 AC_ARG_WITH([llvm-shared-libs],
1628 [AS_HELP_STRING([--with-llvm-shared-libs],
1629 [link with LLVM shared libraries @<:@default=disabled@:>@])],
1630 [with_llvm_shared_libs=yes],
1631 [with_llvm_shared_libs=no])
1633 AC_ARG_WITH([llvm-prefix],
1634 [AS_HELP_STRING([--with-llvm-prefix],
1635 [Prefix for LLVM installations in non-standard locations])],
1636 [llvm_prefix="$withval"],
1640 # Call this inside ` ` to get the return value.
1641 # $1 is the llvm-config command with arguments.
1642 strip_unwanted_llvm_flags() {
1643 # Use \> (marks the end of the word)
1645 -e 's/-DNDEBUG\>//g' \
1646 -e 's/-pedantic\>//g' \
1647 -e 's/-Wcovered-switch-default\>//g' \
1651 -e 's/-fomit-frame-pointer\>//g'
1655 if test "x$with_gallium_drivers" = x; then
1656 enable_gallium_llvm=no
1658 if test "x$enable_gallium_llvm" = xauto; then
1660 i*86|x86_64) enable_gallium_llvm=yes;;
1663 if test "x$enable_gallium_llvm" = xyes; then
1664 if test "x$llvm_prefix" != x; then
1665 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no], ["$llvm_prefix/bin"])
1667 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1670 if test "x$LLVM_CONFIG" != xno; then
1671 LLVM_VERSION=`$LLVM_CONFIG --version | sed 's/svn.*//g'`
1672 LLVM_VERSION_INT=`echo $LLVM_VERSION | sed -e 's/\([[0-9]]\)\.\([[0-9]]\)/\10\2/g'`
1673 if test "x$with_llvm_shared_libs" = xyes; then
1674 dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
1675 LLVM_LIBS="-lLLVM-`$LLVM_CONFIG --version`"
1677 LLVM_COMPONENTS="engine bitwriter"
1678 if $LLVM_CONFIG --components | grep -q '\<mcjit\>'; then
1679 LLVM_COMPONENTS="${LLVM_COMPONENTS} mcjit"
1682 if test "x$enable_opencl" = xyes; then
1683 LLVM_COMPONENTS="${LLVM_COMPONENTS} ipo linker instrumentation"
1685 LLVM_LIBS="`$LLVM_CONFIG --libs ${LLVM_COMPONENTS}`"
1687 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1688 LLVM_BINDIR=`$LLVM_CONFIG --bindir`
1689 LLVM_CPPFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cppflags"`
1690 LLVM_CFLAGS=$LLVM_CPPFLAGS # CPPFLAGS seem to be sufficient
1691 LLVM_CXXFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cxxflags"`
1692 LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
1693 LLVM_LIBDIR=`$LLVM_CONFIG --libdir`
1694 DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT"
1697 dnl Check for Clang interanl headers
1698 if test "x$enable_opencl" = xyes; then
1699 if test "x$CLANG_LIBDIR" = x; then
1700 CLANG_LIBDIR=${LLVM_LIBDIR}
1702 CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION}
1703 AC_CHECK_FILE("$CLANG_RESOURCE_DIR/include/stddef.h",,
1704 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.]))
1715 dnl Directory for XVMC libs
1716 AC_ARG_WITH([xvmc-libdir],
1717 [AS_HELP_STRING([--with-xvmc-libdir=DIR],
1718 [directory for the XVMC libraries @<:@default=${libdir}@:>@])],
1719 [XVMC_LIB_INSTALL_DIR="$withval"],
1720 [XVMC_LIB_INSTALL_DIR='${libdir}'])
1721 AC_SUBST([XVMC_LIB_INSTALL_DIR])
1726 if test "x$enable_gallium_tests" = xyes; then
1727 SRC_DIRS="$SRC_DIRS gallium/tests/trivial gallium/tests/unit"
1728 enable_gallium_loader=yes
1731 dnl Directory for VDPAU libs
1732 AC_ARG_WITH([vdpau-libdir],
1733 [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1734 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1735 [VDPAU_LIB_INSTALL_DIR="$withval"],
1736 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1737 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
1739 dnl Directory for OpenCL libs
1740 AC_ARG_WITH([opencl-libdir],
1741 [AS_HELP_STRING([--with-opencl-libdir=DIR],
1742 [directory for the OpenCL libraries @<:@default=${libdir}/opencl@:>@])],
1743 [OPENCL_LIB_INSTALL_DIR="$withval"],
1744 [OPENCL_LIB_INSTALL_DIR='${libdir}/opencl'])
1745 AC_SUBST([OPENCL_LIB_INSTALL_DIR])
1748 dnl Gallium helper functions
1750 gallium_check_st() {
1751 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes ||
1752 test "x$HAVE_ST_XA" = xyes || test "x$HAVE_ST_XVMC" = xyes ||
1753 test "x$HAVE_ST_VDPAU" = xyes; then
1754 if test "x$have_libdrm" != xyes; then
1755 AC_MSG_ERROR([DRI or Xorg DDX requires libdrm >= $LIBDRM_REQUIRED])
1757 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1759 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1760 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1762 if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
1763 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1765 if test "x$HAVE_ST_XA" = xyes && test "x$4" != x; then
1766 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
1768 if test "x$HAVE_ST_XVMC" = xyes && test "x$5" != x; then
1769 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5"
1771 if test "x$HAVE_ST_VDPAU" = xyes && test "x$6" != x; then
1772 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6"
1776 gallium_require_llvm() {
1777 if test "x$MESA_LLVM" = x0; then
1779 i*86|x86_64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1784 gallium_require_drm_loader() {
1785 if test "x$enable_gallium_loader" = xyes; then
1786 PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1787 AC_MSG_ERROR([Gallium drm loader requires libudev]))
1788 if test "x$have_libdrm" != xyes; then
1789 AC_MSG_ERROR([Gallium drm loader requires libdrm >= $LIBDRM_REQUIRED])
1791 enable_gallium_drm_loader=yes
1795 radeon_llvm_check() {
1796 LLVM_REQUIRED_VERSION_MAJOR="3"
1797 LLVM_REQUIRED_VERSION_MINOR="2"
1798 if test "$LLVM_VERSION_INT" -lt "${LLVM_REQUIRED_VERSION_MAJOR}0${LLVM_REQUIRED_VERSION_MINOR}"; then
1799 AC_MSG_ERROR([LLVM $LLVM_REQUIRED_VERSION_MAJOR.$LLVM_REQUIRED_VERSION_MINOR or newer with R600 target enabled is required.
1800 To use the r600/radeonsi LLVM backend, you need to fetch the LLVM source from:
1801 git://people.freedesktop.org/~tstellar/llvm master
1802 and build with --enable-experimental-targets=R600])
1804 if test true && $LLVM_CONFIG --targets-built | grep -qv '\<R600\>' ; then
1805 AC_MSG_ERROR([LLVM R600 Target not enabled. You can enable it when building the LLVM
1806 sources with the --enable-experimental-targets=R600
1809 AC_MSG_WARN([Please ensure you use the latest llvm tree from git://people.freedesktop.org/~tstellar/llvm master before submitting a bug])
1810 LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --libs r600`"
1814 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
1815 if test "x$with_gallium_drivers" != x; then
1816 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1817 for driver in $gallium_drivers; do
1820 HAVE_GALLIUM_SVGA=yes
1821 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
1822 gallium_check_st "svga/drm" "dri-vmwgfx" "" "xa-vmwgfx"
1825 HAVE_GALLIUM_I915=yes
1826 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1827 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe"
1828 if test "x$MESA_LLVM" = x1; then
1829 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1831 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1832 gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1835 HAVE_GALLIUM_R300=yes
1836 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1837 gallium_require_llvm "Gallium R300"
1838 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1839 gallium_check_st "radeon/drm" "dri-r300" "xorg-r300" "" "xvmc-r300" "vdpau-r300"
1842 HAVE_GALLIUM_R600=yes
1843 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1844 gallium_require_drm_loader
1845 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1846 if test "x$enable_r600_llvm" = xyes -o "x$enable_opencl" = xyes; then
1848 NEED_RADEON_GALLIUM=yes;
1850 if test "x$enable_r600_llvm" = xyes; then
1851 USE_R600_LLVM_COMPILER=yes;
1853 if test "x$enable_opencl" = xyes -a "x$with_llvm_shared_libs" = xno; then
1854 LLVM_LIBS="${LLVM_LIBS} `$LLVM_CONFIG --libs bitreader asmparser`"
1856 gallium_check_st "radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600"
1859 HAVE_GALLIUM_RADEONSI=yes
1860 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1861 gallium_require_drm_loader
1862 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS radeonsi"
1864 NEED_RADEON_GALLIUM=yes;
1865 gallium_check_st "radeon/drm" "dri-radeonsi" "xorg-radeonsi" "" "" "vdpau-radeonsi" ""
1868 HAVE_GALLIUM_NOUVEAU=yes
1869 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1870 gallium_require_drm_loader
1871 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nv30 nv50 nvc0"
1872 gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau" "" "xvmc-nouveau" "vdpau-nouveau"
1875 HAVE_GALLIUM_SOFTPIPE=yes
1876 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe"
1877 if test "x$MESA_LLVM" = x1; then
1878 HAVE_GALLIUM_LLVMPIPE=yes
1879 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1882 if test "x$HAVE_ST_DRI" = xyes; then
1883 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1885 if test "x$HAVE_ST_VDPAU" = xyes; then
1886 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS vdpau-softpipe"
1888 if test "x$HAVE_ST_XVMC" = xyes; then
1889 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS xvmc-softpipe"
1891 if test "x$HAVE_ST_VDPAU" = xyes ||
1892 test "x$HAVE_ST_XVMC" = xyes; then
1893 if test "x$HAVE_WINSYS_XLIB" != xyes; then
1894 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
1899 AC_MSG_ERROR([Unknown Gallium driver: $driver])
1904 AM_CONDITIONAL(HAVE_GALLIUM_SVGA, test "x$HAVE_GALLIUM_SVGA" = xyes)
1905 AM_CONDITIONAL(HAVE_GALLIUM_I915, test "x$HAVE_GALLIUM_I915" = xyes)
1906 AM_CONDITIONAL(HAVE_GALLIUM_R300, test "x$HAVE_GALLIUM_R300" = xyes)
1907 AM_CONDITIONAL(HAVE_GALLIUM_R600, test "x$HAVE_GALLIUM_R600" = xyes)
1908 AM_CONDITIONAL(HAVE_GALLIUM_RADEONSI, test "x$HAVE_GALLIUM_RADEONSI" = xyes)
1909 AM_CONDITIONAL(HAVE_GALLIUM_NOUVEAU, test "x$HAVE_GALLIUM_NOUVEAU" = xyes)
1910 AM_CONDITIONAL(HAVE_GALLIUM_SOFTPIPE, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes)
1911 AM_CONDITIONAL(HAVE_GALLIUM_LLVMPIPE, test "x$HAVE_GALLIUM_LLVMPIPE" = xyes)
1913 if test "x$enable_gallium_loader" = xyes; then
1914 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
1915 GALLIUM_PIPE_LOADER_DEFINES="-DHAVE_PIPE_LOADER_SW"
1916 GALLIUM_PIPE_LOADER_LIBS="\$(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader.la"
1917 GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS \$(top_builddir)/src/gallium/winsys/sw/null/libws_null.la"
1919 if test "x$HAVE_WINSYS_XLIB" = xyes; then
1920 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_XLIB"
1921 GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS \$(top_builddir)/src/gallium/winsys/sw/xlib/libws_xlib.la"
1924 if test "x$enable_gallium_drm_loader" = xyes; then
1925 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRM"
1926 PKG_CHECK_MODULES([GALLIUM_PIPE_LOADER_XCB], [xcb xcb-dri2],
1927 pipe_loader_have_xcb=yes, pipe_loader_have_xcb=no)
1928 if test "x$pipe_loader_have_xcb" = xyes; then
1929 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DPIPE_LOADER_HAVE_XCB"
1930 GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS $GALLIUM_PIPE_LOADER_XCB_LIBS $LIBDRM_LIBS"
1934 AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
1935 AC_SUBST([GALLIUM_PIPE_LOADER_LIBS])
1938 dnl Tell Automake which drivers to build
1939 for driver in $GALLIUM_DRIVERS_DIRS; do
1942 HAVE_GALAHAD_GALLIUM=yes;
1945 HAVE_IDENTITY_GALLIUM=yes;
1948 HAVE_NOOP_GALLIUM=yes;
1951 GALLIUM_MAKE_DIRS="$GALLIUM_MAKE_DIRS $driver"
1956 AM_CONDITIONAL(HAVE_GALAHAD_GALLIUM, test x$HAVE_GALAHAD_GALLIUM = xyes)
1957 AM_CONDITIONAL(HAVE_IDENTITY_GALLIUM, test x$HAVE_IDENTITY_GALLIUM = xyes)
1958 AM_CONDITIONAL(HAVE_NOOP_GALLIUM, test x$HAVE_NOOP_GALLIUM = xyes)
1959 AM_CONDITIONAL(NEED_RADEON_GALLIUM, test x$NEED_RADEON_GALLIUM = xyes)
1960 AM_CONDITIONAL(USE_R600_LLVM_COMPILER, test x$USE_R600_LLVM_COMPILER = xyes)
1961 AM_CONDITIONAL(HAVE_LOADER_GALLIUM, test x$enable_gallium_loader = xyes)
1962 AM_CONDITIONAL(HAVE_DRM_LOADER_GALLIUM, test x$enable_gallium_drm_loader = xyes)
1963 AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
1964 AM_CONDITIONAL(HAVE_MESA_LLVM, test x$MESA_LLVM = x1)
1965 AM_CONDITIONAL(LLVM_NEEDS_FNORTTI, test $LLVM_VERSION_INT -ge 302)
1967 AC_SUBST([GALLIUM_MAKE_DIRS])
1969 AM_CONDITIONAL(NEED_LIBPROGRAM, test "x$with_gallium_drivers" != x -o \
1970 "x$enable_xlib_glx" = xyes -o \
1971 "x$enable_osmesa" = xyes)
1972 AM_CONDITIONAL(HAVE_X11_DRIVER, echo "$DRIVER_DIRS" | grep 'x11' >/dev/null 2>&1)
1974 AM_CONDITIONAL(HAVE_X86_ASM, echo "$DEFINES" | grep 'X86_ASM' >/dev/null 2>&1)
1975 AM_CONDITIONAL(HAVE_X86_64_ASM, echo "$DEFINES" | grep 'X86_64_ASM' >/dev/null 2>&1)
1976 AM_CONDITIONAL(HAVE_SPARC_ASM, echo "$DEFINES" | grep 'SPARC_ASM' >/dev/null 2>&1)
1978 AC_SUBST([VDPAU_MAJOR], 1)
1979 AC_SUBST([VDPAU_MINOR], 0)
1981 AC_SUBST([XVMC_MAJOR], 1)
1982 AC_SUBST([XVMC_MINOR], 0)
1984 AC_SUBST([XA_MAJOR], 1)
1985 AC_SUBST([XA_MINOR], 0)
1986 AC_SUBST([XA_TINY], 0)
1987 AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_TINY")
1989 dnl prepend CORE_DIRS to SRC_DIRS
1990 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
1992 dnl Restore LDFLAGS and CPPFLAGS
1993 LDFLAGS="$_SAVE_LDFLAGS"
1994 CPPFLAGS="$_SAVE_CPPFLAGS"
1996 dnl Add user CFLAGS and CXXFLAGS
1997 CFLAGS="$CFLAGS $USER_CFLAGS"
1998 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
2000 dnl Substitute the config
2001 AC_CONFIG_FILES([Makefile
2004 src/egl/drivers/Makefile
2005 src/egl/drivers/dri2/Makefile
2006 src/egl/drivers/glx/Makefile
2007 src/egl/main/Makefile
2009 src/egl/wayland/Makefile
2010 src/egl/wayland/wayland-drm/Makefile
2011 src/egl/wayland/wayland-egl/Makefile
2012 src/egl/wayland/wayland-egl/wayland-egl.pc
2013 src/gallium/Makefile
2014 src/gallium/auxiliary/Makefile
2015 src/gallium/auxiliary/pipe-loader/Makefile
2016 src/gallium/drivers/Makefile
2017 src/gallium/drivers/i915/Makefile
2018 src/gallium/drivers/llvmpipe/Makefile
2019 src/gallium/drivers/nouveau/Makefile
2020 src/gallium/drivers/nv30/Makefile
2021 src/gallium/drivers/nv50/Makefile
2022 src/gallium/drivers/nvc0/Makefile
2023 src/gallium/drivers/r300/Makefile
2024 src/gallium/drivers/r600/Makefile
2025 src/gallium/drivers/radeon/Makefile
2026 src/gallium/drivers/radeonsi/Makefile
2027 src/gallium/drivers/rbug/Makefile
2028 src/gallium/drivers/softpipe/Makefile
2029 src/gallium/drivers/svga/Makefile
2030 src/gallium/drivers/trace/Makefile
2031 src/gallium/state_trackers/Makefile
2032 src/gallium/state_trackers/clover/Makefile
2033 src/gallium/state_trackers/dri/Makefile
2034 src/gallium/state_trackers/dri/drm/Makefile
2035 src/gallium/state_trackers/dri/sw/Makefile
2036 src/gallium/state_trackers/egl/Makefile
2037 src/gallium/state_trackers/gbm/Makefile
2038 src/gallium/state_trackers/glx/Makefile
2039 src/gallium/state_trackers/vdpau/Makefile
2040 src/gallium/state_trackers/vega/Makefile
2041 src/gallium/state_trackers/xa/Makefile
2042 src/gallium/state_trackers/xorg/Makefile
2043 src/gallium/state_trackers/xvmc/Makefile
2044 src/gallium/targets/Makefile
2045 src/gallium/targets/dri-i915/Makefile
2046 src/gallium/targets/dri-nouveau/Makefile
2047 src/gallium/targets/dri-r300/Makefile
2048 src/gallium/targets/dri-r600/Makefile
2049 src/gallium/targets/dri-radeonsi/Makefile
2050 src/gallium/targets/dri-swrast/Makefile
2051 src/gallium/targets/dri-vmwgfx/Makefile
2052 src/gallium/targets/egl-static/Makefile
2053 src/gallium/targets/gbm/Makefile
2054 src/gallium/targets/opencl/Makefile
2055 src/gallium/targets/pipe-loader/Makefile
2056 src/gallium/targets/libgl-xlib/Makefile
2057 src/gallium/targets/vdpau-nouveau/Makefile
2058 src/gallium/targets/vdpau-r300/Makefile
2059 src/gallium/targets/vdpau-r600/Makefile
2060 src/gallium/targets/vdpau-radeonsi/Makefile
2061 src/gallium/targets/vdpau-softpipe/Makefile
2062 src/gallium/targets/xa-vmwgfx/Makefile
2063 src/gallium/targets/xa-vmwgfx/xatracker.pc
2064 src/gallium/targets/xorg-i915/Makefile
2065 src/gallium/targets/xorg-nouveau/Makefile
2066 src/gallium/targets/xorg-r300/Makefile
2067 src/gallium/targets/xorg-r600/Makefile
2068 src/gallium/targets/xorg-radeonsi/Makefile
2069 src/gallium/targets/xvmc-nouveau/Makefile
2070 src/gallium/targets/xvmc-r300/Makefile
2071 src/gallium/targets/xvmc-r600/Makefile
2072 src/gallium/targets/xvmc-softpipe/Makefile
2073 src/gallium/tests/trivial/Makefile
2074 src/gallium/tests/unit/Makefile
2075 src/gallium/winsys/Makefile
2076 src/gallium/winsys/i915/drm/Makefile
2077 src/gallium/winsys/i915/sw/Makefile
2078 src/gallium/winsys/nouveau/drm/Makefile
2079 src/gallium/winsys/radeon/drm/Makefile
2080 src/gallium/winsys/svga/drm/Makefile
2081 src/gallium/winsys/sw/Makefile
2082 src/gallium/winsys/sw/dri/Makefile
2083 src/gallium/winsys/sw/fbdev/Makefile
2084 src/gallium/winsys/sw/null/Makefile
2085 src/gallium/winsys/sw/wayland/Makefile
2086 src/gallium/winsys/sw/wrapper/Makefile
2087 src/gallium/winsys/sw/xlib/Makefile
2091 src/glsl/builtin_compiler/Makefile
2092 src/glsl/glcpp/Makefile
2093 src/glsl/tests/Makefile
2095 src/glx/tests/Makefile
2097 src/mapi/es1api/Makefile
2098 src/mapi/es1api/glesv1_cm.pc
2099 src/mapi/es2api/Makefile
2100 src/mapi/es2api/glesv2.pc
2101 src/mapi/glapi/Makefile
2102 src/mapi/glapi/gen/Makefile
2103 src/mapi/glapi/tests/Makefile
2104 src/mapi/shared-glapi/Makefile
2105 src/mapi/shared-glapi/tests/Makefile
2106 src/mapi/vgapi/Makefile
2107 src/mapi/vgapi/vg.pc
2110 src/mesa/drivers/Makefile
2111 src/mesa/drivers/dri/dri.pc
2112 src/mesa/drivers/dri/common/Makefile
2113 src/mesa/drivers/dri/i915/Makefile
2114 src/mesa/drivers/dri/i965/Makefile
2115 src/mesa/drivers/dri/Makefile
2116 src/mesa/drivers/dri/nouveau/Makefile
2117 src/mesa/drivers/dri/r200/Makefile
2118 src/mesa/drivers/dri/radeon/Makefile
2119 src/mesa/drivers/dri/swrast/Makefile
2120 src/mesa/drivers/osmesa/Makefile
2121 src/mesa/drivers/osmesa/osmesa.pc
2122 src/mesa/drivers/x11/Makefile
2123 src/mesa/libdricore/Makefile
2124 src/mesa/main/tests/Makefile
2125 src/mesa/main/tests/hash_table/Makefile
2126 src/mesa/program/Makefile
2127 src/mesa/x86-64/Makefile
2128 src/mesa/x86/Makefile])
2130 dnl Sort the dirs alphabetically
2131 GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2132 GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2133 GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2134 GALLIUM_MAKE_DIRS=`echo $GALLIUM_MAKE_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2135 GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2140 dnl Output some configuration info for the user
2143 echo " prefix: $prefix"
2144 echo " exec_prefix: $exec_prefix"
2145 echo " libdir: $libdir"
2146 echo " includedir: $includedir"
2150 echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
2151 echo " OpenVG: $enable_openvg"
2155 if test "x$enable_osmesa" != xno; then
2156 echo " OSMesa: lib$OSMESA_LIB"
2161 if test "x$enable_dri" != xno; then
2162 # cleanup the drivers var
2163 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
2164 if test "x$DRI_DIRS" = x; then
2165 echo " DRI drivers: no"
2167 echo " DRI drivers: $dri_dirs"
2169 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
2172 case "x$enable_glx$enable_xlib_glx" in
2174 echo " GLX: Xlib-based"
2177 echo " GLX: DRI-based"
2180 echo " GLX: $enable_glx"
2186 echo " EGL: $enable_egl"
2187 if test "$enable_egl" = yes; then
2188 echo " EGL platforms: $EGL_PLATFORMS"
2191 if test "x$HAVE_EGL_DRIVER_GLX" != "x"; then
2192 egl_drivers="$egl_drivers builtin:egl_glx"
2194 if test "x$HAVE_EGL_DRIVER_DRI2" != "x"; then
2195 egl_drivers="$egl_drivers builtin:egl_dri2"
2198 if test "x$HAVE_ST_EGL" = xyes; then
2199 echo " EGL drivers: ${egl_drivers} egl_gallium"
2200 echo " EGL Gallium STs:$EGL_CLIENT_APIS"
2202 echo " EGL drivers: $egl_drivers"
2207 if test "x$MESA_LLVM" = x1; then
2209 echo " llvm-config: $LLVM_CONFIG"
2210 echo " llvm-version: $LLVM_VERSION"
2216 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
2217 echo " Gallium: yes"
2218 echo " Gallium dirs: $GALLIUM_DIRS"
2219 echo " Target dirs: $GALLIUM_TARGET_DIRS"
2220 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
2221 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
2222 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
2230 echo " Shared libs: $enable_shared"
2231 echo " Static libs: $enable_static"
2232 echo " Shared-glapi: $enable_shared_glapi"
2234 dnl Compiler options
2235 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2236 cflags=`echo $CFLAGS $PIC_FLAGS | \
2237 $SED 's/^ *//;s/ */ /;s/ *$//'`
2238 cxxflags=`echo $CXXFLAGS $PIC_FLAGS | \
2239 $SED 's/^ *//;s/ */ /;s/ *$//'`
2240 defines=`echo $DEFINES | $SED 's/^ *//;s/ */ /;s/ *$//'`
2242 echo " CFLAGS: $cflags"
2243 echo " CXXFLAGS: $cxxflags"
2244 echo " Macros: $defines"
2246 if test "x$MESA_LLVM" = x1; then
2247 echo " LLVM_CFLAGS: $LLVM_CFLAGS"
2248 echo " LLVM_CXXFLAGS: $LLVM_CXXFLAGS"
2249 echo " LLVM_CPPFLAGS: $LLVM_CPPFLAGS"
2252 echo " PYTHON2: $PYTHON2"
2255 echo " Run '${MAKE-make}' to build Mesa"