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])
147 dnl We need a POSIX shell for parts of the build. Assume we have one
151 # Solaris /bin/sh is too old/non-POSIX compliant
152 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
157 dnl clang is mostly GCC-compatible, but its version is much lower,
158 dnl so we have to check for it.
159 AC_MSG_CHECKING([if compiling with clang])
162 [AC_LANG_PROGRAM([], [[
167 [acv_mesa_CLANG=yes], [acv_mesa_CLANG=no])
169 AC_MSG_RESULT([$acv_mesa_CLANG])
171 dnl If we're using GCC, make sure that it is at least version 4.2.0. Older
172 dnl versions are explictly not supported.
175 if test "x$GCC" = xyes -a "x$acv_mesa_CLANG" = xno; then
176 AC_MSG_CHECKING([whether gcc version is sufficient])
180 GCC_VERSION=`$CC -dumpversion`
181 if test $? -eq 0; then
182 GCC_VERSION_MAJOR=`echo $GCC_VERSION | cut -d. -f1`
183 GCC_VERSION_MINOR=`echo $GCC_VERSION | cut -d. -f2`
186 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 2 ; then
188 AC_MSG_ERROR([If using GCC, version 4.2.0 or later is required.])
193 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6 ; then
196 if test "x$cross_compiling" = xyes; then
201 dnl We don't support building Mesa with Sun C compiler
202 dnl https://bugs.freedesktop.org/show_bug.cgi?id=93189
203 AC_CHECK_DECL([__SUNPRO_C], [SUNCC=yes], [SUNCC=no])
204 if test "x$SUNCC" = xyes; then
205 AC_MSG_ERROR([Building with Sun C compiler is not supported, use GCC instead.])
208 dnl Check for compiler builtins
209 AX_GCC_BUILTIN([__builtin_bswap32])
210 AX_GCC_BUILTIN([__builtin_bswap64])
211 AX_GCC_BUILTIN([__builtin_clz])
212 AX_GCC_BUILTIN([__builtin_clzll])
213 AX_GCC_BUILTIN([__builtin_ctz])
214 AX_GCC_BUILTIN([__builtin_expect])
215 AX_GCC_BUILTIN([__builtin_ffs])
216 AX_GCC_BUILTIN([__builtin_ffsll])
217 AX_GCC_BUILTIN([__builtin_popcount])
218 AX_GCC_BUILTIN([__builtin_popcountll])
219 AX_GCC_BUILTIN([__builtin_unreachable])
221 AX_GCC_FUNC_ATTRIBUTE([const])
222 AX_GCC_FUNC_ATTRIBUTE([flatten])
223 AX_GCC_FUNC_ATTRIBUTE([format])
224 AX_GCC_FUNC_ATTRIBUTE([malloc])
225 AX_GCC_FUNC_ATTRIBUTE([packed])
226 AX_GCC_FUNC_ATTRIBUTE([pure])
227 AX_GCC_FUNC_ATTRIBUTE([returns_nonnull])
228 AX_GCC_FUNC_ATTRIBUTE([unused])
229 AX_GCC_FUNC_ATTRIBUTE([warn_unused_result])
231 AM_CONDITIONAL([GEN_ASM_OFFSETS], test "x$GEN_ASM_OFFSETS" = xyes)
233 dnl Make sure the pkg-config macros are defined
234 m4_ifndef([PKG_PROG_PKG_CONFIG],
235 [m4_fatal([Could not locate the pkg-config autoconf macros.
236 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
237 are in a different location, try setting the environment variable
238 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
239 PKG_PROG_PKG_CONFIG()
241 dnl LIB_DIR - library basename
242 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
245 dnl Cache LDFLAGS and CPPFLAGS so we can add to them and restore later
246 _SAVE_LDFLAGS="$LDFLAGS"
247 _SAVE_CPPFLAGS="$CPPFLAGS"
250 DEFINES="-D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS"
254 DEFINES="$DEFINES -D_GNU_SOURCE"
257 DEFINES="$DEFINES -DSVR4"
260 DEFINES="$DEFINES -D_XOPEN_SOURCE=700"
264 dnl Add flags for gcc and g++
265 if test "x$GCC" = xyes; then
266 CFLAGS="$CFLAGS -Wall"
268 if test "x$USE_GNU99" = xyes; then
269 CFLAGS="$CFLAGS -std=gnu99"
271 CFLAGS="$CFLAGS -std=c99"
274 # Enable -Werror=implicit-function-declaration and
275 # -Werror=missing-prototypes, if available, or otherwise, just
276 # -Wmissing-prototypes. This is particularly useful to avoid
277 # generating a loadable driver module that has undefined symbols.
278 save_CFLAGS="$CFLAGS"
279 AC_MSG_CHECKING([whether $CC supports -Werror=missing-prototypes])
280 CFLAGS="$CFLAGS -Werror=implicit-function-declaration"
281 CFLAGS="$CFLAGS -Werror=missing-prototypes"
282 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
283 AC_MSG_RESULT([yes]),
284 [CFLAGS="$save_CFLAGS -Wmissing-prototypes";
285 AC_MSG_RESULT([no])]);
287 # Enable -fvisibility=hidden if using a gcc that supports it
288 save_CFLAGS="$CFLAGS"
289 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
290 VISIBILITY_CFLAGS="-fvisibility=hidden"
291 CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
292 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
293 [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
295 # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
298 # Work around aliasing bugs - developers should comment this out
299 CFLAGS="$CFLAGS -fno-strict-aliasing"
301 # We don't want floating-point math functions to set errno or trap
302 CFLAGS="$CFLAGS -fno-math-errno -fno-trapping-math"
304 # gcc's builtin memcmp is slower than glibc's
305 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
306 CFLAGS="$CFLAGS -fno-builtin-memcmp"
308 # Flags to help ensure that certain portions of the code -- and only those
309 # portions -- can be built with MSVC:
310 # - src/util, src/gallium/auxiliary, rc/gallium/drivers/llvmpipe, and
311 # - non-Linux/Posix OpenGL portions needs to build on MSVC 2013 (which
312 # supports most of C99)
313 # - the rest has no compiler compiler restrictions
314 MSVC2013_COMPAT_CFLAGS="-Werror=pointer-arith"
315 MSVC2013_COMPAT_CXXFLAGS="-Werror=pointer-arith"
317 # Enable -Werror=vla if compiler supports it
318 save_CFLAGS="$CFLAGS"
319 AC_MSG_CHECKING([whether $CC supports -Werror=vla])
320 CFLAGS="$CFLAGS -Werror=vla"
321 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
322 [MSVC2013_COMPAT_CFLAGS="$MSVC2013_COMPAT_CFLAGS -Werror=vla";
323 MSVC2013_COMPAT_CXXFLAGS="$MSVC2013_COMPAT_CXXFLAGS -Werror=vla";
324 AC_MSG_RESULT([yes])],
325 AC_MSG_RESULT([no]));
326 CFLAGS="$save_CFLAGS"
328 if test "x$GXX" = xyes; then
329 CXXFLAGS="$CXXFLAGS -Wall"
331 # Enable -fvisibility=hidden if using a gcc that supports it
332 save_CXXFLAGS="$CXXFLAGS"
333 AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
334 VISIBILITY_CXXFLAGS="-fvisibility=hidden"
335 CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
337 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
338 [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
341 # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
342 CXXFLAGS=$save_CXXFLAGS
344 # Work around aliasing bugs - developers should comment this out
345 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
347 # gcc's builtin memcmp is slower than glibc's
348 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
349 CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp"
352 AC_SUBST([MSVC2013_COMPAT_CFLAGS])
353 AC_SUBST([MSVC2013_COMPAT_CXXFLAGS])
355 dnl even if the compiler appears to support it, using visibility attributes isn't
356 dnl going to do anything useful currently on cygwin apart from emit lots of warnings
360 VISIBILITY_CXXFLAGS=""
364 AC_SUBST([VISIBILITY_CFLAGS])
365 AC_SUBST([VISIBILITY_CXXFLAGS])
368 dnl Optional flags, check for compiler support
370 SSE41_CFLAGS="-msse4.1"
371 dnl Code compiled by GCC with -msse* assumes a 16 byte aligned
372 dnl stack, but on x86-32 such alignment is not guaranteed.
373 case "$target_cpu" in
375 SSE41_CFLAGS="$SSE41_CFLAGS -mstackrealign"
378 save_CFLAGS="$CFLAGS"
379 CFLAGS="$SSE41_CFLAGS $CFLAGS"
380 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
381 #include <smmintrin.h>
384 __m128i a = _mm_set1_epi32 (param), b = _mm_set1_epi32 (param + 1), c;
385 c = _mm_max_epu32(a, b);
386 return _mm_cvtsi128_si32(c);
387 }]])], SSE41_SUPPORTED=1)
388 CFLAGS="$save_CFLAGS"
389 if test "x$SSE41_SUPPORTED" = x1; then
390 DEFINES="$DEFINES -DUSE_SSE41"
392 AM_CONDITIONAL([SSE41_SUPPORTED], [test x$SSE41_SUPPORTED = x1])
393 AC_SUBST([SSE41_CFLAGS], $SSE41_CFLAGS)
395 dnl Check for Endianness
403 dnl Check for POWER8 Architecture
404 PWR8_CFLAGS="-mpower8-vector"
405 have_pwr8_intrinsics=no
406 AC_MSG_CHECKING(whether gcc supports -mpower8-vector)
408 CFLAGS="$PWR8_CFLAGS $CFLAGS"
409 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
410 #if defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8))
411 #error "Need GCC >= 4.8 for sane POWER8 support"
415 vector unsigned char r;
416 vector unsigned int v = vec_splat_u32 (1);
417 r = __builtin_vec_vgbbd ((vector unsigned char) v);
419 }]])], have_pwr8_intrinsics=yes)
423 [AC_HELP_STRING([--disable-pwr8-inst],
424 [disable POWER8-specific instructions])],
425 [enable_pwr8=$enableval], [enable_pwr8=auto])
427 if test "x$enable_pwr8" = xno ; then
428 have_pwr8_intrinsics=disabled
431 if test $have_pwr8_intrinsics = yes && test $little_endian = yes ; then
432 DEFINES="$DEFINES -D_ARCH_PWR8"
433 CXXFLAGS="$CXXFLAGS $PWR8_CFLAGS"
434 CFLAGS="$CFLAGS $PWR8_CFLAGS"
439 AC_MSG_RESULT($have_pwr8_intrinsics)
440 if test "x$enable_pwr8" = xyes && test $have_pwr8_intrinsics = no ; then
441 AC_MSG_ERROR([POWER8 compiler support not detected])
444 if test $have_pwr8_intrinsics = yes && test $little_endian = no ; then
445 AC_MSG_WARN([POWER8 optimization is enabled only on POWER8 Little-Endian])
448 AC_SUBST([PWR8_CFLAGS], $PWR8_CFLAGS)
450 dnl Can't have static and shared libraries, default to static if user
451 dnl explicitly requested. If both disabled, set to static since shared
452 dnl was explicitly requested.
453 case "x$enable_static$enable_shared" in
455 AC_MSG_WARN([Cannot build static and shared libraries, disabling shared])
459 AC_MSG_WARN([Cannot disable both static and shared libraries, enabling shared])
464 AM_CONDITIONAL(BUILD_SHARED, test "x$enable_shared" = xyes)
467 dnl other compiler options
469 AC_ARG_ENABLE([debug],
470 [AS_HELP_STRING([--enable-debug],
471 [use debug compiler flags and macros @<:@default=disabled@:>@])],
472 [enable_debug="$enableval"],
476 AC_ARG_ENABLE([profile],
477 [AS_HELP_STRING([--enable-profile],
478 [enable profiling of code @<:@default=disabled@:>@])],
479 [enable_profile="$enableval"],
483 if test "x$enable_profile" = xyes; then
484 DEFINES="$DEFINES -DPROFILE"
485 if test "x$GCC" = xyes; then
486 CFLAGS="$CFLAGS -fno-omit-frame-pointer"
488 if test "x$GXX" = xyes; then
489 CXXFLAGS="$CXXFLAGS -fno-omit-frame-pointer"
493 if test "x$enable_debug" = xyes; then
494 DEFINES="$DEFINES -DDEBUG"
495 if test "x$enable_profile" = xyes; then
496 AC_MSG_WARN([Debug and Profile are enabled at the same time])
498 if test "x$GCC" = xyes; then
499 if ! echo "$CFLAGS" | grep -q -e '-g'; then
502 if ! echo "$CFLAGS" | grep -q -e '-O'; then
506 if test "x$GXX" = xyes; then
507 if ! echo "$CXXFLAGS" | grep -q -e '-g'; then
508 CXXFLAGS="$CXXFLAGS -g"
510 if ! echo "$CXXFLAGS" | grep -q -e '-O'; then
511 CXXFLAGS="$CXXFLAGS -O0"
515 DEFINES="$DEFINES -DNDEBUG"
519 dnl Check if linker supports -Bsymbolic
521 save_LDFLAGS=$LDFLAGS
522 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic"
523 AC_MSG_CHECKING([if ld supports -Bsymbolic])
525 [AC_LANG_SOURCE([int main() { return 0;}])],
526 [AC_MSG_RESULT([yes])
527 BSYMBOLIC="-Wl,-Bsymbolic";],
530 LDFLAGS=$save_LDFLAGS
532 AC_SUBST([BSYMBOLIC])
535 dnl Check if linker supports garbage collection
537 save_LDFLAGS=$LDFLAGS
538 LDFLAGS="$LDFLAGS -Wl,--gc-sections"
539 AC_MSG_CHECKING([whether ld supports --gc-sections])
541 [AC_LANG_SOURCE([static char UnusedFunc() { return 5; } int main() { return 0;}])],
542 [AC_MSG_RESULT([yes])
543 GC_SECTIONS="-Wl,--gc-sections";],
546 LDFLAGS=$save_LDFLAGS
548 AC_SUBST([GC_SECTIONS])
551 dnl OpenBSD does not have DT_NEEDED entries for libc by design
552 dnl so when these flags are passed to ld via libtool the checks will fail
556 LD_NO_UNDEFINED="" ;;
558 LD_NO_UNDEFINED="-Wl,--no-undefined" ;;
561 AC_SUBST([LD_NO_UNDEFINED])
564 dnl Check if linker supports version scripts
566 AC_MSG_CHECKING([if the linker supports version-scripts])
567 save_LDFLAGS=$LDFLAGS
568 LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map"
569 cat > conftest.map <<EOF
579 [AC_LANG_SOURCE([int main() { return 0;}])],
580 [have_ld_version_script=yes;AC_MSG_RESULT(yes)],
581 [have_ld_version_script=no; AC_MSG_RESULT(no)])
582 LDFLAGS=$save_LDFLAGS
583 AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes")
586 dnl Check if linker supports dynamic list files
588 AC_MSG_CHECKING([if the linker supports --dynamic-list])
589 save_LDFLAGS=$LDFLAGS
590 LDFLAGS="$LDFLAGS -Wl,--dynamic-list=conftest.dyn"
591 cat > conftest.dyn <<EOF
593 radeon_drm_winsys_create;
597 [AC_LANG_SOURCE([int main() { return 0;}])],
598 [have_ld_dynamic_list=yes;AC_MSG_RESULT(yes)],
599 [have_ld_dynamic_list=no; AC_MSG_RESULT(no)])
600 LDFLAGS=$save_LDFLAGS
601 AM_CONDITIONAL(HAVE_LD_DYNAMIC_LIST, test "$have_ld_dynamic_list" = "yes")
604 dnl compatibility symlinks
608 HAVE_COMPAT_SYMLINKS=yes ;;
610 HAVE_COMPAT_SYMLINKS=no ;;
613 AM_CONDITIONAL(HAVE_COMPAT_SYMLINKS, test "x$HAVE_COMPAT_SYMLINKS" = xyes)
618 dnl Unfortunately we need to do a few things that libtool can't help us with,
619 dnl so we need some knowledge of shared library filenames:
621 dnl LIB_EXT is the extension used when creating symlinks for alternate
622 dnl filenames for a shared library which will be dynamically loaded
624 dnl IMP_LIB_EXT is the extension used when checking for the presence of a
625 dnl the file for a shared library we wish to link with
648 AC_ARG_WITH([gl-lib-name],
649 [AS_HELP_STRING([--with-gl-lib-name@<:@=NAME@:>@],
650 [specify GL library name @<:@default=GL@:>@])],
653 AC_ARG_WITH([osmesa-lib-name],
654 [AS_HELP_STRING([--with-osmesa-lib-name@<:@=NAME@:>@],
655 [specify OSMesa library name @<:@default=OSMesa@:>@])],
656 [OSMESA_LIB=$withval],
658 AS_IF([test "x$GL_LIB" = xyes], [GL_LIB=GL])
659 AS_IF([test "x$OSMESA_LIB" = xyes], [OSMESA_LIB=OSMesa])
662 dnl Mangled Mesa support
664 AC_ARG_ENABLE([mangling],
665 [AS_HELP_STRING([--enable-mangling],
666 [enable mangled symbols and library name @<:@default=disabled@:>@])],
667 [enable_mangling="${enableval}"],
670 if test "x${enable_mangling}" = "xyes" ; then
671 DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
672 GL_LIB="Mangled${GL_LIB}"
673 OSMESA_LIB="Mangled${OSMESA_LIB}"
676 AC_SUBST([OSMESA_LIB])
679 dnl potentially-infringing-but-nobody-knows-for-sure stuff
681 AC_ARG_ENABLE([texture-float],
682 [AS_HELP_STRING([--enable-texture-float],
683 [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
684 [enable_texture_float="$enableval"],
685 [enable_texture_float=no]
687 if test "x$enable_texture_float" = xyes; then
688 AC_MSG_WARN([Floating-point textures enabled.])
689 AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
690 DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
694 dnl Arch/platform-specific settings
697 [AS_HELP_STRING([--disable-asm],
698 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
699 [enable_asm="$enableval"],
703 AC_MSG_CHECKING([whether to enable assembly])
704 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
705 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
706 if test "x$enable_asm" = xyes -a "x$cross_compiling" = xyes; then
708 i?86 | x86_64 | amd64)
709 if test "x$host_cpu" != "x$target_cpu"; then
711 AC_MSG_RESULT([no, cross compiling])
716 # check for supported arches
717 if test "x$enable_asm" = xyes; then
721 linux* | *freebsd* | dragonfly* | *netbsd* | openbsd* | gnu*)
728 linux* | *freebsd* | dragonfly* | *netbsd* | openbsd*)
744 DEFINES="$DEFINES -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
745 AC_MSG_RESULT([yes, x86])
748 DEFINES="$DEFINES -DUSE_X86_64_ASM"
749 AC_MSG_RESULT([yes, x86_64])
752 DEFINES="$DEFINES -DUSE_SPARC_ASM"
753 AC_MSG_RESULT([yes, sparc])
756 AC_MSG_RESULT([no, platform not supported])
761 AC_CHECK_HEADER([xlocale.h], [DEFINES="$DEFINES -DHAVE_XLOCALE_H"])
762 AC_CHECK_HEADER([sys/sysctl.h], [DEFINES="$DEFINES -DHAVE_SYS_SYSCTL_H"])
763 AC_CHECK_FUNC([strtof], [DEFINES="$DEFINES -DHAVE_STRTOF"])
764 AC_CHECK_FUNC([mkostemp], [DEFINES="$DEFINES -DHAVE_MKOSTEMP"])
766 dnl Check to see if dlopen is in default libraries (like Solaris, which
767 dnl has it in libc), or if libdl is needed to get it.
768 AC_CHECK_FUNC([dlopen], [DEFINES="$DEFINES -DHAVE_DLOPEN"],
769 [AC_CHECK_LIB([dl], [dlopen],
770 [DEFINES="$DEFINES -DHAVE_DLOPEN"; DLOPEN_LIBS="-ldl"])])
771 AC_SUBST([DLOPEN_LIBS])
773 dnl Check if that library also has dladdr
775 LIBS="$LIBS $DLOPEN_LIBS"
776 AC_CHECK_FUNCS([dladdr])
783 AC_CHECK_FUNCS([clock_gettime], [CLOCK_LIB=],
784 [AC_CHECK_LIB([rt], [clock_gettime], [CLOCK_LIB=-lrt],
785 [AC_MSG_ERROR([Could not find clock_gettime])])])
786 AC_SUBST([CLOCK_LIB])
790 dnl See if posix_memalign is available
791 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
793 dnl Check for pthreads
795 if test "x$ax_pthread_ok" = xno; then
796 AC_MSG_ERROR([Building mesa on this platform requires pthreads])
798 dnl AX_PTHREADS leaves PTHREAD_LIBS empty for gcc and sets PTHREAD_CFLAGS
799 dnl to -pthread, which causes problems if we need -lpthread to appear in
801 test -z "$PTHREAD_LIBS" && PTHREAD_LIBS="-lpthread"
803 dnl SELinux awareness.
804 AC_ARG_ENABLE([selinux],
805 [AS_HELP_STRING([--enable-selinux],
806 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
807 [MESA_SELINUX="$enableval"],
809 if test "x$enable_selinux" = "xyes"; then
810 PKG_CHECK_MODULES([SELINUX], [libselinux], [],
811 [AC_CHECK_HEADER([selinux/selinux.h],[],
812 [AC_MSG_ERROR([SELinux headers not found])])
813 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
814 [AC_MSG_ERROR([SELinux library not found])])
815 SELINUX_LIBS="-lselinux"])
816 DEFINES="$DEFINES -DMESA_SELINUX"
818 AC_SUBST([SELINUX_CFLAGS])
819 AC_SUBST([SELINUX_LIBS])
822 AC_ARG_ENABLE([opengl],
823 [AS_HELP_STRING([--disable-opengl],
824 [disable support for standard OpenGL API @<:@default=enabled@:>@])],
825 [enable_opengl="$enableval"],
827 AC_ARG_ENABLE([gles1],
828 [AS_HELP_STRING([--disable-gles1],
829 [disable support for OpenGL ES 1.x API @<:@default=enabled@:>@])],
830 [enable_gles1="$enableval"],
832 AC_ARG_ENABLE([gles2],
833 [AS_HELP_STRING([--disable-gles2],
834 [disable support for OpenGL ES 2.x API @<:@default=enabled@:>@])],
835 [enable_gles2="$enableval"],
839 [AS_HELP_STRING([--enable-dri],
840 [enable DRI modules @<:@default=enabled@:>@])],
841 [enable_dri="$enableval"],
853 if test "x$enable_dri" = xno; then
857 AC_ARG_ENABLE([dri3],
858 [AS_HELP_STRING([--enable-dri3],
859 [enable DRI3 @<:@default=auto@:>@])],
860 [enable_dri3="$enableval"],
861 [enable_dri3="$dri3_default"])
863 [AS_HELP_STRING([--enable-glx@<:@=dri|xlib|gallium-xlib@:>@],
864 [enable the GLX library and choose an implementation @<:@default=auto@:>@])],
865 [enable_glx="$enableval"],
867 AC_ARG_ENABLE([osmesa],
868 [AS_HELP_STRING([--enable-osmesa],
869 [enable OSMesa library @<:@default=disabled@:>@])],
870 [enable_osmesa="$enableval"],
872 AC_ARG_ENABLE([gallium-osmesa],
873 [AS_HELP_STRING([--enable-gallium-osmesa],
874 [enable Gallium implementation of the OSMesa library @<:@default=disabled@:>@])],
875 [enable_gallium_osmesa="$enableval"],
876 [enable_gallium_osmesa=no])
878 [AS_HELP_STRING([--disable-egl],
879 [disable EGL library @<:@default=enabled@:>@])],
880 [enable_egl="$enableval"],
884 [AS_HELP_STRING([--enable-xa],
885 [enable build of the XA X Acceleration API @<:@default=disabled@:>@])],
886 [enable_xa="$enableval"],
889 [AS_HELP_STRING([--enable-gbm],
890 [enable gbm library @<:@default=auto@:>@])],
891 [enable_gbm="$enableval"],
893 AC_ARG_ENABLE([nine],
894 [AS_HELP_STRING([--enable-nine],
895 [enable build of the nine Direct3D9 API @<:@default=no@:>@])],
896 [enable_nine="$enableval"],
899 AC_ARG_ENABLE([xvmc],
900 [AS_HELP_STRING([--enable-xvmc],
901 [enable xvmc library @<:@default=auto@:>@])],
902 [enable_xvmc="$enableval"],
904 AC_ARG_ENABLE([vdpau],
905 [AS_HELP_STRING([--enable-vdpau],
906 [enable vdpau library @<:@default=auto@:>@])],
907 [enable_vdpau="$enableval"],
910 [AS_HELP_STRING([--enable-omx],
911 [enable OpenMAX library @<:@default=disabled@:>@])],
912 [enable_omx="$enableval"],
915 [AS_HELP_STRING([--enable-va],
916 [enable va library @<:@default=auto@:>@])],
917 [enable_va="$enableval"],
919 AC_ARG_ENABLE([opencl],
920 [AS_HELP_STRING([--enable-opencl],
921 [enable OpenCL library @<:@default=disabled@:>@])],
922 [enable_opencl="$enableval"],
924 AC_ARG_ENABLE([opencl_icd],
925 [AS_HELP_STRING([--enable-opencl-icd],
926 [Build an OpenCL ICD library to be loaded by an ICD implementation
927 @<:@default=disabled@:>@])],
928 [enable_opencl_icd="$enableval"],
929 [enable_opencl_icd=no])
931 AC_ARG_ENABLE([gallium-tests],
932 [AS_HELP_STRING([--enable-gallium-tests],
933 [Enable optional Gallium tests) @<:@default=disabled@:>@])],
934 [enable_gallium_tests="$enableval"],
935 [enable_gallium_tests=no])
937 # Option for Gallium drivers
939 # Keep this in sync with the --with-gallium-drivers help string default value
940 GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
942 AC_ARG_WITH([gallium-drivers],
943 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
944 [comma delimited Gallium drivers list, e.g.
945 "i915,ilo,nouveau,r300,r600,radeonsi,freedreno,svga,swrast,vc4,virgl"
946 @<:@default=r300,r600,svga,swrast@:>@])],
947 [with_gallium_drivers="$withval"],
948 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
950 # Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it
951 # here so that the script doesn't choke on an unknown driver name later.
952 case "$with_gallium_drivers" in
953 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
954 no) with_gallium_drivers='' ;;
957 if test "x$enable_opengl" = xno -a \
958 "x$enable_gles1" = xno -a \
959 "x$enable_gles2" = xno -a \
960 "x$enable_nine" = xno -a \
961 "x$enable_xa" = xno -a \
962 "x$enable_xvmc" = xno -a \
963 "x$enable_vdpau" = xno -a \
964 "x$enable_omx" = xno -a \
965 "x$enable_va" = xno -a \
966 "x$enable_opencl" = xno; then
967 AC_MSG_ERROR([at least one API should be enabled])
970 # Building OpenGL ES1 and/or ES2 without OpenGL is not supported on mesa 9.0.x
971 if test "x$enable_opengl" = xno -a \
972 "x$enable_gles1" = xyes; then
973 AC_MSG_ERROR([Building OpenGL ES1 without OpenGL is not supported])
976 if test "x$enable_opengl" = xno -a \
977 "x$enable_gles2" = xyes; then
978 AC_MSG_ERROR([Building OpenGL ES2 without OpenGL is not supported])
981 AM_CONDITIONAL(HAVE_OPENGL, test "x$enable_opengl" = xyes)
982 AM_CONDITIONAL(HAVE_OPENGL_ES1, test "x$enable_gles1" = xyes)
983 AM_CONDITIONAL(HAVE_OPENGL_ES2, test "x$enable_gles2" = xyes)
984 AM_CONDITIONAL(NEED_OPENGL_COMMON, test "x$enable_opengl" = xyes -o \
985 "x$enable_gles1" = xyes -o \
986 "x$enable_gles2" = xyes)
988 # Validate GLX options
989 if test "x$enable_glx" = xyes; then
990 if test "x$enable_dri" = xyes; then
992 elif test -n "$with_gallium_drivers"; then
993 enable_glx=gallium-xlib
998 case "x$enable_glx" in
999 xdri | xxlib | xgallium-xlib)
1000 # GLX requires OpenGL
1001 if test "x$enable_opengl" = xno; then
1002 AC_MSG_ERROR([GLX cannot be built without OpenGL])
1005 # Check individual dependencies
1006 case "x$enable_glx" in
1008 if test "x$enable_dri" = xno; then
1009 AC_MSG_ERROR([DRI-based GLX requires DRI to be enabled])
1013 if test "x$enable_dri" = xyes; then
1014 AC_MSG_ERROR([Xlib-based GLX cannot be built with DRI enabled])
1018 if test "x$enable_dri" = xyes; then
1019 AC_MSG_ERROR([Xlib-based (Gallium) GLX cannot be built with DRI enabled])
1021 if test -z "$with_gallium_drivers"; then
1022 AC_MSG_ERROR([Xlib-based (Gallium) GLX cannot be built without Gallium enabled])
1030 AC_MSG_ERROR([Illegal value for --enable-glx: $enable_glx])
1034 AM_CONDITIONAL(HAVE_DRI_GLX, test "x$enable_glx" = xdri)
1035 AM_CONDITIONAL(HAVE_XLIB_GLX, test "x$enable_glx" = xxlib)
1036 AM_CONDITIONAL(HAVE_GALLIUM_XLIB_GLX, test "x$enable_glx" = xgallium-xlib)
1039 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
1040 [have_libdrm=yes], [have_libdrm=no])
1041 if test "x$have_libdrm" = xyes; then
1042 DEFINES="$DEFINES -DHAVE_LIBDRM"
1045 # Select which platform-dependent DRI code gets built
1048 dri_platform='apple' ;;
1050 dri_platform='none' ;;
1052 dri_platform='drm' ;;
1055 if test "x$enable_dri" = xyes -a "x$dri_platform" = xdrm -a "x$have_libdrm" = xyes; then
1056 have_drisw_kms='yes'
1059 AM_CONDITIONAL(HAVE_DRICOMMON, test "x$enable_dri" = xyes )
1060 AM_CONDITIONAL(HAVE_DRISW, test "x$enable_dri" = xyes )
1061 AM_CONDITIONAL(HAVE_DRISW_KMS, test "x$have_drisw_kms" = xyes )
1062 AM_CONDITIONAL(HAVE_DRI2, test "x$enable_dri" = xyes -a "x$dri_platform" = xdrm -a "x$have_libdrm" = xyes )
1063 AM_CONDITIONAL(HAVE_DRI3, test "x$enable_dri3" = xyes -a "x$dri_platform" = xdrm -a "x$have_libdrm" = xyes )
1064 AM_CONDITIONAL(HAVE_APPLEDRI, test "x$enable_dri" = xyes -a "x$dri_platform" = xapple )
1066 AC_ARG_ENABLE([shared-glapi],
1067 [AS_HELP_STRING([--enable-shared-glapi],
1068 [Enable shared glapi for OpenGL @<:@default=enabled@:>@])],
1069 [enable_shared_glapi="$enableval"],
1070 [enable_shared_glapi=yes])
1072 case "x$enable_opengl$enable_gles1$enable_gles2" in
1074 if test "x$enable_shared_glapi" = xno; then
1075 AC_MSG_ERROR([shared GLAPI required when building two or more of
1076 the following APIs - opengl, gles1 gles2])
1081 AM_CONDITIONAL(HAVE_SHARED_GLAPI, test "x$enable_shared_glapi" = xyes)
1083 # Build the pipe-drivers as separate libraries/modules.
1084 # Do not touch this unless you know what you are doing.
1085 # XXX: Expose via configure option ?
1086 enable_shared_pipe_drivers=no
1089 dnl Driver specific build directories
1092 if test "x$enable_gallium_osmesa" = xyes; then
1093 if ! echo "$with_gallium_drivers" | grep -q 'swrast'; then
1094 AC_MSG_ERROR([gallium_osmesa requires the gallium swrast driver])
1096 if test "x$enable_osmesa" = xyes; then
1097 AC_MSG_ERROR([Cannot enable both classic and Gallium OSMesa implementations])
1101 AC_SUBST([MESA_LLVM])
1105 [AS_HELP_STRING([--with-sha1=libc|libmd|libnettle|libgcrypt|libcrypto|libsha1|CommonCrypto|CryptoAPI],
1106 [choose SHA1 implementation])])
1107 case "x$with_sha1" in
1108 x | xlibc | xlibmd | xlibnettle | xlibgcrypt | xlibcrypto | xlibsha1 | xCommonCrypto | xCryptoAPI)
1111 AC_MSG_ERROR([Illegal value for --with-sha1: $with_sha1])
1114 AC_CHECK_FUNC([SHA1Init], [HAVE_SHA1_IN_LIBC=yes])
1115 if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_LIBC" = xyes; then
1118 if test "x$with_sha1" = xlibc && test "x$HAVE_SHA1_IN_LIBC" != xyes; then
1119 AC_MSG_ERROR([sha1 in libc requested but not found])
1121 if test "x$with_sha1" = xlibc; then
1122 AC_DEFINE([HAVE_SHA1_IN_LIBC], [1],
1123 [Use libc SHA1 functions])
1126 AC_CHECK_FUNC([CC_SHA1_Init], [HAVE_SHA1_IN_COMMONCRYPTO=yes])
1127 if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_COMMONCRYPTO" = xyes; then
1128 with_sha1=CommonCrypto
1130 if test "x$with_sha1" = xCommonCrypto && test "x$HAVE_SHA1_IN_COMMONCRYPTO" != xyes; then
1131 AC_MSG_ERROR([CommonCrypto requested but not found])
1133 if test "x$with_sha1" = xCommonCrypto; then
1134 AC_DEFINE([HAVE_SHA1_IN_COMMONCRYPTO], [1],
1135 [Use CommonCrypto SHA1 functions])
1138 dnl stdcall functions cannot be tested with AC_CHECK_LIB
1139 AC_CHECK_HEADER([wincrypt.h], [HAVE_SHA1_IN_CRYPTOAPI=yes], [], [#include <windows.h>])
1140 if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_CRYPTOAPI" = xyes; then
1143 if test "x$with_sha1" = xCryptoAPI && test "x$HAVE_SHA1_IN_CRYPTOAPI" != xyes; then
1144 AC_MSG_ERROR([CryptoAPI requested but not found])
1146 if test "x$with_sha1" = xCryptoAPI; then
1147 AC_DEFINE([HAVE_SHA1_IN_CRYPTOAPI], [1],
1148 [Use CryptoAPI SHA1 functions])
1151 AC_CHECK_LIB([md], [SHA1Init], [HAVE_LIBMD=yes])
1152 if test "x$with_sha1" = x && test "x$HAVE_LIBMD" = xyes; then
1155 if test "x$with_sha1" = xlibmd && test "x$HAVE_LIBMD" != xyes; then
1156 AC_MSG_ERROR([libmd requested but not found])
1158 if test "x$with_sha1" = xlibmd; then
1159 AC_DEFINE([HAVE_SHA1_IN_LIBMD], [1],
1160 [Use libmd SHA1 functions])
1163 PKG_CHECK_MODULES([LIBSHA1], [libsha1], [HAVE_LIBSHA1=yes], [HAVE_LIBSHA1=no])
1164 if test "x$with_sha1" = x && test "x$HAVE_LIBSHA1" = xyes; then
1167 if test "x$with_sha1" = xlibsha1 && test "x$HAVE_LIBSHA1" != xyes; then
1168 AC_MSG_ERROR([libsha1 requested but not found])
1170 if test "x$with_sha1" = xlibsha1; then
1171 AC_DEFINE([HAVE_SHA1_IN_LIBSHA1], [1],
1172 [Use libsha1 for SHA1])
1175 AC_CHECK_LIB([nettle], [nettle_sha1_init], [HAVE_LIBNETTLE=yes])
1176 if test "x$with_sha1" = x && test "x$HAVE_LIBNETTLE" = xyes; then
1179 if test "x$with_sha1" = xlibnettle && test "x$HAVE_LIBNETTLE" != xyes; then
1180 AC_MSG_ERROR([libnettle requested but not found])
1182 if test "x$with_sha1" = xlibnettle; then
1183 AC_DEFINE([HAVE_SHA1_IN_LIBNETTLE], [1],
1184 [Use libnettle SHA1 functions])
1187 AC_CHECK_LIB([gcrypt], [gcry_md_open], [HAVE_LIBGCRYPT=yes])
1188 if test "x$with_sha1" = x && test "x$HAVE_LIBGCRYPT" = xyes; then
1191 if test "x$with_sha1" = xlibgcrypt && test "x$HAVE_LIBGCRYPT" != xyes; then
1192 AC_MSG_ERROR([libgcrypt requested but not found])
1194 if test "x$with_sha1" = xlibgcrypt; then
1195 AC_DEFINE([HAVE_SHA1_IN_LIBGCRYPT], [1],
1196 [Use libgcrypt SHA1 functions])
1199 # We don't need all of the OpenSSL libraries, just libcrypto
1200 AC_CHECK_LIB([crypto], [SHA1_Init], [HAVE_LIBCRYPTO=yes])
1201 PKG_CHECK_MODULES([OPENSSL], [openssl], [HAVE_OPENSSL_PKC=yes],
1202 [HAVE_OPENSSL_PKC=no])
1203 if test "x$HAVE_LIBCRYPTO" = xyes || test "x$HAVE_OPENSSL_PKC" = xyes; then
1204 if test "x$with_sha1" = x; then
1208 if test "x$with_sha1" = xlibcrypto; then
1209 AC_MSG_ERROR([OpenSSL libcrypto requested but not found])
1212 if test "x$with_sha1" = xlibcrypto; then
1213 if test "x$HAVE_LIBCRYPTO" = xyes; then
1216 SHA1_LIBS="$OPENSSL_LIBS"
1217 SHA1_CFLAGS="$OPENSSL_CFLAGS"
1220 AC_MSG_CHECKING([for SHA1 implementation])
1221 AC_MSG_RESULT([$with_sha1])
1223 AC_SUBST(SHA1_CFLAGS)
1225 # Enable a define for SHA1
1226 if test "x$with_sha1" != "x"; then
1227 DEFINES="$DEFINES -DHAVE_SHA1"
1230 # Allow user to configure out the shader-cache feature
1231 AC_ARG_ENABLE([shader-cache],
1232 AS_HELP_STRING([--disable-shader-cache], [Disable binary shader cache]),
1233 [enable_shader_cache="$enableval"],
1234 [if test "x$with_sha1" != "x"; then
1235 enable_shader_cache=yes
1237 enable_shader_cache=no
1239 if test "x$with_sha1" = "x"; then
1240 if test "x$enable_shader_cache" = "xyes"; then
1241 AC_MSG_ERROR([Cannot enable shader cache (no SHA-1 implementation found)])
1244 AM_CONDITIONAL([ENABLE_SHADER_CACHE], [test x$enable_shader_cache = xyes])
1253 PKG_CHECK_MODULES([LIBUDEV], [libudev >= $LIBUDEV_REQUIRED],
1254 have_libudev=yes, have_libudev=no)
1256 AC_ARG_ENABLE([sysfs],
1257 [AS_HELP_STRING([--enable-sysfs],
1258 [enable /sys PCI identification @<:@default=disabled@:>@])],
1259 [have_sysfs="$enableval"],
1263 if test "x$enable_dri" = xyes; then
1264 if test "$enable_static" = yes; then
1265 AC_MSG_ERROR([Cannot use static libraries for DRI drivers])
1268 # not a hard requirement as swrast does not depend on it
1269 if test "x$have_libdrm" = xyes; then
1270 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
1274 AC_ARG_ENABLE([driglx-direct],
1275 [AS_HELP_STRING([--disable-driglx-direct],
1276 [disable direct rendering in GLX and EGL for DRI \
1277 @<:@default=auto@:>@])],
1278 [driglx_direct="$enableval"],
1279 [driglx_direct="yes"])
1282 dnl libGL configuration per driver
1284 case "x$enable_glx" in
1285 xxlib | xgallium-xlib)
1287 dri_modules="x11 xext xcb"
1288 PKG_CHECK_MODULES([XLIBGL], [$dri_modules])
1289 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
1290 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
1291 GL_LIB_DEPS="$XLIBGL_LIBS"
1292 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1293 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm $PTHREAD_LIBS"
1297 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
1299 # find the DRI deps for libGL
1300 dri_modules="x11 xext xdamage xfixes x11-xcb xcb xcb-glx >= $XCBGLX_REQUIRED"
1302 if test x"$driglx_direct" = xyes; then
1303 if test x"$dri_platform" = xdrm ; then
1304 DEFINES="$DEFINES -DGLX_USE_DRM"
1305 if test "x$have_libdrm" != xyes; then
1306 AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
1309 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
1310 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED"
1311 if test x"$enable_dri3" = xyes; then
1312 PKG_CHECK_MODULES([DRI3PROTO], [dri3proto >= $DRI3PROTO_REQUIRED])
1313 PKG_CHECK_MODULES([PRESENTPROTO], [presentproto >= $PRESENTPROTO_REQUIRED])
1316 if test x"$enable_dri" = xyes; then
1317 dri_modules="$dri_modules xcb-dri2 >= $XCBDRI2_REQUIRED"
1320 if test x"$enable_dri3" = xyes; then
1321 PKG_CHECK_EXISTS([xcb >= $XCB_REQUIRED], [], AC_MSG_ERROR([DRI3 requires xcb >= $XCB_REQUIRED]))
1322 dri3_modules="xcb-dri3 xcb-present xcb-sync xshmfence >= $XSHMFENCE_REQUIRED"
1323 PKG_CHECK_MODULES([XCB_DRI3], [$dri3_modules])
1326 if test x"$dri_platform" = xapple ; then
1327 DEFINES="$DEFINES -DGLX_USE_APPLEGL"
1331 # add xf86vidmode if available
1332 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
1333 if test "$HAVE_XF86VIDMODE" = yes ; then
1334 dri_modules="$dri_modules xxf86vm"
1337 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
1338 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
1339 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
1340 GL_LIB_DEPS="$DRIGL_LIBS"
1342 # need DRM libs, $PTHREAD_LIBS, etc.
1343 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1344 GL_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
1349 if test "$have_libudev" = yes; then
1350 DEFINES="$DEFINES -DHAVE_LIBUDEV"
1354 if test "$have_sysfs" = yes; then
1355 DEFINES="$DEFINES -DHAVE_SYSFS"
1359 # This is outside the case (above) so that it is invoked even for non-GLX
1361 AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
1363 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1364 GLESv1_CM_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
1365 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1366 GLESv2_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
1368 AC_SUBST([X11_INCLUDES])
1369 AC_SUBST([GL_LIB_DEPS])
1370 AC_SUBST([GL_PC_REQ_PRIV])
1371 AC_SUBST([GL_PC_LIB_PRIV])
1372 AC_SUBST([GL_PC_CFLAGS])
1373 AC_SUBST([DRI_PC_REQ_PRIV])
1374 AC_SUBST([GLESv1_CM_LIB_DEPS])
1375 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
1376 AC_SUBST([GLESv2_LIB_DEPS])
1377 AC_SUBST([GLESv2_PC_LIB_PRIV])
1379 AC_SUBST([HAVE_XF86VIDMODE])
1384 case "x$enable_glx" in
1385 xxlib | xgallium-xlib)
1386 DEFINES="$DEFINES -DUSE_XSHM"
1389 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1390 if test "x$driglx_direct" = xyes; then
1391 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1400 AC_ARG_ENABLE([glx-tls],
1401 [AS_HELP_STRING([--enable-glx-tls],
1402 [enable TLS support in GLX @<:@default=disabled@:>@])],
1403 [GLX_USE_TLS="$enableval"],
1405 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
1407 AS_IF([test "x$GLX_USE_TLS" = xyes -a "x$ax_pthread_ok" = xyes],
1408 [DEFINES="${DEFINES} -DGLX_USE_TLS"])
1410 dnl Read-only text section on x86 hardened platforms
1411 AC_ARG_ENABLE([glx-read-only-text],
1412 [AS_HELP_STRING([--enable-glx-read-only-text],
1413 [Disable writable .text section on x86 (decreases performance) @<:@default=disabled@:>@])],
1414 [enable_glx_read_only_text="$enableval"],
1415 [enable_glx_read_only_text=no])
1416 if test "x$enable_glx_read_only_text" = xyes; then
1417 DEFINES="$DEFINES -DGLX_X86_READONLY_TEXT"
1423 dnl Directory for DRI drivers
1424 AC_ARG_WITH([dri-driverdir],
1425 [AS_HELP_STRING([--with-dri-driverdir=DIR],
1426 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
1427 [DRI_DRIVER_INSTALL_DIR="$withval"],
1428 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
1429 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
1430 dnl Extra search path for DRI drivers
1431 AC_ARG_WITH([dri-searchpath],
1432 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
1433 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
1434 [DRI_DRIVER_SEARCH_DIR="$withval"],
1435 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
1436 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
1437 dnl Which drivers to build - default is chosen by platform
1438 AC_ARG_WITH([dri-drivers],
1439 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
1440 [comma delimited classic DRI drivers list, e.g.
1441 "swrast,i965,radeon" @<:@default=auto@:>@])],
1442 [with_dri_drivers="$withval"],
1443 [with_dri_drivers=auto])
1445 if test "x$with_dri_drivers" = xauto; then
1446 if test "x$enable_opengl" = xyes -a "x$enable_dri" = xyes; then
1447 with_dri_drivers="yes"
1449 with_dri_drivers="no"
1452 if test "x$with_dri_drivers" = xno; then
1456 dnl If $with_dri_drivers is yes, drivers will be added through
1457 dnl platform checks. Set DEFINES and LIB_DEPS
1458 if test "x$enable_dri" = xyes; then
1459 # Platform specific settings and drivers to build
1462 DEFINES="$DEFINES -DHAVE_ALIAS"
1463 if test "x$enable_dri3" = xyes; then
1464 DEFINES="$DEFINES -DHAVE_DRI3"
1467 if test "x$have_pci_id" != xyes; then
1468 AC_MSG_ERROR([libudev-dev or sysfs required for building DRI])
1473 # Build only the drivers for cards that exist on PowerPC/sparc
1474 if test "x$with_dri_drivers" = "xyes"; then
1475 with_dri_drivers="r200 radeon swrast"
1480 *freebsd* | dragonfly* | *netbsd* | openbsd*)
1481 DEFINES="$DEFINES -DHAVE_ALIAS"
1484 DEFINES="$DEFINES -DHAVE_ALIAS"
1487 if test "x$with_dri_drivers" = "xyes"; then
1488 with_dri_drivers="swrast"
1492 DEFINES="$DEFINES -DGLX_ALIAS_UNSUPPORTED -DBUILDING_MESA"
1493 if test "x$with_dri_drivers" = "xyes"; then
1494 with_dri_drivers="swrast"
1500 if test "x$with_dri_drivers" = "xyes"; then
1501 with_dri_drivers="i915 i965 nouveau r200 radeon swrast"
1505 PKG_CHECK_MODULES([EXPAT], [expat], [],
1506 # expat version 2.0 and earlier do not provide expat.pc
1507 [AC_CHECK_HEADER([expat.h],[],
1508 [AC_MSG_ERROR([Expat headers required for DRI not found])])
1509 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1510 [AC_MSG_ERROR([Expat library required for DRI not found])])
1511 EXPAT_LIBS="-lexpat"])
1513 # put all the necessary libs together
1514 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1517 AC_SUBST([DRI_LIB_DEPS])
1520 dnl Duplicates in DRI_DIRS are removed by sorting it at the end of this block
1521 if test -n "$with_dri_drivers"; then
1522 if test "x$enable_opengl" != xyes; then
1523 AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1526 dri_drivers=`IFS=', '; echo $with_dri_drivers`
1527 for driver in $dri_drivers; do
1528 DRI_DIRS="$DRI_DIRS $driver"
1532 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1536 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1539 HAVE_NOUVEAU_DRI=yes;
1540 PKG_CHECK_MODULES([NVVIEUX], [libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED])
1543 HAVE_RADEON_DRI=yes;
1544 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1548 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1551 HAVE_SWRAST_DRI=yes;
1554 AC_MSG_ERROR([classic DRI driver '$driver' does not exist])
1558 DRI_DIRS=`echo $DRI_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1563 # Vulkan driver configuration
1566 AC_ARG_WITH([vulkan-drivers],
1567 [AS_HELP_STRING([--with-vulkan-drivers@<:@=DIRS...@:>@],
1568 [comma delimited Vulkan drivers list, e.g.
1570 @<:@default=no@:>@])],
1571 [with_vulkan_drivers="$withval"],
1572 [with_vulkan_drivers="no"])
1574 # Doing '--without-vulkan-drivers' will set this variable to 'no'. Clear it
1575 # here so that the script doesn't choke on an unknown driver name later.
1576 case "x$with_vulkan_drivers" in
1577 xyes) with_vulkan_drivers="$VULKAN_DRIVERS_DEFAULT" ;;
1578 xno) with_vulkan_drivers='' ;;
1581 AC_ARG_WITH([vulkan-icddir],
1582 [AS_HELP_STRING([--with-vulkan-icddir=DIR],
1583 [directory for the Vulkan driver icd files @<:@${sysconfdir}/vulkan/icd.d@:>@])],
1584 [VULKAN_ICD_INSTALL_DIR="$withval"],
1585 [VULKAN_ICD_INSTALL_DIR='${sysconfdir}/vulkan/icd.d'])
1586 AC_SUBST([VULKAN_ICD_INSTALL_DIR])
1588 if test -n "$with_vulkan_drivers"; then
1589 VULKAN_DRIVERS=`IFS=', '; echo $with_vulkan_drivers`
1590 for driver in $VULKAN_DRIVERS; do
1593 if test "x$HAVE_I965_DRI" != xyes; then
1594 AC_MSG_ERROR([Intel Vulkan driver requires the i965 dri driver])
1596 if test "x$with_sha1" == "x"; then
1597 AC_MSG_ERROR([Intel Vulkan driver requires SHA1])
1599 HAVE_INTEL_VULKAN=yes;
1603 AC_MSG_ERROR([Vulkan driver '$driver' does not exist])
1607 VULKAN_DRIVERS=`echo $VULKAN_DRIVERS|tr " " "\n"|sort -u|tr "\n" " "`
1611 AM_CONDITIONAL(NEED_MEGADRIVER, test -n "$DRI_DIRS")
1612 AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_glx" = xxlib -o \
1613 "x$enable_osmesa" = xyes -o \
1617 dnl OSMesa configuration
1620 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1621 AC_ARG_WITH([osmesa-bits],
1622 [AS_HELP_STRING([--with-osmesa-bits=BITS],
1623 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1624 [osmesa_bits="$withval"],
1626 if test "x$osmesa_bits" != x8; then
1627 if test "x$enable_dri" = xyes -o "x$enable_glx" != xno; then
1628 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1632 case "x$osmesa_bits" in
1634 OSMESA_LIB="${OSMESA_LIB}"
1637 OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
1638 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1641 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1645 if test "x$enable_osmesa" = xyes -o "x$enable_gallium_osmesa" = xyes; then
1646 # only link libraries with osmesa if shared
1647 if test "$enable_static" = no; then
1648 OSMESA_LIB_DEPS="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1652 OSMESA_PC_LIB_PRIV="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1655 AC_SUBST([OSMESA_LIB_DEPS])
1656 AC_SUBST([OSMESA_PC_REQ])
1657 AC_SUBST([OSMESA_PC_LIB_PRIV])
1660 dnl gbm configuration
1662 if test "x$enable_gbm" = xauto; then
1663 case "$with_egl_platforms" in
1670 if test "x$enable_gbm" = xyes; then
1671 if test "x$need_pci_id$have_pci_id" = xyesno; then
1672 AC_MSG_ERROR([gbm requires udev >= $LIBUDEV_REQUIRED or sysfs])
1675 if test "x$enable_dri" = xyes; then
1676 if test "x$enable_shared_glapi" = xno; then
1677 AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1680 # Strictly speaking libgbm does not require --enable-dri, although
1681 # both of its backends do. Thus one can build libgbm without any
1682 # backends if --disable-dri is set.
1683 # To avoid unnecessary complexity of checking if at least one backend
1684 # is available when building, just mandate --enable-dri.
1685 AC_MSG_ERROR([gbm requires --enable-dri])
1688 AM_CONDITIONAL(HAVE_GBM, test "x$enable_gbm" = xyes)
1689 if test "x$need_pci_id$have_libudev" = xyesyes; then
1690 GBM_PC_REQ_PRIV="libudev >= $LIBUDEV_REQUIRED"
1694 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1695 AC_SUBST([GBM_PC_REQ_PRIV])
1696 AC_SUBST([GBM_PC_LIB_PRIV])
1699 dnl EGL configuration
1703 if test "x$enable_egl" = xyes; then
1704 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS $PTHREAD_LIBS"
1706 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1708 if test "$enable_static" != yes; then
1709 if test "x$enable_dri" = xyes; then
1710 HAVE_EGL_DRIVER_DRI2=1
1711 if test "x$enable_shared_glapi" = xno; then
1712 AC_MSG_ERROR([egl_dri2 requires --enable-shared-glapi])
1714 if test "x$enable_dri3" = xyes; then
1715 HAVE_EGL_DRIVER_DRI3=1
1716 if test "x$enable_shared_glapi" = xno; then
1717 AC_MSG_ERROR([egl_dri3 requires --enable-shared-glapi])
1721 # Avoid building an "empty" libEGL. Drop/update this
1722 # when other backends (haiku?) come along.
1723 AC_MSG_ERROR([egl requires --enable-dri])
1728 AM_CONDITIONAL(HAVE_EGL, test "x$enable_egl" = xyes)
1729 AC_SUBST([EGL_LIB_DEPS])
1734 dnl XA configuration
1736 if test "x$enable_xa" = xyes; then
1737 if test "x$with_gallium_drivers" = xswrast; then
1739 Building xa requires at least one non swrast gallium driver.
1740 If you are looking to use libxatracker.so with the VMware driver,
1741 make sure to include svga in the gallium drivers list, apart from
1743 Example: ./configure --enable-xa --with-gallium-drivers=svga...])
1745 gallium_st="$gallium_st xa"
1747 AM_CONDITIONAL(HAVE_ST_XA, test "x$enable_xa" = xyes)
1750 dnl Gallium G3DVL configuration
1752 if test -n "$with_gallium_drivers" -a "x$with_gallium_drivers" != xswrast; then
1753 if test "x$enable_xvmc" = xauto; then
1754 PKG_CHECK_EXISTS([xvmc >= $XVMC_REQUIRED], [enable_xvmc=yes], [enable_xvmc=no])
1757 if test "x$enable_vdpau" = xauto; then
1758 PKG_CHECK_EXISTS([vdpau >= $VDPAU_REQUIRED], [enable_vdpau=yes], [enable_vdpau=no])
1761 if test "x$enable_omx" = xauto; then
1762 PKG_CHECK_EXISTS([libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED], [enable_omx=yes], [enable_omx=no])
1765 if test "x$enable_va" = xauto; then
1766 PKG_CHECK_EXISTS([libva >= $LIBVA_REQUIRED], [enable_va=yes], [enable_va=no])
1770 if test "x$enable_dri" = xyes -o \
1771 "x$enable_xvmc" = xyes -o \
1772 "x$enable_vdpau" = xyes -o \
1773 "x$enable_omx" = xyes -o \
1774 "x$enable_va" = xyes; then
1777 AM_CONDITIONAL(NEED_GALLIUM_VL, test "x$need_gallium_vl" = xyes)
1779 if test "x$enable_xvmc" = xyes -o \
1780 "x$enable_vdpau" = xyes -o \
1781 "x$enable_omx" = xyes -o \
1782 "x$enable_va" = xyes; then
1783 if test x"$enable_dri3" = xyes; then
1784 PKG_CHECK_MODULES([VL], [xcb-dri3 xcb-present xcb-sync xshmfence >= $XSHMFENCE_REQUIRED
1785 x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
1787 PKG_CHECK_MODULES([VL], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
1789 need_gallium_vl_winsys=yes
1791 AM_CONDITIONAL(NEED_GALLIUM_VL_WINSYS, test "x$need_gallium_vl_winsys" = xyes)
1793 if test "x$enable_xvmc" = xyes; then
1794 PKG_CHECK_MODULES([XVMC], [xvmc >= $XVMC_REQUIRED])
1795 gallium_st="$gallium_st xvmc"
1797 AM_CONDITIONAL(HAVE_ST_XVMC, test "x$enable_xvmc" = xyes)
1799 if test "x$enable_vdpau" = xyes; then
1800 PKG_CHECK_MODULES([VDPAU], [vdpau >= $VDPAU_REQUIRED])
1801 gallium_st="$gallium_st vdpau"
1802 DEFINES="$DEFINES -DHAVE_ST_VDPAU"
1804 AM_CONDITIONAL(HAVE_ST_VDPAU, test "x$enable_vdpau" = xyes)
1806 if test "x$enable_omx" = xyes; then
1807 PKG_CHECK_MODULES([OMX], [libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED])
1808 gallium_st="$gallium_st omx"
1810 AM_CONDITIONAL(HAVE_ST_OMX, test "x$enable_omx" = xyes)
1812 if test "x$enable_va" = xyes; then
1813 PKG_CHECK_MODULES([VA], [libva >= $LIBVA_REQUIRED])
1814 gallium_st="$gallium_st va"
1816 AM_CONDITIONAL(HAVE_ST_VA, test "x$enable_va" = xyes)
1819 dnl Nine Direct3D9 configuration
1821 if test "x$enable_nine" = xyes; then
1822 if ! echo "$with_gallium_drivers" | grep -q 'swrast'; then
1823 AC_MSG_ERROR([nine requires the gallium swrast driver])
1825 if test "x$with_gallium_drivers" = xswrast; then
1826 AC_MSG_ERROR([nine requires at least one non-swrast gallium driver])
1828 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6; then
1829 AC_MSG_ERROR([gcc >= 4.6 is required to build nine])
1832 if test "x$enable_dri3" = xno; then
1833 AC_MSG_WARN([using nine together with wine requires DRI3 enabled system])
1836 gallium_st="$gallium_st nine"
1838 AM_CONDITIONAL(HAVE_ST_NINE, test "x$enable_nine" = xyes)
1841 dnl OpenCL configuration
1844 AC_ARG_WITH([clang-libdir],
1845 [AS_HELP_STRING([--with-clang-libdir],
1846 [Path to Clang libraries @<:@default=llvm-config --libdir@:>@])],
1847 [CLANG_LIBDIR="$withval"],
1850 PKG_CHECK_EXISTS([libclc], [have_libclc=yes], [have_libclc=no])
1851 PKG_CHECK_MODULES([LIBELF], [libelf], [have_libelf=yes], [have_libelf=no])
1853 if test "x$have_libelf" = xno; then
1856 AC_CHECK_LIB([elf], [elf_memory], [have_libelf=yes;LIBELF_LIBS=-lelf], [have_libelf=no])
1857 AC_SUBST([LIBELF_LIBS])
1858 AC_SUBST([LIBELF_CFLAGS])
1861 if test "x$enable_opencl" = xyes; then
1862 if test -z "$with_gallium_drivers"; then
1863 AC_MSG_ERROR([cannot enable OpenCL without Gallium])
1866 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 7; then
1867 AC_MSG_ERROR([gcc >= 4.7 is required to build clover])
1870 if test "x$have_libclc" = xno; then
1871 AC_MSG_ERROR([pkg-config cannot find libclc.pc which is required to build clover.
1872 Make sure the directory containing libclc.pc is specified in your
1873 PKG_CONFIG_PATH environment variable.
1874 By default libclc.pc is installed to /usr/local/share/pkgconfig/])
1876 LIBCLC_INCLUDEDIR=`$PKG_CONFIG --variable=includedir libclc`
1877 LIBCLC_LIBEXECDIR=`$PKG_CONFIG --variable=libexecdir libclc`
1878 AC_SUBST([LIBCLC_INCLUDEDIR])
1879 AC_SUBST([LIBCLC_LIBEXECDIR])
1882 gallium_st="$gallium_st clover"
1884 if test "x$enable_opencl_icd" = xyes; then
1885 OPENCL_LIBNAME="MesaOpenCL"
1887 OPENCL_LIBNAME="OpenCL"
1890 if test "x$have_libelf" != xyes; then
1891 AC_MSG_ERROR([Clover requires libelf])
1894 AM_CONDITIONAL(HAVE_CLOVER, test "x$enable_opencl" = xyes)
1895 AM_CONDITIONAL(HAVE_CLOVER_ICD, test "x$enable_opencl_icd" = xyes)
1896 AC_SUBST([OPENCL_LIBNAME])
1899 dnl Gallium configuration
1901 AM_CONDITIONAL(HAVE_GALLIUM, test -n "$with_gallium_drivers")
1903 AC_SUBST([LLVM_BINDIR])
1904 AC_SUBST([LLVM_CFLAGS])
1905 AC_SUBST([LLVM_CPPFLAGS])
1906 AC_SUBST([LLVM_CXXFLAGS])
1907 AC_SUBST([LLVM_LIBDIR])
1908 AC_SUBST([LLVM_LIBS])
1909 AC_SUBST([LLVM_LDFLAGS])
1910 AC_SUBST([LLVM_INCLUDEDIR])
1911 AC_SUBST([LLVM_VERSION])
1912 AC_SUBST([CLANG_RESOURCE_DIR])
1914 case "x$enable_opengl$enable_gles1$enable_gles2" in
1916 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1920 AC_SUBST([VG_LIB_DEPS])
1921 AC_SUBST([EGL_CLIENT_APIS])
1924 dnl EGL Platforms configuration
1926 AC_ARG_WITH([egl-platforms],
1927 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1928 [comma delimited native platforms libEGL supports, e.g.
1929 "x11,drm" @<:@default=auto@:>@])],
1930 [with_egl_platforms="$withval"],
1931 [if test "x$enable_egl" = xyes; then
1932 with_egl_platforms="x11"
1934 with_egl_platforms=""
1937 if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
1938 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1941 PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland_scanner],
1942 WAYLAND_SCANNER=`$PKG_CONFIG --variable=wayland_scanner wayland_scanner`,
1944 if test "x$WAYLAND_SCANNER" = x; then
1945 AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner])
1948 # Do per-EGL platform setups and checks
1949 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1950 for plat in $egl_platforms; do
1953 test "x$have_libdrm" != xyes &&
1954 AC_MSG_ERROR([EGL platform wayland requires libdrm >= $LIBDRM_REQUIRED])
1956 PKG_CHECK_MODULES([WAYLAND], [wayland-client >= $WAYLAND_REQUIRED wayland-server >= $WAYLAND_REQUIRED])
1958 if test "x$WAYLAND_SCANNER" = x; then
1959 AC_MSG_ERROR([wayland-scanner is needed to compile the wayland egl platform])
1964 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED xcb-xfixes])
1968 test "x$enable_gbm" = "xno" &&
1969 AC_MSG_ERROR([EGL platform drm needs gbm])
1970 test "x$have_libdrm" != xyes &&
1971 AC_MSG_ERROR([EGL platform drm requires libdrm >= $LIBDRM_REQUIRED])
1975 test "x$have_libdrm" != xyes &&
1976 AC_MSG_ERROR([EGL platform surfaceless requires libdrm >= $LIBDRM_REQUIRED])
1980 AC_MSG_ERROR([EGL platform '$plat' does not exist])
1984 case "$plat$need_pci_id$have_pci_id" in
1985 waylandyesno|drmyesno)
1986 AC_MSG_ERROR([cannot build $plat platform without udev >= $LIBUDEV_REQUIRED or sysfs]) ;;
1990 # libEGL wants to default to the first platform specified in
1991 # ./configure. parse that here.
1992 if test "x$egl_platforms" != "x"; then
1993 FIRST_PLATFORM_CAPS=`echo $egl_platforms | sed 's| .*||' | tr '[[a-z]]' '[[A-Z]]'`
1994 EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
1996 EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
1999 AM_CONDITIONAL(HAVE_PLATFORM_X11, echo "$egl_platforms" | grep -q 'x11')
2000 AM_CONDITIONAL(HAVE_PLATFORM_WAYLAND, echo "$egl_platforms" | grep -q 'wayland')
2001 AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep -q 'drm')
2002 AM_CONDITIONAL(HAVE_EGL_PLATFORM_SURFACELESS, echo "$egl_platforms" | grep -q 'surfaceless')
2004 AM_CONDITIONAL(HAVE_EGL_DRIVER_DRI2, test "x$HAVE_EGL_DRIVER_DRI2" != "x")
2006 AC_SUBST([EGL_NATIVE_PLATFORM])
2007 AC_SUBST([EGL_CFLAGS])
2009 # If we don't have the X11 platform, set this define so we don't try to include
2011 if ! echo "$egl_platforms" | grep -q 'x11'; then
2012 DEFINES="$DEFINES -DMESA_EGL_NO_X11_HEADERS"
2013 GL_PC_CFLAGS="$GL_PC_CFLAGS -DMESA_EGL_NO_X11_HEADERS"
2019 AC_ARG_ENABLE([gallium-llvm],
2020 [AS_HELP_STRING([--enable-gallium-llvm],
2021 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
2022 [enable_gallium_llvm="$enableval"],
2023 [enable_gallium_llvm=auto])
2025 AC_ARG_ENABLE([llvm-shared-libs],
2026 [AS_HELP_STRING([--enable-llvm-shared-libs],
2027 [link with LLVM shared libraries @<:@default=enabled@:>@])],
2028 [enable_llvm_shared_libs="$enableval"],
2029 [enable_llvm_shared_libs=yes])
2031 AC_ARG_WITH([llvm-prefix],
2032 [AS_HELP_STRING([--with-llvm-prefix],
2033 [Prefix for LLVM installations in non-standard locations])],
2034 [llvm_prefix="$withval"],
2038 # Call this inside ` ` to get the return value.
2039 # $1 is the llvm-config command with arguments.
2040 strip_unwanted_llvm_flags() {
2041 # Use \> (marks the end of the word)
2043 -e 's/-DNDEBUG\>//g' \
2044 -e 's/-D_GNU_SOURCE\>//g' \
2045 -e 's/-pedantic\>//g' \
2046 -e 's/-Wcovered-switch-default\>//g' \
2050 -e 's/-Wcast-qual\>//g' \
2051 -e 's/-Woverloaded-virtual\>//g' \
2052 -e 's/-fcolor-diagnostics\>//g' \
2053 -e 's/-fdata-sections\>//g' \
2054 -e 's/-ffunction-sections\>//g' \
2055 -e 's/-fno-exceptions\>//g' \
2056 -e 's/-fomit-frame-pointer\>//g' \
2057 -e 's/-fvisibility-inlines-hidden\>//g' \
2059 -e 's/-fstack-protector-strong\>//g'
2062 llvm_check_version_for() {
2063 if test "${LLVM_VERSION_INT}${LLVM_VERSION_PATCH}" -lt "${1}0${2}${3}"; then
2064 AC_MSG_ERROR([LLVM $1.$2.$3 or newer is required for $4])
2070 if test -z "$with_gallium_drivers"; then
2071 enable_gallium_llvm=no
2073 if test "x$enable_gallium_llvm" = xauto; then
2075 i*86|x86_64|amd64) enable_gallium_llvm=yes;;
2078 if test "x$enable_gallium_llvm" = xyes; then
2079 if test -n "$llvm_prefix"; then
2080 AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no], ["$llvm_prefix/bin"])
2082 AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no])
2085 if test "x$LLVM_CONFIG" != xno; then
2086 LLVM_VERSION=`$LLVM_CONFIG --version | egrep -o '^[[0-9.]]+'`
2087 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
2088 LLVM_BINDIR=`$LLVM_CONFIG --bindir`
2089 LLVM_CPPFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cppflags"`
2090 LLVM_CFLAGS=$LLVM_CPPFLAGS # CPPFLAGS seem to be sufficient
2091 LLVM_CXXFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cxxflags"`
2092 LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
2093 LLVM_LIBDIR=`$LLVM_CONFIG --libdir`
2095 AC_COMPUTE_INT([LLVM_VERSION_MAJOR], [LLVM_VERSION_MAJOR],
2096 [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
2097 AC_COMPUTE_INT([LLVM_VERSION_MINOR], [LLVM_VERSION_MINOR],
2098 [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
2100 LLVM_VERSION_PATCH=`echo $LLVM_VERSION | cut -d. -f3 | egrep -o '^[[0-9]]+'`
2101 if test -z "$LLVM_VERSION_PATCH"; then
2102 LLVM_VERSION_PATCH=0
2105 if test -n "${LLVM_VERSION_MAJOR}"; then
2106 LLVM_VERSION_INT="${LLVM_VERSION_MAJOR}0${LLVM_VERSION_MINOR}"
2108 LLVM_VERSION_INT=`echo $LLVM_VERSION | sed -e 's/\([[0-9]]\)\.\([[0-9]]\)/\10\2/g'`
2111 LLVM_REQUIRED_VERSION_MAJOR="3"
2112 LLVM_REQUIRED_VERSION_MINOR="3"
2113 if test "$LLVM_VERSION_INT" -lt "${LLVM_REQUIRED_VERSION_MAJOR}0${LLVM_REQUIRED_VERSION_MINOR}"; then
2114 AC_MSG_ERROR([LLVM $LLVM_REQUIRED_VERSION_MAJOR.$LLVM_REQUIRED_VERSION_MINOR or newer is required])
2117 LLVM_COMPONENTS="engine bitwriter mcjit mcdisassembler"
2119 if test "x$enable_opencl" = xyes; then
2120 llvm_check_version_for "3" "5" "0" "opencl"
2122 LLVM_COMPONENTS="${LLVM_COMPONENTS} all-targets ipo linker instrumentation"
2123 LLVM_COMPONENTS="${LLVM_COMPONENTS} irreader option objcarcopts profiledata"
2125 DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT -DMESA_LLVM_VERSION_PATCH=$LLVM_VERSION_PATCH"
2128 dnl Check for Clang internal headers
2129 if test "x$enable_opencl" = xyes; then
2130 if test -z "$CLANG_LIBDIR"; then
2131 CLANG_LIBDIR=${LLVM_LIBDIR}
2133 CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION}
2134 AS_IF([test ! -f "$CLANG_RESOURCE_DIR/include/stddef.h"],
2135 [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.])])
2145 if test "x$enable_opencl" = xyes; then
2146 AC_MSG_ERROR([cannot enable OpenCL without LLVM])
2150 dnl Directory for XVMC libs
2151 AC_ARG_WITH([xvmc-libdir],
2152 [AS_HELP_STRING([--with-xvmc-libdir=DIR],
2153 [directory for the XVMC libraries @<:@default=${libdir}@:>@])],
2154 [XVMC_LIB_INSTALL_DIR="$withval"],
2155 [XVMC_LIB_INSTALL_DIR='${libdir}'])
2156 AC_SUBST([XVMC_LIB_INSTALL_DIR])
2161 AM_CONDITIONAL(HAVE_GALLIUM_TESTS, test "x$enable_gallium_tests" = xyes)
2163 dnl Directory for VDPAU libs
2164 AC_ARG_WITH([vdpau-libdir],
2165 [AS_HELP_STRING([--with-vdpau-libdir=DIR],
2166 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
2167 [VDPAU_LIB_INSTALL_DIR="$withval"],
2168 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
2169 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
2171 dnl Directory for OMX libs
2173 AC_ARG_WITH([omx-libdir],
2174 [AS_HELP_STRING([--with-omx-libdir=DIR],
2175 [directory for the OMX libraries])],
2176 [OMX_LIB_INSTALL_DIR="$withval"],
2177 [OMX_LIB_INSTALL_DIR=`$PKG_CONFIG --define-variable=libdir=\$libdir --variable=pluginsdir libomxil-bellagio`])
2178 AC_SUBST([OMX_LIB_INSTALL_DIR])
2180 dnl Directory for VA libs
2182 AC_ARG_WITH([va-libdir],
2183 [AS_HELP_STRING([--with-va-libdir=DIR],
2184 [directory for the VA libraries @<:@${libdir}/dri@:>@])],
2185 [VA_LIB_INSTALL_DIR="$withval"],
2186 [VA_LIB_INSTALL_DIR="${libdir}/dri"])
2187 AC_SUBST([VA_LIB_INSTALL_DIR])
2189 AC_ARG_WITH([d3d-libdir],
2190 [AS_HELP_STRING([--with-d3d-libdir=DIR],
2191 [directory for the D3D modules @<:@${libdir}/d3d@:>@])],
2192 [D3D_DRIVER_INSTALL_DIR="$withval"],
2193 [D3D_DRIVER_INSTALL_DIR="${libdir}/d3d"])
2194 AC_SUBST([D3D_DRIVER_INSTALL_DIR])
2197 dnl Gallium helper functions
2199 gallium_require_drm() {
2200 if test "x$have_libdrm" != xyes; then
2201 AC_MSG_ERROR([$1 requires libdrm >= $LIBDRM_REQUIRED])
2205 gallium_require_llvm() {
2206 if test "x$MESA_LLVM" = x0; then
2207 case "$host" in *gnux32) return;; esac
2209 i*86|x86_64|amd64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
2214 gallium_require_drm_loader() {
2215 if test "x$need_pci_id$have_pci_id" = xyesno; then
2216 AC_MSG_ERROR([Gallium drm loader requires libudev >= $LIBUDEV_REQUIRED or sysfs])
2220 dnl This is for Glamor. Skip this if OpenGL is disabled.
2222 if test "x$enable_opengl" = xno; then
2226 case "$with_egl_platforms" in
2230 AC_MSG_ERROR([--with-egl-platforms=drm is required to build the $1 driver.])
2233 if test "x$enable_gbm" != xyes; then
2234 AC_MSG_ERROR([--enable-gbm is required to build the $1 driver.])
2238 radeon_llvm_check() {
2239 if test ${LLVM_VERSION_INT} -lt 307; then
2240 amdgpu_llvm_target_name='r600'
2242 amdgpu_llvm_target_name='amdgpu'
2244 if test "x$enable_gallium_llvm" != "xyes"; then
2245 AC_MSG_ERROR([--enable-gallium-llvm is required when building $1])
2247 llvm_check_version_for "3" "6" "0" $1
2248 if test true && $LLVM_CONFIG --targets-built | grep -iqvw $amdgpu_llvm_target_name ; then
2249 AC_MSG_ERROR([LLVM $amdgpu_llvm_target_name not enabled in your LLVM build.])
2251 LLVM_COMPONENTS="${LLVM_COMPONENTS} $amdgpu_llvm_target_name bitreader ipo"
2252 NEED_RADEON_LLVM=yes
2253 if test "x$have_libelf" != xyes; then
2254 AC_MSG_ERROR([$1 requires libelf when using llvm])
2259 gallium_require_llvm $1
2260 if test ${LLVM_VERSION_INT} -lt 306; then
2261 AC_MSG_ERROR([LLVM version 3.6 or later required when building $1])
2263 if test "x$enable_gallium_llvm" != "xyes"; then
2264 AC_MSG_ERROR([--enable-gallium-llvm is required when building $1])
2268 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
2269 if test -n "$with_gallium_drivers"; then
2270 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
2271 for driver in $gallium_drivers; do
2274 HAVE_GALLIUM_SVGA=yes
2275 gallium_require_drm "svga"
2276 gallium_require_drm_loader
2279 HAVE_GALLIUM_I915=yes
2280 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
2281 gallium_require_drm "Gallium i915"
2282 gallium_require_drm_loader
2285 HAVE_GALLIUM_ILO=yes
2286 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
2287 gallium_require_drm "Gallium i965/ilo"
2288 gallium_require_drm_loader
2291 HAVE_GALLIUM_R300=yes
2292 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2293 gallium_require_drm "Gallium R300"
2294 gallium_require_drm_loader
2295 gallium_require_llvm "Gallium R300"
2298 HAVE_GALLIUM_R600=yes
2299 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2300 gallium_require_drm "Gallium R600"
2301 gallium_require_drm_loader
2302 if test "x$enable_opencl" = xyes; then
2303 radeon_llvm_check "r600g"
2304 LLVM_COMPONENTS="${LLVM_COMPONENTS} bitreader asmparser"
2308 HAVE_GALLIUM_RADEONSI=yes
2309 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2310 PKG_CHECK_MODULES([AMDGPU], [libdrm_amdgpu >= $LIBDRM_AMDGPU_REQUIRED])
2311 gallium_require_drm "radeonsi"
2312 gallium_require_drm_loader
2313 radeon_llvm_check "radeonsi"
2314 require_egl_drm "radeonsi"
2317 HAVE_GALLIUM_NOUVEAU=yes
2318 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
2319 gallium_require_drm "nouveau"
2320 gallium_require_drm_loader
2323 HAVE_GALLIUM_FREEDRENO=yes
2324 PKG_CHECK_MODULES([FREEDRENO], [libdrm_freedreno >= $LIBDRM_FREEDRENO_REQUIRED])
2325 gallium_require_drm "freedreno"
2326 gallium_require_drm_loader
2329 HAVE_GALLIUM_SOFTPIPE=yes
2330 if test "x$MESA_LLVM" = x1; then
2331 HAVE_GALLIUM_LLVMPIPE=yes
2335 swr_llvm_check "swr"
2337 AC_MSG_CHECKING([whether $CXX supports c++11/AVX/AVX2])
2338 AVX_CXXFLAGS="-march=core-avx-i"
2339 AVX2_CXXFLAGS="-march=core-avx2"
2342 save_CXXFLAGS="$CXXFLAGS"
2343 CXXFLAGS="-std=c++11 $CXXFLAGS"
2344 AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],[],
2345 [AC_MSG_ERROR([c++11 compiler support not detected])])
2346 CXXFLAGS="$save_CXXFLAGS"
2348 save_CXXFLAGS="$CXXFLAGS"
2349 CXXFLAGS="$AVX_CXXFLAGS $CXXFLAGS"
2350 AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],[],
2351 [AC_MSG_ERROR([AVX compiler support not detected])])
2352 CXXFLAGS="$save_CXXFLAGS"
2354 save_CFLAGS="$CXXFLAGS"
2355 CXXFLAGS="$AVX2_CXXFLAGS $CXXFLAGS"
2356 AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],[],
2357 [AC_MSG_ERROR([AVX2 compiler support not detected])])
2358 CXXFLAGS="$save_CXXFLAGS"
2361 HAVE_GALLIUM_SWR=yes
2364 HAVE_GALLIUM_VC4=yes
2365 gallium_require_drm "vc4"
2366 gallium_require_drm_loader
2368 PKG_CHECK_MODULES([SIMPENROSE], [simpenrose],
2369 [USE_VC4_SIMULATOR=yes;
2370 DEFINES="$DEFINES -DUSE_VC4_SIMULATOR"],
2371 [USE_VC4_SIMULATOR=no])
2374 HAVE_GALLIUM_VIRGL=yes
2375 gallium_require_drm "virgl"
2376 gallium_require_drm_loader
2377 require_egl_drm "virgl"
2380 AC_MSG_ERROR([Unknown Gallium driver: $driver])
2386 dnl Set LLVM_LIBS - This is done after the driver configuration so
2387 dnl that drivers can add additional components to LLVM_COMPONENTS.
2388 dnl Previously, gallium drivers were updating LLVM_LIBS directly
2389 dnl by calling llvm-config --libs ${DRIVER_LLVM_COMPONENTS}, but
2390 dnl this was causing the same libraries to be appear multiple times
2393 if test "x$MESA_LLVM" != x0; then
2395 if ! $LLVM_CONFIG --libs ${LLVM_COMPONENTS} >/dev/null; then
2396 AC_MSG_ERROR([Calling ${LLVM_CONFIG} failed])
2398 LLVM_LIBS="`$LLVM_CONFIG --libs ${LLVM_COMPONENTS}`"
2400 dnl llvm-config may not give the right answer when llvm is a built as a
2401 dnl single shared library, so we must work the library name out for
2403 dnl (See https://llvm.org/bugs/show_bug.cgi?id=6823)
2404 if test "x$enable_llvm_shared_libs" = xyes; then
2405 dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
2406 LLVM_SO_NAME=LLVM-`$LLVM_CONFIG --version`
2407 AS_IF([test -f "$LLVM_LIBDIR/lib$LLVM_SO_NAME.$IMP_LIB_EXT"], [llvm_have_one_so=yes])
2409 if test "x$llvm_have_one_so" = xyes; then
2410 dnl LLVM was built using auto*, so there is only one shared object.
2411 LLVM_LIBS="-l$LLVM_SO_NAME"
2413 dnl If LLVM was built with CMake, there will be one shared object per
2415 AS_IF([test ! -f "$LLVM_LIBDIR/libLLVMTarget.$IMP_LIB_EXT"],
2416 [AC_MSG_ERROR([Could not find llvm shared libraries:
2417 Please make sure you have built llvm with the --enable-shared option
2418 and that your llvm libraries are installed in $LLVM_LIBDIR
2419 If you have installed your llvm libraries to a different directory you
2420 can use the --with-llvm-prefix= configure flag to specify this directory.
2421 NOTE: Mesa is attempting to use llvm shared libraries by default.
2422 If you do not want to build with llvm shared libraries and instead want to
2423 use llvm static libraries then add --disable-llvm-shared-libs to your configure
2424 invocation and rebuild.])])
2426 dnl We don't need to update LLVM_LIBS in this case because the LLVM
2427 dnl install uses a shared object for each component and we have
2428 dnl already added all of these objects to LLVM_LIBS.
2431 AC_MSG_WARN([Building mesa with statically linked LLVM may cause compilation issues])
2432 dnl We need to link to llvm system libs when using static libs
2433 dnl However, only llvm 3.5+ provides --system-libs
2434 if test $LLVM_VERSION_MAJOR -eq 3 -a $LLVM_VERSION_MINOR -ge 5; then
2435 LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --system-libs`"
2440 AM_CONDITIONAL(HAVE_GALLIUM_SVGA, test "x$HAVE_GALLIUM_SVGA" = xyes)
2441 AM_CONDITIONAL(HAVE_GALLIUM_I915, test "x$HAVE_GALLIUM_I915" = xyes)
2442 AM_CONDITIONAL(HAVE_GALLIUM_ILO, test "x$HAVE_GALLIUM_ILO" = xyes)
2443 AM_CONDITIONAL(HAVE_GALLIUM_R300, test "x$HAVE_GALLIUM_R300" = xyes)
2444 AM_CONDITIONAL(HAVE_GALLIUM_R600, test "x$HAVE_GALLIUM_R600" = xyes)
2445 AM_CONDITIONAL(HAVE_GALLIUM_RADEONSI, test "x$HAVE_GALLIUM_RADEONSI" = xyes)
2446 AM_CONDITIONAL(HAVE_GALLIUM_RADEON_COMMON, test "x$HAVE_GALLIUM_R600" = xyes -o \
2447 "x$HAVE_GALLIUM_RADEONSI" = xyes)
2448 AM_CONDITIONAL(HAVE_GALLIUM_NOUVEAU, test "x$HAVE_GALLIUM_NOUVEAU" = xyes)
2449 AM_CONDITIONAL(HAVE_GALLIUM_FREEDRENO, test "x$HAVE_GALLIUM_FREEDRENO" = xyes)
2450 AM_CONDITIONAL(HAVE_GALLIUM_SOFTPIPE, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes)
2451 AM_CONDITIONAL(HAVE_GALLIUM_LLVMPIPE, test "x$HAVE_GALLIUM_LLVMPIPE" = xyes)
2452 AM_CONDITIONAL(HAVE_GALLIUM_SWR, test "x$HAVE_GALLIUM_SWR" = xyes)
2453 AM_CONDITIONAL(HAVE_GALLIUM_SWRAST, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes -o \
2454 "x$HAVE_GALLIUM_LLVMPIPE" = xyes -o \
2455 "x$HAVE_GALLIUM_SWR" = xyes)
2456 AM_CONDITIONAL(HAVE_GALLIUM_VC4, test "x$HAVE_GALLIUM_VC4" = xyes)
2457 AM_CONDITIONAL(HAVE_GALLIUM_VIRGL, test "x$HAVE_GALLIUM_VIRGL" = xyes)
2459 AM_CONDITIONAL(HAVE_GALLIUM_STATIC_TARGETS, test "x$enable_shared_pipe_drivers" = xno)
2461 if test "x$enable_dri" = xyes; then
2462 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRI"
2465 if test "x$have_drisw_kms" = xyes; then
2466 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_KMS"
2468 AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
2470 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
2471 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
2472 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
2473 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
2474 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
2475 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
2477 AM_CONDITIONAL(HAVE_INTEL_VULKAN, test "x$HAVE_INTEL_VULKAN" = xyes)
2479 AM_CONDITIONAL(HAVE_INTEL_DRIVERS, test "x$HAVE_INTEL_VULKAN" = xyes -o \
2480 "x$HAVE_I965_DRI" = xyes)
2482 AM_CONDITIONAL(NEED_RADEON_DRM_WINSYS, test "x$HAVE_GALLIUM_R300" = xyes -o \
2483 "x$HAVE_GALLIUM_R600" = xyes -o \
2484 "x$HAVE_GALLIUM_RADEONSI" = xyes)
2485 AM_CONDITIONAL(NEED_WINSYS_XLIB, test "x$enable_glx" = xgallium-xlib)
2486 AM_CONDITIONAL(NEED_RADEON_LLVM, test x$NEED_RADEON_LLVM = xyes)
2487 AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
2488 AM_CONDITIONAL(HAVE_MESA_LLVM, test x$MESA_LLVM = x1)
2489 AM_CONDITIONAL(USE_VC4_SIMULATOR, test x$USE_VC4_SIMULATOR = xyes)
2490 if test "x$USE_VC4_SIMULATOR" = xyes -a "x$HAVE_GALLIUM_ILO" = xyes; then
2491 AC_MSG_ERROR([VC4 simulator on x86 replaces i965 driver build, so ilo must be disabled.])
2494 AM_CONDITIONAL(HAVE_LIBDRM, test "x$have_libdrm" = xyes)
2495 AM_CONDITIONAL(HAVE_OSMESA, test "x$enable_osmesa" = xyes)
2496 AM_CONDITIONAL(HAVE_GALLIUM_OSMESA, test "x$enable_gallium_osmesa" = xyes)
2498 AM_CONDITIONAL(HAVE_X86_ASM, test "x$asm_arch" = xx86 -o "x$asm_arch" = xx86_64)
2499 AM_CONDITIONAL(HAVE_X86_64_ASM, test "x$asm_arch" = xx86_64)
2500 AM_CONDITIONAL(HAVE_SPARC_ASM, test "x$asm_arch" = xsparc)
2502 AC_SUBST([NINE_MAJOR], 1)
2503 AC_SUBST([NINE_MINOR], 0)
2504 AC_SUBST([NINE_TINY], 0)
2505 AC_SUBST([NINE_VERSION], "$NINE_MAJOR.$NINE_MINOR.$NINE_TINY")
2507 AC_SUBST([VDPAU_MAJOR], 1)
2508 AC_SUBST([VDPAU_MINOR], 0)
2510 VA_MAJOR=`$PKG_CONFIG --modversion libva | $SED -n 's/\([[^\.]]*\)\..*$/\1/p'`
2511 VA_MINOR=`$PKG_CONFIG --modversion libva | $SED -n 's/.*\.\(.*\)\..*$/\1/p'`
2512 AC_SUBST([VA_MAJOR], $VA_MAJOR)
2513 AC_SUBST([VA_MINOR], $VA_MINOR)
2515 AC_SUBST([XVMC_MAJOR], 1)
2516 AC_SUBST([XVMC_MINOR], 0)
2518 XA_HEADER="$srcdir/src/gallium/state_trackers/xa/xa_tracker.h"
2519 XA_MAJOR=`grep "#define XA_TRACKER_VERSION_MAJOR" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_MAJOR //'`
2520 XA_MINOR=`grep "#define XA_TRACKER_VERSION_MINOR" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_MINOR //'`
2521 XA_TINY=`grep "#define XA_TRACKER_VERSION_PATCH" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_PATCH //'`
2523 AC_SUBST([XA_MAJOR], $XA_MAJOR)
2524 AC_SUBST([XA_MINOR], $XA_MINOR)
2525 AC_SUBST([XA_TINY], $XA_TINY)
2526 AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_TINY")
2528 AC_ARG_ENABLE(valgrind,
2529 [AS_HELP_STRING([--enable-valgrind],
2530 [Build mesa with valgrind support (default: auto)])],
2531 [VALGRIND=$enableval], [VALGRIND=auto])
2532 if test "x$VALGRIND" != xno; then
2533 PKG_CHECK_MODULES(VALGRIND, [valgrind], [have_valgrind=yes], [have_valgrind=no])
2535 AC_MSG_CHECKING([whether to enable Valgrind support])
2536 if test "x$VALGRIND" = xauto; then
2537 VALGRIND="$have_valgrind"
2540 if test "x$VALGRIND" = "xyes"; then
2541 if ! test "x$have_valgrind" = xyes; then
2542 AC_MSG_ERROR([Valgrind support required but not present])
2544 AC_DEFINE([HAVE_VALGRIND], 1, [Use valgrind intrinsics to suppress false warnings])
2547 AC_MSG_RESULT([$VALGRIND])
2549 dnl Restore LDFLAGS and CPPFLAGS
2550 LDFLAGS="$_SAVE_LDFLAGS"
2551 CPPFLAGS="$_SAVE_CPPFLAGS"
2553 dnl Suppress clang's warnings about unused CFLAGS and CXXFLAGS
2554 if test "x$acv_mesa_CLANG" = xyes; then
2555 CFLAGS="$CFLAGS -Qunused-arguments"
2556 CXXFLAGS="$CXXFLAGS -Qunused-arguments"
2559 dnl Add user CFLAGS and CXXFLAGS
2560 CFLAGS="$CFLAGS $USER_CFLAGS"
2561 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
2563 dnl Substitute the config
2564 AC_CONFIG_FILES([Makefile
2566 src/compiler/Makefile
2569 src/egl/wayland/wayland-drm/Makefile
2570 src/egl/wayland/wayland-egl/Makefile
2571 src/egl/wayland/wayland-egl/wayland-egl.pc
2572 src/gallium/Makefile
2573 src/gallium/auxiliary/Makefile
2574 src/gallium/auxiliary/pipe-loader/Makefile
2575 src/gallium/drivers/freedreno/Makefile
2576 src/gallium/drivers/ddebug/Makefile
2577 src/gallium/drivers/i915/Makefile
2578 src/gallium/drivers/ilo/Makefile
2579 src/gallium/drivers/llvmpipe/Makefile
2580 src/gallium/drivers/noop/Makefile
2581 src/gallium/drivers/nouveau/Makefile
2582 src/gallium/drivers/r300/Makefile
2583 src/gallium/drivers/r600/Makefile
2584 src/gallium/drivers/radeon/Makefile
2585 src/gallium/drivers/radeonsi/Makefile
2586 src/gallium/drivers/rbug/Makefile
2587 src/gallium/drivers/softpipe/Makefile
2588 src/gallium/drivers/svga/Makefile
2589 src/gallium/drivers/swr/Makefile
2590 src/gallium/drivers/trace/Makefile
2591 src/gallium/drivers/vc4/Makefile
2592 src/gallium/drivers/virgl/Makefile
2593 src/gallium/state_trackers/clover/Makefile
2594 src/gallium/state_trackers/dri/Makefile
2595 src/gallium/state_trackers/glx/xlib/Makefile
2596 src/gallium/state_trackers/nine/Makefile
2597 src/gallium/state_trackers/omx/Makefile
2598 src/gallium/state_trackers/osmesa/Makefile
2599 src/gallium/state_trackers/va/Makefile
2600 src/gallium/state_trackers/vdpau/Makefile
2601 src/gallium/state_trackers/xa/Makefile
2602 src/gallium/state_trackers/xvmc/Makefile
2603 src/gallium/targets/d3dadapter9/Makefile
2604 src/gallium/targets/d3dadapter9/d3d.pc
2605 src/gallium/targets/dri/Makefile
2606 src/gallium/targets/libgl-xlib/Makefile
2607 src/gallium/targets/omx/Makefile
2608 src/gallium/targets/opencl/Makefile
2609 src/gallium/targets/opencl/mesa.icd
2610 src/gallium/targets/osmesa/Makefile
2611 src/gallium/targets/osmesa/osmesa.pc
2612 src/gallium/targets/pipe-loader/Makefile
2613 src/gallium/targets/va/Makefile
2614 src/gallium/targets/vdpau/Makefile
2615 src/gallium/targets/xa/Makefile
2616 src/gallium/targets/xa/xatracker.pc
2617 src/gallium/targets/xvmc/Makefile
2618 src/gallium/tests/trivial/Makefile
2619 src/gallium/tests/unit/Makefile
2620 src/gallium/winsys/freedreno/drm/Makefile
2621 src/gallium/winsys/i915/drm/Makefile
2622 src/gallium/winsys/intel/drm/Makefile
2623 src/gallium/winsys/nouveau/drm/Makefile
2624 src/gallium/winsys/radeon/drm/Makefile
2625 src/gallium/winsys/amdgpu/drm/Makefile
2626 src/gallium/winsys/svga/drm/Makefile
2627 src/gallium/winsys/sw/dri/Makefile
2628 src/gallium/winsys/sw/kms-dri/Makefile
2629 src/gallium/winsys/sw/null/Makefile
2630 src/gallium/winsys/sw/wrapper/Makefile
2631 src/gallium/winsys/sw/xlib/Makefile
2632 src/gallium/winsys/vc4/drm/Makefile
2633 src/gallium/winsys/virgl/drm/Makefile
2634 src/gallium/winsys/virgl/vtest/Makefile
2638 src/glx/apple/Makefile
2639 src/glx/tests/Makefile
2642 src/intel/genxml/Makefile
2643 src/intel/isl/Makefile
2644 src/intel/vulkan/Makefile
2647 src/mapi/es1api/glesv1_cm.pc
2648 src/mapi/es2api/glesv2.pc
2649 src/mapi/glapi/gen/Makefile
2652 src/mesa/drivers/dri/dri.pc
2653 src/mesa/drivers/dri/common/Makefile
2654 src/mesa/drivers/dri/common/xmlpool/Makefile
2655 src/mesa/drivers/dri/i915/Makefile
2656 src/mesa/drivers/dri/i965/Makefile
2657 src/mesa/drivers/dri/Makefile
2658 src/mesa/drivers/dri/nouveau/Makefile
2659 src/mesa/drivers/dri/r200/Makefile
2660 src/mesa/drivers/dri/radeon/Makefile
2661 src/mesa/drivers/dri/swrast/Makefile
2662 src/mesa/drivers/osmesa/Makefile
2663 src/mesa/drivers/osmesa/osmesa.pc
2664 src/mesa/drivers/x11/Makefile
2665 src/mesa/main/tests/Makefile
2667 src/util/tests/hash_table/Makefile])
2671 # Fix up dependencies in *.Plo files, where we changed the extension of a
2673 $SED -i -e 's/brw_blorp.cpp/brw_blorp.c/' src/mesa/drivers/dri/i965/.deps/brw_blorp.Plo
2674 $SED -i -e 's/gen6_blorp.cpp/gen6_blorp.c/' src/mesa/drivers/dri/i965/.deps/gen6_blorp.Plo
2675 $SED -i -e 's/gen7_blorp.cpp/gen7_blorp.c/' src/mesa/drivers/dri/i965/.deps/gen7_blorp.Plo
2676 $SED -i -e 's/gen8_blorp.cpp/gen8_blorp.c/' src/mesa/drivers/dri/i965/.deps/gen8_blorp.Plo
2680 dnl Output some configuration info for the user
2683 echo " prefix: $prefix"
2684 echo " exec_prefix: $exec_prefix"
2685 echo " libdir: $libdir"
2686 echo " includedir: $includedir"
2690 echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
2694 case "x$enable_osmesa$enable_gallium_osmesa" in
2696 echo " OSMesa: lib$OSMESA_LIB (Gallium)"
2699 echo " OSMesa: lib$OSMESA_LIB"
2707 if test "x$enable_dri" != xno; then
2708 echo " DRI platform: $dri_platform"
2709 if test -z "$DRI_DIRS"; then
2710 echo " DRI drivers: no"
2712 echo " DRI drivers: $DRI_DIRS"
2714 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
2717 case "x$enable_glx" in
2719 echo " GLX: DRI-based"
2722 echo " GLX: Xlib-based"
2725 echo " GLX: Xlib-based (Gallium)"
2728 echo " GLX: $enable_glx"
2734 echo " EGL: $enable_egl"
2735 if test "$enable_egl" = yes; then
2736 echo " EGL platforms: $egl_platforms"
2739 if test "x$HAVE_EGL_DRIVER_DRI2" != "x"; then
2740 egl_drivers="$egl_drivers builtin:egl_dri2"
2742 if test "x$HAVE_EGL_DRIVER_DRI3" != "x"; then
2743 egl_drivers="$egl_drivers builtin:egl_dri3"
2746 echo " EGL drivers: $egl_drivers"
2751 if test "x$VULKAN_DRIVERS" != x; then
2752 echo " Vulkan drivers: $VULKAN_DRIVERS"
2753 echo " Vulkan ICD dir: $VULKAN_ICD_INSTALL_DIR"
2755 echo " Vulkan drivers: no"
2759 if test "x$MESA_LLVM" = x1; then
2761 echo " llvm-config: $LLVM_CONFIG"
2762 echo " llvm-version: $LLVM_VERSION"
2768 if test -n "$with_gallium_drivers"; then
2769 echo " Gallium drivers: $gallium_drivers"
2770 echo " Gallium st: $gallium_st"
2777 echo " Shader cache: $enable_shader_cache"
2778 if test "x$enable_shader_cache" = "xyes"; then
2779 echo " With SHA1 from: $with_sha1"
2784 echo " Shared libs: $enable_shared"
2785 echo " Static libs: $enable_static"
2786 echo " Shared-glapi: $enable_shared_glapi"
2788 dnl Compiler options
2789 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2790 cflags=`echo $CFLAGS | \
2791 $SED 's/^ *//;s/ */ /;s/ *$//'`
2792 cxxflags=`echo $CXXFLAGS | \
2793 $SED 's/^ *//;s/ */ /;s/ *$//'`
2794 defines=`echo $DEFINES | $SED 's/^ *//;s/ */ /;s/ *$//'`
2796 echo " CFLAGS: $cflags"
2797 echo " CXXFLAGS: $cxxflags"
2798 echo " Macros: $defines"
2800 if test "x$MESA_LLVM" = x1; then
2801 echo " LLVM_CFLAGS: $LLVM_CFLAGS"
2802 echo " LLVM_CXXFLAGS: $LLVM_CXXFLAGS"
2803 echo " LLVM_CPPFLAGS: $LLVM_CPPFLAGS"
2804 echo " LLVM_LDFLAGS: $LLVM_LDFLAGS"
2807 echo " PYTHON2: $PYTHON2"
2808 echo " PYTHON3: $PYTHON3"
2811 echo " Run '${MAKE-make}' to build Mesa"