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 m4_define(MESA_VERSION, m4_normalize(m4_include(VERSION)))
10 AC_INIT([Mesa], [MESA_VERSION],
11 [https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa])
12 AC_CONFIG_AUX_DIR([bin])
13 AC_CONFIG_MACRO_DIR([m4])
15 AM_INIT_AUTOMAKE([foreign])
17 # Support silent build rules, requires at least automake-1.11. Disable
18 # by either passing --disable-silent-rules to configure or passing V=1
20 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])],
21 [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])])
23 m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
25 dnl Set internal versions
27 AC_SUBST([OSMESA_VERSION])
29 dnl Versions for external dependencies
30 LIBDRM_REQUIRED=2.4.38
31 LIBDRM_RADEON_REQUIRED=2.4.56
32 LIBDRM_INTEL_REQUIRED=2.4.52
33 LIBDRM_NVVIEUX_REQUIRED=2.4.33
34 LIBDRM_NOUVEAU_REQUIRED="2.4.33 libdrm >= 2.4.41"
35 LIBDRM_FREEDRENO_REQUIRED=2.4.57
36 DRI2PROTO_REQUIRED=2.6
37 DRI3PROTO_REQUIRED=1.0
38 PRESENTPROTO_REQUIRED=1.0
40 GLPROTO_REQUIRED=1.4.14
41 LIBOMXIL_BELLAGIO_REQUIRED=0.0
43 WAYLAND_REQUIRED=1.2.0
47 XSHMFENCE_REQUIRED=1.1
57 AC_CHECK_PROGS([PYTHON2], [python2 python])
64 LT_INIT([disable-static])
67 AS_IF([test ! -f "$srcdir/src/glsl/glcpp/glcpp-parse.c"],
68 [AC_MSG_ERROR([bison not found - unable to compile glcpp-parse.y])]))
70 AS_IF([test ! -f "$srcdir/src/glsl/glcpp/glcpp-lex.c"],
71 [AC_MSG_ERROR([flex not found - unable to compile glcpp-lex.l])]))
73 AC_CHECK_PROG(INDENT, indent, indent, cat)
74 if test "x$INDENT" != "xcat"; then
75 AC_SUBST(INDENT_FLAGS, '-i4 -nut -br -brs -npcs -ce -TGLubyte -TGLbyte -TBool')
80 dnl We need a POSIX shell for parts of the build. Assume we have one
84 # Solaris /bin/sh is too old/non-POSIX compliant
85 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
90 dnl clang is mostly GCC-compatible, but its version is much lower,
91 dnl so we have to check for it.
92 AC_MSG_CHECKING([if compiling with clang])
95 [AC_LANG_PROGRAM([], [[
100 [acv_mesa_CLANG=yes], [acv_mesa_CLANG=no])
102 AC_MSG_RESULT([$acv_mesa_CLANG])
104 dnl If we're using GCC, make sure that it is at least version 3.3.0. Older
105 dnl versions are explictly not supported.
107 if test "x$GCC" = xyes -a "x$acv_mesa_CLANG" = xno; then
108 AC_MSG_CHECKING([whether gcc version is sufficient])
112 GCC_VERSION=`$CC -dumpversion`
113 if test $? -eq 0; then
114 GCC_VERSION_MAJOR=`echo $GCC_VERSION | cut -d. -f1`
115 GCC_VERSION_MINOR=`echo $GCC_VERSION | cut -d. -f2`
118 if test $GCC_VERSION_MAJOR -lt 3 -o $GCC_VERSION_MAJOR -eq 3 -a $GCC_VERSION_MINOR -lt 3 ; then
120 AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.])
125 if test "x$cross_compiling" = xyes; then
130 dnl Check for compiler builtins
131 AX_GCC_BUILTIN([__builtin_bswap32])
132 AX_GCC_BUILTIN([__builtin_bswap64])
133 AX_GCC_BUILTIN([__builtin_clz])
134 AX_GCC_BUILTIN([__builtin_clzll])
135 AX_GCC_BUILTIN([__builtin_ctz])
136 AX_GCC_BUILTIN([__builtin_expect])
137 AX_GCC_BUILTIN([__builtin_ffs])
138 AX_GCC_BUILTIN([__builtin_ffsll])
139 AX_GCC_BUILTIN([__builtin_popcount])
140 AX_GCC_BUILTIN([__builtin_popcountll])
141 AX_GCC_BUILTIN([__builtin_unreachable])
143 AX_GCC_FUNC_ATTRIBUTE([flatten])
144 AX_GCC_FUNC_ATTRIBUTE([format])
145 AX_GCC_FUNC_ATTRIBUTE([malloc])
146 AX_GCC_FUNC_ATTRIBUTE([packed])
148 AM_CONDITIONAL([GEN_ASM_OFFSETS], test "x$GEN_ASM_OFFSETS" = xyes)
150 dnl Make sure the pkg-config macros are defined
151 m4_ifndef([PKG_PROG_PKG_CONFIG],
152 [m4_fatal([Could not locate the pkg-config autoconf macros.
153 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
154 are in a different location, try setting the environment variable
155 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
156 PKG_PROG_PKG_CONFIG()
158 dnl LIB_DIR - library basename
159 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
162 dnl Cache LDFLAGS and CPPFLAGS so we can add to them and restore later
163 _SAVE_LDFLAGS="$LDFLAGS"
164 _SAVE_CPPFLAGS="$CPPFLAGS"
167 DEFINES="-DUSE_EXTERNAL_DXTN_LIB=1"
171 DEFINES="$DEFINES -D_GNU_SOURCE"
174 DEFINES="$DEFINES -DSVR4"
177 DEFINES="$DEFINES -D_XOPEN_SOURCE=700"
181 dnl Add flags for gcc and g++
182 if test "x$GCC" = xyes; then
183 CFLAGS="$CFLAGS -Wall -std=c99"
185 # Enable -Werror=implicit-function-declaration and
186 # -Werror=missing-prototypes, if available, or otherwise, just
187 # -Wmissing-prototypes. This is particularly useful to avoid
188 # generating a loadable driver module that has undefined symbols.
189 save_CFLAGS="$CFLAGS"
190 AC_MSG_CHECKING([whether $CC supports -Werror=missing-prototypes])
191 CFLAGS="$CFLAGS -Werror=implicit-function-declaration"
192 CFLAGS="$CFLAGS -Werror=missing-prototypes"
193 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
194 AC_MSG_RESULT([yes]),
195 [CFLAGS="$save_CFLAGS -Wmissing-prototypes";
196 AC_MSG_RESULT([no])]);
198 # Enable -fvisibility=hidden if using a gcc that supports it
199 save_CFLAGS="$CFLAGS"
200 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
201 VISIBILITY_CFLAGS="-fvisibility=hidden"
202 CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
203 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
204 [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
206 # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
209 # Work around aliasing bugs - developers should comment this out
210 CFLAGS="$CFLAGS -fno-strict-aliasing"
212 # gcc's builtin memcmp is slower than glibc's
213 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
214 CFLAGS="$CFLAGS -fno-builtin-memcmp"
216 if test "x$GXX" = xyes; then
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="$CXXFLAGS -fno-strict-aliasing"
235 # gcc's builtin memcmp is slower than glibc's
236 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
237 CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp"
240 dnl even if the compiler appears to support it, using visibility attributes isn't
241 dnl going to do anything useful currently on cygwin apart from emit lots of warnings
245 VISIBILITY_CXXFLAGS=""
249 AC_SUBST([VISIBILITY_CFLAGS])
250 AC_SUBST([VISIBILITY_CXXFLAGS])
253 dnl Optional flags, check for compiler support
255 save_CFLAGS="$CFLAGS"
256 CFLAGS="-msse4.1 $CFLAGS"
257 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
258 #include <smmintrin.h>
260 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
261 c = _mm_max_epu32(a, b);
263 }]])], SSE41_SUPPORTED=1)
264 CFLAGS="$save_CFLAGS"
265 if test "x$SSE41_SUPPORTED" = x1; then
266 DEFINES="$DEFINES -DUSE_SSE41"
268 AM_CONDITIONAL([SSE41_SUPPORTED], [test x$SSE41_SUPPORTED = x1])
270 dnl Can't have static and shared libraries, default to static if user
271 dnl explicitly requested. If both disabled, set to static since shared
272 dnl was explicitly requested.
273 case "x$enable_static$enable_shared" in
275 AC_MSG_WARN([Cannot build static and shared libraries, disabling shared])
279 AC_MSG_WARN([Cannot disable both static and shared libraries, enabling shared])
284 AM_CONDITIONAL(BUILD_SHARED, test "x$enable_shared" = xyes)
287 dnl other compiler options
289 AC_ARG_ENABLE([debug],
290 [AS_HELP_STRING([--enable-debug],
291 [use debug compiler flags and macros @<:@default=disabled@:>@])],
292 [enable_debug="$enableval"],
295 if test "x$enable_debug" = xyes; then
296 DEFINES="$DEFINES -DDEBUG"
297 if test "x$GCC" = xyes; then
298 if ! echo "$CFLAGS" | grep -q -e '-g'; then
301 if ! echo "$CFLAGS" | grep -q -e '-O'; then
305 if test "x$GXX" = xyes; then
306 if ! echo "$CXXFLAGS" | grep -q -e '-g'; then
307 CXXFLAGS="$CXXFLAGS -g"
309 if ! echo "$CXXFLAGS" | grep -q -e '-O'; then
310 CXXFLAGS="$CXXFLAGS -O0"
316 dnl Check if linker supports -Bsymbolic
318 save_LDFLAGS=$LDFLAGS
319 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic"
320 AC_MSG_CHECKING([if ld supports -Bsymbolic])
322 [AC_LANG_SOURCE([int main() { return 0;}])],
323 [AC_MSG_RESULT([yes])
324 BSYMBOLIC="-Wl,-Bsymbolic";],
327 LDFLAGS=$save_LDFLAGS
329 AC_SUBST([BSYMBOLIC])
332 dnl Check if linker supports garbage collection
334 save_LDFLAGS=$LDFLAGS
335 LDFLAGS="$LDFLAGS -Wl,--gc-sections"
336 AC_MSG_CHECKING([whether ld supports --gc-sections])
338 [AC_LANG_SOURCE([static char UnusedFunc() { return 5; } int main() { return 0;}])],
339 [AC_MSG_RESULT([yes])
340 GC_SECTIONS="-Wl,--gc-sections";],
343 LDFLAGS=$save_LDFLAGS
345 AC_SUBST([GC_SECTIONS])
348 dnl OpenBSD does not have DT_NEEDED entries for libc by design
349 dnl so when these flags are passed to ld via libtool the checks will fail
353 LD_NO_UNDEFINED="" ;;
355 LD_NO_UNDEFINED="-Wl,--no-undefined" ;;
358 AC_SUBST([LD_NO_UNDEFINED])
361 dnl Check if linker supports version scripts
363 AC_MSG_CHECKING([if the linker supports version-scripts])
364 save_LDFLAGS=$LDFLAGS
365 LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map"
366 cat > conftest.map <<EOF
376 [AC_LANG_SOURCE([int main() { return 0;}])],
377 [have_ld_version_script=yes;AC_MSG_RESULT(yes)],
378 [have_ld_version_script=no; AC_MSG_RESULT(no)])
379 LDFLAGS=$save_LDFLAGS
380 AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes")
383 dnl Check if linker supports dynamic list files
385 AC_MSG_CHECKING([if the linker supports --dynamic-list])
386 save_LDFLAGS=$LDFLAGS
387 LDFLAGS="$LDFLAGS -Wl,--dynamic-list=conftest.dyn"
388 cat > conftest.dyn <<EOF
390 radeon_drm_winsys_create;
394 [AC_LANG_SOURCE([int main() { return 0;}])],
395 [have_ld_dynamic_list=yes;AC_MSG_RESULT(yes)],
396 [have_ld_dynamic_list=no; AC_MSG_RESULT(no)])
397 LDFLAGS=$save_LDFLAGS
398 AM_CONDITIONAL(HAVE_LD_DYNAMIC_LIST, test "$have_ld_dynamic_list" = "yes")
401 dnl compatibility symlinks
405 HAVE_COMPAT_SYMLINKS=yes ;;
407 HAVE_COMPAT_SYMLINKS=no ;;
410 AM_CONDITIONAL(HAVE_COMPAT_SYMLINKS, test "x$HAVE_COMPAT_SYMLINKS" = xyes)
428 AC_ARG_WITH([gl-lib-name],
429 [AS_HELP_STRING([--with-gl-lib-name@<:@=NAME@:>@],
430 [specify GL library name @<:@default=GL@:>@])],
433 AC_ARG_WITH([osmesa-lib-name],
434 [AS_HELP_STRING([--with-osmesa-lib-name@<:@=NAME@:>@],
435 [specify OSMesa library name @<:@default=OSMesa@:>@])],
436 [OSMESA_LIB=$withval],
438 AS_IF([test "x$GL_LIB" = xyes], [GL_LIB=GL])
439 AS_IF([test "x$OSMESA_LIB" = xyes], [OSMESA_LIB=OSMesa])
442 dnl Mangled Mesa support
444 AC_ARG_ENABLE([mangling],
445 [AS_HELP_STRING([--enable-mangling],
446 [enable mangled symbols and library name @<:@default=disabled@:>@])],
447 [enable_mangling="${enableval}"],
450 if test "x${enable_mangling}" = "xyes" ; then
451 DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
452 GL_LIB="Mangled${GL_LIB}"
453 OSMESA_LIB="Mangled${OSMESA_LIB}"
456 AC_SUBST([OSMESA_LIB])
459 dnl potentially-infringing-but-nobody-knows-for-sure stuff
461 AC_ARG_ENABLE([texture-float],
462 [AS_HELP_STRING([--enable-texture-float],
463 [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
464 [enable_texture_float="$enableval"],
465 [enable_texture_float=no]
467 if test "x$enable_texture_float" = xyes; then
468 AC_MSG_WARN([Floating-point textures enabled.])
469 AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
470 DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
474 dnl Arch/platform-specific settings
477 [AS_HELP_STRING([--disable-asm],
478 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
479 [enable_asm="$enableval"],
483 AC_MSG_CHECKING([whether to enable assembly])
484 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
485 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
486 if test "x$enable_asm" = xyes -a "x$cross_compiling" = xyes; then
488 i?86 | x86_64 | amd64)
490 AC_MSG_RESULT([no, cross compiling])
494 # check for supported arches
495 if test "x$enable_asm" = xyes; then
499 linux* | *freebsd* | dragonfly* | *netbsd* | openbsd* | gnu*)
506 linux* | *freebsd* | dragonfly* | *netbsd* | openbsd*)
522 DEFINES="$DEFINES -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
523 AC_MSG_RESULT([yes, x86])
526 DEFINES="$DEFINES -DUSE_X86_64_ASM"
527 AC_MSG_RESULT([yes, x86_64])
530 DEFINES="$DEFINES -DUSE_SPARC_ASM"
531 AC_MSG_RESULT([yes, sparc])
534 AC_MSG_RESULT([no, platform not supported])
539 AC_CHECK_HEADER([xlocale.h], [DEFINES="$DEFINES -DHAVE_XLOCALE_H"])
540 AC_CHECK_FUNC([strtof], [DEFINES="$DEFINES -DHAVE_STRTOF"])
542 dnl Check to see if dlopen is in default libraries (like Solaris, which
543 dnl has it in libc), or if libdl is needed to get it.
544 AC_CHECK_FUNC([dlopen], [DEFINES="$DEFINES -DHAVE_DLOPEN"],
545 [AC_CHECK_LIB([dl], [dlopen],
546 [DEFINES="$DEFINES -DHAVE_DLOPEN"; DLOPEN_LIBS="-ldl"])])
547 AC_SUBST([DLOPEN_LIBS])
549 dnl Check if that library also has dladdr
551 LIBS="$LIBS $DLOPEN_LIBS"
552 AC_CHECK_FUNCS([dladdr])
559 AC_CHECK_FUNCS([clock_gettime], [CLOCK_LIB=],
560 [AC_CHECK_LIB([rt], [clock_gettime], [CLOCK_LIB=-lrt],
561 [AC_MSG_ERROR([Could not find clock_gettime])])])
562 AC_SUBST([CLOCK_LIB])
566 dnl See if posix_memalign is available
567 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
569 dnl Check for pthreads
577 dnl AX_PTHREADS leaves PTHREAD_LIBS empty for gcc and sets PTHREAD_CFLAGS
578 dnl to -pthread, which causes problems if we need -lpthread to appear in
580 test -z "$PTHREAD_LIBS" && PTHREAD_LIBS="-lpthread"
582 dnl SELinux awareness.
583 AC_ARG_ENABLE([selinux],
584 [AS_HELP_STRING([--enable-selinux],
585 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
586 [MESA_SELINUX="$enableval"],
588 if test "x$enable_selinux" = "xyes"; then
589 PKG_CHECK_MODULES([SELINUX], [libselinux], [],
590 [AC_CHECK_HEADER([selinux/selinux.h],[],
591 [AC_MSG_ERROR([SELinux headers not found])])
592 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
593 [AC_MSG_ERROR([SELinux library not found])])
594 SELINUX_LIBS="-lselinux"])
595 DEFINES="$DEFINES -DMESA_SELINUX"
597 AC_SUBST([SELINUX_CFLAGS])
598 AC_SUBST([SELINUX_LIBS])
601 AC_ARG_ENABLE([opengl],
602 [AS_HELP_STRING([--disable-opengl],
603 [disable support for standard OpenGL API @<:@default=enabled@:>@])],
604 [enable_opengl="$enableval"],
606 AC_ARG_ENABLE([gles1],
607 [AS_HELP_STRING([--enable-gles1],
608 [enable support for OpenGL ES 1.x API @<:@default=disabled@:>@])],
609 [enable_gles1="$enableval"],
611 AC_ARG_ENABLE([gles2],
612 [AS_HELP_STRING([--enable-gles2],
613 [enable support for OpenGL ES 2.x API @<:@default=disabled@:>@])],
614 [enable_gles2="$enableval"],
616 AC_ARG_ENABLE([openvg],
617 [AS_HELP_STRING([--enable-openvg],
618 [enable support for OpenVG API @<:@default=disabled@:>@])],
619 [enable_openvg="$enableval"],
623 [AS_HELP_STRING([--enable-dri],
624 [enable DRI modules @<:@default=enabled@:>@])],
625 [enable_dri="$enableval"],
636 AC_ARG_ENABLE([dri3],
637 [AS_HELP_STRING([--enable-dri3],
638 [enable DRI3 @<:@default=auto@:>@])],
639 [enable_dri3="$enableval"],
640 [enable_dri3="$dri3_default"])
642 [AS_HELP_STRING([--enable-glx],
643 [enable GLX library @<:@default=enabled@:>@])],
644 [enable_glx="$enableval"],
646 AC_ARG_ENABLE([osmesa],
647 [AS_HELP_STRING([--enable-osmesa],
648 [enable OSMesa library @<:@default=disabled@:>@])],
649 [enable_osmesa="$enableval"],
651 AC_ARG_ENABLE([gallium-osmesa],
652 [AS_HELP_STRING([--enable-gallium-osmesa],
653 [enable Gallium implementation of the OSMesa library @<:@default=disabled@:>@])],
654 [enable_gallium_osmesa="$enableval"],
655 [enable_gallium_osmesa=no])
657 [AS_HELP_STRING([--disable-egl],
658 [disable EGL library @<:@default=enabled@:>@])],
659 [enable_egl="$enableval"],
663 [AS_HELP_STRING([--enable-xa],
664 [enable build of the XA X Acceleration API @<:@default=disabled@:>@])],
665 [enable_xa="$enableval"],
668 [AS_HELP_STRING([--enable-gbm],
669 [enable gbm library @<:@default=auto@:>@])],
670 [enable_gbm="$enableval"],
673 AC_ARG_ENABLE([xvmc],
674 [AS_HELP_STRING([--enable-xvmc],
675 [enable xvmc library @<:@default=auto@:>@])],
676 [enable_xvmc="$enableval"],
678 AC_ARG_ENABLE([vdpau],
679 [AS_HELP_STRING([--enable-vdpau],
680 [enable vdpau library @<:@default=auto@:>@])],
681 [enable_vdpau="$enableval"],
684 [AS_HELP_STRING([--enable-omx],
685 [enable OpenMAX library @<:@default=disabled@:>@])],
686 [enable_omx="$enableval"],
689 [AS_HELP_STRING([--enable-va],
690 [enable va library @<:@default=auto@:>@])],
691 [enable_va="$enableval"],
693 AC_ARG_ENABLE([opencl],
694 [AS_HELP_STRING([--enable-opencl],
695 [enable OpenCL library @<:@default=disabled@:>@])],
696 [enable_opencl="$enableval"],
698 AC_ARG_ENABLE([opencl_icd],
699 [AS_HELP_STRING([--enable-opencl-icd],
700 [Build an OpenCL ICD library to be loaded by an ICD implementation
701 @<:@default=disabled@:>@])],
702 [enable_opencl_icd="$enableval"],
703 [enable_opencl_icd=no])
704 AC_ARG_ENABLE([xlib-glx],
705 [AS_HELP_STRING([--enable-xlib-glx],
706 [make GLX library Xlib-based instead of DRI-based @<:@default=disabled@:>@])],
707 [enable_xlib_glx="$enableval"],
708 [enable_xlib_glx=no])
710 AC_ARG_ENABLE([r600-llvm-compiler],
711 [AS_HELP_STRING([--enable-r600-llvm-compiler],
712 [Enable experimental LLVM backend for graphics shaders @<:@default=disabled@:>@])],
713 [enable_r600_llvm="$enableval"],
714 [enable_r600_llvm=no])
716 AC_ARG_ENABLE([gallium-tests],
717 [AS_HELP_STRING([--enable-gallium-tests],
718 [Enable optional Gallium tests) @<:@default=disabled@:>@])],
719 [enable_gallium_tests="$enableval"],
720 [enable_gallium_tests=no])
722 # Option for Gallium drivers
724 # Keep this in sync with the --with-gallium-drivers help string default value
725 GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
727 AC_ARG_WITH([gallium-drivers],
728 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
729 [comma delimited Gallium drivers list, e.g.
730 "i915,ilo,nouveau,r300,r600,radeonsi,freedreno,svga,swrast,vc4"
731 @<:@default=r300,r600,svga,swrast@:>@])],
732 [with_gallium_drivers="$withval"],
733 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
735 # Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it
736 # here so that the script doesn't choke on an unknown driver name later.
737 case "$with_gallium_drivers" in
738 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
739 no) with_gallium_drivers='' ;;
742 if test "x$enable_opengl" = xno -a \
743 "x$enable_gles1" = xno -a \
744 "x$enable_gles2" = xno -a \
745 "x$enable_openvg" = xno -a \
746 "x$enable_xa" = xno -a \
747 "x$enable_xvmc" = xno -a \
748 "x$enable_vdpau" = xno -a \
749 "x$enable_omx" = xno -a \
750 "x$enable_va" = xno -a \
751 "x$enable_opencl" = xno; then
752 AC_MSG_ERROR([at least one API should be enabled])
755 # Building OpenGL ES1 and/or ES2 without OpenGL is not supported on mesa 9.0.x
756 if test "x$enable_opengl" = xno -a \
757 "x$enable_gles1" = xyes; then
758 AC_MSG_ERROR([Building OpenGL ES1 without OpenGL is not supported])
761 if test "x$enable_opengl" = xno -a \
762 "x$enable_gles2" = xyes; then
763 AC_MSG_ERROR([Building OpenGL ES2 without OpenGL is not supported])
766 AM_CONDITIONAL(HAVE_OPENGL, test "x$enable_opengl" = xyes)
767 AM_CONDITIONAL(HAVE_OPENGL_ES1, test "x$enable_gles1" = xyes)
768 AM_CONDITIONAL(HAVE_OPENGL_ES2, test "x$enable_gles2" = xyes)
769 AM_CONDITIONAL(NEED_OPENGL_COMMON, test "x$enable_opengl" = xyes -o \
770 "x$enable_gles1" = xyes -o \
771 "x$enable_gles2" = xyes)
773 if test "x$enable_glx" = xno; then
774 AC_MSG_WARN([GLX disabled, disabling Xlib-GLX])
778 if test "x$enable_dri$enable_xlib_glx" = xyesyes; then
779 AC_MSG_ERROR([DRI and Xlib-GLX cannot be built together])
782 if test "x$enable_opengl$enable_xlib_glx" = xnoyes; then
783 AC_MSG_ERROR([Xlib-GLX cannot be built without OpenGL])
786 # Disable GLX if OpenGL is not enabled
787 if test "x$enable_glx$enable_opengl" = xyesno; then
788 AC_MSG_WARN([OpenGL not enabled, disabling GLX])
792 # Disable GLX if DRI and Xlib-GLX are not enabled
793 if test "x$enable_glx" = xyes -a \
794 "x$enable_dri" = xno -a \
795 "x$enable_xlib_glx" = xno; then
796 AC_MSG_WARN([Neither DRI nor Xlib-GLX enabled, disabling GLX])
800 AM_CONDITIONAL(HAVE_DRI_GLX, test "x$enable_glx" = xyes -a \
801 "x$enable_dri" = xyes)
803 # Select which platform-dependent DRI code gets built
806 dri_platform='apple' ;;
808 dri_platform='none' ;;
810 dri_platform='drm' ;;
813 AM_CONDITIONAL(HAVE_DRICOMMON, test "x$enable_dri" = xyes )
814 AM_CONDITIONAL(HAVE_DRISW, test "x$enable_dri" = xyes )
815 AM_CONDITIONAL(HAVE_DRI2, test "x$enable_dri" = xyes -a "x$dri_platform" = xdrm )
816 AM_CONDITIONAL(HAVE_DRI3, test "x$enable_dri3" = xyes -a "x$dri_platform" = xdrm )
817 AM_CONDITIONAL(HAVE_APPLEDRI, test "x$enable_dri" = xyes -a "x$dri_platform" = xapple )
819 AC_ARG_ENABLE([shared-glapi],
820 [AS_HELP_STRING([--enable-shared-glapi],
821 [Enable shared glapi for OpenGL @<:@default=enabled@:>@])],
822 [enable_shared_glapi="$enableval"],
823 [enable_shared_glapi=yes])
825 case "x$enable_opengl$enable_gles1$enable_gles2" in
827 if test "x$enable_shared_glapi" = xno; then
828 AC_MSG_ERROR([shared GLAPI required when building two or more of
829 the following APIs - opengl, gles1 gles2])
834 # Building Xlib-GLX requires shared glapi to be disabled.
835 if test "x$enable_xlib_glx" = xyes; then
836 AC_MSG_NOTICE([Shared GLAPI should not used with Xlib-GLX, disabling])
837 enable_shared_glapi=no
840 AM_CONDITIONAL(HAVE_SHARED_GLAPI, test "x$enable_shared_glapi" = xyes)
842 # Build the pipe-drivers as separate libraries/modules.
843 # Do not touch this unless you know what you are doing.
844 # XXX: Expose via configure option ?
845 enable_shared_pipe_drivers=no
848 dnl Driver specific build directories
851 case "x$enable_glx$enable_xlib_glx" in
853 NEED_WINSYS_XLIB="yes"
857 if test "x$enable_dri" = xyes; then
858 enable_gallium_loader="$enable_shared_pipe_drivers"
861 if test "x$enable_gallium_osmesa" = xyes; then
862 if ! echo "$with_gallium_drivers" | grep -q 'swrast'; then
863 AC_MSG_ERROR([gallium_osmesa requires the gallium swrast driver])
865 if test "x$enable_osmesa" = xyes; then
866 AC_MSG_ERROR([Cannot enable both classic and Gallium OSMesa implementations])
870 AC_SUBST([MESA_LLVM])
873 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
874 [have_libdrm=yes], [have_libdrm=no])
875 if test "x$have_libdrm" = xyes; then
876 DEFINES="$DEFINES -DHAVE_LIBDRM"
886 PKG_CHECK_MODULES([LIBUDEV], [libudev >= $LIBUDEV_REQUIRED],
887 have_libudev=yes, have_libudev=no)
889 AC_ARG_ENABLE([sysfs],
890 [AS_HELP_STRING([--enable-sysfs],
891 [enable /sys PCI identification @<:@default=disabled@:>@])],
892 [have_sysfs="$enableval"],
896 if test "x$enable_dri" = xyes; then
897 if test "$enable_static" = yes; then
898 AC_MSG_ERROR([Cannot use static libraries for DRI drivers])
901 # not a hard requirement as swrast does not depend on it
902 if test "x$have_libdrm" = xyes; then
903 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
907 AC_ARG_ENABLE([driglx-direct],
908 [AS_HELP_STRING([--disable-driglx-direct],
909 [disable direct rendering in GLX and EGL for DRI \
910 @<:@default=auto@:>@])],
911 [driglx_direct="$enableval"],
912 [driglx_direct="yes"])
915 dnl libGL configuration per driver
917 case "x$enable_glx$enable_xlib_glx" in
920 dri_modules="x11 xext xcb"
921 PKG_CHECK_MODULES([XLIBGL], [$dri_modules])
922 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
923 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
924 GL_LIB_DEPS="$XLIBGL_LIBS"
925 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
926 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm $PTHREAD_LIBS"
930 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
932 # find the DRI deps for libGL
933 dri_modules="x11 xext xdamage xfixes x11-xcb xcb xcb-glx >= $XCBGLX_REQUIRED"
935 if test x"$driglx_direct" = xyes; then
936 if test x"$dri_platform" = xdrm ; then
937 DEFINES="$DEFINES -DGLX_USE_DRM"
938 if test "x$have_libdrm" != xyes; then
939 AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
942 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
943 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED"
944 if test x"$enable_dri3" = xyes; then
945 PKG_CHECK_MODULES([DRI3PROTO], [dri3proto >= $DRI3PROTO_REQUIRED])
946 PKG_CHECK_MODULES([PRESENTPROTO], [presentproto >= $PRESENTPROTO_REQUIRED])
949 if test x"$enable_dri" = xyes; then
950 dri_modules="$dri_modules xcb-dri2 >= $XCBDRI2_REQUIRED"
953 if test x"$enable_dri3" = xyes; then
954 PKG_CHECK_EXISTS([xcb >= $XCB_REQUIRED], [], AC_MSG_ERROR([DRI3 requires xcb >= $XCB_REQUIRED]))
955 dri_modules="$dri_modules xcb-dri3 xcb-present xcb-sync xshmfence >= $XSHMFENCE_REQUIRED"
958 if test x"$dri_platform" = xapple ; then
959 DEFINES="$DEFINES -DGLX_USE_APPLEGL"
963 # add xf86vidmode if available
964 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
965 if test "$HAVE_XF86VIDMODE" = yes ; then
966 dri_modules="$dri_modules xxf86vm"
969 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
970 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
971 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
972 GL_LIB_DEPS="$DRIGL_LIBS"
974 # need DRM libs, $PTHREAD_LIBS, etc.
975 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
976 GL_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
981 if test "$have_libudev" = yes; then
982 DEFINES="$DEFINES -DHAVE_LIBUDEV"
986 if test "$have_sysfs" = yes; then
987 DEFINES="$DEFINES -DHAVE_SYSFS"
991 # This is outside the case (above) so that it is invoked even for non-GLX
993 AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
995 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
996 GLESv1_CM_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
997 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
998 GLESv2_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
1000 AC_SUBST([X11_INCLUDES])
1001 AC_SUBST([GL_LIB_DEPS])
1002 AC_SUBST([GL_PC_REQ_PRIV])
1003 AC_SUBST([GL_PC_LIB_PRIV])
1004 AC_SUBST([GL_PC_CFLAGS])
1005 AC_SUBST([DRI_PC_REQ_PRIV])
1006 AC_SUBST([GLESv1_CM_LIB_DEPS])
1007 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
1008 AC_SUBST([GLESv2_LIB_DEPS])
1009 AC_SUBST([GLESv2_PC_LIB_PRIV])
1011 AC_SUBST([HAVE_XF86VIDMODE])
1016 case "x$enable_glx$enable_xlib_glx" in
1018 DEFINES="$DEFINES -DUSE_XSHM"
1021 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1022 if test "x$driglx_direct" = xyes; then
1023 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1032 AC_ARG_ENABLE([glx-tls],
1033 [AS_HELP_STRING([--enable-glx-tls],
1034 [enable TLS support in GLX @<:@default=disabled@:>@])],
1035 [GLX_USE_TLS="$enableval"],
1037 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
1039 AS_IF([test "x$GLX_USE_TLS" = xyes -a "x$ax_pthread_ok" = xyes],
1040 [DEFINES="${DEFINES} -DGLX_USE_TLS"])
1045 dnl Directory for DRI drivers
1046 AC_ARG_WITH([dri-driverdir],
1047 [AS_HELP_STRING([--with-dri-driverdir=DIR],
1048 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
1049 [DRI_DRIVER_INSTALL_DIR="$withval"],
1050 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
1051 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
1052 dnl Extra search path for DRI drivers
1053 AC_ARG_WITH([dri-searchpath],
1054 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
1055 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
1056 [DRI_DRIVER_SEARCH_DIR="$withval"],
1057 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
1058 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
1059 dnl Which drivers to build - default is chosen by platform
1060 AC_ARG_WITH([dri-drivers],
1061 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
1062 [comma delimited classic DRI drivers list, e.g.
1063 "swrast,i965,radeon" @<:@default=auto@:>@])],
1064 [with_dri_drivers="$withval"],
1065 [with_dri_drivers=auto])
1067 if test "x$with_dri_drivers" = xauto; then
1068 if test "x$enable_opengl" = xyes -a "x$enable_dri" = xyes; then
1069 with_dri_drivers="yes"
1071 with_dri_drivers="no"
1074 if test "x$with_dri_drivers" = xno; then
1078 dnl If $with_dri_drivers is yes, drivers will be added through
1079 dnl platform checks. Set DEFINES and LIB_DEPS
1080 if test "x$enable_dri" = xyes; then
1081 # Platform specific settings and drivers to build
1084 DEFINES="$DEFINES -DHAVE_ALIAS"
1085 if test "x$enable_dri3" = xyes; then
1086 DEFINES="$DEFINES -DHAVE_DRI3"
1089 if test "x$have_pci_id" != xyes; then
1090 AC_MSG_ERROR([libudev-dev or sysfs required for building DRI])
1095 # Build only the drivers for cards that exist on PowerPC/sparc
1096 if test "x$with_dri_drivers" = "xyes"; then
1097 with_dri_drivers="r200 radeon swrast"
1102 *freebsd* | dragonfly* | *netbsd* | openbsd*)
1103 DEFINES="$DEFINES -DHAVE_ALIAS"
1106 DEFINES="$DEFINES -DHAVE_ALIAS"
1109 if test "x$with_dri_drivers" = "xyes"; then
1110 with_dri_drivers="swrast"
1114 DEFINES="$DEFINES -DGLX_ALIAS_UNSUPPORTED"
1115 if test "x$with_dri_drivers" = "xyes"; then
1116 with_dri_drivers="swrast"
1122 if test "x$with_dri_drivers" = "xyes"; then
1123 with_dri_drivers="i915 i965 nouveau r200 radeon swrast"
1127 PKG_CHECK_MODULES([EXPAT], [expat], [],
1128 # expat version 2.0 and earlier do not provide expat.pc
1129 [AC_CHECK_HEADER([expat.h],[],
1130 [AC_MSG_ERROR([Expat headers required for DRI not found])])
1131 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1132 [AC_MSG_ERROR([Expat library required for DRI not found])])
1133 EXPAT_LIBS="-lexpat"])
1135 DRICOMMON_NEED_LIBDRM=no
1136 # If we are building any DRI driver other than swrast.
1137 if test -n "$with_dri_drivers"; then
1138 if test "x$with_dri_drivers" != xswrast; then
1139 # ... libdrm is required
1140 if test "x$have_libdrm" != xyes; then
1141 AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
1143 DRICOMMON_NEED_LIBDRM=yes
1147 # If we're building any gallium DRI driver other than swrast
1148 if test -n "$with_gallium_drivers" -a "x$DRICOMMON_NEED_LIBDRM" = xno; then
1149 if test "x$with_gallium_drivers" != xswrast; then
1150 # ... build a libdrm aware dricommon
1151 DRICOMMON_NEED_LIBDRM=yes
1155 # put all the necessary libs together
1156 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1159 AC_SUBST([DRI_LIB_DEPS])
1162 dnl Duplicates in DRI_DIRS are removed by sorting it at the end of this block
1163 if test -n "$with_dri_drivers"; then
1164 if test "x$enable_opengl" != xyes; then
1165 AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1168 dri_drivers=`IFS=', '; echo $with_dri_drivers`
1169 for driver in $dri_drivers; do
1170 DRI_DIRS="$DRI_DIRS $driver"
1174 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1178 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1181 HAVE_NOUVEAU_DRI=yes;
1182 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED])
1185 HAVE_RADEON_DRI=yes;
1186 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1190 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1193 HAVE_SWRAST_DRI=yes;
1196 AC_MSG_ERROR([classic DRI driver '$driver' does not exist])
1200 DRI_DIRS=`echo $DRI_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1203 AM_CONDITIONAL(NEED_MEGADRIVER, test -n "$DRI_DIRS")
1204 AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_xlib_glx" = xyes -o \
1205 "x$enable_osmesa" = xyes -o \
1209 dnl OSMesa configuration
1212 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1213 AC_ARG_WITH([osmesa-bits],
1214 [AS_HELP_STRING([--with-osmesa-bits=BITS],
1215 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1216 [osmesa_bits="$withval"],
1218 if test "x$osmesa_bits" != x8; then
1219 if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then
1220 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1224 case "x$osmesa_bits" in
1226 OSMESA_LIB="${OSMESA_LIB}"
1229 OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
1230 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1233 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1237 if test "x$enable_osmesa" = xyes -o "x$enable_gallium_osmesa" = xyes; then
1238 # only link libraries with osmesa if shared
1239 if test "$enable_static" = no; then
1240 OSMESA_LIB_DEPS="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1244 OSMESA_PC_LIB_PRIV="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1247 AC_SUBST([OSMESA_LIB_DEPS])
1248 AC_SUBST([OSMESA_PC_REQ])
1249 AC_SUBST([OSMESA_PC_LIB_PRIV])
1252 dnl gbm configuration
1254 if test "x$enable_gbm" = xauto; then
1255 case "$with_egl_platforms" in
1262 if test "x$enable_gbm" = xyes; then
1263 if test "x$need_pci_id$have_pci_id" = xyesno; then
1264 AC_MSG_ERROR([gbm requires udev >= $LIBUDEV_REQUIRED or sysfs])
1267 if test "x$enable_dri" = xyes; then
1268 GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
1269 if test "x$enable_shared_glapi" = xno; then
1270 AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1273 # Strictly speaking libgbm does not require --enable-dri, although
1274 # both of its backends do. Thus one can build libgbm without any
1275 # backends if --disable-dri is set.
1276 # To avoid unnecessary complexity of checking if at least one backend
1277 # is available when building, just mandate --enable-dri.
1278 AC_MSG_ERROR([gbm requires --enable-dri])
1281 AM_CONDITIONAL(HAVE_GBM, test "x$enable_gbm" = xyes)
1282 if test "x$need_pci_id$have_libudev" = xyesyes; then
1283 GBM_PC_REQ_PRIV="libudev >= $LIBUDEV_REQUIRED"
1287 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1288 AC_SUBST([GBM_PC_REQ_PRIV])
1289 AC_SUBST([GBM_PC_LIB_PRIV])
1292 dnl EGL configuration
1296 if test "x$enable_egl" = xyes; then
1297 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS $PTHREAD_LIBS"
1299 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1301 if test "$enable_static" != yes; then
1302 if test "x$enable_dri" = xyes; then
1303 HAVE_EGL_DRIVER_DRI2=1
1308 AM_CONDITIONAL(HAVE_EGL, test "x$enable_egl" = xyes)
1309 AC_SUBST([EGL_LIB_DEPS])
1312 dnl XA configuration
1314 if test "x$enable_xa" = xyes; then
1315 if test "x$with_gallium_drivers" = xswrast; then
1317 Building xa requires at least one non swrast gallium driver.
1318 If you are looking to use libxatracker.so with the VMware driver,
1319 make sure to include svga in the gallium drivers list, apart from
1321 Example: ./configure --enable-xa --with-gallium-drivers=svga...])
1323 enable_gallium_loader=$enable_shared_pipe_drivers
1325 AM_CONDITIONAL(HAVE_ST_XA, test "x$enable_xa" = xyes)
1328 dnl OpenVG configuration
1332 if test "x$enable_openvg" = xyes; then
1333 if test "x$enable_egl" = xno; then
1334 AC_MSG_ERROR([cannot enable OpenVG without EGL])
1336 if test -z "$with_gallium_drivers"; then
1337 AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1340 AC_MSG_ERROR([Cannot enable OpenVG, because egl_gallium has been removed and
1341 OpenVG hasn't been integrated into standard libEGL yet])
1343 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1344 VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS $PTHREAD_LIBS"
1345 VG_PC_LIB_PRIV="-lm $CLOCK_LIB $PTHREAD_LIBS $DLOPEN_LIBS"
1346 AC_SUBST([VG_PC_LIB_PRIV])
1348 AM_CONDITIONAL(HAVE_OPENVG, test "x$enable_openvg" = xyes)
1351 dnl Gallium G3DVL configuration
1353 if test -n "$with_gallium_drivers" -a "x$with_gallium_drivers" != xswrast; then
1354 if test "x$enable_xvmc" = xauto; then
1355 PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no])
1358 if test "x$enable_vdpau" = xauto; then
1359 PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no])
1362 if test "x$enable_omx" = xauto; then
1363 PKG_CHECK_EXISTS([libomxil-bellagio], [enable_omx=yes], [enable_omx=no])
1366 if test "x$enable_va" = xauto; then
1367 PKG_CHECK_EXISTS([libva], [enable_va=yes], [enable_va=no])
1371 if test "x$enable_xvmc" = xyes; then
1372 PKG_CHECK_MODULES([XVMC], [xvmc >= $XVMC_REQUIRED x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
1373 enable_gallium_loader=$enable_shared_pipe_drivers
1375 AM_CONDITIONAL(HAVE_ST_XVMC, test "x$enable_xvmc" = xyes)
1377 if test "x$enable_vdpau" = xyes; then
1378 PKG_CHECK_MODULES([VDPAU], [vdpau >= $VDPAU_REQUIRED x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED],
1379 [VDPAU_LIBS="`$PKG_CONFIG --libs x11-xcb xcb xcb-dri2`"])
1380 enable_gallium_loader=$enable_shared_pipe_drivers
1382 AM_CONDITIONAL(HAVE_ST_VDPAU, test "x$enable_vdpau" = xyes)
1384 if test "x$enable_omx" = xyes; then
1385 PKG_CHECK_MODULES([OMX], [libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
1386 enable_gallium_loader=$enable_shared_pipe_drivers
1388 AM_CONDITIONAL(HAVE_ST_OMX, test "x$enable_omx" = xyes)
1390 if test "x$enable_va" = xyes; then
1391 PKG_CHECK_MODULES([VA], [libva >= 0.35.0 x11-xcb xcb-dri2 >= $XCBDRI2_REQUIRED],
1392 [VA_LIBS="`$PKG_CONFIG --libs x11-xcb xcb-dri2`"])
1393 enable_gallium_loader=$enable_shared_pipe_drivers
1395 AM_CONDITIONAL(HAVE_ST_VA, test "x$enable_va" = xyes)
1398 dnl OpenCL configuration
1401 AC_ARG_WITH([libclc-path],
1402 [AS_HELP_STRING([--with-libclc-path],
1403 [DEPRECATED: See http://dri.freedesktop.org/wiki/GalliumCompute#How_to_Install])],
1404 [LIBCLC_PATH="$withval"],
1407 if test -n "$LIBCLC_PATH"; then
1408 AC_MSG_ERROR([The --with-libclc-path option has been deprecated.
1409 Please review the updated build instructions for clover:
1410 http://dri.freedesktop.org/wiki/GalliumCompute])
1414 AC_ARG_WITH([clang-libdir],
1415 [AS_HELP_STRING([--with-clang-libdir],
1416 [Path to Clang libraries @<:@default=llvm-config --libdir@:>@])],
1417 [CLANG_LIBDIR="$withval"],
1420 PKG_CHECK_EXISTS([libclc], [have_libclc=yes], [have_libclc=no])
1421 AC_CHECK_LIB([elf], [elf_memory], [have_libelf=yes;ELF_LIB=-lelf])
1423 if test "x$enable_opencl" = xyes; then
1424 if test -z "$with_gallium_drivers"; then
1425 AC_MSG_ERROR([cannot enable OpenCL without Gallium])
1428 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 7; then
1429 AC_MSG_ERROR([gcc >= 4.7 is required to build clover])
1432 if test "x$have_libclc" = xno; then
1433 AC_MSG_ERROR([pkg-config cannot find libclc.pc which is required to build clover.
1434 Make sure the directory containing libclc.pc is specified in your
1435 PKG_CONFIG_PATH environment variable.
1436 By default libclc.pc is installed to /usr/local/share/pkgconfig/])
1438 LIBCLC_INCLUDEDIR=`$PKG_CONFIG --variable=includedir libclc`
1439 LIBCLC_LIBEXECDIR=`$PKG_CONFIG --variable=libexecdir libclc`
1440 AC_SUBST([LIBCLC_INCLUDEDIR])
1441 AC_SUBST([LIBCLC_LIBEXECDIR])
1444 # XXX: Use $enable_shared_pipe_drivers once converted to use static/shared pipe-drivers
1445 enable_gallium_loader=yes
1447 if test "x$enable_opencl_icd" = xyes; then
1448 OPENCL_LIBNAME="MesaOpenCL"
1450 OPENCL_LIBNAME="OpenCL"
1453 if test "x$have_libelf" != xyes; then
1454 AC_MSG_ERROR([Clover requires libelf])
1457 AM_CONDITIONAL(HAVE_CLOVER, test "x$enable_opencl" = xyes)
1458 AM_CONDITIONAL(HAVE_CLOVER_ICD, test "x$enable_opencl_icd" = xyes)
1459 AC_SUBST([OPENCL_LIBNAME])
1462 dnl Gallium configuration
1464 AM_CONDITIONAL(HAVE_GALLIUM, test -n "$with_gallium_drivers")
1466 AC_SUBST([LLVM_BINDIR])
1467 AC_SUBST([LLVM_CFLAGS])
1468 AC_SUBST([LLVM_CPPFLAGS])
1469 AC_SUBST([LLVM_CXXFLAGS])
1470 AC_SUBST([LLVM_LIBDIR])
1471 AC_SUBST([LLVM_LIBS])
1472 AC_SUBST([LLVM_LDFLAGS])
1473 AC_SUBST([LLVM_INCLUDEDIR])
1474 AC_SUBST([LLVM_VERSION])
1475 AC_SUBST([CLANG_RESOURCE_DIR])
1477 case "x$enable_opengl$enable_gles1$enable_gles2" in
1479 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1483 AC_SUBST([VG_LIB_DEPS])
1484 AC_SUBST([EGL_CLIENT_APIS])
1487 dnl EGL Platforms configuration
1489 AC_ARG_WITH([egl-platforms],
1490 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1491 [comma delimited native platforms libEGL supports, e.g.
1492 "x11,drm" @<:@default=auto@:>@])],
1493 [with_egl_platforms="$withval"],
1494 [if test "x$enable_egl" = xyes; then
1495 with_egl_platforms="x11"
1497 with_egl_platforms=""
1500 if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
1501 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1504 # Do per-EGL platform setups and checks
1505 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1506 for plat in $egl_platforms; do
1509 PKG_CHECK_MODULES([WAYLAND], [wayland-client >= $WAYLAND_REQUIRED wayland-server >= $WAYLAND_REQUIRED])
1511 WAYLAND_PREFIX=`$PKG_CONFIG --variable=prefix wayland-client`
1512 AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner],,
1513 [${WAYLAND_PREFIX}/bin$PATH_SEPARATOR$PATH])
1517 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED xcb-xfixes])
1521 test "x$enable_gbm" = "xno" &&
1522 AC_MSG_ERROR([EGL platform drm needs gbm])
1523 test "x$have_libdrm" != xyes &&
1524 AC_MSG_ERROR([EGL platform drm requires libdrm >= $LIBDRM_REQUIRED])
1527 android|fbdev|gdi|null)
1531 AC_MSG_ERROR([EGL platform '$plat' does not exist])
1535 case "$plat$need_pci_id$have_pci_id" in
1536 waylandyesno|drmyesno)
1537 AC_MSG_ERROR([cannot build $plat platform without udev >= $LIBUDEV_REQUIRED or sysfs]) ;;
1541 # libEGL wants to default to the first platform specified in
1542 # ./configure. parse that here.
1543 if test "x$egl_platforms" != "x"; then
1544 FIRST_PLATFORM_CAPS=`echo $egl_platforms | sed 's| .*||' | tr 'a-z' 'A-Z'`
1545 EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
1547 EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
1550 if echo "$egl_platforms" | grep -q 'x11'; then
1551 NEED_WINSYS_XLIB=yes
1553 AM_CONDITIONAL(HAVE_EGL_PLATFORM_X11, echo "$egl_platforms" | grep -q 'x11')
1554 AM_CONDITIONAL(HAVE_EGL_PLATFORM_WAYLAND, echo "$egl_platforms" | grep -q 'wayland')
1555 AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep -q 'drm')
1556 AM_CONDITIONAL(HAVE_EGL_PLATFORM_FBDEV, echo "$egl_platforms" | grep -q 'fbdev')
1557 AM_CONDITIONAL(HAVE_EGL_PLATFORM_NULL, echo "$egl_platforms" | grep -q 'null')
1559 AM_CONDITIONAL(HAVE_EGL_DRIVER_DRI2, test "x$HAVE_EGL_DRIVER_DRI2" != "x")
1561 AC_SUBST([EGL_NATIVE_PLATFORM])
1562 AC_SUBST([EGL_CFLAGS])
1564 # If we don't have the X11 platform, set this define so we don't try to include
1566 if ! echo "$egl_platforms" | grep -q 'x11'; then
1567 DEFINES="$DEFINES -DMESA_EGL_NO_X11_HEADERS"
1568 GL_PC_CFLAGS="$GL_PC_CFLAGS -DMESA_EGL_NO_X11_HEADERS"
1571 AC_ARG_WITH([max-width],
1572 [AS_HELP_STRING([--with-max-width=N],
1573 [Maximum framebuffer width (4096)])],
1574 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1575 AS_IF([test "${withval}" -gt "4096"],
1576 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1578 AC_ARG_WITH([max-height],
1579 [AS_HELP_STRING([--with-max-height=N],
1580 [Maximum framebuffer height (4096)])],
1581 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1582 AS_IF([test "${withval}" -gt "4096"],
1583 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1589 AC_ARG_ENABLE([gallium-llvm],
1590 [AS_HELP_STRING([--enable-gallium-llvm],
1591 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1592 [enable_gallium_llvm="$enableval"],
1593 [enable_gallium_llvm=auto])
1595 AC_ARG_ENABLE([llvm-shared-libs],
1596 [AS_HELP_STRING([--enable-llvm-shared-libs],
1597 [link with LLVM shared libraries @<:@default=enabled@:>@])],
1598 [enable_llvm_shared_libs="$enableval"],
1599 [enable_llvm_shared_libs=yes])
1601 AC_ARG_WITH([llvm-prefix],
1602 [AS_HELP_STRING([--with-llvm-prefix],
1603 [Prefix for LLVM installations in non-standard locations])],
1604 [llvm_prefix="$withval"],
1608 # Call this inside ` ` to get the return value.
1609 # $1 is the llvm-config command with arguments.
1610 strip_unwanted_llvm_flags() {
1611 # Use \> (marks the end of the word)
1613 -e 's/-DNDEBUG\>//g' \
1614 -e 's/-D_GNU_SOURCE\>//g' \
1615 -e 's/-pedantic\>//g' \
1616 -e 's/-Wcovered-switch-default\>//g' \
1620 -e 's/-Wcast-qual\>//g' \
1621 -e 's/-Woverloaded-virtual\>//g' \
1622 -e 's/-fcolor-diagnostics\>//g' \
1623 -e 's/-fdata-sections\>//g' \
1624 -e 's/-ffunction-sections\>//g' \
1625 -e 's/-fno-exceptions\>//g' \
1626 -e 's/-fomit-frame-pointer\>//g' \
1627 -e 's/-fvisibility-inlines-hidden\>//g' \
1629 -e 's/-fstack-protector-strong\>//g'
1633 if test -z "$with_gallium_drivers"; then
1634 enable_gallium_llvm=no
1636 if test "x$enable_gallium_llvm" = xauto; then
1638 i*86|x86_64|amd64) enable_gallium_llvm=yes;;
1641 if test "x$enable_gallium_llvm" = xyes; then
1642 if test -n "$llvm_prefix"; then
1643 AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no], ["$llvm_prefix/bin"])
1645 AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no])
1648 if test "x$LLVM_CONFIG" != xno; then
1649 LLVM_VERSION=`$LLVM_CONFIG --version | egrep -o '^[[0-9.]]+'`
1650 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1651 LLVM_BINDIR=`$LLVM_CONFIG --bindir`
1652 LLVM_CPPFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cppflags"`
1653 LLVM_CFLAGS=$LLVM_CPPFLAGS # CPPFLAGS seem to be sufficient
1654 LLVM_CXXFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cxxflags"`
1655 LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
1656 LLVM_LIBDIR=`$LLVM_CONFIG --libdir`
1658 AC_COMPUTE_INT([LLVM_VERSION_MAJOR], [LLVM_VERSION_MAJOR],
1659 [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
1660 AC_COMPUTE_INT([LLVM_VERSION_MINOR], [LLVM_VERSION_MINOR],
1661 [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
1663 LLVM_VERSION_PATCH=`echo $LLVM_VERSION | cut -d. -f3 | egrep -o '^[[0-9]]+'`
1664 if test -z "$LLVM_VERSION_PATCH"; then
1665 LLVM_VERSION_PATCH=0
1668 if test -n "${LLVM_VERSION_MAJOR}"; then
1669 LLVM_VERSION_INT="${LLVM_VERSION_MAJOR}0${LLVM_VERSION_MINOR}"
1671 LLVM_VERSION_INT=`echo $LLVM_VERSION | sed -e 's/\([[0-9]]\)\.\([[0-9]]\)/\10\2/g'`
1674 LLVM_REQUIRED_VERSION_MAJOR="3"
1675 LLVM_REQUIRED_VERSION_MINOR="3"
1676 if test "$LLVM_VERSION_INT" -lt "${LLVM_REQUIRED_VERSION_MAJOR}0${LLVM_REQUIRED_VERSION_MINOR}"; then
1677 AC_MSG_ERROR([LLVM $LLVM_REQUIRED_VERSION_MAJOR.$LLVM_REQUIRED_VERSION_MINOR or newer is required])
1680 LLVM_COMPONENTS="engine bitwriter"
1681 if $LLVM_CONFIG --components | grep -qw 'mcjit'; then
1682 LLVM_COMPONENTS="${LLVM_COMPONENTS} mcjit"
1685 if test "x$enable_opencl" = xyes; then
1686 LLVM_COMPONENTS="${LLVM_COMPONENTS} ipo linker instrumentation"
1687 # LLVM 3.3 >= 177971 requires IRReader
1688 if $LLVM_CONFIG --components | grep -qw 'irreader'; then
1689 LLVM_COMPONENTS="${LLVM_COMPONENTS} irreader"
1691 # LLVM 3.4 requires Option
1692 if $LLVM_CONFIG --components | grep -qw 'option'; then
1693 LLVM_COMPONENTS="${LLVM_COMPONENTS} option"
1695 # Current OpenCL/Clover and LLVM 3.5 require ObjCARCOpts and ProfileData
1696 if $LLVM_CONFIG --components | grep -qw 'objcarcopts'; then
1697 LLVM_COMPONENTS="${LLVM_COMPONENTS} objcarcopts"
1699 if $LLVM_CONFIG --components | grep -qw 'profiledata'; then
1700 LLVM_COMPONENTS="${LLVM_COMPONENTS} profiledata"
1703 DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT -DLLVM_VERSION_PATCH=$LLVM_VERSION_PATCH"
1706 dnl Check for Clang internal headers
1707 if test "x$enable_opencl" = xyes; then
1708 if test -z "$CLANG_LIBDIR"; then
1709 CLANG_LIBDIR=${LLVM_LIBDIR}
1711 CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION}
1712 AS_IF([test ! -f "$CLANG_RESOURCE_DIR/include/stddef.h"],
1713 [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.])])
1723 if test "x$enable_opencl" = xyes; then
1724 AC_MSG_ERROR([cannot enable OpenCL without LLVM])
1728 dnl Directory for XVMC libs
1729 AC_ARG_WITH([xvmc-libdir],
1730 [AS_HELP_STRING([--with-xvmc-libdir=DIR],
1731 [directory for the XVMC libraries @<:@default=${libdir}@:>@])],
1732 [XVMC_LIB_INSTALL_DIR="$withval"],
1733 [XVMC_LIB_INSTALL_DIR='${libdir}'])
1734 AC_SUBST([XVMC_LIB_INSTALL_DIR])
1739 if test "x$enable_gallium_tests" = xyes; then
1740 # XXX: Use $enable_shared_pipe_drivers once converted to use static/shared pipe-drivers
1741 enable_gallium_loader=yes
1743 AM_CONDITIONAL(HAVE_GALLIUM_TESTS, test "x$enable_gallium_tests" = xyes)
1745 dnl Directory for VDPAU libs
1746 AC_ARG_WITH([vdpau-libdir],
1747 [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1748 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1749 [VDPAU_LIB_INSTALL_DIR="$withval"],
1750 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1751 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
1753 dnl Directory for OMX libs
1755 AC_ARG_WITH([omx-libdir],
1756 [AS_HELP_STRING([--with-omx-libdir=DIR],
1757 [directory for the OMX libraries])],
1758 [OMX_LIB_INSTALL_DIR="$withval"],
1759 [OMX_LIB_INSTALL_DIR=`$PKG_CONFIG --define-variable=libdir=\$libdir --variable=pluginsdir libomxil-bellagio`])
1760 AC_SUBST([OMX_LIB_INSTALL_DIR])
1762 dnl Directory for VA libs
1764 AC_ARG_WITH([va-libdir],
1765 [AS_HELP_STRING([--with-va-libdir=DIR],
1766 [directory for the VA libraries @<:@${libdir}/dri@:>@])],
1767 [VA_LIB_INSTALL_DIR="$withval"],
1768 [VA_LIB_INSTALL_DIR="${libdir}/dri"])
1769 AC_SUBST([VA_LIB_INSTALL_DIR])
1772 dnl Gallium helper functions
1774 gallium_require_drm() {
1775 if test "x$have_libdrm" != xyes; then
1776 AC_MSG_ERROR([$1 requires libdrm >= $LIBDRM_REQUIRED])
1780 gallium_require_llvm() {
1781 if test "x$MESA_LLVM" = x0; then
1782 case "$host" in *gnux32) return;; esac
1784 i*86|x86_64|amd64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1789 gallium_require_drm_loader() {
1790 if test "x$enable_gallium_loader" = xyes; then
1791 if test "x$need_pci_id$have_pci_id" = xyesno; then
1792 AC_MSG_ERROR([Gallium drm loader requires libudev >= $LIBUDEV_REQUIRED or sysfs])
1794 enable_gallium_drm_loader=yes
1796 if test "x$enable_va" = xyes && test "x$7" != x; then
1797 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $7"
1802 case "$with_egl_platforms" in
1806 AC_MSG_ERROR([--with-egl-platforms=drm is required to build the $1 driver.])
1809 if test "x$enable_gbm" != xyes; then
1810 AC_MSG_ERROR([--enable-gbm is required to build the $1 driver.])
1814 radeon_llvm_check() {
1815 if test "x$enable_gallium_llvm" != "xyes"; then
1816 AC_MSG_ERROR([--enable-gallium-llvm is required when building $1])
1818 LLVM_REQUIRED_VERSION_MAJOR="3"
1819 LLVM_REQUIRED_VERSION_MINOR="4"
1820 LLVM_REQUIRED_VERSION_PATCH="2"
1821 if test "${LLVM_VERSION_INT}${LLVM_VERSION_PATCH}" -lt "${LLVM_REQUIRED_VERSION_MAJOR}0${LLVM_REQUIRED_VERSION_MINOR}${LLVM_REQUIRED_VERSION_PATCH}"; then
1822 AC_MSG_ERROR([LLVM $LLVM_REQUIRED_VERSION_MAJOR.$LLVM_REQUIRED_VERSION_MINOR.$LLVM_REQUIRED_VERSION_PATCH or newer is required for $1])
1824 if test true && $LLVM_CONFIG --targets-built | grep -qvw 'R600' ; then
1825 AC_MSG_ERROR([LLVM R600 Target not enabled. You can enable it when building the LLVM
1826 sources with the --enable-experimental-targets=R600
1829 LLVM_COMPONENTS="${LLVM_COMPONENTS} r600 bitreader ipo"
1830 NEED_RADEON_LLVM=yes
1831 if test "x$have_libelf" != xyes; then
1832 AC_MSG_ERROR([$1 requires libelf when using llvm])
1836 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
1837 if test -n "$with_gallium_drivers"; then
1838 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1839 for driver in $gallium_drivers; do
1842 HAVE_GALLIUM_SVGA=yes
1843 gallium_require_drm "svga"
1844 gallium_require_drm_loader
1847 HAVE_GALLIUM_I915=yes
1848 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1849 gallium_require_drm "Gallium i915"
1850 gallium_require_drm_loader
1853 HAVE_GALLIUM_ILO=yes
1854 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1855 gallium_require_drm "Gallium i965/ilo"
1856 gallium_require_drm_loader
1859 HAVE_GALLIUM_R300=yes
1860 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1861 gallium_require_drm "Gallium R300"
1862 gallium_require_drm_loader
1863 gallium_require_llvm "Gallium R300"
1866 HAVE_GALLIUM_R600=yes
1867 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1868 gallium_require_drm "Gallium R600"
1869 gallium_require_drm_loader
1870 if test "x$enable_r600_llvm" = xyes -o "x$enable_opencl" = xyes; then
1871 radeon_llvm_check "r600g"
1872 LLVM_COMPONENTS="${LLVM_COMPONENTS} bitreader asmparser"
1874 if test "x$enable_r600_llvm" = xyes; then
1875 USE_R600_LLVM_COMPILER=yes;
1877 if test "x$enable_opencl" = xyes; then
1878 LLVM_COMPONENTS="${LLVM_COMPONENTS} bitreader asmparser"
1882 HAVE_GALLIUM_RADEONSI=yes
1883 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1884 gallium_require_drm "radeonsi"
1885 gallium_require_drm_loader
1886 radeon_llvm_check "radeonsi"
1887 require_egl_drm "radeonsi"
1890 HAVE_GALLIUM_NOUVEAU=yes
1891 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1892 gallium_require_drm "nouveau"
1893 gallium_require_drm_loader
1896 HAVE_GALLIUM_FREEDRENO=yes
1897 PKG_CHECK_MODULES([FREEDRENO], [libdrm_freedreno >= $LIBDRM_FREEDRENO_REQUIRED])
1898 gallium_require_drm "freedreno"
1899 gallium_require_drm_loader
1902 HAVE_GALLIUM_SOFTPIPE=yes
1903 if test "x$MESA_LLVM" = x1; then
1904 HAVE_GALLIUM_LLVMPIPE=yes
1908 HAVE_GALLIUM_VC4=yes
1909 gallium_require_drm "vc4"
1910 gallium_require_drm_loader
1913 i?86 | x86_64 | amd64)
1914 USE_VC4_SIMULATOR=yes
1919 AC_MSG_ERROR([Unknown Gallium driver: $driver])
1925 dnl Set LLVM_LIBS - This is done after the driver configuration so
1926 dnl that drivers can add additional components to LLVM_COMPONENTS.
1927 dnl Previously, gallium drivers were updating LLVM_LIBS directly
1928 dnl by calling llvm-config --libs ${DRIVER_LLVM_COMPONENTS}, but
1929 dnl this was causing the same libraries to be appear multiple times
1932 if test "x$MESA_LLVM" != x0; then
1934 LLVM_LIBS="`$LLVM_CONFIG --libs ${LLVM_COMPONENTS}`"
1936 if test "x$enable_llvm_shared_libs" = xyes; then
1937 dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
1938 LLVM_SO_NAME=LLVM-`$LLVM_CONFIG --version`
1939 AS_IF([test -f "$LLVM_LIBDIR/lib$LLVM_SO_NAME.so"], [llvm_have_one_so=yes])
1941 if test "x$llvm_have_one_so" = xyes; then
1942 dnl LLVM was built using auto*, so there is only one shared object.
1943 LLVM_LIBS="-l$LLVM_SO_NAME"
1945 dnl If LLVM was built with CMake, there will be one shared object per
1947 AS_IF([test ! -f "$LLVM_LIBDIR/libLLVMTarget.so"],
1948 [AC_MSG_ERROR([Could not find llvm shared libraries:
1949 Please make sure you have built llvm with the --enable-shared option
1950 and that your llvm libraries are installed in $LLVM_LIBDIR
1951 If you have installed your llvm libraries to a different directory you
1952 can use the --with-llvm-prefix= configure flag to specify this directory.
1953 NOTE: Mesa is attempting to use llvm shared libraries by default.
1954 If you do not want to build with llvm shared libraries and instead want to
1955 use llvm static libraries then add --disable-llvm-shared-libs to your configure
1956 invocation and rebuild.])])
1958 dnl We don't need to update LLVM_LIBS in this case because the LLVM
1959 dnl install uses a shared object for each component and we have
1960 dnl already added all of these objects to LLVM_LIBS.
1963 AC_MSG_WARN([Building mesa with statically linked LLVM may cause compilation issues])
1964 dnl We need to link to llvm system libs when using static libs
1965 dnl However, only llvm 3.5+ provides --system-libs
1966 if test $LLVM_VERSION_MAJOR -eq 3 -a $LLVM_VERSION_MINOR -ge 5; then
1967 LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --system-libs`"
1972 AM_CONDITIONAL(HAVE_GALLIUM_SVGA, test "x$HAVE_GALLIUM_SVGA" = xyes)
1973 AM_CONDITIONAL(HAVE_GALLIUM_I915, test "x$HAVE_GALLIUM_I915" = xyes)
1974 AM_CONDITIONAL(HAVE_GALLIUM_ILO, test "x$HAVE_GALLIUM_ILO" = xyes)
1975 AM_CONDITIONAL(HAVE_GALLIUM_R300, test "x$HAVE_GALLIUM_R300" = xyes)
1976 AM_CONDITIONAL(HAVE_GALLIUM_R600, test "x$HAVE_GALLIUM_R600" = xyes)
1977 AM_CONDITIONAL(HAVE_GALLIUM_RADEONSI, test "x$HAVE_GALLIUM_RADEONSI" = xyes)
1978 AM_CONDITIONAL(HAVE_GALLIUM_RADEON_COMMON, test "x$HAVE_GALLIUM_R600" = xyes -o \
1979 "x$HAVE_GALLIUM_RADEONSI" = xyes)
1980 AM_CONDITIONAL(HAVE_GALLIUM_NOUVEAU, test "x$HAVE_GALLIUM_NOUVEAU" = xyes)
1981 AM_CONDITIONAL(HAVE_GALLIUM_FREEDRENO, test "x$HAVE_GALLIUM_FREEDRENO" = xyes)
1982 AM_CONDITIONAL(HAVE_GALLIUM_SOFTPIPE, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes)
1983 AM_CONDITIONAL(HAVE_GALLIUM_LLVMPIPE, test "x$HAVE_GALLIUM_LLVMPIPE" = xyes)
1984 AM_CONDITIONAL(HAVE_GALLIUM_VC4, test "x$HAVE_GALLIUM_VC4" = xyes)
1986 AM_CONDITIONAL(HAVE_GALLIUM_STATIC_TARGETS, test "x$enable_shared_pipe_drivers" = xno)
1988 # NOTE: anything using xcb or other client side libs ends up in separate
1989 # _CLIENT variables. The pipe loader is built in two variants,
1990 # one that is standalone and does not link any x client libs (for
1991 # use by XA tracker in particular, but could be used in any case
1992 # where communication with xserver is not desired).
1993 if test "x$enable_gallium_loader" = xyes; then
1994 if test "x$NEED_WINSYS_XLIB" = xyes; then
1995 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_XLIB"
1998 if test "x$enable_dri" = xyes; then
1999 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRI"
2002 if test "x$enable_gallium_drm_loader" = xyes; then
2003 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRM"
2004 PKG_CHECK_MODULES([GALLIUM_PIPE_LOADER_XCB], [xcb xcb-dri2],
2005 pipe_loader_have_xcb=yes, pipe_loader_have_xcb=no)
2006 if test "x$pipe_loader_have_xcb" = xyes; then
2007 GALLIUM_PIPE_LOADER_CLIENT_DEFINES="$GALLIUM_PIPE_LOADER_CLIENT_DEFINES -DHAVE_PIPE_LOADER_XCB"
2008 GALLIUM_PIPE_LOADER_CLIENT_LIBS="$GALLIUM_PIPE_LOADER_CLIENT_LIBS $GALLIUM_PIPE_LOADER_XCB_LIBS $LIBDRM_LIBS"
2012 GALLIUM_PIPE_LOADER_CLIENT_DEFINES="$GALLIUM_PIPE_LOADER_CLIENT_DEFINES $GALLIUM_PIPE_LOADER_DEFINES"
2013 GALLIUM_PIPE_LOADER_CLIENT_LIBS="$GALLIUM_PIPE_LOADER_CLIENT_LIBS $GALLIUM_PIPE_LOADER_LIBS"
2015 AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
2016 AC_SUBST([GALLIUM_PIPE_LOADER_LIBS])
2017 AC_SUBST([GALLIUM_PIPE_LOADER_CLIENT_DEFINES])
2018 AC_SUBST([GALLIUM_PIPE_LOADER_CLIENT_LIBS])
2021 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
2022 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
2023 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
2024 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
2025 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
2026 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
2028 AM_CONDITIONAL(NEED_RADEON_DRM_WINSYS, test "x$HAVE_GALLIUM_R300" = xyes -o \
2029 "x$HAVE_GALLIUM_R600" = xyes -o \
2030 "x$HAVE_GALLIUM_RADEONSI" = xyes)
2031 AM_CONDITIONAL(NEED_WINSYS_XLIB, test "x$NEED_WINSYS_XLIB" = xyes)
2032 AM_CONDITIONAL(NEED_RADEON_LLVM, test x$NEED_RADEON_LLVM = xyes)
2033 AM_CONDITIONAL(USE_R600_LLVM_COMPILER, test x$USE_R600_LLVM_COMPILER = xyes)
2034 AM_CONDITIONAL(HAVE_LOADER_GALLIUM, test x$enable_gallium_loader = xyes)
2035 AM_CONDITIONAL(HAVE_DRM_LOADER_GALLIUM, test x$enable_gallium_drm_loader = xyes)
2036 AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
2037 AM_CONDITIONAL(HAVE_MESA_LLVM, test x$MESA_LLVM = x1)
2038 AM_CONDITIONAL(USE_VC4_SIMULATOR, test x$USE_VC4_SIMULATOR = xyes)
2039 if test "x$USE_VC4_SIMULATOR" = xyes -a "x$HAVE_GALLIUM_ILO" = xyes; then
2040 AC_MSG_ERROR([VC4 simulator on x86 replaces i965 driver build, so ilo must be disabled.])
2045 AM_CONDITIONAL(DRICOMMON_NEED_LIBDRM, test "x$DRICOMMON_NEED_LIBDRM" = xyes)
2046 AM_CONDITIONAL(HAVE_LIBDRM, test "x$have_libdrm" = xyes)
2047 AM_CONDITIONAL(HAVE_X11_DRIVER, test "x$enable_xlib_glx" = xyes)
2048 AM_CONDITIONAL(HAVE_OSMESA, test "x$enable_osmesa" = xyes)
2049 AM_CONDITIONAL(HAVE_GALLIUM_OSMESA, test "x$enable_gallium_osmesa" = xyes)
2051 AM_CONDITIONAL(HAVE_X86_ASM, test "x$asm_arch" = xx86 -o "x$asm_arch" = xx86_64)
2052 AM_CONDITIONAL(HAVE_X86_64_ASM, test "x$asm_arch" = xx86_64)
2053 AM_CONDITIONAL(HAVE_SPARC_ASM, test "x$asm_arch" = xsparc)
2055 AC_SUBST([VDPAU_MAJOR], 1)
2056 AC_SUBST([VDPAU_MINOR], 0)
2058 VA_MAJOR=`$PKG_CONFIG --modversion libva | $SED -n 's/\([[^\.]]*\)\..*$/\1/p'`
2059 VA_MINOR=`$PKG_CONFIG --modversion libva | $SED -n 's/.*\.\(.*\)\..*$/\1/p'`
2060 AC_SUBST([VA_MAJOR], $VA_MAJOR)
2061 AC_SUBST([VA_MINOR], $VA_MINOR)
2063 AC_SUBST([XVMC_MAJOR], 1)
2064 AC_SUBST([XVMC_MINOR], 0)
2066 XA_HEADER="$srcdir/src/gallium/state_trackers/xa/xa_tracker.h"
2067 XA_MAJOR=`grep "#define XA_TRACKER_VERSION_MAJOR" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_MAJOR //'`
2068 XA_MINOR=`grep "#define XA_TRACKER_VERSION_MINOR" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_MINOR //'`
2069 XA_TINY=`grep "#define XA_TRACKER_VERSION_PATCH" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_PATCH //'`
2071 AC_SUBST([XA_MAJOR], $XA_MAJOR)
2072 AC_SUBST([XA_MINOR], $XA_MINOR)
2073 AC_SUBST([XA_TINY], $XA_TINY)
2074 AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_TINY")
2076 dnl Restore LDFLAGS and CPPFLAGS
2077 LDFLAGS="$_SAVE_LDFLAGS"
2078 CPPFLAGS="$_SAVE_CPPFLAGS"
2080 dnl Suppress clang's warnings about unused CFLAGS and CXXFLAGS
2081 if test "x$acv_mesa_CLANG" = xyes; then
2082 CFLAGS="$CFLAGS -Qunused-arguments"
2083 CXXFLAGS="$CXXFLAGS -Qunused-arguments"
2086 dnl Add user CFLAGS and CXXFLAGS
2087 CFLAGS="$CFLAGS $USER_CFLAGS"
2088 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
2090 dnl Substitute the config
2091 AC_CONFIG_FILES([Makefile
2093 src/egl/drivers/dri2/Makefile
2094 src/egl/main/Makefile
2096 src/egl/wayland/Makefile
2097 src/egl/wayland/wayland-drm/Makefile
2098 src/egl/wayland/wayland-egl/Makefile
2099 src/egl/wayland/wayland-egl/wayland-egl.pc
2100 src/gallium/Makefile
2101 src/gallium/auxiliary/Makefile
2102 src/gallium/auxiliary/pipe-loader/Makefile
2103 src/gallium/drivers/freedreno/Makefile
2104 src/gallium/drivers/galahad/Makefile
2105 src/gallium/drivers/i915/Makefile
2106 src/gallium/drivers/identity/Makefile
2107 src/gallium/drivers/ilo/Makefile
2108 src/gallium/drivers/llvmpipe/Makefile
2109 src/gallium/drivers/noop/Makefile
2110 src/gallium/drivers/nouveau/Makefile
2111 src/gallium/drivers/r300/Makefile
2112 src/gallium/drivers/r600/Makefile
2113 src/gallium/drivers/radeon/Makefile
2114 src/gallium/drivers/radeonsi/Makefile
2115 src/gallium/drivers/rbug/Makefile
2116 src/gallium/drivers/softpipe/Makefile
2117 src/gallium/drivers/svga/Makefile
2118 src/gallium/drivers/trace/Makefile
2119 src/gallium/drivers/vc4/Makefile
2120 src/gallium/drivers/vc4/kernel/Makefile
2121 src/gallium/state_trackers/clover/Makefile
2122 src/gallium/state_trackers/dri/Makefile
2123 src/gallium/state_trackers/glx/xlib/Makefile
2124 src/gallium/state_trackers/omx/Makefile
2125 src/gallium/state_trackers/osmesa/Makefile
2126 src/gallium/state_trackers/va/Makefile
2127 src/gallium/state_trackers/vdpau/Makefile
2128 src/gallium/state_trackers/vega/Makefile
2129 src/gallium/state_trackers/xa/Makefile
2130 src/gallium/state_trackers/xvmc/Makefile
2131 src/gallium/targets/dri/Makefile
2132 src/gallium/targets/egl-static/Makefile
2133 src/gallium/targets/gbm/Makefile
2134 src/gallium/targets/libgl-xlib/Makefile
2135 src/gallium/targets/omx/Makefile
2136 src/gallium/targets/opencl/Makefile
2137 src/gallium/targets/osmesa/Makefile
2138 src/gallium/targets/osmesa/osmesa.pc
2139 src/gallium/targets/pipe-loader/Makefile
2140 src/gallium/targets/va/Makefile
2141 src/gallium/targets/vdpau/Makefile
2142 src/gallium/targets/xa/Makefile
2143 src/gallium/targets/xa/xatracker.pc
2144 src/gallium/targets/xvmc/Makefile
2145 src/gallium/tests/trivial/Makefile
2146 src/gallium/tests/unit/Makefile
2147 src/gallium/winsys/freedreno/drm/Makefile
2148 src/gallium/winsys/i915/drm/Makefile
2149 src/gallium/winsys/intel/drm/Makefile
2150 src/gallium/winsys/nouveau/drm/Makefile
2151 src/gallium/winsys/radeon/drm/Makefile
2152 src/gallium/winsys/svga/drm/Makefile
2153 src/gallium/winsys/sw/dri/Makefile
2154 src/gallium/winsys/sw/fbdev/Makefile
2155 src/gallium/winsys/sw/kms-dri/Makefile
2156 src/gallium/winsys/sw/null/Makefile
2157 src/gallium/winsys/sw/wayland/Makefile
2158 src/gallium/winsys/sw/wrapper/Makefile
2159 src/gallium/winsys/sw/xlib/Makefile
2160 src/gallium/winsys/vc4/drm/Makefile
2165 src/glx/apple/Makefile
2166 src/glx/tests/Makefile
2170 src/mapi/es1api/glesv1_cm.pc
2171 src/mapi/es2api/glesv2.pc
2172 src/mapi/glapi/gen/Makefile
2173 src/mapi/vgapi/Makefile
2174 src/mapi/vgapi/vg.pc
2177 src/mesa/drivers/dri/dri.pc
2178 src/mesa/drivers/dri/common/Makefile
2179 src/mesa/drivers/dri/common/xmlpool/Makefile
2180 src/mesa/drivers/dri/i915/Makefile
2181 src/mesa/drivers/dri/i965/Makefile
2182 src/mesa/drivers/dri/Makefile
2183 src/mesa/drivers/dri/nouveau/Makefile
2184 src/mesa/drivers/dri/r200/Makefile
2185 src/mesa/drivers/dri/radeon/Makefile
2186 src/mesa/drivers/dri/swrast/Makefile
2187 src/mesa/drivers/osmesa/Makefile
2188 src/mesa/drivers/osmesa/osmesa.pc
2189 src/mesa/drivers/x11/Makefile
2190 src/mesa/main/tests/Makefile
2192 src/util/tests/hash_table/Makefile])
2197 dnl Output some configuration info for the user
2200 echo " prefix: $prefix"
2201 echo " exec_prefix: $exec_prefix"
2202 echo " libdir: $libdir"
2203 echo " includedir: $includedir"
2207 echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
2208 echo " OpenVG: $enable_openvg"
2212 case "x$enable_osmesa$enable_gallium_osmesa" in
2214 echo " OSMesa: lib$OSMESA_LIB (Gallium)"
2217 echo " OSMesa: lib$OSMESA_LIB"
2225 if test "x$enable_dri" != xno; then
2226 echo " DRI platform: $dri_platform"
2227 if test -z "$DRI_DIRS"; then
2228 echo " DRI drivers: no"
2230 echo " DRI drivers: $DRI_DIRS"
2232 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
2235 case "x$enable_glx$enable_xlib_glx" in
2237 echo " GLX: Xlib-based"
2240 echo " GLX: DRI-based"
2243 echo " GLX: $enable_glx"
2249 echo " EGL: $enable_egl"
2250 if test "$enable_egl" = yes; then
2251 echo " EGL platforms: $egl_platforms"
2254 if test "x$HAVE_EGL_DRIVER_DRI2" != "x"; then
2255 egl_drivers="$egl_drivers builtin:egl_dri2"
2258 echo " EGL drivers: $egl_drivers"
2262 if test "x$MESA_LLVM" = x1; then
2264 echo " llvm-config: $LLVM_CONFIG"
2265 echo " llvm-version: $LLVM_VERSION"
2271 if test -n "$with_gallium_drivers"; then
2272 echo " Gallium: yes"
2280 echo " Shared libs: $enable_shared"
2281 echo " Static libs: $enable_static"
2282 echo " Shared-glapi: $enable_shared_glapi"
2284 dnl Compiler options
2285 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2286 cflags=`echo $CFLAGS | \
2287 $SED 's/^ *//;s/ */ /;s/ *$//'`
2288 cxxflags=`echo $CXXFLAGS | \
2289 $SED 's/^ *//;s/ */ /;s/ *$//'`
2290 defines=`echo $DEFINES | $SED 's/^ *//;s/ */ /;s/ *$//'`
2292 echo " CFLAGS: $cflags"
2293 echo " CXXFLAGS: $cxxflags"
2294 echo " Macros: $defines"
2296 if test "x$MESA_LLVM" = x1; then
2297 echo " LLVM_CFLAGS: $LLVM_CFLAGS"
2298 echo " LLVM_CXXFLAGS: $LLVM_CXXFLAGS"
2299 echo " LLVM_CPPFLAGS: $LLVM_CPPFLAGS"
2302 echo " PYTHON2: $PYTHON2"
2305 echo " Run '${MAKE-make}' to build Mesa"