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 libdrm >= 2.4.41"
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])
52 AX_PYTHON_MODULE([libxml2], [needed])
57 LT_INIT([disable-static])
60 AC_PATH_PROG([YACC_INST], $YACC)
61 if test ! -f "$srcdir/src/glsl/glcpp/glcpp-parse.c"; then
62 if test -z "$YACC_INST"; then
63 AC_MSG_ERROR([yacc not found - unable to compile glcpp-parse.y])
68 AC_PATH_PROG([PERL], [perl])
70 AC_CHECK_PROG(INDENT, indent, indent, cat)
71 if test "x$INDENT" != "xcat"; then
72 AC_SUBST(INDENT_FLAGS, '-i4 -nut -br -brs -npcs -ce -TGLubyte -TGLbyte -TBool')
77 dnl We need a POSIX shell for parts of the build. Assume we have one
81 # Solaris /bin/sh is too old/non-POSIX compliant
82 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
87 dnl clang is mostly GCC-compatible, but its version is much lower,
88 dnl so we have to check for it.
89 AC_MSG_CHECKING([if compiling with clang])
92 [AC_LANG_PROGRAM([], [[
97 [acv_mesa_CLANG=yes], [acv_mesa_CLANG=no])
99 AC_MSG_RESULT([$acv_mesa_CLANG])
101 dnl If we're using GCC, make sure that it is at least version 3.3.0. Older
102 dnl versions are explictly not supported.
103 if test "x$GCC" = xyes -a "x$acv_mesa_CLANG" = xno; then
104 AC_MSG_CHECKING([whether gcc version is sufficient])
108 GCC_VERSION=`$CC -dumpversion`
109 if test $? -eq 0; then
110 GCC_VERSION_MAJOR=`echo $GCC_VERSION | cut -d. -f1`
111 GCC_VERSION_MINOR=`echo $GCC_VERSION | cut -d. -f2`
114 if test $GCC_VERSION_MAJOR -lt 3 -o $GCC_VERSION_MAJOR -eq 3 -a $GCC_VERSION_MINOR -lt 3 ; then
116 AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.])
122 dnl Make sure the pkg-config macros are defined
123 m4_ifndef([PKG_PROG_PKG_CONFIG],
124 [m4_fatal([Could not locate the pkg-config autoconf macros.
125 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
126 are in a different location, try setting the environment variable
127 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
128 PKG_PROG_PKG_CONFIG()
130 dnl LIB_DIR - library basename
131 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
134 dnl Cache LDFLAGS and CPPFLAGS so we can add to them and restore later
135 _SAVE_LDFLAGS="$LDFLAGS"
136 _SAVE_CPPFLAGS="$CPPFLAGS"
138 dnl build host compiler macros
140 AC_SUBST([DEFINES_FOR_BUILD])
143 DEFINES_FOR_BUILD="$DEFINES_FOR_BUILD -D_GNU_SOURCE"
146 DEFINES_FOR_BUILD="$DEFINES_FOR_BUILD -DSVR4"
149 DEFINES_FOR_BUILD="$DEFINES_FOR_BUILD"
158 DEFINES="$DEFINES -D_GNU_SOURCE -DHAVE_PTHREAD"
161 DEFINES="$DEFINES -DHAVE_PTHREAD -DSVR4"
164 DEFINES="$DEFINES -DHAVE_PTHREAD"
168 dnl Add flags for gcc and g++
169 if test "x$GCC" = xyes; then
172 CFLAGS="$CFLAGS -Wall -std=gnu99"
175 CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD -Wall -std=c99"
176 CFLAGS="$CFLAGS -Wall -std=c99"
180 # Enable -Werror=implicit-function-declaration and
181 # -Werror=missing-prototypes, if available, or otherwise, just
182 # -Wmissing-prototypes. This is particularly useful to avoid
183 # generating a loadable driver module that has undefined symbols.
184 save_CFLAGS="$CFLAGS"
185 AC_MSG_CHECKING([whether $CC supports -Werror=missing-prototypes])
186 CFLAGS="$CFLAGS -Werror=implicit-function-declaration"
187 CFLAGS="$CFLAGS -Werror=missing-prototypes"
188 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
189 AC_MSG_RESULT([yes]),
190 [CFLAGS="$save_CFLAGS -Wmissing-prototypes";
191 AC_MSG_RESULT([no])]);
193 # Enable -fvisibility=hidden if using a gcc that supports it
194 save_CFLAGS="$CFLAGS"
195 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
196 VISIBILITY_CFLAGS="-fvisibility=hidden"
197 CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
198 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
199 [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
201 # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
204 # Work around aliasing bugs - developers should comment this out
205 CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD -fno-strict-aliasing"
206 CFLAGS="$CFLAGS -fno-strict-aliasing"
208 # gcc's builtin memcmp is slower than glibc's
209 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
210 CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD -fno-builtin-memcmp"
211 CFLAGS="$CFLAGS -fno-builtin-memcmp"
213 if test "x$GXX" = xyes; then
214 CXXFLAGS_FOR_BUILD="$CXXFLAGS_FOR_BUILD -Wall"
215 CXXFLAGS="$CXXFLAGS -Wall"
217 # Enable -fvisibility=hidden if using a gcc that supports it
218 save_CXXFLAGS="$CXXFLAGS"
219 AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
220 VISIBILITY_CXXFLAGS="-fvisibility=hidden"
221 CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
223 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
224 [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
227 # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
228 CXXFLAGS=$save_CXXFLAGS
230 # Work around aliasing bugs - developers should comment this out
231 CXXFLAGS_FOR_BUILD="$CXXFLAGS_FOR_BUILD -fno-strict-aliasing"
232 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
234 # gcc's builtin memcmp is slower than glibc's
235 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
236 CXXFLAGS_FOR_BUILD="$CXXFLAGS_FOR_BUILD -fno-builtin-memcmp"
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 Hacks to enable 32 or 64 bit build
255 AC_ARG_ENABLE([32-bit],
256 [AS_HELP_STRING([--enable-32-bit],
257 [build 32-bit libraries @<:@default=auto@:>@])],
258 [enable_32bit="$enableval"],
261 if test "x$enable_32bit" = xyes; then
262 if test "x$GCC" = xyes; then
263 CFLAGS="$CFLAGS -m32"
264 CCASFLAGS="$CCASFLAGS -m32"
266 if test "x$GXX" = xyes; then
267 CXXFLAGS="$CXXFLAGS -m32"
270 AC_ARG_ENABLE([64-bit],
271 [AS_HELP_STRING([--enable-64-bit],
272 [build 64-bit libraries @<:@default=auto@:>@])],
273 [enable_64bit="$enableval"],
276 if test "x$enable_64bit" = xyes; then
277 if test "x$GCC" = xyes; then
278 CFLAGS="$CFLAGS -m64"
280 if test "x$GXX" = xyes; then
281 CXXFLAGS="$CXXFLAGS -m64"
285 dnl Can't have static and shared libraries, default to static if user
286 dnl explicitly requested. If both disabled, set to static since shared
287 dnl was explicitly requested.
288 case "x$enable_static$enable_shared" in
290 AC_MSG_WARN([Cannot build static and shared libraries, disabling shared])
294 AC_MSG_WARN([Cannot disable both static and shared libraries, enabling static])
299 AM_CONDITIONAL(BUILD_SHARED, test "x$enable_shared" = xyes)
302 dnl other compiler options
304 AC_ARG_ENABLE([debug],
305 [AS_HELP_STRING([--enable-debug],
306 [use debug compiler flags and macros @<:@default=disabled@:>@])],
307 [enable_debug="$enableval"],
310 if test "x$enable_debug" = xyes; then
311 DEFINES_FOR_BUILD="$DEFINES_FOR_BUILD -DDEBUG"
312 if test "x$GCC_FOR_BUILD" = xyes; then
313 CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD -g -O0"
315 if test "x$GXX_FOR_BUILD" = xyes; then
316 CXXFLAGS_FOR_BUILD="$CXXFLAGS_FOR_BUILD -g -O0"
319 DEFINES="$DEFINES -DDEBUG"
320 if test "x$GCC" = xyes; then
321 CFLAGS="$CFLAGS -g -O0"
323 if test "x$GXX" = xyes; then
324 CXXFLAGS="$CXXFLAGS -g -O0"
331 LIB_PREFIX_GLOB='lib'
332 LIB_VERSION_SEPARATOR='.'
333 if test "$enable_static" = yes; then
338 LIB_EXTENSION='dylib' ;;
340 dnl prefix can be 'cyg' or 'lib'
341 LIB_PREFIX_GLOB='???'
342 LIB_VERSION_SEPARATOR='-'
343 LIB_EXTENSION='dll' ;;
347 LIB_EXTENSION='so' ;;
350 AC_ARG_WITH([gl-lib-name],
351 [AS_HELP_STRING([--with-gl-lib-name@<:@=NAME@:>@],
352 [specify GL library name @<:@default=GL@:>@])],
355 AC_ARG_WITH([osmesa-lib-name],
356 [AS_HELP_STRING([--with-osmesa-lib-name@<:@=NAME@:>@],
357 [specify OSMesa library name @<:@default=OSMesa@:>@])],
358 [OSMESA_LIB=$withval],
360 AS_IF([test "x$GL_LIB" = xyes], [GL_LIB=GL])
361 AS_IF([test "x$OSMESA_LIB" = xyes], [OSMESA_LIB=OSMesa])
364 dnl Mangled Mesa support
366 AC_ARG_ENABLE([mangling],
367 [AS_HELP_STRING([--enable-mangling],
368 [enable mangled symbols and library name @<:@default=disabled@:>@])],
369 [enable_mangling="${enableval}"],
372 if test "x${enable_mangling}" = "xyes" ; then
373 DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
374 GL_LIB="Mangled${GL_LIB}"
375 OSMESA_LIB="Mangled${OSMESA_LIB}"
378 AC_SUBST([OSMESA_LIB])
381 dnl potentially-infringing-but-nobody-knows-for-sure stuff
383 AC_ARG_ENABLE([texture-float],
384 [AS_HELP_STRING([--enable-texture-float],
385 [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
386 [enable_texture_float="$enableval"],
387 [enable_texture_float=no]
389 if test "x$enable_texture_float" = xyes; then
390 AC_MSG_WARN([Floating-point textures enabled.])
391 AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
392 DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
395 GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
396 OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
397 EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
398 GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
399 GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION}
400 VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION}
401 GLAPI_LIB_NAME='lib$(GLAPI_LIB).'${LIB_EXTENSION}
403 GL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
404 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
405 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
406 GLESv1_CM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv1_CM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
407 GLESv2_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv2_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
408 VG_LIB_GLOB=${LIB_PREFIX_GLOB}'$(VG_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
409 GLAPI_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLAPI_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
411 AC_SUBST([GL_LIB_NAME])
412 AC_SUBST([OSMESA_LIB_NAME])
413 AC_SUBST([EGL_LIB_NAME])
414 AC_SUBST([GLESv1_CM_LIB_NAME])
415 AC_SUBST([GLESv2_LIB_NAME])
416 AC_SUBST([VG_LIB_NAME])
417 AC_SUBST([GLAPI_LIB_NAME])
419 AC_SUBST([GL_LIB_GLOB])
420 AC_SUBST([EGL_LIB_GLOB])
421 AC_SUBST([GLESv1_CM_LIB_GLOB])
422 AC_SUBST([GLESv2_LIB_GLOB])
423 AC_SUBST([VG_LIB_GLOB])
424 AC_SUBST([GLAPI_LIB_GLOB])
427 dnl Arch/platform-specific settings
430 [AS_HELP_STRING([--disable-asm],
431 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
432 [enable_asm="$enableval"],
437 AC_MSG_CHECKING([whether to enable assembly])
438 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
439 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
440 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
444 AC_MSG_RESULT([no, cross compiling])
448 # check for supported arches
449 if test "x$enable_asm" = xyes; then
453 linux* | *freebsd* | dragonfly* | *netbsd*)
454 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
460 linux* | *freebsd* | dragonfly* | *netbsd*)
461 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
476 DEFINES="$DEFINES -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
477 MESA_ASM_FILES='$(X86_FILES)'
478 AC_MSG_RESULT([yes, x86])
481 DEFINES="$DEFINES -DUSE_X86_64_ASM"
482 MESA_ASM_FILES='$(X86_64_FILES)'
483 AC_MSG_RESULT([yes, x86_64])
486 DEFINES="$DEFINES -DUSE_SPARC_ASM"
487 MESA_ASM_FILES='$(SPARC_FILES)'
488 AC_MSG_RESULT([yes, sparc])
491 AC_MSG_RESULT([no, platform not supported])
495 AC_SUBST([MESA_ASM_FILES])
497 dnl Check to see if dlopen is in default libraries (like Solaris, which
498 dnl has it in libc), or if libdl is needed to get it.
499 AC_CHECK_FUNC([dlopen], [DEFINES="$DEFINES -DHAVE_DLOPEN"],
500 [AC_CHECK_LIB([dl], [dlopen],
501 [DEFINES="$DEFINES -DHAVE_DLOPEN"; DLOPEN_LIBS="-ldl"])])
502 AC_SUBST([DLOPEN_LIBS])
504 AC_CHECK_FUNCS([clock_gettime], [CLOCK_LIB=],
505 [AC_CHECK_LIB([rt], [clock_gettime], [CLOCK_LIB=-lrt],
506 [AC_MSG_ERROR([Couldn't find clock_gettime])])])
507 AC_SUBST([CLOCK_LIB])
509 dnl See if posix_memalign is available
510 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
512 dnl Check for pthreads
514 dnl AX_PTHREADS leaves PTHREAD_LIBS empty for gcc and sets PTHREAD_CFLAGS
515 dnl to -pthread, which causes problems if we need -lpthread to appear in
517 test -z "$PTHREAD_LIBS" && PTHREAD_LIBS="-lpthread"
519 dnl SELinux awareness.
520 AC_ARG_ENABLE([selinux],
521 [AS_HELP_STRING([--enable-selinux],
522 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
523 [MESA_SELINUX="$enableval"],
525 if test "x$enable_selinux" = "xyes"; then
526 AC_CHECK_HEADER([selinux/selinux.h],[],
527 [AC_MSG_ERROR([SELinux headers not found])])
528 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
529 [AC_MSG_ERROR([SELinux library not found])])
530 SELINUX_LIBS="-lselinux"
531 DEFINES="$DEFINES -DMESA_SELINUX"
533 AC_SUBST([SELINUX_LIBS])
536 AC_ARG_ENABLE([opengl],
537 [AS_HELP_STRING([--disable-opengl],
538 [disable support for standard OpenGL API @<:@default=no@:>@])],
539 [enable_opengl="$enableval"],
541 AC_ARG_ENABLE([gles1],
542 [AS_HELP_STRING([--enable-gles1],
543 [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
544 [enable_gles1="$enableval"],
546 AC_ARG_ENABLE([gles2],
547 [AS_HELP_STRING([--enable-gles2],
548 [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
549 [enable_gles2="$enableval"],
551 AC_ARG_ENABLE([openvg],
552 [AS_HELP_STRING([--enable-openvg],
553 [enable support for OpenVG API @<:@default=no@:>@])],
554 [enable_openvg="$enableval"],
558 [AS_HELP_STRING([--enable-dri],
559 [enable DRI modules @<:@default=enabled@:>@])],
560 [enable_dri="$enableval"],
563 [AS_HELP_STRING([--enable-glx],
564 [enable GLX library @<:@default=enabled@:>@])],
565 [enable_glx="$enableval"],
567 AC_ARG_ENABLE([osmesa],
568 [AS_HELP_STRING([--enable-osmesa],
569 [enable OSMesa library @<:@default=disabled@:>@])],
570 [enable_osmesa="$enableval"],
573 [AS_HELP_STRING([--disable-egl],
574 [disable EGL library @<:@default=enabled@:>@])],
575 [enable_egl="$enableval"],
578 AC_ARG_ENABLE([xorg],
579 [AS_HELP_STRING([--enable-xorg],
580 [enable support for X.Org DDX API @<:@default=no@:>@])],
581 [enable_xorg="$enableval"],
584 [AS_HELP_STRING([--enable-xa],
585 [enable build of the XA X Acceleration API @<:@default=no@:>@])],
586 [enable_xa="$enableval"],
588 dnl Broken, unmaintained. Don't want to see bug reports about it without patches.
590 dnl AC_ARG_ENABLE([d3d1x],
591 dnl [AS_HELP_STRING([--enable-d3d1x],
592 dnl [enable support for Direct3D 10 & 11 low-level API @<:@default=no@:>@])],
593 dnl [enable_d3d1x="$enableval"],
594 dnl [enable_d3d1x=no])
596 [AS_HELP_STRING([--enable-gbm],
597 [enable gbm library @<:@default=auto@:>@])],
598 [enable_gbm="$enableval"],
601 AC_ARG_ENABLE([xvmc],
602 [AS_HELP_STRING([--enable-xvmc],
603 [enable xvmc library @<:@default=auto@:>@])],
604 [enable_xvmc="$enableval"],
606 AC_ARG_ENABLE([vdpau],
607 [AS_HELP_STRING([--enable-vdpau],
608 [enable vdpau library @<:@default=auto@:>@])],
609 [enable_vdpau="$enableval"],
611 AC_ARG_ENABLE([opencl],
612 [AS_HELP_STRING([--enable-opencl],
613 [enable OpenCL library @<:@default=no@:>@])],
614 [enable_opencl="$enableval"],
616 AC_ARG_ENABLE([xlib_glx],
617 [AS_HELP_STRING([--enable-xlib-glx],
618 [make GLX library Xlib-based instead of DRI-based @<:@default=disabled@:>@])],
619 [enable_xlib_glx="$enableval"],
620 [enable_xlib_glx=no])
621 AC_ARG_ENABLE([gallium_egl],
622 [AS_HELP_STRING([--enable-gallium-egl],
623 [enable optional EGL state tracker (not required
624 for EGL support in Gallium with OpenGL and OpenGL ES)
625 @<:@default=disable@:>@])],
626 [enable_gallium_egl="$enableval"],
627 [enable_gallium_egl=no])
628 AC_ARG_ENABLE([gallium_gbm],
629 [AS_HELP_STRING([--enable-gallium-gbm],
630 [enable optional gbm state tracker (not required for
631 gbm support in Gallium)
632 @<:@default=auto@:>@])],
633 [enable_gallium_gbm="$enableval"],
634 [enable_gallium_gbm=auto])
636 AC_ARG_ENABLE([r600-llvm-compiler],
637 [AS_HELP_STRING([--enable-r600-llvm-compiler],
638 [Enable experimental LLVM backend for graphics shaders @<:@default=disable@:>@])],
639 [enable_r600_llvm="$enableval"],
640 [enable_r600_llvm=no])
642 AC_ARG_ENABLE([gallium_tests],
643 [AS_HELP_STRING([--enable-gallium-tests],
644 [Enable optional Gallium tests) @<:@default=disable@:>@])],
645 [enable_gallium_tests="$enableval"],
646 [enable_gallium_tests=no])
648 # Option for Gallium drivers
650 # Keep this in sync with the --with-gallium-drivers help string default value
651 GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
653 AC_ARG_WITH([gallium-drivers],
654 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
655 [comma delimited Gallium drivers list, e.g.
656 "i915,nouveau,r300,r600,radeonsi,svga,swrast"
657 @<:@default=r300,r600,svga,swrast@:>@])],
658 [with_gallium_drivers="$withval"],
659 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
661 # Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it
662 # here so that the script doesn't choke on an unknown driver name later.
663 case "$with_gallium_drivers" in
664 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
665 no) with_gallium_drivers='' ;;
668 if test "x$enable_opengl" = xno -a \
669 "x$enable_gles1" = xno -a \
670 "x$enable_gles2" = xno -a \
671 "x$enable_openvg" = xno -a \
672 "x$enable_xorg" = xno -a \
673 "x$enable_xa" = xno -a \
674 "x$enable_d3d1x" = xno -a \
675 "x$enable_xvmc" = xno -a \
676 "x$enable_vdpau" = xno -a \
677 "x$enable_opencl" = xno; then
678 AC_MSG_ERROR([at least one API should be enabled])
682 if test "x$enable_opengl" = xno; then
683 API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
685 API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
687 if test "x$enable_gles1" = xyes; then
688 API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
690 if test "x$enable_gles2" = xyes; then
691 API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
693 AC_SUBST([API_DEFINES])
695 if test "x$enable_glx" = xno; then
696 AC_MSG_WARN([GLX disabled, disabling Xlib-GLX])
700 if test "x$enable_dri$enable_xlib_glx" = xyesyes; then
701 AC_MSG_ERROR([DRI and Xlib-GLX cannot be built together])
704 # Disable GLX if DRI and Xlib-GLX are not enabled
705 if test "x$enable_glx" = xyes -a \
706 "x$enable_dri" = xno -a \
707 "x$enable_xlib_glx" = xno; then
708 AC_MSG_WARN([Neither DRI nor Xlib-GLX enabled, disabling GLX])
712 AM_CONDITIONAL(HAVE_DRI, test "x$enable_dri" = xyes)
713 AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_xlib_glx" = xyes -o \
714 "x$enable_osmesa" = xyes)
716 AC_ARG_ENABLE([shared-glapi],
717 [AS_HELP_STRING([--enable-shared-glapi],
718 [Enable shared glapi for OpenGL @<:@default=yes@:>@])],
719 [enable_shared_glapi="$enableval"],
720 [enable_shared_glapi="$enable_dri"])
722 # Shared GLAPI is only useful for DRI
723 if test "x$enable_dri" = xno; then
724 AC_MSG_NOTICE([Shared GLAPI is only useful for DRI, disabling])
725 enable_shared_glapi=no
728 # TODO: Get rid of SHARED_GLAPI variable
730 if test "x$enable_shared_glapi" = xyes; then
732 # libGL will use libglapi for function lookups (IN_DRI_DRIVER means to use
734 DEFINES="$DEFINES -DIN_DRI_DRIVER"
735 CORE_DIRS="mapi/shared-glapi"
737 AC_SUBST([SHARED_GLAPI])
738 AM_CONDITIONAL(HAVE_SHARED_GLAPI, test "x$enable_shared_glapi" = xyes)
741 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 gtest 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"