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
13 dnl Permission is hereby granted, free of charge, to any person obtaining a
14 dnl copy of this software and associated documentation files (the "Software"),
15 dnl to deal in the Software without restriction, including without limitation
16 dnl the rights to use, copy, modify, merge, publish, distribute, sublicense,
17 dnl and/or sell copies of the Software, and to permit persons to whom the
18 dnl Software is furnished to do so, subject to the following conditions:
20 dnl The above copyright notice and this permission notice (including the next
21 dnl paragraph) shall be included in all copies or substantial portions of the
24 dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
25 dnl IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
26 dnl FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
27 dnl THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28 dnl LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
29 dnl FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
30 dnl DEALINGS IN THE SOFTWARE.
32 dnl Process this file with autoconf to create configure.
36 dnl Tell the user about autoconf.html in the --help output
37 m4_divert_once([HELP_END], [
38 See docs/autoconf.html for more details on the options for Mesa.])
40 m4_define(MESA_VERSION, m4_normalize(m4_include(VERSION)))
41 AC_INIT([Mesa], [MESA_VERSION],
42 [https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa])
43 AC_CONFIG_AUX_DIR([bin])
44 AC_CONFIG_MACRO_DIR([m4])
46 AM_INIT_AUTOMAKE([foreign tar-ustar dist-xz subdir-objects])
48 dnl We only support native Windows builds (MinGW/MSVC) through SCons.
51 AC_MSG_ERROR([MinGW build not supported through autoconf/automake, use SCons instead])
55 # Support silent build rules, requires at least automake-1.11. Disable
56 # by either passing --disable-silent-rules to configure or passing V=1
58 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])],
59 [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])])
61 m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
63 dnl Set internal versions
65 AC_SUBST([OSMESA_VERSION])
67 AC_SUBST([OPENCL_VERSION])
69 # The idea is that libdrm is distributed as one cohesive package, even
70 # though it is composed of multiple libraries. However some drivers
71 # may have different version requirements than others. This list
72 # codifies which drivers need which version of libdrm. Any libdrm
73 # version dependencies in non-driver-specific code should be reflected
75 LIBDRM_REQUIRED=2.4.75
76 LIBDRM_RADEON_REQUIRED=2.4.71
77 LIBDRM_AMDGPU_REQUIRED=2.4.90
78 LIBDRM_INTEL_REQUIRED=2.4.75
79 LIBDRM_NVVIEUX_REQUIRED=2.4.66
80 LIBDRM_NOUVEAU_REQUIRED=2.4.66
81 LIBDRM_FREEDRENO_REQUIRED=2.4.91
82 LIBDRM_ETNAVIV_REQUIRED=2.4.82
84 dnl Versions for external dependencies
85 DRI2PROTO_REQUIRED=2.8
86 GLPROTO_REQUIRED=1.4.14
87 LIBOMXIL_BELLAGIO_REQUIRED=0.0
88 LIBOMXIL_TIZONIA_REQUIRED=0.10.0
92 WAYLAND_PROTOCOLS_REQUIRED=1.8
97 XSHMFENCE_REQUIRED=1.1
99 PYTHON_MAKO_REQUIRED=0.8.0
100 LIBSENSORS_REQUIRED=4.0.0
104 LLVM_REQUIRED_GALLIUM=3.3.0
105 LLVM_REQUIRED_OPENCL=3.9.0
106 LLVM_REQUIRED_R600=3.9.0
107 LLVM_REQUIRED_RADEONSI=4.0.0
108 LLVM_REQUIRED_RADV=4.0.0
109 LLVM_REQUIRED_SWR=4.0.0
115 dnl add this here, so the help for this environmnet variable is close to
116 dnl other CC/CXX flags related help
117 AC_ARG_VAR([CXX11_CXXFLAGS], [Compiler flag to enable C++11 support (only needed if not
118 enabled by default and different from -std=c++11)])
123 AC_CHECK_PROGS([PYTHON2], [python2.7 python2 python])
131 LT_INIT([disable-static])
133 AC_CHECK_PROG(RM, rm, [rm -f])
136 AS_IF([test ! -f "$srcdir/src/compiler/glsl/glcpp/glcpp-parse.c"],
137 [AC_MSG_ERROR([bison not found - unable to compile glcpp-parse.y])]))
139 AS_IF([test ! -f "$srcdir/src/compiler/glsl/glcpp/glcpp-lex.c"],
140 [AC_MSG_ERROR([flex not found - unable to compile glcpp-lex.l])]))
142 AC_CHECK_PROG(INDENT, indent, indent, cat)
143 if test "x$INDENT" != "xcat"; then
144 # Only GNU indent is supported
145 INDENT_VERSION=`indent --version | grep GNU`
146 if test $? -eq 0; then
147 AC_SUBST(INDENT_FLAGS, '-i4 -nut -br -brs -npcs -ce -TGLubyte -TGLbyte -TBool')
153 AX_CHECK_PYTHON_MAKO_MODULE($PYTHON_MAKO_REQUIRED)
155 if test -z "$PYTHON2"; then
156 if test ! -f "$srcdir/src/util/format_srgb.c"; then
157 AC_MSG_ERROR([Python not found - unable to generate sources])
160 if test "x$acv_mako_found" = xno; then
161 if test ! -f "$srcdir/src/mesa/main/format_unpack.c"; then
162 AC_MSG_ERROR([Python mako module v$PYTHON_MAKO_REQUIRED or higher not found])
169 dnl We need a POSIX shell for parts of the build. Assume we have one
173 # Solaris /bin/sh is too old/non-POSIX compliant
174 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
179 dnl clang is mostly GCC-compatible, but its version is much lower,
180 dnl so we have to check for it.
181 AC_MSG_CHECKING([if compiling with clang])
184 [AC_LANG_PROGRAM([], [[
189 [acv_mesa_CLANG=yes], [acv_mesa_CLANG=no])
191 AC_MSG_RESULT([$acv_mesa_CLANG])
193 dnl If we're using GCC, make sure that it is at least version 4.2.0. Older
194 dnl versions are explictly not supported.
197 if test "x$GCC" = xyes -a "x$acv_mesa_CLANG" = xno; then
198 AC_MSG_CHECKING([whether gcc version is sufficient])
202 GCC_VERSION=`$CC -dumpversion`
203 if test $? -eq 0; then
204 GCC_VERSION_MAJOR=`echo $GCC_VERSION | cut -d. -f1`
205 GCC_VERSION_MINOR=`echo $GCC_VERSION | cut -d. -f2`
208 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 2 ; then
210 AC_MSG_ERROR([If using GCC, version 4.2.0 or later is required.])
215 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6 ; then
218 if test "x$cross_compiling" = xyes; then
223 dnl We don't support building Mesa with Sun C compiler
224 dnl https://bugs.freedesktop.org/show_bug.cgi?id=93189
225 AC_CHECK_DECL([__SUNPRO_C], [SUNCC=yes], [SUNCC=no])
226 if test "x$SUNCC" = xyes; then
227 AC_MSG_ERROR([Building with Sun C compiler is not supported, use GCC instead.])
230 dnl Check for compiler builtins
231 AX_GCC_BUILTIN([__builtin_bswap32])
232 AX_GCC_BUILTIN([__builtin_bswap64])
233 AX_GCC_BUILTIN([__builtin_clz])
234 AX_GCC_BUILTIN([__builtin_clzll])
235 AX_GCC_BUILTIN([__builtin_ctz])
236 AX_GCC_BUILTIN([__builtin_expect])
237 AX_GCC_BUILTIN([__builtin_ffs])
238 AX_GCC_BUILTIN([__builtin_ffsll])
239 AX_GCC_BUILTIN([__builtin_popcount])
240 AX_GCC_BUILTIN([__builtin_popcountll])
241 AX_GCC_BUILTIN([__builtin_unreachable])
243 AX_GCC_FUNC_ATTRIBUTE([const])
244 AX_GCC_FUNC_ATTRIBUTE([flatten])
245 AX_GCC_FUNC_ATTRIBUTE([format])
246 AX_GCC_FUNC_ATTRIBUTE([malloc])
247 AX_GCC_FUNC_ATTRIBUTE([packed])
248 AX_GCC_FUNC_ATTRIBUTE([pure])
249 AX_GCC_FUNC_ATTRIBUTE([returns_nonnull])
250 AX_GCC_FUNC_ATTRIBUTE([unused])
251 AX_GCC_FUNC_ATTRIBUTE([visibility])
252 AX_GCC_FUNC_ATTRIBUTE([warn_unused_result])
253 AX_GCC_FUNC_ATTRIBUTE([weak])
254 AX_GCC_FUNC_ATTRIBUTE([alias])
255 AX_GCC_FUNC_ATTRIBUTE([noreturn])
257 AM_CONDITIONAL([GEN_ASM_OFFSETS], test "x$GEN_ASM_OFFSETS" = xyes)
259 dnl Make sure the pkg-config macros are defined
260 m4_ifndef([PKG_PROG_PKG_CONFIG],
261 [m4_fatal([Could not locate the pkg-config autoconf macros.
262 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
263 are in a different location, try setting the environment variable
264 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
265 PKG_PROG_PKG_CONFIG()
267 dnl LIB_DIR - library basename
268 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
271 dnl Cache LDFLAGS and CPPFLAGS so we can add to them and restore later
272 _SAVE_LDFLAGS="$LDFLAGS"
273 _SAVE_CPPFLAGS="$CPPFLAGS"
276 DEFINES="-D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS"
283 linux*|*-gnu*|gnu*|cygwin*)
284 DEFINES="$DEFINES -D_GNU_SOURCE"
287 DEFINES="$DEFINES -DSVR4"
291 AM_CONDITIONAL(HAVE_ANDROID, test "x$android" = xyes)
294 dnl Check compiler flags
296 AX_CHECK_COMPILE_FLAG([-Wall], [CFLAGS="$CFLAGS -Wall"])
297 AX_CHECK_COMPILE_FLAG([-Werror=implicit-function-declaration], [CFLAGS="$CFLAGS -Werror=implicit-function-declaration"])
298 AX_CHECK_COMPILE_FLAG([-Werror=missing-prototypes], [CFLAGS="$CFLAGS -Werror=missing-prototypes"])
299 AX_CHECK_COMPILE_FLAG([-Wmissing-prototypes], [CFLAGS="$CFLAGS -Wmissing-prototypes"])
300 AX_CHECK_COMPILE_FLAG([-fno-math-errno], [CFLAGS="$CFLAGS -fno-math-errno"])
301 AX_CHECK_COMPILE_FLAG([-fno-trapping-math], [CFLAGS="$CFLAGS -fno-trapping-math"])
302 AX_CHECK_COMPILE_FLAG([-fvisibility=hidden], [VISIBILITY_CFLAGS="-fvisibility=hidden"])
305 dnl Check C++ compiler flags
308 AX_CHECK_COMPILE_FLAG([-Wall], [CXXFLAGS="$CXXFLAGS -Wall"])
309 AX_CHECK_COMPILE_FLAG([-fno-math-errno], [CXXFLAGS="$CXXFLAGS -fno-math-errno"])
310 AX_CHECK_COMPILE_FLAG([-fno-trapping-math], [CXXFLAGS="$CXXFLAGS -fno-trapping-math"])
311 AX_CHECK_COMPILE_FLAG([-fvisibility=hidden], [VISIBILITY_CXXFLAGS="-fvisibility=hidden"])
314 # Flags to help ensure that certain portions of the code -- and only those
315 # portions -- can be built with MSVC:
316 # - src/util, src/gallium/auxiliary, rc/gallium/drivers/llvmpipe, and
317 # - non-Linux/Posix OpenGL portions needs to build on MSVC 2013 (which
318 # supports most of C99)
319 # - the rest has no compiler compiler restrictions
320 AX_CHECK_COMPILE_FLAG([-Werror=pointer-arith], [MSVC2013_COMPAT_CFLAGS="$MSVC2013_COMPAT_CFLAGS -Werror=pointer-arith"])
321 AX_CHECK_COMPILE_FLAG([-Werror=vla], [MSVC2013_COMPAT_CFLAGS="$MSVC2013_COMPAT_CFLAGS -Werror=vla"])
323 AX_CHECK_COMPILE_FLAG([-Werror=pointer-arith], [MSVC2013_COMPAT_CXXFLAGS="$MSVC2013_COMPAT_CXXFLAGS -Werror=pointer-arith"])
324 AX_CHECK_COMPILE_FLAG([-Werror=vla], [MSVC2013_COMPAT_CXXFLAGS="$MSVC2013_COMPAT_CXXFLAGS -Werror=vla"])
327 AC_SUBST([MSVC2013_COMPAT_CFLAGS])
328 AC_SUBST([MSVC2013_COMPAT_CXXFLAGS])
330 if test "x$GCC" = xyes; then
331 if test "x$USE_GNU99" = xyes; then
332 CFLAGS="$CFLAGS -std=gnu99"
334 CFLAGS="$CFLAGS -std=c99"
339 dnl Check whether C++11 is supported, if the environment variable
340 dnl CXX11_CXXFLAGS is set it takes precedence.
345 check_cxx11_available() {
349 #if !(__cplusplus >= 201103L)
357 ], AC_MSG_RESULT(no))
358 eval "$output_support=\$cxx11_support"
362 save_CXXFLAGS="$CXXFLAGS"
364 dnl If the user provides a flag to enable c++11, then we test only this
365 if test "x$CXX11_CXXFLAGS" != "x"; then
366 CXXFLAGS="$CXXFLAGS $CXX11_CXXFLAGS"
367 AC_MSG_CHECKING(whether c++11 is enabled by via $CXX11_CXXFLAGS)
368 check_cxx11_available HAVE_CXX11
370 dnl test whether c++11 is enabled by default
371 AC_MSG_CHECKING(whether c++11 is enabled by default)
372 check_cxx11_available HAVE_CXX11
374 dnl C++11 not enabled by default, test whether -std=c++11 does the job
375 if test "x$HAVE_CXX11" != "xyes"; then
376 CXX11_CXXFLAGS=-std=c++11
377 CXXFLAGS="$CXXFLAGS $CXX11_CXXFLAGS"
378 AC_MSG_CHECKING(whether c++11 is enabled by via $CXX11_CXXFLAGS)
379 check_cxx11_available HAVE_CXX11
383 CXXFLAGS="$save_CXXFLAGS"
384 AM_CONDITIONAL(HAVE_STD_CXX11, test "x$HAVE_CXX11" = "xyes")
385 AC_SUBST(CXX11_CXXFLAGS)
388 dnl even if the compiler appears to support it, using visibility attributes isn't
389 dnl going to do anything useful currently on cygwin apart from emit lots of warnings
393 VISIBILITY_CXXFLAGS=""
397 AC_SUBST([VISIBILITY_CFLAGS])
398 AC_SUBST([VISIBILITY_CXXFLAGS])
400 dnl For some reason, the test for -Wno-foo always succeeds with gcc, even if the
401 dnl option is not supported. Hence, check for -Wfoo instead.
402 AX_CHECK_COMPILE_FLAG([-Woverride-init], [WNO_OVERRIDE_INIT="$WNO_OVERRIDE_INIT -Wno-override-init"]) # gcc
403 AX_CHECK_COMPILE_FLAG([-Winitializer-overrides], [WNO_OVERRIDE_INIT="$WNO_OVERRIDE_INIT -Wno-initializer-overrides"]) # clang
404 AC_SUBST([WNO_OVERRIDE_INIT])
407 dnl Optional flags, check for compiler support
409 SSE41_CFLAGS="-msse4.1"
410 dnl Code compiled by GCC with -msse* assumes a 16 byte aligned
411 dnl stack, but on x86-32 such alignment is not guaranteed.
412 case "$target_cpu" in
414 SSE41_CFLAGS="$SSE41_CFLAGS -mstackrealign"
417 save_CFLAGS="$CFLAGS"
418 CFLAGS="$SSE41_CFLAGS $CFLAGS"
419 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
420 #include <smmintrin.h>
423 __m128i a = _mm_set1_epi32 (param), b = _mm_set1_epi32 (param + 1), c;
424 c = _mm_max_epu32(a, b);
425 return _mm_cvtsi128_si32(c);
426 }]])], SSE41_SUPPORTED=1)
427 CFLAGS="$save_CFLAGS"
428 if test "x$SSE41_SUPPORTED" = x1; then
429 DEFINES="$DEFINES -DUSE_SSE41"
431 AM_CONDITIONAL([SSE41_SUPPORTED], [test x$SSE41_SUPPORTED = x1])
432 AC_SUBST([SSE41_CFLAGS], $SSE41_CFLAGS)
434 dnl Check for new-style atomic builtins
435 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
438 return __atomic_load_n(&n, __ATOMIC_ACQUIRE);
439 }]])], GCC_ATOMIC_BUILTINS_SUPPORTED=1)
440 if test "x$GCC_ATOMIC_BUILTINS_SUPPORTED" = x1; then
441 DEFINES="$DEFINES -DUSE_GCC_ATOMIC_BUILTINS"
442 dnl On some platforms, new-style atomics need a helper library
443 AC_MSG_CHECKING(whether -latomic is needed)
444 AC_LINK_IFELSE([AC_LANG_SOURCE([[
448 return (int)__atomic_load_n(&v, __ATOMIC_ACQUIRE);
449 }]])], GCC_ATOMIC_BUILTINS_NEED_LIBATOMIC=no, GCC_ATOMIC_BUILTINS_NEED_LIBATOMIC=yes)
450 AC_MSG_RESULT($GCC_ATOMIC_BUILTINS_NEED_LIBATOMIC)
451 if test "x$GCC_ATOMIC_BUILTINS_NEED_LIBATOMIC" = xyes; then
452 LIBATOMIC_LIBS="-latomic"
455 AM_CONDITIONAL([GCC_ATOMIC_BUILTINS_SUPPORTED], [test x$GCC_ATOMIC_BUILTINS_SUPPORTED = x1])
456 AC_SUBST([LIBATOMIC_LIBS])
458 dnl Check if host supports 64-bit atomics
459 dnl note that lack of support usually results in link (not compile) error
460 AC_MSG_CHECKING(whether __sync_add_and_fetch_8 is supported)
461 AC_LINK_IFELSE([AC_LANG_SOURCE([[
465 return __sync_add_and_fetch(&v, (uint64_t)1);
466 }]])], GCC_64BIT_ATOMICS_SUPPORTED=yes, GCC_64BIT_ATOMICS_SUPPORTED=no)
467 if test "x$GCC_64BIT_ATOMICS_SUPPORTED" != xyes; then
468 DEFINES="$DEFINES -DMISSING_64BIT_ATOMICS"
470 AC_MSG_RESULT($GCC_64BIT_ATOMICS_SUPPORTED)
472 dnl Check for Endianness
480 dnl Check for POWER8 Architecture
481 PWR8_CFLAGS="-mpower8-vector"
482 have_pwr8_intrinsics=no
483 AC_MSG_CHECKING(whether gcc supports -mpower8-vector)
485 CFLAGS="$PWR8_CFLAGS $CFLAGS"
486 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
487 #if defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8))
488 #error "Need GCC >= 4.8 for sane POWER8 support"
492 vector unsigned char r;
493 vector unsigned int v = vec_splat_u32 (1);
494 r = __builtin_vec_vgbbd ((vector unsigned char) v);
496 }]])], have_pwr8_intrinsics=yes)
500 [AS_HELP_STRING([--disable-pwr8],
501 [disable POWER8-specific instructions])],
502 [enable_pwr8=$enableval], [enable_pwr8=auto])
504 if test "x$enable_pwr8" = xno ; then
505 have_pwr8_intrinsics=disabled
508 if test $have_pwr8_intrinsics = yes && test $little_endian = yes ; then
509 DEFINES="$DEFINES -D_ARCH_PWR8"
510 CXXFLAGS="$CXXFLAGS $PWR8_CFLAGS"
511 CFLAGS="$CFLAGS $PWR8_CFLAGS"
516 AC_MSG_RESULT($have_pwr8_intrinsics)
517 if test "x$enable_pwr8" = xyes && test $have_pwr8_intrinsics = no ; then
518 AC_MSG_ERROR([POWER8 compiler support not detected])
521 if test $have_pwr8_intrinsics = yes && test $little_endian = no ; then
522 AC_MSG_WARN([POWER8 optimization is enabled only on POWER8 Little-Endian])
525 AC_SUBST([PWR8_CFLAGS], $PWR8_CFLAGS)
527 dnl Can't have static and shared libraries, default to static if user
528 dnl explicitly requested. If both disabled, set to static since shared
529 dnl was explicitly requested.
530 case "x$enable_static$enable_shared" in
532 AC_MSG_ERROR([Cannot enable both static and shared. Building using --enable-shared is strongly recommended])
535 AC_MSG_ERROR([Cannot disable both static and shared. Building using --enable-shared is strongly recommended])
539 AM_CONDITIONAL(BUILD_SHARED, test "x$enable_shared" = xyes)
542 dnl other compiler options
544 AC_ARG_ENABLE([debug],
545 [AS_HELP_STRING([--enable-debug],
546 [use debug compiler flags and macros @<:@default=disabled@:>@])],
547 [enable_debug="$enableval"],
551 AC_ARG_ENABLE([profile],
552 [AS_HELP_STRING([--enable-profile],
553 [enable profiling of code @<:@default=disabled@:>@])],
554 [enable_profile="$enableval"],
558 AC_ARG_ENABLE([sanitize],
559 [AS_HELP_STRING([--enable-sanitize@<:@=address|undefined@:>@],
560 [enable code sanitizer @<:@default=disabled@:>@])],
561 [enable_sanitize="$enableval"],
562 [enable_sanitize=no])
564 if test "x$enable_profile" = xyes; then
565 DEFINES="$DEFINES -DPROFILE"
566 if test "x$GCC" = xyes; then
567 CFLAGS="$CFLAGS -fno-omit-frame-pointer"
569 if test "x$GXX" = xyes; then
570 CXXFLAGS="$CXXFLAGS -fno-omit-frame-pointer"
574 if test "x$enable_debug" = xyes; then
575 DEFINES="$DEFINES -DDEBUG"
576 if test "x$enable_profile" = xyes; then
577 AC_MSG_WARN([Debug and Profile are enabled at the same time])
579 if test "x$GCC" = xyes; then
580 if ! echo "$CFLAGS" | grep -q -e '-g'; then
583 if ! echo "$CFLAGS" | grep -q -e '-O'; then
587 if test "x$GXX" = xyes; then
588 if ! echo "$CXXFLAGS" | grep -q -e '-g'; then
589 CXXFLAGS="$CXXFLAGS -g"
591 if ! echo "$CXXFLAGS" | grep -q -e '-O'; then
592 CXXFLAGS="$CXXFLAGS -O0"
596 DEFINES="$DEFINES -DNDEBUG"
599 if test "x$enable_sanitize" != xno; then
600 if test "x$enable_profile" = xyes; then
601 AC_MSG_WARN([Sanitize and Profile are enabled at the same time])
604 CFLAGS="$CFLAGS -fsanitize=$enable_sanitize"
605 CXXFLAGS="$CXXFLAGS -fsanitize=$enable_sanitize"
606 LDFLAGS="$LDFLAGS -fsanitize=$enable_sanitize"
609 [AC_LANG_SOURCE([int main(){return 0;}])],
611 [AC_MSG_FAILURE([sanitize flags '$enable_sanitize' not supported])])
615 dnl Check if linker supports -Bsymbolic
617 save_LDFLAGS=$LDFLAGS
618 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic"
619 AC_MSG_CHECKING([if ld supports -Bsymbolic])
621 [AC_LANG_SOURCE([int main() { return 0;}])],
622 [AC_MSG_RESULT([yes])
623 BSYMBOLIC="-Wl,-Bsymbolic";],
626 LDFLAGS=$save_LDFLAGS
628 AC_SUBST([BSYMBOLIC])
631 dnl Check if linker supports garbage collection
633 save_LDFLAGS=$LDFLAGS
634 LDFLAGS="$LDFLAGS -Wl,--gc-sections"
635 AC_MSG_CHECKING([whether ld supports --gc-sections])
637 [AC_LANG_SOURCE([static char UnusedFunc() { return 5; } int main() { return 0;}])],
638 [AC_MSG_RESULT([yes])
639 GC_SECTIONS="-Wl,--gc-sections";],
642 LDFLAGS=$save_LDFLAGS
644 AC_SUBST([GC_SECTIONS])
647 dnl OpenBSD does not have DT_NEEDED entries for libc by design
648 dnl so when these flags are passed to ld via libtool the checks will fail
652 LD_NO_UNDEFINED="" ;;
654 if test "x$enable_sanitize" = xno; then
655 LD_NO_UNDEFINED="-Wl,--no-undefined"
662 AC_SUBST([LD_NO_UNDEFINED])
665 dnl Check if linker supports version scripts
667 AC_MSG_CHECKING([if the linker supports version-scripts])
668 save_LDFLAGS=$LDFLAGS
669 LDFLAGS="$LDFLAGS -Wl,--version-script=$srcdir/build-support/conftest.map"
671 [AC_LANG_SOURCE([int main() { return 0;}])],
672 [have_ld_version_script=yes;AC_MSG_RESULT(yes)],
673 [have_ld_version_script=no; AC_MSG_RESULT(no)])
674 LDFLAGS=$save_LDFLAGS
675 AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes")
678 dnl Check if linker supports dynamic list files
680 AC_MSG_CHECKING([if the linker supports --dynamic-list])
681 save_LDFLAGS=$LDFLAGS
682 LDFLAGS="$LDFLAGS -Wl,--dynamic-list=$srcdir/build-support/conftest.dyn"
684 [AC_LANG_SOURCE([int main() { return 0;}])],
685 [have_ld_dynamic_list=yes;AC_MSG_RESULT(yes)],
686 [have_ld_dynamic_list=no; AC_MSG_RESULT(no)])
687 LDFLAGS=$save_LDFLAGS
688 AM_CONDITIONAL(HAVE_LD_DYNAMIC_LIST, test "$have_ld_dynamic_list" = "yes")
691 dnl OSX linker does not support build-id
698 LD_BUILD_ID="-Wl,--build-id=sha1"
701 AC_SUBST([LD_BUILD_ID])
704 dnl compatibility symlinks
708 HAVE_COMPAT_SYMLINKS=yes ;;
710 HAVE_COMPAT_SYMLINKS=no ;;
713 AM_CONDITIONAL(HAVE_COMPAT_SYMLINKS, test "x$HAVE_COMPAT_SYMLINKS" = xyes)
718 dnl Unfortunately we need to do a few things that libtool can't help us with,
719 dnl so we need some knowledge of shared library filenames:
721 dnl LIB_EXT is the extension used when creating symlinks for alternate
722 dnl filenames for a shared library which will be dynamically loaded
724 dnl IMP_LIB_EXT is the extension used when checking for the presence of a
725 dnl the file for a shared library we wish to link with
749 dnl potentially-infringing-but-nobody-knows-for-sure stuff
751 AC_ARG_ENABLE([texture-float],
752 [AS_HELP_STRING([--enable-texture-float],
753 [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
754 [enable_texture_float="$enableval"],
755 [enable_texture_float=no]
757 if test "x$enable_texture_float" = xyes; then
758 AC_MSG_WARN([Floating-point textures enabled.])
759 AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
760 DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
764 dnl Arch/platform-specific settings
767 [AS_HELP_STRING([--disable-asm],
768 [disable assembly usage @<:@default=enabled on supported platforms@:>@])],
769 [enable_asm="$enableval"],
773 AC_MSG_CHECKING([whether to enable assembly])
774 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
775 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
776 if test "x$enable_asm" = xyes -a "x$cross_compiling" = xyes; then
778 i?86 | x86_64 | amd64)
779 if test "x$host_cpu" != "x$target_cpu"; then
781 AC_MSG_RESULT([no, cross compiling])
786 # check for supported arches
787 if test "x$enable_asm" = xyes; then
791 linux* | *freebsd* | dragonfly* | *netbsd* | openbsd* | gnu*)
798 linux* | *freebsd* | dragonfly* | *netbsd* | openbsd*)
835 DEFINES="$DEFINES -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
836 AC_MSG_RESULT([yes, x86])
839 DEFINES="$DEFINES -DUSE_X86_64_ASM"
840 AC_MSG_RESULT([yes, x86_64])
843 DEFINES="$DEFINES -DUSE_SPARC_ASM"
844 AC_MSG_RESULT([yes, sparc])
847 DEFINES="$DEFINES -DUSE_PPC64LE_ASM"
848 AC_MSG_RESULT([yes, ppc64le])
851 DEFINES="$DEFINES -DUSE_AARCH64_ASM"
852 AC_MSG_RESULT([yes, aarch64])
855 DEFINES="$DEFINES -DUSE_ARM_ASM"
856 AC_MSG_RESULT([yes, arm])
859 AC_MSG_RESULT([no, platform not supported])
865 AC_CHECK_HEADER([xlocale.h], [DEFINES="$DEFINES -DHAVE_XLOCALE_H"])
866 AC_CHECK_HEADER([sys/sysctl.h], [DEFINES="$DEFINES -DHAVE_SYS_SYSCTL_H"])
867 AC_CHECK_FUNC([strtof], [DEFINES="$DEFINES -DHAVE_STRTOF"])
868 AC_CHECK_FUNC([mkostemp], [DEFINES="$DEFINES -DHAVE_MKOSTEMP"])
869 AC_CHECK_FUNC([timespec_get], [DEFINES="$DEFINES -DHAVE_TIMESPEC_GET"])
870 AC_CHECK_FUNC([memfd_create], [DEFINES="$DEFINES -DHAVE_MEMFD_CREATE"])
872 AC_MSG_CHECKING([whether strtod has locale support])
873 AC_LINK_IFELSE([AC_LANG_SOURCE([[
877 #ifdef HAVE_XLOCALE_H
881 locale_t loc = newlocale(LC_CTYPE_MASK, "C", NULL);
882 const char *s = "1.0";
884 double d = strtod_l(s, end, loc);
885 float f = strtof_l(s, end, loc);
889 [DEFINES="$DEFINES -DHAVE_STRTOD_L"];
890 AC_MSG_RESULT([yes]),
893 dnl Check to see if dlopen is in default libraries (like Solaris, which
894 dnl has it in libc), or if libdl is needed to get it.
895 AC_CHECK_FUNC([dlopen], [],
896 [AC_CHECK_LIB([dl], [dlopen],
897 [DLOPEN_LIBS="-ldl"])])
898 AC_SUBST([DLOPEN_LIBS])
900 dnl Check if that library also has dladdr
902 LIBS="$LIBS $DLOPEN_LIBS"
903 AC_CHECK_FUNCS([dladdr])
906 AC_CHECK_FUNC([dl_iterate_phdr], [DEFINES="$DEFINES -DHAVE_DL_ITERATE_PHDR"])
912 AC_CHECK_FUNCS([clock_gettime], [CLOCK_LIB=],
913 [AC_CHECK_LIB([rt], [clock_gettime], [CLOCK_LIB=-lrt],
914 [AC_MSG_ERROR([Could not find clock_gettime])])])
915 AC_SUBST([CLOCK_LIB])
919 dnl See if posix_memalign is available
920 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
923 PKG_CHECK_MODULES([ZLIB], [zlib >= $ZLIB_REQUIRED])
924 DEFINES="$DEFINES -DHAVE_ZLIB"
926 dnl Check for pthreads
928 if test "x$ax_pthread_ok" = xno; then
929 AC_MSG_ERROR([Building mesa on this platform requires pthreads])
931 dnl AX_PTHREADS leaves PTHREAD_LIBS empty for gcc and sets PTHREAD_CFLAGS
932 dnl to -pthread, which causes problems if we need -lpthread to appear in
933 dnl pkgconfig files. Since Android doesn't have a pthread lib, this check
934 dnl is not valid for that platform.
935 if test "x$android" = xno; then
936 test -z "$PTHREAD_LIBS" && PTHREAD_LIBS="-lpthread"
938 dnl According to the manual when using pthreads, one should add -pthread to
939 dnl both compile and link-time arguments.
940 dnl In practise that should be sufficient for all platforms, since any
941 dnl platforms build with GCC and Clang support the flag.
942 PTHREAD_LIBS="$PTHREAD_LIBS -pthread"
944 dnl pthread-stubs is mandatory on some BSD platforms, due to the nature of the
945 dnl project. Even then there's a notable issue as described in the project README
947 linux* | cygwin* | darwin* | solaris* | *-gnu* | gnu* | openbsd*)
948 pthread_stubs_possible="no"
951 pthread_stubs_possible="yes"
955 if test "x$pthread_stubs_possible" = xyes; then
956 PKG_CHECK_MODULES(PTHREADSTUBS, pthread-stubs >= 0.4)
959 dnl Check for futex for fast inline simple_mtx_t.
960 AC_CHECK_HEADER([linux/futex.h], [DEFINES="$DEFINES -DHAVE_LINUX_FUTEX_H"])
962 dnl SELinux awareness.
963 AC_ARG_ENABLE([selinux],
964 [AS_HELP_STRING([--enable-selinux],
965 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
966 [MESA_SELINUX="$enableval"],
968 if test "x$enable_selinux" = "xyes"; then
969 PKG_CHECK_MODULES([SELINUX], [libselinux], [],
970 [AC_CHECK_HEADER([selinux/selinux.h],[],
971 [AC_MSG_ERROR([SELinux headers not found])])
972 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
973 [AC_MSG_ERROR([SELinux library not found])])
974 SELINUX_LIBS="-lselinux"])
975 DEFINES="$DEFINES -DMESA_SELINUX"
977 AC_SUBST([SELINUX_CFLAGS])
978 AC_SUBST([SELINUX_LIBS])
983 AC_ARG_ENABLE([llvm-shared-libs],
984 [AS_HELP_STRING([--enable-llvm-shared-libs],
985 [link with LLVM shared libraries @<:@default=enabled@:>@])],
986 [enable_llvm_shared_libs="$enableval"],
987 [enable_llvm_shared_libs=yes])
989 AC_ARG_WITH([llvm-prefix],
990 [AS_HELP_STRING([--with-llvm-prefix],
991 [Prefix for LLVM installations in non-standard locations])],
992 [llvm_prefix="$withval"],
995 PKG_CHECK_MODULES([LIBELF], [libelf], [have_libelf=yes], [have_libelf=no])
996 if test "x$have_libelf" = xno; then
999 AC_CHECK_LIB([elf], [elf_memory], [have_libelf=yes;LIBELF_LIBS=-lelf], [have_libelf=no])
1000 AC_SUBST([LIBELF_LIBS])
1001 AC_SUBST([LIBELF_CFLAGS])
1004 if test -z "$LLVM_CONFIG"; then
1005 if test -n "$llvm_prefix"; then
1006 AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no], ["$llvm_prefix/bin"])
1008 AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no])
1012 llvm_add_component() {
1013 new_llvm_component=$1
1016 if $LLVM_CONFIG --components | grep -iqw $new_llvm_component ; then
1017 LLVM_COMPONENTS="${LLVM_COMPONENTS} ${new_llvm_component}"
1019 AC_MSG_ERROR([LLVM component '$new_llvm_component' not enabled in your LLVM build. Required by $driver_name.])
1023 llvm_add_optional_component() {
1024 new_llvm_component=$1
1027 if $LLVM_CONFIG --components | grep -iqw $new_llvm_component ; then
1028 LLVM_COMPONENTS="${LLVM_COMPONENTS} ${new_llvm_component}"
1032 llvm_add_default_components() {
1035 # Required default components
1036 llvm_add_component "bitwriter" $driver_name
1037 llvm_add_component "engine" $driver_name
1038 llvm_add_component "mcdisassembler" $driver_name
1039 llvm_add_component "mcjit" $driver_name
1041 # Optional default components
1042 llvm_add_optional_component "inteljitevents" $driver_name
1049 if $LLVM_CONFIG --targets-built | grep -iqw $new_llvm_target ; then
1050 llvm_add_component $new_llvm_target $driver_name
1052 AC_MSG_ERROR([LLVM target '$new_llvm_target' not enabled in your LLVM build. Required by $driver_name.])
1056 # Call this inside ` ` to get the return value.
1057 # $1 is the llvm-config command with arguments.
1058 strip_unwanted_llvm_flags() {
1059 echo " `$1` " | sed -E \
1060 -e 's/[[[:space:]]]+-m[[^[:space:]]]*//g' \
1061 -e 's/[[[:space:]]]+-DNDEBUG[[[:space:]]]/ /g' \
1062 -e 's/[[[:space:]]]+-D_GNU_SOURCE[[[:space:]]]/ /g' \
1063 -e 's/[[[:space:]]]+-pedantic[[[:space:]]]/ /g' \
1064 -e 's/[[[:space:]]]+-W[[^[:space:]]]*//g' \
1065 -e 's/[[[:space:]]]+-O[[^[:space:]]]*//g' \
1066 -e 's/[[[:space:]]]+-g[[^[:space:]]]*//g' \
1067 -e 's/-fno-rtti[[[:space:]]]/-Fno-rtti /g' \
1068 -e 's/[[[:space:]]]+-f[[^[:space:]]]*//g' \
1069 -e 's/-Fno-rtti[[[:space:]]]/-fno-rtti /g' \
1070 -e 's/^[[[:space:]]]//' \
1071 -e 's/[[[:space:]]]$//'
1074 llvm_set_environment_variables() {
1075 if test "x$LLVM_CONFIG" != xno; then
1076 LLVM_VERSION=`$LLVM_CONFIG --version | egrep -o '^[[0-9.]]+'`
1077 LLVM_CPPFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cppflags"`
1078 LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
1079 LLVM_LIBDIR=`$LLVM_CONFIG --libdir`
1081 # We need to respect LLVM_CPPFLAGS when compiling LLVM headers.
1082 save_CFLAGS="$CFLAGS"
1083 CFLAGS="$CFLAGS $LLVM_CPPFLAGS"
1085 AC_COMPUTE_INT([LLVM_VERSION_MAJOR], [LLVM_VERSION_MAJOR],
1086 [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
1087 AC_COMPUTE_INT([LLVM_VERSION_MINOR], [LLVM_VERSION_MINOR],
1088 [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
1089 AC_COMPUTE_INT([LLVM_VERSION_PATCH], [LLVM_VERSION_PATCH],
1090 [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
1092 CFLAGS="$save_CFLAGS"
1094 # Only needed for LLVM < 3.6.0
1095 if test -z "$LLVM_VERSION_PATCH"; then
1096 LLVM_VERSION_PATCH=0
1099 LLVM_VERSION_INT="${LLVM_VERSION_MAJOR}0${LLVM_VERSION_MINOR}"
1109 if test "x$enable_llvm" != "xyes"; then
1110 AC_MSG_ERROR([--enable-llvm is required when building $1])
1114 llvm_require_version() {
1117 llvm_target_version_major=`echo $1 | cut -d. -f1 | egrep -o '^[[0-9]]+'`
1118 llvm_target_version_minor=`echo $1 | cut -d. -f2 | egrep -o '^[[0-9]]+'`
1119 llvm_target_version_patch=`echo $1 | cut -d. -f3 | egrep -o '^[[0-9]]+'`
1121 if test "$LLVM_VERSION_MAJOR" -gt "$llvm_target_version_major"; then
1122 # major > required major
1127 if test "$LLVM_VERSION_MAJOR" -eq "$llvm_target_version_major"; then
1128 if test "$LLVM_VERSION_MINOR" -gt "$llvm_target_version_minor"; then
1129 # major = required major and
1130 # minor > required minor
1134 if test "$LLVM_VERSION_MINOR" -eq "$llvm_target_version_minor"; then
1135 if test "$LLVM_VERSION_PATCH" -ge "$llvm_target_version_patch"; then
1136 # major = required major and
1137 # minor = required minor and
1138 # patch >= required patch
1146 AC_MSG_ERROR([LLVM $1 or newer is required for $2])
1149 radeon_llvm_check() {
1150 if test ${LLVM_VERSION_INT} -lt 307; then
1151 amdgpu_llvm_target_name='r600'
1153 amdgpu_llvm_target_name='amdgpu'
1156 llvm_require_version $*
1158 llvm_add_target $amdgpu_llvm_target_name $2
1160 llvm_add_default_components $2
1161 llvm_add_component "bitreader" $2
1162 llvm_add_component "ipo" $2
1164 if test "x$have_libelf" != xyes; then
1165 AC_MSG_ERROR([$2 requires libelf when using llvm])
1169 llvm_set_environment_variables
1171 AC_SUBST([LLVM_CFLAGS])
1172 AC_SUBST([LLVM_CXXFLAGS])
1173 AC_SUBST([LLVM_LIBS])
1174 AC_SUBST([LLVM_LDFLAGS])
1175 AC_SUBST([LLVM_INCLUDEDIR])
1180 PKG_CHECK_EXISTS(libunwind, [HAVE_LIBUNWIND=yes], [HAVE_LIBUNWIND=no])
1181 AC_ARG_ENABLE([libunwind],
1182 [AS_HELP_STRING([--enable-libunwind],
1183 [Use libunwind for backtracing (default: auto)])],
1184 [LIBUNWIND="$enableval"],
1185 [LIBUNWIND="$HAVE_LIBUNWIND"])
1187 if test "x$LIBUNWIND" = "xyes"; then
1188 PKG_CHECK_MODULES(LIBUNWIND, libunwind)
1189 AC_DEFINE(HAVE_LIBUNWIND, 1, [Have libunwind support])
1193 dnl Options for APIs
1194 AC_ARG_ENABLE([opengl],
1195 [AS_HELP_STRING([--disable-opengl],
1196 [disable support for standard OpenGL API @<:@default=enabled@:>@])],
1197 [enable_opengl="$enableval"],
1198 [enable_opengl=yes])
1199 AC_ARG_ENABLE([gles1],
1200 [AS_HELP_STRING([--disable-gles1],
1201 [disable support for OpenGL ES 1.x API @<:@default=enabled@:>@])],
1202 [enable_gles1="$enableval"],
1204 AC_ARG_ENABLE([gles2],
1205 [AS_HELP_STRING([--disable-gles2],
1206 [disable support for OpenGL ES 2.x API @<:@default=enabled@:>@])],
1207 [enable_gles2="$enableval"],
1210 AC_ARG_ENABLE([dri],
1211 [AS_HELP_STRING([--enable-dri],
1212 [enable DRI modules @<:@default=enabled@:>@])],
1213 [enable_dri="$enableval"],
1216 AC_ARG_ENABLE([gallium-extra-hud],
1217 [AS_HELP_STRING([--enable-gallium-extra-hud],
1218 [enable HUD block/NIC I/O HUD stats support @<:@default=disabled@:>@])],
1219 [enable_gallium_extra_hud="$enableval"],
1220 [enable_gallium_extra_hud=no])
1221 AM_CONDITIONAL(HAVE_GALLIUM_EXTRA_HUD, test "x$enable_gallium_extra_hud" = xyes)
1222 if test "x$enable_gallium_extra_hud" = xyes ; then
1223 DEFINES="${DEFINES} -DHAVE_GALLIUM_EXTRA_HUD=1"
1226 #TODO: no pkgconfig .pc available for libsensors.
1227 #PKG_CHECK_MODULES([LIBSENSORS], [libsensors >= $LIBSENSORS_REQUIRED], [enable_lmsensors=yes], [enable_lmsensors=no])
1228 AC_ARG_ENABLE([lmsensors],
1229 [AS_HELP_STRING([--enable-lmsensors],
1230 [enable HUD lmsensor support @<:@default=disabled@:>@])],
1231 [enable_lmsensors="$enableval"],
1232 [enable_lmsensors=no])
1233 AM_CONDITIONAL(HAVE_LIBSENSORS, test "x$enable_lmsensors" = xyes)
1234 if test "x$enable_lmsensors" = xyes ; then
1235 DEFINES="${DEFINES} -DHAVE_LIBSENSORS=1"
1236 LIBSENSORS_LIBS="-lsensors"
1240 AC_SUBST(LIBSENSORS_LIBS)
1251 if test "x$enable_dri" = xno; then
1255 AC_ARG_ENABLE([dri3],
1256 [AS_HELP_STRING([--enable-dri3],
1257 [enable DRI3 @<:@default=auto@:>@])],
1258 [enable_dri3="$enableval"],
1259 [enable_dri3="$dri3_default"])
1260 AC_ARG_ENABLE([glx],
1261 [AS_HELP_STRING([--enable-glx@<:@=dri|xlib|gallium-xlib@:>@],
1262 [enable the GLX library and choose an implementation @<:@default=auto@:>@])],
1263 [enable_glx="$enableval"],
1265 AC_ARG_ENABLE([osmesa],
1266 [AS_HELP_STRING([--enable-osmesa],
1267 [enable OSMesa library @<:@default=disabled@:>@])],
1268 [enable_osmesa="$enableval"],
1270 AC_ARG_ENABLE([gallium-osmesa],
1271 [AS_HELP_STRING([--enable-gallium-osmesa],
1272 [enable Gallium implementation of the OSMesa library @<:@default=disabled@:>@])],
1273 [enable_gallium_osmesa="$enableval"],
1274 [enable_gallium_osmesa=no])
1275 AC_ARG_ENABLE([egl],
1276 [AS_HELP_STRING([--disable-egl],
1277 [disable EGL library @<:@default=enabled@:>@])],
1278 [enable_egl="$enableval"],
1282 [AS_HELP_STRING([--enable-xa],
1283 [enable build of the XA X Acceleration API @<:@default=disabled@:>@])],
1284 [enable_xa="$enableval"],
1286 AC_ARG_ENABLE([gbm],
1287 [AS_HELP_STRING([--enable-gbm],
1288 [enable gbm library @<:@default=yes except cygwin and macOS@:>@])],
1289 [enable_gbm="$enableval"],
1298 AC_ARG_ENABLE([nine],
1299 [AS_HELP_STRING([--enable-nine],
1300 [enable build of the nine Direct3D9 API @<:@default=no@:>@])],
1301 [enable_nine="$enableval"],
1304 AC_ARG_ENABLE([xvmc],
1305 [AS_HELP_STRING([--enable-xvmc],
1306 [enable xvmc library @<:@default=auto@:>@])],
1307 [enable_xvmc="$enableval"],
1309 AC_ARG_ENABLE([vdpau],
1310 [AS_HELP_STRING([--enable-vdpau],
1311 [enable vdpau library @<:@default=auto@:>@])],
1312 [enable_vdpau="$enableval"],
1313 [enable_vdpau=auto])
1314 AC_ARG_ENABLE([omx],
1315 [AS_HELP_STRING([--enable-omx],
1316 [DEPRECATED: Use --enable-omx-bellagio or --enable-omx-tizonia instead @<:@default=auto@:>@])],
1317 [AC_MSG_ERROR([--enable-omx is deprecated. Use --enable-omx-bellagio or --enable-omx-tizonia instead.])],
1319 AC_ARG_ENABLE([omx-bellagio],
1320 [AS_HELP_STRING([--enable-omx-bellagio],
1321 [enable OpenMAX Bellagio library @<:@default=disabled@:>@])],
1322 [enable_omx_bellagio="$enableval"],
1323 [enable_omx_bellagio=no])
1324 AC_ARG_ENABLE([omx-tizonia],
1325 [AS_HELP_STRING([--enable-omx-tizonia],
1326 [enable OpenMAX Tizonia library @<:@default=disabled@:>@])],
1327 [enable_omx_tizonia="$enableval"],
1328 [enable_omx_tizonia=no])
1330 [AS_HELP_STRING([--enable-va],
1331 [enable va library @<:@default=auto@:>@])],
1332 [enable_va="$enableval"],
1334 AC_ARG_ENABLE([opencl],
1335 [AS_HELP_STRING([--enable-opencl],
1336 [enable OpenCL library @<:@default=disabled@:>@])],
1337 [enable_opencl="$enableval"],
1339 AC_ARG_ENABLE([opencl_icd],
1340 [AS_HELP_STRING([--enable-opencl-icd],
1341 [Build an OpenCL ICD library to be loaded by an ICD implementation
1342 @<:@default=enabled@:>@])],
1343 [enable_opencl_icd="$enableval"],
1344 [enable_opencl_icd=yes])
1346 AC_ARG_ENABLE([gallium-tests],
1347 [AS_HELP_STRING([--enable-gallium-tests],
1348 [Enable optional Gallium tests) @<:@default=disabled@:>@])],
1349 [enable_gallium_tests="$enableval"],
1350 [enable_gallium_tests=no])
1352 # Option for Gallium drivers
1354 # Keep this in sync with the --with-gallium-drivers help string default value
1355 GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
1357 AC_ARG_WITH([gallium-drivers],
1358 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
1359 [comma delimited Gallium drivers list, e.g.
1360 "i915,nouveau,r300,r600,radeonsi,freedreno,pl111,svga,swrast,swr,vc4,vc5,virgl,etnaviv,imx"
1361 @<:@default=r300,r600,svga,swrast@:>@])],
1362 [with_gallium_drivers="$withval"],
1363 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
1365 # Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it
1366 # here so that the script doesn't choke on an unknown driver name later.
1367 case "$with_gallium_drivers" in
1368 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
1369 no) with_gallium_drivers='' ;;
1372 if test "x$enable_opengl" = xno -a \
1373 "x$enable_gles1" = xno -a \
1374 "x$enable_gles2" = xno -a \
1375 "x$enable_nine" = xno -a \
1376 "x$enable_xa" = xno -a \
1377 "x$enable_xvmc" = xno -a \
1378 "x$enable_vdpau" = xno -a \
1379 "x$enable_omx_bellagio" = xno -a \
1380 "x$enable_omx_tizonia" = xno -a \
1381 "x$enable_va" = xno -a \
1382 "x$enable_opencl" = xno; then
1383 AC_MSG_ERROR([at least one API should be enabled])
1386 if test "x$enable_omx_bellagio" = xyes -a \
1387 "x$enable_omx_tizonia" = xyes; then
1388 AC_MSG_ERROR([Can't enable both bellagio and tizonia at same time])
1391 # Building OpenGL ES1 and/or ES2 without OpenGL is not supported on mesa 9.0.x
1392 if test "x$enable_opengl" = xno -a \
1393 "x$enable_gles1" = xyes; then
1394 AC_MSG_ERROR([Building OpenGL ES1 without OpenGL is not supported])
1397 if test "x$enable_opengl" = xno -a \
1398 "x$enable_gles2" = xyes; then
1399 AC_MSG_ERROR([Building OpenGL ES2 without OpenGL is not supported])
1402 AM_CONDITIONAL(HAVE_OPENGL, test "x$enable_opengl" = xyes)
1403 AM_CONDITIONAL(HAVE_OPENGL_ES1, test "x$enable_gles1" = xyes)
1404 AM_CONDITIONAL(HAVE_OPENGL_ES2, test "x$enable_gles2" = xyes)
1405 AM_CONDITIONAL(NEED_OPENGL_COMMON, test "x$enable_opengl" = xyes -o \
1406 "x$enable_gles1" = xyes -o \
1407 "x$enable_gles2" = xyes)
1408 AM_CONDITIONAL(NEED_KHRPLATFORM, test "x$enable_egl" = xyes -o \
1409 "x$enable_gles1" = xyes -o \
1410 "x$enable_gles2" = xyes)
1412 # Validate GLX options
1413 if test "x$enable_glx" = xyes; then
1414 if test "x$enable_dri" = xyes; then
1416 elif test -n "$with_gallium_drivers"; then
1417 enable_glx=gallium-xlib
1422 case "x$enable_glx" in
1423 xdri | xxlib | xgallium-xlib)
1424 # GLX requires OpenGL
1425 if test "x$enable_opengl" = xno; then
1426 AC_MSG_ERROR([GLX cannot be built without OpenGL])
1429 # Check individual dependencies
1430 case "x$enable_glx" in
1432 if test "x$enable_dri" = xno; then
1433 AC_MSG_ERROR([DRI-based GLX requires DRI to be enabled])
1437 if test "x$enable_dri" = xyes; then
1438 AC_MSG_ERROR([Xlib-based GLX cannot be built with DRI enabled])
1442 if test "x$enable_dri" = xyes; then
1443 AC_MSG_ERROR([Xlib-based (Gallium) GLX cannot be built with DRI enabled])
1445 if test -z "$with_gallium_drivers"; then
1446 AC_MSG_ERROR([Xlib-based (Gallium) GLX cannot be built without Gallium enabled])
1454 AC_MSG_ERROR([Illegal value for --enable-glx: $enable_glx])
1458 AM_CONDITIONAL(HAVE_GLX, test "x$enable_glx" != xno)
1459 AM_CONDITIONAL(HAVE_DRI_GLX, test "x$enable_glx" = xdri)
1460 AM_CONDITIONAL(HAVE_XLIB_GLX, test "x$enable_glx" = xxlib)
1461 AM_CONDITIONAL(HAVE_GALLIUM_XLIB_GLX, test "x$enable_glx" = xgallium-xlib)
1463 DEFAULT_GL_LIB_NAME=GL
1466 dnl Libglvnd configuration
1468 AC_ARG_ENABLE([libglvnd],
1469 [AS_HELP_STRING([--enable-libglvnd],
1470 [Build GLX and EGL for libglvnd @<:@default=disabled@:>@])],
1471 [enable_libglvnd="$enableval"],
1472 [enable_libglvnd=no])
1473 AM_CONDITIONAL(USE_LIBGLVND, test "x$enable_libglvnd" = xyes)
1475 if test "x$enable_libglvnd" = xyes ; then
1476 case "x$enable_glx" in
1477 xxlib | xgallium-xlib )
1478 AC_MSG_ERROR([cannot build libgvnd when Xlib-GLX or Gallium-Xlib-GLX is enabled])
1482 PKG_CHECK_MODULES([GLVND], libglvnd >= 0.2.0)
1483 LIBGLVND_DATADIR=`$PKG_CONFIG --variable=datadir libglvnd`
1484 AC_SUBST([LIBGLVND_DATADIR])
1486 DEFINES="${DEFINES} -DUSE_LIBGLVND=1"
1487 DEFAULT_GL_LIB_NAME=GLX_mesa
1489 if test "x$enable_glx" = xno -a "x$enable_egl" = xno; then
1490 AC_MSG_ERROR([cannot build libglvnd without GLX or EGL])
1494 AC_ARG_WITH([gl-lib-name],
1495 [AS_HELP_STRING([--with-gl-lib-name@<:@=NAME@:>@],
1496 [specify GL library name @<:@default=GL@:>@])],
1498 [GL_LIB="$DEFAULT_GL_LIB_NAME"])
1499 AC_ARG_WITH([osmesa-lib-name],
1500 [AS_HELP_STRING([--with-osmesa-lib-name@<:@=NAME@:>@],
1501 [specify OSMesa library name @<:@default=OSMesa@:>@])],
1502 [OSMESA_LIB=$withval],
1503 [OSMESA_LIB=OSMesa])
1504 AS_IF([test "x$GL_LIB" = xyes], [GL_LIB="$DEFAULT_GL_LIB_NAME"])
1505 AS_IF([test "x$OSMESA_LIB" = xyes], [OSMESA_LIB=OSMesa])
1508 dnl Mangled Mesa support
1510 AC_ARG_ENABLE([mangling],
1511 [AS_HELP_STRING([--enable-mangling],
1512 [enable mangled symbols and library name @<:@default=disabled@:>@])],
1513 [enable_mangling="${enableval}"],
1514 [enable_mangling=no]
1516 if test "x${enable_mangling}" = "xyes" ; then
1517 DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
1518 GL_LIB="Mangled${GL_LIB}"
1519 OSMESA_LIB="Mangled${OSMESA_LIB}"
1522 AC_SUBST([OSMESA_LIB])
1525 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
1526 [have_libdrm=yes], [have_libdrm=no])
1527 if test "x$have_libdrm" = xyes; then
1528 DEFINES="$DEFINES -DHAVE_LIBDRM"
1532 if test "x$have_libdrm" != xyes; then
1533 AC_MSG_ERROR([$1 requires libdrm >= $LIBDRM_REQUIRED])
1538 # Select which platform-dependent DRI code gets built
1541 dri_platform='apple' ;;
1543 dri_platform='windows' ;;
1545 dri_platform='none' ;;
1547 dri_platform='drm' ;;
1550 if test "x$enable_dri" = xyes -a "x$dri_platform" = xdrm -a "x$have_libdrm" = xyes; then
1551 have_drisw_kms='yes'
1554 AM_CONDITIONAL(HAVE_DRICOMMON, test "x$enable_dri" = xyes )
1555 AM_CONDITIONAL(HAVE_DRISW, test "x$enable_dri" = xyes )
1556 AM_CONDITIONAL(HAVE_DRISW_KMS, test "x$have_drisw_kms" = xyes )
1557 AM_CONDITIONAL(HAVE_DRI2, test "x$enable_dri" = xyes -a "x$dri_platform" = xdrm -a "x$have_libdrm" = xyes )
1558 AM_CONDITIONAL(HAVE_DRI3, test "x$enable_dri3" = xyes -a "x$dri_platform" = xdrm -a "x$have_libdrm" = xyes )
1559 AM_CONDITIONAL(HAVE_APPLEDRI, test "x$enable_dri" = xyes -a "x$dri_platform" = xapple )
1560 AM_CONDITIONAL(HAVE_LMSENSORS, test "x$enable_lmsensors" = xyes )
1561 AM_CONDITIONAL(HAVE_GALLIUM_EXTRA_HUD, test "x$enable_gallium_extra_hud" = xyes )
1562 AM_CONDITIONAL(HAVE_WINDOWSDRI, test "x$enable_dri" = xyes -a "x$dri_platform" = xwindows )
1564 AC_ARG_ENABLE([shared-glapi],
1565 [AS_HELP_STRING([--enable-shared-glapi],
1566 [Enable shared glapi for OpenGL @<:@default=enabled@:>@])],
1567 [enable_shared_glapi="$enableval"],
1568 [enable_shared_glapi=yes])
1570 case "x$enable_opengl$enable_gles1$enable_gles2" in
1572 if test "x$enable_shared_glapi" = xno; then
1573 AC_MSG_ERROR([shared GLAPI required when building two or more of
1574 the following APIs - opengl, gles1 gles2])
1579 AM_CONDITIONAL(HAVE_SHARED_GLAPI, test "x$enable_shared_glapi" = xyes)
1581 # Build the pipe-drivers as separate libraries/modules.
1582 # Do not touch this unless you know what you are doing.
1583 # XXX: Expose via configure option ?
1584 enable_shared_pipe_drivers=no
1587 dnl Driver specific build directories
1590 if test "x$enable_gallium_osmesa" = xyes; then
1591 if ! echo "$with_gallium_drivers" | grep -q 'swrast'; then
1592 AC_MSG_ERROR([gallium_osmesa requires the gallium swrast driver])
1594 if test "x$enable_osmesa" = xyes; then
1595 AC_MSG_ERROR([Cannot enable both classic and Gallium OSMesa implementations])
1599 require_dri_shared_libs_and_glapi() {
1600 if test "x$enable_static" = xyes; then
1601 AC_MSG_ERROR([$1 cannot be build as static library])
1604 if test "x$enable_dri" != xyes; then
1605 # There is only a single backend which won't be build/used otherwise.
1606 # XXX: Revisit this as the egl/haiku is a thing.
1607 AC_MSG_ERROR([$1 requires --enable-dri])
1610 if test "x$enable_shared_glapi" != xyes; then
1611 AC_MSG_ERROR([$1 requires --enable-shared-glapi])
1615 if test "x$enable_dri" = xyes; then
1616 require_dri_shared_libs_and_glapi "DRI"
1618 # not a hard requirement as swrast does not depend on it
1619 if test "x$have_libdrm" = xyes; then
1620 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
1624 AC_ARG_ENABLE([driglx-direct],
1625 [AS_HELP_STRING([--disable-driglx-direct],
1626 [disable direct rendering in GLX and EGL for DRI \
1627 @<:@default=enabled@:>@])],
1628 [driglx_direct="$enableval"],
1629 [driglx_direct="yes"])
1632 dnl libGL configuration per driver
1634 if test "x$enable_glx" != xno; then
1635 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
1637 case "x$enable_glx" in
1638 xxlib | xgallium-xlib)
1640 dri_modules="x11 xext xcb"
1641 PKG_CHECK_MODULES([XLIBGL], [$dri_modules])
1642 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
1643 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
1644 GL_LIB_DEPS="$XLIBGL_LIBS"
1645 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1646 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm $PTHREAD_LIBS"
1651 # find the DRI deps for libGL
1652 dri_modules="x11 xext xdamage >= $XDAMAGE_REQUIRED xfixes x11-xcb xcb xcb-glx >= $XCBGLX_REQUIRED"
1654 if test x"$driglx_direct" = xyes; then
1655 if test x"$dri_platform" = xdrm ; then
1656 DEFINES="$DEFINES -DGLX_USE_DRM"
1657 require_libdrm "Direct rendering"
1659 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
1660 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED"
1662 if test x"$enable_dri" = xyes; then
1663 dri_modules="$dri_modules xcb-dri2 >= $XCBDRI2_REQUIRED"
1666 if test x"$dri_platform" = xapple ; then
1667 DEFINES="$DEFINES -DGLX_USE_APPLEGL"
1669 if test x"$dri_platform" = xwindows ; then
1670 DEFINES="$DEFINES -DGLX_USE_WINDOWSGL"
1674 # add xf86vidmode if available
1675 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
1676 if test "$HAVE_XF86VIDMODE" = yes ; then
1677 dri_modules="$dri_modules xxf86vm"
1680 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
1681 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
1682 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
1683 GL_LIB_DEPS="$DRIGL_LIBS"
1685 # need DRM libs, $PTHREAD_LIBS, etc.
1686 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1687 GL_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
1691 # This is outside the case (above) so that it is invoked even for non-GLX
1693 AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
1695 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1696 GLESv1_CM_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
1697 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1698 GLESv2_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
1700 AC_SUBST([X11_INCLUDES])
1701 AC_SUBST([GL_LIB_DEPS])
1702 AC_SUBST([GL_PC_REQ_PRIV])
1703 AC_SUBST([GL_PC_LIB_PRIV])
1704 AC_SUBST([GL_PC_CFLAGS])
1705 AC_SUBST([DRI_PC_REQ_PRIV])
1706 AC_SUBST([GLESv1_CM_LIB_DEPS])
1707 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
1708 AC_SUBST([GLESv2_LIB_DEPS])
1709 AC_SUBST([GLESv2_PC_LIB_PRIV])
1711 AC_SUBST([HAVE_XF86VIDMODE])
1716 case "x$enable_glx" in
1717 xxlib | xgallium-xlib)
1718 DEFINES="$DEFINES -DUSE_XSHM"
1721 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1722 if test "x$driglx_direct" = xyes; then
1723 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1732 AC_ARG_ENABLE([glx-tls],
1733 [AS_HELP_STRING([--enable-glx-tls],
1734 [enable TLS support in GLX @<:@default=enabled@:>@])],
1735 [GLX_USE_TLS="$enableval"],
1737 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
1739 if test "x$GLX_USE_TLS" = xyes; then
1740 DEFINES="$DEFINES -DGLX_USE_TLS"
1743 dnl Read-only text section on x86 hardened platforms
1744 AC_ARG_ENABLE([glx-read-only-text],
1745 [AS_HELP_STRING([--enable-glx-read-only-text],
1746 [Disable writable .text section on x86 (decreases performance) @<:@default=disabled@:>@])],
1747 [enable_glx_read_only_text="$enableval"],
1748 [enable_glx_read_only_text=no])
1749 if test "x$enable_glx_read_only_text" = xyes; then
1750 DEFINES="$DEFINES -DGLX_X86_READONLY_TEXT"
1754 dnl DEPRECATED: EGL Platforms configuration
1756 AC_ARG_WITH([egl-platforms],
1757 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1758 [DEPRECATED: use --with-platforms instead@<:@default=auto@:>@])],
1759 [with_egl_platforms="$withval"],
1760 [with_egl_platforms=auto])
1762 if test "x$with_egl_platforms" = xauto; then
1763 with_egl_platforms="x11,surfaceless"
1764 if test "x$enable_gbm" = xyes; then
1765 with_egl_platforms="$with_egl_platforms,drm"
1768 AC_MSG_WARN([--with-egl-platforms is deprecated. Use --with-platforms instead.])
1772 dnl Platforms configuration
1774 AC_ARG_WITH([platforms],
1775 [AS_HELP_STRING([--with-platforms@<:@=DIRS...@:>@],
1776 [comma delimited native platforms libEGL/Vulkan/other supports, e.g.
1777 "x11,drm,wayland,surfaceless..." @<:@default=auto@:>@])],
1778 [with_platforms="$withval"],
1779 [with_platforms=auto])
1781 # Reuse the autodetection rather than duplicating it.
1782 if test "x$with_platforms" = xauto; then
1783 with_platforms=$with_egl_platforms
1786 # Do per platform setups and checks
1787 platforms=`IFS=', '; echo $with_platforms`
1788 for plat in $platforms; do
1792 PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client >= $WAYLAND_REQUIRED])
1793 PKG_CHECK_MODULES([WAYLAND_SERVER], [wayland-server >= $WAYLAND_REQUIRED])
1794 PKG_CHECK_MODULES([WAYLAND_PROTOCOLS], [wayland-protocols >= $WAYLAND_PROTOCOLS_REQUIRED])
1795 WAYLAND_PROTOCOLS_DATADIR=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`
1797 PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner],
1798 WAYLAND_SCANNER=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner`,
1800 if test "x$WAYLAND_SCANNER" = x; then
1801 AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner], [:])
1804 if test "x$WAYLAND_SCANNER" = "x:"; then
1805 AC_MSG_ERROR([wayland-scanner is needed to compile the wayland platform])
1807 DEFINES="$DEFINES -DHAVE_WAYLAND_PLATFORM -DWL_HIDE_DEPRECATED"
1811 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED xcb-xfixes])
1812 DEFINES="$DEFINES -DHAVE_X11_PLATFORM"
1816 test "x$enable_gbm" = "xno" &&
1817 AC_MSG_ERROR([EGL platform drm needs gbm])
1818 DEFINES="$DEFINES -DHAVE_DRM_PLATFORM"
1822 DEFINES="$DEFINES -DHAVE_SURFACELESS_PLATFORM"
1826 PKG_CHECK_MODULES([ANDROID], [cutils hardware sync])
1827 DEFINES="$DEFINES -DHAVE_ANDROID_PLATFORM"
1831 AC_MSG_ERROR([platform '$plat' does not exist])
1836 wayland|drm|surfaceless)
1837 require_libdrm "Platform $plat"
1841 AC_SUBST([WAYLAND_PROTOCOLS_DATADIR])
1843 if test "x$enable_glx" != xno; then
1844 if ! echo "$platforms" | grep -q 'x11'; then
1845 AC_MSG_ERROR([Building GLX without the x11 platform is not supported])
1849 if test x"$enable_dri3" = xyes; then
1850 DEFINES="$DEFINES -DHAVE_DRI3"
1852 dri3_modules="x11-xcb xcb >= $XCB_REQUIRED xcb-dri3 xcb-xfixes xcb-present xcb-sync xshmfence >= $XSHMFENCE_REQUIRED"
1853 PKG_CHECK_MODULES([XCB_DRI3], [$dri3_modules])
1856 AM_CONDITIONAL(HAVE_PLATFORM_X11, echo "$platforms" | grep -q 'x11')
1857 AM_CONDITIONAL(HAVE_PLATFORM_WAYLAND, echo "$platforms" | grep -q 'wayland')
1858 AM_CONDITIONAL(HAVE_PLATFORM_DRM, echo "$platforms" | grep -q 'drm')
1859 AM_CONDITIONAL(HAVE_PLATFORM_SURFACELESS, echo "$platforms" | grep -q 'surfaceless')
1860 AM_CONDITIONAL(HAVE_PLATFORM_ANDROID, echo "$platforms" | grep -q 'android')
1865 dnl Directory for DRI drivers
1866 AC_ARG_WITH([dri-driverdir],
1867 [AS_HELP_STRING([--with-dri-driverdir=DIR],
1868 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
1869 [DRI_DRIVER_INSTALL_DIR="$withval"],
1870 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
1871 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
1872 dnl Extra search path for DRI drivers
1873 AC_ARG_WITH([dri-searchpath],
1874 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
1875 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
1876 [DRI_DRIVER_SEARCH_DIR="$withval"],
1877 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
1878 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
1879 dnl Which drivers to build - default is chosen by platform
1880 AC_ARG_WITH([dri-drivers],
1881 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
1882 [comma delimited classic DRI drivers list, e.g.
1883 "i915,i965,nouveau,radeon,r200,swrast" @<:@default=auto@:>@])],
1884 [with_dri_drivers="$withval"],
1885 [with_dri_drivers=auto])
1887 if test "x$with_dri_drivers" = xauto; then
1888 if test "x$enable_opengl" = xyes -a "x$enable_dri" = xyes; then
1889 with_dri_drivers="yes"
1891 with_dri_drivers="no"
1894 if test "x$with_dri_drivers" = xno; then
1899 PKG_CHECK_MODULES([EXPAT], [expat],,
1900 [PKG_CHECK_MODULES([EXPAT], [expat21])]
1903 dnl If $with_dri_drivers is yes, drivers will be added through
1904 dnl platform checks. Set DEFINES and LIB_DEPS
1905 if test "x$enable_dri" = xyes; then
1906 # Platform specific settings and drivers to build
1911 # Build only the drivers for cards that exist on PowerPC/sparc
1912 if test "x$with_dri_drivers" = "xyes"; then
1913 with_dri_drivers="r200 radeon swrast"
1919 if test "x$with_dri_drivers" = "xyes"; then
1920 with_dri_drivers="swrast"
1924 DEFINES="$DEFINES -DBUILDING_MESA"
1925 if test "x$with_dri_drivers" = "xyes"; then
1926 with_dri_drivers="swrast"
1932 if test "x$with_dri_drivers" = "xyes"; then
1933 with_dri_drivers="i915 i965 nouveau r200 radeon swrast"
1936 # put all the necessary libs together
1937 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1940 AC_SUBST([DRI_LIB_DEPS])
1943 dnl Duplicates in DRI_DIRS are removed by sorting it at the end of this block
1944 if test -n "$with_dri_drivers"; then
1945 if test "x$enable_opengl" != xyes; then
1946 AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1949 dri_drivers=`IFS=', '; echo $with_dri_drivers`
1950 for driver in $dri_drivers; do
1951 DRI_DIRS="$DRI_DIRS $driver"
1954 require_libdrm "i915"
1956 PKG_CHECK_MODULES([I915], [libdrm >= $LIBDRM_INTEL_REQUIRED libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1959 require_libdrm "i965"
1963 require_libdrm "nouveau"
1964 HAVE_NOUVEAU_DRI=yes
1965 PKG_CHECK_MODULES([NVVIEUX], [libdrm >= $LIBDRM_NVVIEUX_REQUIRED libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED])
1968 require_libdrm "radeon"
1969 HAVE_RADEON_DRI=yes;
1970 PKG_CHECK_MODULES([RADEON], [libdrm >= $LIBDRM_RADEON_REQUIRED libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1973 require_libdrm "r200"
1975 PKG_CHECK_MODULES([RADEON], [libdrm >= $LIBDRM_RADEON_REQUIRED libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1981 AC_MSG_ERROR([classic DRI driver '$driver' does not exist])
1985 DRI_DIRS=`echo $DRI_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1991 dnl Deprecated: kept for backwards compatibility
1993 AC_ARG_ENABLE([gallium-llvm],
1994 [AS_HELP_STRING([--enable-gallium-llvm],
1995 [DEPRECATED: use --enable-llvm instead])],
1996 [enable_gallium_llvm="$enableval"],
1997 [enable_gallium_llvm=auto])
1999 if test "x$enable_gallium_llvm" != xauto; then
2000 AC_MSG_WARN([The --enable-gallium-llvm option has been deprecated. Use --enable-llvm instead.])
2001 enable_llvm=$enable_gallium_llvm
2007 AC_ARG_ENABLE([llvm],
2008 [AS_HELP_STRING([--enable-llvm],
2009 [build with LLVM support @<:@default=enabled on x86/x86_64@:>@])],
2010 [enable_llvm="$enableval"],
2013 if test "x$enable_llvm" = xauto -a "x$FOUND_LLVM" = xyes; then
2014 if test "x$FOUND_LLVM" = xyes; then
2016 i*86|x86_64|amd64) enable_llvm=yes;;
2024 if test "x$enable_llvm" = xyes -a "x$FOUND_LLVM" = xno; then
2025 AC_MSG_ERROR([--enable-llvm selected but llvm-config is not found])
2029 # Vulkan driver configuration
2032 AC_ARG_WITH([vulkan-drivers],
2033 [AS_HELP_STRING([--with-vulkan-drivers@<:@=DIRS...@:>@],
2034 [comma delimited Vulkan drivers list, e.g.
2036 @<:@default=no@:>@])],
2037 [with_vulkan_drivers="$withval"],
2038 [with_vulkan_drivers="no"])
2040 # Doing '--without-vulkan-drivers' will set this variable to 'no'. Clear it
2041 # here so that the script doesn't choke on an unknown driver name later.
2042 case "x$with_vulkan_drivers" in
2043 xyes) with_vulkan_drivers="$VULKAN_DRIVERS_DEFAULT" ;;
2044 xno) with_vulkan_drivers='' ;;
2047 AC_ARG_WITH([vulkan-icddir],
2048 [AS_HELP_STRING([--with-vulkan-icddir=DIR],
2049 [directory for the Vulkan driver icd files @<:@${datarootdir}/vulkan/icd.d@:>@])],
2050 [VULKAN_ICD_INSTALL_DIR="$withval"],
2051 [VULKAN_ICD_INSTALL_DIR='${datarootdir}/vulkan/icd.d'])
2052 AC_SUBST([VULKAN_ICD_INSTALL_DIR])
2054 require_x11_dri3() {
2055 if echo "$platforms" | grep -q 'x11'; then
2056 if test "x$enable_dri3" != xyes; then
2057 AC_MSG_ERROR([$1 Vulkan driver requires DRI3 when built with X11])
2062 if test -n "$with_vulkan_drivers"; then
2063 if test "x$ac_cv_func_dl_iterate_phdr" = xno; then
2064 AC_MSG_ERROR([Vulkan drivers require the dl_iterate_phdr function])
2067 VULKAN_DRIVERS=`IFS=', '; echo $with_vulkan_drivers`
2068 for driver in $VULKAN_DRIVERS; do
2071 require_libdrm "ANV"
2072 require_x11_dri3 "ANV"
2073 HAVE_INTEL_VULKAN=yes
2076 require_libdrm "radv"
2077 PKG_CHECK_MODULES([AMDGPU], [libdrm >= $LIBDRM_AMDGPU_REQUIRED libdrm_amdgpu >= $LIBDRM_AMDGPU_REQUIRED])
2078 radeon_llvm_check $LLVM_REQUIRED_RADV "radv"
2079 require_x11_dri3 "radv"
2080 HAVE_RADEON_VULKAN=yes
2083 AC_MSG_ERROR([Vulkan driver '$driver' does not exist])
2087 VULKAN_DRIVERS=`echo $VULKAN_DRIVERS|tr " " "\n"|sort -u|tr "\n" " "`
2091 DEFINES="$DEFINES -DENABLE_SHADER_CACHE"
2092 AM_CONDITIONAL(NEED_MEGADRIVER, test -n "$DRI_DIRS")
2093 AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_glx" = xxlib -o \
2094 "x$enable_osmesa" = xyes -o \
2098 dnl OSMesa configuration
2101 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
2102 AC_ARG_WITH([osmesa-bits],
2103 [AS_HELP_STRING([--with-osmesa-bits=BITS],
2104 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
2105 [osmesa_bits="$withval"],
2107 if test "x$osmesa_bits" != x8; then
2108 if test "x$enable_dri" = xyes -o "x$enable_glx" != xno; then
2109 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
2113 case "x$osmesa_bits" in
2115 OSMESA_LIB="${OSMESA_LIB}"
2118 OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
2119 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
2122 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
2126 if test "x$enable_osmesa" = xyes -o "x$enable_gallium_osmesa" = xyes; then
2127 # only link libraries with osmesa if shared
2128 if test "$enable_static" = no; then
2129 OSMESA_LIB_DEPS="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
2133 OSMESA_PC_LIB_PRIV="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
2136 AC_SUBST([OSMESA_LIB_DEPS])
2137 AC_SUBST([OSMESA_PC_REQ])
2138 AC_SUBST([OSMESA_PC_LIB_PRIV])
2141 dnl gbm configuration
2143 if test "x$enable_gbm" = xyes; then
2144 require_dri_shared_libs_and_glapi "gbm"
2146 AM_CONDITIONAL(HAVE_GBM, test "x$enable_gbm" = xyes)
2147 # FINISHME: GBM has a number of dependencies which we should add below
2149 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
2150 AC_SUBST([GBM_PC_REQ_PRIV])
2151 AC_SUBST([GBM_PC_LIB_PRIV])
2154 dnl EGL configuration
2157 if test "x$enable_egl" = xyes; then
2158 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS $PTHREAD_LIBS"
2160 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
2162 require_dri_shared_libs_and_glapi "egl"
2164 AM_CONDITIONAL(HAVE_EGL, test "x$enable_egl" = xyes)
2165 AC_SUBST([EGL_LIB_DEPS])
2170 dnl XA configuration
2172 if test "x$enable_xa" = xyes; then
2173 if test "x$with_gallium_drivers" = xswrast; then
2175 Building xa requires at least one non swrast gallium driver.
2176 If you are looking to use libxatracker.so with the VMware driver,
2177 make sure to include svga in the gallium drivers list, apart from
2179 Example: ./configure --enable-xa --with-gallium-drivers=svga...])
2181 gallium_st="$gallium_st xa"
2183 AM_CONDITIONAL(HAVE_ST_XA, test "x$enable_xa" = xyes)
2185 if echo $platforms | grep -q "x11"; then
2186 have_xvmc_platform=yes
2188 have_xvmc_platform=no
2191 if echo $platforms | grep -q "x11"; then
2192 have_vdpau_platform=yes
2194 have_vdpau_platform=no
2197 if echo $platforms | grep -q "x11\|drm"; then
2198 have_omx_platform=yes
2200 have_omx_platform=no
2203 if echo $platforms | grep -q "x11\|drm\|wayland"; then
2204 have_va_platform=yes
2210 dnl Gallium G3DVL configuration
2212 if test -n "$with_gallium_drivers" -a "x$with_gallium_drivers" != xswrast; then
2213 if test "x$enable_xvmc" = xauto -a "x$have_xvmc_platform" = xyes; then
2214 PKG_CHECK_EXISTS([xvmc >= $XVMC_REQUIRED], [enable_xvmc=yes], [enable_xvmc=no])
2217 if test "x$enable_vdpau" = xauto -a "x$have_vdpau_platform" = xyes; then
2218 PKG_CHECK_EXISTS([vdpau >= $VDPAU_REQUIRED], [enable_vdpau=yes], [enable_vdpau=no])
2221 if test "x$enable_omx_bellagio" = xauto -a "x$have_omx_platform" = xyes; then
2222 PKG_CHECK_EXISTS([libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED], [enable_omx_bellagio=yes], [enable_omx_bellagio=no])
2225 if test "x$enable_omx_tizonia" = xauto -a "x$have_omx_platform" = xyes; then
2226 PKG_CHECK_EXISTS([libtizonia >= $LIBOMXIL_TIZONIA_REQUIRED], [enable_omx_tizonia=yes], [enable_omx_tizonia=no])
2229 if test "x$enable_va" = xauto -a "x$have_va_platform" = xyes; then
2230 PKG_CHECK_EXISTS([libva >= $LIBVA_REQUIRED], [enable_va=yes], [enable_va=no])
2234 if test "x$enable_dri" = xyes -o \
2235 "x$enable_xvmc" = xyes -o \
2236 "x$enable_vdpau" = xyes -o \
2237 "x$enable_omx_bellagio" = xyes -o \
2238 "x$enable_omx_tizonia" = xyes -o \
2239 "x$enable_va" = xyes; then
2242 AM_CONDITIONAL(NEED_GALLIUM_VL, test "x$need_gallium_vl" = xyes)
2244 if test "x$enable_xvmc" = xyes -o \
2245 "x$enable_vdpau" = xyes -o \
2246 "x$enable_omx_bellagio" = xyes -o \
2247 "x$enable_omx_tizonia" = xyes -o \
2248 "x$enable_va" = xyes; then
2249 if echo $platforms | grep -q "x11"; then
2250 PKG_CHECK_MODULES([VL], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
2252 need_gallium_vl_winsys=yes
2254 AM_CONDITIONAL(NEED_GALLIUM_VL_WINSYS, test "x$need_gallium_vl_winsys" = xyes)
2256 if test "x$enable_xvmc" = xyes; then
2257 if test "x$have_xvmc_platform" != xyes; then
2258 AC_MSG_ERROR([XVMC requires the x11 platforms])
2260 PKG_CHECK_MODULES([XVMC], [xvmc >= $XVMC_REQUIRED])
2261 gallium_st="$gallium_st xvmc"
2263 AM_CONDITIONAL(HAVE_ST_XVMC, test "x$enable_xvmc" = xyes)
2265 if test "x$enable_vdpau" = xyes; then
2266 if test "x$have_vdpau_platform" != xyes; then
2267 AC_MSG_ERROR([VDPAU requires the x11 platforms])
2269 PKG_CHECK_MODULES([VDPAU], [vdpau >= $VDPAU_REQUIRED])
2270 gallium_st="$gallium_st vdpau"
2271 DEFINES="$DEFINES -DHAVE_ST_VDPAU"
2273 AM_CONDITIONAL(HAVE_ST_VDPAU, test "x$enable_vdpau" = xyes)
2275 if test "x$enable_omx_bellagio" = xyes; then
2276 if test "x$have_omx_platform" != xyes; then
2277 AC_MSG_ERROR([OMX requires at least one of the x11 or drm platforms])
2279 PKG_CHECK_MODULES([OMX_BELLAGIO], [libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED])
2280 gallium_st="$gallium_st omx_bellagio"
2281 AC_DEFINE([ENABLE_ST_OMX_BELLAGIO], 1, [Use Bellagio for OMX IL])
2283 AM_CONDITIONAL(HAVE_ST_OMX_BELLAGIO, test "x$enable_omx_bellagio" = xyes)
2285 if test "x$enable_omx_tizonia" = xyes; then
2286 if test "x$have_omx_platform" != xyes; then
2287 AC_MSG_ERROR([OMX requires at least one of the x11 or drm platforms])
2289 PKG_CHECK_MODULES([OMX_TIZONIA],
2290 [libtizonia >= $LIBOMXIL_TIZONIA_REQUIRED
2291 tizilheaders >= $LIBOMXIL_TIZONIA_REQUIRED
2292 libtizplatform >= $LIBOMXIL_TIZONIA_REQUIRED])
2293 gallium_st="$gallium_st omx_tizonia"
2294 AC_DEFINE([ENABLE_ST_OMX_TIZONIA], 1, [Use Tizoina for OMX IL])
2296 AM_CONDITIONAL(HAVE_ST_OMX_TIZONIA, test "x$enable_omx_tizonia" = xyes)
2298 if test "x$enable_va" = xyes; then
2299 if test "x$have_va_platform" != xyes; then
2300 AC_MSG_ERROR([VA requires at least one of the x11 drm or wayland platforms])
2302 PKG_CHECK_MODULES([VA], [libva >= $LIBVA_REQUIRED])
2303 gallium_st="$gallium_st va"
2305 AM_CONDITIONAL(HAVE_ST_VA, test "x$enable_va" = xyes)
2308 dnl Nine Direct3D9 configuration
2310 if test "x$enable_nine" = xyes; then
2311 if ! echo "$with_gallium_drivers" | grep -q 'swrast'; then
2312 AC_MSG_ERROR([nine requires the gallium swrast driver])
2314 if test "x$with_gallium_drivers" = xswrast; then
2315 AC_MSG_ERROR([nine requires at least one non-swrast gallium driver])
2317 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6; then
2318 AC_MSG_ERROR([gcc >= 4.6 is required to build nine])
2321 if test "x$enable_dri3" = xno; then
2322 AC_MSG_WARN([using nine together with wine requires DRI3 enabled system])
2325 gallium_st="$gallium_st nine"
2327 AM_CONDITIONAL(HAVE_ST_NINE, test "x$enable_nine" = xyes)
2330 dnl OpenCL configuration
2333 AC_ARG_WITH([clang-libdir],
2334 [AS_HELP_STRING([--with-clang-libdir],
2335 [Path to Clang libraries @<:@default=llvm-config --libdir@:>@])],
2336 [CLANG_LIBDIR="$withval"],
2339 PKG_CHECK_EXISTS([libclc], [have_libclc=yes], [have_libclc=no])
2341 if test "x$enable_opencl" = xyes; then
2342 if test -z "$with_gallium_drivers"; then
2343 AC_MSG_ERROR([cannot enable OpenCL without Gallium])
2346 if test "x$HAVE_CXX11" != "xyes"; then
2347 AC_MSG_ERROR([clover requires c++11 support])
2350 if test "x$have_libclc" = xno; then
2351 AC_MSG_ERROR([pkg-config cannot find libclc.pc which is required to build clover.
2352 Make sure the directory containing libclc.pc is specified in your
2353 PKG_CONFIG_PATH environment variable.
2354 By default libclc.pc is installed to /usr/local/share/pkgconfig/])
2356 LIBCLC_INCLUDEDIR=`$PKG_CONFIG --variable=includedir libclc`
2357 LIBCLC_LIBEXECDIR=`$PKG_CONFIG --variable=libexecdir libclc`
2358 AC_SUBST([LIBCLC_INCLUDEDIR])
2359 AC_SUBST([LIBCLC_LIBEXECDIR])
2362 gallium_st="$gallium_st clover"
2364 if test "x$enable_opencl_icd" = xyes; then
2365 OPENCL_LIBNAME="MesaOpenCL"
2367 OPENCL_LIBNAME="OpenCL"
2370 if test "x$have_libelf" != xyes; then
2371 AC_MSG_ERROR([Clover requires libelf])
2374 if test "x${ac_cv_cxx_compiler_gnu}" = xyes; then
2376 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
2377 #if !defined(__VEC__) || !defined(__ALTIVEC__)
2378 #error "AltiVec not enabled"
2380 ])], altivec_enabled=yes)
2382 if test "$altivec_enabled" = yes; then
2383 CLOVER_STD_OVERRIDE="-std=gnu++11"
2385 AC_SUBST([CLOVER_STD_OVERRIDE])
2388 llvm_require_version $LLVM_REQUIRED_OPENCL "opencl"
2390 llvm_add_default_components "opencl"
2391 llvm_add_component "all-targets" "opencl"
2392 llvm_add_component "coverage" "opencl"
2393 llvm_add_component "linker" "opencl"
2394 llvm_add_component "instrumentation" "opencl"
2395 llvm_add_component "ipo" "opencl"
2396 llvm_add_component "irreader" "opencl"
2397 llvm_add_component "lto" "opencl"
2398 llvm_add_component "option" "opencl"
2399 llvm_add_component "objcarcopts" "opencl"
2400 llvm_add_component "profiledata" "opencl"
2401 llvm_add_optional_component "coroutines" "opencl"
2403 dnl Check for Clang internal headers
2404 if test -z "$CLANG_LIBDIR"; then
2405 CLANG_LIBDIR=${LLVM_LIBDIR}
2407 CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION}
2408 AS_IF([test ! -f "$CLANG_RESOURCE_DIR/include/stddef.h"],
2409 [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.])])
2411 AM_CONDITIONAL(HAVE_CLOVER, test "x$enable_opencl" = xyes)
2412 AM_CONDITIONAL(HAVE_CLOVER_ICD, test "x$enable_opencl_icd" = xyes)
2413 AC_SUBST([OPENCL_LIBNAME])
2414 AC_SUBST([CLANG_RESOURCE_DIR])
2417 dnl Gallium configuration
2419 AM_CONDITIONAL(HAVE_GALLIUM, test -n "$with_gallium_drivers")
2421 # libEGL wants to default to the first platform specified in
2422 # ./configure. parse that here.
2423 if test "x$platforms" != "x"; then
2424 FIRST_PLATFORM_CAPS=`echo $platforms | sed 's| .*||' | tr '[[a-z]]' '[[A-Z]]'`
2425 EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
2427 EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
2430 AC_SUBST([EGL_NATIVE_PLATFORM])
2431 AC_SUBST([EGL_CFLAGS])
2433 # If we don't have the X11 platform, set this define so we don't try to include
2435 if ! echo "$platforms" | grep -q 'x11'; then
2436 DEFINES="$DEFINES -DMESA_EGL_NO_X11_HEADERS"
2437 GL_PC_CFLAGS="$GL_PC_CFLAGS -DMESA_EGL_NO_X11_HEADERS"
2440 dnl Directory for XVMC libs
2441 AC_ARG_WITH([xvmc-libdir],
2442 [AS_HELP_STRING([--with-xvmc-libdir=DIR],
2443 [directory for the XVMC libraries @<:@default=${libdir}@:>@])],
2444 [XVMC_LIB_INSTALL_DIR="$withval"],
2445 [XVMC_LIB_INSTALL_DIR='${libdir}'])
2446 AC_SUBST([XVMC_LIB_INSTALL_DIR])
2451 AM_CONDITIONAL(HAVE_GALLIUM_TESTS, test "x$enable_gallium_tests" = xyes)
2453 dnl Directory for VDPAU libs
2454 AC_ARG_WITH([vdpau-libdir],
2455 [AS_HELP_STRING([--with-vdpau-libdir=DIR],
2456 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
2457 [VDPAU_LIB_INSTALL_DIR="$withval"],
2458 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
2459 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
2461 dnl Directory for OMX_BELLAGIO libs
2463 AC_ARG_WITH([omx-bellagio-libdir],
2464 [AS_HELP_STRING([--with-omx-bellagio-libdir=DIR],
2465 [directory for the OMX_BELLAGIO libraries])],
2466 [OMX_BELLAGIO_LIB_INSTALL_DIR="$withval"],
2467 [OMX_BELLAGIO_LIB_INSTALL_DIR=`$PKG_CONFIG --exists libomxil-bellagio && \
2468 $PKG_CONFIG --define-variable=libdir=\$libdir --variable=pluginsdir libomxil-bellagio`])
2469 AC_SUBST([OMX_BELLAGIO_LIB_INSTALL_DIR])
2471 dnl Directory for OMX_TIZONIA libs
2473 AC_ARG_WITH([omx-tizonia-libdir],
2474 [AS_HELP_STRING([--with-omx-tizonia-libdir=DIR],
2475 [directory for the OMX_TIZONIA libraries])],
2476 [OMX_TIZONIA_LIB_INSTALL_DIR="$withval"],
2477 [OMX_TIZONIA_LIB_INSTALL_DIR=`$PKG_CONFIG --define-variable=libdir=\$libdir --variable=pluginsdir libtizcore`])
2478 AC_SUBST([OMX_TIZONIA_LIB_INSTALL_DIR])
2480 dnl Directory for VA libs
2482 AC_ARG_WITH([va-libdir],
2483 [AS_HELP_STRING([--with-va-libdir=DIR],
2484 [directory for the VA libraries @<:@${libdir}/dri@:>@])],
2485 [VA_LIB_INSTALL_DIR="$withval"],
2486 [VA_LIB_INSTALL_DIR="${libdir}/dri"])
2487 AC_SUBST([VA_LIB_INSTALL_DIR])
2489 AC_ARG_WITH([d3d-libdir],
2490 [AS_HELP_STRING([--with-d3d-libdir=DIR],
2491 [directory for the D3D modules @<:@${libdir}/d3d@:>@])],
2492 [D3D_DRIVER_INSTALL_DIR="$withval"],
2493 [D3D_DRIVER_INSTALL_DIR="${libdir}/d3d"])
2494 AC_SUBST([D3D_DRIVER_INSTALL_DIR])
2496 dnl Architectures to build SWR library for
2498 AC_ARG_WITH([swr-archs],
2499 [AS_HELP_STRING([--with-swr-archs@<:@=DIRS...@:>@],
2500 [comma delimited swr architectures list, e.g.
2501 "avx,avx2,knl,skx" @<:@default="avx,avx2"@:>@])],
2502 [with_swr_archs="$withval"],
2503 [with_swr_archs="avx,avx2"])
2506 dnl r300 doesn't strictly require LLVM, but for performance reasons we
2507 dnl highly recommend LLVM usage. So require it at least on x86 and x86_64
2510 r300_require_llvm() {
2511 case "$host" in *gnux32) return;; esac
2513 i*86|x86_64|amd64) require_llvm $1
2519 dnl DRM is needed by X, Wayland, and offscreen rendering.
2520 dnl Surfaceless is an alternative for the last one.
2522 require_basic_egl() {
2523 case "$with_platforms" in
2524 *drm*|*surfaceless*|*android*)
2527 AC_MSG_ERROR([$1 requires one of these:
2528 1) --with-platforms=drm (X, Wayland, offscreen rendering based on DRM)
2529 2) --with-platforms=surfaceless (offscreen only)
2530 3) --with-platforms=android (Android only)
2531 Recommended options: drm,x11])
2536 swr_require_cxx_feature_flags() {
2538 preprocessor_test="$2"
2542 AC_MSG_CHECKING([whether $CXX supports $feature_name])
2544 save_CXXFLAGS="$CXXFLAGS"
2548 for opts in $option_list
2551 CXXFLAGS="$opts $save_CXXFLAGS"
2554 [ #if !($preprocessor_test)
2563 CXXFLAGS="$save_CXXFLAGS"
2565 if test $found -eq 1; then
2566 AC_MSG_RESULT([$opts])
2567 eval "$output_var=\$opts"
2571 AC_MSG_ERROR([swr requires $feature_name support])
2575 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
2576 if test -n "$with_gallium_drivers"; then
2577 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
2578 for driver in $gallium_drivers; do
2581 HAVE_GALLIUM_SVGA=yes
2582 require_libdrm "svga"
2585 HAVE_GALLIUM_I915=yes
2586 PKG_CHECK_MODULES([I915], [libdrm >= $LIBDRM_INTEL_REQUIRED libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
2587 require_libdrm "Gallium i915"
2590 HAVE_GALLIUM_R300=yes
2591 PKG_CHECK_MODULES([RADEON], [libdrm >= $LIBDRM_RADEON_REQUIRED libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2592 require_libdrm "r300"
2593 r300_require_llvm "r300"
2596 HAVE_GALLIUM_R600=yes
2597 PKG_CHECK_MODULES([RADEON], [libdrm >= $LIBDRM_RADEON_REQUIRED libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2598 require_libdrm "r600"
2599 if test "x$enable_llvm" = xyes; then
2600 radeon_llvm_check $LLVM_REQUIRED_R600 "r600"
2602 llvm_add_component "asmparser" "r600"
2603 llvm_add_component "bitreader" "r600"
2607 HAVE_GALLIUM_RADEONSI=yes
2608 PKG_CHECK_MODULES([RADEON], [libdrm >= $LIBDRM_RADEON_REQUIRED libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2609 PKG_CHECK_MODULES([AMDGPU], [libdrm >= $LIBDRM_AMDGPU_REQUIRED libdrm_amdgpu >= $LIBDRM_AMDGPU_REQUIRED])
2610 require_libdrm "radeonsi"
2611 radeon_llvm_check $LLVM_REQUIRED_RADEONSI "radeonsi"
2612 if test "x$enable_egl" = xyes; then
2613 require_basic_egl "radeonsi"
2617 HAVE_GALLIUM_NOUVEAU=yes
2618 PKG_CHECK_MODULES([NOUVEAU], [libdrm >= $LIBDRM_NOUVEAU_REQUIRED libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
2619 require_libdrm "nouveau"
2622 HAVE_GALLIUM_FREEDRENO=yes
2623 PKG_CHECK_MODULES([FREEDRENO], [libdrm >= $LIBDRM_FREEDRENO_REQUIRED libdrm_freedreno >= $LIBDRM_FREEDRENO_REQUIRED])
2624 require_libdrm "freedreno"
2627 HAVE_GALLIUM_ETNAVIV=yes
2628 PKG_CHECK_MODULES([ETNAVIV], [libdrm >= $LIBDRM_ETNAVIV_REQUIRED libdrm_etnaviv >= $LIBDRM_ETNAVIV_REQUIRED])
2629 require_libdrm "etnaviv"
2632 HAVE_GALLIUM_IMX=yes
2635 HAVE_GALLIUM_SOFTPIPE=yes
2636 if test "x$enable_llvm" = xyes; then
2637 HAVE_GALLIUM_LLVMPIPE=yes
2641 llvm_require_version $LLVM_REQUIRED_SWR "swr"
2643 if test "x$HAVE_CXX11" != "xyes"; then
2644 AC_MSG_ERROR([swr requires c++11 support])
2647 swr_require_cxx_feature_flags "AVX" "defined(__AVX__)" \
2648 ",-target-cpu=sandybridge,-mavx,-march=core-avx,-tp=sandybridge" \
2650 AC_SUBST([SWR_AVX_CXXFLAGS])
2652 swr_archs=`IFS=', '; echo $with_swr_archs`
2653 for arch in $swr_archs; do
2659 swr_require_cxx_feature_flags "AVX2" "defined(__AVX2__)" \
2660 ",-target-cpu=haswell,-mavx2 -mfma -mbmi2 -mf16c,-march=core-avx2,-tp=haswell" \
2662 AC_SUBST([SWR_AVX2_CXXFLAGS])
2666 swr_require_cxx_feature_flags "KNL" "defined(__AVX512F__) && defined(__AVX512ER__)" \
2667 ",-target-cpu=mic-knl,-march=knl,-xMIC-AVX512" \
2669 AC_SUBST([SWR_KNL_CXXFLAGS])
2673 swr_require_cxx_feature_flags "SKX" "defined(__AVX512F__) && defined(__AVX512BW__)" \
2674 ",-target-cpu=x86-skylake,-march=skylake-avx512,-xCORE-AVX512" \
2676 AC_SUBST([SWR_SKX_CXXFLAGS])
2680 AC_MSG_ERROR([unknown SWR build architecture '$arch'])
2685 if test "x$HAVE_SWR_AVX" != xyes -a \
2686 "x$HAVE_SWR_AVX2" != xyes -a \
2687 "x$HAVE_SWR_KNL" != xyes -a \
2688 "x$HAVE_SWR_SKX" != xyes; then
2689 AC_MSG_ERROR([swr enabled but no swr architectures selected])
2692 # test if more than one swr arch configured
2693 if test `echo $swr_archs | wc -w` -eq 1; then
2694 HAVE_SWR_BUILTIN=yes
2697 HAVE_GALLIUM_SWR=yes
2700 HAVE_GALLIUM_VC4=yes
2701 require_libdrm "vc4"
2703 PKG_CHECK_MODULES([SIMPENROSE], [simpenrose],
2704 [USE_VC4_SIMULATOR=yes;
2705 DEFINES="$DEFINES -DUSE_VC4_SIMULATOR"],
2706 [USE_VC4_SIMULATOR=no])
2709 HAVE_GALLIUM_VC5=yes
2711 PKG_CHECK_MODULES([VC5_SIMULATOR], [v3dv3],
2712 [USE_VC5_SIMULATOR=yes;
2713 DEFINES="$DEFINES -DUSE_VC5_SIMULATOR"],
2714 [AC_MSG_ERROR([vc5 requires the simulator])])
2717 HAVE_GALLIUM_PL111=yes
2720 HAVE_GALLIUM_VIRGL=yes
2721 require_libdrm "virgl"
2722 if test "x$enable_egl" = xyes; then
2723 require_basic_egl "virgl"
2727 AC_MSG_ERROR([Unknown Gallium driver: $driver])
2733 # XXX: Keep in sync with LLVM_REQUIRED_SWR
2734 AM_CONDITIONAL(SWR_INVALID_LLVM_VERSION, test "x$LLVM_VERSION" != x4.0.0 -a \
2735 "x$LLVM_VERSION" != x4.0.1)
2737 if test "x$enable_llvm" = "xyes" -a "$with_gallium_drivers"; then
2738 llvm_require_version $LLVM_REQUIRED_GALLIUM "gallium"
2739 llvm_add_default_components "gallium"
2742 AM_CONDITIONAL(HAVE_SWR_AVX, test "x$HAVE_SWR_AVX" = xyes)
2743 AM_CONDITIONAL(HAVE_SWR_AVX2, test "x$HAVE_SWR_AVX2" = xyes)
2744 AM_CONDITIONAL(HAVE_SWR_KNL, test "x$HAVE_SWR_KNL" = xyes)
2745 AM_CONDITIONAL(HAVE_SWR_SKX, test "x$HAVE_SWR_SKX" = xyes)
2746 AM_CONDITIONAL(HAVE_SWR_BUILTIN, test "x$HAVE_SWR_BUILTIN" = xyes)
2748 dnl We need to validate some needed dependencies for renderonly drivers.
2750 if test "x$HAVE_GALLIUM_ETNAVIV" != xyes -a "x$HAVE_GALLIUM_IMX" = xyes ; then
2751 AC_MSG_ERROR([Building with imx requires etnaviv])
2754 if test "x$HAVE_GALLIUM_VC4" != xyes -a "x$HAVE_GALLIUM_PL111" = xyes ; then
2755 AC_MSG_ERROR([Building with pl111 requires vc4])
2759 detect_old_buggy_llvm() {
2760 dnl llvm-config may not give the right answer when llvm is a built as a
2761 dnl single shared library, so we must work the library name out for
2763 dnl (See https://llvm.org/bugs/show_bug.cgi?id=6823)
2764 dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
2765 LLVM_SO_NAME=LLVM-`$LLVM_CONFIG --version`
2766 AS_IF([test -f "$LLVM_LIBDIR/lib$LLVM_SO_NAME.$IMP_LIB_EXT"], [llvm_have_one_so=yes])
2768 if test "x$llvm_have_one_so" = xyes; then
2769 dnl LLVM was built using auto*, so there is only one shared object.
2770 LLVM_LIBS="-l$LLVM_SO_NAME"
2772 dnl If LLVM was built with CMake, there will be one shared object per
2774 AS_IF([test ! -f "$LLVM_LIBDIR/libLLVMTarget.$IMP_LIB_EXT"],
2775 [AC_MSG_ERROR([Could not find llvm shared libraries:
2776 Please make sure you have built llvm with the --enable-shared option
2777 and that your llvm libraries are installed in $LLVM_LIBDIR
2778 If you have installed your llvm libraries to a different directory you
2779 can use the --with-llvm-prefix= configure flag to specify this directory.
2780 NOTE: Mesa is attempting to use llvm shared libraries by default.
2781 If you do not want to build with llvm shared libraries and instead want to
2782 use llvm static libraries then add --disable-llvm-shared-libs to your configure
2783 invocation and rebuild.])])
2785 dnl We don't need to update LLVM_LIBS in this case because the LLVM
2786 dnl install uses a shared object for each component and we have
2787 dnl already added all of these objects to LLVM_LIBS.
2792 dnl Set defines and buildtime variables only when using LLVM.
2794 if test "x$enable_llvm" = xyes; then
2795 DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT -DMESA_LLVM_VERSION_PATCH=$LLVM_VERSION_PATCH"
2797 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
2798 LLVM_CFLAGS=$LLVM_CPPFLAGS # CPPFLAGS seem to be sufficient
2799 LLVM_CXXFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cxxflags"`
2801 dnl Set LLVM_LIBS - This is done after the driver configuration so
2802 dnl that drivers can add additional components to LLVM_COMPONENTS.
2803 dnl Previously, gallium drivers were updating LLVM_LIBS directly
2804 dnl by calling llvm-config --libs ${DRIVER_LLVM_COMPONENTS}, but
2805 dnl this was causing the same libraries to be appear multiple times
2808 if test $LLVM_VERSION_MAJOR -ge 4 -o $LLVM_VERSION_MAJOR -eq 3 -a $LLVM_VERSION_MINOR -ge 9; then
2809 if test "x$enable_llvm_shared_libs" = xyes; then
2810 LLVM_LIBS="`$LLVM_CONFIG --link-shared --libs ${LLVM_COMPONENTS}`"
2812 dnl Invoking llvm-config with both -libs and --system-libs produces the
2813 dnl two separate lines - each for the set of libraries.
2814 dnl Call the program twice, effectively folding them into a single line.
2815 LLVM_LIBS="`$LLVM_CONFIG --link-static --libs ${LLVM_COMPONENTS}`"
2816 dnl We need to link to llvm system libs when using static libs
2817 LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --link-static --system-libs`"
2820 LLVM_LIBS="`$LLVM_CONFIG --libs ${LLVM_COMPONENTS}`"
2821 if test "x$enable_llvm_shared_libs" = xyes; then
2822 detect_old_buggy_llvm
2824 AC_MSG_WARN([Building mesa with statically linked LLVM may cause compilation issues])
2825 dnl We need to link to llvm system libs when using static libs
2826 dnl However, only llvm 3.5+ provides --system-libs
2827 if test $LLVM_VERSION_MAJOR -ge 4 -o $LLVM_VERSION_MAJOR -eq 3 -a $LLVM_VERSION_MINOR -ge 5; then
2828 LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --system-libs`"
2833 dnl The gallium-xlib GLX and gallium OSMesa targets directly embed the
2834 dnl swr/llvmpipe driver into the final binary. Adding LLVM_LIBS results in
2835 dnl the LLVM library propagated in the Libs.private of the respective .pc
2836 dnl file which ensures complete dependency information when statically
2838 if test "x$enable_glx" == xgallium-xlib; then
2839 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $LLVM_LIBS"
2841 if test "x$enable_gallium_osmesa" = xyes; then
2842 OSMESA_PC_LIB_PRIV="$OSMESA_PC_LIB_PRIV $LLVM_LIBS"
2846 AM_CONDITIONAL(HAVE_GALLIUM_SVGA, test "x$HAVE_GALLIUM_SVGA" = xyes)
2847 AM_CONDITIONAL(HAVE_GALLIUM_I915, test "x$HAVE_GALLIUM_I915" = xyes)
2848 AM_CONDITIONAL(HAVE_GALLIUM_PL111, test "x$HAVE_GALLIUM_PL111" = xyes)
2849 AM_CONDITIONAL(HAVE_GALLIUM_R300, test "x$HAVE_GALLIUM_R300" = xyes)
2850 AM_CONDITIONAL(HAVE_GALLIUM_R600, test "x$HAVE_GALLIUM_R600" = xyes)
2851 AM_CONDITIONAL(HAVE_GALLIUM_RADEONSI, test "x$HAVE_GALLIUM_RADEONSI" = xyes)
2852 AM_CONDITIONAL(HAVE_GALLIUM_RADEON_COMMON, test "x$HAVE_GALLIUM_RADEONSI" = xyes)
2853 AM_CONDITIONAL(HAVE_GALLIUM_NOUVEAU, test "x$HAVE_GALLIUM_NOUVEAU" = xyes)
2854 AM_CONDITIONAL(HAVE_GALLIUM_FREEDRENO, test "x$HAVE_GALLIUM_FREEDRENO" = xyes)
2855 AM_CONDITIONAL(HAVE_GALLIUM_ETNAVIV, test "x$HAVE_GALLIUM_ETNAVIV" = xyes)
2856 AM_CONDITIONAL(HAVE_GALLIUM_IMX, test "x$HAVE_GALLIUM_IMX" = xyes)
2857 AM_CONDITIONAL(HAVE_GALLIUM_SOFTPIPE, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes)
2858 AM_CONDITIONAL(HAVE_GALLIUM_LLVMPIPE, test "x$HAVE_GALLIUM_LLVMPIPE" = xyes)
2859 AM_CONDITIONAL(HAVE_GALLIUM_SWR, test "x$HAVE_GALLIUM_SWR" = xyes)
2860 AM_CONDITIONAL(HAVE_GALLIUM_SWRAST, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes -o \
2861 "x$HAVE_GALLIUM_LLVMPIPE" = xyes -o \
2862 "x$HAVE_GALLIUM_SWR" = xyes)
2863 AM_CONDITIONAL(HAVE_GALLIUM_VC4, test "x$HAVE_GALLIUM_VC4" = xyes)
2864 AM_CONDITIONAL(HAVE_GALLIUM_VC5, test "x$HAVE_GALLIUM_VC5" = xyes)
2865 AM_CONDITIONAL(HAVE_GALLIUM_VIRGL, test "x$HAVE_GALLIUM_VIRGL" = xyes)
2867 AM_CONDITIONAL(HAVE_GALLIUM_STATIC_TARGETS, test "x$enable_shared_pipe_drivers" = xno)
2869 if test "x$enable_dri" = xyes; then
2870 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRI"
2873 if test "x$have_drisw_kms" = xyes; then
2874 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_KMS"
2876 AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
2878 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
2879 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
2880 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
2881 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
2882 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
2883 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
2885 AM_CONDITIONAL(HAVE_RADEON_VULKAN, test "x$HAVE_RADEON_VULKAN" = xyes)
2886 AM_CONDITIONAL(HAVE_INTEL_VULKAN, test "x$HAVE_INTEL_VULKAN" = xyes)
2888 AM_CONDITIONAL(HAVE_AMD_DRIVERS, test "x$HAVE_GALLIUM_RADEONSI" = xyes -o \
2889 "x$HAVE_RADEON_VULKAN" = xyes)
2891 AM_CONDITIONAL(HAVE_BROADCOM_DRIVERS, test "x$HAVE_GALLIUM_VC4" = xyes -o \
2892 "x$HAVE_GALLIUM_VC5" = xyes)
2894 AM_CONDITIONAL(HAVE_INTEL_DRIVERS, test "x$HAVE_INTEL_VULKAN" = xyes -o \
2895 "x$HAVE_I965_DRI" = xyes)
2897 AM_CONDITIONAL(NEED_RADEON_DRM_WINSYS, test "x$HAVE_GALLIUM_R300" = xyes -o \
2898 "x$HAVE_GALLIUM_R600" = xyes -o \
2899 "x$HAVE_GALLIUM_RADEONSI" = xyes)
2900 AM_CONDITIONAL(NEED_WINSYS_XLIB, test "x$enable_glx" = xgallium-xlib)
2901 AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
2902 AM_CONDITIONAL(HAVE_GALLIUM_LLVM, test "x$enable_llvm" = xyes)
2903 AM_CONDITIONAL(USE_VC4_SIMULATOR, test x$USE_VC4_SIMULATOR = xyes)
2904 AM_CONDITIONAL(USE_VC5_SIMULATOR, test x$USE_VC5_SIMULATOR = xyes)
2906 AM_CONDITIONAL(HAVE_LIBDRM, test "x$have_libdrm" = xyes)
2907 AM_CONDITIONAL(HAVE_OSMESA, test "x$enable_osmesa" = xyes)
2908 AM_CONDITIONAL(HAVE_GALLIUM_OSMESA, test "x$enable_gallium_osmesa" = xyes)
2909 AM_CONDITIONAL(HAVE_COMMON_OSMESA, test "x$enable_osmesa" = xyes -o \
2910 "x$enable_gallium_osmesa" = xyes)
2912 AM_CONDITIONAL(HAVE_X86_ASM, test "x$asm_arch" = xx86 -o "x$asm_arch" = xx86_64)
2913 AM_CONDITIONAL(HAVE_X86_64_ASM, test "x$asm_arch" = xx86_64)
2914 AM_CONDITIONAL(HAVE_SPARC_ASM, test "x$asm_arch" = xsparc)
2915 AM_CONDITIONAL(HAVE_PPC64LE_ASM, test "x$asm_arch" = xppc64le)
2916 AM_CONDITIONAL(HAVE_AARCH64_ASM, test "x$asm_arch" = xaarch64)
2917 AM_CONDITIONAL(HAVE_ARM_ASM, test "x$asm_arch" = xarm)
2919 AC_SUBST([NINE_MAJOR], 1)
2920 AC_SUBST([NINE_MINOR], 0)
2921 AC_SUBST([NINE_PATCH], 0)
2922 AC_SUBST([NINE_VERSION], "$NINE_MAJOR.$NINE_MINOR.$NINE_PATCH")
2924 AC_SUBST([VDPAU_MAJOR], 1)
2925 AC_SUBST([VDPAU_MINOR], 0)
2927 if test "x$enable_va" = xyes; then
2928 VA_MAJOR=`$PKG_CONFIG --modversion libva | $SED -n 's/\([[^\.]]*\)\..*$/\1/p'`
2929 VA_MINOR=`$PKG_CONFIG --modversion libva | $SED -n 's/.*\.\(.*\)\..*$/\1/p'`
2931 AC_SUBST([VA_MAJOR], $VA_MAJOR)
2932 AC_SUBST([VA_MINOR], $VA_MINOR)
2934 AM_CONDITIONAL(HAVE_VULKAN_COMMON, test "x$VULKAN_DRIVERS" != "x")
2936 AC_SUBST([XVMC_MAJOR], 1)
2937 AC_SUBST([XVMC_MINOR], 0)
2939 AC_SUBST([XA_MAJOR], 2)
2940 AC_SUBST([XA_MINOR], 3)
2941 AC_SUBST([XA_PATCH], 0)
2942 AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_PATCH")
2944 AC_ARG_ENABLE(valgrind,
2945 [AS_HELP_STRING([--enable-valgrind],
2946 [Build mesa with valgrind support (default: auto)])],
2947 [VALGRIND=$enableval], [VALGRIND=auto])
2948 if test "x$VALGRIND" != xno; then
2949 PKG_CHECK_MODULES(VALGRIND, [valgrind], [have_valgrind=yes], [have_valgrind=no])
2951 AC_MSG_CHECKING([whether to enable Valgrind support])
2952 if test "x$VALGRIND" = xauto; then
2953 VALGRIND="$have_valgrind"
2956 if test "x$VALGRIND" = "xyes"; then
2957 if ! test "x$have_valgrind" = xyes; then
2958 AC_MSG_ERROR([Valgrind support required but not present])
2960 AC_DEFINE([HAVE_VALGRIND], 1, [Use valgrind intrinsics to suppress false warnings])
2963 AC_MSG_RESULT([$VALGRIND])
2965 dnl Restore LDFLAGS and CPPFLAGS
2966 LDFLAGS="$_SAVE_LDFLAGS"
2967 CPPFLAGS="$_SAVE_CPPFLAGS"
2969 dnl Suppress clang's warnings about unused CFLAGS and CXXFLAGS
2970 if test "x$acv_mesa_CLANG" = xyes; then
2971 CFLAGS="$CFLAGS -Qunused-arguments"
2972 CXXFLAGS="$CXXFLAGS -Qunused-arguments"
2975 dnl Add user CFLAGS and CXXFLAGS
2976 CFLAGS="$CFLAGS $USER_CFLAGS"
2977 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
2979 dnl Substitute the config
2980 AC_CONFIG_FILES([Makefile
2983 src/amd/vulkan/Makefile
2984 src/broadcom/Makefile
2985 src/compiler/Makefile
2988 src/egl/wayland/wayland-drm/Makefile
2989 src/egl/wayland/wayland-egl/Makefile
2990 src/egl/wayland/wayland-egl/wayland-egl.pc
2991 src/gallium/Makefile
2992 src/gallium/auxiliary/Makefile
2993 src/gallium/auxiliary/pipe-loader/Makefile
2994 src/gallium/drivers/freedreno/Makefile
2995 src/gallium/drivers/ddebug/Makefile
2996 src/gallium/drivers/i915/Makefile
2997 src/gallium/drivers/llvmpipe/Makefile
2998 src/gallium/drivers/noop/Makefile
2999 src/gallium/drivers/nouveau/Makefile
3000 src/gallium/drivers/pl111/Makefile
3001 src/gallium/drivers/r300/Makefile
3002 src/gallium/drivers/r600/Makefile
3003 src/gallium/drivers/radeon/Makefile
3004 src/gallium/drivers/radeonsi/Makefile
3005 src/gallium/drivers/rbug/Makefile
3006 src/gallium/drivers/softpipe/Makefile
3007 src/gallium/drivers/svga/Makefile
3008 src/gallium/drivers/swr/Makefile
3009 src/gallium/drivers/trace/Makefile
3010 src/gallium/drivers/etnaviv/Makefile
3011 src/gallium/drivers/imx/Makefile
3012 src/gallium/drivers/vc4/Makefile
3013 src/gallium/drivers/vc5/Makefile
3014 src/gallium/drivers/virgl/Makefile
3015 src/gallium/state_trackers/clover/Makefile
3016 src/gallium/state_trackers/dri/Makefile
3017 src/gallium/state_trackers/glx/xlib/Makefile
3018 src/gallium/state_trackers/nine/Makefile
3019 src/gallium/state_trackers/omx/Makefile
3020 src/gallium/state_trackers/omx/bellagio/Makefile
3021 src/gallium/state_trackers/omx/tizonia/Makefile
3022 src/gallium/state_trackers/osmesa/Makefile
3023 src/gallium/state_trackers/va/Makefile
3024 src/gallium/state_trackers/vdpau/Makefile
3025 src/gallium/state_trackers/xa/Makefile
3026 src/gallium/state_trackers/xa/xa_tracker.h
3027 src/gallium/state_trackers/xvmc/Makefile
3028 src/gallium/targets/d3dadapter9/Makefile
3029 src/gallium/targets/d3dadapter9/d3d.pc
3030 src/gallium/targets/dri/Makefile
3031 src/gallium/targets/libgl-xlib/Makefile
3032 src/gallium/targets/omx/Makefile
3033 src/gallium/targets/opencl/Makefile
3034 src/gallium/targets/opencl/mesa.icd
3035 src/gallium/targets/osmesa/Makefile
3036 src/gallium/targets/osmesa/osmesa.pc
3037 src/gallium/targets/pipe-loader/Makefile
3038 src/gallium/targets/va/Makefile
3039 src/gallium/targets/vdpau/Makefile
3040 src/gallium/targets/xa/Makefile
3041 src/gallium/targets/xa/xatracker.pc
3042 src/gallium/targets/xvmc/Makefile
3043 src/gallium/tests/trivial/Makefile
3044 src/gallium/tests/unit/Makefile
3045 src/gallium/winsys/etnaviv/drm/Makefile
3046 src/gallium/winsys/imx/drm/Makefile
3047 src/gallium/winsys/freedreno/drm/Makefile
3048 src/gallium/winsys/i915/drm/Makefile
3049 src/gallium/winsys/nouveau/drm/Makefile
3050 src/gallium/winsys/pl111/drm/Makefile
3051 src/gallium/winsys/radeon/drm/Makefile
3052 src/gallium/winsys/amdgpu/drm/Makefile
3053 src/gallium/winsys/svga/drm/Makefile
3054 src/gallium/winsys/sw/dri/Makefile
3055 src/gallium/winsys/sw/kms-dri/Makefile
3056 src/gallium/winsys/sw/null/Makefile
3057 src/gallium/winsys/sw/wrapper/Makefile
3058 src/gallium/winsys/sw/xlib/Makefile
3059 src/gallium/winsys/vc4/drm/Makefile
3060 src/gallium/winsys/vc5/drm/Makefile
3061 src/gallium/winsys/virgl/drm/Makefile
3062 src/gallium/winsys/virgl/vtest/Makefile
3066 src/glx/apple/Makefile
3067 src/glx/tests/Makefile
3068 src/glx/windows/Makefile
3069 src/glx/windows/windowsdriproto.pc
3074 src/mapi/es1api/glesv1_cm.pc
3075 src/mapi/es2api/glesv2.pc
3076 src/mapi/glapi/gen/Makefile
3079 src/mesa/drivers/dri/dri.pc
3080 src/mesa/drivers/dri/common/Makefile
3081 src/mesa/drivers/dri/i915/Makefile
3082 src/mesa/drivers/dri/i965/Makefile
3083 src/mesa/drivers/dri/Makefile
3084 src/mesa/drivers/dri/nouveau/Makefile
3085 src/mesa/drivers/dri/r200/Makefile
3086 src/mesa/drivers/dri/radeon/Makefile
3087 src/mesa/drivers/dri/swrast/Makefile
3088 src/mesa/drivers/osmesa/Makefile
3089 src/mesa/drivers/osmesa/osmesa.pc
3090 src/mesa/drivers/x11/Makefile
3091 src/mesa/main/tests/Makefile
3092 src/mesa/state_tracker/tests/Makefile
3094 src/util/tests/hash_table/Makefile
3095 src/util/tests/string_buffer/Makefile
3096 src/util/xmlpool/Makefile
3097 src/vulkan/Makefile])
3101 # Fix up dependencies in *.Plo files, where we changed the extension of a
3103 $SED -i -e 's/brw_blorp.cpp/brw_blorp.c/' src/mesa/drivers/dri/i965/.deps/brw_blorp.Plo
3105 rm -f src/compiler/spirv/spirv_info.lo
3106 echo "# dummy" > src/compiler/spirv/.deps/spirv_info.Plo
3109 dnl Output some configuration info for the user
3112 echo " prefix: $prefix"
3113 echo " exec_prefix: $exec_prefix"
3114 echo " libdir: $libdir"
3115 echo " includedir: $includedir"
3119 echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
3123 case "x$enable_osmesa$enable_gallium_osmesa" in
3125 echo " OSMesa: lib$OSMESA_LIB (Gallium)"
3128 echo " OSMesa: lib$OSMESA_LIB"
3136 if test "x$enable_dri" != xno; then
3137 echo " DRI platform: $dri_platform"
3138 if test -z "$DRI_DIRS"; then
3139 echo " DRI drivers: no"
3141 echo " DRI drivers: $DRI_DIRS"
3143 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
3146 case "x$enable_glx" in
3148 echo " GLX: DRI-based"
3151 echo " GLX: Xlib-based"
3154 echo " GLX: Xlib-based (Gallium)"
3157 echo " GLX: $enable_glx"
3163 echo " EGL: $enable_egl"
3164 if test "$enable_egl" = yes; then
3167 if test "x$enable_dri" != "xno"; then
3168 egl_drivers="$egl_drivers builtin:egl_dri2"
3170 if test "x$enable_dri3" != "xno"; then
3171 egl_drivers="$egl_drivers builtin:egl_dri3"
3174 echo " EGL drivers: $egl_drivers"
3176 if test "x$enable_gbm" = xyes; then
3182 echo " EGL/Vulkan/VL platforms: $platforms"
3186 if test "x$VULKAN_DRIVERS" != x; then
3187 echo " Vulkan drivers: $VULKAN_DRIVERS"
3188 echo " Vulkan ICD dir: $VULKAN_ICD_INSTALL_DIR"
3190 echo " Vulkan drivers: no"
3194 if test "x$enable_llvm" = xyes; then
3196 echo " llvm-config: $LLVM_CONFIG"
3197 echo " llvm-version: $LLVM_VERSION"
3203 if test -n "$with_gallium_drivers"; then
3204 echo " Gallium drivers: $gallium_drivers"
3205 echo " Gallium st: $gallium_st"
3211 if test "x$enable_gallium_extra_hud" != xyes; then
3212 echo " HUD extra stats: no"
3214 echo " HUD extra stats: yes"
3217 if test "x$enable_lmsensors" != xyes; then
3218 echo " HUD lmsensors: no"
3220 echo " HUD lmsensors: yes"
3224 if test "x$HAVE_GALLIUM_SWR" != x; then
3225 if test "x$HAVE_SWR_BUILTIN" = xyes; then
3226 echo " SWR archs: $swr_archs (builtin)"
3228 echo " SWR archs: $swr_archs"
3234 echo " Shared libs: $enable_shared"
3235 echo " Static libs: $enable_static"
3236 echo " Shared-glapi: $enable_shared_glapi"
3238 dnl Compiler options
3239 # cleanup the CFLAGS/CXXFLAGS/LDFLAGS/DEFINES vars
3240 cflags=`echo $CFLAGS | \
3241 $SED 's/^ *//;s/ */ /;s/ *$//'`
3242 cxxflags=`echo $CXXFLAGS | \
3243 $SED 's/^ *//;s/ */ /;s/ *$//'`
3244 ldflags=`echo $LDFLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
3245 defines=`echo $DEFINES | $SED 's/^ *//;s/ */ /;s/ *$//'`
3247 echo " CFLAGS: $cflags"
3248 echo " CXXFLAGS: $cxxflags"
3249 echo " CXX11_CXXFLAGS: $CXX11_CXXFLAGS"
3250 echo " LDFLAGS: $ldflags"
3251 echo " Macros: $defines"
3253 if test "x$enable_llvm" = xyes; then
3254 echo " LLVM_CFLAGS: $LLVM_CFLAGS"
3255 echo " LLVM_CXXFLAGS: $LLVM_CXXFLAGS"
3256 echo " LLVM_CPPFLAGS: $LLVM_CPPFLAGS"
3257 echo " LLVM_LDFLAGS: $LLVM_LDFLAGS"
3260 echo " PYTHON2: $PYTHON2"
3263 echo " Run '${MAKE-make}' to build Mesa"