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 AX_CHECK_COMPILE_FLAG([-msse4.1], [SSE41_SUPPORTED=1], [SSE41_SUPPORTED=0])
256 if test "x$SSE41_SUPPORTED" = x1; then
257 DEFINES="$DEFINES -DUSE_SSE41"
259 AM_CONDITIONAL([SSE41_SUPPORTED], [test x$SSE41_SUPPORTED = x1])
261 dnl Can't have static and shared libraries, default to static if user
262 dnl explicitly requested. If both disabled, set to static since shared
263 dnl was explicitly requested.
264 case "x$enable_static$enable_shared" in
266 AC_MSG_WARN([Cannot build static and shared libraries, disabling shared])
270 AC_MSG_WARN([Cannot disable both static and shared libraries, enabling shared])
275 AM_CONDITIONAL(BUILD_SHARED, test "x$enable_shared" = xyes)
278 dnl other compiler options
280 AC_ARG_ENABLE([debug],
281 [AS_HELP_STRING([--enable-debug],
282 [use debug compiler flags and macros @<:@default=disabled@:>@])],
283 [enable_debug="$enableval"],
286 if test "x$enable_debug" = xyes; then
287 DEFINES="$DEFINES -DDEBUG"
288 if test "x$GCC" = xyes; then
289 if ! echo "$CFLAGS" | grep -q -e '-g'; then
292 if ! echo "$CFLAGS" | grep -q -e '-O'; then
296 if test "x$GXX" = xyes; then
297 if ! echo "$CXXFLAGS" | grep -q -e '-g'; then
298 CXXFLAGS="$CXXFLAGS -g"
300 if ! echo "$CXXFLAGS" | grep -q -e '-O'; then
301 CXXFLAGS="$CXXFLAGS -O0"
307 dnl Check if linker supports -Bsymbolic
309 save_LDFLAGS=$LDFLAGS
310 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic"
311 AC_MSG_CHECKING([if ld supports -Bsymbolic])
313 [AC_LANG_SOURCE([int main() { return 0;}])],
314 [AC_MSG_RESULT([yes])
315 BSYMBOLIC="-Wl,-Bsymbolic";],
318 LDFLAGS=$save_LDFLAGS
320 AC_SUBST([BSYMBOLIC])
323 dnl Check if linker supports garbage collection
325 save_LDFLAGS=$LDFLAGS
326 LDFLAGS="$LDFLAGS -Wl,--gc-sections"
327 AC_MSG_CHECKING([whether ld supports --gc-sections])
329 [AC_LANG_SOURCE([static char UnusedFunc() { return 5; } int main() { return 0;}])],
330 [AC_MSG_RESULT([yes])
331 GC_SECTIONS="-Wl,--gc-sections";],
334 LDFLAGS=$save_LDFLAGS
336 AC_SUBST([GC_SECTIONS])
339 dnl OpenBSD does not have DT_NEEDED entries for libc by design
340 dnl so when these flags are passed to ld via libtool the checks will fail
344 LD_NO_UNDEFINED="" ;;
346 LD_NO_UNDEFINED="-Wl,--no-undefined" ;;
349 AC_SUBST([LD_NO_UNDEFINED])
352 dnl Check if linker supports version scripts
354 AC_MSG_CHECKING([if the linker supports version-scripts])
355 save_LDFLAGS=$LDFLAGS
356 LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map"
357 cat > conftest.map <<EOF
367 [AC_LANG_SOURCE([int main() { return 0;}])],
368 [have_ld_version_script=yes;AC_MSG_RESULT(yes)],
369 [have_ld_version_script=no; AC_MSG_RESULT(no)])
370 LDFLAGS=$save_LDFLAGS
371 AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes")
374 dnl Check if linker supports dynamic list files
376 AC_MSG_CHECKING([if the linker supports --dynamic-list])
377 save_LDFLAGS=$LDFLAGS
378 LDFLAGS="$LDFLAGS -Wl,--dynamic-list=conftest.dyn"
379 cat > conftest.dyn <<EOF
381 radeon_drm_winsys_create;
385 [AC_LANG_SOURCE([int main() { return 0;}])],
386 [have_ld_dynamic_list=yes;AC_MSG_RESULT(yes)],
387 [have_ld_dynamic_list=no; AC_MSG_RESULT(no)])
388 LDFLAGS=$save_LDFLAGS
389 AM_CONDITIONAL(HAVE_LD_DYNAMIC_LIST, test "$have_ld_dynamic_list" = "yes")
392 dnl compatibility symlinks
396 HAVE_COMPAT_SYMLINKS=yes ;;
398 HAVE_COMPAT_SYMLINKS=no ;;
401 AM_CONDITIONAL(HAVE_COMPAT_SYMLINKS, test "x$HAVE_COMPAT_SYMLINKS" = xyes)
419 AC_ARG_WITH([gl-lib-name],
420 [AS_HELP_STRING([--with-gl-lib-name@<:@=NAME@:>@],
421 [specify GL library name @<:@default=GL@:>@])],
424 AC_ARG_WITH([osmesa-lib-name],
425 [AS_HELP_STRING([--with-osmesa-lib-name@<:@=NAME@:>@],
426 [specify OSMesa library name @<:@default=OSMesa@:>@])],
427 [OSMESA_LIB=$withval],
429 AS_IF([test "x$GL_LIB" = xyes], [GL_LIB=GL])
430 AS_IF([test "x$OSMESA_LIB" = xyes], [OSMESA_LIB=OSMesa])
433 dnl Mangled Mesa support
435 AC_ARG_ENABLE([mangling],
436 [AS_HELP_STRING([--enable-mangling],
437 [enable mangled symbols and library name @<:@default=disabled@:>@])],
438 [enable_mangling="${enableval}"],
441 if test "x${enable_mangling}" = "xyes" ; then
442 DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
443 GL_LIB="Mangled${GL_LIB}"
444 OSMESA_LIB="Mangled${OSMESA_LIB}"
447 AC_SUBST([OSMESA_LIB])
450 dnl potentially-infringing-but-nobody-knows-for-sure stuff
452 AC_ARG_ENABLE([texture-float],
453 [AS_HELP_STRING([--enable-texture-float],
454 [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
455 [enable_texture_float="$enableval"],
456 [enable_texture_float=no]
458 if test "x$enable_texture_float" = xyes; then
459 AC_MSG_WARN([Floating-point textures enabled.])
460 AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
461 DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
465 dnl Arch/platform-specific settings
468 [AS_HELP_STRING([--disable-asm],
469 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
470 [enable_asm="$enableval"],
474 AC_MSG_CHECKING([whether to enable assembly])
475 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
476 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
477 if test "x$enable_asm" = xyes -a "x$cross_compiling" = xyes; then
479 i?86 | x86_64 | amd64)
481 AC_MSG_RESULT([no, cross compiling])
485 # check for supported arches
486 if test "x$enable_asm" = xyes; then
490 linux* | *freebsd* | dragonfly* | *netbsd* | openbsd* | gnu*)
497 linux* | *freebsd* | dragonfly* | *netbsd* | openbsd*)
513 DEFINES="$DEFINES -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
514 AC_MSG_RESULT([yes, x86])
517 DEFINES="$DEFINES -DUSE_X86_64_ASM"
518 AC_MSG_RESULT([yes, x86_64])
521 DEFINES="$DEFINES -DUSE_SPARC_ASM"
522 AC_MSG_RESULT([yes, sparc])
525 AC_MSG_RESULT([no, platform not supported])
530 AC_CHECK_HEADER([xlocale.h], [DEFINES="$DEFINES -DHAVE_XLOCALE_H"])
531 AC_CHECK_FUNC([strtof], [DEFINES="$DEFINES -DHAVE_STRTOF"])
533 dnl Check to see if dlopen is in default libraries (like Solaris, which
534 dnl has it in libc), or if libdl is needed to get it.
535 AC_CHECK_FUNC([dlopen], [DEFINES="$DEFINES -DHAVE_DLOPEN"],
536 [AC_CHECK_LIB([dl], [dlopen],
537 [DEFINES="$DEFINES -DHAVE_DLOPEN"; DLOPEN_LIBS="-ldl"])])
538 AC_SUBST([DLOPEN_LIBS])
540 dnl Check if that library also has dladdr
542 LIBS="$LIBS $DLOPEN_LIBS"
543 AC_CHECK_FUNCS([dladdr])
550 AC_CHECK_FUNCS([clock_gettime], [CLOCK_LIB=],
551 [AC_CHECK_LIB([rt], [clock_gettime], [CLOCK_LIB=-lrt],
552 [AC_MSG_ERROR([Could not find clock_gettime])])])
553 AC_SUBST([CLOCK_LIB])
557 dnl See if posix_memalign is available
558 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
560 dnl Check for pthreads
568 dnl AX_PTHREADS leaves PTHREAD_LIBS empty for gcc and sets PTHREAD_CFLAGS
569 dnl to -pthread, which causes problems if we need -lpthread to appear in
571 test -z "$PTHREAD_LIBS" && PTHREAD_LIBS="-lpthread"
573 dnl SELinux awareness.
574 AC_ARG_ENABLE([selinux],
575 [AS_HELP_STRING([--enable-selinux],
576 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
577 [MESA_SELINUX="$enableval"],
579 if test "x$enable_selinux" = "xyes"; then
580 PKG_CHECK_MODULES([SELINUX], [libselinux], [],
581 [AC_CHECK_HEADER([selinux/selinux.h],[],
582 [AC_MSG_ERROR([SELinux headers not found])])
583 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
584 [AC_MSG_ERROR([SELinux library not found])])
585 SELINUX_LIBS="-lselinux"])
586 DEFINES="$DEFINES -DMESA_SELINUX"
588 AC_SUBST([SELINUX_CFLAGS])
589 AC_SUBST([SELINUX_LIBS])
592 AC_ARG_ENABLE([opengl],
593 [AS_HELP_STRING([--disable-opengl],
594 [disable support for standard OpenGL API @<:@default=enabled@:>@])],
595 [enable_opengl="$enableval"],
597 AC_ARG_ENABLE([gles1],
598 [AS_HELP_STRING([--enable-gles1],
599 [enable support for OpenGL ES 1.x API @<:@default=disabled@:>@])],
600 [enable_gles1="$enableval"],
602 AC_ARG_ENABLE([gles2],
603 [AS_HELP_STRING([--enable-gles2],
604 [enable support for OpenGL ES 2.x API @<:@default=disabled@:>@])],
605 [enable_gles2="$enableval"],
607 AC_ARG_ENABLE([openvg],
608 [AS_HELP_STRING([--enable-openvg],
609 [enable support for OpenVG API @<:@default=disabled@:>@])],
610 [enable_openvg="$enableval"],
614 [AS_HELP_STRING([--enable-dri],
615 [enable DRI modules @<:@default=enabled@:>@])],
616 [enable_dri="$enableval"],
627 AC_ARG_ENABLE([dri3],
628 [AS_HELP_STRING([--enable-dri3],
629 [enable DRI3 @<:@default=auto@:>@])],
630 [enable_dri3="$enableval"],
631 [enable_dri3="$dri3_default"])
633 [AS_HELP_STRING([--enable-glx],
634 [enable GLX library @<:@default=enabled@:>@])],
635 [enable_glx="$enableval"],
637 AC_ARG_ENABLE([osmesa],
638 [AS_HELP_STRING([--enable-osmesa],
639 [enable OSMesa library @<:@default=disabled@:>@])],
640 [enable_osmesa="$enableval"],
642 AC_ARG_ENABLE([gallium-osmesa],
643 [AS_HELP_STRING([--enable-gallium-osmesa],
644 [enable Gallium implementation of the OSMesa library @<:@default=disabled@:>@])],
645 [enable_gallium_osmesa="$enableval"],
646 [enable_gallium_osmesa=no])
648 [AS_HELP_STRING([--disable-egl],
649 [disable EGL library @<:@default=enabled@:>@])],
650 [enable_egl="$enableval"],
654 [AS_HELP_STRING([--enable-xa],
655 [enable build of the XA X Acceleration API @<:@default=disabled@:>@])],
656 [enable_xa="$enableval"],
659 [AS_HELP_STRING([--enable-gbm],
660 [enable gbm library @<:@default=auto@:>@])],
661 [enable_gbm="$enableval"],
664 AC_ARG_ENABLE([xvmc],
665 [AS_HELP_STRING([--enable-xvmc],
666 [enable xvmc library @<:@default=auto@:>@])],
667 [enable_xvmc="$enableval"],
669 AC_ARG_ENABLE([vdpau],
670 [AS_HELP_STRING([--enable-vdpau],
671 [enable vdpau library @<:@default=auto@:>@])],
672 [enable_vdpau="$enableval"],
675 [AS_HELP_STRING([--enable-omx],
676 [enable OpenMAX library @<:@default=disabled@:>@])],
677 [enable_omx="$enableval"],
680 [AS_HELP_STRING([--enable-va],
681 [enable va library @<:@default=auto@:>@])],
682 [enable_va="$enableval"],
684 AC_ARG_ENABLE([opencl],
685 [AS_HELP_STRING([--enable-opencl],
686 [enable OpenCL library @<:@default=disabled@:>@])],
687 [enable_opencl="$enableval"],
689 AC_ARG_ENABLE([opencl_icd],
690 [AS_HELP_STRING([--enable-opencl-icd],
691 [Build an OpenCL ICD library to be loaded by an ICD implementation
692 @<:@default=disabled@:>@])],
693 [enable_opencl_icd="$enableval"],
694 [enable_opencl_icd=no])
695 AC_ARG_ENABLE([xlib-glx],
696 [AS_HELP_STRING([--enable-xlib-glx],
697 [make GLX library Xlib-based instead of DRI-based @<:@default=disabled@:>@])],
698 [enable_xlib_glx="$enableval"],
699 [enable_xlib_glx=no])
701 AC_ARG_ENABLE([r600-llvm-compiler],
702 [AS_HELP_STRING([--enable-r600-llvm-compiler],
703 [Enable experimental LLVM backend for graphics shaders @<:@default=disabled@:>@])],
704 [enable_r600_llvm="$enableval"],
705 [enable_r600_llvm=no])
707 AC_ARG_ENABLE([gallium-tests],
708 [AS_HELP_STRING([--enable-gallium-tests],
709 [Enable optional Gallium tests) @<:@default=disabled@:>@])],
710 [enable_gallium_tests="$enableval"],
711 [enable_gallium_tests=no])
713 # Option for Gallium drivers
715 # Keep this in sync with the --with-gallium-drivers help string default value
716 GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
718 AC_ARG_WITH([gallium-drivers],
719 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
720 [comma delimited Gallium drivers list, e.g.
721 "i915,ilo,nouveau,r300,r600,radeonsi,freedreno,svga,swrast,vc4"
722 @<:@default=r300,r600,svga,swrast@:>@])],
723 [with_gallium_drivers="$withval"],
724 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
726 # Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it
727 # here so that the script doesn't choke on an unknown driver name later.
728 case "$with_gallium_drivers" in
729 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
730 no) with_gallium_drivers='' ;;
733 if test "x$enable_opengl" = xno -a \
734 "x$enable_gles1" = xno -a \
735 "x$enable_gles2" = xno -a \
736 "x$enable_openvg" = xno -a \
737 "x$enable_xa" = xno -a \
738 "x$enable_xvmc" = xno -a \
739 "x$enable_vdpau" = xno -a \
740 "x$enable_omx" = xno -a \
741 "x$enable_va" = xno -a \
742 "x$enable_opencl" = xno; then
743 AC_MSG_ERROR([at least one API should be enabled])
746 # Building OpenGL ES1 and/or ES2 without OpenGL is not supported on mesa 9.0.x
747 if test "x$enable_opengl" = xno -a \
748 "x$enable_gles1" = xyes; then
749 AC_MSG_ERROR([Building OpenGL ES1 without OpenGL is not supported])
752 if test "x$enable_opengl" = xno -a \
753 "x$enable_gles2" = xyes; then
754 AC_MSG_ERROR([Building OpenGL ES2 without OpenGL is not supported])
757 AM_CONDITIONAL(HAVE_OPENGL, test "x$enable_opengl" = xyes)
758 AM_CONDITIONAL(HAVE_OPENGL_ES1, test "x$enable_gles1" = xyes)
759 AM_CONDITIONAL(HAVE_OPENGL_ES2, test "x$enable_gles2" = xyes)
760 AM_CONDITIONAL(NEED_OPENGL_COMMON, test "x$enable_opengl" = xyes -o \
761 "x$enable_gles1" = xyes -o \
762 "x$enable_gles2" = xyes)
764 if test "x$enable_glx" = xno; then
765 AC_MSG_WARN([GLX disabled, disabling Xlib-GLX])
769 if test "x$enable_dri$enable_xlib_glx" = xyesyes; then
770 AC_MSG_ERROR([DRI and Xlib-GLX cannot be built together])
773 if test "x$enable_opengl$enable_xlib_glx" = xnoyes; then
774 AC_MSG_ERROR([Xlib-GLX cannot be built without OpenGL])
777 # Disable GLX if OpenGL is not enabled
778 if test "x$enable_glx$enable_opengl" = xyesno; then
779 AC_MSG_WARN([OpenGL not enabled, disabling GLX])
783 # Disable GLX if DRI and Xlib-GLX are not enabled
784 if test "x$enable_glx" = xyes -a \
785 "x$enable_dri" = xno -a \
786 "x$enable_xlib_glx" = xno; then
787 AC_MSG_WARN([Neither DRI nor Xlib-GLX enabled, disabling GLX])
791 AM_CONDITIONAL(HAVE_DRI_GLX, test "x$enable_glx" = xyes -a \
792 "x$enable_dri" = xyes)
794 # Select which platform-dependent DRI code gets built
797 dri_platform='apple' ;;
799 dri_platform='none' ;;
801 dri_platform='drm' ;;
804 AM_CONDITIONAL(HAVE_DRICOMMON, test "x$enable_dri" = xyes )
805 AM_CONDITIONAL(HAVE_DRISW, test "x$enable_dri" = xyes )
806 AM_CONDITIONAL(HAVE_DRI2, test "x$enable_dri" = xyes -a "x$dri_platform" = xdrm )
807 AM_CONDITIONAL(HAVE_DRI3, test "x$enable_dri3" = xyes -a "x$dri_platform" = xdrm )
808 AM_CONDITIONAL(HAVE_APPLEDRI, test "x$enable_dri" = xyes -a "x$dri_platform" = xapple )
810 AC_ARG_ENABLE([shared-glapi],
811 [AS_HELP_STRING([--enable-shared-glapi],
812 [Enable shared glapi for OpenGL @<:@default=enabled@:>@])],
813 [enable_shared_glapi="$enableval"],
814 [enable_shared_glapi=yes])
816 case "x$enable_opengl$enable_gles1$enable_gles2" in
818 if test "x$enable_shared_glapi" = xno; then
819 AC_MSG_ERROR([shared GLAPI required when building two or more of
820 the following APIs - opengl, gles1 gles2])
825 # Building Xlib-GLX requires shared glapi to be disabled.
826 if test "x$enable_xlib_glx" = xyes; then
827 AC_MSG_NOTICE([Shared GLAPI should not used with Xlib-GLX, disabling])
828 enable_shared_glapi=no
831 AM_CONDITIONAL(HAVE_SHARED_GLAPI, test "x$enable_shared_glapi" = xyes)
833 # Build the pipe-drivers as separate libraries/modules.
834 # Do not touch this unless you know what you are doing.
835 # XXX: Expose via configure option ?
836 enable_shared_pipe_drivers=no
839 dnl Driver specific build directories
842 case "x$enable_glx$enable_xlib_glx" in
844 NEED_WINSYS_XLIB="yes"
848 if test "x$enable_dri" = xyes; then
849 enable_gallium_loader="$enable_shared_pipe_drivers"
852 if test "x$enable_gallium_osmesa" = xyes; then
853 if ! echo "$with_gallium_drivers" | grep -q 'swrast'; then
854 AC_MSG_ERROR([gallium_osmesa requires the gallium swrast driver])
856 if test "x$enable_osmesa" = xyes; then
857 AC_MSG_ERROR([Cannot enable both classic and Gallium OSMesa implementations])
861 AC_SUBST([MESA_LLVM])
864 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
865 [have_libdrm=yes], [have_libdrm=no])
866 if test "x$have_libdrm" = xyes; then
867 DEFINES="$DEFINES -DHAVE_LIBDRM"
877 PKG_CHECK_MODULES([LIBUDEV], [libudev >= $LIBUDEV_REQUIRED],
878 have_libudev=yes, have_libudev=no)
880 AC_ARG_ENABLE([sysfs],
881 [AS_HELP_STRING([--enable-sysfs],
882 [enable /sys PCI identification @<:@default=disabled@:>@])],
883 [have_sysfs="$enableval"],
887 if test "x$enable_dri" = xyes; then
888 if test "$enable_static" = yes; then
889 AC_MSG_ERROR([Cannot use static libraries for DRI drivers])
892 # not a hard requirement as swrast does not depend on it
893 if test "x$have_libdrm" = xyes; then
894 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
898 AC_ARG_ENABLE([driglx-direct],
899 [AS_HELP_STRING([--disable-driglx-direct],
900 [disable direct rendering in GLX and EGL for DRI \
901 @<:@default=auto@:>@])],
902 [driglx_direct="$enableval"],
903 [driglx_direct="yes"])
906 dnl libGL configuration per driver
908 case "x$enable_glx$enable_xlib_glx" in
911 dri_modules="x11 xext xcb"
912 PKG_CHECK_MODULES([XLIBGL], [$dri_modules])
913 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
914 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
915 GL_LIB_DEPS="$XLIBGL_LIBS"
916 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
917 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm $PTHREAD_LIBS"
921 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
923 # find the DRI deps for libGL
924 dri_modules="x11 xext xdamage xfixes x11-xcb xcb xcb-glx >= $XCBGLX_REQUIRED"
926 if test x"$driglx_direct" = xyes; then
927 if test x"$dri_platform" = xdrm ; then
928 DEFINES="$DEFINES -DGLX_USE_DRM"
929 if test "x$have_libdrm" != xyes; then
930 AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
933 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
934 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED"
935 if test x"$enable_dri3" = xyes; then
936 PKG_CHECK_MODULES([DRI3PROTO], [dri3proto >= $DRI3PROTO_REQUIRED])
937 PKG_CHECK_MODULES([PRESENTPROTO], [presentproto >= $PRESENTPROTO_REQUIRED])
940 if test x"$enable_dri" = xyes; then
941 dri_modules="$dri_modules xcb-dri2 >= $XCBDRI2_REQUIRED"
944 if test x"$enable_dri3" = xyes; then
945 PKG_CHECK_EXISTS([xcb >= $XCB_REQUIRED], [], AC_MSG_ERROR([DRI3 requires xcb >= $XCB_REQUIRED]))
946 dri_modules="$dri_modules xcb-dri3 xcb-present xcb-sync xshmfence >= $XSHMFENCE_REQUIRED"
949 if test x"$dri_platform" = xapple ; then
950 DEFINES="$DEFINES -DGLX_USE_APPLEGL"
954 # add xf86vidmode if available
955 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
956 if test "$HAVE_XF86VIDMODE" = yes ; then
957 dri_modules="$dri_modules xxf86vm"
960 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
961 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
962 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
963 GL_LIB_DEPS="$DRIGL_LIBS"
965 # need DRM libs, $PTHREAD_LIBS, etc.
966 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
967 GL_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
972 if test "$have_libudev" = yes; then
973 DEFINES="$DEFINES -DHAVE_LIBUDEV"
977 if test "$have_sysfs" = yes; then
978 DEFINES="$DEFINES -DHAVE_SYSFS"
982 # This is outside the case (above) so that it is invoked even for non-GLX
984 AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
986 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
987 GLESv1_CM_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
988 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
989 GLESv2_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
991 AC_SUBST([X11_INCLUDES])
992 AC_SUBST([GL_LIB_DEPS])
993 AC_SUBST([GL_PC_REQ_PRIV])
994 AC_SUBST([GL_PC_LIB_PRIV])
995 AC_SUBST([GL_PC_CFLAGS])
996 AC_SUBST([DRI_PC_REQ_PRIV])
997 AC_SUBST([GLESv1_CM_LIB_DEPS])
998 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
999 AC_SUBST([GLESv2_LIB_DEPS])
1000 AC_SUBST([GLESv2_PC_LIB_PRIV])
1002 AC_SUBST([HAVE_XF86VIDMODE])
1007 case "x$enable_glx$enable_xlib_glx" in
1009 DEFINES="$DEFINES -DUSE_XSHM"
1012 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1013 if test "x$driglx_direct" = xyes; then
1014 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1023 AC_ARG_ENABLE([glx-tls],
1024 [AS_HELP_STRING([--enable-glx-tls],
1025 [enable TLS support in GLX @<:@default=disabled@:>@])],
1026 [GLX_USE_TLS="$enableval"],
1028 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
1030 AS_IF([test "x$GLX_USE_TLS" = xyes -a "x$ax_pthread_ok" = xyes],
1031 [DEFINES="${DEFINES} -DGLX_USE_TLS"])
1036 dnl Directory for DRI drivers
1037 AC_ARG_WITH([dri-driverdir],
1038 [AS_HELP_STRING([--with-dri-driverdir=DIR],
1039 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
1040 [DRI_DRIVER_INSTALL_DIR="$withval"],
1041 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
1042 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
1043 dnl Extra search path for DRI drivers
1044 AC_ARG_WITH([dri-searchpath],
1045 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
1046 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
1047 [DRI_DRIVER_SEARCH_DIR="$withval"],
1048 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
1049 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
1050 dnl Which drivers to build - default is chosen by platform
1051 AC_ARG_WITH([dri-drivers],
1052 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
1053 [comma delimited classic DRI drivers list, e.g.
1054 "swrast,i965,radeon" @<:@default=auto@:>@])],
1055 [with_dri_drivers="$withval"],
1056 [with_dri_drivers=auto])
1058 if test "x$with_dri_drivers" = xauto; then
1059 if test "x$enable_opengl" = xyes -a "x$enable_dri" = xyes; then
1060 with_dri_drivers="yes"
1062 with_dri_drivers="no"
1065 if test "x$with_dri_drivers" = xno; then
1069 dnl If $with_dri_drivers is yes, drivers will be added through
1070 dnl platform checks. Set DEFINES and LIB_DEPS
1071 if test "x$enable_dri" = xyes; then
1072 # Platform specific settings and drivers to build
1075 DEFINES="$DEFINES -DHAVE_ALIAS"
1076 if test "x$enable_dri3" = xyes; then
1077 DEFINES="$DEFINES -DHAVE_DRI3"
1080 if test "x$have_pci_id" != xyes; then
1081 AC_MSG_ERROR([libudev-dev or sysfs required for building DRI])
1086 # Build only the drivers for cards that exist on PowerPC/sparc
1087 if test "x$with_dri_drivers" = "xyes"; then
1088 with_dri_drivers="r200 radeon swrast"
1093 *freebsd* | dragonfly* | *netbsd* | openbsd*)
1094 DEFINES="$DEFINES -DHAVE_ALIAS"
1097 DEFINES="$DEFINES -DHAVE_ALIAS"
1100 if test "x$with_dri_drivers" = "xyes"; then
1101 with_dri_drivers="swrast"
1105 DEFINES="$DEFINES -DGLX_ALIAS_UNSUPPORTED"
1106 if test "x$with_dri_drivers" = "xyes"; then
1107 with_dri_drivers="swrast"
1113 if test "x$with_dri_drivers" = "xyes"; then
1114 with_dri_drivers="i915 i965 nouveau r200 radeon swrast"
1118 PKG_CHECK_MODULES([EXPAT], [expat], [],
1119 # expat version 2.0 and earlier do not provide expat.pc
1120 [AC_CHECK_HEADER([expat.h],[],
1121 [AC_MSG_ERROR([Expat headers required for DRI not found])])
1122 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1123 [AC_MSG_ERROR([Expat library required for DRI not found])])
1124 EXPAT_LIBS="-lexpat"])
1126 DRICOMMON_NEED_LIBDRM=no
1127 # If we are building any DRI driver other than swrast.
1128 if test -n "$with_dri_drivers"; then
1129 if test "x$with_dri_drivers" != xswrast; then
1130 # ... libdrm is required
1131 if test "x$have_libdrm" != xyes; then
1132 AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
1134 DRICOMMON_NEED_LIBDRM=yes
1138 # If we're building any gallium DRI driver other than swrast
1139 if test -n "$with_gallium_drivers" -a "x$DRICOMMON_NEED_LIBDRM" = xno; then
1140 if test "x$with_gallium_drivers" != xswrast; then
1141 # ... build a libdrm aware dricommon
1142 DRICOMMON_NEED_LIBDRM=yes
1146 # put all the necessary libs together
1147 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1150 AC_SUBST([DRI_LIB_DEPS])
1153 dnl Duplicates in DRI_DIRS are removed by sorting it at the end of this block
1154 if test -n "$with_dri_drivers"; then
1155 if test "x$enable_opengl" != xyes; then
1156 AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1159 dri_drivers=`IFS=', '; echo $with_dri_drivers`
1160 for driver in $dri_drivers; do
1161 DRI_DIRS="$DRI_DIRS $driver"
1165 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1169 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1172 HAVE_NOUVEAU_DRI=yes;
1173 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED])
1176 HAVE_RADEON_DRI=yes;
1177 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1181 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1184 HAVE_SWRAST_DRI=yes;
1187 AC_MSG_ERROR([classic DRI driver '$driver' does not exist])
1191 DRI_DIRS=`echo $DRI_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1194 AM_CONDITIONAL(NEED_MEGADRIVER, test -n "$DRI_DIRS")
1195 AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_xlib_glx" = xyes -o \
1196 "x$enable_osmesa" = xyes -o \
1200 dnl OSMesa configuration
1203 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1204 AC_ARG_WITH([osmesa-bits],
1205 [AS_HELP_STRING([--with-osmesa-bits=BITS],
1206 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1207 [osmesa_bits="$withval"],
1209 if test "x$osmesa_bits" != x8; then
1210 if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then
1211 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1215 case "x$osmesa_bits" in
1217 OSMESA_LIB="${OSMESA_LIB}"
1220 OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
1221 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1224 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1228 if test "x$enable_osmesa" = xyes -o "x$enable_gallium_osmesa" = xyes; then
1229 # only link libraries with osmesa if shared
1230 if test "$enable_static" = no; then
1231 OSMESA_LIB_DEPS="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1235 OSMESA_PC_LIB_PRIV="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1238 AC_SUBST([OSMESA_LIB_DEPS])
1239 AC_SUBST([OSMESA_PC_REQ])
1240 AC_SUBST([OSMESA_PC_LIB_PRIV])
1243 dnl gbm configuration
1245 if test "x$enable_gbm" = xauto; then
1246 case "$with_egl_platforms" in
1253 if test "x$enable_gbm" = xyes; then
1254 if test "x$need_pci_id$have_pci_id" = xyesno; then
1255 AC_MSG_ERROR([gbm requires udev >= $LIBUDEV_REQUIRED or sysfs])
1258 if test "x$enable_dri" = xyes; then
1259 GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
1260 if test "x$enable_shared_glapi" = xno; then
1261 AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1264 # Strictly speaking libgbm does not require --enable-dri, although
1265 # both of its backends do. Thus one can build libgbm without any
1266 # backends if --disable-dri is set.
1267 # To avoid unnecessary complexity of checking if at least one backend
1268 # is available when building, just mandate --enable-dri.
1269 AC_MSG_ERROR([gbm requires --enable-dri])
1272 AM_CONDITIONAL(HAVE_GBM, test "x$enable_gbm" = xyes)
1273 if test "x$need_pci_id$have_libudev" = xyesyes; then
1274 GBM_PC_REQ_PRIV="libudev >= $LIBUDEV_REQUIRED"
1278 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1279 AC_SUBST([GBM_PC_REQ_PRIV])
1280 AC_SUBST([GBM_PC_LIB_PRIV])
1283 dnl EGL configuration
1287 if test "x$enable_egl" = xyes; then
1288 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS $PTHREAD_LIBS"
1290 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1292 if test "$enable_static" != yes; then
1293 if test "x$enable_dri" = xyes; then
1294 HAVE_EGL_DRIVER_DRI2=1
1299 AM_CONDITIONAL(HAVE_EGL, test "x$enable_egl" = xyes)
1300 AC_SUBST([EGL_LIB_DEPS])
1303 dnl XA configuration
1305 if test "x$enable_xa" = xyes; then
1306 if test "x$with_gallium_drivers" = xswrast; then
1308 Building xa requires at least one non swrast gallium driver.
1309 If you are looking to use libxatracker.so with the VMware driver,
1310 make sure to include svga in the gallium drivers list, apart from
1312 Example: ./configure --enable-xa --with-gallium-drivers=svga...])
1314 enable_gallium_loader=$enable_shared_pipe_drivers
1316 AM_CONDITIONAL(HAVE_ST_XA, test "x$enable_xa" = xyes)
1319 dnl OpenVG configuration
1323 if test "x$enable_openvg" = xyes; then
1324 if test "x$enable_egl" = xno; then
1325 AC_MSG_ERROR([cannot enable OpenVG without EGL])
1327 if test -z "$with_gallium_drivers"; then
1328 AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1331 AC_MSG_ERROR([Cannot enable OpenVG, because egl_gallium has been removed and
1332 OpenVG hasn't been integrated into standard libEGL yet])
1334 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1335 VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS $PTHREAD_LIBS"
1336 VG_PC_LIB_PRIV="-lm $CLOCK_LIB $PTHREAD_LIBS $DLOPEN_LIBS"
1337 AC_SUBST([VG_PC_LIB_PRIV])
1339 AM_CONDITIONAL(HAVE_OPENVG, test "x$enable_openvg" = xyes)
1342 dnl Gallium G3DVL configuration
1344 if test -n "$with_gallium_drivers" -a "x$with_gallium_drivers" != xswrast; then
1345 if test "x$enable_xvmc" = xauto; then
1346 PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no])
1349 if test "x$enable_vdpau" = xauto; then
1350 PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no])
1353 if test "x$enable_omx" = xauto; then
1354 PKG_CHECK_EXISTS([libomxil-bellagio], [enable_omx=yes], [enable_omx=no])
1357 if test "x$enable_va" = xauto; then
1358 PKG_CHECK_EXISTS([libva], [enable_va=yes], [enable_va=no])
1362 if test "x$enable_xvmc" = xyes; then
1363 PKG_CHECK_MODULES([XVMC], [xvmc >= $XVMC_REQUIRED x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
1364 enable_gallium_loader=$enable_shared_pipe_drivers
1366 AM_CONDITIONAL(HAVE_ST_XVMC, test "x$enable_xvmc" = xyes)
1368 if test "x$enable_vdpau" = xyes; then
1369 PKG_CHECK_MODULES([VDPAU], [vdpau >= $VDPAU_REQUIRED x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED],
1370 [VDPAU_LIBS="`$PKG_CONFIG --libs x11-xcb xcb xcb-dri2`"])
1371 enable_gallium_loader=$enable_shared_pipe_drivers
1373 AM_CONDITIONAL(HAVE_ST_VDPAU, test "x$enable_vdpau" = xyes)
1375 if test "x$enable_omx" = xyes; then
1376 PKG_CHECK_MODULES([OMX], [libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
1377 enable_gallium_loader=$enable_shared_pipe_drivers
1379 AM_CONDITIONAL(HAVE_ST_OMX, test "x$enable_omx" = xyes)
1381 if test "x$enable_va" = xyes; then
1382 PKG_CHECK_MODULES([VA], [libva >= 0.35.0 x11-xcb xcb-dri2 >= $XCBDRI2_REQUIRED],
1383 [VA_LIBS="`$PKG_CONFIG --libs x11-xcb xcb-dri2`"])
1384 enable_gallium_loader=$enable_shared_pipe_drivers
1386 AM_CONDITIONAL(HAVE_ST_VA, test "x$enable_va" = xyes)
1389 dnl OpenCL configuration
1392 AC_ARG_WITH([libclc-path],
1393 [AS_HELP_STRING([--with-libclc-path],
1394 [DEPRECATED: See http://dri.freedesktop.org/wiki/GalliumCompute#How_to_Install])],
1395 [LIBCLC_PATH="$withval"],
1398 if test -n "$LIBCLC_PATH"; then
1399 AC_MSG_ERROR([The --with-libclc-path option has been deprecated.
1400 Please review the updated build instructions for clover:
1401 http://dri.freedesktop.org/wiki/GalliumCompute])
1405 AC_ARG_WITH([clang-libdir],
1406 [AS_HELP_STRING([--with-clang-libdir],
1407 [Path to Clang libraries @<:@default=llvm-config --libdir@:>@])],
1408 [CLANG_LIBDIR="$withval"],
1411 PKG_CHECK_EXISTS([libclc], [have_libclc=yes], [have_libclc=no])
1412 AC_CHECK_LIB([elf], [elf_memory], [have_libelf=yes;ELF_LIB=-lelf])
1414 if test "x$enable_opencl" = xyes; then
1415 if test -z "$with_gallium_drivers"; then
1416 AC_MSG_ERROR([cannot enable OpenCL without Gallium])
1419 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 7; then
1420 AC_MSG_ERROR([gcc >= 4.7 is required to build clover])
1423 if test "x$have_libclc" = xno; then
1424 AC_MSG_ERROR([pkg-config cannot find libclc.pc which is required to build clover.
1425 Make sure the directory containing libclc.pc is specified in your
1426 PKG_CONFIG_PATH environment variable.
1427 By default libclc.pc is installed to /usr/local/share/pkgconfig/])
1429 LIBCLC_INCLUDEDIR=`$PKG_CONFIG --variable=includedir libclc`
1430 LIBCLC_LIBEXECDIR=`$PKG_CONFIG --variable=libexecdir libclc`
1431 AC_SUBST([LIBCLC_INCLUDEDIR])
1432 AC_SUBST([LIBCLC_LIBEXECDIR])
1435 # XXX: Use $enable_shared_pipe_drivers once converted to use static/shared pipe-drivers
1436 enable_gallium_loader=yes
1438 if test "x$enable_opencl_icd" = xyes; then
1439 OPENCL_LIBNAME="MesaOpenCL"
1441 OPENCL_LIBNAME="OpenCL"
1444 if test "x$have_libelf" != xyes; then
1445 AC_MSG_ERROR([Clover requires libelf])
1448 AM_CONDITIONAL(HAVE_CLOVER, test "x$enable_opencl" = xyes)
1449 AM_CONDITIONAL(HAVE_CLOVER_ICD, test "x$enable_opencl_icd" = xyes)
1450 AC_SUBST([OPENCL_LIBNAME])
1453 dnl Gallium configuration
1455 AM_CONDITIONAL(HAVE_GALLIUM, test -n "$with_gallium_drivers")
1457 AC_SUBST([LLVM_BINDIR])
1458 AC_SUBST([LLVM_CFLAGS])
1459 AC_SUBST([LLVM_CPPFLAGS])
1460 AC_SUBST([LLVM_CXXFLAGS])
1461 AC_SUBST([LLVM_LIBDIR])
1462 AC_SUBST([LLVM_LIBS])
1463 AC_SUBST([LLVM_LDFLAGS])
1464 AC_SUBST([LLVM_INCLUDEDIR])
1465 AC_SUBST([LLVM_VERSION])
1466 AC_SUBST([CLANG_RESOURCE_DIR])
1468 case "x$enable_opengl$enable_gles1$enable_gles2" in
1470 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1474 AC_SUBST([VG_LIB_DEPS])
1475 AC_SUBST([EGL_CLIENT_APIS])
1478 dnl EGL Platforms configuration
1480 AC_ARG_WITH([egl-platforms],
1481 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1482 [comma delimited native platforms libEGL supports, e.g.
1483 "x11,drm" @<:@default=auto@:>@])],
1484 [with_egl_platforms="$withval"],
1485 [if test "x$enable_egl" = xyes; then
1486 with_egl_platforms="x11"
1488 with_egl_platforms=""
1491 if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
1492 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1495 # Do per-EGL platform setups and checks
1496 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1497 for plat in $egl_platforms; do
1500 PKG_CHECK_MODULES([WAYLAND], [wayland-client >= $WAYLAND_REQUIRED wayland-server >= $WAYLAND_REQUIRED])
1502 WAYLAND_PREFIX=`$PKG_CONFIG --variable=prefix wayland-client`
1503 AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner],,
1504 [${WAYLAND_PREFIX}/bin$PATH_SEPARATOR$PATH])
1508 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED xcb-xfixes])
1512 test "x$enable_gbm" = "xno" &&
1513 AC_MSG_ERROR([EGL platform drm needs gbm])
1514 test "x$have_libdrm" != xyes &&
1515 AC_MSG_ERROR([EGL platform drm requires libdrm >= $LIBDRM_REQUIRED])
1518 android|fbdev|gdi|null)
1522 AC_MSG_ERROR([EGL platform '$plat' does not exist])
1526 case "$plat$need_pci_id$have_pci_id" in
1527 waylandyesno|drmyesno)
1528 AC_MSG_ERROR([cannot build $plat platform without udev >= $LIBUDEV_REQUIRED or sysfs]) ;;
1532 # libEGL wants to default to the first platform specified in
1533 # ./configure. parse that here.
1534 if test "x$egl_platforms" != "x"; then
1535 FIRST_PLATFORM_CAPS=`echo $egl_platforms | sed 's| .*||' | tr 'a-z' 'A-Z'`
1536 EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
1538 EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
1541 if echo "$egl_platforms" | grep -q 'x11'; then
1542 NEED_WINSYS_XLIB=yes
1544 AM_CONDITIONAL(HAVE_EGL_PLATFORM_X11, echo "$egl_platforms" | grep -q 'x11')
1545 AM_CONDITIONAL(HAVE_EGL_PLATFORM_WAYLAND, echo "$egl_platforms" | grep -q 'wayland')
1546 AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep -q 'drm')
1547 AM_CONDITIONAL(HAVE_EGL_PLATFORM_FBDEV, echo "$egl_platforms" | grep -q 'fbdev')
1548 AM_CONDITIONAL(HAVE_EGL_PLATFORM_NULL, echo "$egl_platforms" | grep -q 'null')
1550 AM_CONDITIONAL(HAVE_EGL_DRIVER_DRI2, test "x$HAVE_EGL_DRIVER_DRI2" != "x")
1552 AC_SUBST([EGL_NATIVE_PLATFORM])
1553 AC_SUBST([EGL_CFLAGS])
1555 # If we don't have the X11 platform, set this define so we don't try to include
1557 if ! echo "$egl_platforms" | grep -q 'x11'; then
1558 DEFINES="$DEFINES -DMESA_EGL_NO_X11_HEADERS"
1559 GL_PC_CFLAGS="$GL_PC_CFLAGS -DMESA_EGL_NO_X11_HEADERS"
1562 AC_ARG_WITH([max-width],
1563 [AS_HELP_STRING([--with-max-width=N],
1564 [Maximum framebuffer width (4096)])],
1565 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1566 AS_IF([test "${withval}" -gt "4096"],
1567 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1569 AC_ARG_WITH([max-height],
1570 [AS_HELP_STRING([--with-max-height=N],
1571 [Maximum framebuffer height (4096)])],
1572 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1573 AS_IF([test "${withval}" -gt "4096"],
1574 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1580 AC_ARG_ENABLE([gallium-llvm],
1581 [AS_HELP_STRING([--enable-gallium-llvm],
1582 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1583 [enable_gallium_llvm="$enableval"],
1584 [enable_gallium_llvm=auto])
1586 AC_ARG_ENABLE([llvm-shared-libs],
1587 [AS_HELP_STRING([--enable-llvm-shared-libs],
1588 [link with LLVM shared libraries @<:@default=enabled@:>@])],
1589 [enable_llvm_shared_libs="$enableval"],
1590 [enable_llvm_shared_libs=yes])
1592 AC_ARG_WITH([llvm-prefix],
1593 [AS_HELP_STRING([--with-llvm-prefix],
1594 [Prefix for LLVM installations in non-standard locations])],
1595 [llvm_prefix="$withval"],
1599 # Call this inside ` ` to get the return value.
1600 # $1 is the llvm-config command with arguments.
1601 strip_unwanted_llvm_flags() {
1602 # Use \> (marks the end of the word)
1604 -e 's/-DNDEBUG\>//g' \
1605 -e 's/-D_GNU_SOURCE\>//g' \
1606 -e 's/-pedantic\>//g' \
1607 -e 's/-Wcovered-switch-default\>//g' \
1611 -e 's/-Wcast-qual\>//g' \
1612 -e 's/-Woverloaded-virtual\>//g' \
1613 -e 's/-fcolor-diagnostics\>//g' \
1614 -e 's/-fdata-sections\>//g' \
1615 -e 's/-ffunction-sections\>//g' \
1616 -e 's/-fno-exceptions\>//g' \
1617 -e 's/-fomit-frame-pointer\>//g' \
1618 -e 's/-fvisibility-inlines-hidden\>//g' \
1620 -e 's/-fstack-protector-strong\>//g'
1624 if test -z "$with_gallium_drivers"; then
1625 enable_gallium_llvm=no
1627 if test "x$enable_gallium_llvm" = xauto; then
1629 i*86|x86_64|amd64) enable_gallium_llvm=yes;;
1632 if test "x$enable_gallium_llvm" = xyes; then
1633 if test -n "$llvm_prefix"; then
1634 AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no], ["$llvm_prefix/bin"])
1636 AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no])
1639 if test "x$LLVM_CONFIG" != xno; then
1640 LLVM_VERSION=`$LLVM_CONFIG --version | egrep -o '^[[0-9.]]+'`
1641 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1642 LLVM_BINDIR=`$LLVM_CONFIG --bindir`
1643 LLVM_CPPFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cppflags"`
1644 LLVM_CFLAGS=$LLVM_CPPFLAGS # CPPFLAGS seem to be sufficient
1645 LLVM_CXXFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cxxflags"`
1646 LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
1647 LLVM_LIBDIR=`$LLVM_CONFIG --libdir`
1649 AC_COMPUTE_INT([LLVM_VERSION_MAJOR], [LLVM_VERSION_MAJOR],
1650 [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
1651 AC_COMPUTE_INT([LLVM_VERSION_MINOR], [LLVM_VERSION_MINOR],
1652 [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
1654 LLVM_VERSION_PATCH=`echo $LLVM_VERSION | cut -d. -f3 | egrep -o '^[[0-9]]+'`
1655 if test -z "$LLVM_VERSION_PATCH"; then
1656 LLVM_VERSION_PATCH=0
1659 if test -n "${LLVM_VERSION_MAJOR}"; then
1660 LLVM_VERSION_INT="${LLVM_VERSION_MAJOR}0${LLVM_VERSION_MINOR}"
1662 LLVM_VERSION_INT=`echo $LLVM_VERSION | sed -e 's/\([[0-9]]\)\.\([[0-9]]\)/\10\2/g'`
1665 LLVM_REQUIRED_VERSION_MAJOR="3"
1666 LLVM_REQUIRED_VERSION_MINOR="3"
1667 if test "$LLVM_VERSION_INT" -lt "${LLVM_REQUIRED_VERSION_MAJOR}0${LLVM_REQUIRED_VERSION_MINOR}"; then
1668 AC_MSG_ERROR([LLVM $LLVM_REQUIRED_VERSION_MAJOR.$LLVM_REQUIRED_VERSION_MINOR or newer is required])
1671 LLVM_COMPONENTS="engine bitwriter"
1672 if $LLVM_CONFIG --components | grep -qw 'mcjit'; then
1673 LLVM_COMPONENTS="${LLVM_COMPONENTS} mcjit"
1676 if test "x$enable_opencl" = xyes; then
1677 LLVM_COMPONENTS="${LLVM_COMPONENTS} ipo linker instrumentation"
1678 # LLVM 3.3 >= 177971 requires IRReader
1679 if $LLVM_CONFIG --components | grep -qw 'irreader'; then
1680 LLVM_COMPONENTS="${LLVM_COMPONENTS} irreader"
1682 # LLVM 3.4 requires Option
1683 if $LLVM_CONFIG --components | grep -qw 'option'; then
1684 LLVM_COMPONENTS="${LLVM_COMPONENTS} option"
1686 # Current OpenCL/Clover and LLVM 3.5 require ObjCARCOpts and ProfileData
1687 if $LLVM_CONFIG --components | grep -qw 'objcarcopts'; then
1688 LLVM_COMPONENTS="${LLVM_COMPONENTS} objcarcopts"
1690 if $LLVM_CONFIG --components | grep -qw 'profiledata'; then
1691 LLVM_COMPONENTS="${LLVM_COMPONENTS} profiledata"
1694 DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT -DLLVM_VERSION_PATCH=$LLVM_VERSION_PATCH"
1697 dnl Check for Clang internal headers
1698 if test "x$enable_opencl" = xyes; then
1699 if test -z "$CLANG_LIBDIR"; then
1700 CLANG_LIBDIR=${LLVM_LIBDIR}
1702 CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION}
1703 AS_IF([test ! -f "$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.])])
1714 if test "x$enable_opencl" = xyes; then
1715 AC_MSG_ERROR([cannot enable OpenCL without LLVM])
1719 dnl Directory for XVMC libs
1720 AC_ARG_WITH([xvmc-libdir],
1721 [AS_HELP_STRING([--with-xvmc-libdir=DIR],
1722 [directory for the XVMC libraries @<:@default=${libdir}@:>@])],
1723 [XVMC_LIB_INSTALL_DIR="$withval"],
1724 [XVMC_LIB_INSTALL_DIR='${libdir}'])
1725 AC_SUBST([XVMC_LIB_INSTALL_DIR])
1730 if test "x$enable_gallium_tests" = xyes; then
1731 # XXX: Use $enable_shared_pipe_drivers once converted to use static/shared pipe-drivers
1732 enable_gallium_loader=yes
1734 AM_CONDITIONAL(HAVE_GALLIUM_TESTS, test "x$enable_gallium_tests" = xyes)
1736 dnl Directory for VDPAU libs
1737 AC_ARG_WITH([vdpau-libdir],
1738 [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1739 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1740 [VDPAU_LIB_INSTALL_DIR="$withval"],
1741 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1742 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
1744 dnl Directory for OMX libs
1746 AC_ARG_WITH([omx-libdir],
1747 [AS_HELP_STRING([--with-omx-libdir=DIR],
1748 [directory for the OMX libraries])],
1749 [OMX_LIB_INSTALL_DIR="$withval"],
1750 [OMX_LIB_INSTALL_DIR=`$PKG_CONFIG --define-variable=libdir=\$libdir --variable=pluginsdir libomxil-bellagio`])
1751 AC_SUBST([OMX_LIB_INSTALL_DIR])
1753 dnl Directory for VA libs
1755 AC_ARG_WITH([va-libdir],
1756 [AS_HELP_STRING([--with-va-libdir=DIR],
1757 [directory for the VA libraries @<:@${libdir}/dri@:>@])],
1758 [VA_LIB_INSTALL_DIR="$withval"],
1759 [VA_LIB_INSTALL_DIR="${libdir}/dri"])
1760 AC_SUBST([VA_LIB_INSTALL_DIR])
1763 dnl Gallium helper functions
1765 gallium_require_drm() {
1766 if test "x$have_libdrm" != xyes; then
1767 AC_MSG_ERROR([$1 requires libdrm >= $LIBDRM_REQUIRED])
1771 gallium_require_llvm() {
1772 if test "x$MESA_LLVM" = x0; then
1773 case "$host" in *gnux32) return;; esac
1775 i*86|x86_64|amd64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1780 gallium_require_drm_loader() {
1781 if test "x$enable_gallium_loader" = xyes; then
1782 if test "x$need_pci_id$have_pci_id" = xyesno; then
1783 AC_MSG_ERROR([Gallium drm loader requires libudev >= $LIBUDEV_REQUIRED or sysfs])
1785 enable_gallium_drm_loader=yes
1787 if test "x$enable_va" = xyes && test "x$7" != x; then
1788 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $7"
1793 case "$with_egl_platforms" in
1797 AC_MSG_ERROR([--with-egl-platforms=drm is required to build the $1 driver.])
1800 if test "x$enable_gbm" != xyes; then
1801 AC_MSG_ERROR([--enable-gbm is required to build the $1 driver.])
1805 radeon_llvm_check() {
1806 if test "x$enable_gallium_llvm" != "xyes"; then
1807 AC_MSG_ERROR([--enable-gallium-llvm is required when building $1])
1809 LLVM_REQUIRED_VERSION_MAJOR="3"
1810 LLVM_REQUIRED_VERSION_MINOR="4"
1811 LLVM_REQUIRED_VERSION_PATCH="2"
1812 if test "${LLVM_VERSION_INT}${LLVM_VERSION_PATCH}" -lt "${LLVM_REQUIRED_VERSION_MAJOR}0${LLVM_REQUIRED_VERSION_MINOR}${LLVM_REQUIRED_VERSION_PATCH}"; then
1813 AC_MSG_ERROR([LLVM $LLVM_REQUIRED_VERSION_MAJOR.$LLVM_REQUIRED_VERSION_MINOR.$LLVM_REQUIRED_VERSION_PATCH or newer is required for $1])
1815 if test true && $LLVM_CONFIG --targets-built | grep -qvw 'R600' ; then
1816 AC_MSG_ERROR([LLVM R600 Target not enabled. You can enable it when building the LLVM
1817 sources with the --enable-experimental-targets=R600
1820 LLVM_COMPONENTS="${LLVM_COMPONENTS} r600 bitreader ipo"
1821 NEED_RADEON_LLVM=yes
1822 if test "x$have_libelf" != xyes; then
1823 AC_MSG_ERROR([$1 requires libelf when using llvm])
1827 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
1828 if test -n "$with_gallium_drivers"; then
1829 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1830 for driver in $gallium_drivers; do
1833 HAVE_GALLIUM_SVGA=yes
1834 gallium_require_drm "svga"
1835 gallium_require_drm_loader
1838 HAVE_GALLIUM_I915=yes
1839 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1840 gallium_require_drm "Gallium i915"
1841 gallium_require_drm_loader
1844 HAVE_GALLIUM_ILO=yes
1845 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1846 gallium_require_drm "Gallium i965/ilo"
1847 gallium_require_drm_loader
1850 HAVE_GALLIUM_R300=yes
1851 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1852 gallium_require_drm "Gallium R300"
1853 gallium_require_drm_loader
1854 gallium_require_llvm "Gallium R300"
1857 HAVE_GALLIUM_R600=yes
1858 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1859 gallium_require_drm "Gallium R600"
1860 gallium_require_drm_loader
1861 if test "x$enable_r600_llvm" = xyes -o "x$enable_opencl" = xyes; then
1862 radeon_llvm_check "r600g"
1863 LLVM_COMPONENTS="${LLVM_COMPONENTS} bitreader asmparser"
1865 if test "x$enable_r600_llvm" = xyes; then
1866 USE_R600_LLVM_COMPILER=yes;
1868 if test "x$enable_opencl" = xyes; then
1869 LLVM_COMPONENTS="${LLVM_COMPONENTS} bitreader asmparser"
1873 HAVE_GALLIUM_RADEONSI=yes
1874 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1875 gallium_require_drm "radeonsi"
1876 gallium_require_drm_loader
1877 radeon_llvm_check "radeonsi"
1878 require_egl_drm "radeonsi"
1881 HAVE_GALLIUM_NOUVEAU=yes
1882 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1883 gallium_require_drm "nouveau"
1884 gallium_require_drm_loader
1887 HAVE_GALLIUM_FREEDRENO=yes
1888 PKG_CHECK_MODULES([FREEDRENO], [libdrm_freedreno >= $LIBDRM_FREEDRENO_REQUIRED])
1889 gallium_require_drm "freedreno"
1890 gallium_require_drm_loader
1893 HAVE_GALLIUM_SOFTPIPE=yes
1894 if test "x$MESA_LLVM" = x1; then
1895 HAVE_GALLIUM_LLVMPIPE=yes
1899 HAVE_GALLIUM_VC4=yes
1900 gallium_require_drm "vc4"
1901 gallium_require_drm_loader
1904 i?86 | x86_64 | amd64)
1905 USE_VC4_SIMULATOR=yes
1910 AC_MSG_ERROR([Unknown Gallium driver: $driver])
1916 dnl Set LLVM_LIBS - This is done after the driver configuration so
1917 dnl that drivers can add additional components to LLVM_COMPONENTS.
1918 dnl Previously, gallium drivers were updating LLVM_LIBS directly
1919 dnl by calling llvm-config --libs ${DRIVER_LLVM_COMPONENTS}, but
1920 dnl this was causing the same libraries to be appear multiple times
1923 if test "x$MESA_LLVM" != x0; then
1925 LLVM_LIBS="`$LLVM_CONFIG --libs ${LLVM_COMPONENTS}`"
1927 if test "x$enable_llvm_shared_libs" = xyes; then
1928 dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
1929 LLVM_SO_NAME=LLVM-`$LLVM_CONFIG --version`
1930 AS_IF([test -f "$LLVM_LIBDIR/lib$LLVM_SO_NAME.so"], [llvm_have_one_so=yes])
1932 if test "x$llvm_have_one_so" = xyes; then
1933 dnl LLVM was built using auto*, so there is only one shared object.
1934 LLVM_LIBS="-l$LLVM_SO_NAME"
1936 dnl If LLVM was built with CMake, there will be one shared object per
1938 AS_IF([test ! -f "$LLVM_LIBDIR/libLLVMTarget.so"],
1939 [AC_MSG_ERROR([Could not find llvm shared libraries:
1940 Please make sure you have built llvm with the --enable-shared option
1941 and that your llvm libraries are installed in $LLVM_LIBDIR
1942 If you have installed your llvm libraries to a different directory you
1943 can use the --with-llvm-prefix= configure flag to specify this directory.
1944 NOTE: Mesa is attempting to use llvm shared libraries by default.
1945 If you do not want to build with llvm shared libraries and instead want to
1946 use llvm static libraries then add --disable-llvm-shared-libs to your configure
1947 invocation and rebuild.])])
1949 dnl We don't need to update LLVM_LIBS in this case because the LLVM
1950 dnl install uses a shared object for each component and we have
1951 dnl already added all of these objects to LLVM_LIBS.
1954 AC_MSG_WARN([Building mesa with statically linked LLVM may cause compilation issues])
1955 dnl We need to link to llvm system libs when using static libs
1956 dnl However, only llvm 3.5+ provides --system-libs
1957 if test $LLVM_VERSION_MAJOR -eq 3 -a $LLVM_VERSION_MINOR -ge 5; then
1958 LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --system-libs`"
1963 AM_CONDITIONAL(HAVE_GALLIUM_SVGA, test "x$HAVE_GALLIUM_SVGA" = xyes)
1964 AM_CONDITIONAL(HAVE_GALLIUM_I915, test "x$HAVE_GALLIUM_I915" = xyes)
1965 AM_CONDITIONAL(HAVE_GALLIUM_ILO, test "x$HAVE_GALLIUM_ILO" = xyes)
1966 AM_CONDITIONAL(HAVE_GALLIUM_R300, test "x$HAVE_GALLIUM_R300" = xyes)
1967 AM_CONDITIONAL(HAVE_GALLIUM_R600, test "x$HAVE_GALLIUM_R600" = xyes)
1968 AM_CONDITIONAL(HAVE_GALLIUM_RADEONSI, test "x$HAVE_GALLIUM_RADEONSI" = xyes)
1969 AM_CONDITIONAL(HAVE_GALLIUM_RADEON_COMMON, test "x$HAVE_GALLIUM_R600" = xyes -o \
1970 "x$HAVE_GALLIUM_RADEONSI" = xyes)
1971 AM_CONDITIONAL(HAVE_GALLIUM_NOUVEAU, test "x$HAVE_GALLIUM_NOUVEAU" = xyes)
1972 AM_CONDITIONAL(HAVE_GALLIUM_FREEDRENO, test "x$HAVE_GALLIUM_FREEDRENO" = xyes)
1973 AM_CONDITIONAL(HAVE_GALLIUM_SOFTPIPE, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes)
1974 AM_CONDITIONAL(HAVE_GALLIUM_LLVMPIPE, test "x$HAVE_GALLIUM_LLVMPIPE" = xyes)
1975 AM_CONDITIONAL(HAVE_GALLIUM_VC4, test "x$HAVE_GALLIUM_VC4" = xyes)
1977 AM_CONDITIONAL(HAVE_GALLIUM_STATIC_TARGETS, test "x$enable_shared_pipe_drivers" = xno)
1979 # NOTE: anything using xcb or other client side libs ends up in separate
1980 # _CLIENT variables. The pipe loader is built in two variants,
1981 # one that is standalone and does not link any x client libs (for
1982 # use by XA tracker in particular, but could be used in any case
1983 # where communication with xserver is not desired).
1984 if test "x$enable_gallium_loader" = xyes; then
1985 if test "x$NEED_WINSYS_XLIB" = xyes; then
1986 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_XLIB"
1989 if test "x$enable_dri" = xyes; then
1990 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRI"
1993 if test "x$enable_gallium_drm_loader" = xyes; then
1994 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRM"
1995 PKG_CHECK_MODULES([GALLIUM_PIPE_LOADER_XCB], [xcb xcb-dri2],
1996 pipe_loader_have_xcb=yes, pipe_loader_have_xcb=no)
1997 if test "x$pipe_loader_have_xcb" = xyes; then
1998 GALLIUM_PIPE_LOADER_CLIENT_DEFINES="$GALLIUM_PIPE_LOADER_CLIENT_DEFINES -DHAVE_PIPE_LOADER_XCB"
1999 GALLIUM_PIPE_LOADER_CLIENT_LIBS="$GALLIUM_PIPE_LOADER_CLIENT_LIBS $GALLIUM_PIPE_LOADER_XCB_LIBS $LIBDRM_LIBS"
2003 GALLIUM_PIPE_LOADER_CLIENT_DEFINES="$GALLIUM_PIPE_LOADER_CLIENT_DEFINES $GALLIUM_PIPE_LOADER_DEFINES"
2004 GALLIUM_PIPE_LOADER_CLIENT_LIBS="$GALLIUM_PIPE_LOADER_CLIENT_LIBS $GALLIUM_PIPE_LOADER_LIBS"
2006 AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
2007 AC_SUBST([GALLIUM_PIPE_LOADER_LIBS])
2008 AC_SUBST([GALLIUM_PIPE_LOADER_CLIENT_DEFINES])
2009 AC_SUBST([GALLIUM_PIPE_LOADER_CLIENT_LIBS])
2012 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
2013 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
2014 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
2015 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
2016 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
2017 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
2019 AM_CONDITIONAL(NEED_RADEON_DRM_WINSYS, test "x$HAVE_GALLIUM_R300" = xyes -o \
2020 "x$HAVE_GALLIUM_R600" = xyes -o \
2021 "x$HAVE_GALLIUM_RADEONSI" = xyes)
2022 AM_CONDITIONAL(NEED_WINSYS_XLIB, test "x$NEED_WINSYS_XLIB" = xyes)
2023 AM_CONDITIONAL(NEED_RADEON_LLVM, test x$NEED_RADEON_LLVM = xyes)
2024 AM_CONDITIONAL(USE_R600_LLVM_COMPILER, test x$USE_R600_LLVM_COMPILER = xyes)
2025 AM_CONDITIONAL(HAVE_LOADER_GALLIUM, test x$enable_gallium_loader = xyes)
2026 AM_CONDITIONAL(HAVE_DRM_LOADER_GALLIUM, test x$enable_gallium_drm_loader = xyes)
2027 AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
2028 AM_CONDITIONAL(HAVE_MESA_LLVM, test x$MESA_LLVM = x1)
2029 AM_CONDITIONAL(USE_VC4_SIMULATOR, test x$USE_VC4_SIMULATOR = xyes)
2030 if test "x$USE_VC4_SIMULATOR" = xyes -a "x$HAVE_GALLIUM_ILO" = xyes; then
2031 AC_MSG_ERROR([VC4 simulator on x86 replaces i965 driver build, so ilo must be disabled.])
2036 AM_CONDITIONAL(DRICOMMON_NEED_LIBDRM, test "x$DRICOMMON_NEED_LIBDRM" = xyes)
2037 AM_CONDITIONAL(HAVE_LIBDRM, test "x$have_libdrm" = xyes)
2038 AM_CONDITIONAL(HAVE_X11_DRIVER, test "x$enable_xlib_glx" = xyes)
2039 AM_CONDITIONAL(HAVE_OSMESA, test "x$enable_osmesa" = xyes)
2040 AM_CONDITIONAL(HAVE_GALLIUM_OSMESA, test "x$enable_gallium_osmesa" = xyes)
2042 AM_CONDITIONAL(HAVE_X86_ASM, test "x$asm_arch" = xx86 -o "x$asm_arch" = xx86_64)
2043 AM_CONDITIONAL(HAVE_X86_64_ASM, test "x$asm_arch" = xx86_64)
2044 AM_CONDITIONAL(HAVE_SPARC_ASM, test "x$asm_arch" = xsparc)
2046 AC_SUBST([VDPAU_MAJOR], 1)
2047 AC_SUBST([VDPAU_MINOR], 0)
2049 VA_MAJOR=`$PKG_CONFIG --modversion libva | $SED -n 's/\([[^\.]]*\)\..*$/\1/p'`
2050 VA_MINOR=`$PKG_CONFIG --modversion libva | $SED -n 's/.*\.\(.*\)\..*$/\1/p'`
2051 AC_SUBST([VA_MAJOR], $VA_MAJOR)
2052 AC_SUBST([VA_MINOR], $VA_MINOR)
2054 AC_SUBST([XVMC_MAJOR], 1)
2055 AC_SUBST([XVMC_MINOR], 0)
2057 XA_HEADER="$srcdir/src/gallium/state_trackers/xa/xa_tracker.h"
2058 XA_MAJOR=`grep "#define XA_TRACKER_VERSION_MAJOR" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_MAJOR //'`
2059 XA_MINOR=`grep "#define XA_TRACKER_VERSION_MINOR" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_MINOR //'`
2060 XA_TINY=`grep "#define XA_TRACKER_VERSION_PATCH" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_PATCH //'`
2062 AC_SUBST([XA_MAJOR], $XA_MAJOR)
2063 AC_SUBST([XA_MINOR], $XA_MINOR)
2064 AC_SUBST([XA_TINY], $XA_TINY)
2065 AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_TINY")
2067 dnl Restore LDFLAGS and CPPFLAGS
2068 LDFLAGS="$_SAVE_LDFLAGS"
2069 CPPFLAGS="$_SAVE_CPPFLAGS"
2071 dnl Suppress clang's warnings about unused CFLAGS and CXXFLAGS
2072 if test "x$acv_mesa_CLANG" = xyes; then
2073 CFLAGS="$CFLAGS -Qunused-arguments"
2074 CXXFLAGS="$CXXFLAGS -Qunused-arguments"
2077 dnl Add user CFLAGS and CXXFLAGS
2078 CFLAGS="$CFLAGS $USER_CFLAGS"
2079 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
2081 dnl Substitute the config
2082 AC_CONFIG_FILES([Makefile
2084 src/egl/drivers/dri2/Makefile
2085 src/egl/main/Makefile
2087 src/egl/wayland/Makefile
2088 src/egl/wayland/wayland-drm/Makefile
2089 src/egl/wayland/wayland-egl/Makefile
2090 src/egl/wayland/wayland-egl/wayland-egl.pc
2091 src/gallium/Makefile
2092 src/gallium/auxiliary/Makefile
2093 src/gallium/auxiliary/pipe-loader/Makefile
2094 src/gallium/drivers/freedreno/Makefile
2095 src/gallium/drivers/galahad/Makefile
2096 src/gallium/drivers/i915/Makefile
2097 src/gallium/drivers/identity/Makefile
2098 src/gallium/drivers/ilo/Makefile
2099 src/gallium/drivers/llvmpipe/Makefile
2100 src/gallium/drivers/noop/Makefile
2101 src/gallium/drivers/nouveau/Makefile
2102 src/gallium/drivers/r300/Makefile
2103 src/gallium/drivers/r600/Makefile
2104 src/gallium/drivers/radeon/Makefile
2105 src/gallium/drivers/radeonsi/Makefile
2106 src/gallium/drivers/rbug/Makefile
2107 src/gallium/drivers/softpipe/Makefile
2108 src/gallium/drivers/svga/Makefile
2109 src/gallium/drivers/trace/Makefile
2110 src/gallium/drivers/vc4/Makefile
2111 src/gallium/drivers/vc4/kernel/Makefile
2112 src/gallium/state_trackers/clover/Makefile
2113 src/gallium/state_trackers/dri/Makefile
2114 src/gallium/state_trackers/glx/xlib/Makefile
2115 src/gallium/state_trackers/omx/Makefile
2116 src/gallium/state_trackers/osmesa/Makefile
2117 src/gallium/state_trackers/va/Makefile
2118 src/gallium/state_trackers/vdpau/Makefile
2119 src/gallium/state_trackers/vega/Makefile
2120 src/gallium/state_trackers/xa/Makefile
2121 src/gallium/state_trackers/xvmc/Makefile
2122 src/gallium/targets/dri/Makefile
2123 src/gallium/targets/egl-static/Makefile
2124 src/gallium/targets/gbm/Makefile
2125 src/gallium/targets/libgl-xlib/Makefile
2126 src/gallium/targets/omx/Makefile
2127 src/gallium/targets/opencl/Makefile
2128 src/gallium/targets/osmesa/Makefile
2129 src/gallium/targets/osmesa/osmesa.pc
2130 src/gallium/targets/pipe-loader/Makefile
2131 src/gallium/targets/va/Makefile
2132 src/gallium/targets/vdpau/Makefile
2133 src/gallium/targets/xa/Makefile
2134 src/gallium/targets/xa/xatracker.pc
2135 src/gallium/targets/xvmc/Makefile
2136 src/gallium/tests/trivial/Makefile
2137 src/gallium/tests/unit/Makefile
2138 src/gallium/winsys/freedreno/drm/Makefile
2139 src/gallium/winsys/i915/drm/Makefile
2140 src/gallium/winsys/intel/drm/Makefile
2141 src/gallium/winsys/nouveau/drm/Makefile
2142 src/gallium/winsys/radeon/drm/Makefile
2143 src/gallium/winsys/svga/drm/Makefile
2144 src/gallium/winsys/sw/dri/Makefile
2145 src/gallium/winsys/sw/fbdev/Makefile
2146 src/gallium/winsys/sw/kms-dri/Makefile
2147 src/gallium/winsys/sw/null/Makefile
2148 src/gallium/winsys/sw/wayland/Makefile
2149 src/gallium/winsys/sw/wrapper/Makefile
2150 src/gallium/winsys/sw/xlib/Makefile
2151 src/gallium/winsys/vc4/drm/Makefile
2156 src/glx/apple/Makefile
2157 src/glx/tests/Makefile
2161 src/mapi/es1api/glesv1_cm.pc
2162 src/mapi/es2api/glesv2.pc
2163 src/mapi/glapi/gen/Makefile
2164 src/mapi/vgapi/Makefile
2165 src/mapi/vgapi/vg.pc
2168 src/mesa/drivers/dri/dri.pc
2169 src/mesa/drivers/dri/common/Makefile
2170 src/mesa/drivers/dri/common/xmlpool/Makefile
2171 src/mesa/drivers/dri/i915/Makefile
2172 src/mesa/drivers/dri/i965/Makefile
2173 src/mesa/drivers/dri/Makefile
2174 src/mesa/drivers/dri/nouveau/Makefile
2175 src/mesa/drivers/dri/r200/Makefile
2176 src/mesa/drivers/dri/radeon/Makefile
2177 src/mesa/drivers/dri/swrast/Makefile
2178 src/mesa/drivers/osmesa/Makefile
2179 src/mesa/drivers/osmesa/osmesa.pc
2180 src/mesa/drivers/x11/Makefile
2181 src/mesa/main/tests/Makefile
2183 src/util/tests/hash_table/Makefile])
2188 dnl Output some configuration info for the user
2191 echo " prefix: $prefix"
2192 echo " exec_prefix: $exec_prefix"
2193 echo " libdir: $libdir"
2194 echo " includedir: $includedir"
2198 echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
2199 echo " OpenVG: $enable_openvg"
2203 case "x$enable_osmesa$enable_gallium_osmesa" in
2205 echo " OSMesa: lib$OSMESA_LIB (Gallium)"
2208 echo " OSMesa: lib$OSMESA_LIB"
2216 if test "x$enable_dri" != xno; then
2217 echo " DRI platform: $dri_platform"
2218 if test -z "$DRI_DIRS"; then
2219 echo " DRI drivers: no"
2221 echo " DRI drivers: $DRI_DIRS"
2223 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
2226 case "x$enable_glx$enable_xlib_glx" in
2228 echo " GLX: Xlib-based"
2231 echo " GLX: DRI-based"
2234 echo " GLX: $enable_glx"
2240 echo " EGL: $enable_egl"
2241 if test "$enable_egl" = yes; then
2242 echo " EGL platforms: $egl_platforms"
2245 if test "x$HAVE_EGL_DRIVER_DRI2" != "x"; then
2246 egl_drivers="$egl_drivers builtin:egl_dri2"
2249 echo " EGL drivers: $egl_drivers"
2253 if test "x$MESA_LLVM" = x1; then
2255 echo " llvm-config: $LLVM_CONFIG"
2256 echo " llvm-version: $LLVM_VERSION"
2262 if test -n "$with_gallium_drivers"; then
2263 echo " Gallium: yes"
2271 echo " Shared libs: $enable_shared"
2272 echo " Static libs: $enable_static"
2273 echo " Shared-glapi: $enable_shared_glapi"
2275 dnl Compiler options
2276 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2277 cflags=`echo $CFLAGS | \
2278 $SED 's/^ *//;s/ */ /;s/ *$//'`
2279 cxxflags=`echo $CXXFLAGS | \
2280 $SED 's/^ *//;s/ */ /;s/ *$//'`
2281 defines=`echo $DEFINES | $SED 's/^ *//;s/ */ /;s/ *$//'`
2283 echo " CFLAGS: $cflags"
2284 echo " CXXFLAGS: $cxxflags"
2285 echo " Macros: $defines"
2287 if test "x$MESA_LLVM" = x1; then
2288 echo " LLVM_CFLAGS: $LLVM_CFLAGS"
2289 echo " LLVM_CXXFLAGS: $LLVM_CXXFLAGS"
2290 echo " LLVM_CPPFLAGS: $LLVM_CPPFLAGS"
2293 echo " PYTHON2: $PYTHON2"
2296 echo " Run '${MAKE-make}' to build Mesa"