1 dnl Copyright © 2011-2014 Intel Corporation
2 dnl Copyright © 2011-2014 Emil Velikov <emil.l.velikov@gmail.com>
3 dnl Copyright © 2007-2010 Dan Nicholson
4 dnl Copyright © 2010-2014 Marek Olšák <maraeo@gmail.com>
5 dnl Copyright © 2010-2014 Christian König
6 dnl Copyright © 2012-2014 Tom Stellard <tstellar@gmail.com>
7 dnl Copyright © 2009-2012 Jakob Bornecrantz
8 dnl Copyright © 2009-2014 Jon TURNEY
9 dnl Copyright © 2011-2012 Benjamin Franzke
10 dnl Copyright © 2008-2014 David Airlie
11 dnl Copyright © 2009-2013 Brian Paul
12 dnl Copyright © 2003-2007 Keith Packard, Daniel Stone
14 dnl Permission is hereby granted, free of charge, to any person obtaining a
15 dnl copy of this software and associated documentation files (the "Software"),
16 dnl to deal in the Software without restriction, including without limitation
17 dnl the rights to use, copy, modify, merge, publish, distribute, sublicense,
18 dnl and/or sell copies of the Software, and to permit persons to whom the
19 dnl Software is furnished to do so, subject to the following conditions:
21 dnl The above copyright notice and this permission notice (including the next
22 dnl paragraph) shall be included in all copies or substantial portions of the
25 dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
26 dnl IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
27 dnl FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
28 dnl THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
29 dnl LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
30 dnl FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
31 dnl DEALINGS IN THE SOFTWARE.
33 dnl Process this file with autoconf to create configure.
37 dnl Tell the user about autoconf.html in the --help output
38 m4_divert_once([HELP_END], [
39 See docs/autoconf.html for more details on the options for Mesa.])
41 m4_define(MESA_VERSION, m4_normalize(m4_include(VERSION)))
42 AC_INIT([Mesa], [MESA_VERSION],
43 [https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa])
44 AC_CONFIG_AUX_DIR([bin])
45 AC_CONFIG_MACRO_DIR([m4])
47 AM_INIT_AUTOMAKE([foreign tar-ustar dist-xz subdir-objects])
49 dnl We only support native Windows builds (MinGW/MSVC) through SCons.
52 AC_MSG_ERROR([MinGW build not supported through autoconf/automake, use SCons instead])
56 # Support silent build rules, requires at least automake-1.11. Disable
57 # by either passing --disable-silent-rules to configure or passing V=1
59 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])],
60 [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])])
62 m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
64 dnl Set internal versions
66 AC_SUBST([OSMESA_VERSION])
68 AC_SUBST([OPENCL_VERSION])
70 dnl Versions for external dependencies
71 LIBDRM_REQUIRED=2.4.66
72 LIBDRM_RADEON_REQUIRED=2.4.56
73 LIBDRM_AMDGPU_REQUIRED=2.4.63
74 LIBDRM_INTEL_REQUIRED=2.4.61
75 LIBDRM_NVVIEUX_REQUIRED=2.4.66
76 LIBDRM_NOUVEAU_REQUIRED=2.4.66
77 LIBDRM_FREEDRENO_REQUIRED=2.4.67
78 DRI2PROTO_REQUIRED=2.6
79 DRI3PROTO_REQUIRED=1.0
80 PRESENTPROTO_REQUIRED=1.0
82 GLPROTO_REQUIRED=1.4.14
83 LIBOMXIL_BELLAGIO_REQUIRED=0.0
86 WAYLAND_REQUIRED=1.2.0
90 XSHMFENCE_REQUIRED=1.1
92 PYTHON_MAKO_REQUIRED=0.3.4
101 AC_CHECK_PROGS([PYTHON2], [python2.7 python2 python])
102 AC_CHECK_PROGS([PYTHON3], [python3.5 python3.4 python3])
109 LT_INIT([disable-static])
111 AC_CHECK_PROG(RM, rm, [rm -f])
114 AS_IF([test ! -f "$srcdir/src/compiler/glsl/glcpp/glcpp-parse.c"],
115 [AC_MSG_ERROR([bison not found - unable to compile glcpp-parse.y])]))
117 AS_IF([test ! -f "$srcdir/src/compiler/glsl/glcpp/glcpp-lex.c"],
118 [AC_MSG_ERROR([flex not found - unable to compile glcpp-lex.l])]))
120 AC_CHECK_PROG(INDENT, indent, indent, cat)
121 if test "x$INDENT" != "xcat"; then
122 # Only GNU indent is supported
123 INDENT_VERSION=`indent --version | grep GNU`
124 if test $? -eq 0; then
125 AC_SUBST(INDENT_FLAGS, '-i4 -nut -br -brs -npcs -ce -TGLubyte -TGLbyte -TBool')
131 AX_CHECK_PYTHON_MAKO_MODULE($PYTHON_MAKO_REQUIRED)
133 if test -z "$PYTHON2"; then
134 if test ! -f "$srcdir/src/util/format_srgb.c"; then
135 AC_MSG_ERROR([Python not found - unable to generate sources])
138 if test "x$acv_mako_found" = xno; then
139 if test ! -f "$srcdir/src/mesa/main/format_unpack.c"; then
140 AC_MSG_ERROR([Python mako module v$PYTHON_MAKO_REQUIRED or higher not found])
145 if test -z "$PYTHON3"; then
146 if test ! -f "$srcdir/src/intel/genxml/gen9_pack.h"; then
147 AC_MSG_ERROR([Python3 not found - unable to generate sources])
153 dnl We need a POSIX shell for parts of the build. Assume we have one
157 # Solaris /bin/sh is too old/non-POSIX compliant
158 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
163 dnl clang is mostly GCC-compatible, but its version is much lower,
164 dnl so we have to check for it.
165 AC_MSG_CHECKING([if compiling with clang])
168 [AC_LANG_PROGRAM([], [[
173 [acv_mesa_CLANG=yes], [acv_mesa_CLANG=no])
175 AC_MSG_RESULT([$acv_mesa_CLANG])
177 dnl If we're using GCC, make sure that it is at least version 4.2.0. Older
178 dnl versions are explictly not supported.
181 if test "x$GCC" = xyes -a "x$acv_mesa_CLANG" = xno; then
182 AC_MSG_CHECKING([whether gcc version is sufficient])
186 GCC_VERSION=`$CC -dumpversion`
187 if test $? -eq 0; then
188 GCC_VERSION_MAJOR=`echo $GCC_VERSION | cut -d. -f1`
189 GCC_VERSION_MINOR=`echo $GCC_VERSION | cut -d. -f2`
192 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 2 ; then
194 AC_MSG_ERROR([If using GCC, version 4.2.0 or later is required.])
199 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6 ; then
202 if test "x$cross_compiling" = xyes; then
207 dnl We don't support building Mesa with Sun C compiler
208 dnl https://bugs.freedesktop.org/show_bug.cgi?id=93189
209 AC_CHECK_DECL([__SUNPRO_C], [SUNCC=yes], [SUNCC=no])
210 if test "x$SUNCC" = xyes; then
211 AC_MSG_ERROR([Building with Sun C compiler is not supported, use GCC instead.])
214 dnl Check for compiler builtins
215 AX_GCC_BUILTIN([__builtin_bswap32])
216 AX_GCC_BUILTIN([__builtin_bswap64])
217 AX_GCC_BUILTIN([__builtin_clz])
218 AX_GCC_BUILTIN([__builtin_clzll])
219 AX_GCC_BUILTIN([__builtin_ctz])
220 AX_GCC_BUILTIN([__builtin_expect])
221 AX_GCC_BUILTIN([__builtin_ffs])
222 AX_GCC_BUILTIN([__builtin_ffsll])
223 AX_GCC_BUILTIN([__builtin_popcount])
224 AX_GCC_BUILTIN([__builtin_popcountll])
225 AX_GCC_BUILTIN([__builtin_unreachable])
227 AX_GCC_FUNC_ATTRIBUTE([const])
228 AX_GCC_FUNC_ATTRIBUTE([flatten])
229 AX_GCC_FUNC_ATTRIBUTE([format])
230 AX_GCC_FUNC_ATTRIBUTE([malloc])
231 AX_GCC_FUNC_ATTRIBUTE([packed])
232 AX_GCC_FUNC_ATTRIBUTE([pure])
233 AX_GCC_FUNC_ATTRIBUTE([returns_nonnull])
234 AX_GCC_FUNC_ATTRIBUTE([unused])
235 AX_GCC_FUNC_ATTRIBUTE([warn_unused_result])
237 AM_CONDITIONAL([GEN_ASM_OFFSETS], test "x$GEN_ASM_OFFSETS" = xyes)
239 dnl Make sure the pkg-config macros are defined
240 m4_ifndef([PKG_PROG_PKG_CONFIG],
241 [m4_fatal([Could not locate the pkg-config autoconf macros.
242 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
243 are in a different location, try setting the environment variable
244 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
245 PKG_PROG_PKG_CONFIG()
247 dnl LIB_DIR - library basename
248 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
251 dnl Cache LDFLAGS and CPPFLAGS so we can add to them and restore later
252 _SAVE_LDFLAGS="$LDFLAGS"
253 _SAVE_CPPFLAGS="$CPPFLAGS"
256 DEFINES="-D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS"
264 DEFINES="$DEFINES -D_GNU_SOURCE"
267 DEFINES="$DEFINES -DSVR4"
270 DEFINES="$DEFINES -D_XOPEN_SOURCE=700"
274 AM_CONDITIONAL(HAVE_ANDROID, test "x$android" = xyes)
276 dnl Add flags for gcc and g++
277 if test "x$GCC" = xyes; then
278 CFLAGS="$CFLAGS -Wall"
280 if test "x$USE_GNU99" = xyes; then
281 CFLAGS="$CFLAGS -std=gnu99"
283 CFLAGS="$CFLAGS -std=c99"
286 # Enable -Werror=implicit-function-declaration and
287 # -Werror=missing-prototypes, if available, or otherwise, just
288 # -Wmissing-prototypes. This is particularly useful to avoid
289 # generating a loadable driver module that has undefined symbols.
290 save_CFLAGS="$CFLAGS"
291 AC_MSG_CHECKING([whether $CC supports -Werror=missing-prototypes])
292 CFLAGS="$CFLAGS -Werror=implicit-function-declaration"
293 CFLAGS="$CFLAGS -Werror=missing-prototypes"
294 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
295 AC_MSG_RESULT([yes]),
296 [CFLAGS="$save_CFLAGS -Wmissing-prototypes";
297 AC_MSG_RESULT([no])]);
299 # Enable -fvisibility=hidden if using a gcc that supports it
300 save_CFLAGS="$CFLAGS"
301 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
302 VISIBILITY_CFLAGS="-fvisibility=hidden"
303 CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
304 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
305 [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
307 # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
310 # Work around aliasing bugs - developers should comment this out
311 CFLAGS="$CFLAGS -fno-strict-aliasing"
313 # We don't want floating-point math functions to set errno or trap
314 CFLAGS="$CFLAGS -fno-math-errno -fno-trapping-math"
316 # gcc's builtin memcmp is slower than glibc's
317 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
318 CFLAGS="$CFLAGS -fno-builtin-memcmp"
320 # Flags to help ensure that certain portions of the code -- and only those
321 # portions -- can be built with MSVC:
322 # - src/util, src/gallium/auxiliary, rc/gallium/drivers/llvmpipe, and
323 # - non-Linux/Posix OpenGL portions needs to build on MSVC 2013 (which
324 # supports most of C99)
325 # - the rest has no compiler compiler restrictions
326 MSVC2013_COMPAT_CFLAGS="-Werror=pointer-arith"
327 MSVC2013_COMPAT_CXXFLAGS="-Werror=pointer-arith"
329 # Enable -Werror=vla if compiler supports it
330 save_CFLAGS="$CFLAGS"
331 AC_MSG_CHECKING([whether $CC supports -Werror=vla])
332 CFLAGS="$CFLAGS -Werror=vla"
333 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
334 [MSVC2013_COMPAT_CFLAGS="$MSVC2013_COMPAT_CFLAGS -Werror=vla";
335 MSVC2013_COMPAT_CXXFLAGS="$MSVC2013_COMPAT_CXXFLAGS -Werror=vla";
336 AC_MSG_RESULT([yes])],
337 AC_MSG_RESULT([no]));
338 CFLAGS="$save_CFLAGS"
340 if test "x$GXX" = xyes; then
341 CXXFLAGS="$CXXFLAGS -Wall"
343 # Enable -fvisibility=hidden if using a gcc that supports it
344 save_CXXFLAGS="$CXXFLAGS"
345 AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
346 VISIBILITY_CXXFLAGS="-fvisibility=hidden"
347 CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
349 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
350 [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
353 # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
354 CXXFLAGS=$save_CXXFLAGS
356 # Work around aliasing bugs - developers should comment this out
357 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
359 # gcc's builtin memcmp is slower than glibc's
360 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
361 CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp"
364 AC_SUBST([MSVC2013_COMPAT_CFLAGS])
365 AC_SUBST([MSVC2013_COMPAT_CXXFLAGS])
367 dnl even if the compiler appears to support it, using visibility attributes isn't
368 dnl going to do anything useful currently on cygwin apart from emit lots of warnings
372 VISIBILITY_CXXFLAGS=""
376 AC_SUBST([VISIBILITY_CFLAGS])
377 AC_SUBST([VISIBILITY_CXXFLAGS])
380 dnl Optional flags, check for compiler support
382 SSE41_CFLAGS="-msse4.1"
383 dnl Code compiled by GCC with -msse* assumes a 16 byte aligned
384 dnl stack, but on x86-32 such alignment is not guaranteed.
385 case "$target_cpu" in
387 SSE41_CFLAGS="$SSE41_CFLAGS -mstackrealign"
390 save_CFLAGS="$CFLAGS"
391 CFLAGS="$SSE41_CFLAGS $CFLAGS"
392 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
393 #include <smmintrin.h>
396 __m128i a = _mm_set1_epi32 (param), b = _mm_set1_epi32 (param + 1), c;
397 c = _mm_max_epu32(a, b);
398 return _mm_cvtsi128_si32(c);
399 }]])], SSE41_SUPPORTED=1)
400 CFLAGS="$save_CFLAGS"
401 if test "x$SSE41_SUPPORTED" = x1; then
402 DEFINES="$DEFINES -DUSE_SSE41"
404 AM_CONDITIONAL([SSE41_SUPPORTED], [test x$SSE41_SUPPORTED = x1])
405 AC_SUBST([SSE41_CFLAGS], $SSE41_CFLAGS)
407 dnl Check for Endianness
415 dnl Check for POWER8 Architecture
416 PWR8_CFLAGS="-mpower8-vector"
417 have_pwr8_intrinsics=no
418 AC_MSG_CHECKING(whether gcc supports -mpower8-vector)
420 CFLAGS="$PWR8_CFLAGS $CFLAGS"
421 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
422 #if defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8))
423 #error "Need GCC >= 4.8 for sane POWER8 support"
427 vector unsigned char r;
428 vector unsigned int v = vec_splat_u32 (1);
429 r = __builtin_vec_vgbbd ((vector unsigned char) v);
431 }]])], have_pwr8_intrinsics=yes)
435 [AC_HELP_STRING([--disable-pwr8-inst],
436 [disable POWER8-specific instructions])],
437 [enable_pwr8=$enableval], [enable_pwr8=auto])
439 if test "x$enable_pwr8" = xno ; then
440 have_pwr8_intrinsics=disabled
443 if test $have_pwr8_intrinsics = yes && test $little_endian = yes ; then
444 DEFINES="$DEFINES -D_ARCH_PWR8"
445 CXXFLAGS="$CXXFLAGS $PWR8_CFLAGS"
446 CFLAGS="$CFLAGS $PWR8_CFLAGS"
451 AC_MSG_RESULT($have_pwr8_intrinsics)
452 if test "x$enable_pwr8" = xyes && test $have_pwr8_intrinsics = no ; then
453 AC_MSG_ERROR([POWER8 compiler support not detected])
456 if test $have_pwr8_intrinsics = yes && test $little_endian = no ; then
457 AC_MSG_WARN([POWER8 optimization is enabled only on POWER8 Little-Endian])
460 AC_SUBST([PWR8_CFLAGS], $PWR8_CFLAGS)
462 dnl Can't have static and shared libraries, default to static if user
463 dnl explicitly requested. If both disabled, set to static since shared
464 dnl was explicitly requested.
465 case "x$enable_static$enable_shared" in
467 AC_MSG_WARN([Cannot build static and shared libraries, disabling shared])
471 AC_MSG_WARN([Cannot disable both static and shared libraries, enabling shared])
476 AM_CONDITIONAL(BUILD_SHARED, test "x$enable_shared" = xyes)
479 dnl other compiler options
481 AC_ARG_ENABLE([debug],
482 [AS_HELP_STRING([--enable-debug],
483 [use debug compiler flags and macros @<:@default=disabled@:>@])],
484 [enable_debug="$enableval"],
488 AC_ARG_ENABLE([profile],
489 [AS_HELP_STRING([--enable-profile],
490 [enable profiling of code @<:@default=disabled@:>@])],
491 [enable_profile="$enableval"],
495 if test "x$enable_profile" = xyes; then
496 DEFINES="$DEFINES -DPROFILE"
497 if test "x$GCC" = xyes; then
498 CFLAGS="$CFLAGS -fno-omit-frame-pointer"
500 if test "x$GXX" = xyes; then
501 CXXFLAGS="$CXXFLAGS -fno-omit-frame-pointer"
505 if test "x$enable_debug" = xyes; then
506 DEFINES="$DEFINES -DDEBUG"
507 if test "x$enable_profile" = xyes; then
508 AC_MSG_WARN([Debug and Profile are enabled at the same time])
510 if test "x$GCC" = xyes; then
511 if ! echo "$CFLAGS" | grep -q -e '-g'; then
514 if ! echo "$CFLAGS" | grep -q -e '-O'; then
518 if test "x$GXX" = xyes; then
519 if ! echo "$CXXFLAGS" | grep -q -e '-g'; then
520 CXXFLAGS="$CXXFLAGS -g"
522 if ! echo "$CXXFLAGS" | grep -q -e '-O'; then
523 CXXFLAGS="$CXXFLAGS -O0"
527 DEFINES="$DEFINES -DNDEBUG"
531 dnl Check if linker supports -Bsymbolic
533 save_LDFLAGS=$LDFLAGS
534 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic"
535 AC_MSG_CHECKING([if ld supports -Bsymbolic])
537 [AC_LANG_SOURCE([int main() { return 0;}])],
538 [AC_MSG_RESULT([yes])
539 BSYMBOLIC="-Wl,-Bsymbolic";],
542 LDFLAGS=$save_LDFLAGS
544 AC_SUBST([BSYMBOLIC])
547 dnl Check if linker supports garbage collection
549 save_LDFLAGS=$LDFLAGS
550 LDFLAGS="$LDFLAGS -Wl,--gc-sections"
551 AC_MSG_CHECKING([whether ld supports --gc-sections])
553 [AC_LANG_SOURCE([static char UnusedFunc() { return 5; } int main() { return 0;}])],
554 [AC_MSG_RESULT([yes])
555 GC_SECTIONS="-Wl,--gc-sections";],
558 LDFLAGS=$save_LDFLAGS
560 AC_SUBST([GC_SECTIONS])
563 dnl OpenBSD does not have DT_NEEDED entries for libc by design
564 dnl so when these flags are passed to ld via libtool the checks will fail
568 LD_NO_UNDEFINED="" ;;
570 LD_NO_UNDEFINED="-Wl,--no-undefined" ;;
573 AC_SUBST([LD_NO_UNDEFINED])
576 dnl Check if linker supports version scripts
578 AC_MSG_CHECKING([if the linker supports version-scripts])
579 save_LDFLAGS=$LDFLAGS
580 LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map"
581 cat > conftest.map <<EOF
591 [AC_LANG_SOURCE([int main() { return 0;}])],
592 [have_ld_version_script=yes;AC_MSG_RESULT(yes)],
593 [have_ld_version_script=no; AC_MSG_RESULT(no)])
594 LDFLAGS=$save_LDFLAGS
595 AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes")
598 dnl Check if linker supports dynamic list files
600 AC_MSG_CHECKING([if the linker supports --dynamic-list])
601 save_LDFLAGS=$LDFLAGS
602 LDFLAGS="$LDFLAGS -Wl,--dynamic-list=conftest.dyn"
603 cat > conftest.dyn <<EOF
605 radeon_drm_winsys_create;
609 [AC_LANG_SOURCE([int main() { return 0;}])],
610 [have_ld_dynamic_list=yes;AC_MSG_RESULT(yes)],
611 [have_ld_dynamic_list=no; AC_MSG_RESULT(no)])
612 LDFLAGS=$save_LDFLAGS
613 AM_CONDITIONAL(HAVE_LD_DYNAMIC_LIST, test "$have_ld_dynamic_list" = "yes")
616 dnl compatibility symlinks
620 HAVE_COMPAT_SYMLINKS=yes ;;
622 HAVE_COMPAT_SYMLINKS=no ;;
625 AM_CONDITIONAL(HAVE_COMPAT_SYMLINKS, test "x$HAVE_COMPAT_SYMLINKS" = xyes)
630 dnl Unfortunately we need to do a few things that libtool can't help us with,
631 dnl so we need some knowledge of shared library filenames:
633 dnl LIB_EXT is the extension used when creating symlinks for alternate
634 dnl filenames for a shared library which will be dynamically loaded
636 dnl IMP_LIB_EXT is the extension used when checking for the presence of a
637 dnl the file for a shared library we wish to link with
660 AC_ARG_WITH([gl-lib-name],
661 [AS_HELP_STRING([--with-gl-lib-name@<:@=NAME@:>@],
662 [specify GL library name @<:@default=GL@:>@])],
665 AC_ARG_WITH([osmesa-lib-name],
666 [AS_HELP_STRING([--with-osmesa-lib-name@<:@=NAME@:>@],
667 [specify OSMesa library name @<:@default=OSMesa@:>@])],
668 [OSMESA_LIB=$withval],
670 AS_IF([test "x$GL_LIB" = xyes], [GL_LIB=GL])
671 AS_IF([test "x$OSMESA_LIB" = xyes], [OSMESA_LIB=OSMesa])
674 dnl Mangled Mesa support
676 AC_ARG_ENABLE([mangling],
677 [AS_HELP_STRING([--enable-mangling],
678 [enable mangled symbols and library name @<:@default=disabled@:>@])],
679 [enable_mangling="${enableval}"],
682 if test "x${enable_mangling}" = "xyes" ; then
683 DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
684 GL_LIB="Mangled${GL_LIB}"
685 OSMESA_LIB="Mangled${OSMESA_LIB}"
688 AC_SUBST([OSMESA_LIB])
691 dnl potentially-infringing-but-nobody-knows-for-sure stuff
693 AC_ARG_ENABLE([texture-float],
694 [AS_HELP_STRING([--enable-texture-float],
695 [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
696 [enable_texture_float="$enableval"],
697 [enable_texture_float=no]
699 if test "x$enable_texture_float" = xyes; then
700 AC_MSG_WARN([Floating-point textures enabled.])
701 AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
702 DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
706 dnl Arch/platform-specific settings
709 [AS_HELP_STRING([--disable-asm],
710 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
711 [enable_asm="$enableval"],
715 AC_MSG_CHECKING([whether to enable assembly])
716 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
717 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
718 if test "x$enable_asm" = xyes -a "x$cross_compiling" = xyes; then
720 i?86 | x86_64 | amd64)
721 if test "x$host_cpu" != "x$target_cpu"; then
723 AC_MSG_RESULT([no, cross compiling])
728 # check for supported arches
729 if test "x$enable_asm" = xyes; then
733 linux* | *freebsd* | dragonfly* | *netbsd* | openbsd* | gnu*)
740 linux* | *freebsd* | dragonfly* | *netbsd* | openbsd*)
756 DEFINES="$DEFINES -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
757 AC_MSG_RESULT([yes, x86])
760 DEFINES="$DEFINES -DUSE_X86_64_ASM"
761 AC_MSG_RESULT([yes, x86_64])
764 DEFINES="$DEFINES -DUSE_SPARC_ASM"
765 AC_MSG_RESULT([yes, sparc])
768 AC_MSG_RESULT([no, platform not supported])
773 AC_CHECK_HEADER([xlocale.h], [DEFINES="$DEFINES -DHAVE_XLOCALE_H"])
774 AC_CHECK_HEADER([sys/sysctl.h], [DEFINES="$DEFINES -DHAVE_SYS_SYSCTL_H"])
775 AC_CHECK_FUNC([strtof], [DEFINES="$DEFINES -DHAVE_STRTOF"])
776 AC_CHECK_FUNC([mkostemp], [DEFINES="$DEFINES -DHAVE_MKOSTEMP"])
778 dnl Check to see if dlopen is in default libraries (like Solaris, which
779 dnl has it in libc), or if libdl is needed to get it.
780 AC_CHECK_FUNC([dlopen], [DEFINES="$DEFINES -DHAVE_DLOPEN"],
781 [AC_CHECK_LIB([dl], [dlopen],
782 [DEFINES="$DEFINES -DHAVE_DLOPEN"; DLOPEN_LIBS="-ldl"])])
783 AC_SUBST([DLOPEN_LIBS])
785 dnl Check if that library also has dladdr
787 LIBS="$LIBS $DLOPEN_LIBS"
788 AC_CHECK_FUNCS([dladdr])
795 AC_CHECK_FUNCS([clock_gettime], [CLOCK_LIB=],
796 [AC_CHECK_LIB([rt], [clock_gettime], [CLOCK_LIB=-lrt],
797 [AC_MSG_ERROR([Could not find clock_gettime])])])
798 AC_SUBST([CLOCK_LIB])
802 dnl See if posix_memalign is available
803 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
805 dnl Check for pthreads
807 if test "x$ax_pthread_ok" = xno; then
808 AC_MSG_ERROR([Building mesa on this platform requires pthreads])
810 dnl AX_PTHREADS leaves PTHREAD_LIBS empty for gcc and sets PTHREAD_CFLAGS
811 dnl to -pthread, which causes problems if we need -lpthread to appear in
813 test -z "$PTHREAD_LIBS" && PTHREAD_LIBS="-lpthread"
815 PKG_CHECK_MODULES(PTHREADSTUBS, pthread-stubs)
816 AC_SUBST(PTHREADSTUBS_CFLAGS)
817 AC_SUBST(PTHREADSTUBS_LIBS)
819 dnl SELinux awareness.
820 AC_ARG_ENABLE([selinux],
821 [AS_HELP_STRING([--enable-selinux],
822 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
823 [MESA_SELINUX="$enableval"],
825 if test "x$enable_selinux" = "xyes"; then
826 PKG_CHECK_MODULES([SELINUX], [libselinux], [],
827 [AC_CHECK_HEADER([selinux/selinux.h],[],
828 [AC_MSG_ERROR([SELinux headers not found])])
829 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
830 [AC_MSG_ERROR([SELinux library not found])])
831 SELINUX_LIBS="-lselinux"])
832 DEFINES="$DEFINES -DMESA_SELINUX"
834 AC_SUBST([SELINUX_CFLAGS])
835 AC_SUBST([SELINUX_LIBS])
838 AC_ARG_ENABLE([opengl],
839 [AS_HELP_STRING([--disable-opengl],
840 [disable support for standard OpenGL API @<:@default=enabled@:>@])],
841 [enable_opengl="$enableval"],
843 AC_ARG_ENABLE([gles1],
844 [AS_HELP_STRING([--disable-gles1],
845 [disable support for OpenGL ES 1.x API @<:@default=enabled@:>@])],
846 [enable_gles1="$enableval"],
848 AC_ARG_ENABLE([gles2],
849 [AS_HELP_STRING([--disable-gles2],
850 [disable support for OpenGL ES 2.x API @<:@default=enabled@:>@])],
851 [enable_gles2="$enableval"],
855 [AS_HELP_STRING([--enable-dri],
856 [enable DRI modules @<:@default=enabled@:>@])],
857 [enable_dri="$enableval"],
869 if test "x$enable_dri" = xno; then
873 AC_ARG_ENABLE([dri3],
874 [AS_HELP_STRING([--enable-dri3],
875 [enable DRI3 @<:@default=auto@:>@])],
876 [enable_dri3="$enableval"],
877 [enable_dri3="$dri3_default"])
879 [AS_HELP_STRING([--enable-glx@<:@=dri|xlib|gallium-xlib@:>@],
880 [enable the GLX library and choose an implementation @<:@default=auto@:>@])],
881 [enable_glx="$enableval"],
883 AC_ARG_ENABLE([osmesa],
884 [AS_HELP_STRING([--enable-osmesa],
885 [enable OSMesa library @<:@default=disabled@:>@])],
886 [enable_osmesa="$enableval"],
888 AC_ARG_ENABLE([gallium-osmesa],
889 [AS_HELP_STRING([--enable-gallium-osmesa],
890 [enable Gallium implementation of the OSMesa library @<:@default=disabled@:>@])],
891 [enable_gallium_osmesa="$enableval"],
892 [enable_gallium_osmesa=no])
894 [AS_HELP_STRING([--disable-egl],
895 [disable EGL library @<:@default=enabled@:>@])],
896 [enable_egl="$enableval"],
900 [AS_HELP_STRING([--enable-xa],
901 [enable build of the XA X Acceleration API @<:@default=disabled@:>@])],
902 [enable_xa="$enableval"],
905 [AS_HELP_STRING([--enable-gbm],
906 [enable gbm library @<:@default=auto@:>@])],
907 [enable_gbm="$enableval"],
909 AC_ARG_ENABLE([nine],
910 [AS_HELP_STRING([--enable-nine],
911 [enable build of the nine Direct3D9 API @<:@default=no@:>@])],
912 [enable_nine="$enableval"],
915 AC_ARG_ENABLE([xvmc],
916 [AS_HELP_STRING([--enable-xvmc],
917 [enable xvmc library @<:@default=auto@:>@])],
918 [enable_xvmc="$enableval"],
920 AC_ARG_ENABLE([vdpau],
921 [AS_HELP_STRING([--enable-vdpau],
922 [enable vdpau library @<:@default=auto@:>@])],
923 [enable_vdpau="$enableval"],
926 [AS_HELP_STRING([--enable-omx],
927 [enable OpenMAX library @<:@default=disabled@:>@])],
928 [enable_omx="$enableval"],
931 [AS_HELP_STRING([--enable-va],
932 [enable va library @<:@default=auto@:>@])],
933 [enable_va="$enableval"],
935 AC_ARG_ENABLE([opencl],
936 [AS_HELP_STRING([--enable-opencl],
937 [enable OpenCL library @<:@default=disabled@:>@])],
938 [enable_opencl="$enableval"],
940 AC_ARG_ENABLE([opencl_icd],
941 [AS_HELP_STRING([--enable-opencl-icd],
942 [Build an OpenCL ICD library to be loaded by an ICD implementation
943 @<:@default=disabled@:>@])],
944 [enable_opencl_icd="$enableval"],
945 [enable_opencl_icd=no])
947 AC_ARG_ENABLE([gallium-tests],
948 [AS_HELP_STRING([--enable-gallium-tests],
949 [Enable optional Gallium tests) @<:@default=disabled@:>@])],
950 [enable_gallium_tests="$enableval"],
951 [enable_gallium_tests=no])
953 # Option for Gallium drivers
955 # Keep this in sync with the --with-gallium-drivers help string default value
956 GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
958 AC_ARG_WITH([gallium-drivers],
959 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
960 [comma delimited Gallium drivers list, e.g.
961 "i915,ilo,nouveau,r300,r600,radeonsi,freedreno,svga,swrast,vc4,virgl"
962 @<:@default=r300,r600,svga,swrast@:>@])],
963 [with_gallium_drivers="$withval"],
964 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
966 # Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it
967 # here so that the script doesn't choke on an unknown driver name later.
968 case "$with_gallium_drivers" in
969 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
970 no) with_gallium_drivers='' ;;
973 if test "x$enable_opengl" = xno -a \
974 "x$enable_gles1" = xno -a \
975 "x$enable_gles2" = xno -a \
976 "x$enable_nine" = xno -a \
977 "x$enable_xa" = xno -a \
978 "x$enable_xvmc" = xno -a \
979 "x$enable_vdpau" = xno -a \
980 "x$enable_omx" = xno -a \
981 "x$enable_va" = xno -a \
982 "x$enable_opencl" = xno; then
983 AC_MSG_ERROR([at least one API should be enabled])
986 # Building OpenGL ES1 and/or ES2 without OpenGL is not supported on mesa 9.0.x
987 if test "x$enable_opengl" = xno -a \
988 "x$enable_gles1" = xyes; then
989 AC_MSG_ERROR([Building OpenGL ES1 without OpenGL is not supported])
992 if test "x$enable_opengl" = xno -a \
993 "x$enable_gles2" = xyes; then
994 AC_MSG_ERROR([Building OpenGL ES2 without OpenGL is not supported])
997 AM_CONDITIONAL(HAVE_OPENGL, test "x$enable_opengl" = xyes)
998 AM_CONDITIONAL(HAVE_OPENGL_ES1, test "x$enable_gles1" = xyes)
999 AM_CONDITIONAL(HAVE_OPENGL_ES2, test "x$enable_gles2" = xyes)
1000 AM_CONDITIONAL(NEED_OPENGL_COMMON, test "x$enable_opengl" = xyes -o \
1001 "x$enable_gles1" = xyes -o \
1002 "x$enable_gles2" = xyes)
1004 # Validate GLX options
1005 if test "x$enable_glx" = xyes; then
1006 if test "x$enable_dri" = xyes; then
1008 elif test -n "$with_gallium_drivers"; then
1009 enable_glx=gallium-xlib
1014 case "x$enable_glx" in
1015 xdri | xxlib | xgallium-xlib)
1016 # GLX requires OpenGL
1017 if test "x$enable_opengl" = xno; then
1018 AC_MSG_ERROR([GLX cannot be built without OpenGL])
1021 # Check individual dependencies
1022 case "x$enable_glx" in
1024 if test "x$enable_dri" = xno; then
1025 AC_MSG_ERROR([DRI-based GLX requires DRI to be enabled])
1029 if test "x$enable_dri" = xyes; then
1030 AC_MSG_ERROR([Xlib-based GLX cannot be built with DRI enabled])
1034 if test "x$enable_dri" = xyes; then
1035 AC_MSG_ERROR([Xlib-based (Gallium) GLX cannot be built with DRI enabled])
1037 if test -z "$with_gallium_drivers"; then
1038 AC_MSG_ERROR([Xlib-based (Gallium) GLX cannot be built without Gallium enabled])
1046 AC_MSG_ERROR([Illegal value for --enable-glx: $enable_glx])
1050 AM_CONDITIONAL(HAVE_DRI_GLX, test "x$enable_glx" = xdri)
1051 AM_CONDITIONAL(HAVE_XLIB_GLX, test "x$enable_glx" = xxlib)
1052 AM_CONDITIONAL(HAVE_GALLIUM_XLIB_GLX, test "x$enable_glx" = xgallium-xlib)
1055 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
1056 [have_libdrm=yes], [have_libdrm=no])
1057 if test "x$have_libdrm" = xyes; then
1058 DEFINES="$DEFINES -DHAVE_LIBDRM"
1061 # Select which platform-dependent DRI code gets built
1064 dri_platform='apple' ;;
1066 dri_platform='none' ;;
1068 dri_platform='drm' ;;
1071 if test "x$enable_dri" = xyes -a "x$dri_platform" = xdrm -a "x$have_libdrm" = xyes; then
1072 have_drisw_kms='yes'
1075 AM_CONDITIONAL(HAVE_DRICOMMON, test "x$enable_dri" = xyes )
1076 AM_CONDITIONAL(HAVE_DRISW, test "x$enable_dri" = xyes )
1077 AM_CONDITIONAL(HAVE_DRISW_KMS, test "x$have_drisw_kms" = xyes )
1078 AM_CONDITIONAL(HAVE_DRI2, test "x$enable_dri" = xyes -a "x$dri_platform" = xdrm -a "x$have_libdrm" = xyes )
1079 AM_CONDITIONAL(HAVE_DRI3, test "x$enable_dri3" = xyes -a "x$dri_platform" = xdrm -a "x$have_libdrm" = xyes )
1080 AM_CONDITIONAL(HAVE_APPLEDRI, test "x$enable_dri" = xyes -a "x$dri_platform" = xapple )
1082 AC_ARG_ENABLE([shared-glapi],
1083 [AS_HELP_STRING([--enable-shared-glapi],
1084 [Enable shared glapi for OpenGL @<:@default=enabled@:>@])],
1085 [enable_shared_glapi="$enableval"],
1086 [enable_shared_glapi=yes])
1088 case "x$enable_opengl$enable_gles1$enable_gles2" in
1090 if test "x$enable_shared_glapi" = xno; then
1091 AC_MSG_ERROR([shared GLAPI required when building two or more of
1092 the following APIs - opengl, gles1 gles2])
1097 AM_CONDITIONAL(HAVE_SHARED_GLAPI, test "x$enable_shared_glapi" = xyes)
1099 # Build the pipe-drivers as separate libraries/modules.
1100 # Do not touch this unless you know what you are doing.
1101 # XXX: Expose via configure option ?
1102 enable_shared_pipe_drivers=no
1105 dnl Driver specific build directories
1108 if test "x$enable_gallium_osmesa" = xyes; then
1109 if ! echo "$with_gallium_drivers" | grep -q 'swrast'; then
1110 AC_MSG_ERROR([gallium_osmesa requires the gallium swrast driver])
1112 if test "x$enable_osmesa" = xyes; then
1113 AC_MSG_ERROR([Cannot enable both classic and Gallium OSMesa implementations])
1117 AC_SUBST([MESA_LLVM])
1121 [AS_HELP_STRING([--with-sha1=libc|libmd|libnettle|libgcrypt|libcrypto|libsha1|CommonCrypto|CryptoAPI],
1122 [choose SHA1 implementation])])
1123 case "x$with_sha1" in
1124 x | xlibc | xlibmd | xlibnettle | xlibgcrypt | xlibcrypto | xlibsha1 | xCommonCrypto | xCryptoAPI)
1127 AC_MSG_ERROR([Illegal value for --with-sha1: $with_sha1])
1130 AC_CHECK_FUNC([SHA1Init], [HAVE_SHA1_IN_LIBC=yes])
1131 if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_LIBC" = xyes; then
1134 if test "x$with_sha1" = xlibc && test "x$HAVE_SHA1_IN_LIBC" != xyes; then
1135 AC_MSG_ERROR([sha1 in libc requested but not found])
1137 if test "x$with_sha1" = xlibc; then
1138 AC_DEFINE([HAVE_SHA1_IN_LIBC], [1],
1139 [Use libc SHA1 functions])
1142 AC_CHECK_FUNC([CC_SHA1_Init], [HAVE_SHA1_IN_COMMONCRYPTO=yes])
1143 if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_COMMONCRYPTO" = xyes; then
1144 with_sha1=CommonCrypto
1146 if test "x$with_sha1" = xCommonCrypto && test "x$HAVE_SHA1_IN_COMMONCRYPTO" != xyes; then
1147 AC_MSG_ERROR([CommonCrypto requested but not found])
1149 if test "x$with_sha1" = xCommonCrypto; then
1150 AC_DEFINE([HAVE_SHA1_IN_COMMONCRYPTO], [1],
1151 [Use CommonCrypto SHA1 functions])
1154 dnl stdcall functions cannot be tested with AC_CHECK_LIB
1155 AC_CHECK_HEADER([wincrypt.h], [HAVE_SHA1_IN_CRYPTOAPI=yes], [], [#include <windows.h>])
1156 if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_CRYPTOAPI" = xyes; then
1159 if test "x$with_sha1" = xCryptoAPI && test "x$HAVE_SHA1_IN_CRYPTOAPI" != xyes; then
1160 AC_MSG_ERROR([CryptoAPI requested but not found])
1162 if test "x$with_sha1" = xCryptoAPI; then
1163 AC_DEFINE([HAVE_SHA1_IN_CRYPTOAPI], [1],
1164 [Use CryptoAPI SHA1 functions])
1167 AC_CHECK_LIB([md], [SHA1Init], [HAVE_LIBMD=yes])
1168 if test "x$with_sha1" = x && test "x$HAVE_LIBMD" = xyes; then
1171 if test "x$with_sha1" = xlibmd && test "x$HAVE_LIBMD" != xyes; then
1172 AC_MSG_ERROR([libmd requested but not found])
1174 if test "x$with_sha1" = xlibmd; then
1175 AC_DEFINE([HAVE_SHA1_IN_LIBMD], [1],
1176 [Use libmd SHA1 functions])
1179 PKG_CHECK_MODULES([LIBSHA1], [libsha1], [HAVE_LIBSHA1=yes], [HAVE_LIBSHA1=no])
1180 if test "x$with_sha1" = x && test "x$HAVE_LIBSHA1" = xyes; then
1183 if test "x$with_sha1" = xlibsha1 && test "x$HAVE_LIBSHA1" != xyes; then
1184 AC_MSG_ERROR([libsha1 requested but not found])
1186 if test "x$with_sha1" = xlibsha1; then
1187 AC_DEFINE([HAVE_SHA1_IN_LIBSHA1], [1],
1188 [Use libsha1 for SHA1])
1191 AC_CHECK_LIB([nettle], [nettle_sha1_init], [HAVE_LIBNETTLE=yes])
1192 if test "x$with_sha1" = x && test "x$HAVE_LIBNETTLE" = xyes; then
1195 if test "x$with_sha1" = xlibnettle && test "x$HAVE_LIBNETTLE" != xyes; then
1196 AC_MSG_ERROR([libnettle requested but not found])
1198 if test "x$with_sha1" = xlibnettle; then
1199 AC_DEFINE([HAVE_SHA1_IN_LIBNETTLE], [1],
1200 [Use libnettle SHA1 functions])
1203 AC_CHECK_LIB([gcrypt], [gcry_md_open], [HAVE_LIBGCRYPT=yes])
1204 if test "x$with_sha1" = x && test "x$HAVE_LIBGCRYPT" = xyes; then
1207 if test "x$with_sha1" = xlibgcrypt && test "x$HAVE_LIBGCRYPT" != xyes; then
1208 AC_MSG_ERROR([libgcrypt requested but not found])
1210 if test "x$with_sha1" = xlibgcrypt; then
1211 AC_DEFINE([HAVE_SHA1_IN_LIBGCRYPT], [1],
1212 [Use libgcrypt SHA1 functions])
1215 # We don't need all of the OpenSSL libraries, just libcrypto
1216 AC_CHECK_LIB([crypto], [SHA1_Init], [HAVE_LIBCRYPTO=yes])
1217 PKG_CHECK_MODULES([OPENSSL], [openssl], [HAVE_OPENSSL_PKC=yes],
1218 [HAVE_OPENSSL_PKC=no])
1219 if test "x$HAVE_LIBCRYPTO" = xyes || test "x$HAVE_OPENSSL_PKC" = xyes; then
1220 if test "x$with_sha1" = x; then
1224 if test "x$with_sha1" = xlibcrypto; then
1225 AC_MSG_ERROR([OpenSSL libcrypto requested but not found])
1228 if test "x$with_sha1" = xlibcrypto; then
1229 if test "x$HAVE_LIBCRYPTO" = xyes; then
1232 SHA1_LIBS="$OPENSSL_LIBS"
1233 SHA1_CFLAGS="$OPENSSL_CFLAGS"
1236 AC_MSG_CHECKING([for SHA1 implementation])
1237 AC_MSG_RESULT([$with_sha1])
1239 AC_SUBST(SHA1_CFLAGS)
1241 # Enable a define for SHA1
1242 if test "x$with_sha1" != "x"; then
1243 DEFINES="$DEFINES -DHAVE_SHA1"
1246 # Allow user to configure out the shader-cache feature
1247 AC_ARG_ENABLE([shader-cache],
1248 AS_HELP_STRING([--disable-shader-cache], [Disable binary shader cache]),
1249 [enable_shader_cache="$enableval"],
1250 [if test "x$with_sha1" != "x"; then
1251 enable_shader_cache=yes
1253 enable_shader_cache=no
1255 if test "x$with_sha1" = "x"; then
1256 if test "x$enable_shader_cache" = "xyes"; then
1257 AC_MSG_ERROR([Cannot enable shader cache (no SHA-1 implementation found)])
1260 AM_CONDITIONAL([ENABLE_SHADER_CACHE], [test x$enable_shader_cache = xyes])
1269 PKG_CHECK_MODULES([LIBUDEV], [libudev >= $LIBUDEV_REQUIRED],
1270 have_libudev=yes, have_libudev=no)
1272 AC_ARG_ENABLE([sysfs],
1273 [AS_HELP_STRING([--enable-sysfs],
1274 [enable /sys PCI identification @<:@default=disabled@:>@])],
1275 [have_sysfs="$enableval"],
1279 if test "x$enable_dri" = xyes; then
1280 if test "$enable_static" = yes; then
1281 AC_MSG_ERROR([Cannot use static libraries for DRI drivers])
1284 # not a hard requirement as swrast does not depend on it
1285 if test "x$have_libdrm" = xyes; then
1286 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
1290 AC_ARG_ENABLE([driglx-direct],
1291 [AS_HELP_STRING([--disable-driglx-direct],
1292 [disable direct rendering in GLX and EGL for DRI \
1293 @<:@default=auto@:>@])],
1294 [driglx_direct="$enableval"],
1295 [driglx_direct="yes"])
1298 dnl libGL configuration per driver
1300 case "x$enable_glx" in
1301 xxlib | xgallium-xlib)
1303 dri_modules="x11 xext xcb"
1304 PKG_CHECK_MODULES([XLIBGL], [$dri_modules])
1305 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
1306 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
1307 GL_LIB_DEPS="$XLIBGL_LIBS"
1308 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1309 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm $PTHREAD_LIBS"
1313 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
1315 # find the DRI deps for libGL
1316 dri_modules="x11 xext xdamage xfixes x11-xcb xcb xcb-glx >= $XCBGLX_REQUIRED"
1318 if test x"$driglx_direct" = xyes; then
1319 if test x"$dri_platform" = xdrm ; then
1320 DEFINES="$DEFINES -DGLX_USE_DRM"
1321 if test "x$have_libdrm" != xyes; then
1322 AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
1325 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
1326 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED"
1327 if test x"$enable_dri3" = xyes; then
1328 PKG_CHECK_MODULES([DRI3PROTO], [dri3proto >= $DRI3PROTO_REQUIRED])
1329 PKG_CHECK_MODULES([PRESENTPROTO], [presentproto >= $PRESENTPROTO_REQUIRED])
1332 if test x"$enable_dri" = xyes; then
1333 dri_modules="$dri_modules xcb-dri2 >= $XCBDRI2_REQUIRED"
1336 if test x"$enable_dri3" = xyes; then
1337 PKG_CHECK_EXISTS([xcb >= $XCB_REQUIRED], [], AC_MSG_ERROR([DRI3 requires xcb >= $XCB_REQUIRED]))
1338 dri3_modules="xcb xcb-dri3 xcb-present xcb-sync xshmfence >= $XSHMFENCE_REQUIRED"
1339 PKG_CHECK_MODULES([XCB_DRI3], [$dri3_modules])
1342 if test x"$dri_platform" = xapple ; then
1343 DEFINES="$DEFINES -DGLX_USE_APPLEGL"
1347 # add xf86vidmode if available
1348 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
1349 if test "$HAVE_XF86VIDMODE" = yes ; then
1350 dri_modules="$dri_modules xxf86vm"
1353 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
1354 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
1355 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
1356 GL_LIB_DEPS="$DRIGL_LIBS"
1358 # need DRM libs, $PTHREAD_LIBS, etc.
1359 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1360 GL_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
1365 if test "$have_libudev" = yes; then
1366 DEFINES="$DEFINES -DHAVE_LIBUDEV"
1370 if test "$have_sysfs" = yes; then
1371 DEFINES="$DEFINES -DHAVE_SYSFS"
1375 # This is outside the case (above) so that it is invoked even for non-GLX
1377 AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
1379 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1380 GLESv1_CM_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
1381 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1382 GLESv2_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
1384 AC_SUBST([X11_INCLUDES])
1385 AC_SUBST([GL_LIB_DEPS])
1386 AC_SUBST([GL_PC_REQ_PRIV])
1387 AC_SUBST([GL_PC_LIB_PRIV])
1388 AC_SUBST([GL_PC_CFLAGS])
1389 AC_SUBST([DRI_PC_REQ_PRIV])
1390 AC_SUBST([GLESv1_CM_LIB_DEPS])
1391 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
1392 AC_SUBST([GLESv2_LIB_DEPS])
1393 AC_SUBST([GLESv2_PC_LIB_PRIV])
1395 AC_SUBST([HAVE_XF86VIDMODE])
1400 case "x$enable_glx" in
1401 xxlib | xgallium-xlib)
1402 DEFINES="$DEFINES -DUSE_XSHM"
1405 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1406 if test "x$driglx_direct" = xyes; then
1407 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1416 AC_ARG_ENABLE([glx-tls],
1417 [AS_HELP_STRING([--enable-glx-tls],
1418 [enable TLS support in GLX @<:@default=disabled@:>@])],
1419 [GLX_USE_TLS="$enableval"],
1421 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
1423 AS_IF([test "x$GLX_USE_TLS" = xyes -a "x$ax_pthread_ok" = xyes],
1424 [DEFINES="${DEFINES} -DGLX_USE_TLS"])
1426 dnl Read-only text section on x86 hardened platforms
1427 AC_ARG_ENABLE([glx-read-only-text],
1428 [AS_HELP_STRING([--enable-glx-read-only-text],
1429 [Disable writable .text section on x86 (decreases performance) @<:@default=disabled@:>@])],
1430 [enable_glx_read_only_text="$enableval"],
1431 [enable_glx_read_only_text=no])
1432 if test "x$enable_glx_read_only_text" = xyes; then
1433 DEFINES="$DEFINES -DGLX_X86_READONLY_TEXT"
1439 dnl Directory for DRI drivers
1440 AC_ARG_WITH([dri-driverdir],
1441 [AS_HELP_STRING([--with-dri-driverdir=DIR],
1442 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
1443 [DRI_DRIVER_INSTALL_DIR="$withval"],
1444 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
1445 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
1446 dnl Extra search path for DRI drivers
1447 AC_ARG_WITH([dri-searchpath],
1448 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
1449 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
1450 [DRI_DRIVER_SEARCH_DIR="$withval"],
1451 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
1452 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
1453 dnl Which drivers to build - default is chosen by platform
1454 AC_ARG_WITH([dri-drivers],
1455 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
1456 [comma delimited classic DRI drivers list, e.g.
1457 "swrast,i965,radeon" @<:@default=auto@:>@])],
1458 [with_dri_drivers="$withval"],
1459 [with_dri_drivers=auto])
1461 if test "x$with_dri_drivers" = xauto; then
1462 if test "x$enable_opengl" = xyes -a "x$enable_dri" = xyes; then
1463 with_dri_drivers="yes"
1465 with_dri_drivers="no"
1468 if test "x$with_dri_drivers" = xno; then
1472 dnl If $with_dri_drivers is yes, drivers will be added through
1473 dnl platform checks. Set DEFINES and LIB_DEPS
1474 if test "x$enable_dri" = xyes; then
1475 # Platform specific settings and drivers to build
1478 DEFINES="$DEFINES -DHAVE_ALIAS"
1479 if test "x$enable_dri3" = xyes; then
1480 DEFINES="$DEFINES -DHAVE_DRI3"
1483 if test "x$have_pci_id" != xyes; then
1484 AC_MSG_ERROR([libudev-dev or sysfs required for building DRI])
1489 # Build only the drivers for cards that exist on PowerPC/sparc
1490 if test "x$with_dri_drivers" = "xyes"; then
1491 with_dri_drivers="r200 radeon swrast"
1496 *freebsd* | dragonfly* | *netbsd* | openbsd*)
1497 DEFINES="$DEFINES -DHAVE_ALIAS"
1500 DEFINES="$DEFINES -DHAVE_ALIAS"
1503 if test "x$with_dri_drivers" = "xyes"; then
1504 with_dri_drivers="swrast"
1508 DEFINES="$DEFINES -DGLX_ALIAS_UNSUPPORTED -DBUILDING_MESA"
1509 if test "x$with_dri_drivers" = "xyes"; then
1510 with_dri_drivers="swrast"
1516 if test "x$with_dri_drivers" = "xyes"; then
1517 with_dri_drivers="i915 i965 nouveau r200 radeon swrast"
1521 PKG_CHECK_MODULES([EXPAT], [expat], [],
1522 # expat version 2.0 and earlier do not provide expat.pc
1523 [AC_CHECK_HEADER([expat.h],[],
1524 [AC_MSG_ERROR([Expat headers required for DRI not found])])
1525 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1526 [AC_MSG_ERROR([Expat library required for DRI not found])])
1527 EXPAT_LIBS="-lexpat"])
1529 # put all the necessary libs together
1530 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1533 AC_SUBST([DRI_LIB_DEPS])
1536 dnl Duplicates in DRI_DIRS are removed by sorting it at the end of this block
1537 if test -n "$with_dri_drivers"; then
1538 if test "x$enable_opengl" != xyes; then
1539 AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1542 dri_drivers=`IFS=', '; echo $with_dri_drivers`
1543 for driver in $dri_drivers; do
1544 DRI_DIRS="$DRI_DIRS $driver"
1548 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1552 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1555 HAVE_NOUVEAU_DRI=yes;
1556 PKG_CHECK_MODULES([NVVIEUX], [libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED])
1559 HAVE_RADEON_DRI=yes;
1560 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1564 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1567 HAVE_SWRAST_DRI=yes;
1570 AC_MSG_ERROR([classic DRI driver '$driver' does not exist])
1574 DRI_DIRS=`echo $DRI_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1579 # Vulkan driver configuration
1582 AC_ARG_WITH([vulkan-drivers],
1583 [AS_HELP_STRING([--with-vulkan-drivers@<:@=DIRS...@:>@],
1584 [comma delimited Vulkan drivers list, e.g.
1586 @<:@default=no@:>@])],
1587 [with_vulkan_drivers="$withval"],
1588 [with_vulkan_drivers="no"])
1590 # Doing '--without-vulkan-drivers' will set this variable to 'no'. Clear it
1591 # here so that the script doesn't choke on an unknown driver name later.
1592 case "x$with_vulkan_drivers" in
1593 xyes) with_vulkan_drivers="$VULKAN_DRIVERS_DEFAULT" ;;
1594 xno) with_vulkan_drivers='' ;;
1597 AC_ARG_WITH([vulkan-icddir],
1598 [AS_HELP_STRING([--with-vulkan-icddir=DIR],
1599 [directory for the Vulkan driver icd files @<:@${sysconfdir}/vulkan/icd.d@:>@])],
1600 [VULKAN_ICD_INSTALL_DIR="$withval"],
1601 [VULKAN_ICD_INSTALL_DIR='${sysconfdir}/vulkan/icd.d'])
1602 AC_SUBST([VULKAN_ICD_INSTALL_DIR])
1604 if test -n "$with_vulkan_drivers"; then
1605 VULKAN_DRIVERS=`IFS=', '; echo $with_vulkan_drivers`
1606 for driver in $VULKAN_DRIVERS; do
1609 if test "x$HAVE_I965_DRI" != xyes; then
1610 AC_MSG_ERROR([Intel Vulkan driver requires the i965 dri driver])
1612 if test "x$with_sha1" == "x"; then
1613 AC_MSG_ERROR([Intel Vulkan driver requires SHA1])
1615 HAVE_INTEL_VULKAN=yes;
1619 AC_MSG_ERROR([Vulkan driver '$driver' does not exist])
1623 VULKAN_DRIVERS=`echo $VULKAN_DRIVERS|tr " " "\n"|sort -u|tr "\n" " "`
1627 AM_CONDITIONAL(NEED_MEGADRIVER, test -n "$DRI_DIRS")
1628 AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_glx" = xxlib -o \
1629 "x$enable_osmesa" = xyes -o \
1633 dnl OSMesa configuration
1636 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1637 AC_ARG_WITH([osmesa-bits],
1638 [AS_HELP_STRING([--with-osmesa-bits=BITS],
1639 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1640 [osmesa_bits="$withval"],
1642 if test "x$osmesa_bits" != x8; then
1643 if test "x$enable_dri" = xyes -o "x$enable_glx" != xno; then
1644 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1648 case "x$osmesa_bits" in
1650 OSMESA_LIB="${OSMESA_LIB}"
1653 OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
1654 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1657 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1661 if test "x$enable_osmesa" = xyes -o "x$enable_gallium_osmesa" = xyes; then
1662 # only link libraries with osmesa if shared
1663 if test "$enable_static" = no; then
1664 OSMESA_LIB_DEPS="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1668 OSMESA_PC_LIB_PRIV="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1671 AC_SUBST([OSMESA_LIB_DEPS])
1672 AC_SUBST([OSMESA_PC_REQ])
1673 AC_SUBST([OSMESA_PC_LIB_PRIV])
1676 dnl gbm configuration
1678 if test "x$enable_gbm" = xauto; then
1679 case "$with_egl_platforms" in
1686 if test "x$enable_gbm" = xyes; then
1687 if test "x$need_pci_id$have_pci_id" = xyesno; then
1688 AC_MSG_ERROR([gbm requires udev >= $LIBUDEV_REQUIRED or sysfs])
1691 if test "x$enable_dri" = xyes; then
1692 if test "x$enable_shared_glapi" = xno; then
1693 AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1696 # Strictly speaking libgbm does not require --enable-dri, although
1697 # both of its backends do. Thus one can build libgbm without any
1698 # backends if --disable-dri is set.
1699 # To avoid unnecessary complexity of checking if at least one backend
1700 # is available when building, just mandate --enable-dri.
1701 AC_MSG_ERROR([gbm requires --enable-dri])
1704 AM_CONDITIONAL(HAVE_GBM, test "x$enable_gbm" = xyes)
1705 if test "x$need_pci_id$have_libudev" = xyesyes; then
1706 GBM_PC_REQ_PRIV="libudev >= $LIBUDEV_REQUIRED"
1710 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1711 AC_SUBST([GBM_PC_REQ_PRIV])
1712 AC_SUBST([GBM_PC_LIB_PRIV])
1715 dnl EGL configuration
1719 if test "x$enable_egl" = xyes; then
1720 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS $PTHREAD_LIBS"
1722 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1724 if test "$enable_static" != yes; then
1725 if test "x$enable_dri" = xyes; then
1726 HAVE_EGL_DRIVER_DRI2=1
1727 if test "x$enable_shared_glapi" = xno; then
1728 AC_MSG_ERROR([egl_dri2 requires --enable-shared-glapi])
1730 if test "x$enable_dri3" = xyes; then
1731 HAVE_EGL_DRIVER_DRI3=1
1732 if test "x$enable_shared_glapi" = xno; then
1733 AC_MSG_ERROR([egl_dri3 requires --enable-shared-glapi])
1737 # Avoid building an "empty" libEGL. Drop/update this
1738 # when other backends (haiku?) come along.
1739 AC_MSG_ERROR([egl requires --enable-dri])
1744 AM_CONDITIONAL(HAVE_EGL, test "x$enable_egl" = xyes)
1745 AC_SUBST([EGL_LIB_DEPS])
1750 dnl XA configuration
1752 if test "x$enable_xa" = xyes; then
1753 if test "x$with_gallium_drivers" = xswrast; then
1755 Building xa requires at least one non swrast gallium driver.
1756 If you are looking to use libxatracker.so with the VMware driver,
1757 make sure to include svga in the gallium drivers list, apart from
1759 Example: ./configure --enable-xa --with-gallium-drivers=svga...])
1761 gallium_st="$gallium_st xa"
1763 AM_CONDITIONAL(HAVE_ST_XA, test "x$enable_xa" = xyes)
1766 dnl Gallium G3DVL configuration
1768 if test -n "$with_gallium_drivers" -a "x$with_gallium_drivers" != xswrast; then
1769 if test "x$enable_xvmc" = xauto; then
1770 PKG_CHECK_EXISTS([xvmc >= $XVMC_REQUIRED], [enable_xvmc=yes], [enable_xvmc=no])
1773 if test "x$enable_vdpau" = xauto; then
1774 PKG_CHECK_EXISTS([vdpau >= $VDPAU_REQUIRED], [enable_vdpau=yes], [enable_vdpau=no])
1777 if test "x$enable_omx" = xauto; then
1778 PKG_CHECK_EXISTS([libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED], [enable_omx=yes], [enable_omx=no])
1781 if test "x$enable_va" = xauto; then
1782 PKG_CHECK_EXISTS([libva >= $LIBVA_REQUIRED], [enable_va=yes], [enable_va=no])
1786 if test "x$enable_dri" = xyes -o \
1787 "x$enable_xvmc" = xyes -o \
1788 "x$enable_vdpau" = xyes -o \
1789 "x$enable_omx" = xyes -o \
1790 "x$enable_va" = xyes; then
1793 AM_CONDITIONAL(NEED_GALLIUM_VL, test "x$need_gallium_vl" = xyes)
1795 if test "x$enable_xvmc" = xyes -o \
1796 "x$enable_vdpau" = xyes -o \
1797 "x$enable_omx" = xyes -o \
1798 "x$enable_va" = xyes; then
1799 if test x"$enable_dri3" = xyes; then
1800 PKG_CHECK_MODULES([VL], [xcb-dri3 xcb-present xcb-sync xshmfence >= $XSHMFENCE_REQUIRED
1801 x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
1803 PKG_CHECK_MODULES([VL], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
1805 need_gallium_vl_winsys=yes
1807 AM_CONDITIONAL(NEED_GALLIUM_VL_WINSYS, test "x$need_gallium_vl_winsys" = xyes)
1809 if test "x$enable_xvmc" = xyes; then
1810 PKG_CHECK_MODULES([XVMC], [xvmc >= $XVMC_REQUIRED])
1811 gallium_st="$gallium_st xvmc"
1813 AM_CONDITIONAL(HAVE_ST_XVMC, test "x$enable_xvmc" = xyes)
1815 if test "x$enable_vdpau" = xyes; then
1816 PKG_CHECK_MODULES([VDPAU], [vdpau >= $VDPAU_REQUIRED])
1817 gallium_st="$gallium_st vdpau"
1818 DEFINES="$DEFINES -DHAVE_ST_VDPAU"
1820 AM_CONDITIONAL(HAVE_ST_VDPAU, test "x$enable_vdpau" = xyes)
1822 if test "x$enable_omx" = xyes; then
1823 PKG_CHECK_MODULES([OMX], [libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED])
1824 gallium_st="$gallium_st omx"
1826 AM_CONDITIONAL(HAVE_ST_OMX, test "x$enable_omx" = xyes)
1828 if test "x$enable_va" = xyes; then
1829 PKG_CHECK_MODULES([VA], [libva >= $LIBVA_REQUIRED])
1830 gallium_st="$gallium_st va"
1832 AM_CONDITIONAL(HAVE_ST_VA, test "x$enable_va" = xyes)
1835 dnl Nine Direct3D9 configuration
1837 if test "x$enable_nine" = xyes; then
1838 if ! echo "$with_gallium_drivers" | grep -q 'swrast'; then
1839 AC_MSG_ERROR([nine requires the gallium swrast driver])
1841 if test "x$with_gallium_drivers" = xswrast; then
1842 AC_MSG_ERROR([nine requires at least one non-swrast gallium driver])
1844 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6; then
1845 AC_MSG_ERROR([gcc >= 4.6 is required to build nine])
1848 if test "x$enable_dri3" = xno; then
1849 AC_MSG_WARN([using nine together with wine requires DRI3 enabled system])
1852 gallium_st="$gallium_st nine"
1854 AM_CONDITIONAL(HAVE_ST_NINE, test "x$enable_nine" = xyes)
1857 dnl OpenCL configuration
1860 AC_ARG_WITH([clang-libdir],
1861 [AS_HELP_STRING([--with-clang-libdir],
1862 [Path to Clang libraries @<:@default=llvm-config --libdir@:>@])],
1863 [CLANG_LIBDIR="$withval"],
1866 PKG_CHECK_EXISTS([libclc], [have_libclc=yes], [have_libclc=no])
1867 PKG_CHECK_MODULES([LIBELF], [libelf], [have_libelf=yes], [have_libelf=no])
1869 if test "x$have_libelf" = xno; then
1872 AC_CHECK_LIB([elf], [elf_memory], [have_libelf=yes;LIBELF_LIBS=-lelf], [have_libelf=no])
1873 AC_SUBST([LIBELF_LIBS])
1874 AC_SUBST([LIBELF_CFLAGS])
1877 if test "x$enable_opencl" = xyes; then
1878 if test -z "$with_gallium_drivers"; then
1879 AC_MSG_ERROR([cannot enable OpenCL without Gallium])
1882 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 7; then
1883 AC_MSG_ERROR([gcc >= 4.7 is required to build clover])
1886 if test "x$have_libclc" = xno; then
1887 AC_MSG_ERROR([pkg-config cannot find libclc.pc which is required to build clover.
1888 Make sure the directory containing libclc.pc is specified in your
1889 PKG_CONFIG_PATH environment variable.
1890 By default libclc.pc is installed to /usr/local/share/pkgconfig/])
1892 LIBCLC_INCLUDEDIR=`$PKG_CONFIG --variable=includedir libclc`
1893 LIBCLC_LIBEXECDIR=`$PKG_CONFIG --variable=libexecdir libclc`
1894 AC_SUBST([LIBCLC_INCLUDEDIR])
1895 AC_SUBST([LIBCLC_LIBEXECDIR])
1898 gallium_st="$gallium_st clover"
1900 if test "x$enable_opencl_icd" = xyes; then
1901 OPENCL_LIBNAME="MesaOpenCL"
1903 OPENCL_LIBNAME="OpenCL"
1906 if test "x$have_libelf" != xyes; then
1907 AC_MSG_ERROR([Clover requires libelf])
1910 AM_CONDITIONAL(HAVE_CLOVER, test "x$enable_opencl" = xyes)
1911 AM_CONDITIONAL(HAVE_CLOVER_ICD, test "x$enable_opencl_icd" = xyes)
1912 AC_SUBST([OPENCL_LIBNAME])
1915 dnl Gallium configuration
1917 AM_CONDITIONAL(HAVE_GALLIUM, test -n "$with_gallium_drivers")
1919 AC_SUBST([LLVM_BINDIR])
1920 AC_SUBST([LLVM_CFLAGS])
1921 AC_SUBST([LLVM_CPPFLAGS])
1922 AC_SUBST([LLVM_CXXFLAGS])
1923 AC_SUBST([LLVM_LIBDIR])
1924 AC_SUBST([LLVM_LIBS])
1925 AC_SUBST([LLVM_LDFLAGS])
1926 AC_SUBST([LLVM_INCLUDEDIR])
1927 AC_SUBST([LLVM_VERSION])
1928 AC_SUBST([CLANG_RESOURCE_DIR])
1930 case "x$enable_opengl$enable_gles1$enable_gles2" in
1932 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1936 AC_SUBST([VG_LIB_DEPS])
1937 AC_SUBST([EGL_CLIENT_APIS])
1940 dnl EGL Platforms configuration
1942 AC_ARG_WITH([egl-platforms],
1943 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1944 [comma delimited native platforms libEGL supports, e.g.
1945 "x11,drm" @<:@default=auto@:>@])],
1946 [with_egl_platforms="$withval"],
1947 [if test "x$enable_egl" = xyes; then
1948 with_egl_platforms="x11"
1950 with_egl_platforms=""
1953 if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
1954 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1957 PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland_scanner],
1958 WAYLAND_SCANNER=`$PKG_CONFIG --variable=wayland_scanner wayland_scanner`,
1960 if test "x$WAYLAND_SCANNER" = x; then
1961 AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner])
1964 # Do per-EGL platform setups and checks
1965 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1966 for plat in $egl_platforms; do
1969 test "x$have_libdrm" != xyes &&
1970 AC_MSG_ERROR([EGL platform wayland requires libdrm >= $LIBDRM_REQUIRED])
1972 PKG_CHECK_MODULES([WAYLAND], [wayland-client >= $WAYLAND_REQUIRED wayland-server >= $WAYLAND_REQUIRED])
1974 if test "x$WAYLAND_SCANNER" = x; then
1975 AC_MSG_ERROR([wayland-scanner is needed to compile the wayland egl platform])
1980 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED xcb-xfixes])
1984 test "x$enable_gbm" = "xno" &&
1985 AC_MSG_ERROR([EGL platform drm needs gbm])
1986 test "x$have_libdrm" != xyes &&
1987 AC_MSG_ERROR([EGL platform drm requires libdrm >= $LIBDRM_REQUIRED])
1991 test "x$have_libdrm" != xyes &&
1992 AC_MSG_ERROR([EGL platform surfaceless requires libdrm >= $LIBDRM_REQUIRED])
1999 AC_MSG_ERROR([EGL platform '$plat' does not exist])
2003 case "$plat$need_pci_id$have_pci_id" in
2004 waylandyesno|drmyesno)
2005 AC_MSG_ERROR([cannot build $plat platform without udev >= $LIBUDEV_REQUIRED or sysfs]) ;;
2009 # libEGL wants to default to the first platform specified in
2010 # ./configure. parse that here.
2011 if test "x$egl_platforms" != "x"; then
2012 FIRST_PLATFORM_CAPS=`echo $egl_platforms | sed 's| .*||' | tr '[[a-z]]' '[[A-Z]]'`
2013 EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
2015 EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
2018 AM_CONDITIONAL(HAVE_PLATFORM_X11, echo "$egl_platforms" | grep -q 'x11')
2019 AM_CONDITIONAL(HAVE_PLATFORM_WAYLAND, echo "$egl_platforms" | grep -q 'wayland')
2020 AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep -q 'drm')
2021 AM_CONDITIONAL(HAVE_EGL_PLATFORM_SURFACELESS, echo "$egl_platforms" | grep -q 'surfaceless')
2022 AM_CONDITIONAL(HAVE_EGL_PLATFORM_ANDROID, echo "$egl_platforms" | grep -q 'android')
2024 AM_CONDITIONAL(HAVE_EGL_DRIVER_DRI2, test "x$HAVE_EGL_DRIVER_DRI2" != "x")
2026 AC_SUBST([EGL_NATIVE_PLATFORM])
2027 AC_SUBST([EGL_CFLAGS])
2029 # If we don't have the X11 platform, set this define so we don't try to include
2031 if ! echo "$egl_platforms" | grep -q 'x11'; then
2032 DEFINES="$DEFINES -DMESA_EGL_NO_X11_HEADERS"
2033 GL_PC_CFLAGS="$GL_PC_CFLAGS -DMESA_EGL_NO_X11_HEADERS"
2039 AC_ARG_ENABLE([gallium-llvm],
2040 [AS_HELP_STRING([--enable-gallium-llvm],
2041 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
2042 [enable_gallium_llvm="$enableval"],
2043 [enable_gallium_llvm=auto])
2045 AC_ARG_ENABLE([llvm-shared-libs],
2046 [AS_HELP_STRING([--enable-llvm-shared-libs],
2047 [link with LLVM shared libraries @<:@default=enabled@:>@])],
2048 [enable_llvm_shared_libs="$enableval"],
2049 [enable_llvm_shared_libs=yes])
2051 AC_ARG_WITH([llvm-prefix],
2052 [AS_HELP_STRING([--with-llvm-prefix],
2053 [Prefix for LLVM installations in non-standard locations])],
2054 [llvm_prefix="$withval"],
2058 # Call this inside ` ` to get the return value.
2059 # $1 is the llvm-config command with arguments.
2060 strip_unwanted_llvm_flags() {
2061 # Use \> (marks the end of the word)
2063 -e 's/-DNDEBUG\>//g' \
2064 -e 's/-D_GNU_SOURCE\>//g' \
2065 -e 's/-pedantic\>//g' \
2066 -e 's/-Wcovered-switch-default\>//g' \
2070 -e 's/-Wcast-qual\>//g' \
2071 -e 's/-Woverloaded-virtual\>//g' \
2072 -e 's/-fcolor-diagnostics\>//g' \
2073 -e 's/-fdata-sections\>//g' \
2074 -e 's/-ffunction-sections\>//g' \
2075 -e 's/-fno-exceptions\>//g' \
2076 -e 's/-fomit-frame-pointer\>//g' \
2077 -e 's/-fvisibility-inlines-hidden\>//g' \
2079 -e 's/-fstack-protector-strong\>//g'
2082 llvm_check_version_for() {
2083 if test "${LLVM_VERSION_INT}${LLVM_VERSION_PATCH}" -lt "${1}0${2}${3}"; then
2084 AC_MSG_ERROR([LLVM $1.$2.$3 or newer is required for $4])
2090 if test -z "$with_gallium_drivers"; then
2091 enable_gallium_llvm=no
2093 if test "x$enable_gallium_llvm" = xauto; then
2095 i*86|x86_64|amd64) enable_gallium_llvm=yes;;
2098 if test "x$enable_gallium_llvm" = xyes; then
2099 if test -n "$llvm_prefix"; then
2100 AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no], ["$llvm_prefix/bin"])
2102 AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no])
2105 if test "x$LLVM_CONFIG" != xno; then
2106 LLVM_VERSION=`$LLVM_CONFIG --version | egrep -o '^[[0-9.]]+'`
2107 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
2108 LLVM_BINDIR=`$LLVM_CONFIG --bindir`
2109 LLVM_CPPFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cppflags"`
2110 LLVM_CFLAGS=$LLVM_CPPFLAGS # CPPFLAGS seem to be sufficient
2111 LLVM_CXXFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cxxflags"`
2112 LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
2113 LLVM_LIBDIR=`$LLVM_CONFIG --libdir`
2115 AC_COMPUTE_INT([LLVM_VERSION_MAJOR], [LLVM_VERSION_MAJOR],
2116 [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
2117 AC_COMPUTE_INT([LLVM_VERSION_MINOR], [LLVM_VERSION_MINOR],
2118 [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
2120 LLVM_VERSION_PATCH=`echo $LLVM_VERSION | cut -d. -f3 | egrep -o '^[[0-9]]+'`
2121 if test -z "$LLVM_VERSION_PATCH"; then
2122 LLVM_VERSION_PATCH=0
2125 if test -n "${LLVM_VERSION_MAJOR}"; then
2126 LLVM_VERSION_INT="${LLVM_VERSION_MAJOR}0${LLVM_VERSION_MINOR}"
2128 LLVM_VERSION_INT=`echo $LLVM_VERSION | sed -e 's/\([[0-9]]\)\.\([[0-9]]\)/\10\2/g'`
2131 LLVM_REQUIRED_VERSION_MAJOR="3"
2132 LLVM_REQUIRED_VERSION_MINOR="3"
2133 if test "$LLVM_VERSION_INT" -lt "${LLVM_REQUIRED_VERSION_MAJOR}0${LLVM_REQUIRED_VERSION_MINOR}"; then
2134 AC_MSG_ERROR([LLVM $LLVM_REQUIRED_VERSION_MAJOR.$LLVM_REQUIRED_VERSION_MINOR or newer is required])
2137 LLVM_COMPONENTS="engine bitwriter mcjit mcdisassembler"
2139 if test "x$enable_opencl" = xyes; then
2140 llvm_check_version_for "3" "5" "0" "opencl"
2142 LLVM_COMPONENTS="${LLVM_COMPONENTS} all-targets ipo linker instrumentation"
2143 LLVM_COMPONENTS="${LLVM_COMPONENTS} irreader option objcarcopts profiledata"
2145 DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT -DMESA_LLVM_VERSION_PATCH=$LLVM_VERSION_PATCH"
2148 dnl Check for Clang internal headers
2149 if test "x$enable_opencl" = xyes; then
2150 if test -z "$CLANG_LIBDIR"; then
2151 CLANG_LIBDIR=${LLVM_LIBDIR}
2153 CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION}
2154 AS_IF([test ! -f "$CLANG_RESOURCE_DIR/include/stddef.h"],
2155 [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.])])
2165 if test "x$enable_opencl" = xyes; then
2166 AC_MSG_ERROR([cannot enable OpenCL without LLVM])
2170 dnl Directory for XVMC libs
2171 AC_ARG_WITH([xvmc-libdir],
2172 [AS_HELP_STRING([--with-xvmc-libdir=DIR],
2173 [directory for the XVMC libraries @<:@default=${libdir}@:>@])],
2174 [XVMC_LIB_INSTALL_DIR="$withval"],
2175 [XVMC_LIB_INSTALL_DIR='${libdir}'])
2176 AC_SUBST([XVMC_LIB_INSTALL_DIR])
2181 AM_CONDITIONAL(HAVE_GALLIUM_TESTS, test "x$enable_gallium_tests" = xyes)
2183 dnl Directory for VDPAU libs
2184 AC_ARG_WITH([vdpau-libdir],
2185 [AS_HELP_STRING([--with-vdpau-libdir=DIR],
2186 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
2187 [VDPAU_LIB_INSTALL_DIR="$withval"],
2188 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
2189 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
2191 dnl Directory for OMX libs
2193 AC_ARG_WITH([omx-libdir],
2194 [AS_HELP_STRING([--with-omx-libdir=DIR],
2195 [directory for the OMX libraries])],
2196 [OMX_LIB_INSTALL_DIR="$withval"],
2197 [OMX_LIB_INSTALL_DIR=`$PKG_CONFIG --define-variable=libdir=\$libdir --variable=pluginsdir libomxil-bellagio`])
2198 AC_SUBST([OMX_LIB_INSTALL_DIR])
2200 dnl Directory for VA libs
2202 AC_ARG_WITH([va-libdir],
2203 [AS_HELP_STRING([--with-va-libdir=DIR],
2204 [directory for the VA libraries @<:@${libdir}/dri@:>@])],
2205 [VA_LIB_INSTALL_DIR="$withval"],
2206 [VA_LIB_INSTALL_DIR="${libdir}/dri"])
2207 AC_SUBST([VA_LIB_INSTALL_DIR])
2209 AC_ARG_WITH([d3d-libdir],
2210 [AS_HELP_STRING([--with-d3d-libdir=DIR],
2211 [directory for the D3D modules @<:@${libdir}/d3d@:>@])],
2212 [D3D_DRIVER_INSTALL_DIR="$withval"],
2213 [D3D_DRIVER_INSTALL_DIR="${libdir}/d3d"])
2214 AC_SUBST([D3D_DRIVER_INSTALL_DIR])
2217 dnl Gallium helper functions
2219 gallium_require_drm() {
2220 if test "x$have_libdrm" != xyes; then
2221 AC_MSG_ERROR([$1 requires libdrm >= $LIBDRM_REQUIRED])
2225 gallium_require_llvm() {
2226 if test "x$MESA_LLVM" = x0; then
2227 case "$host" in *gnux32) return;; esac
2229 i*86|x86_64|amd64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
2234 gallium_require_drm_loader() {
2235 if test "x$need_pci_id$have_pci_id" = xyesno; then
2236 AC_MSG_ERROR([Gallium drm loader requires libudev >= $LIBUDEV_REQUIRED or sysfs])
2240 dnl This is for Glamor. Skip this if OpenGL is disabled.
2242 if test "x$enable_opengl" = xno; then
2246 case "$with_egl_platforms" in
2250 AC_MSG_ERROR([--with-egl-platforms=drm is required to build the $1 driver.])
2253 if test "x$enable_gbm" != xyes; then
2254 AC_MSG_ERROR([--enable-gbm is required to build the $1 driver.])
2258 radeon_llvm_check() {
2259 if test ${LLVM_VERSION_INT} -lt 307; then
2260 amdgpu_llvm_target_name='r600'
2262 amdgpu_llvm_target_name='amdgpu'
2264 if test "x$enable_gallium_llvm" != "xyes"; then
2265 AC_MSG_ERROR([--enable-gallium-llvm is required when building $1])
2267 llvm_check_version_for "3" "6" "0" $1
2268 if test true && $LLVM_CONFIG --targets-built | grep -iqvw $amdgpu_llvm_target_name ; then
2269 AC_MSG_ERROR([LLVM $amdgpu_llvm_target_name not enabled in your LLVM build.])
2271 LLVM_COMPONENTS="${LLVM_COMPONENTS} $amdgpu_llvm_target_name bitreader ipo"
2272 NEED_RADEON_LLVM=yes
2273 if test "x$have_libelf" != xyes; then
2274 AC_MSG_ERROR([$1 requires libelf when using llvm])
2279 gallium_require_llvm $1
2280 if test ${LLVM_VERSION_INT} -lt 306; then
2281 AC_MSG_ERROR([LLVM version 3.6 or later required when building $1])
2283 if test "x$enable_gallium_llvm" != "xyes"; then
2284 AC_MSG_ERROR([--enable-gallium-llvm is required when building $1])
2288 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
2289 if test -n "$with_gallium_drivers"; then
2290 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
2291 for driver in $gallium_drivers; do
2294 HAVE_GALLIUM_SVGA=yes
2295 gallium_require_drm "svga"
2296 gallium_require_drm_loader
2299 HAVE_GALLIUM_I915=yes
2300 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
2301 gallium_require_drm "Gallium i915"
2302 gallium_require_drm_loader
2305 HAVE_GALLIUM_ILO=yes
2306 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
2307 gallium_require_drm "Gallium i965/ilo"
2308 gallium_require_drm_loader
2311 HAVE_GALLIUM_R300=yes
2312 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2313 gallium_require_drm "Gallium R300"
2314 gallium_require_drm_loader
2315 gallium_require_llvm "Gallium R300"
2318 HAVE_GALLIUM_R600=yes
2319 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2320 gallium_require_drm "Gallium R600"
2321 gallium_require_drm_loader
2322 if test "x$enable_opencl" = xyes; then
2323 radeon_llvm_check "r600g"
2324 LLVM_COMPONENTS="${LLVM_COMPONENTS} bitreader asmparser"
2328 HAVE_GALLIUM_RADEONSI=yes
2329 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2330 PKG_CHECK_MODULES([AMDGPU], [libdrm_amdgpu >= $LIBDRM_AMDGPU_REQUIRED])
2331 gallium_require_drm "radeonsi"
2332 gallium_require_drm_loader
2333 radeon_llvm_check "radeonsi"
2334 require_egl_drm "radeonsi"
2337 HAVE_GALLIUM_NOUVEAU=yes
2338 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
2339 gallium_require_drm "nouveau"
2340 gallium_require_drm_loader
2343 HAVE_GALLIUM_FREEDRENO=yes
2344 PKG_CHECK_MODULES([FREEDRENO], [libdrm_freedreno >= $LIBDRM_FREEDRENO_REQUIRED])
2345 gallium_require_drm "freedreno"
2346 gallium_require_drm_loader
2349 HAVE_GALLIUM_SOFTPIPE=yes
2350 if test "x$MESA_LLVM" = x1; then
2351 HAVE_GALLIUM_LLVMPIPE=yes
2355 swr_llvm_check "swr"
2357 AC_MSG_CHECKING([whether $CXX supports c++11/AVX/AVX2])
2358 AVX_CXXFLAGS="-march=core-avx-i"
2359 AVX2_CXXFLAGS="-march=core-avx2"
2362 save_CXXFLAGS="$CXXFLAGS"
2363 CXXFLAGS="-std=c++11 $CXXFLAGS"
2364 AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],[],
2365 [AC_MSG_ERROR([c++11 compiler support not detected])])
2366 CXXFLAGS="$save_CXXFLAGS"
2368 save_CXXFLAGS="$CXXFLAGS"
2369 CXXFLAGS="$AVX_CXXFLAGS $CXXFLAGS"
2370 AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],[],
2371 [AC_MSG_ERROR([AVX compiler support not detected])])
2372 CXXFLAGS="$save_CXXFLAGS"
2374 save_CFLAGS="$CXXFLAGS"
2375 CXXFLAGS="$AVX2_CXXFLAGS $CXXFLAGS"
2376 AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],[],
2377 [AC_MSG_ERROR([AVX2 compiler support not detected])])
2378 CXXFLAGS="$save_CXXFLAGS"
2381 HAVE_GALLIUM_SWR=yes
2384 HAVE_GALLIUM_VC4=yes
2385 gallium_require_drm "vc4"
2386 gallium_require_drm_loader
2388 PKG_CHECK_MODULES([SIMPENROSE], [simpenrose],
2389 [USE_VC4_SIMULATOR=yes;
2390 DEFINES="$DEFINES -DUSE_VC4_SIMULATOR"],
2391 [USE_VC4_SIMULATOR=no])
2394 HAVE_GALLIUM_VIRGL=yes
2395 gallium_require_drm "virgl"
2396 gallium_require_drm_loader
2397 require_egl_drm "virgl"
2400 AC_MSG_ERROR([Unknown Gallium driver: $driver])
2406 dnl Set LLVM_LIBS - This is done after the driver configuration so
2407 dnl that drivers can add additional components to LLVM_COMPONENTS.
2408 dnl Previously, gallium drivers were updating LLVM_LIBS directly
2409 dnl by calling llvm-config --libs ${DRIVER_LLVM_COMPONENTS}, but
2410 dnl this was causing the same libraries to be appear multiple times
2413 if test "x$MESA_LLVM" != x0; then
2415 if ! $LLVM_CONFIG --libs ${LLVM_COMPONENTS} >/dev/null; then
2416 AC_MSG_ERROR([Calling ${LLVM_CONFIG} failed])
2418 LLVM_LIBS="`$LLVM_CONFIG --libs ${LLVM_COMPONENTS}`"
2420 dnl llvm-config may not give the right answer when llvm is a built as a
2421 dnl single shared library, so we must work the library name out for
2423 dnl (See https://llvm.org/bugs/show_bug.cgi?id=6823)
2424 if test "x$enable_llvm_shared_libs" = xyes; then
2425 dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
2426 LLVM_SO_NAME=LLVM-`$LLVM_CONFIG --version`
2427 AS_IF([test -f "$LLVM_LIBDIR/lib$LLVM_SO_NAME.$IMP_LIB_EXT"], [llvm_have_one_so=yes])
2429 if test "x$llvm_have_one_so" = xyes; then
2430 dnl LLVM was built using auto*, so there is only one shared object.
2431 LLVM_LIBS="-l$LLVM_SO_NAME"
2433 dnl If LLVM was built with CMake, there will be one shared object per
2435 AS_IF([test ! -f "$LLVM_LIBDIR/libLLVMTarget.$IMP_LIB_EXT"],
2436 [AC_MSG_ERROR([Could not find llvm shared libraries:
2437 Please make sure you have built llvm with the --enable-shared option
2438 and that your llvm libraries are installed in $LLVM_LIBDIR
2439 If you have installed your llvm libraries to a different directory you
2440 can use the --with-llvm-prefix= configure flag to specify this directory.
2441 NOTE: Mesa is attempting to use llvm shared libraries by default.
2442 If you do not want to build with llvm shared libraries and instead want to
2443 use llvm static libraries then add --disable-llvm-shared-libs to your configure
2444 invocation and rebuild.])])
2446 dnl We don't need to update LLVM_LIBS in this case because the LLVM
2447 dnl install uses a shared object for each component and we have
2448 dnl already added all of these objects to LLVM_LIBS.
2451 AC_MSG_WARN([Building mesa with statically linked LLVM may cause compilation issues])
2452 dnl We need to link to llvm system libs when using static libs
2453 dnl However, only llvm 3.5+ provides --system-libs
2454 if test $LLVM_VERSION_MAJOR -eq 3 -a $LLVM_VERSION_MINOR -ge 5; then
2455 LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --system-libs`"
2460 AM_CONDITIONAL(HAVE_GALLIUM_SVGA, test "x$HAVE_GALLIUM_SVGA" = xyes)
2461 AM_CONDITIONAL(HAVE_GALLIUM_I915, test "x$HAVE_GALLIUM_I915" = xyes)
2462 AM_CONDITIONAL(HAVE_GALLIUM_ILO, test "x$HAVE_GALLIUM_ILO" = xyes)
2463 AM_CONDITIONAL(HAVE_GALLIUM_R300, test "x$HAVE_GALLIUM_R300" = xyes)
2464 AM_CONDITIONAL(HAVE_GALLIUM_R600, test "x$HAVE_GALLIUM_R600" = xyes)
2465 AM_CONDITIONAL(HAVE_GALLIUM_RADEONSI, test "x$HAVE_GALLIUM_RADEONSI" = xyes)
2466 AM_CONDITIONAL(HAVE_GALLIUM_RADEON_COMMON, test "x$HAVE_GALLIUM_R600" = xyes -o \
2467 "x$HAVE_GALLIUM_RADEONSI" = xyes)
2468 AM_CONDITIONAL(HAVE_GALLIUM_NOUVEAU, test "x$HAVE_GALLIUM_NOUVEAU" = xyes)
2469 AM_CONDITIONAL(HAVE_GALLIUM_FREEDRENO, test "x$HAVE_GALLIUM_FREEDRENO" = xyes)
2470 AM_CONDITIONAL(HAVE_GALLIUM_SOFTPIPE, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes)
2471 AM_CONDITIONAL(HAVE_GALLIUM_LLVMPIPE, test "x$HAVE_GALLIUM_LLVMPIPE" = xyes)
2472 AM_CONDITIONAL(HAVE_GALLIUM_SWR, test "x$HAVE_GALLIUM_SWR" = xyes)
2473 AM_CONDITIONAL(HAVE_GALLIUM_SWRAST, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes -o \
2474 "x$HAVE_GALLIUM_LLVMPIPE" = xyes -o \
2475 "x$HAVE_GALLIUM_SWR" = xyes)
2476 AM_CONDITIONAL(HAVE_GALLIUM_VC4, test "x$HAVE_GALLIUM_VC4" = xyes)
2477 AM_CONDITIONAL(HAVE_GALLIUM_VIRGL, test "x$HAVE_GALLIUM_VIRGL" = xyes)
2479 AM_CONDITIONAL(HAVE_GALLIUM_STATIC_TARGETS, test "x$enable_shared_pipe_drivers" = xno)
2481 if test "x$enable_dri" = xyes; then
2482 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRI"
2485 if test "x$have_drisw_kms" = xyes; then
2486 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_KMS"
2488 AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
2490 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
2491 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
2492 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
2493 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
2494 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
2495 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
2497 AM_CONDITIONAL(HAVE_INTEL_VULKAN, test "x$HAVE_INTEL_VULKAN" = xyes)
2499 AM_CONDITIONAL(HAVE_INTEL_DRIVERS, test "x$HAVE_INTEL_VULKAN" = xyes -o \
2500 "x$HAVE_I965_DRI" = xyes)
2502 AM_CONDITIONAL(NEED_RADEON_DRM_WINSYS, test "x$HAVE_GALLIUM_R300" = xyes -o \
2503 "x$HAVE_GALLIUM_R600" = xyes -o \
2504 "x$HAVE_GALLIUM_RADEONSI" = xyes)
2505 AM_CONDITIONAL(NEED_WINSYS_XLIB, test "x$enable_glx" = xgallium-xlib)
2506 AM_CONDITIONAL(NEED_RADEON_LLVM, test x$NEED_RADEON_LLVM = xyes)
2507 AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
2508 AM_CONDITIONAL(HAVE_MESA_LLVM, test x$MESA_LLVM = x1)
2509 AM_CONDITIONAL(USE_VC4_SIMULATOR, test x$USE_VC4_SIMULATOR = xyes)
2510 if test "x$USE_VC4_SIMULATOR" = xyes -a "x$HAVE_GALLIUM_ILO" = xyes; then
2511 AC_MSG_ERROR([VC4 simulator on x86 replaces i965 driver build, so ilo must be disabled.])
2514 AM_CONDITIONAL(HAVE_LIBDRM, test "x$have_libdrm" = xyes)
2515 AM_CONDITIONAL(HAVE_OSMESA, test "x$enable_osmesa" = xyes)
2516 AM_CONDITIONAL(HAVE_GALLIUM_OSMESA, test "x$enable_gallium_osmesa" = xyes)
2518 AM_CONDITIONAL(HAVE_X86_ASM, test "x$asm_arch" = xx86 -o "x$asm_arch" = xx86_64)
2519 AM_CONDITIONAL(HAVE_X86_64_ASM, test "x$asm_arch" = xx86_64)
2520 AM_CONDITIONAL(HAVE_SPARC_ASM, test "x$asm_arch" = xsparc)
2522 AC_SUBST([NINE_MAJOR], 1)
2523 AC_SUBST([NINE_MINOR], 0)
2524 AC_SUBST([NINE_TINY], 0)
2525 AC_SUBST([NINE_VERSION], "$NINE_MAJOR.$NINE_MINOR.$NINE_TINY")
2527 AC_SUBST([VDPAU_MAJOR], 1)
2528 AC_SUBST([VDPAU_MINOR], 0)
2530 VA_MAJOR=`$PKG_CONFIG --modversion libva | $SED -n 's/\([[^\.]]*\)\..*$/\1/p'`
2531 VA_MINOR=`$PKG_CONFIG --modversion libva | $SED -n 's/.*\.\(.*\)\..*$/\1/p'`
2532 AC_SUBST([VA_MAJOR], $VA_MAJOR)
2533 AC_SUBST([VA_MINOR], $VA_MINOR)
2535 AC_SUBST([XVMC_MAJOR], 1)
2536 AC_SUBST([XVMC_MINOR], 0)
2538 XA_HEADER="$srcdir/src/gallium/state_trackers/xa/xa_tracker.h"
2539 XA_MAJOR=`grep "#define XA_TRACKER_VERSION_MAJOR" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_MAJOR //'`
2540 XA_MINOR=`grep "#define XA_TRACKER_VERSION_MINOR" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_MINOR //'`
2541 XA_TINY=`grep "#define XA_TRACKER_VERSION_PATCH" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_PATCH //'`
2543 AC_SUBST([XA_MAJOR], $XA_MAJOR)
2544 AC_SUBST([XA_MINOR], $XA_MINOR)
2545 AC_SUBST([XA_TINY], $XA_TINY)
2546 AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_TINY")
2548 AC_ARG_ENABLE(valgrind,
2549 [AS_HELP_STRING([--enable-valgrind],
2550 [Build mesa with valgrind support (default: auto)])],
2551 [VALGRIND=$enableval], [VALGRIND=auto])
2552 if test "x$VALGRIND" != xno; then
2553 PKG_CHECK_MODULES(VALGRIND, [valgrind], [have_valgrind=yes], [have_valgrind=no])
2555 AC_MSG_CHECKING([whether to enable Valgrind support])
2556 if test "x$VALGRIND" = xauto; then
2557 VALGRIND="$have_valgrind"
2560 if test "x$VALGRIND" = "xyes"; then
2561 if ! test "x$have_valgrind" = xyes; then
2562 AC_MSG_ERROR([Valgrind support required but not present])
2564 AC_DEFINE([HAVE_VALGRIND], 1, [Use valgrind intrinsics to suppress false warnings])
2567 AC_MSG_RESULT([$VALGRIND])
2569 dnl Restore LDFLAGS and CPPFLAGS
2570 LDFLAGS="$_SAVE_LDFLAGS"
2571 CPPFLAGS="$_SAVE_CPPFLAGS"
2573 dnl Suppress clang's warnings about unused CFLAGS and CXXFLAGS
2574 if test "x$acv_mesa_CLANG" = xyes; then
2575 CFLAGS="$CFLAGS -Qunused-arguments"
2576 CXXFLAGS="$CXXFLAGS -Qunused-arguments"
2579 dnl Add user CFLAGS and CXXFLAGS
2580 CFLAGS="$CFLAGS $USER_CFLAGS"
2581 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
2583 dnl Substitute the config
2584 AC_CONFIG_FILES([Makefile
2586 src/compiler/Makefile
2589 src/egl/wayland/wayland-drm/Makefile
2590 src/egl/wayland/wayland-egl/Makefile
2591 src/egl/wayland/wayland-egl/wayland-egl.pc
2592 src/gallium/Makefile
2593 src/gallium/auxiliary/Makefile
2594 src/gallium/auxiliary/pipe-loader/Makefile
2595 src/gallium/drivers/freedreno/Makefile
2596 src/gallium/drivers/ddebug/Makefile
2597 src/gallium/drivers/i915/Makefile
2598 src/gallium/drivers/ilo/Makefile
2599 src/gallium/drivers/llvmpipe/Makefile
2600 src/gallium/drivers/noop/Makefile
2601 src/gallium/drivers/nouveau/Makefile
2602 src/gallium/drivers/r300/Makefile
2603 src/gallium/drivers/r600/Makefile
2604 src/gallium/drivers/radeon/Makefile
2605 src/gallium/drivers/radeonsi/Makefile
2606 src/gallium/drivers/rbug/Makefile
2607 src/gallium/drivers/softpipe/Makefile
2608 src/gallium/drivers/svga/Makefile
2609 src/gallium/drivers/swr/Makefile
2610 src/gallium/drivers/trace/Makefile
2611 src/gallium/drivers/vc4/Makefile
2612 src/gallium/drivers/virgl/Makefile
2613 src/gallium/state_trackers/clover/Makefile
2614 src/gallium/state_trackers/dri/Makefile
2615 src/gallium/state_trackers/glx/xlib/Makefile
2616 src/gallium/state_trackers/nine/Makefile
2617 src/gallium/state_trackers/omx/Makefile
2618 src/gallium/state_trackers/osmesa/Makefile
2619 src/gallium/state_trackers/va/Makefile
2620 src/gallium/state_trackers/vdpau/Makefile
2621 src/gallium/state_trackers/xa/Makefile
2622 src/gallium/state_trackers/xvmc/Makefile
2623 src/gallium/targets/d3dadapter9/Makefile
2624 src/gallium/targets/d3dadapter9/d3d.pc
2625 src/gallium/targets/dri/Makefile
2626 src/gallium/targets/libgl-xlib/Makefile
2627 src/gallium/targets/omx/Makefile
2628 src/gallium/targets/opencl/Makefile
2629 src/gallium/targets/opencl/mesa.icd
2630 src/gallium/targets/osmesa/Makefile
2631 src/gallium/targets/osmesa/osmesa.pc
2632 src/gallium/targets/pipe-loader/Makefile
2633 src/gallium/targets/va/Makefile
2634 src/gallium/targets/vdpau/Makefile
2635 src/gallium/targets/xa/Makefile
2636 src/gallium/targets/xa/xatracker.pc
2637 src/gallium/targets/xvmc/Makefile
2638 src/gallium/tests/trivial/Makefile
2639 src/gallium/tests/unit/Makefile
2640 src/gallium/winsys/freedreno/drm/Makefile
2641 src/gallium/winsys/i915/drm/Makefile
2642 src/gallium/winsys/intel/drm/Makefile
2643 src/gallium/winsys/nouveau/drm/Makefile
2644 src/gallium/winsys/radeon/drm/Makefile
2645 src/gallium/winsys/amdgpu/drm/Makefile
2646 src/gallium/winsys/svga/drm/Makefile
2647 src/gallium/winsys/sw/dri/Makefile
2648 src/gallium/winsys/sw/kms-dri/Makefile
2649 src/gallium/winsys/sw/null/Makefile
2650 src/gallium/winsys/sw/wrapper/Makefile
2651 src/gallium/winsys/sw/xlib/Makefile
2652 src/gallium/winsys/vc4/drm/Makefile
2653 src/gallium/winsys/virgl/drm/Makefile
2654 src/gallium/winsys/virgl/vtest/Makefile
2658 src/glx/apple/Makefile
2659 src/glx/tests/Makefile
2662 src/intel/genxml/Makefile
2663 src/intel/isl/Makefile
2664 src/intel/vulkan/Makefile
2667 src/mapi/es1api/glesv1_cm.pc
2668 src/mapi/es2api/glesv2.pc
2669 src/mapi/glapi/gen/Makefile
2672 src/mesa/drivers/dri/dri.pc
2673 src/mesa/drivers/dri/common/Makefile
2674 src/mesa/drivers/dri/common/xmlpool/Makefile
2675 src/mesa/drivers/dri/i915/Makefile
2676 src/mesa/drivers/dri/i965/Makefile
2677 src/mesa/drivers/dri/Makefile
2678 src/mesa/drivers/dri/nouveau/Makefile
2679 src/mesa/drivers/dri/r200/Makefile
2680 src/mesa/drivers/dri/radeon/Makefile
2681 src/mesa/drivers/dri/swrast/Makefile
2682 src/mesa/drivers/osmesa/Makefile
2683 src/mesa/drivers/osmesa/osmesa.pc
2684 src/mesa/drivers/x11/Makefile
2685 src/mesa/main/tests/Makefile
2687 src/util/tests/hash_table/Makefile])
2691 # Fix up dependencies in *.Plo files, where we changed the extension of a
2693 $SED -i -e 's/brw_blorp.cpp/brw_blorp.c/' src/mesa/drivers/dri/i965/.deps/brw_blorp.Plo
2694 $SED -i -e 's/gen6_blorp.cpp/gen6_blorp.c/' src/mesa/drivers/dri/i965/.deps/gen6_blorp.Plo
2695 $SED -i -e 's/gen7_blorp.cpp/gen7_blorp.c/' src/mesa/drivers/dri/i965/.deps/gen7_blorp.Plo
2696 $SED -i -e 's/gen8_blorp.cpp/gen8_blorp.c/' src/mesa/drivers/dri/i965/.deps/gen8_blorp.Plo
2700 dnl Output some configuration info for the user
2703 echo " prefix: $prefix"
2704 echo " exec_prefix: $exec_prefix"
2705 echo " libdir: $libdir"
2706 echo " includedir: $includedir"
2710 echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
2714 case "x$enable_osmesa$enable_gallium_osmesa" in
2716 echo " OSMesa: lib$OSMESA_LIB (Gallium)"
2719 echo " OSMesa: lib$OSMESA_LIB"
2727 if test "x$enable_dri" != xno; then
2728 echo " DRI platform: $dri_platform"
2729 if test -z "$DRI_DIRS"; then
2730 echo " DRI drivers: no"
2732 echo " DRI drivers: $DRI_DIRS"
2734 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
2737 case "x$enable_glx" in
2739 echo " GLX: DRI-based"
2742 echo " GLX: Xlib-based"
2745 echo " GLX: Xlib-based (Gallium)"
2748 echo " GLX: $enable_glx"
2754 echo " EGL: $enable_egl"
2755 if test "$enable_egl" = yes; then
2756 echo " EGL platforms: $egl_platforms"
2759 if test "x$HAVE_EGL_DRIVER_DRI2" != "x"; then
2760 egl_drivers="$egl_drivers builtin:egl_dri2"
2762 if test "x$HAVE_EGL_DRIVER_DRI3" != "x"; then
2763 egl_drivers="$egl_drivers builtin:egl_dri3"
2766 echo " EGL drivers: $egl_drivers"
2771 if test "x$VULKAN_DRIVERS" != x; then
2772 echo " Vulkan drivers: $VULKAN_DRIVERS"
2773 echo " Vulkan ICD dir: $VULKAN_ICD_INSTALL_DIR"
2775 echo " Vulkan drivers: no"
2779 if test "x$MESA_LLVM" = x1; then
2781 echo " llvm-config: $LLVM_CONFIG"
2782 echo " llvm-version: $LLVM_VERSION"
2788 if test -n "$with_gallium_drivers"; then
2789 echo " Gallium drivers: $gallium_drivers"
2790 echo " Gallium st: $gallium_st"
2797 echo " Shader cache: $enable_shader_cache"
2798 if test "x$enable_shader_cache" = "xyes"; then
2799 echo " With SHA1 from: $with_sha1"
2804 echo " Shared libs: $enable_shared"
2805 echo " Static libs: $enable_static"
2806 echo " Shared-glapi: $enable_shared_glapi"
2808 dnl Compiler options
2809 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2810 cflags=`echo $CFLAGS | \
2811 $SED 's/^ *//;s/ */ /;s/ *$//'`
2812 cxxflags=`echo $CXXFLAGS | \
2813 $SED 's/^ *//;s/ */ /;s/ *$//'`
2814 defines=`echo $DEFINES | $SED 's/^ *//;s/ */ /;s/ *$//'`
2816 echo " CFLAGS: $cflags"
2817 echo " CXXFLAGS: $cxxflags"
2818 echo " Macros: $defines"
2820 if test "x$MESA_LLVM" = x1; then
2821 echo " LLVM_CFLAGS: $LLVM_CFLAGS"
2822 echo " LLVM_CXXFLAGS: $LLVM_CXXFLAGS"
2823 echo " LLVM_CPPFLAGS: $LLVM_CPPFLAGS"
2824 echo " LLVM_LDFLAGS: $LLVM_LDFLAGS"
2827 echo " PYTHON2: $PYTHON2"
2828 echo " PYTHON3: $PYTHON3"
2831 echo " Run '${MAKE-make}' to build Mesa"