1 dnl Process this file with autoconf to create configure.
5 dnl Tell the user about autoconf.html in the --help output
6 m4_divert_once([HELP_END], [
7 See docs/autoconf.html for more details on the options for Mesa.])
9 AC_INIT([Mesa], [9.1.0],
10 [https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa])
11 AC_CONFIG_AUX_DIR([bin])
12 AC_CONFIG_MACRO_DIR([m4])
14 AM_INIT_AUTOMAKE([foreign])
16 dnl http://people.gnome.org/~walters/docs/build-api.txt
17 dnl We don't support srcdir != builddir.
18 echo \#buildapi-variable-no-builddir >/dev/null
20 # Support silent build rules, requires at least automake-1.11. Disable
21 # by either passing --disable-silent-rules to configure or passing V=1
23 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
25 m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
27 dnl Set internal versions
29 AC_SUBST([OSMESA_VERSION])
31 dnl Versions for external dependencies
32 LIBDRM_REQUIRED=2.4.24
33 LIBDRM_RADEON_REQUIRED=2.4.40
34 LIBDRM_INTEL_REQUIRED=2.4.38
35 LIBDRM_NVVIEUX_REQUIRED=2.4.33
36 LIBDRM_NOUVEAU_REQUIRED=2.4.33
37 DRI2PROTO_REQUIRED=2.6
38 GLPROTO_REQUIRED=1.4.14
39 LIBDRM_XORG_REQUIRED=2.4.24
40 LIBKMS_XORG_REQUIRED=1.0.0
50 AC_CHECK_PROGS([MAKE], [gmake make])
51 AC_CHECK_PROGS([PYTHON2], [python2 python])
56 LT_INIT([disable-static])
59 AC_PATH_PROG([YACC_INST], $YACC)
60 if test ! -f "$srcdir/src/glsl/glcpp/glcpp-parse.c"; then
61 if test -z "$YACC_INST"; then
62 AC_MSG_ERROR([yacc not found - unable to compile glcpp-parse.y])
67 AC_PATH_PROG([PERL], [perl])
69 AC_CHECK_PROG(INDENT, indent, indent, cat)
70 if test "x$INDENT" != "xcat"; then
71 AC_SUBST(INDENT_FLAGS, '-i4 -nut -br -brs -npcs -ce -TGLubyte -TGLbyte -TBool')
76 dnl We need a POSIX shell for parts of the build. Assume we have one
80 # Solaris /bin/sh is too old/non-POSIX compliant
81 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
86 dnl clang is mostly GCC-compatible, but its version is much lower,
87 dnl so we have to check for it.
88 AC_MSG_CHECKING([if compiling with clang])
91 [AC_LANG_PROGRAM([], [[
96 [acv_mesa_CLANG=yes], [acv_mesa_CLANG=no])
98 AC_MSG_RESULT([$acv_mesa_CLANG])
100 dnl If we're using GCC, make sure that it is at least version 3.3.0. Older
101 dnl versions are explictly not supported.
102 if test "x$GCC" = xyes -a "x$acv_mesa_CLANG" = xno; then
103 AC_MSG_CHECKING([whether gcc version is sufficient])
107 GCC_VERSION=`$CC -dumpversion`
108 if test $? -eq 0; then
109 GCC_VERSION_MAJOR=`echo $GCC_VERSION | cut -d. -f1`
110 GCC_VERSION_MINOR=`echo $GCC_VERSION | cut -d. -f2`
113 if test $GCC_VERSION_MAJOR -lt 3 -o $GCC_VERSION_MAJOR -eq 3 -a $GCC_VERSION_MINOR -lt 3 ; then
115 AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.])
121 dnl Make sure the pkg-config macros are defined
122 m4_ifndef([PKG_PROG_PKG_CONFIG],
123 [m4_fatal([Could not locate the pkg-config autoconf macros.
124 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
125 are in a different location, try setting the environment variable
126 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
127 PKG_PROG_PKG_CONFIG()
129 dnl LIB_DIR - library basename
130 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
133 dnl Cache LDFLAGS and CPPFLAGS so we can add to them and restore later
134 _SAVE_LDFLAGS="$LDFLAGS"
135 _SAVE_CPPFLAGS="$CPPFLAGS"
137 dnl build host compiler macros
139 AC_SUBST([DEFINES_FOR_BUILD])
142 DEFINES_FOR_BUILD="$DEFINES_FOR_BUILD -D_GNU_SOURCE"
145 DEFINES_FOR_BUILD="$DEFINES_FOR_BUILD -DSVR4"
148 DEFINES_FOR_BUILD="$DEFINES_FOR_BUILD"
157 DEFINES="$DEFINES -D_GNU_SOURCE -DHAVE_PTHREAD"
160 DEFINES="$DEFINES -DHAVE_PTHREAD -DSVR4"
163 DEFINES="$DEFINES -DHAVE_PTHREAD"
167 dnl Add flags for gcc and g++
168 if test "x$GCC" = xyes; then
171 CFLAGS="$CFLAGS -Wall -std=gnu99"
174 CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD -Wall -std=c99"
175 CFLAGS="$CFLAGS -Wall -std=c99"
179 # Enable -Werror=implicit-function-declaration and
180 # -Werror=missing-prototypes, if available, or otherwise, just
181 # -Wmissing-prototypes. This is particularly useful to avoid
182 # generating a loadable driver module that has undefined symbols.
183 save_CFLAGS="$CFLAGS"
184 AC_MSG_CHECKING([whether $CC supports -Werror=missing-prototypes])
185 CFLAGS="$CFLAGS -Werror=implicit-function-declaration"
186 CFLAGS="$CFLAGS -Werror=missing-prototypes"
187 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
188 AC_MSG_RESULT([yes]),
189 [CFLAGS="$save_CFLAGS -Wmissing-prototypes";
190 AC_MSG_RESULT([no])]);
192 # Enable -fvisibility=hidden if using a gcc that supports it
193 save_CFLAGS="$CFLAGS"
194 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
195 VISIBILITY_CFLAGS="-fvisibility=hidden"
196 CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
197 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
198 [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
200 # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
203 # Work around aliasing bugs - developers should comment this out
204 CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD -fno-strict-aliasing"
205 CFLAGS="$CFLAGS -fno-strict-aliasing"
207 # gcc's builtin memcmp is slower than glibc's
208 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
209 CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD -fno-builtin-memcmp"
210 CFLAGS="$CFLAGS -fno-builtin-memcmp"
212 if test "x$GXX" = xyes; then
213 CXXFLAGS_FOR_BUILD="$CXXFLAGS_FOR_BUILD -Wall"
214 CXXFLAGS="$CXXFLAGS -Wall"
216 # Enable -fvisibility=hidden if using a gcc that supports it
217 save_CXXFLAGS="$CXXFLAGS"
218 AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
219 VISIBILITY_CXXFLAGS="-fvisibility=hidden"
220 CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
222 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
223 [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
226 # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
227 CXXFLAGS=$save_CXXFLAGS
229 # Work around aliasing bugs - developers should comment this out
230 CXXFLAGS_FOR_BUILD="$CXXFLAGS_FOR_BUILD -fno-strict-aliasing"
231 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
233 # gcc's builtin memcmp is slower than glibc's
234 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
235 CXXFLAGS_FOR_BUILD="$CXXFLAGS_FOR_BUILD -fno-builtin-memcmp"
236 CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp"
239 dnl even if the compiler appears to support it, using visibility attributes isn't
240 dnl going to do anything useful currently on cygwin apart from emit lots of warnings
244 VISIBILITY_CXXFLAGS=""
248 AC_SUBST([VISIBILITY_CFLAGS])
249 AC_SUBST([VISIBILITY_CXXFLAGS])
252 dnl Hacks to enable 32 or 64 bit build
254 AC_ARG_ENABLE([32-bit],
255 [AS_HELP_STRING([--enable-32-bit],
256 [build 32-bit libraries @<:@default=auto@:>@])],
257 [enable_32bit="$enableval"],
260 if test "x$enable_32bit" = xyes; then
261 if test "x$GCC" = xyes; then
262 CFLAGS="$CFLAGS -m32"
263 CCASFLAGS="$CCASFLAGS -m32"
265 if test "x$GXX" = xyes; then
266 CXXFLAGS="$CXXFLAGS -m32"
269 AC_ARG_ENABLE([64-bit],
270 [AS_HELP_STRING([--enable-64-bit],
271 [build 64-bit libraries @<:@default=auto@:>@])],
272 [enable_64bit="$enableval"],
275 if test "x$enable_64bit" = xyes; then
276 if test "x$GCC" = xyes; then
277 CFLAGS="$CFLAGS -m64"
279 if test "x$GXX" = xyes; then
280 CXXFLAGS="$CXXFLAGS -m64"
284 dnl Can't have static and shared libraries, default to static if user
285 dnl explicitly requested. If both disabled, set to static since shared
286 dnl was explicitly requested.
287 case "x$enable_static$enable_shared" in
289 AC_MSG_WARN([Cannot build static and shared libraries, disabling shared])
293 AC_MSG_WARN([Cannot disable both static and shared libraries, enabling static])
298 AM_CONDITIONAL(BUILD_SHARED, test "x$enable_shared" = xyes)
301 dnl other compiler options
303 AC_ARG_ENABLE([debug],
304 [AS_HELP_STRING([--enable-debug],
305 [use debug compiler flags and macros @<:@default=disabled@:>@])],
306 [enable_debug="$enableval"],
309 if test "x$enable_debug" = xyes; then
310 DEFINES_FOR_BUILD="$DEFINES_FOR_BUILD -DDEBUG"
311 if test "x$GCC_FOR_BUILD" = xyes; then
312 CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD -g -O0"
314 if test "x$GXX_FOR_BUILD" = xyes; then
315 CXXFLAGS_FOR_BUILD="$CXXFLAGS_FOR_BUILD -g -O0"
318 DEFINES="$DEFINES -DDEBUG"
319 if test "x$GCC" = xyes; then
320 CFLAGS="$CFLAGS -g -O0"
322 if test "x$GXX" = xyes; then
323 CXXFLAGS="$CXXFLAGS -g -O0"
330 LIB_PREFIX_GLOB='lib'
331 LIB_VERSION_SEPARATOR='.'
332 if test "$enable_static" = yes; then
337 LIB_EXTENSION='dylib' ;;
339 dnl prefix can be 'cyg' or 'lib'
340 LIB_PREFIX_GLOB='???'
341 LIB_VERSION_SEPARATOR='-'
342 LIB_EXTENSION='dll' ;;
346 LIB_EXTENSION='so' ;;
349 AC_ARG_WITH([gl-lib-name],
350 [AS_HELP_STRING([--with-gl-lib-name@<:@=NAME@:>@],
351 [specify GL library name @<:@default=GL@:>@])],
354 AC_ARG_WITH([osmesa-lib-name],
355 [AS_HELP_STRING([--with-osmesa-lib-name@<:@=NAME@:>@],
356 [specify OSMesa library name @<:@default=OSMesa@:>@])],
357 [OSMESA_LIB=$withval],
359 AS_IF([test "x$GL_LIB" = xyes], [GL_LIB=GL])
360 AS_IF([test "x$OSMESA_LIB" = xyes], [OSMESA_LIB=OSMesa])
363 dnl Mangled Mesa support
365 AC_ARG_ENABLE([mangling],
366 [AS_HELP_STRING([--enable-mangling],
367 [enable mangled symbols and library name @<:@default=disabled@:>@])],
368 [enable_mangling="${enableval}"],
371 if test "x${enable_mangling}" = "xyes" ; then
372 DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
373 GL_LIB="Mangled${GL_LIB}"
374 OSMESA_LIB="Mangled${OSMESA_LIB}"
377 AC_SUBST([OSMESA_LIB])
380 dnl potentially-infringing-but-nobody-knows-for-sure stuff
382 AC_ARG_ENABLE([texture-float],
383 [AS_HELP_STRING([--enable-texture-float],
384 [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
385 [enable_texture_float="$enableval"],
386 [enable_texture_float=no]
388 if test "x$enable_texture_float" = xyes; then
389 AC_MSG_WARN([Floating-point textures enabled.])
390 AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
391 DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
394 GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
395 OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
396 EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
397 GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
398 GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION}
399 VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION}
400 GLAPI_LIB_NAME='lib$(GLAPI_LIB).'${LIB_EXTENSION}
402 GL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
403 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
404 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
405 GLESv1_CM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv1_CM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
406 GLESv2_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv2_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
407 VG_LIB_GLOB=${LIB_PREFIX_GLOB}'$(VG_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
408 GLAPI_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLAPI_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
410 AC_SUBST([GL_LIB_NAME])
411 AC_SUBST([OSMESA_LIB_NAME])
412 AC_SUBST([EGL_LIB_NAME])
413 AC_SUBST([GLESv1_CM_LIB_NAME])
414 AC_SUBST([GLESv2_LIB_NAME])
415 AC_SUBST([VG_LIB_NAME])
416 AC_SUBST([GLAPI_LIB_NAME])
418 AC_SUBST([GL_LIB_GLOB])
419 AC_SUBST([EGL_LIB_GLOB])
420 AC_SUBST([GLESv1_CM_LIB_GLOB])
421 AC_SUBST([GLESv2_LIB_GLOB])
422 AC_SUBST([VG_LIB_GLOB])
423 AC_SUBST([GLAPI_LIB_GLOB])
426 dnl Arch/platform-specific settings
429 [AS_HELP_STRING([--disable-asm],
430 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
431 [enable_asm="$enableval"],
436 AC_MSG_CHECKING([whether to enable assembly])
437 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
438 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
439 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
443 AC_MSG_RESULT([no, cross compiling])
447 # check for supported arches
448 if test "x$enable_asm" = xyes; then
452 linux* | *freebsd* | dragonfly* | *netbsd*)
453 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
459 linux* | *freebsd* | dragonfly* | *netbsd*)
460 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
475 DEFINES="$DEFINES -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
476 MESA_ASM_FILES='$(X86_FILES)'
477 AC_MSG_RESULT([yes, x86])
480 DEFINES="$DEFINES -DUSE_X86_64_ASM"
481 MESA_ASM_FILES='$(X86_64_FILES)'
482 AC_MSG_RESULT([yes, x86_64])
485 DEFINES="$DEFINES -DUSE_SPARC_ASM"
486 MESA_ASM_FILES='$(SPARC_FILES)'
487 AC_MSG_RESULT([yes, sparc])
490 AC_MSG_RESULT([no, platform not supported])
494 AC_SUBST([MESA_ASM_FILES])
496 dnl Check to see if dlopen is in default libraries (like Solaris, which
497 dnl has it in libc), or if libdl is needed to get it.
498 AC_CHECK_FUNC([dlopen], [DEFINES="$DEFINES -DHAVE_DLOPEN"],
499 [AC_CHECK_LIB([dl], [dlopen],
500 [DEFINES="$DEFINES -DHAVE_DLOPEN"; DLOPEN_LIBS="-ldl"])])
501 AC_SUBST([DLOPEN_LIBS])
503 AC_CHECK_FUNCS([clock_gettime], [CLOCK_LIB=],
504 [AC_CHECK_LIB([rt], [clock_gettime], [CLOCK_LIB=-lrt],
505 [AC_MSG_ERROR([Couldn't find clock_gettime])])])
506 AC_SUBST([CLOCK_LIB])
508 dnl See if posix_memalign is available
509 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
511 dnl Check for pthreads
513 dnl AX_PTHREADS leaves PTHREAD_LIBS empty for gcc and sets PTHREAD_CFLAGS
514 dnl to -pthread, which causes problems if we need -lpthread to appear in
516 test -z "$PTHREAD_LIBS" && PTHREAD_LIBS="-lpthread"
518 dnl SELinux awareness.
519 AC_ARG_ENABLE([selinux],
520 [AS_HELP_STRING([--enable-selinux],
521 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
522 [MESA_SELINUX="$enableval"],
524 if test "x$enable_selinux" = "xyes"; then
525 AC_CHECK_HEADER([selinux/selinux.h],[],
526 [AC_MSG_ERROR([SELinux headers not found])])
527 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
528 [AC_MSG_ERROR([SELinux library not found])])
529 SELINUX_LIBS="-lselinux"
530 DEFINES="$DEFINES -DMESA_SELINUX"
532 AC_SUBST([SELINUX_LIBS])
535 AC_ARG_ENABLE([opengl],
536 [AS_HELP_STRING([--disable-opengl],
537 [disable support for standard OpenGL API @<:@default=no@:>@])],
538 [enable_opengl="$enableval"],
540 AC_ARG_ENABLE([gles1],
541 [AS_HELP_STRING([--enable-gles1],
542 [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
543 [enable_gles1="$enableval"],
545 AC_ARG_ENABLE([gles2],
546 [AS_HELP_STRING([--enable-gles2],
547 [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
548 [enable_gles2="$enableval"],
550 AC_ARG_ENABLE([openvg],
551 [AS_HELP_STRING([--enable-openvg],
552 [enable support for OpenVG API @<:@default=no@:>@])],
553 [enable_openvg="$enableval"],
557 [AS_HELP_STRING([--enable-dri],
558 [enable DRI modules @<:@default=enabled@:>@])],
559 [enable_dri="$enableval"],
562 [AS_HELP_STRING([--enable-glx],
563 [enable GLX library @<:@default=enabled@:>@])],
564 [enable_glx="$enableval"],
566 AC_ARG_ENABLE([osmesa],
567 [AS_HELP_STRING([--enable-osmesa],
568 [enable OSMesa library @<:@default=disabled@:>@])],
569 [enable_osmesa="$enableval"],
572 [AS_HELP_STRING([--disable-egl],
573 [disable EGL library @<:@default=enabled@:>@])],
574 [enable_egl="$enableval"],
577 AC_ARG_ENABLE([xorg],
578 [AS_HELP_STRING([--enable-xorg],
579 [enable support for X.Org DDX API @<:@default=no@:>@])],
580 [enable_xorg="$enableval"],
583 [AS_HELP_STRING([--enable-xa],
584 [enable build of the XA X Acceleration API @<:@default=no@:>@])],
585 [enable_xa="$enableval"],
587 dnl Broken, unmaintained. Don't want to see bug reports about it without patches.
589 dnl AC_ARG_ENABLE([d3d1x],
590 dnl [AS_HELP_STRING([--enable-d3d1x],
591 dnl [enable support for Direct3D 10 & 11 low-level API @<:@default=no@:>@])],
592 dnl [enable_d3d1x="$enableval"],
593 dnl [enable_d3d1x=no])
595 [AS_HELP_STRING([--enable-gbm],
596 [enable gbm library @<:@default=auto@:>@])],
597 [enable_gbm="$enableval"],
600 AC_ARG_ENABLE([xvmc],
601 [AS_HELP_STRING([--enable-xvmc],
602 [enable xvmc library @<:@default=auto@:>@])],
603 [enable_xvmc="$enableval"],
605 AC_ARG_ENABLE([vdpau],
606 [AS_HELP_STRING([--enable-vdpau],
607 [enable vdpau library @<:@default=auto@:>@])],
608 [enable_vdpau="$enableval"],
610 AC_ARG_ENABLE([opencl],
611 [AS_HELP_STRING([--enable-opencl],
612 [enable OpenCL library @<:@default=no@:>@])],
613 [enable_opencl="$enableval"],
615 AC_ARG_ENABLE([xlib_glx],
616 [AS_HELP_STRING([--enable-xlib-glx],
617 [make GLX library Xlib-based instead of DRI-based @<:@default=disabled@:>@])],
618 [enable_xlib_glx="$enableval"],
619 [enable_xlib_glx=no])
620 AC_ARG_ENABLE([gallium_egl],
621 [AS_HELP_STRING([--enable-gallium-egl],
622 [enable optional EGL state tracker (not required
623 for EGL support in Gallium with OpenGL and OpenGL ES)
624 @<:@default=disable@:>@])],
625 [enable_gallium_egl="$enableval"],
626 [enable_gallium_egl=no])
627 AC_ARG_ENABLE([gallium_gbm],
628 [AS_HELP_STRING([--enable-gallium-gbm],
629 [enable optional gbm state tracker (not required for
630 gbm support in Gallium)
631 @<:@default=auto@:>@])],
632 [enable_gallium_gbm="$enableval"],
633 [enable_gallium_gbm=auto])
635 AC_ARG_ENABLE([r600-llvm-compiler],
636 [AS_HELP_STRING([--enable-r600-llvm-compiler],
637 [Enable experimental LLVM backend for graphics shaders @<:@default=disable@:>@])],
638 [enable_r600_llvm="$enableval"],
639 [enable_r600_llvm=no])
641 AC_ARG_ENABLE([gallium_tests],
642 [AS_HELP_STRING([--enable-gallium-tests],
643 [Enable optional Gallium tests) @<:@default=disable@:>@])],
644 [enable_gallium_tests="$enableval"],
645 [enable_gallium_tests=no])
647 # Option for Gallium drivers
649 # Keep this in sync with the --with-gallium-drivers help string default value
650 GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
652 AC_ARG_WITH([gallium-drivers],
653 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
654 [comma delimited Gallium drivers list, e.g.
655 "i915,nouveau,r300,r600,radeonsi,svga,swrast"
656 @<:@default=r300,r600,svga,swrast@:>@])],
657 [with_gallium_drivers="$withval"],
658 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
660 # Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it
661 # here so that the script doesn't choke on an unknown driver name later.
662 case "$with_gallium_drivers" in
663 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
664 no) with_gallium_drivers='' ;;
667 if test "x$enable_opengl" = xno -a \
668 "x$enable_gles1" = xno -a \
669 "x$enable_gles2" = xno -a \
670 "x$enable_openvg" = xno -a \
671 "x$enable_xorg" = xno -a \
672 "x$enable_xa" = xno -a \
673 "x$enable_d3d1x" = xno -a \
674 "x$enable_xvmc" = xno -a \
675 "x$enable_vdpau" = xno -a \
676 "x$enable_opencl" = xno; then
677 AC_MSG_ERROR([at least one API should be enabled])
681 if test "x$enable_opengl" = xno; then
682 API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
684 API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
686 if test "x$enable_gles1" = xyes; then
687 API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
689 if test "x$enable_gles2" = xyes; then
690 API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
692 AC_SUBST([API_DEFINES])
694 if test "x$enable_glx" = xno; then
695 AC_MSG_WARN([GLX disabled, disabling Xlib-GLX])
699 if test "x$enable_dri$enable_xlib_glx" = xyesyes; then
700 AC_MSG_ERROR([DRI and Xlib-GLX cannot be built together])
703 # Disable GLX if DRI and Xlib-GLX are not enabled
704 if test "x$enable_glx" = xyes -a \
705 "x$enable_dri" = xno -a \
706 "x$enable_xlib_glx" = xno; then
707 AC_MSG_WARN([Neither DRI nor Xlib-GLX enabled, disabling GLX])
711 AM_CONDITIONAL(HAVE_DRI, test "x$enable_dri" = xyes)
712 AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_xlib_glx" = xyes -o \
713 "x$enable_osmesa" = xyes)
715 AC_ARG_ENABLE([shared-glapi],
716 [AS_HELP_STRING([--enable-shared-glapi],
717 [Enable shared glapi for OpenGL @<:@default=yes@:>@])],
718 [enable_shared_glapi="$enableval"],
719 [enable_shared_glapi="$enable_dri"])
721 # Shared GLAPI is only useful for DRI
722 if test "x$enable_dri" = xno; then
723 AC_MSG_NOTICE([Shared GLAPI is only useful for DRI, disabling])
724 enable_shared_glapi=no
727 # TODO: Get rid of SHARED_GLAPI variable
729 if test "x$enable_shared_glapi" = xyes; then
731 # libGL will use libglapi for function lookups (IN_DRI_DRIVER means to use
733 DEFINES="$DEFINES -DIN_DRI_DRIVER"
734 CORE_DIRS="mapi/shared-glapi"
736 AC_SUBST([SHARED_GLAPI])
737 AM_CONDITIONAL(HAVE_SHARED_GLAPI, test "x$enable_shared_glapi" = xyes)
740 dnl Driver specific build directories
743 GALLIUM_DIRS="auxiliary drivers state_trackers"
744 GALLIUM_TARGET_DIRS=""
745 GALLIUM_WINSYS_DIRS="sw"
746 GALLIUM_DRIVERS_DIRS="galahad trace rbug noop identity"
747 GALLIUM_STATE_TRACKERS_DIRS=""
749 # build glapi if OpenGL is enabled
750 if test "x$enable_opengl" = xyes; then
751 CORE_DIRS="$CORE_DIRS mapi/glapi"
754 # build es1api if OpenGL ES 1.x is enabled
755 if test "x$enable_gles1" = xyes; then
756 CORE_DIRS="$CORE_DIRS mapi/es1api"
759 # build es2api if OpenGL ES 2.x is enabled
760 if test "x$enable_gles2" = xyes; then
761 CORE_DIRS="$CORE_DIRS mapi/es2api"
764 # build glsl and mesa if OpenGL or OpenGL ES is enabled
765 case "x$enable_opengl$enable_gles1$enable_gles2" in
767 CORE_DIRS="mapi/glapi/gen $CORE_DIRS glsl mesa"
771 case "x$enable_glx$enable_xlib_glx" in
773 DRIVER_DIRS="$DRIVER_DIRS x11"
774 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
775 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
776 GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS"
777 HAVE_WINSYS_XLIB="yes"
781 SRC_DIRS="$SRC_DIRS glx"
785 if test "x$enable_dri" = xyes; then
786 DRIVER_DIRS="$DRIVER_DIRS dri"
788 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/dri"
789 GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
793 if test "x$enable_osmesa" = xyes; then
794 DRIVER_DIRS="$DRIVER_DIRS osmesa"
798 AC_SUBST([DRIVER_DIRS])
799 AC_SUBST([GALLIUM_DIRS])
800 AC_SUBST([GALLIUM_TARGET_DIRS])
801 AC_SUBST([GALLIUM_WINSYS_DIRS])
802 AC_SUBST([GALLIUM_DRIVERS_DIRS])
803 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
804 AC_SUBST([MESA_LLVM])
807 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
808 [have_libdrm=yes], [have_libdrm=no])
810 if test "x$enable_dri" = xyes; then
811 # DRI must be shared, I think
812 if test "$enable_static" = yes; then
813 AC_MSG_ERROR([Cannot use static libraries for DRI drivers])
816 # not a hard requirement as swrast does not depend on it
817 if test "x$have_libdrm" = xyes; then
818 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
822 dnl Find out if X is available.
823 PKG_CHECK_MODULES([X11], [x11], [no_x=no], [no_x=yes])
825 dnl Try to tell the user that the --x-* options are only used when
826 dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
827 m4_divert_once([HELP_BEGIN],
828 [These options are only used when the X libraries cannot be found by the
829 pkg-config utility.])
831 dnl We need X for xlib and dri, so bomb now if it's not found
832 if test "x$enable_glx" = xyes -a "x$no_x" = xyes; then
833 AC_MSG_ERROR([X11 development libraries needed for GLX])
836 dnl Direct rendering or just indirect rendering
839 dnl Disable by default on GNU/Hurd
840 driglx_direct_default="no"
843 dnl Disable by default on cygwin
844 driglx_direct_default="no"
847 driglx_direct_default="yes"
850 AC_ARG_ENABLE([driglx-direct],
851 [AS_HELP_STRING([--disable-driglx-direct],
852 [disable direct rendering in GLX and EGL for DRI \
853 @<:@default=auto@:>@])],
854 [driglx_direct="$enableval"],
855 [driglx_direct="$driglx_direct_default"])
858 dnl libGL configuration per driver
860 case "x$enable_glx$enable_xlib_glx" in
863 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
864 GL_PC_REQ_PRIV="x11 xext"
865 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
866 GL_LIB_DEPS="$XLIBGL_LIBS"
867 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
868 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm $PTHREAD_LIBS"
872 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
873 if test x"$driglx_direct" = xyes; then
874 if test "x$have_libdrm" != xyes; then
875 AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
877 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
878 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED"
881 # find the DRI deps for libGL
882 dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx >= 1.8.1 xcb-dri2 >= 1.8"
884 # add xf86vidmode if available
885 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
886 if test "$HAVE_XF86VIDMODE" = yes ; then
887 dri_modules="$dri_modules xxf86vm"
890 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
891 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
892 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
893 GL_LIB_DEPS="$DRIGL_LIBS"
895 # need DRM libs, $PTHREAD_LIBS, etc.
896 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
897 GL_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
901 # This is outside the case (above) so that it is invoked even for non-GLX
903 AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
905 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
906 GLESv1_CM_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
907 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
908 GLESv2_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
910 AC_SUBST([X11_INCLUDES])
911 AC_SUBST([GL_LIB_DEPS])
912 AC_SUBST([GL_PC_REQ_PRIV])
913 AC_SUBST([GL_PC_LIB_PRIV])
914 AC_SUBST([GL_PC_CFLAGS])
915 AC_SUBST([DRI_PC_REQ_PRIV])
916 AC_SUBST([GLESv1_CM_LIB_DEPS])
917 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
918 AC_SUBST([GLESv2_LIB_DEPS])
919 AC_SUBST([GLESv2_PC_LIB_PRIV])
921 DRI_LIB_DEPS="\$(top_builddir)/src/mesa/libdricore/libdricore${VERSION}.la"
923 AC_SUBST([HAVE_XF86VIDMODE])
928 case "x$enable_glx$enable_xlib_glx" in
930 DEFINES="$DEFINES -DUSE_XSHM"
933 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
934 if test "x$driglx_direct" = xyes; then
935 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
944 AC_ARG_ENABLE([glx-tls],
945 [AS_HELP_STRING([--enable-glx-tls],
946 [enable TLS support in GLX @<:@default=disabled@:>@])],
947 [GLX_USE_TLS="$enableval"],
949 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
951 AS_IF([test "x$GLX_USE_TLS" = xyes -a "x$ax_pthread_ok" = xyes],
952 [DEFINES="${DEFINES} -DGLX_USE_TLS -DHAVE_PTHREAD"])
957 dnl Directory for DRI drivers
958 AC_ARG_WITH([dri-driverdir],
959 [AS_HELP_STRING([--with-dri-driverdir=DIR],
960 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
961 [DRI_DRIVER_INSTALL_DIR="$withval"],
962 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
963 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
964 dnl Extra search path for DRI drivers
965 AC_ARG_WITH([dri-searchpath],
966 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
967 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
968 [DRI_DRIVER_SEARCH_DIR="$withval"],
969 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
970 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
971 dnl Which drivers to build - default is chosen by platform
972 AC_ARG_WITH([dri-drivers],
973 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
974 [comma delimited DRI drivers list, e.g.
975 "swrast,i965,radeon" @<:@default=auto@:>@])],
976 [with_dri_drivers="$withval"],
977 [with_dri_drivers=yes])
978 if test "x$with_dri_drivers" = x; then
982 dnl If $with_dri_drivers is yes, directories will be added through
985 case "$with_dri_drivers" in
988 # classic DRI drivers require FEATURE_GL to build
989 if test "x$enable_opengl" = xyes; then
994 # verify the requested driver directories exist
995 dri_drivers=`IFS=', '; echo $with_dri_drivers`
996 for driver in $dri_drivers; do
997 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
998 AC_MSG_ERROR([DRI driver directory '$driver' does not exist])
1000 DRI_DIRS="$dri_drivers"
1001 if test -n "$DRI_DIRS" -a "x$enable_opengl" != xyes; then
1002 AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1007 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
1008 if test "x$enable_dri" = xyes; then
1009 # Platform specific settings and drivers to build
1012 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1013 DEFINES="$DEFINES -DHAVE_ALIAS"
1017 if test "x$DRI_DIRS" = "xyes"; then
1018 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1022 # Build only the drivers for cards that exist on PowerPC.
1023 if test "x$DRI_DIRS" = "xyes"; then
1024 DRI_DIRS="r200 radeon swrast"
1028 # Build only the drivers for cards that exist on sparc
1029 if test "x$DRI_DIRS" = "xyes"; then
1030 DRI_DIRS="r200 radeon swrast"
1035 freebsd* | dragonfly* | *netbsd*)
1036 DEFINES="$DEFINES -DHAVE_PTHREAD -DUSE_EXTERNAL_DXTN_LIB=1"
1037 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
1039 if test "x$DRI_DIRS" = "xyes"; then
1040 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1044 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1045 DEFINES="$DEFINES -DHAVE_ALIAS"
1048 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1051 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1052 if test "x$DRI_DIRS" = "xyes"; then
1059 if test "x$DRI_DIRS" = "xyes"; then
1060 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1063 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
1066 if test "x$enable_dri" = xyes; then
1069 AC_ARG_WITH([expat],
1070 [AS_HELP_STRING([--with-expat=DIR],
1071 [expat install directory])],[
1072 EXPAT_INCLUDES="-I$withval/include"
1073 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
1074 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
1075 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
1077 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
1079 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1080 [AC_MSG_ERROR([Expat required for DRI.])])
1084 # if we are building any dri driver other than swrast or using the dri state tracker ...
1085 if test -n "$DRI_DIRS" -a x"$DRI_DIRS" != xswrast || test "x$enable_dri" = xyes; then
1086 # ... libdrm is required
1087 if test "x$have_libdrm" != xyes; then
1088 AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
1090 # ... and build dricommon
1094 # put all the necessary libs together
1095 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1096 GALLIUM_DRI_LIB_DEPS="$GALLIUM_DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm $CLOCK_LIB $PTHREAD_LIBS $DLOPEN_LIBS"
1098 AM_CONDITIONAL(NEED_LIBDRICORE, test -n "$DRI_DIRS")
1099 AC_SUBST([DRI_DIRS])
1100 AC_SUBST([EXPAT_INCLUDES])
1101 AC_SUBST([DRI_LIB_DEPS])
1102 AC_SUBST([GALLIUM_DRI_LIB_DEPS])
1106 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1108 for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1124 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED])
1125 HAVE_NOUVEAU_DRI=yes;
1131 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1133 for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1136 HAVE_RADEON_DRI=yes;
1149 HAVE_SWRAST_DRI=yes;
1153 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
1154 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
1155 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
1156 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
1157 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
1158 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
1159 AM_CONDITIONAL(HAVE_COMMON_DRI, test x$HAVE_COMMON_DRI = xyes)
1162 dnl OSMesa configuration
1165 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1166 AC_ARG_WITH([osmesa-bits],
1167 [AS_HELP_STRING([--with-osmesa-bits=BITS],
1168 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1169 [osmesa_bits="$withval"],
1171 if test "x$osmesa_bits" != x8; then
1172 if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then
1173 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1177 case "x$osmesa_bits" in
1179 OSMESA_LIB="${OSMESA_LIB}"
1182 OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
1183 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1186 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1190 if test "x$enable_osmesa" = xyes; then
1191 # only link libraries with osmesa if shared
1192 if test "$enable_static" = no; then
1193 OSMESA_LIB_DEPS="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1198 OSMESA_PC_LIB_PRIV="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1201 AC_SUBST([OSMESA_LIB_DEPS])
1202 AC_SUBST([OSMESA_MESA_DEPS])
1203 AC_SUBST([OSMESA_PC_REQ])
1204 AC_SUBST([OSMESA_PC_LIB_PRIV])
1207 dnl gbm configuration
1209 if test "x$enable_gbm" = xauto; then
1210 case "$with_egl_platforms" in
1217 if test "x$enable_gbm" = xyes; then
1218 SRC_DIRS="$SRC_DIRS gbm"
1220 PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1221 AC_MSG_ERROR([gbm needs udev]))
1223 if test "x$enable_dri" = xyes; then
1224 GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
1225 if test "x$enable_shared_glapi" = xno; then
1226 AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1230 GBM_PC_REQ_PRIV="libudev"
1231 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1232 AC_SUBST([GBM_PC_REQ_PRIV])
1233 AC_SUBST([GBM_PC_LIB_PRIV])
1236 dnl EGL configuration
1240 if test "x$enable_egl" = xyes; then
1241 SRC_DIRS="$SRC_DIRS egl"
1242 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS $PTHREAD_LIBS"
1244 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1246 if test "$enable_static" != yes; then
1247 # build egl_glx when libGL is built
1248 PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1249 [have_libudev=yes],[have_libudev=no])
1250 if test "$have_libudev" = yes; then
1251 DEFINES="$DEFINES -DHAVE_LIBUDEV"
1254 if test "x$enable_dri" = xyes; then
1255 HAVE_EGL_DRIVER_DRI2=1
1260 AC_SUBST([EGL_LIB_DEPS])
1263 dnl EGL Gallium configuration
1265 if test "x$enable_gallium_egl" = xyes; then
1266 if test "x$with_gallium_drivers" = x; then
1267 AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
1269 if test "x$enable_egl" = xno; then
1270 AC_MSG_ERROR([cannot enable egl_gallium without EGL])
1272 if test "x$have_libdrm" != xyes; then
1273 AC_MSG_ERROR([egl_gallium requires libdrm >= $LIBDRM_REQUIRED])
1276 GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
1277 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static"
1282 dnl gbm Gallium configuration
1284 if test "x$enable_gallium_gbm" = xauto; then
1285 case "$enable_gbm$HAVE_ST_EGL$enable_dri$with_egl_platforms" in
1287 enable_gallium_gbm=yes ;;
1289 enable_gallium_gbm=no ;;
1292 if test "x$enable_gallium_gbm" = xyes; then
1293 if test "x$with_gallium_drivers" = x; then
1294 AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
1296 if test "x$enable_gbm" = xno; then
1297 AC_MSG_ERROR([cannot enable gbm_gallium without gbm])
1299 # gbm_gallium abuses DRI_LIB_DEPS to link. Make sure it is set.
1300 if test "x$enable_dri" = xno; then
1301 AC_MSG_ERROR([gbm_gallium requires --enable-dri to build])
1304 GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS"
1305 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm"
1307 enable_gallium_loader=yes
1311 dnl X.Org DDX configuration
1313 if test "x$enable_xorg" = xyes; then
1314 PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1315 PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1316 PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1317 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1318 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1319 HAVE_XEXTPROTO_71="no")
1320 GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS"
1325 dnl XA configuration
1327 if test "x$enable_xa" = xyes; then
1330 AC_CHECK_PROG(NM, nm, "nm")
1331 if test "x$AWK" = x || test "x$GREP" = x || test "x$NM" = x; then
1332 AC_MSG_WARN([Missing one of nm, grep or awk. Disabling xa.])
1336 if test "x$enable_xa" = xyes; then
1337 GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS"
1345 dnl OpenVG configuration
1349 if test "x$enable_openvg" = xyes; then
1350 if test "x$enable_egl" = xno; then
1351 AC_MSG_ERROR([cannot enable OpenVG without EGL])
1353 if test "x$with_gallium_drivers" = x; then
1354 AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1356 if test "x$enable_gallium_egl" = xno; then
1357 AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
1360 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1361 VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS $PTHREAD_LIBS"
1362 CORE_DIRS="$CORE_DIRS mapi/vgapi"
1363 GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1365 VG_PC_LIB_PRIV="-lm $CLOCK_LIB $PTHREAD_LIBS $DLOPEN_LIBS"
1366 AC_SUBST([VG_PC_LIB_PRIV])
1368 AM_CONDITIONAL(HAVE_OPENVG, test "x$enable_openvg" = xyes)
1371 dnl D3D1X configuration
1374 if test "x$enable_d3d1x" = xyes; then
1375 if test "x$with_gallium_drivers" = x; then
1376 AC_MSG_ERROR([cannot enable D3D1X without Gallium])
1379 GALLIUM_STATE_TRACKERS_DIRS="d3d1x $GALLIUM_STATE_TRACKERS_DIRS"
1384 dnl Gallium G3DVL configuration
1386 AC_ARG_ENABLE([gallium-g3dvl],
1387 [AS_HELP_STRING([--enable-gallium-g3dvl],
1388 [build gallium g3dvl @<:@default=disabled@:>@])],
1389 [enable_gallium_g3dvl="$enableval"],
1390 [enable_gallium_g3dvl=no])
1391 if test "x$enable_gallium_g3dvl" = xyes; then
1392 if test "x$with_gallium_drivers" = x; then
1393 AC_MSG_ERROR([cannot enable G3DVL without Gallium])
1396 if test "x$enable_xvmc" = xauto; then
1397 PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no])
1400 if test "x$enable_vdpau" = xauto; then
1401 PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no])
1405 if test "x$enable_xvmc" = xyes; then
1406 PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6 x11-xcb xcb-dri2 >= 1.8])
1407 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xvmc"
1411 if test "x$enable_vdpau" = xyes; then
1412 PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.4.1 x11-xcb xcb-dri2 >= 1.8])
1413 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau"
1418 dnl OpenCL configuration
1421 AC_ARG_WITH([libclc-path],
1422 [AS_HELP_STRING([--with-libclc-path],
1423 [DEPRECATED: See http://dri.freedesktop.org/wiki/GalliumCompute#How_to_Install])],
1424 [LIBCLC_PATH="$withval"],
1427 if test "x$LIBCLC_PATH" != x; then
1428 AC_MSG_ERROR([The --with-libclc-path option has been deprecated.
1429 Please review the updated build instructions for clover:
1430 http://dri.freedesktop.org/wiki/GalliumCompute])
1434 AC_ARG_WITH([clang-libdir],
1435 [AS_HELP_STRING([--with-clang-libdir],
1436 [Path to Clang libraries @<:@default=llvm-config --libdir@:>@])],
1437 [CLANG_LIBDIR="$withval"],
1440 LIBCLC_INCLUDEDIR=`pkg-config --variable=includedir libclc`
1441 LIBCLC_LIBEXECDIR=`pkg-config --variable=libexecdir libclc`
1442 AC_SUBST([LIBCLC_INCLUDEDIR])
1443 AC_SUBST([LIBCLC_LIBEXECDIR])
1445 if test "x$enable_opencl" = xyes; then
1446 if test "x$with_gallium_drivers" = x; then
1447 AC_MSG_ERROR([cannot enable OpenCL without Gallium])
1450 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6; then
1451 AC_MSG_ERROR([gcc >= 4.6 is required to build clover])
1454 if test "x$LIBCLC_INCLUDEDIR" == x || test "x$LIBCLC_LIBEXECDIR" == x; then
1455 AC_MSG_ERROR([pkg-config cannot use libclc.pc which is required to build clover])
1458 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS clover"
1459 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS opencl"
1460 enable_gallium_loader=yes
1463 if test "x$enable_gallium_gbm" = xyes || test "x$enable_opencl" = xyes; then
1464 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS pipe-loader"
1468 dnl Gallium configuration
1470 if test "x$with_gallium_drivers" != x; then
1471 SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
1473 AM_CONDITIONAL(HAVE_GALLIUM, test "x$with_gallium_drivers" != x)
1475 AC_SUBST([LLVM_BINDIR])
1476 AC_SUBST([LLVM_CFLAGS])
1477 AC_SUBST([LLVM_CPPFLAGS])
1478 AC_SUBST([LLVM_CXXFLAGS])
1479 AC_SUBST([LLVM_LIBDIR])
1480 AC_SUBST([LLVM_LIBS])
1481 AC_SUBST([LLVM_LDFLAGS])
1482 AC_SUBST([LLVM_INCLUDEDIR])
1483 AC_SUBST([LLVM_VERSION])
1484 AC_SUBST([CLANG_RESOURCE_DIR])
1486 case "x$enable_opengl$enable_gles1$enable_gles2" in
1488 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1492 AM_CONDITIONAL(HAVE_OPENGL, test "x$HAVE_OPENGL" = xyes)
1494 AC_SUBST([VG_LIB_DEPS])
1495 AC_SUBST([EGL_CLIENT_APIS])
1498 dnl EGL Platforms configuration
1500 AC_ARG_WITH([egl-platforms],
1501 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1502 [comma delimited native platforms libEGL supports, e.g.
1503 "x11,drm" @<:@default=auto@:>@])],
1504 [with_egl_platforms="$withval"],
1505 [if test "x$enable_egl" = xyes; then
1506 with_egl_platforms="x11"
1508 with_egl_platforms=""
1513 if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
1514 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1517 # Do per-EGL platform setups and checks
1518 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1519 for plat in $egl_platforms; do
1522 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/$plat"
1526 PKG_CHECK_MODULES([WAYLAND], [wayland-client >= 1.0.2 wayland-server >= 1.0.2])
1527 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
1529 WAYLAND_PREFIX=`$PKG_CONFIG --variable=prefix wayland-client`
1530 AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner],,
1531 [${WAYLAND_PREFIX}/bin$PATH_SEPARATOR$PATH])
1535 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 >= 1.8 xcb-xfixes])
1537 if test "x$enable_glx" = xyes; then
1538 HAVE_EGL_DRIVER_GLX=1
1543 test "x$enable_gbm" = "xno" &&
1544 AC_MSG_ERROR([EGL platform drm needs gbm])
1551 AC_MSG_ERROR([EGL platform '$plat' does not exist])
1555 case "$plat$have_libudev" in
1557 AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;;
1561 # libEGL wants to default to the first platform specified in
1562 # ./configure. parse that here.
1563 if test "x$egl_platforms" != "x"; then
1564 FIRST_PLATFORM_CAPS=`echo $egl_platforms | sed 's| .*||' | tr 'a-z' 'A-Z'`
1565 EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
1567 EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
1570 EGL_PLATFORMS="$egl_platforms"
1572 AM_CONDITIONAL(HAVE_EGL_PLATFORM_X11, echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1)
1573 AM_CONDITIONAL(HAVE_EGL_PLATFORM_WAYLAND, echo "$egl_platforms" | grep 'wayland' >/dev/null 2>&1)
1574 AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep 'drm' >/dev/null 2>&1)
1575 AM_CONDITIONAL(HAVE_EGL_PLATFORM_FBDEV, echo "$egl_platforms" | grep 'fbdev' >/dev/null 2>&1)
1576 AM_CONDITIONAL(HAVE_EGL_PLATFORM_NULL, echo "$egl_platforms" | grep 'null' >/dev/null 2>&1)
1578 AM_CONDITIONAL(HAVE_EGL_DRIVER_DRI2, test "x$HAVE_EGL_DRIVER_DRI2" != "x")
1579 AM_CONDITIONAL(HAVE_EGL_DRIVER_GLX, test "x$HAVE_EGL_DRIVER_GLX" != "x")
1581 AC_SUBST([EGL_NATIVE_PLATFORM])
1582 AC_SUBST([EGL_PLATFORMS])
1583 AC_SUBST([EGL_CFLAGS])
1585 AC_ARG_WITH([egl-driver-dir],
1586 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1587 [directory for EGL drivers [[default=${libdir}/egl]]])],
1588 [EGL_DRIVER_INSTALL_DIR="$withval"],
1589 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1590 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1592 AC_ARG_WITH([xorg-driver-dir],
1593 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1594 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1595 [XORG_DRIVER_INSTALL_DIR="$withval"],
1596 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1597 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1599 AC_ARG_WITH([max-width],
1600 [AS_HELP_STRING([--with-max-width=N],
1601 [Maximum framebuffer width (4096)])],
1602 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1603 AS_IF([test "${withval}" -gt "4096"],
1604 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1606 AC_ARG_WITH([max-height],
1607 [AS_HELP_STRING([--with-max-height=N],
1608 [Maximum framebuffer height (4096)])],
1609 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1610 AS_IF([test "${withval}" -gt "4096"],
1611 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1617 AC_ARG_ENABLE([gallium-llvm],
1618 [AS_HELP_STRING([--enable-gallium-llvm],
1619 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1620 [enable_gallium_llvm="$enableval"],
1621 [enable_gallium_llvm=auto])
1623 AC_ARG_WITH([llvm-shared-libs],
1624 [AS_HELP_STRING([--with-llvm-shared-libs],
1625 [link with LLVM shared libraries @<:@default=disabled@:>@])],
1626 [with_llvm_shared_libs=yes],
1627 [with_llvm_shared_libs=no])
1629 AC_ARG_WITH([llvm-prefix],
1630 [AS_HELP_STRING([--with-llvm-prefix],
1631 [Prefix for LLVM installations in non-standard locations])],
1632 [llvm_prefix="$withval"],
1636 # Call this inside ` ` to get the return value.
1637 # $1 is the llvm-config command with arguments.
1638 strip_unwanted_llvm_flags() {
1639 # Use \> (marks the end of the word)
1641 -e 's/-DNDEBUG\>//g' \
1642 -e 's/-pedantic\>//g' \
1643 -e 's/-Wcovered-switch-default\>//g' \
1647 -e 's/-fomit-frame-pointer\>//g'
1651 if test "x$with_gallium_drivers" = x; then
1652 enable_gallium_llvm=no
1654 if test "x$enable_gallium_llvm" = xauto; then
1656 i*86|x86_64) enable_gallium_llvm=yes;;
1659 if test "x$enable_gallium_llvm" = xyes; then
1660 if test "x$llvm_prefix" != x; then
1661 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no], ["$llvm_prefix/bin"])
1663 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1666 if test "x$LLVM_CONFIG" != xno; then
1667 LLVM_VERSION=`$LLVM_CONFIG --version | sed 's/svn.*//g'`
1668 LLVM_VERSION_INT=`echo $LLVM_VERSION | sed -e 's/\([[0-9]]\)\.\([[0-9]]\)/\10\2/g'`
1669 if test "x$with_llvm_shared_libs" = xyes; then
1670 dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
1671 LLVM_LIBS="-lLLVM-`$LLVM_CONFIG --version`"
1673 LLVM_COMPONENTS="engine bitwriter"
1674 if $LLVM_CONFIG --components | grep -q '\<mcjit\>'; then
1675 LLVM_COMPONENTS="${LLVM_COMPONENTS} mcjit"
1678 if test "x$enable_opencl" = xyes; then
1679 LLVM_COMPONENTS="${LLVM_COMPONENTS} ipo linker instrumentation"
1681 LLVM_LIBS="`$LLVM_CONFIG --libs ${LLVM_COMPONENTS}`"
1683 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1684 LLVM_BINDIR=`$LLVM_CONFIG --bindir`
1685 LLVM_CPPFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cppflags"`
1686 LLVM_CFLAGS=$LLVM_CPPFLAGS # CPPFLAGS seem to be sufficient
1687 LLVM_CXXFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cxxflags"`
1688 LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
1689 LLVM_LIBDIR=`$LLVM_CONFIG --libdir`
1690 DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT"
1693 dnl Check for Clang interanl headers
1694 if test "x$enable_opencl" = xyes; then
1695 if test "x$CLANG_LIBDIR" = x; then
1696 CLANG_LIBDIR=${LLVM_LIBDIR}
1698 CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION}
1699 AC_CHECK_FILE("$CLANG_RESOURCE_DIR/include/stddef.h",,
1700 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.]))
1711 dnl Directory for XVMC libs
1712 AC_ARG_WITH([xvmc-libdir],
1713 [AS_HELP_STRING([--with-xvmc-libdir=DIR],
1714 [directory for the XVMC libraries @<:@default=${libdir}@:>@])],
1715 [XVMC_LIB_INSTALL_DIR="$withval"],
1716 [XVMC_LIB_INSTALL_DIR='${libdir}'])
1717 AC_SUBST([XVMC_LIB_INSTALL_DIR])
1722 if test "x$enable_gallium_tests" = xyes; then
1723 SRC_DIRS="$SRC_DIRS gallium/tests/trivial gallium/tests/unit"
1724 enable_gallium_loader=yes
1727 dnl Directory for VDPAU libs
1728 AC_ARG_WITH([vdpau-libdir],
1729 [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1730 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1731 [VDPAU_LIB_INSTALL_DIR="$withval"],
1732 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1733 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
1735 dnl Directory for OpenCL libs
1736 AC_ARG_WITH([opencl-libdir],
1737 [AS_HELP_STRING([--with-opencl-libdir=DIR],
1738 [directory for the OpenCL libraries @<:@default=${libdir}/opencl@:>@])],
1739 [OPENCL_LIB_INSTALL_DIR="$withval"],
1740 [OPENCL_LIB_INSTALL_DIR='${libdir}/opencl'])
1741 AC_SUBST([OPENCL_LIB_INSTALL_DIR])
1744 dnl Gallium helper functions
1746 gallium_check_st() {
1747 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes ||
1748 test "x$HAVE_ST_XA" = xyes || test "x$HAVE_ST_XVMC" = xyes ||
1749 test "x$HAVE_ST_VDPAU" = xyes; then
1750 if test "x$have_libdrm" != xyes; then
1751 AC_MSG_ERROR([DRI or Xorg DDX requires libdrm >= $LIBDRM_REQUIRED])
1753 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1755 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1756 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1758 if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
1759 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1761 if test "x$HAVE_ST_XA" = xyes && test "x$4" != x; then
1762 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
1764 if test "x$HAVE_ST_XVMC" = xyes && test "x$5" != x; then
1765 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5"
1767 if test "x$HAVE_ST_VDPAU" = xyes && test "x$6" != x; then
1768 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6"
1772 gallium_require_llvm() {
1773 if test "x$MESA_LLVM" = x0; then
1775 i*86|x86_64) 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 PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1783 AC_MSG_ERROR([Gallium drm loader requires libudev]))
1784 if test "x$have_libdrm" != xyes; then
1785 AC_MSG_ERROR([Gallium drm loader requires libdrm >= $LIBDRM_REQUIRED])
1787 enable_gallium_drm_loader=yes
1791 radeon_llvm_check() {
1792 LLVM_REQUIRED_VERSION_MAJOR="3"
1793 LLVM_REQUIRED_VERSION_MINOR="2"
1794 if test "$LLVM_VERSION_INT" -lt "${LLVM_REQUIRED_VERSION_MAJOR}0${LLVM_REQUIRED_VERSION_MINOR}"; then
1795 AC_MSG_ERROR([LLVM $LLVM_REQUIRED_VERSION_MAJOR.$LLVM_REQUIRED_VERSION_MINOR or newer with R600 target enabled is required.
1796 To use the r600/radeonsi LLVM backend, you need to fetch the LLVM source from:
1797 git://people.freedesktop.org/~tstellar/llvm master
1798 and build with --enable-experimental-targets=R600])
1800 if test true && $LLVM_CONFIG --targets-built | grep -qv '\<R600\>' ; then
1801 AC_MSG_ERROR([LLVM R600 Target not enabled. You can enable it when building the LLVM
1802 sources with the --enable-experimental-targets=R600
1805 AC_MSG_WARN([Please ensure you use the latest llvm tree from git://people.freedesktop.org/~tstellar/llvm master before submitting a bug])
1806 LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --libs r600`"
1810 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
1811 if test "x$with_gallium_drivers" != x; then
1812 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1813 for driver in $gallium_drivers; do
1816 HAVE_GALLIUM_SVGA=yes
1817 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
1818 gallium_check_st "svga/drm" "dri-vmwgfx" "" "xa-vmwgfx"
1821 HAVE_GALLIUM_I915=yes
1822 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1823 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe"
1824 if test "x$MESA_LLVM" = x1; then
1825 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1827 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1828 gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1831 HAVE_GALLIUM_R300=yes
1832 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1833 gallium_require_llvm "Gallium R300"
1834 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1835 gallium_check_st "radeon/drm" "dri-r300" "" "" "xvmc-r300" "vdpau-r300"
1838 HAVE_GALLIUM_R600=yes
1839 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1840 gallium_require_drm_loader
1841 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1842 if test "x$enable_r600_llvm" = xyes -o "x$enable_opencl" = xyes; then
1844 NEED_RADEON_GALLIUM=yes;
1846 if test "x$enable_r600_llvm" = xyes; then
1847 USE_R600_LLVM_COMPILER=yes;
1849 if test "x$enable_opencl" = xyes -a "x$with_llvm_shared_libs" = xno; then
1850 LLVM_LIBS="${LLVM_LIBS} `$LLVM_CONFIG --libs bitreader asmparser`"
1852 gallium_check_st "radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600"
1855 HAVE_GALLIUM_RADEONSI=yes
1856 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1857 gallium_require_drm_loader
1858 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS radeonsi"
1860 NEED_RADEON_GALLIUM=yes;
1861 gallium_check_st "radeon/drm" "dri-radeonsi" "xorg-radeonsi" "" "" "vdpau-radeonsi" ""
1864 HAVE_GALLIUM_NOUVEAU=yes
1865 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1866 gallium_require_drm_loader
1867 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nv30 nv50 nvc0"
1868 gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau" "" "xvmc-nouveau" "vdpau-nouveau"
1871 HAVE_GALLIUM_SOFTPIPE=yes
1872 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe"
1873 if test "x$MESA_LLVM" = x1; then
1874 HAVE_GALLIUM_LLVMPIPE=yes
1875 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1878 if test "x$HAVE_ST_DRI" = xyes; then
1879 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1881 if test "x$HAVE_ST_VDPAU" = xyes; then
1882 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS vdpau-softpipe"
1884 if test "x$HAVE_ST_XVMC" = xyes; then
1885 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS xvmc-softpipe"
1887 if test "x$HAVE_ST_VDPAU" = xyes ||
1888 test "x$HAVE_ST_XVMC" = xyes; then
1889 if test "x$HAVE_WINSYS_XLIB" != xyes; then
1890 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
1895 AC_MSG_ERROR([Unknown Gallium driver: $driver])
1900 AM_CONDITIONAL(HAVE_GALLIUM_SVGA, test "x$HAVE_GALLIUM_SVGA" = xyes)
1901 AM_CONDITIONAL(HAVE_GALLIUM_I915, test "x$HAVE_GALLIUM_I915" = xyes)
1902 AM_CONDITIONAL(HAVE_GALLIUM_R300, test "x$HAVE_GALLIUM_R300" = xyes)
1903 AM_CONDITIONAL(HAVE_GALLIUM_R600, test "x$HAVE_GALLIUM_R600" = xyes)
1904 AM_CONDITIONAL(HAVE_GALLIUM_RADEONSI, test "x$HAVE_GALLIUM_RADEONSI" = xyes)
1905 AM_CONDITIONAL(HAVE_GALLIUM_NOUVEAU, test "x$HAVE_GALLIUM_NOUVEAU" = xyes)
1906 AM_CONDITIONAL(HAVE_GALLIUM_SOFTPIPE, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes)
1907 AM_CONDITIONAL(HAVE_GALLIUM_LLVMPIPE, test "x$HAVE_GALLIUM_LLVMPIPE" = xyes)
1909 if test "x$enable_gallium_loader" = xyes; then
1910 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
1911 GALLIUM_PIPE_LOADER_DEFINES="-DHAVE_PIPE_LOADER_SW"
1912 GALLIUM_PIPE_LOADER_LIBS="\$(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader.la"
1913 GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS \$(top_builddir)/src/gallium/winsys/sw/null/libws_null.la"
1915 if test "x$HAVE_WINSYS_XLIB" = xyes; then
1916 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_XLIB"
1917 GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS \$(top_builddir)/src/gallium/winsys/sw/xlib/libws_xlib.la"
1920 if test "x$enable_gallium_drm_loader" = xyes; then
1921 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRM"
1922 PKG_CHECK_MODULES([GALLIUM_PIPE_LOADER_XCB], [xcb xcb-dri2],
1923 pipe_loader_have_xcb=yes, pipe_loader_have_xcb=no)
1924 if test "x$pipe_loader_have_xcb" = xyes; then
1925 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DPIPE_LOADER_HAVE_XCB"
1926 GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS $GALLIUM_PIPE_LOADER_XCB_LIBS $LIBDRM_LIBS"
1930 AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
1931 AC_SUBST([GALLIUM_PIPE_LOADER_LIBS])
1934 dnl Tell Automake which drivers to build
1935 for driver in $GALLIUM_DRIVERS_DIRS; do
1938 HAVE_GALAHAD_GALLIUM=yes;
1941 HAVE_IDENTITY_GALLIUM=yes;
1944 HAVE_NOOP_GALLIUM=yes;
1947 GALLIUM_MAKE_DIRS="$GALLIUM_MAKE_DIRS $driver"
1952 AM_CONDITIONAL(HAVE_GALAHAD_GALLIUM, test x$HAVE_GALAHAD_GALLIUM = xyes)
1953 AM_CONDITIONAL(HAVE_IDENTITY_GALLIUM, test x$HAVE_IDENTITY_GALLIUM = xyes)
1954 AM_CONDITIONAL(HAVE_NOOP_GALLIUM, test x$HAVE_NOOP_GALLIUM = xyes)
1955 AM_CONDITIONAL(NEED_RADEON_GALLIUM, test x$NEED_RADEON_GALLIUM = xyes)
1956 AM_CONDITIONAL(USE_R600_LLVM_COMPILER, test x$USE_R600_LLVM_COMPILER = xyes)
1957 AM_CONDITIONAL(HAVE_LOADER_GALLIUM, test x$enable_gallium_loader = xyes)
1958 AM_CONDITIONAL(HAVE_DRM_LOADER_GALLIUM, test x$enable_gallium_drm_loader = xyes)
1959 AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
1960 AM_CONDITIONAL(HAVE_MESA_LLVM, test x$MESA_LLVM = x1)
1961 AM_CONDITIONAL(LLVM_NEEDS_FNORTTI, test $LLVM_VERSION_INT -ge 302)
1963 AC_SUBST([GALLIUM_MAKE_DIRS])
1965 AM_CONDITIONAL(NEED_LIBPROGRAM, test "x$with_gallium_drivers" != x -o \
1966 "x$enable_xlib_glx" = xyes -o \
1967 "x$enable_osmesa" = xyes)
1968 AM_CONDITIONAL(HAVE_X11_DRIVER, echo "$DRIVER_DIRS" | grep 'x11' >/dev/null 2>&1)
1970 AM_CONDITIONAL(HAVE_X86_ASM, echo "$DEFINES" | grep 'X86_ASM' >/dev/null 2>&1)
1971 AM_CONDITIONAL(HAVE_X86_64_ASM, echo "$DEFINES" | grep 'X86_64_ASM' >/dev/null 2>&1)
1972 AM_CONDITIONAL(HAVE_SPARC_ASM, echo "$DEFINES" | grep 'SPARC_ASM' >/dev/null 2>&1)
1974 AC_SUBST([VDPAU_MAJOR], 1)
1975 AC_SUBST([VDPAU_MINOR], 0)
1977 AC_SUBST([XVMC_MAJOR], 1)
1978 AC_SUBST([XVMC_MINOR], 0)
1980 AC_SUBST([XA_MAJOR], 1)
1981 AC_SUBST([XA_MINOR], 0)
1982 AC_SUBST([XA_TINY], 0)
1983 AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_TINY")
1985 dnl prepend CORE_DIRS to SRC_DIRS
1986 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
1988 dnl Restore LDFLAGS and CPPFLAGS
1989 LDFLAGS="$_SAVE_LDFLAGS"
1990 CPPFLAGS="$_SAVE_CPPFLAGS"
1992 dnl Add user CFLAGS and CXXFLAGS
1993 CFLAGS="$CFLAGS $USER_CFLAGS"
1994 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
1996 dnl Substitute the config
1997 AC_CONFIG_FILES([Makefile
2000 src/egl/drivers/Makefile
2001 src/egl/drivers/dri2/Makefile
2002 src/egl/drivers/glx/Makefile
2003 src/egl/main/Makefile
2005 src/egl/wayland/Makefile
2006 src/egl/wayland/wayland-drm/Makefile
2007 src/egl/wayland/wayland-egl/Makefile
2008 src/egl/wayland/wayland-egl/wayland-egl.pc
2009 src/gallium/Makefile
2010 src/gallium/auxiliary/Makefile
2011 src/gallium/auxiliary/pipe-loader/Makefile
2012 src/gallium/drivers/Makefile
2013 src/gallium/drivers/i915/Makefile
2014 src/gallium/drivers/llvmpipe/Makefile
2015 src/gallium/drivers/nouveau/Makefile
2016 src/gallium/drivers/nv30/Makefile
2017 src/gallium/drivers/nv50/Makefile
2018 src/gallium/drivers/nvc0/Makefile
2019 src/gallium/drivers/r300/Makefile
2020 src/gallium/drivers/r600/Makefile
2021 src/gallium/drivers/radeon/Makefile
2022 src/gallium/drivers/radeonsi/Makefile
2023 src/gallium/drivers/rbug/Makefile
2024 src/gallium/drivers/softpipe/Makefile
2025 src/gallium/drivers/svga/Makefile
2026 src/gallium/drivers/trace/Makefile
2027 src/gallium/state_trackers/Makefile
2028 src/gallium/state_trackers/clover/Makefile
2029 src/gallium/state_trackers/dri/Makefile
2030 src/gallium/state_trackers/dri/drm/Makefile
2031 src/gallium/state_trackers/dri/sw/Makefile
2032 src/gallium/state_trackers/egl/Makefile
2033 src/gallium/state_trackers/gbm/Makefile
2034 src/gallium/state_trackers/glx/Makefile
2035 src/gallium/state_trackers/vdpau/Makefile
2036 src/gallium/state_trackers/vega/Makefile
2037 src/gallium/state_trackers/xa/Makefile
2038 src/gallium/state_trackers/xorg/Makefile
2039 src/gallium/state_trackers/xvmc/Makefile
2040 src/gallium/targets/Makefile
2041 src/gallium/targets/dri-i915/Makefile
2042 src/gallium/targets/dri-nouveau/Makefile
2043 src/gallium/targets/dri-r300/Makefile
2044 src/gallium/targets/dri-r600/Makefile
2045 src/gallium/targets/dri-radeonsi/Makefile
2046 src/gallium/targets/dri-swrast/Makefile
2047 src/gallium/targets/dri-vmwgfx/Makefile
2048 src/gallium/targets/egl-static/Makefile
2049 src/gallium/targets/gbm/Makefile
2050 src/gallium/targets/opencl/Makefile
2051 src/gallium/targets/pipe-loader/Makefile
2052 src/gallium/targets/libgl-xlib/Makefile
2053 src/gallium/targets/vdpau-nouveau/Makefile
2054 src/gallium/targets/vdpau-r300/Makefile
2055 src/gallium/targets/vdpau-r600/Makefile
2056 src/gallium/targets/vdpau-radeonsi/Makefile
2057 src/gallium/targets/vdpau-softpipe/Makefile
2058 src/gallium/targets/xa-vmwgfx/Makefile
2059 src/gallium/targets/xa-vmwgfx/xatracker.pc
2060 src/gallium/targets/xorg-i915/Makefile
2061 src/gallium/targets/xorg-nouveau/Makefile
2062 src/gallium/targets/xorg-r600/Makefile
2063 src/gallium/targets/xorg-radeonsi/Makefile
2064 src/gallium/targets/xvmc-nouveau/Makefile
2065 src/gallium/targets/xvmc-r300/Makefile
2066 src/gallium/targets/xvmc-r600/Makefile
2067 src/gallium/targets/xvmc-softpipe/Makefile
2068 src/gallium/tests/trivial/Makefile
2069 src/gallium/tests/unit/Makefile
2070 src/gallium/winsys/Makefile
2071 src/gallium/winsys/i915/drm/Makefile
2072 src/gallium/winsys/i915/sw/Makefile
2073 src/gallium/winsys/nouveau/drm/Makefile
2074 src/gallium/winsys/radeon/drm/Makefile
2075 src/gallium/winsys/svga/drm/Makefile
2076 src/gallium/winsys/sw/Makefile
2077 src/gallium/winsys/sw/dri/Makefile
2078 src/gallium/winsys/sw/fbdev/Makefile
2079 src/gallium/winsys/sw/null/Makefile
2080 src/gallium/winsys/sw/wayland/Makefile
2081 src/gallium/winsys/sw/wrapper/Makefile
2082 src/gallium/winsys/sw/xlib/Makefile
2086 src/glsl/builtin_compiler/Makefile
2087 src/glsl/glcpp/Makefile
2088 src/glsl/tests/Makefile
2090 src/glx/tests/Makefile
2092 src/mapi/es1api/Makefile
2093 src/mapi/es1api/glesv1_cm.pc
2094 src/mapi/es2api/Makefile
2095 src/mapi/es2api/glesv2.pc
2096 src/mapi/glapi/Makefile
2097 src/mapi/glapi/gen/Makefile
2098 src/mapi/glapi/tests/Makefile
2099 src/mapi/shared-glapi/Makefile
2100 src/mapi/shared-glapi/tests/Makefile
2101 src/mapi/vgapi/Makefile
2102 src/mapi/vgapi/vg.pc
2105 src/mesa/drivers/Makefile
2106 src/mesa/drivers/dri/dri.pc
2107 src/mesa/drivers/dri/common/Makefile
2108 src/mesa/drivers/dri/common/xmlpool/Makefile
2109 src/mesa/drivers/dri/i915/Makefile
2110 src/mesa/drivers/dri/i965/Makefile
2111 src/mesa/drivers/dri/Makefile
2112 src/mesa/drivers/dri/nouveau/Makefile
2113 src/mesa/drivers/dri/r200/Makefile
2114 src/mesa/drivers/dri/radeon/Makefile
2115 src/mesa/drivers/dri/swrast/Makefile
2116 src/mesa/drivers/osmesa/Makefile
2117 src/mesa/drivers/osmesa/osmesa.pc
2118 src/mesa/drivers/x11/Makefile
2119 src/mesa/libdricore/Makefile
2120 src/mesa/main/tests/Makefile
2121 src/mesa/main/tests/hash_table/Makefile
2122 src/mesa/program/Makefile
2123 src/mesa/x86-64/Makefile
2124 src/mesa/x86/Makefile])
2126 dnl Sort the dirs alphabetically
2127 GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2128 GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2129 GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2130 GALLIUM_MAKE_DIRS=`echo $GALLIUM_MAKE_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2131 GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2136 dnl Output some configuration info for the user
2139 echo " prefix: $prefix"
2140 echo " exec_prefix: $exec_prefix"
2141 echo " libdir: $libdir"
2142 echo " includedir: $includedir"
2146 echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
2147 echo " OpenVG: $enable_openvg"
2151 if test "x$enable_osmesa" != xno; then
2152 echo " OSMesa: lib$OSMESA_LIB"
2157 if test "x$enable_dri" != xno; then
2158 # cleanup the drivers var
2159 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
2160 if test "x$DRI_DIRS" = x; then
2161 echo " DRI drivers: no"
2163 echo " DRI drivers: $dri_dirs"
2165 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
2168 case "x$enable_glx$enable_xlib_glx" in
2170 echo " GLX: Xlib-based"
2173 echo " GLX: DRI-based"
2176 echo " GLX: $enable_glx"
2182 echo " EGL: $enable_egl"
2183 if test "$enable_egl" = yes; then
2184 echo " EGL platforms: $EGL_PLATFORMS"
2187 if test "x$HAVE_EGL_DRIVER_GLX" != "x"; then
2188 egl_drivers="$egl_drivers builtin:egl_glx"
2190 if test "x$HAVE_EGL_DRIVER_DRI2" != "x"; then
2191 egl_drivers="$egl_drivers builtin:egl_dri2"
2194 if test "x$HAVE_ST_EGL" = xyes; then
2195 echo " EGL drivers: ${egl_drivers} egl_gallium"
2196 echo " EGL Gallium STs:$EGL_CLIENT_APIS"
2198 echo " EGL drivers: $egl_drivers"
2203 if test "x$MESA_LLVM" = x1; then
2205 echo " llvm-config: $LLVM_CONFIG"
2206 echo " llvm-version: $LLVM_VERSION"
2212 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
2213 echo " Gallium: yes"
2214 echo " Gallium dirs: $GALLIUM_DIRS"
2215 echo " Target dirs: $GALLIUM_TARGET_DIRS"
2216 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
2217 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
2218 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
2226 echo " Shared libs: $enable_shared"
2227 echo " Static libs: $enable_static"
2228 echo " Shared-glapi: $enable_shared_glapi"
2230 dnl Compiler options
2231 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2232 cflags=`echo $CFLAGS | \
2233 $SED 's/^ *//;s/ */ /;s/ *$//'`
2234 cxxflags=`echo $CXXFLAGS | \
2235 $SED 's/^ *//;s/ */ /;s/ *$//'`
2236 defines=`echo $DEFINES | $SED 's/^ *//;s/ */ /;s/ *$//'`
2238 echo " CFLAGS: $cflags"
2239 echo " CXXFLAGS: $cxxflags"
2240 echo " Macros: $defines"
2242 if test "x$MESA_LLVM" = x1; then
2243 echo " LLVM_CFLAGS: $LLVM_CFLAGS"
2244 echo " LLVM_CXXFLAGS: $LLVM_CXXFLAGS"
2245 echo " LLVM_CPPFLAGS: $LLVM_CPPFLAGS"
2248 echo " PYTHON2: $PYTHON2"
2251 echo " Run '${MAKE-make}' to build Mesa"