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.91
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.92
82 LIBDRM_ETNAVIV_REQUIRED=2.4.89
83 LIBDRM_VC4_REQUIRED=2.4.89
85 dnl Versions for external dependencies
86 DRI2PROTO_REQUIRED=2.8
87 GLPROTO_REQUIRED=1.4.14
88 LIBOMXIL_BELLAGIO_REQUIRED=0.0
89 LIBOMXIL_TIZONIA_REQUIRED=0.10.0
93 WAYLAND_PROTOCOLS_REQUIRED=1.8
96 XCBDRI3_MODIFIERS_REQUIRED=1.13
98 XCBPRESENT_MODIFIERS_REQUIRED=1.13
100 XSHMFENCE_REQUIRED=1.1
102 PYTHON_MAKO_REQUIRED=0.8.0
103 LIBSENSORS_REQUIRED=4.0.0
107 LLVM_REQUIRED_GALLIUM=3.3.0
108 LLVM_REQUIRED_OPENCL=3.9.0
109 LLVM_REQUIRED_R600=3.9.0
110 LLVM_REQUIRED_RADEONSI=5.0.0
111 LLVM_REQUIRED_RADV=5.0.0
112 LLVM_REQUIRED_SWR=4.0.0
118 dnl add this here, so the help for this environmnet variable is close to
119 dnl other CC/CXX flags related help
120 AC_ARG_VAR([CXX11_CXXFLAGS], [Compiler flag to enable C++11 support (only needed if not
121 enabled by default and different from -std=c++11)])
127 AC_CHECK_PROGS([PYTHON2], [python2.7 python2 python])
135 LT_INIT([disable-static])
137 AC_CHECK_PROG(RM, rm, [rm -f])
140 AS_IF([test ! -f "$srcdir/src/compiler/glsl/glcpp/glcpp-parse.c"],
141 [AC_MSG_ERROR([bison not found - unable to compile glcpp-parse.y])]))
143 AS_IF([test ! -f "$srcdir/src/compiler/glsl/glcpp/glcpp-lex.c"],
144 [AC_MSG_ERROR([flex not found - unable to compile glcpp-lex.l])]))
146 AC_CHECK_PROG(INDENT, indent, indent, cat)
147 if test "x$INDENT" != "xcat"; then
148 # Only GNU indent is supported
149 INDENT_VERSION=`indent --version | grep GNU`
150 if test $? -eq 0; then
151 AC_SUBST(INDENT_FLAGS, '-i4 -nut -br -brs -npcs -ce -TGLubyte -TGLbyte -TBool')
157 AX_CHECK_PYTHON_MAKO_MODULE($PYTHON_MAKO_REQUIRED)
159 if test -z "$PYTHON2"; then
160 if test ! -f "$srcdir/src/util/format_srgb.c"; then
161 AC_MSG_ERROR([Python not found - unable to generate sources])
164 if test "x$acv_mako_found" = xno; then
165 if test ! -f "$srcdir/src/mesa/main/format_unpack.c"; then
166 AC_MSG_ERROR([Python mako module v$PYTHON_MAKO_REQUIRED or higher not found])
173 dnl We need a POSIX shell for parts of the build. Assume we have one
177 # Solaris /bin/sh is too old/non-POSIX compliant
178 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
183 dnl clang is mostly GCC-compatible, but its version is much lower,
184 dnl so we have to check for it.
185 AC_MSG_CHECKING([if compiling with clang])
188 [AC_LANG_PROGRAM([], [[
193 [acv_mesa_CLANG=yes], [acv_mesa_CLANG=no])
195 AC_MSG_RESULT([$acv_mesa_CLANG])
197 dnl If we're using GCC, make sure that it is at least version 4.2.0. Older
198 dnl versions are explictly not supported.
201 if test "x$GCC" = xyes -a "x$acv_mesa_CLANG" = xno; then
202 AC_MSG_CHECKING([whether gcc version is sufficient])
206 GCC_VERSION=`$CC -dumpversion`
207 if test $? -eq 0; then
208 GCC_VERSION_MAJOR=`echo $GCC_VERSION | cut -d. -f1`
209 GCC_VERSION_MINOR=`echo $GCC_VERSION | cut -d. -f2`
212 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 2 ; then
214 AC_MSG_ERROR([If using GCC, version 4.2.0 or later is required.])
219 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6 ; then
222 if test "x$cross_compiling" = xyes; then
227 dnl We don't support building Mesa with Sun C compiler
228 dnl https://bugs.freedesktop.org/show_bug.cgi?id=93189
229 AC_CHECK_DECL([__SUNPRO_C], [SUNCC=yes], [SUNCC=no])
230 if test "x$SUNCC" = xyes; then
231 AC_MSG_ERROR([Building with Sun C compiler is not supported, use GCC instead.])
234 dnl Check for compiler builtins
235 AX_GCC_BUILTIN([__builtin_bswap32])
236 AX_GCC_BUILTIN([__builtin_bswap64])
237 AX_GCC_BUILTIN([__builtin_clz])
238 AX_GCC_BUILTIN([__builtin_clzll])
239 AX_GCC_BUILTIN([__builtin_ctz])
240 AX_GCC_BUILTIN([__builtin_expect])
241 AX_GCC_BUILTIN([__builtin_ffs])
242 AX_GCC_BUILTIN([__builtin_ffsll])
243 AX_GCC_BUILTIN([__builtin_popcount])
244 AX_GCC_BUILTIN([__builtin_popcountll])
245 AX_GCC_BUILTIN([__builtin_unreachable])
247 AX_GCC_FUNC_ATTRIBUTE([const])
248 AX_GCC_FUNC_ATTRIBUTE([flatten])
249 AX_GCC_FUNC_ATTRIBUTE([format])
250 AX_GCC_FUNC_ATTRIBUTE([malloc])
251 AX_GCC_FUNC_ATTRIBUTE([packed])
252 AX_GCC_FUNC_ATTRIBUTE([pure])
253 AX_GCC_FUNC_ATTRIBUTE([returns_nonnull])
254 AX_GCC_FUNC_ATTRIBUTE([unused])
255 AX_GCC_FUNC_ATTRIBUTE([visibility])
256 AX_GCC_FUNC_ATTRIBUTE([warn_unused_result])
257 AX_GCC_FUNC_ATTRIBUTE([weak])
258 AX_GCC_FUNC_ATTRIBUTE([alias])
259 AX_GCC_FUNC_ATTRIBUTE([noreturn])
261 AM_CONDITIONAL([GEN_ASM_OFFSETS], test "x$GEN_ASM_OFFSETS" = xyes)
263 dnl Make sure the pkg-config macros are defined
264 m4_ifndef([PKG_PROG_PKG_CONFIG],
265 [m4_fatal([Could not locate the pkg-config autoconf macros.
266 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
267 are in a different location, try setting the environment variable
268 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
269 PKG_PROG_PKG_CONFIG()
271 dnl LIB_DIR - library basename
272 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
275 dnl Cache LDFLAGS and CPPFLAGS so we can add to them and restore later
276 _SAVE_LDFLAGS="$LDFLAGS"
277 _SAVE_CPPFLAGS="$CPPFLAGS"
280 DEFINES="-D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS"
287 linux*|*-gnu*|gnu*|cygwin*)
288 DEFINES="$DEFINES -D_GNU_SOURCE"
291 DEFINES="$DEFINES -DSVR4"
295 AM_CONDITIONAL(HAVE_ANDROID, test "x$android" = xyes)
298 dnl Check compiler flags
300 AX_CHECK_COMPILE_FLAG([-Wall], [CFLAGS="$CFLAGS -Wall"])
301 AX_CHECK_COMPILE_FLAG([-Werror=implicit-function-declaration], [CFLAGS="$CFLAGS -Werror=implicit-function-declaration"])
302 AX_CHECK_COMPILE_FLAG([-Werror=missing-prototypes], [CFLAGS="$CFLAGS -Werror=missing-prototypes"])
303 AX_CHECK_COMPILE_FLAG([-Wmissing-prototypes], [CFLAGS="$CFLAGS -Wmissing-prototypes"])
304 AX_CHECK_COMPILE_FLAG([-fno-math-errno], [CFLAGS="$CFLAGS -fno-math-errno"])
305 AX_CHECK_COMPILE_FLAG([-fno-trapping-math], [CFLAGS="$CFLAGS -fno-trapping-math"])
306 AX_CHECK_COMPILE_FLAG([-fvisibility=hidden], [VISIBILITY_CFLAGS="-fvisibility=hidden"])
309 dnl Check C++ compiler flags
312 AX_CHECK_COMPILE_FLAG([-Wall], [CXXFLAGS="$CXXFLAGS -Wall"])
313 AX_CHECK_COMPILE_FLAG([-fno-math-errno], [CXXFLAGS="$CXXFLAGS -fno-math-errno"])
314 AX_CHECK_COMPILE_FLAG([-fno-trapping-math], [CXXFLAGS="$CXXFLAGS -fno-trapping-math"])
315 AX_CHECK_COMPILE_FLAG([-fvisibility=hidden], [VISIBILITY_CXXFLAGS="-fvisibility=hidden"])
318 # Flags to help ensure that certain portions of the code -- and only those
319 # portions -- can be built with MSVC:
320 # - src/util, src/gallium/auxiliary, rc/gallium/drivers/llvmpipe, and
321 # - non-Linux/Posix OpenGL portions needs to build on MSVC 2013 (which
322 # supports most of C99)
323 # - the rest has no compiler compiler restrictions
324 AX_CHECK_COMPILE_FLAG([-Werror=pointer-arith], [MSVC2013_COMPAT_CFLAGS="$MSVC2013_COMPAT_CFLAGS -Werror=pointer-arith"])
325 AX_CHECK_COMPILE_FLAG([-Werror=vla], [MSVC2013_COMPAT_CFLAGS="$MSVC2013_COMPAT_CFLAGS -Werror=vla"])
327 AX_CHECK_COMPILE_FLAG([-Werror=pointer-arith], [MSVC2013_COMPAT_CXXFLAGS="$MSVC2013_COMPAT_CXXFLAGS -Werror=pointer-arith"])
328 AX_CHECK_COMPILE_FLAG([-Werror=vla], [MSVC2013_COMPAT_CXXFLAGS="$MSVC2013_COMPAT_CXXFLAGS -Werror=vla"])
331 AC_SUBST([MSVC2013_COMPAT_CFLAGS])
332 AC_SUBST([MSVC2013_COMPAT_CXXFLAGS])
334 if test "x$GCC" = xyes; then
335 if test "x$USE_GNU99" = xyes; then
336 CFLAGS="$CFLAGS -std=gnu99"
338 CFLAGS="$CFLAGS -std=c99"
343 dnl Check whether C++11 is supported, if the environment variable
344 dnl CXX11_CXXFLAGS is set it takes precedence.
349 check_cxx11_available() {
353 #if !(__cplusplus >= 201103L)
361 ], AC_MSG_RESULT(no))
362 eval "$output_support=\$cxx11_support"
366 save_CXXFLAGS="$CXXFLAGS"
368 dnl If the user provides a flag to enable c++11, then we test only this
369 if test "x$CXX11_CXXFLAGS" != "x"; then
370 CXXFLAGS="$CXXFLAGS $CXX11_CXXFLAGS"
371 AC_MSG_CHECKING(whether c++11 is enabled by via $CXX11_CXXFLAGS)
372 check_cxx11_available HAVE_CXX11
374 dnl test whether c++11 is enabled by default
375 AC_MSG_CHECKING(whether c++11 is enabled by default)
376 check_cxx11_available HAVE_CXX11
378 dnl C++11 not enabled by default, test whether -std=c++11 does the job
379 if test "x$HAVE_CXX11" != "xyes"; then
380 CXX11_CXXFLAGS=-std=c++11
381 CXXFLAGS="$CXXFLAGS $CXX11_CXXFLAGS"
382 AC_MSG_CHECKING(whether c++11 is enabled by via $CXX11_CXXFLAGS)
383 check_cxx11_available HAVE_CXX11
387 CXXFLAGS="$save_CXXFLAGS"
388 AM_CONDITIONAL(HAVE_STD_CXX11, test "x$HAVE_CXX11" = "xyes")
389 AC_SUBST(CXX11_CXXFLAGS)
392 dnl even if the compiler appears to support it, using visibility attributes isn't
393 dnl going to do anything useful currently on cygwin apart from emit lots of warnings
397 VISIBILITY_CXXFLAGS=""
401 AC_SUBST([VISIBILITY_CFLAGS])
402 AC_SUBST([VISIBILITY_CXXFLAGS])
404 dnl For some reason, the test for -Wno-foo always succeeds with gcc, even if the
405 dnl option is not supported. Hence, check for -Wfoo instead.
406 AX_CHECK_COMPILE_FLAG([-Woverride-init], [WNO_OVERRIDE_INIT="$WNO_OVERRIDE_INIT -Wno-override-init"]) # gcc
407 AX_CHECK_COMPILE_FLAG([-Winitializer-overrides], [WNO_OVERRIDE_INIT="$WNO_OVERRIDE_INIT -Wno-initializer-overrides"]) # clang
408 AC_SUBST([WNO_OVERRIDE_INIT])
411 dnl Optional flags, check for compiler support
413 SSE41_CFLAGS="-msse4.1"
414 dnl Code compiled by GCC with -msse* assumes a 16 byte aligned
415 dnl stack, but on x86-32 such alignment is not guaranteed.
416 case "$target_cpu" in
418 SSE41_CFLAGS="$SSE41_CFLAGS -mstackrealign"
421 save_CFLAGS="$CFLAGS"
422 CFLAGS="$SSE41_CFLAGS $CFLAGS"
423 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
424 #include <smmintrin.h>
427 __m128i a = _mm_set1_epi32 (param), b = _mm_set1_epi32 (param + 1), c;
428 c = _mm_max_epu32(a, b);
429 return _mm_cvtsi128_si32(c);
430 }]])], SSE41_SUPPORTED=1)
431 CFLAGS="$save_CFLAGS"
432 if test "x$SSE41_SUPPORTED" = x1; then
433 DEFINES="$DEFINES -DUSE_SSE41"
435 AM_CONDITIONAL([SSE41_SUPPORTED], [test x$SSE41_SUPPORTED = x1])
436 AC_SUBST([SSE41_CFLAGS], $SSE41_CFLAGS)
438 dnl Check for new-style atomic builtins. We first check without linking to
440 AC_MSG_CHECKING(whether __atomic_load_n is supported)
441 AC_LINK_IFELSE([AC_LANG_SOURCE([[
447 return (int)__atomic_load_n(x.v, __ATOMIC_ACQUIRE);
448 }]])], GCC_ATOMIC_BUILTINS_SUPPORTED=yes, GCC_ATOMIC_BUILTINS_SUPPORTED=no)
450 dnl If that didn't work, we try linking with -latomic, which is needed on some
452 if test "x$GCC_ATOMIC_BUILTINS_SUPPORTED" != xyes; then
453 save_LDFLAGS=$LDFLAGS
454 LDFLAGS="$LDFLAGS -latomic"
455 AC_LINK_IFELSE([AC_LANG_SOURCE([[
461 return (int)__atomic_load_n(x.v, __ATOMIC_ACQUIRE);
462 }]])], GCC_ATOMIC_BUILTINS_SUPPORTED=yes LIBATOMIC_LIBS="-latomic",
463 GCC_ATOMIC_BUILTINS_SUPPORTED=no)
464 LDFLAGS=$save_LDFLAGS
466 AC_MSG_RESULT($GCC_ATOMIC_BUILTINS_SUPPORTED)
468 if test "x$GCC_ATOMIC_BUILTINS_SUPPORTED" = xyes; then
469 DEFINES="$DEFINES -DUSE_GCC_ATOMIC_BUILTINS"
471 AC_SUBST([LIBATOMIC_LIBS])
473 dnl Check if host supports 64-bit atomics
474 dnl note that lack of support usually results in link (not compile) error
475 AC_MSG_CHECKING(whether __sync_add_and_fetch_8 is supported)
476 AC_LINK_IFELSE([AC_LANG_SOURCE([[
480 return __sync_add_and_fetch(&v, (uint64_t)1);
481 }]])], GCC_64BIT_ATOMICS_SUPPORTED=yes, GCC_64BIT_ATOMICS_SUPPORTED=no)
482 if test "x$GCC_64BIT_ATOMICS_SUPPORTED" != xyes; then
483 DEFINES="$DEFINES -DMISSING_64BIT_ATOMICS"
485 AC_MSG_RESULT($GCC_64BIT_ATOMICS_SUPPORTED)
487 dnl Check for Endianness
495 dnl Check for POWER8 Architecture
496 PWR8_CFLAGS="-mpower8-vector"
497 have_pwr8_intrinsics=no
498 AC_MSG_CHECKING(whether gcc supports -mpower8-vector)
500 CFLAGS="$PWR8_CFLAGS $CFLAGS"
501 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
502 #if defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8))
503 #error "Need GCC >= 4.8 for sane POWER8 support"
507 vector unsigned char r;
508 vector unsigned int v = vec_splat_u32 (1);
509 r = __builtin_vec_vgbbd ((vector unsigned char) v);
511 }]])], have_pwr8_intrinsics=yes)
515 [AS_HELP_STRING([--disable-pwr8],
516 [disable POWER8-specific instructions])],
517 [enable_pwr8=$enableval], [enable_pwr8=auto])
519 if test "x$enable_pwr8" = xno ; then
520 have_pwr8_intrinsics=disabled
523 if test $have_pwr8_intrinsics = yes && test $little_endian = yes ; then
524 DEFINES="$DEFINES -D_ARCH_PWR8"
525 CXXFLAGS="$CXXFLAGS $PWR8_CFLAGS"
526 CFLAGS="$CFLAGS $PWR8_CFLAGS"
531 AC_MSG_RESULT($have_pwr8_intrinsics)
532 if test "x$enable_pwr8" = xyes && test $have_pwr8_intrinsics = no ; then
533 AC_MSG_ERROR([POWER8 compiler support not detected])
536 if test $have_pwr8_intrinsics = yes && test $little_endian = no ; then
537 AC_MSG_WARN([POWER8 optimization is enabled only on POWER8 Little-Endian])
540 AC_SUBST([PWR8_CFLAGS], $PWR8_CFLAGS)
542 dnl Can't have static and shared libraries, default to static if user
543 dnl explicitly requested. If both disabled, set to static since shared
544 dnl was explicitly requested.
545 case "x$enable_static$enable_shared" in
547 AC_MSG_ERROR([Cannot enable both static and shared. Building using --enable-shared is strongly recommended])
550 AC_MSG_ERROR([Cannot disable both static and shared. Building using --enable-shared is strongly recommended])
554 AM_CONDITIONAL(BUILD_SHARED, test "x$enable_shared" = xyes)
557 dnl other compiler options
559 AC_ARG_ENABLE([debug],
560 [AS_HELP_STRING([--enable-debug],
561 [use debug compiler flags and macros @<:@default=disabled@:>@])],
562 [enable_debug="$enableval"],
566 AC_ARG_ENABLE([profile],
567 [AS_HELP_STRING([--enable-profile],
568 [enable profiling of code @<:@default=disabled@:>@])],
569 [enable_profile="$enableval"],
573 AC_ARG_ENABLE([sanitize],
574 [AS_HELP_STRING([--enable-sanitize@<:@=address|undefined@:>@],
575 [enable code sanitizer @<:@default=disabled@:>@])],
576 [enable_sanitize="$enableval"],
577 [enable_sanitize=no])
579 if test "x$enable_profile" = xyes; then
580 DEFINES="$DEFINES -DPROFILE"
581 if test "x$GCC" = xyes; then
582 CFLAGS="$CFLAGS -fno-omit-frame-pointer"
584 if test "x$GXX" = xyes; then
585 CXXFLAGS="$CXXFLAGS -fno-omit-frame-pointer"
589 if test "x$enable_debug" = xyes; then
590 DEFINES="$DEFINES -DDEBUG"
591 if test "x$enable_profile" = xyes; then
592 AC_MSG_WARN([Debug and Profile are enabled at the same time])
594 if test "x$GCC" = xyes; then
595 if ! echo "$CFLAGS" | grep -q -e '-g'; then
598 if ! echo "$CFLAGS" | grep -q -e '-O'; then
602 if test "x$GXX" = xyes; then
603 if ! echo "$CXXFLAGS" | grep -q -e '-g'; then
604 CXXFLAGS="$CXXFLAGS -g"
606 if ! echo "$CXXFLAGS" | grep -q -e '-O'; then
607 CXXFLAGS="$CXXFLAGS -O0"
611 DEFINES="$DEFINES -DNDEBUG"
614 if test "x$enable_sanitize" != xno; then
615 if test "x$enable_profile" = xyes; then
616 AC_MSG_WARN([Sanitize and Profile are enabled at the same time])
619 CFLAGS="$CFLAGS -fsanitize=$enable_sanitize"
620 CXXFLAGS="$CXXFLAGS -fsanitize=$enable_sanitize"
621 LDFLAGS="$LDFLAGS -fsanitize=$enable_sanitize"
624 [AC_LANG_SOURCE([int main(){return 0;}])],
626 [AC_MSG_FAILURE([sanitize flags '$enable_sanitize' not supported])])
630 dnl Check if linker supports -Bsymbolic
632 save_LDFLAGS=$LDFLAGS
633 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic"
634 AC_MSG_CHECKING([if ld supports -Bsymbolic])
636 [AC_LANG_SOURCE([int main() { return 0;}])],
637 [AC_MSG_RESULT([yes])
638 BSYMBOLIC="-Wl,-Bsymbolic";],
641 LDFLAGS=$save_LDFLAGS
643 AC_SUBST([BSYMBOLIC])
646 dnl Check if linker supports garbage collection
648 save_LDFLAGS=$LDFLAGS
649 LDFLAGS="$LDFLAGS -Wl,--gc-sections"
650 AC_MSG_CHECKING([whether ld supports --gc-sections])
652 [AC_LANG_SOURCE([static char UnusedFunc() { return 5; } int main() { return 0;}])],
653 [AC_MSG_RESULT([yes])
654 GC_SECTIONS="-Wl,--gc-sections";],
657 LDFLAGS=$save_LDFLAGS
659 AC_SUBST([GC_SECTIONS])
662 dnl OpenBSD does not have DT_NEEDED entries for libc by design
663 dnl so when these flags are passed to ld via libtool the checks will fail
667 LD_NO_UNDEFINED="" ;;
669 if test "x$enable_sanitize" = xno; then
670 LD_NO_UNDEFINED="-Wl,--no-undefined"
677 AC_SUBST([LD_NO_UNDEFINED])
680 dnl Check if linker supports version scripts
682 AC_MSG_CHECKING([if the linker supports version-scripts])
683 save_LDFLAGS=$LDFLAGS
684 LDFLAGS="$LDFLAGS -Wl,--version-script=$srcdir/build-support/conftest.map"
686 [AC_LANG_SOURCE([int main() { return 0;}])],
687 [have_ld_version_script=yes;AC_MSG_RESULT(yes)],
688 [have_ld_version_script=no; AC_MSG_RESULT(no)])
689 LDFLAGS=$save_LDFLAGS
690 AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes")
693 dnl Check if linker supports dynamic list files
695 AC_MSG_CHECKING([if the linker supports --dynamic-list])
696 save_LDFLAGS=$LDFLAGS
697 LDFLAGS="$LDFLAGS -Wl,--dynamic-list=$srcdir/build-support/conftest.dyn"
699 [AC_LANG_SOURCE([int main() { return 0;}])],
700 [have_ld_dynamic_list=yes;AC_MSG_RESULT(yes)],
701 [have_ld_dynamic_list=no; AC_MSG_RESULT(no)])
702 LDFLAGS=$save_LDFLAGS
703 AM_CONDITIONAL(HAVE_LD_DYNAMIC_LIST, test "$have_ld_dynamic_list" = "yes")
706 dnl OSX linker does not support build-id
713 LD_BUILD_ID="-Wl,--build-id=sha1"
716 AC_SUBST([LD_BUILD_ID])
719 dnl compatibility symlinks
723 HAVE_COMPAT_SYMLINKS=yes ;;
725 HAVE_COMPAT_SYMLINKS=no ;;
728 AM_CONDITIONAL(HAVE_COMPAT_SYMLINKS, test "x$HAVE_COMPAT_SYMLINKS" = xyes)
733 dnl Unfortunately we need to do a few things that libtool can't help us with,
734 dnl so we need some knowledge of shared library filenames:
736 dnl LIB_EXT is the extension used when creating symlinks for alternate
737 dnl filenames for a shared library which will be dynamically loaded
739 dnl IMP_LIB_EXT is the extension used when checking for the presence of a
740 dnl the file for a shared library we wish to link with
764 dnl potentially-infringing-but-nobody-knows-for-sure stuff
766 AC_ARG_ENABLE([texture-float],
767 [AS_HELP_STRING([--enable-texture-float],
768 [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
769 [enable_texture_float="$enableval"],
770 [enable_texture_float=no]
772 if test "x$enable_texture_float" = xyes; then
773 AC_MSG_WARN([Floating-point textures enabled.])
774 AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
775 DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
779 dnl Arch/platform-specific settings
782 [AS_HELP_STRING([--disable-asm],
783 [disable assembly usage @<:@default=enabled on supported platforms@:>@])],
784 [enable_asm="$enableval"],
788 AC_MSG_CHECKING([whether to enable assembly])
789 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
790 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
791 if test "x$enable_asm" = xyes -a "x$cross_compiling" = xyes; then
793 i?86 | x86_64 | amd64)
794 if test "x$host_cpu" != "x$target_cpu"; then
796 AC_MSG_RESULT([no, cross compiling])
801 # check for supported arches
802 if test "x$enable_asm" = xyes; then
806 linux* | *freebsd* | dragonfly* | *netbsd* | openbsd* | gnu*)
813 linux* | *freebsd* | dragonfly* | *netbsd* | openbsd*)
850 DEFINES="$DEFINES -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
851 AC_MSG_RESULT([yes, x86])
854 DEFINES="$DEFINES -DUSE_X86_64_ASM"
855 AC_MSG_RESULT([yes, x86_64])
858 DEFINES="$DEFINES -DUSE_SPARC_ASM"
859 AC_MSG_RESULT([yes, sparc])
862 DEFINES="$DEFINES -DUSE_PPC64LE_ASM"
863 AC_MSG_RESULT([yes, ppc64le])
866 DEFINES="$DEFINES -DUSE_AARCH64_ASM"
867 AC_MSG_RESULT([yes, aarch64])
870 DEFINES="$DEFINES -DUSE_ARM_ASM"
871 AC_MSG_RESULT([yes, arm])
874 AC_MSG_RESULT([no, platform not supported])
880 AC_CHECK_HEADER([xlocale.h], [DEFINES="$DEFINES -DHAVE_XLOCALE_H"])
881 AC_CHECK_HEADER([sys/sysctl.h], [DEFINES="$DEFINES -DHAVE_SYS_SYSCTL_H"])
882 AC_CHECK_HEADERS([endian.h])
883 AC_CHECK_FUNC([strtof], [DEFINES="$DEFINES -DHAVE_STRTOF"])
884 AC_CHECK_FUNC([mkostemp], [DEFINES="$DEFINES -DHAVE_MKOSTEMP"])
885 AC_CHECK_FUNC([timespec_get], [DEFINES="$DEFINES -DHAVE_TIMESPEC_GET"])
886 AC_CHECK_FUNC([memfd_create], [DEFINES="$DEFINES -DHAVE_MEMFD_CREATE"])
888 AC_MSG_CHECKING([whether strtod has locale support])
889 AC_LINK_IFELSE([AC_LANG_SOURCE([[
893 #ifdef HAVE_XLOCALE_H
897 locale_t loc = newlocale(LC_CTYPE_MASK, "C", NULL);
898 const char *s = "1.0";
900 double d = strtod_l(s, end, loc);
901 float f = strtof_l(s, end, loc);
905 [DEFINES="$DEFINES -DHAVE_STRTOD_L"];
906 AC_MSG_RESULT([yes]),
909 dnl Check to see if dlopen is in default libraries (like Solaris, which
910 dnl has it in libc), or if libdl is needed to get it.
911 AC_CHECK_FUNC([dlopen], [],
912 [AC_CHECK_LIB([dl], [dlopen],
913 [DLOPEN_LIBS="-ldl"])])
914 AC_SUBST([DLOPEN_LIBS])
916 dnl Check if that library also has dladdr
918 LIBS="$LIBS $DLOPEN_LIBS"
919 AC_CHECK_FUNCS([dladdr])
922 AC_CHECK_FUNC([dl_iterate_phdr], [DEFINES="$DEFINES -DHAVE_DL_ITERATE_PHDR"])
928 AC_CHECK_FUNCS([clock_gettime], [CLOCK_LIB=],
929 [AC_CHECK_LIB([rt], [clock_gettime], [CLOCK_LIB=-lrt],
930 [AC_MSG_ERROR([Could not find clock_gettime])])])
931 AC_SUBST([CLOCK_LIB])
935 dnl See if posix_memalign is available
936 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
939 PKG_CHECK_MODULES([ZLIB], [zlib >= $ZLIB_REQUIRED])
940 DEFINES="$DEFINES -DHAVE_ZLIB"
942 dnl Check for pthreads
944 if test "x$ax_pthread_ok" = xno; then
945 AC_MSG_ERROR([Building mesa on this platform requires pthreads])
947 dnl AX_PTHREADS leaves PTHREAD_LIBS empty for gcc and sets PTHREAD_CFLAGS
948 dnl to -pthread, which causes problems if we need -lpthread to appear in
949 dnl pkgconfig files. Since Android doesn't have a pthread lib, this check
950 dnl is not valid for that platform.
951 if test "x$android" = xno; then
952 test -z "$PTHREAD_LIBS" && PTHREAD_LIBS="-lpthread"
954 dnl According to the manual when using pthreads, one should add -pthread to
955 dnl both compile and link-time arguments.
956 dnl In practise that should be sufficient for all platforms, since any
957 dnl platforms build with GCC and Clang support the flag.
958 PTHREAD_LIBS="$PTHREAD_LIBS -pthread"
960 dnl pthread-stubs is mandatory on some BSD platforms, due to the nature of the
961 dnl project. Even then there's a notable issue as described in the project README
963 linux* | cygwin* | darwin* | solaris* | *-gnu* | gnu* | openbsd*)
964 pthread_stubs_possible="no"
967 pthread_stubs_possible="yes"
971 if test "x$pthread_stubs_possible" = xyes; then
972 PKG_CHECK_MODULES(PTHREADSTUBS, pthread-stubs >= 0.4)
975 dnl Check for futex for fast inline simple_mtx_t.
976 AC_CHECK_HEADER([linux/futex.h], [DEFINES="$DEFINES -DHAVE_LINUX_FUTEX_H"])
978 dnl SELinux awareness.
979 AC_ARG_ENABLE([selinux],
980 [AS_HELP_STRING([--enable-selinux],
981 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
982 [MESA_SELINUX="$enableval"],
984 if test "x$enable_selinux" = "xyes"; then
985 PKG_CHECK_MODULES([SELINUX], [libselinux], [],
986 [AC_CHECK_HEADER([selinux/selinux.h],[],
987 [AC_MSG_ERROR([SELinux headers not found])])
988 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
989 [AC_MSG_ERROR([SELinux library not found])])
990 SELINUX_LIBS="-lselinux"])
991 DEFINES="$DEFINES -DMESA_SELINUX"
993 AC_SUBST([SELINUX_CFLAGS])
994 AC_SUBST([SELINUX_LIBS])
999 AC_ARG_ENABLE([llvm-shared-libs],
1000 [AS_HELP_STRING([--enable-llvm-shared-libs],
1001 [link with LLVM shared libraries @<:@default=enabled@:>@])],
1002 [enable_llvm_shared_libs="$enableval"],
1003 [enable_llvm_shared_libs=yes])
1005 AC_ARG_WITH([llvm-prefix],
1006 [AS_HELP_STRING([--with-llvm-prefix],
1007 [Prefix for LLVM installations in non-standard locations])],
1008 [llvm_prefix="$withval"],
1011 PKG_CHECK_MODULES([LIBELF], [libelf], [have_libelf=yes], [have_libelf=no])
1012 if test "x$have_libelf" = xno; then
1015 AC_CHECK_LIB([elf], [elf_memory], [have_libelf=yes;LIBELF_LIBS=-lelf], [have_libelf=no])
1016 AC_SUBST([LIBELF_LIBS])
1017 AC_SUBST([LIBELF_CFLAGS])
1020 if test -z "$LLVM_CONFIG"; then
1021 if test -n "$llvm_prefix"; then
1022 AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no], ["$llvm_prefix/bin"])
1024 AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no])
1028 llvm_add_component() {
1029 new_llvm_component=$1
1032 if $LLVM_CONFIG --components | grep -iqw $new_llvm_component ; then
1033 LLVM_COMPONENTS="${LLVM_COMPONENTS} ${new_llvm_component}"
1035 AC_MSG_ERROR([LLVM component '$new_llvm_component' not enabled in your LLVM build. Required by $driver_name.])
1039 llvm_add_optional_component() {
1040 new_llvm_component=$1
1043 if $LLVM_CONFIG --components | grep -iqw $new_llvm_component ; then
1044 LLVM_COMPONENTS="${LLVM_COMPONENTS} ${new_llvm_component}"
1048 llvm_add_default_components() {
1051 # Required default components
1052 llvm_add_component "bitwriter" $driver_name
1053 llvm_add_component "engine" $driver_name
1054 llvm_add_component "mcdisassembler" $driver_name
1055 llvm_add_component "mcjit" $driver_name
1057 # Optional default components
1058 llvm_add_optional_component "inteljitevents" $driver_name
1065 if $LLVM_CONFIG --targets-built | grep -iqw $new_llvm_target ; then
1066 llvm_add_component $new_llvm_target $driver_name
1068 AC_MSG_ERROR([LLVM target '$new_llvm_target' not enabled in your LLVM build. Required by $driver_name.])
1072 # Call this inside ` ` to get the return value.
1073 # $1 is the llvm-config command with arguments.
1074 strip_unwanted_llvm_flags() {
1075 echo " `$1` " | sed -E \
1076 -e 's/[[[:space:]]]+-m[[^[:space:]]]*//g' \
1077 -e 's/[[[:space:]]]+-DNDEBUG[[[:space:]]]/ /g' \
1078 -e 's/[[[:space:]]]+-D_GNU_SOURCE[[[:space:]]]/ /g' \
1079 -e 's/[[[:space:]]]+-pedantic[[[:space:]]]/ /g' \
1080 -e 's/[[[:space:]]]+-W[[^[:space:]]]*//g' \
1081 -e 's/[[[:space:]]]+-O[[^[:space:]]]*//g' \
1082 -e 's/[[[:space:]]]+-g[[^[:space:]]]*//g' \
1083 -e 's/-fno-rtti[[[:space:]]]/-Fno-rtti /g' \
1084 -e 's/[[[:space:]]]+-f[[^[:space:]]]*//g' \
1085 -e 's/-Fno-rtti[[[:space:]]]/-fno-rtti /g' \
1086 -e 's/^[[[:space:]]]//' \
1087 -e 's/[[[:space:]]]$//'
1090 llvm_set_environment_variables() {
1091 if test "x$LLVM_CONFIG" != xno; then
1092 LLVM_VERSION=`$LLVM_CONFIG --version | egrep -o '^[[0-9.]]+'`
1093 LLVM_CPPFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cppflags"`
1094 LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
1095 LLVM_LIBDIR=`$LLVM_CONFIG --libdir`
1097 # We need to respect LLVM_CPPFLAGS when compiling LLVM headers.
1098 save_CFLAGS="$CFLAGS"
1099 CFLAGS="$CFLAGS $LLVM_CPPFLAGS"
1101 AC_COMPUTE_INT([LLVM_VERSION_MAJOR], [LLVM_VERSION_MAJOR],
1102 [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
1103 AC_COMPUTE_INT([LLVM_VERSION_MINOR], [LLVM_VERSION_MINOR],
1104 [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
1105 AC_COMPUTE_INT([LLVM_VERSION_PATCH], [LLVM_VERSION_PATCH],
1106 [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
1108 CFLAGS="$save_CFLAGS"
1110 # Only needed for LLVM < 3.6.0
1111 if test -z "$LLVM_VERSION_PATCH"; then
1112 LLVM_VERSION_PATCH=0
1115 LLVM_VERSION_INT="${LLVM_VERSION_MAJOR}0${LLVM_VERSION_MINOR}"
1125 if test "x$enable_llvm" != "xyes"; then
1126 AC_MSG_ERROR([--enable-llvm is required when building $1])
1130 llvm_require_version() {
1133 llvm_target_version_major=`echo $1 | cut -d. -f1 | egrep -o '^[[0-9]]+'`
1134 llvm_target_version_minor=`echo $1 | cut -d. -f2 | egrep -o '^[[0-9]]+'`
1135 llvm_target_version_patch=`echo $1 | cut -d. -f3 | egrep -o '^[[0-9]]+'`
1137 if test "$LLVM_VERSION_MAJOR" -gt "$llvm_target_version_major"; then
1138 # major > required major
1143 if test "$LLVM_VERSION_MAJOR" -eq "$llvm_target_version_major"; then
1144 if test "$LLVM_VERSION_MINOR" -gt "$llvm_target_version_minor"; then
1145 # major = required major and
1146 # minor > required minor
1150 if test "$LLVM_VERSION_MINOR" -eq "$llvm_target_version_minor"; then
1151 if test "$LLVM_VERSION_PATCH" -ge "$llvm_target_version_patch"; then
1152 # major = required major and
1153 # minor = required minor and
1154 # patch >= required patch
1162 AC_MSG_ERROR([LLVM $1 or newer is required for $2])
1165 radeon_llvm_check() {
1166 if test ${LLVM_VERSION_INT} -lt 307; then
1167 amdgpu_llvm_target_name='r600'
1169 amdgpu_llvm_target_name='amdgpu'
1172 llvm_require_version $*
1174 llvm_add_target $amdgpu_llvm_target_name $2
1176 llvm_add_default_components $2
1177 llvm_add_component "bitreader" $2
1178 llvm_add_component "ipo" $2
1180 if test "x$have_libelf" != xyes; then
1181 AC_MSG_ERROR([$2 requires libelf when using llvm])
1185 llvm_set_environment_variables
1187 AC_SUBST([LLVM_CFLAGS])
1188 AC_SUBST([LLVM_CXXFLAGS])
1189 AC_SUBST([LLVM_LIBS])
1190 AC_SUBST([LLVM_LDFLAGS])
1191 AC_SUBST([LLVM_INCLUDEDIR])
1196 PKG_CHECK_EXISTS(libunwind, [HAVE_LIBUNWIND=yes], [HAVE_LIBUNWIND=no])
1197 AC_ARG_ENABLE([libunwind],
1198 [AS_HELP_STRING([--enable-libunwind],
1199 [Use libunwind for backtracing (default: auto)])],
1200 [LIBUNWIND="$enableval"],
1201 [LIBUNWIND="$HAVE_LIBUNWIND"])
1203 if test "x$LIBUNWIND" = "xyes"; then
1204 PKG_CHECK_MODULES(LIBUNWIND, libunwind)
1205 AC_DEFINE(HAVE_LIBUNWIND, 1, [Have libunwind support])
1209 dnl Options for APIs
1210 AC_ARG_ENABLE([opengl],
1211 [AS_HELP_STRING([--disable-opengl],
1212 [disable support for standard OpenGL API @<:@default=enabled@:>@])],
1213 [enable_opengl="$enableval"],
1214 [enable_opengl=yes])
1215 AC_ARG_ENABLE([gles1],
1216 [AS_HELP_STRING([--disable-gles1],
1217 [disable support for OpenGL ES 1.x API @<:@default=enabled@:>@])],
1218 [enable_gles1="$enableval"],
1220 AC_ARG_ENABLE([gles2],
1221 [AS_HELP_STRING([--disable-gles2],
1222 [disable support for OpenGL ES 2.x API @<:@default=enabled@:>@])],
1223 [enable_gles2="$enableval"],
1226 AC_ARG_ENABLE([dri],
1227 [AS_HELP_STRING([--enable-dri],
1228 [enable DRI modules @<:@default=enabled@:>@])],
1229 [enable_dri="$enableval"],
1232 AC_ARG_ENABLE([gallium-extra-hud],
1233 [AS_HELP_STRING([--enable-gallium-extra-hud],
1234 [enable HUD block/NIC I/O HUD stats support @<:@default=disabled@:>@])],
1235 [enable_gallium_extra_hud="$enableval"],
1236 [enable_gallium_extra_hud=no])
1237 AM_CONDITIONAL(HAVE_GALLIUM_EXTRA_HUD, test "x$enable_gallium_extra_hud" = xyes)
1238 if test "x$enable_gallium_extra_hud" = xyes ; then
1239 DEFINES="${DEFINES} -DHAVE_GALLIUM_EXTRA_HUD=1"
1242 #TODO: no pkgconfig .pc available for libsensors.
1243 #PKG_CHECK_MODULES([LIBSENSORS], [libsensors >= $LIBSENSORS_REQUIRED], [enable_lmsensors=yes], [enable_lmsensors=no])
1244 AC_ARG_ENABLE([lmsensors],
1245 [AS_HELP_STRING([--enable-lmsensors],
1246 [enable HUD lmsensor support @<:@default=disabled@:>@])],
1247 [enable_lmsensors="$enableval"],
1248 [enable_lmsensors=no])
1249 AM_CONDITIONAL(HAVE_LIBSENSORS, test "x$enable_lmsensors" = xyes)
1250 if test "x$enable_lmsensors" = xyes ; then
1251 DEFINES="${DEFINES} -DHAVE_LIBSENSORS=1"
1252 LIBSENSORS_LIBS="-lsensors"
1256 AC_SUBST(LIBSENSORS_LIBS)
1267 if test "x$enable_dri" = xno; then
1271 AC_ARG_ENABLE([dri3],
1272 [AS_HELP_STRING([--enable-dri3],
1273 [enable DRI3 @<:@default=auto@:>@])],
1274 [enable_dri3="$enableval"],
1275 [enable_dri3="$dri3_default"])
1276 AC_ARG_ENABLE([glx],
1277 [AS_HELP_STRING([--enable-glx@<:@=dri|xlib|gallium-xlib@:>@],
1278 [enable the GLX library and choose an implementation @<:@default=auto@:>@])],
1279 [enable_glx="$enableval"],
1281 AC_ARG_ENABLE([osmesa],
1282 [AS_HELP_STRING([--enable-osmesa],
1283 [enable OSMesa library @<:@default=disabled@:>@])],
1284 [enable_osmesa="$enableval"],
1286 AC_ARG_ENABLE([gallium-osmesa],
1287 [AS_HELP_STRING([--enable-gallium-osmesa],
1288 [enable Gallium implementation of the OSMesa library @<:@default=disabled@:>@])],
1289 [enable_gallium_osmesa="$enableval"],
1290 [enable_gallium_osmesa=no])
1291 AC_ARG_ENABLE([egl],
1292 [AS_HELP_STRING([--disable-egl],
1293 [disable EGL library @<:@default=enabled@:>@])],
1294 [enable_egl="$enableval"],
1298 [AS_HELP_STRING([--enable-xa],
1299 [enable build of the XA X Acceleration API @<:@default=disabled@:>@])],
1300 [enable_xa="$enableval"],
1302 AC_ARG_ENABLE([gbm],
1303 [AS_HELP_STRING([--enable-gbm],
1304 [enable gbm library @<:@default=yes except cygwin and macOS@:>@])],
1305 [enable_gbm="$enableval"],
1314 AC_ARG_ENABLE([nine],
1315 [AS_HELP_STRING([--enable-nine],
1316 [enable build of the nine Direct3D9 API @<:@default=no@:>@])],
1317 [enable_nine="$enableval"],
1320 AC_ARG_ENABLE([xvmc],
1321 [AS_HELP_STRING([--enable-xvmc],
1322 [enable xvmc library @<:@default=auto@:>@])],
1323 [enable_xvmc="$enableval"],
1325 AC_ARG_ENABLE([vdpau],
1326 [AS_HELP_STRING([--enable-vdpau],
1327 [enable vdpau library @<:@default=auto@:>@])],
1328 [enable_vdpau="$enableval"],
1329 [enable_vdpau=auto])
1330 AC_ARG_ENABLE([omx],
1331 [AS_HELP_STRING([--enable-omx],
1332 [DEPRECATED: Use --enable-omx-bellagio or --enable-omx-tizonia instead @<:@default=auto@:>@])],
1333 [AC_MSG_ERROR([--enable-omx is deprecated. Use --enable-omx-bellagio or --enable-omx-tizonia instead.])],
1335 AC_ARG_ENABLE([omx-bellagio],
1336 [AS_HELP_STRING([--enable-omx-bellagio],
1337 [enable OpenMAX Bellagio library @<:@default=disabled@:>@])],
1338 [enable_omx_bellagio="$enableval"],
1339 [enable_omx_bellagio=no])
1340 AC_ARG_ENABLE([omx-tizonia],
1341 [AS_HELP_STRING([--enable-omx-tizonia],
1342 [enable OpenMAX Tizonia library @<:@default=disabled@:>@])],
1343 [enable_omx_tizonia="$enableval"],
1344 [enable_omx_tizonia=no])
1346 [AS_HELP_STRING([--enable-va],
1347 [enable va library @<:@default=auto@:>@])],
1348 [enable_va="$enableval"],
1350 AC_ARG_ENABLE([opencl],
1351 [AS_HELP_STRING([--enable-opencl],
1352 [enable OpenCL library @<:@default=disabled@:>@])],
1353 [enable_opencl="$enableval"],
1355 AC_ARG_ENABLE([opencl_icd],
1356 [AS_HELP_STRING([--enable-opencl-icd],
1357 [Build an OpenCL ICD library to be loaded by an ICD implementation
1358 @<:@default=enabled@:>@])],
1359 [enable_opencl_icd="$enableval"],
1360 [enable_opencl_icd=yes])
1362 AC_ARG_ENABLE([gallium-tests],
1363 [AS_HELP_STRING([--enable-gallium-tests],
1364 [Enable optional Gallium tests) @<:@default=disabled@:>@])],
1365 [enable_gallium_tests="$enableval"],
1366 [enable_gallium_tests=no])
1368 # Option for Gallium drivers
1370 # Keep this in sync with the --with-gallium-drivers help string default value
1371 GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
1373 AC_ARG_WITH([gallium-drivers],
1374 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
1375 [comma delimited Gallium drivers list, e.g.
1376 "i915,nouveau,r300,r600,radeonsi,freedreno,pl111,svga,swrast,swr,tegra,v3d,vc4,virgl,etnaviv,imx"
1377 @<:@default=r300,r600,svga,swrast@:>@])],
1378 [with_gallium_drivers="$withval"],
1379 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
1381 # Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it
1382 # here so that the script doesn't choke on an unknown driver name later.
1383 case "$with_gallium_drivers" in
1384 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
1385 no) with_gallium_drivers='' ;;
1388 if test "x$enable_opengl" = xno -a \
1389 "x$enable_gles1" = xno -a \
1390 "x$enable_gles2" = xno -a \
1391 "x$enable_nine" = xno -a \
1392 "x$enable_xa" = xno -a \
1393 "x$enable_xvmc" = xno -a \
1394 "x$enable_vdpau" = xno -a \
1395 "x$enable_omx_bellagio" = xno -a \
1396 "x$enable_omx_tizonia" = xno -a \
1397 "x$enable_va" = xno -a \
1398 "x$enable_opencl" = xno; then
1399 AC_MSG_ERROR([at least one API should be enabled])
1402 if test "x$enable_omx_bellagio" = xyes -a \
1403 "x$enable_omx_tizonia" = xyes; then
1404 AC_MSG_ERROR([Can't enable both bellagio and tizonia at same time])
1407 # Building OpenGL ES1 and/or ES2 without OpenGL is not supported on mesa 9.0.x
1408 if test "x$enable_opengl" = xno -a \
1409 "x$enable_gles1" = xyes; then
1410 AC_MSG_ERROR([Building OpenGL ES1 without OpenGL is not supported])
1413 if test "x$enable_opengl" = xno -a \
1414 "x$enable_gles2" = xyes; then
1415 AC_MSG_ERROR([Building OpenGL ES2 without OpenGL is not supported])
1418 AM_CONDITIONAL(HAVE_OPENGL, test "x$enable_opengl" = xyes)
1419 AM_CONDITIONAL(HAVE_OPENGL_ES1, test "x$enable_gles1" = xyes)
1420 AM_CONDITIONAL(HAVE_OPENGL_ES2, test "x$enable_gles2" = xyes)
1421 AM_CONDITIONAL(NEED_OPENGL_COMMON, test "x$enable_opengl" = xyes -o \
1422 "x$enable_gles1" = xyes -o \
1423 "x$enable_gles2" = xyes)
1424 AM_CONDITIONAL(NEED_KHRPLATFORM, test "x$enable_egl" = xyes -o \
1425 "x$enable_gles1" = xyes -o \
1426 "x$enable_gles2" = xyes)
1428 # Validate GLX options
1429 if test "x$enable_glx" = xyes; then
1430 if test "x$enable_dri" = xyes; then
1432 elif test -n "$with_gallium_drivers"; then
1433 enable_glx=gallium-xlib
1438 case "x$enable_glx" in
1439 xdri | xxlib | xgallium-xlib)
1440 # GLX requires OpenGL
1441 if test "x$enable_opengl" = xno; then
1442 AC_MSG_ERROR([GLX cannot be built without OpenGL])
1445 # Check individual dependencies
1446 case "x$enable_glx" in
1448 if test "x$enable_dri" = xno; then
1449 AC_MSG_ERROR([DRI-based GLX requires DRI to be enabled])
1453 if test "x$enable_dri" = xyes; then
1454 AC_MSG_ERROR([Xlib-based GLX cannot be built with DRI enabled])
1458 if test "x$enable_dri" = xyes; then
1459 AC_MSG_ERROR([Xlib-based (Gallium) GLX cannot be built with DRI enabled])
1461 if test -z "$with_gallium_drivers"; then
1462 AC_MSG_ERROR([Xlib-based (Gallium) GLX cannot be built without Gallium enabled])
1470 AC_MSG_ERROR([Illegal value for --enable-glx: $enable_glx])
1474 AM_CONDITIONAL(HAVE_GLX, test "x$enable_glx" != xno)
1475 AM_CONDITIONAL(HAVE_DRI_GLX, test "x$enable_glx" = xdri)
1476 AM_CONDITIONAL(HAVE_XLIB_GLX, test "x$enable_glx" = xxlib)
1477 AM_CONDITIONAL(HAVE_GALLIUM_XLIB_GLX, test "x$enable_glx" = xgallium-xlib)
1479 DEFAULT_GL_LIB_NAME=GL
1482 dnl Libglvnd configuration
1484 AC_ARG_ENABLE([libglvnd],
1485 [AS_HELP_STRING([--enable-libglvnd],
1486 [Build GLX and EGL for libglvnd @<:@default=disabled@:>@])],
1487 [enable_libglvnd="$enableval"],
1488 [enable_libglvnd=no])
1489 AM_CONDITIONAL(USE_LIBGLVND, test "x$enable_libglvnd" = xyes)
1491 if test "x$enable_libglvnd" = xyes ; then
1492 case "x$enable_glx" in
1493 xxlib | xgallium-xlib )
1494 AC_MSG_ERROR([cannot build libgvnd when Xlib-GLX or Gallium-Xlib-GLX is enabled])
1498 PKG_CHECK_MODULES([GLVND], libglvnd >= 0.2.0)
1499 LIBGLVND_DATADIR=`$PKG_CONFIG --variable=datadir libglvnd`
1500 AC_SUBST([LIBGLVND_DATADIR])
1502 DEFINES="${DEFINES} -DUSE_LIBGLVND=1"
1503 DEFAULT_GL_LIB_NAME=GLX_mesa
1505 if test "x$enable_glx" = xno -a "x$enable_egl" = xno; then
1506 AC_MSG_ERROR([cannot build libglvnd without GLX or EGL])
1510 AC_ARG_WITH([gl-lib-name],
1511 [AS_HELP_STRING([--with-gl-lib-name@<:@=NAME@:>@],
1512 [specify GL library name @<:@default=GL@:>@])],
1514 [GL_LIB="$DEFAULT_GL_LIB_NAME"])
1515 AC_ARG_WITH([osmesa-lib-name],
1516 [AS_HELP_STRING([--with-osmesa-lib-name@<:@=NAME@:>@],
1517 [specify OSMesa library name @<:@default=OSMesa@:>@])],
1518 [OSMESA_LIB=$withval],
1519 [OSMESA_LIB=OSMesa])
1520 AS_IF([test "x$GL_LIB" = xyes], [GL_LIB="$DEFAULT_GL_LIB_NAME"])
1521 AS_IF([test "x$OSMESA_LIB" = xyes], [OSMESA_LIB=OSMesa])
1524 dnl Mangled Mesa support
1526 AC_ARG_ENABLE([mangling],
1527 [AS_HELP_STRING([--enable-mangling],
1528 [enable mangled symbols and library name @<:@default=disabled@:>@])],
1529 [enable_mangling="${enableval}"],
1530 [enable_mangling=no]
1532 if test "x${enable_mangling}" = "xyes" ; then
1533 DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
1534 GL_LIB="Mangled${GL_LIB}"
1535 OSMESA_LIB="Mangled${OSMESA_LIB}"
1538 AC_SUBST([OSMESA_LIB])
1541 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
1542 [have_libdrm=yes], [have_libdrm=no])
1543 if test "x$have_libdrm" = xyes; then
1544 DEFINES="$DEFINES -DHAVE_LIBDRM"
1548 if test "x$have_libdrm" != xyes; then
1549 AC_MSG_ERROR([$1 requires libdrm >= $LIBDRM_REQUIRED])
1554 # Select which platform-dependent DRI code gets built
1557 dri_platform='apple' ;;
1559 dri_platform='windows' ;;
1561 dri_platform='none' ;;
1563 dri_platform='drm' ;;
1566 if test "x$enable_dri" = xyes -a "x$dri_platform" = xdrm -a "x$have_libdrm" = xyes; then
1567 have_drisw_kms='yes'
1570 AM_CONDITIONAL(HAVE_DRICOMMON, test "x$enable_dri" = xyes )
1571 AM_CONDITIONAL(HAVE_DRISW, test "x$enable_dri" = xyes )
1572 AM_CONDITIONAL(HAVE_DRISW_KMS, test "x$have_drisw_kms" = xyes )
1573 AM_CONDITIONAL(HAVE_DRI2, test "x$enable_dri" = xyes -a "x$dri_platform" = xdrm -a "x$have_libdrm" = xyes )
1574 AM_CONDITIONAL(HAVE_DRI3, test "x$enable_dri3" = xyes -a "x$dri_platform" = xdrm -a "x$have_libdrm" = xyes )
1575 AM_CONDITIONAL(HAVE_APPLEDRI, test "x$enable_dri" = xyes -a "x$dri_platform" = xapple )
1576 AM_CONDITIONAL(HAVE_LMSENSORS, test "x$enable_lmsensors" = xyes )
1577 AM_CONDITIONAL(HAVE_GALLIUM_EXTRA_HUD, test "x$enable_gallium_extra_hud" = xyes )
1578 AM_CONDITIONAL(HAVE_WINDOWSDRI, test "x$enable_dri" = xyes -a "x$dri_platform" = xwindows )
1580 AC_ARG_ENABLE([shared-glapi],
1581 [AS_HELP_STRING([--enable-shared-glapi],
1582 [Enable shared glapi for OpenGL @<:@default=enabled@:>@])],
1583 [enable_shared_glapi="$enableval"],
1584 [enable_shared_glapi=yes])
1586 case "x$enable_opengl$enable_gles1$enable_gles2" in
1588 if test "x$enable_shared_glapi" = xno; then
1589 AC_MSG_ERROR([shared GLAPI required when building two or more of
1590 the following APIs - opengl, gles1 gles2])
1595 AM_CONDITIONAL(HAVE_SHARED_GLAPI, test "x$enable_shared_glapi" = xyes)
1597 # Build the pipe-drivers as separate libraries/modules.
1598 # Do not touch this unless you know what you are doing.
1599 # XXX: Expose via configure option ?
1600 enable_shared_pipe_drivers=no
1603 dnl Driver specific build directories
1606 if test "x$enable_gallium_osmesa" = xyes; then
1607 if ! echo "$with_gallium_drivers" | grep -q 'swrast'; then
1608 AC_MSG_ERROR([gallium_osmesa requires the gallium swrast driver])
1610 if test "x$enable_osmesa" = xyes; then
1611 AC_MSG_ERROR([Cannot enable both classic and Gallium OSMesa implementations])
1615 require_dri_shared_libs_and_glapi() {
1616 if test "x$enable_static" = xyes; then
1617 AC_MSG_ERROR([$1 cannot be build as static library])
1620 if test "x$enable_dri" != xyes; then
1621 # There is only a single backend which won't be build/used otherwise.
1622 # XXX: Revisit this as the egl/haiku is a thing.
1623 AC_MSG_ERROR([$1 requires --enable-dri])
1626 if test "x$enable_shared_glapi" != xyes; then
1627 AC_MSG_ERROR([$1 requires --enable-shared-glapi])
1631 if test "x$enable_dri" = xyes; then
1632 require_dri_shared_libs_and_glapi "DRI"
1634 # not a hard requirement as swrast does not depend on it
1635 if test "x$have_libdrm" = xyes; then
1636 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
1640 AC_ARG_ENABLE([driglx-direct],
1641 [AS_HELP_STRING([--disable-driglx-direct],
1642 [disable direct rendering in GLX and EGL for DRI \
1643 @<:@default=enabled@:>@])],
1644 [driglx_direct="$enableval"],
1645 [driglx_direct="yes"])
1648 dnl libGL configuration per driver
1650 if test "x$enable_glx" != xno; then
1651 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
1653 case "x$enable_glx" in
1654 xxlib | xgallium-xlib)
1656 dri_modules="x11 xext xcb"
1657 PKG_CHECK_MODULES([XLIBGL], [$dri_modules])
1658 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
1659 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
1660 GL_LIB_DEPS="$XLIBGL_LIBS"
1661 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1662 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm $PTHREAD_LIBS"
1667 # find the DRI deps for libGL
1668 dri_modules="x11 xext xdamage >= $XDAMAGE_REQUIRED xfixes x11-xcb xcb xcb-glx >= $XCBGLX_REQUIRED"
1670 if test x"$driglx_direct" = xyes; then
1671 if test x"$dri_platform" = xdrm ; then
1672 DEFINES="$DEFINES -DGLX_USE_DRM"
1673 require_libdrm "Direct rendering"
1675 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
1676 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED"
1678 if test x"$enable_dri" = xyes; then
1679 dri_modules="$dri_modules xcb-dri2 >= $XCBDRI2_REQUIRED"
1682 if test x"$dri_platform" = xapple ; then
1683 DEFINES="$DEFINES -DGLX_USE_APPLEGL"
1685 if test x"$dri_platform" = xwindows ; then
1686 DEFINES="$DEFINES -DGLX_USE_WINDOWSGL"
1690 # add xf86vidmode if available
1691 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
1692 if test "$HAVE_XF86VIDMODE" = yes ; then
1693 dri_modules="$dri_modules xxf86vm"
1696 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
1697 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
1698 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
1699 GL_LIB_DEPS="$DRIGL_LIBS"
1701 # need DRM libs, $PTHREAD_LIBS, etc.
1702 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1703 GL_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
1707 # This is outside the case (above) so that it is invoked even for non-GLX
1709 AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
1711 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1712 GLESv1_CM_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
1713 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1714 GLESv2_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
1716 AC_SUBST([X11_INCLUDES])
1717 AC_SUBST([GL_LIB_DEPS])
1718 AC_SUBST([GL_PC_REQ_PRIV])
1719 AC_SUBST([GL_PC_LIB_PRIV])
1720 AC_SUBST([GL_PC_CFLAGS])
1721 AC_SUBST([DRI_PC_REQ_PRIV])
1722 AC_SUBST([GLESv1_CM_LIB_DEPS])
1723 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
1724 AC_SUBST([GLESv2_LIB_DEPS])
1725 AC_SUBST([GLESv2_PC_LIB_PRIV])
1727 AC_SUBST([HAVE_XF86VIDMODE])
1732 case "x$enable_glx" in
1733 xxlib | xgallium-xlib)
1734 DEFINES="$DEFINES -DUSE_XSHM"
1737 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1738 if test "x$driglx_direct" = xyes; then
1739 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1748 AC_ARG_ENABLE([glx-tls],
1749 [AS_HELP_STRING([--enable-glx-tls],
1750 [enable TLS support in GLX @<:@default=enabled@:>@])],
1751 [GLX_USE_TLS="$enableval"],
1753 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
1755 if test "x$GLX_USE_TLS" = xyes; then
1756 DEFINES="$DEFINES -DGLX_USE_TLS"
1759 dnl Read-only text section on x86 hardened platforms
1760 AC_ARG_ENABLE([glx-read-only-text],
1761 [AS_HELP_STRING([--enable-glx-read-only-text],
1762 [Disable writable .text section on x86 (decreases performance) @<:@default=disabled@:>@])],
1763 [enable_glx_read_only_text="$enableval"],
1764 [enable_glx_read_only_text=no])
1765 if test "x$enable_glx_read_only_text" = xyes; then
1766 DEFINES="$DEFINES -DGLX_X86_READONLY_TEXT"
1770 dnl DEPRECATED: EGL Platforms configuration
1772 AC_ARG_WITH([egl-platforms],
1773 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1774 [DEPRECATED: use --with-platforms instead@<:@default=auto@:>@])],
1775 [with_egl_platforms="$withval"],
1776 [with_egl_platforms=auto])
1778 if test "x$with_egl_platforms" = xauto; then
1779 with_egl_platforms="x11,surfaceless"
1780 if test "x$enable_gbm" = xyes; then
1781 with_egl_platforms="$with_egl_platforms,drm"
1784 AC_MSG_WARN([--with-egl-platforms is deprecated. Use --with-platforms instead.])
1788 dnl Platforms configuration
1790 AC_ARG_WITH([platforms],
1791 [AS_HELP_STRING([--with-platforms@<:@=DIRS...@:>@],
1792 [comma delimited native platforms libEGL/Vulkan/other supports, e.g.
1793 "x11,drm,wayland,surfaceless..." @<:@default=auto@:>@])],
1794 [with_platforms="$withval"],
1795 [with_platforms=auto])
1797 # Reuse the autodetection rather than duplicating it.
1798 if test "x$with_platforms" = xauto; then
1799 with_platforms=$with_egl_platforms
1802 # Do per platform setups and checks
1803 platforms=`IFS=', '; echo $with_platforms`
1804 for plat in $platforms; do
1808 PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client >= $WAYLAND_REQUIRED])
1809 PKG_CHECK_MODULES([WAYLAND_SERVER], [wayland-server >= $WAYLAND_REQUIRED])
1810 PKG_CHECK_MODULES([WAYLAND_PROTOCOLS], [wayland-protocols >= $WAYLAND_PROTOCOLS_REQUIRED])
1811 WAYLAND_PROTOCOLS_DATADIR=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`
1813 PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner],
1814 WAYLAND_SCANNER=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner`,
1816 if test "x$WAYLAND_SCANNER" = x; then
1817 AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner], [:])
1820 if test "x$WAYLAND_SCANNER" = "x:"; then
1821 AC_MSG_ERROR([wayland-scanner is needed to compile the wayland platform])
1823 DEFINES="$DEFINES -DHAVE_WAYLAND_PLATFORM -DWL_HIDE_DEPRECATED"
1827 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED xcb-xfixes])
1828 DEFINES="$DEFINES -DHAVE_X11_PLATFORM"
1832 test "x$enable_gbm" = "xno" &&
1833 AC_MSG_ERROR([EGL platform drm needs gbm])
1834 DEFINES="$DEFINES -DHAVE_DRM_PLATFORM"
1838 DEFINES="$DEFINES -DHAVE_SURFACELESS_PLATFORM"
1842 PKG_CHECK_MODULES([ANDROID], [cutils hardware sync])
1843 DEFINES="$DEFINES -DHAVE_ANDROID_PLATFORM"
1847 AC_MSG_ERROR([platform '$plat' does not exist])
1852 wayland|drm|surfaceless)
1853 require_libdrm "Platform $plat"
1857 AC_SUBST([WAYLAND_PROTOCOLS_DATADIR])
1859 if test "x$enable_glx" != xno; then
1860 if ! echo "$platforms" | grep -q 'x11'; then
1861 AC_MSG_ERROR([Building GLX without the x11 platform is not supported])
1865 if test x"$enable_dri3" = xyes; then
1866 DEFINES="$DEFINES -DHAVE_DRI3"
1868 dri3_modules="x11-xcb xcb >= $XCB_REQUIRED xcb-dri3 xcb-xfixes xcb-present xcb-sync xshmfence >= $XSHMFENCE_REQUIRED"
1869 PKG_CHECK_MODULES([XCB_DRI3], [$dri3_modules])
1870 dri3_modifier_modules="xcb-dri3 >= $XCBDRI3_MODIFIERS_REQUIRED xcb-present >= $XCBPRESENT_MODIFIERS_REQUIRED"
1871 PKG_CHECK_MODULES([XCB_DRI3_MODIFIERS], [$dri3_modifier_modules], [have_dri3_modifiers=yes], [have_dri3_modifiers=no])
1873 if test "x$have_dri3_modifiers" == xyes; then
1874 DEFINES="$DEFINES -DHAVE_DRI3_MODIFIERS"
1878 AM_CONDITIONAL(HAVE_PLATFORM_X11, echo "$platforms" | grep -q 'x11')
1879 AM_CONDITIONAL(HAVE_PLATFORM_WAYLAND, echo "$platforms" | grep -q 'wayland')
1880 AM_CONDITIONAL(HAVE_PLATFORM_DRM, echo "$platforms" | grep -q 'drm')
1881 AM_CONDITIONAL(HAVE_PLATFORM_SURFACELESS, echo "$platforms" | grep -q 'surfaceless')
1882 AM_CONDITIONAL(HAVE_PLATFORM_ANDROID, echo "$platforms" | grep -q 'android')
1887 dnl Directory for DRI drivers
1888 AC_ARG_WITH([dri-driverdir],
1889 [AS_HELP_STRING([--with-dri-driverdir=DIR],
1890 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
1891 [DRI_DRIVER_INSTALL_DIR="$withval"],
1892 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
1893 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
1894 dnl Extra search path for DRI drivers
1895 AC_ARG_WITH([dri-searchpath],
1896 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
1897 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
1898 [DRI_DRIVER_SEARCH_DIR="$withval"],
1899 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
1900 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
1901 dnl Which drivers to build - default is chosen by platform
1902 AC_ARG_WITH([dri-drivers],
1903 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
1904 [comma delimited classic DRI drivers list, e.g.
1905 "i915,i965,nouveau,radeon,r200,swrast" @<:@default=auto@:>@])],
1906 [with_dri_drivers="$withval"],
1907 [with_dri_drivers=auto])
1909 if test "x$with_dri_drivers" = xauto; then
1910 if test "x$enable_opengl" = xyes -a "x$enable_dri" = xyes; then
1911 with_dri_drivers="yes"
1913 with_dri_drivers="no"
1916 if test "x$with_dri_drivers" = xno; then
1921 PKG_CHECK_MODULES([EXPAT], [expat],,
1922 [PKG_CHECK_MODULES([EXPAT], [expat21])]
1925 dnl If $with_dri_drivers is yes, drivers will be added through
1926 dnl platform checks. Set DEFINES and LIB_DEPS
1927 if test "x$enable_dri" = xyes; then
1928 # Platform specific settings and drivers to build
1933 # Build only the drivers for cards that exist on PowerPC/sparc
1934 if test "x$with_dri_drivers" = "xyes"; then
1935 with_dri_drivers="r200 radeon swrast"
1941 if test "x$with_dri_drivers" = "xyes"; then
1942 with_dri_drivers="swrast"
1946 DEFINES="$DEFINES -DBUILDING_MESA"
1947 if test "x$with_dri_drivers" = "xyes"; then
1948 with_dri_drivers="swrast"
1954 if test "x$with_dri_drivers" = "xyes"; then
1955 with_dri_drivers="i915 i965 nouveau r200 radeon swrast"
1958 # put all the necessary libs together
1959 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1962 AC_SUBST([DRI_LIB_DEPS])
1965 dnl Duplicates in DRI_DIRS are removed by sorting it at the end of this block
1966 if test -n "$with_dri_drivers"; then
1967 if test "x$enable_opengl" != xyes; then
1968 AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1971 dri_drivers=`IFS=', '; echo $with_dri_drivers`
1972 for driver in $dri_drivers; do
1973 DRI_DIRS="$DRI_DIRS $driver"
1976 require_libdrm "i915"
1978 PKG_CHECK_MODULES([I915], [libdrm >= $LIBDRM_INTEL_REQUIRED libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1981 require_libdrm "i965"
1985 require_libdrm "nouveau"
1986 HAVE_NOUVEAU_DRI=yes
1987 PKG_CHECK_MODULES([NVVIEUX], [libdrm >= $LIBDRM_NVVIEUX_REQUIRED libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED])
1990 require_libdrm "radeon"
1991 HAVE_RADEON_DRI=yes;
1992 PKG_CHECK_MODULES([RADEON], [libdrm >= $LIBDRM_RADEON_REQUIRED libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1995 require_libdrm "r200"
1997 PKG_CHECK_MODULES([RADEON], [libdrm >= $LIBDRM_RADEON_REQUIRED libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2003 AC_MSG_ERROR([classic DRI driver '$driver' does not exist])
2007 DRI_DIRS=`echo $DRI_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2013 dnl Deprecated: kept for backwards compatibility
2015 AC_ARG_ENABLE([gallium-llvm],
2016 [AS_HELP_STRING([--enable-gallium-llvm],
2017 [DEPRECATED: use --enable-llvm instead])],
2018 [enable_gallium_llvm="$enableval"],
2019 [enable_gallium_llvm=auto])
2021 if test "x$enable_gallium_llvm" != xauto; then
2022 AC_MSG_WARN([The --enable-gallium-llvm option has been deprecated. Use --enable-llvm instead.])
2023 enable_llvm=$enable_gallium_llvm
2029 AC_ARG_ENABLE([llvm],
2030 [AS_HELP_STRING([--enable-llvm],
2031 [build with LLVM support @<:@default=enabled on x86/x86_64@:>@])],
2032 [enable_llvm="$enableval"],
2035 if test "x$enable_llvm" = xauto -a "x$FOUND_LLVM" = xyes; then
2036 if test "x$FOUND_LLVM" = xyes; then
2038 i*86|x86_64|amd64) enable_llvm=yes;;
2046 if test "x$enable_llvm" = xyes -a "x$FOUND_LLVM" = xno; then
2047 AC_MSG_ERROR([--enable-llvm selected but llvm-config is not found])
2051 # Vulkan driver configuration
2054 AC_ARG_WITH([vulkan-drivers],
2055 [AS_HELP_STRING([--with-vulkan-drivers@<:@=DIRS...@:>@],
2056 [comma delimited Vulkan drivers list, e.g.
2058 @<:@default=no@:>@])],
2059 [with_vulkan_drivers="$withval"],
2060 [with_vulkan_drivers="no"])
2062 # Doing '--without-vulkan-drivers' will set this variable to 'no'. Clear it
2063 # here so that the script doesn't choke on an unknown driver name later.
2064 case "x$with_vulkan_drivers" in
2065 xyes) with_vulkan_drivers="$VULKAN_DRIVERS_DEFAULT" ;;
2066 xno) with_vulkan_drivers='' ;;
2069 AC_ARG_WITH([vulkan-icddir],
2070 [AS_HELP_STRING([--with-vulkan-icddir=DIR],
2071 [directory for the Vulkan driver icd files @<:@${datarootdir}/vulkan/icd.d@:>@])],
2072 [VULKAN_ICD_INSTALL_DIR="$withval"],
2073 [VULKAN_ICD_INSTALL_DIR='${datarootdir}/vulkan/icd.d'])
2074 AC_SUBST([VULKAN_ICD_INSTALL_DIR])
2076 require_x11_dri3() {
2077 if echo "$platforms" | grep -q 'x11'; then
2078 if test "x$enable_dri3" != xyes; then
2079 AC_MSG_ERROR([$1 Vulkan driver requires DRI3 when built with X11])
2084 if test -n "$with_vulkan_drivers"; then
2085 if test "x$ac_cv_func_dl_iterate_phdr" = xno; then
2086 AC_MSG_ERROR([Vulkan drivers require the dl_iterate_phdr function])
2089 VULKAN_DRIVERS=`IFS=', '; echo $with_vulkan_drivers`
2090 for driver in $VULKAN_DRIVERS; do
2093 require_libdrm "ANV"
2094 require_x11_dri3 "ANV"
2095 HAVE_INTEL_VULKAN=yes
2098 require_libdrm "radv"
2099 PKG_CHECK_MODULES([AMDGPU], [libdrm >= $LIBDRM_AMDGPU_REQUIRED libdrm_amdgpu >= $LIBDRM_AMDGPU_REQUIRED])
2100 radeon_llvm_check $LLVM_REQUIRED_RADV "radv"
2101 require_x11_dri3 "radv"
2102 if test "x$acv_mako_found" = xno; then
2103 AC_MSG_ERROR([Python mako module v$PYTHON_MAKO_REQUIRED or higher not found])
2105 HAVE_RADEON_VULKAN=yes
2108 AC_MSG_ERROR([Vulkan driver '$driver' does not exist])
2112 VULKAN_DRIVERS=`echo $VULKAN_DRIVERS|tr " " "\n"|sort -u|tr "\n" " "`
2116 DEFINES="$DEFINES -DENABLE_SHADER_CACHE"
2117 AM_CONDITIONAL(NEED_MEGADRIVER, test -n "$DRI_DIRS")
2118 AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_glx" = xxlib -o \
2119 "x$enable_osmesa" = xyes -o \
2123 dnl OSMesa configuration
2126 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
2127 AC_ARG_WITH([osmesa-bits],
2128 [AS_HELP_STRING([--with-osmesa-bits=BITS],
2129 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
2130 [osmesa_bits="$withval"],
2132 if test "x$osmesa_bits" != x8; then
2133 if test "x$enable_dri" = xyes -o "x$enable_glx" != xno; then
2134 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
2138 case "x$osmesa_bits" in
2140 OSMESA_LIB="${OSMESA_LIB}"
2143 OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
2144 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
2147 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
2151 if test "x$enable_osmesa" = xyes -o "x$enable_gallium_osmesa" = xyes; then
2152 # only link libraries with osmesa if shared
2153 if test "$enable_static" = no; then
2154 OSMESA_LIB_DEPS="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
2158 OSMESA_PC_LIB_PRIV="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
2161 AC_SUBST([OSMESA_LIB_DEPS])
2162 AC_SUBST([OSMESA_PC_REQ])
2163 AC_SUBST([OSMESA_PC_LIB_PRIV])
2166 dnl gbm configuration
2168 if test "x$enable_gbm" = xyes; then
2169 require_dri_shared_libs_and_glapi "gbm"
2171 AM_CONDITIONAL(HAVE_GBM, test "x$enable_gbm" = xyes)
2172 # FINISHME: GBM has a number of dependencies which we should add below
2174 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
2175 AC_SUBST([GBM_PC_REQ_PRIV])
2176 AC_SUBST([GBM_PC_LIB_PRIV])
2179 dnl EGL configuration
2182 if test "x$enable_egl" = xyes; then
2183 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS $PTHREAD_LIBS"
2185 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
2187 require_dri_shared_libs_and_glapi "egl"
2189 AM_CONDITIONAL(HAVE_EGL, test "x$enable_egl" = xyes)
2190 AC_SUBST([EGL_LIB_DEPS])
2195 dnl XA configuration
2197 if test "x$enable_xa" = xyes; then
2198 if test "x$with_gallium_drivers" = xswrast; then
2200 Building xa requires at least one non swrast gallium driver.
2201 If you are looking to use libxatracker.so with the VMware driver,
2202 make sure to include svga in the gallium drivers list, apart from
2204 Example: ./configure --enable-xa --with-gallium-drivers=svga...])
2206 gallium_st="$gallium_st xa"
2208 AM_CONDITIONAL(HAVE_ST_XA, test "x$enable_xa" = xyes)
2210 if echo $platforms | grep -q "x11"; then
2211 have_xvmc_platform=yes
2213 have_xvmc_platform=no
2216 if echo $platforms | grep -q "x11"; then
2217 have_vdpau_platform=yes
2219 have_vdpau_platform=no
2222 if echo $platforms | grep -q "x11\|drm"; then
2223 have_omx_platform=yes
2225 have_omx_platform=no
2228 if echo $platforms | grep -q "x11\|drm\|wayland"; then
2229 have_va_platform=yes
2235 dnl Gallium G3DVL configuration
2237 if test -n "$with_gallium_drivers" -a "x$with_gallium_drivers" != xswrast; then
2238 if test "x$enable_xvmc" = xauto -a "x$have_xvmc_platform" = xyes; then
2239 PKG_CHECK_EXISTS([xvmc >= $XVMC_REQUIRED], [enable_xvmc=yes], [enable_xvmc=no])
2242 if test "x$enable_vdpau" = xauto -a "x$have_vdpau_platform" = xyes; then
2243 PKG_CHECK_EXISTS([vdpau >= $VDPAU_REQUIRED], [enable_vdpau=yes], [enable_vdpau=no])
2246 if test "x$enable_omx_bellagio" = xauto -a "x$have_omx_platform" = xyes; then
2247 PKG_CHECK_EXISTS([libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED], [enable_omx_bellagio=yes], [enable_omx_bellagio=no])
2250 if test "x$enable_omx_tizonia" = xauto -a "x$have_omx_platform" = xyes; then
2251 PKG_CHECK_EXISTS([libtizonia >= $LIBOMXIL_TIZONIA_REQUIRED], [enable_omx_tizonia=yes], [enable_omx_tizonia=no])
2254 if test "x$enable_va" = xauto -a "x$have_va_platform" = xyes; then
2255 PKG_CHECK_EXISTS([libva >= $LIBVA_REQUIRED], [enable_va=yes], [enable_va=no])
2259 if test "x$enable_dri" = xyes -o \
2260 "x$enable_xvmc" = xyes -o \
2261 "x$enable_vdpau" = xyes -o \
2262 "x$enable_omx_bellagio" = xyes -o \
2263 "x$enable_omx_tizonia" = xyes -o \
2264 "x$enable_va" = xyes; then
2267 AM_CONDITIONAL(NEED_GALLIUM_VL, test "x$need_gallium_vl" = xyes)
2269 if test "x$enable_xvmc" = xyes -o \
2270 "x$enable_vdpau" = xyes -o \
2271 "x$enable_omx_bellagio" = xyes -o \
2272 "x$enable_omx_tizonia" = xyes -o \
2273 "x$enable_va" = xyes; then
2274 if echo $platforms | grep -q "x11"; then
2275 PKG_CHECK_MODULES([VL], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
2277 need_gallium_vl_winsys=yes
2279 AM_CONDITIONAL(NEED_GALLIUM_VL_WINSYS, test "x$need_gallium_vl_winsys" = xyes)
2281 if test "x$enable_xvmc" = xyes; then
2282 if test "x$have_xvmc_platform" != xyes; then
2283 AC_MSG_ERROR([XVMC requires the x11 platforms])
2285 PKG_CHECK_MODULES([XVMC], [xvmc >= $XVMC_REQUIRED])
2286 gallium_st="$gallium_st xvmc"
2288 AM_CONDITIONAL(HAVE_ST_XVMC, test "x$enable_xvmc" = xyes)
2290 if test "x$enable_vdpau" = xyes; then
2291 if test "x$have_vdpau_platform" != xyes; then
2292 AC_MSG_ERROR([VDPAU requires the x11 platforms])
2294 PKG_CHECK_MODULES([VDPAU], [vdpau >= $VDPAU_REQUIRED])
2295 gallium_st="$gallium_st vdpau"
2296 DEFINES="$DEFINES -DHAVE_ST_VDPAU"
2298 AM_CONDITIONAL(HAVE_ST_VDPAU, test "x$enable_vdpau" = xyes)
2300 if test "x$enable_omx_bellagio" = xyes; then
2301 if test "x$have_omx_platform" != xyes; then
2302 AC_MSG_ERROR([OMX requires at least one of the x11 or drm platforms])
2304 PKG_CHECK_MODULES([OMX_BELLAGIO], [libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED])
2305 gallium_st="$gallium_st omx_bellagio"
2306 AC_DEFINE([ENABLE_ST_OMX_BELLAGIO], 1, [Use Bellagio for OMX IL])
2308 AC_DEFINE([ENABLE_ST_OMX_BELLAGIO], 0)
2310 AM_CONDITIONAL(HAVE_ST_OMX_BELLAGIO, test "x$enable_omx_bellagio" = xyes)
2312 if test "x$enable_omx_tizonia" = xyes; then
2313 if test "x$have_omx_platform" != xyes; then
2314 AC_MSG_ERROR([OMX requires at least one of the x11 or drm platforms])
2316 PKG_CHECK_MODULES([OMX_TIZONIA],
2317 [libtizonia >= $LIBOMXIL_TIZONIA_REQUIRED
2318 tizilheaders >= $LIBOMXIL_TIZONIA_REQUIRED
2319 libtizplatform >= $LIBOMXIL_TIZONIA_REQUIRED])
2320 gallium_st="$gallium_st omx_tizonia"
2321 AC_DEFINE([ENABLE_ST_OMX_TIZONIA], 1, [Use Tizoina for OMX IL])
2323 AC_DEFINE([ENABLE_ST_OMX_TIZONIA], 0)
2325 AM_CONDITIONAL(HAVE_ST_OMX_TIZONIA, test "x$enable_omx_tizonia" = xyes)
2327 if test "x$enable_va" = xyes; then
2328 if test "x$have_va_platform" != xyes; then
2329 AC_MSG_ERROR([VA requires at least one of the x11 drm or wayland platforms])
2331 PKG_CHECK_MODULES([VA], [libva >= $LIBVA_REQUIRED])
2332 gallium_st="$gallium_st va"
2334 AM_CONDITIONAL(HAVE_ST_VA, test "x$enable_va" = xyes)
2337 dnl Nine Direct3D9 configuration
2339 if test "x$enable_nine" = xyes; then
2340 if ! echo "$with_gallium_drivers" | grep -q 'swrast'; then
2341 AC_MSG_ERROR([nine requires the gallium swrast driver])
2343 if test "x$with_gallium_drivers" = xswrast; then
2344 AC_MSG_ERROR([nine requires at least one non-swrast gallium driver])
2346 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6; then
2347 AC_MSG_ERROR([gcc >= 4.6 is required to build nine])
2350 if test "x$enable_dri3" = xno; then
2351 AC_MSG_WARN([using nine together with wine requires DRI3 enabled system])
2354 gallium_st="$gallium_st nine"
2356 AM_CONDITIONAL(HAVE_ST_NINE, test "x$enable_nine" = xyes)
2359 dnl OpenCL configuration
2362 AC_ARG_WITH([clang-libdir],
2363 [AS_HELP_STRING([--with-clang-libdir],
2364 [Path to Clang libraries @<:@default=llvm-config --libdir@:>@])],
2365 [CLANG_LIBDIR="$withval"],
2368 PKG_CHECK_EXISTS([libclc], [have_libclc=yes], [have_libclc=no])
2370 if test "x$enable_opencl" = xyes; then
2371 if test -z "$with_gallium_drivers"; then
2372 AC_MSG_ERROR([cannot enable OpenCL without Gallium])
2375 if test "x$HAVE_CXX11" != "xyes"; then
2376 AC_MSG_ERROR([clover requires c++11 support])
2379 if test "x$have_libclc" = xno; then
2380 AC_MSG_ERROR([pkg-config cannot find libclc.pc which is required to build clover.
2381 Make sure the directory containing libclc.pc is specified in your
2382 PKG_CONFIG_PATH environment variable.
2383 By default libclc.pc is installed to /usr/local/share/pkgconfig/])
2385 LIBCLC_INCLUDEDIR=`$PKG_CONFIG --variable=includedir libclc`
2386 LIBCLC_LIBEXECDIR=`$PKG_CONFIG --variable=libexecdir libclc`
2387 AC_SUBST([LIBCLC_INCLUDEDIR])
2388 AC_SUBST([LIBCLC_LIBEXECDIR])
2391 gallium_st="$gallium_st clover"
2393 if test "x$enable_opencl_icd" = xyes; then
2394 OPENCL_LIBNAME="MesaOpenCL"
2396 OPENCL_LIBNAME="OpenCL"
2399 if test "x$have_libelf" != xyes; then
2400 AC_MSG_ERROR([Clover requires libelf])
2403 if test "x${ac_cv_cxx_compiler_gnu}" = xyes; then
2405 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
2406 #if !defined(__VEC__) || !defined(__ALTIVEC__)
2407 #error "AltiVec not enabled"
2409 ])], altivec_enabled=yes)
2411 if test "$altivec_enabled" = yes; then
2412 CLOVER_STD_OVERRIDE="-std=gnu++11"
2414 AC_SUBST([CLOVER_STD_OVERRIDE])
2417 llvm_require_version $LLVM_REQUIRED_OPENCL "opencl"
2419 llvm_add_default_components "opencl"
2420 llvm_add_component "all-targets" "opencl"
2421 llvm_add_component "coverage" "opencl"
2422 llvm_add_component "linker" "opencl"
2423 llvm_add_component "instrumentation" "opencl"
2424 llvm_add_component "ipo" "opencl"
2425 llvm_add_component "irreader" "opencl"
2426 llvm_add_component "lto" "opencl"
2427 llvm_add_component "option" "opencl"
2428 llvm_add_component "objcarcopts" "opencl"
2429 llvm_add_component "profiledata" "opencl"
2430 llvm_add_optional_component "coroutines" "opencl"
2432 dnl Check for Clang internal headers
2433 if test -z "$CLANG_LIBDIR"; then
2434 CLANG_LIBDIR=${LLVM_LIBDIR}
2436 CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION}
2437 AS_IF([test ! -f "$CLANG_RESOURCE_DIR/include/stddef.h"],
2438 [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.])])
2440 AM_CONDITIONAL(HAVE_CLOVER, test "x$enable_opencl" = xyes)
2441 AM_CONDITIONAL(HAVE_CLOVER_ICD, test "x$enable_opencl_icd" = xyes)
2442 AC_SUBST([OPENCL_LIBNAME])
2443 AC_SUBST([CLANG_RESOURCE_DIR])
2446 dnl Gallium configuration
2448 AM_CONDITIONAL(HAVE_GALLIUM, test -n "$with_gallium_drivers")
2450 # libEGL wants to default to the first platform specified in
2451 # ./configure. parse that here.
2452 if test "x$platforms" != "x"; then
2453 FIRST_PLATFORM_CAPS=`echo $platforms | sed 's| .*||' | tr '[[a-z]]' '[[A-Z]]'`
2454 EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
2456 EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
2459 AC_SUBST([EGL_NATIVE_PLATFORM])
2460 AC_SUBST([EGL_CFLAGS])
2462 # If we don't have the X11 platform, set this define so we don't try to include
2464 if ! echo "$platforms" | grep -q 'x11'; then
2465 DEFINES="$DEFINES -DMESA_EGL_NO_X11_HEADERS"
2466 GL_PC_CFLAGS="$GL_PC_CFLAGS -DMESA_EGL_NO_X11_HEADERS"
2469 dnl Directory for XVMC libs
2470 AC_ARG_WITH([xvmc-libdir],
2471 [AS_HELP_STRING([--with-xvmc-libdir=DIR],
2472 [directory for the XVMC libraries @<:@default=${libdir}@:>@])],
2473 [XVMC_LIB_INSTALL_DIR="$withval"],
2474 [XVMC_LIB_INSTALL_DIR='${libdir}'])
2475 AC_SUBST([XVMC_LIB_INSTALL_DIR])
2480 AM_CONDITIONAL(HAVE_GALLIUM_TESTS, test "x$enable_gallium_tests" = xyes)
2482 dnl Directory for VDPAU libs
2483 AC_ARG_WITH([vdpau-libdir],
2484 [AS_HELP_STRING([--with-vdpau-libdir=DIR],
2485 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
2486 [VDPAU_LIB_INSTALL_DIR="$withval"],
2487 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
2488 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
2490 dnl Directory for OMX_BELLAGIO libs
2492 AC_ARG_WITH([omx-bellagio-libdir],
2493 [AS_HELP_STRING([--with-omx-bellagio-libdir=DIR],
2494 [directory for the OMX_BELLAGIO libraries])],
2495 [OMX_BELLAGIO_LIB_INSTALL_DIR="$withval"],
2496 [OMX_BELLAGIO_LIB_INSTALL_DIR=`$PKG_CONFIG --exists libomxil-bellagio && \
2497 $PKG_CONFIG --define-variable=libdir=\$libdir --variable=pluginsdir libomxil-bellagio`])
2498 AC_SUBST([OMX_BELLAGIO_LIB_INSTALL_DIR])
2500 dnl Directory for OMX_TIZONIA libs
2502 AC_ARG_WITH([omx-tizonia-libdir],
2503 [AS_HELP_STRING([--with-omx-tizonia-libdir=DIR],
2504 [directory for the OMX_TIZONIA libraries])],
2505 [OMX_TIZONIA_LIB_INSTALL_DIR="$withval"],
2506 [OMX_TIZONIA_LIB_INSTALL_DIR=`$PKG_CONFIG --define-variable=libdir=\$libdir --variable=pluginsdir libtizcore`])
2507 AC_SUBST([OMX_TIZONIA_LIB_INSTALL_DIR])
2509 dnl Directory for VA libs
2511 AC_ARG_WITH([va-libdir],
2512 [AS_HELP_STRING([--with-va-libdir=DIR],
2513 [directory for the VA libraries @<:@${libdir}/dri@:>@])],
2514 [VA_LIB_INSTALL_DIR="$withval"],
2515 [VA_LIB_INSTALL_DIR="${libdir}/dri"])
2516 AC_SUBST([VA_LIB_INSTALL_DIR])
2518 AC_ARG_WITH([d3d-libdir],
2519 [AS_HELP_STRING([--with-d3d-libdir=DIR],
2520 [directory for the D3D modules @<:@${libdir}/d3d@:>@])],
2521 [D3D_DRIVER_INSTALL_DIR="$withval"],
2522 [D3D_DRIVER_INSTALL_DIR="${libdir}/d3d"])
2523 AC_SUBST([D3D_DRIVER_INSTALL_DIR])
2525 dnl Architectures to build SWR library for
2527 AC_ARG_WITH([swr-archs],
2528 [AS_HELP_STRING([--with-swr-archs@<:@=DIRS...@:>@],
2529 [comma delimited swr architectures list, e.g.
2530 "avx,avx2,knl,skx" @<:@default="avx,avx2"@:>@])],
2531 [with_swr_archs="$withval"],
2532 [with_swr_archs="avx,avx2"])
2535 dnl r300 doesn't strictly require LLVM, but for performance reasons we
2536 dnl highly recommend LLVM usage. So require it at least on x86 and x86_64
2539 r300_require_llvm() {
2540 case "$host" in *gnux32) return;; esac
2542 i*86|x86_64|amd64) require_llvm $1
2548 dnl DRM is needed by X, Wayland, and offscreen rendering.
2549 dnl Surfaceless is an alternative for the last one.
2551 require_basic_egl() {
2552 case "$with_platforms" in
2553 *drm*|*surfaceless*|*android*)
2556 AC_MSG_ERROR([$1 requires one of these:
2557 1) --with-platforms=drm (X, Wayland, offscreen rendering based on DRM)
2558 2) --with-platforms=surfaceless (offscreen only)
2559 3) --with-platforms=android (Android only)
2560 Recommended options: drm,x11])
2565 swr_require_cxx_feature_flags() {
2567 preprocessor_test="$2"
2571 AC_MSG_CHECKING([whether $CXX supports $feature_name])
2573 save_CXXFLAGS="$CXXFLAGS"
2577 for opts in $option_list
2580 CXXFLAGS="$opts $save_CXXFLAGS"
2583 [ #if !($preprocessor_test)
2592 CXXFLAGS="$save_CXXFLAGS"
2594 if test $found -eq 1; then
2595 AC_MSG_RESULT([$opts])
2596 eval "$output_var=\$opts"
2600 AC_MSG_ERROR([swr requires $feature_name support])
2604 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
2605 if test -n "$with_gallium_drivers"; then
2606 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
2607 for driver in $gallium_drivers; do
2610 HAVE_GALLIUM_SVGA=yes
2611 require_libdrm "svga"
2614 HAVE_GALLIUM_I915=yes
2615 PKG_CHECK_MODULES([I915], [libdrm >= $LIBDRM_INTEL_REQUIRED libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
2616 require_libdrm "Gallium i915"
2619 HAVE_GALLIUM_R300=yes
2620 PKG_CHECK_MODULES([RADEON], [libdrm >= $LIBDRM_RADEON_REQUIRED libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2621 require_libdrm "r300"
2622 r300_require_llvm "r300"
2625 HAVE_GALLIUM_R600=yes
2626 PKG_CHECK_MODULES([RADEON], [libdrm >= $LIBDRM_RADEON_REQUIRED libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2627 require_libdrm "r600"
2628 if test "x$enable_llvm" = xyes; then
2629 radeon_llvm_check $LLVM_REQUIRED_R600 "r600"
2631 llvm_add_component "asmparser" "r600"
2632 llvm_add_component "bitreader" "r600"
2636 HAVE_GALLIUM_RADEONSI=yes
2637 PKG_CHECK_MODULES([RADEON], [libdrm >= $LIBDRM_RADEON_REQUIRED libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2638 PKG_CHECK_MODULES([AMDGPU], [libdrm >= $LIBDRM_AMDGPU_REQUIRED libdrm_amdgpu >= $LIBDRM_AMDGPU_REQUIRED])
2639 require_libdrm "radeonsi"
2640 radeon_llvm_check $LLVM_REQUIRED_RADEONSI "radeonsi"
2641 if test "x$enable_egl" = xyes; then
2642 require_basic_egl "radeonsi"
2646 HAVE_GALLIUM_NOUVEAU=yes
2647 PKG_CHECK_MODULES([NOUVEAU], [libdrm >= $LIBDRM_NOUVEAU_REQUIRED libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
2648 require_libdrm "nouveau"
2651 HAVE_GALLIUM_FREEDRENO=yes
2652 PKG_CHECK_MODULES([FREEDRENO], [libdrm >= $LIBDRM_FREEDRENO_REQUIRED libdrm_freedreno >= $LIBDRM_FREEDRENO_REQUIRED])
2653 require_libdrm "freedreno"
2656 HAVE_GALLIUM_ETNAVIV=yes
2657 PKG_CHECK_MODULES([ETNAVIV], [libdrm >= $LIBDRM_ETNAVIV_REQUIRED libdrm_etnaviv >= $LIBDRM_ETNAVIV_REQUIRED])
2658 require_libdrm "etnaviv"
2661 HAVE_GALLIUM_IMX=yes
2664 HAVE_GALLIUM_TEGRA=yes
2665 require_libdrm "tegra"
2668 HAVE_GALLIUM_SOFTPIPE=yes
2669 if test "x$enable_llvm" = xyes; then
2670 HAVE_GALLIUM_LLVMPIPE=yes
2674 llvm_require_version $LLVM_REQUIRED_SWR "swr"
2676 if test "x$HAVE_CXX11" != "xyes"; then
2677 AC_MSG_ERROR([swr requires c++11 support])
2680 swr_require_cxx_feature_flags "AVX" "defined(__AVX__)" \
2681 ",-target-cpu=sandybridge,-mavx,-march=core-avx,-tp=sandybridge" \
2683 AC_SUBST([SWR_AVX_CXXFLAGS])
2685 swr_archs=`IFS=', '; echo $with_swr_archs`
2686 for arch in $swr_archs; do
2692 swr_require_cxx_feature_flags "AVX2" "defined(__AVX2__)" \
2693 ",-target-cpu=haswell,-mavx2 -mfma -mbmi2 -mf16c,-march=core-avx2,-tp=haswell" \
2695 AC_SUBST([SWR_AVX2_CXXFLAGS])
2699 swr_require_cxx_feature_flags "KNL" "defined(__AVX512F__) && defined(__AVX512ER__)" \
2700 ",-target-cpu=mic-knl,-march=knl,-xMIC-AVX512" \
2702 AC_SUBST([SWR_KNL_CXXFLAGS])
2706 swr_require_cxx_feature_flags "SKX" "defined(__AVX512F__) && defined(__AVX512BW__)" \
2707 ",-target-cpu=x86-skylake,-march=skylake-avx512,-xCORE-AVX512" \
2709 AC_SUBST([SWR_SKX_CXXFLAGS])
2713 AC_MSG_ERROR([unknown SWR build architecture '$arch'])
2718 if test "x$HAVE_SWR_AVX" != xyes -a \
2719 "x$HAVE_SWR_AVX2" != xyes -a \
2720 "x$HAVE_SWR_KNL" != xyes -a \
2721 "x$HAVE_SWR_SKX" != xyes; then
2722 AC_MSG_ERROR([swr enabled but no swr architectures selected])
2725 # test if more than one swr arch configured
2726 if test `echo $swr_archs | wc -w` -eq 1; then
2727 HAVE_SWR_BUILTIN=yes
2730 HAVE_GALLIUM_SWR=yes
2733 HAVE_GALLIUM_VC4=yes
2734 PKG_CHECK_MODULES([VC4], [libdrm >= $LIBDRM_VC4_REQUIRED])
2736 PKG_CHECK_MODULES([SIMPENROSE], [simpenrose],
2737 [USE_VC4_SIMULATOR=yes;
2738 DEFINES="$DEFINES -DUSE_VC4_SIMULATOR"],
2739 [USE_VC4_SIMULATOR=no])
2742 HAVE_GALLIUM_V3D=yes
2744 PKG_CHECK_MODULES([V3D_SIMULATOR], [v3dv3],
2745 [USE_V3D_SIMULATOR=yes;
2746 DEFINES="$DEFINES -DUSE_V3D_SIMULATOR"],
2747 [USE_V3D_SIMULATOR=no])
2750 HAVE_GALLIUM_PL111=yes
2753 HAVE_GALLIUM_VIRGL=yes
2754 require_libdrm "virgl"
2755 if test "x$enable_egl" = xyes; then
2756 require_basic_egl "virgl"
2760 AC_MSG_ERROR([Unknown Gallium driver: $driver])
2766 # XXX: Keep in sync with LLVM_REQUIRED_SWR
2767 AM_CONDITIONAL(SWR_INVALID_LLVM_VERSION, test "x$LLVM_VERSION" != x4.0.0 -a \
2768 "x$LLVM_VERSION" != x4.0.1)
2770 if test "x$enable_llvm" = "xyes" -a "$with_gallium_drivers"; then
2771 llvm_require_version $LLVM_REQUIRED_GALLIUM "gallium"
2772 llvm_add_default_components "gallium"
2775 AM_CONDITIONAL(HAVE_SWR_AVX, test "x$HAVE_SWR_AVX" = xyes)
2776 AM_CONDITIONAL(HAVE_SWR_AVX2, test "x$HAVE_SWR_AVX2" = xyes)
2777 AM_CONDITIONAL(HAVE_SWR_KNL, test "x$HAVE_SWR_KNL" = xyes)
2778 AM_CONDITIONAL(HAVE_SWR_SKX, test "x$HAVE_SWR_SKX" = xyes)
2779 AM_CONDITIONAL(HAVE_SWR_BUILTIN, test "x$HAVE_SWR_BUILTIN" = xyes)
2781 dnl We need to validate some needed dependencies for renderonly drivers.
2783 if test "x$HAVE_GALLIUM_ETNAVIV" != xyes -a "x$HAVE_GALLIUM_IMX" = xyes ; then
2784 AC_MSG_ERROR([Building with imx requires etnaviv])
2787 if test "x$HAVE_GALLIUM_VC4" != xyes -a "x$HAVE_GALLIUM_PL111" = xyes ; then
2788 AC_MSG_ERROR([Building with pl111 requires vc4])
2791 if test "x$HAVE_GALLIUM_NOUVEAU" != xyes -a "x$HAVE_GALLIUM_TEGRA" = xyes; then
2792 AC_MSG_ERROR([Building with tegra requires nouveau])
2795 detect_old_buggy_llvm() {
2796 dnl llvm-config may not give the right answer when llvm is a built as a
2797 dnl single shared library, so we must work the library name out for
2799 dnl (See https://llvm.org/bugs/show_bug.cgi?id=6823)
2800 dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
2801 LLVM_SO_NAME=LLVM-`$LLVM_CONFIG --version`
2802 AS_IF([test -f "$LLVM_LIBDIR/lib$LLVM_SO_NAME.$IMP_LIB_EXT"], [llvm_have_one_so=yes])
2804 if test "x$llvm_have_one_so" = xyes; then
2805 dnl LLVM was built using auto*, so there is only one shared object.
2806 LLVM_LIBS="-l$LLVM_SO_NAME"
2808 dnl If LLVM was built with CMake, there will be one shared object per
2810 AS_IF([test ! -f "$LLVM_LIBDIR/libLLVMTarget.$IMP_LIB_EXT"],
2811 [AC_MSG_ERROR([Could not find llvm shared libraries:
2812 Please make sure you have built llvm with the --enable-shared option
2813 and that your llvm libraries are installed in $LLVM_LIBDIR
2814 If you have installed your llvm libraries to a different directory you
2815 can use the --with-llvm-prefix= configure flag to specify this directory.
2816 NOTE: Mesa is attempting to use llvm shared libraries by default.
2817 If you do not want to build with llvm shared libraries and instead want to
2818 use llvm static libraries then add --disable-llvm-shared-libs to your configure
2819 invocation and rebuild.])])
2821 dnl We don't need to update LLVM_LIBS in this case because the LLVM
2822 dnl install uses a shared object for each component and we have
2823 dnl already added all of these objects to LLVM_LIBS.
2828 dnl Set defines and buildtime variables only when using LLVM.
2830 if test "x$enable_llvm" = xyes; then
2831 DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT -DMESA_LLVM_VERSION_PATCH=$LLVM_VERSION_PATCH"
2833 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
2834 LLVM_CFLAGS=$LLVM_CPPFLAGS # CPPFLAGS seem to be sufficient
2835 LLVM_CXXFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cxxflags"`
2837 dnl Set LLVM_LIBS - This is done after the driver configuration so
2838 dnl that drivers can add additional components to LLVM_COMPONENTS.
2839 dnl Previously, gallium drivers were updating LLVM_LIBS directly
2840 dnl by calling llvm-config --libs ${DRIVER_LLVM_COMPONENTS}, but
2841 dnl this was causing the same libraries to be appear multiple times
2844 if test $LLVM_VERSION_MAJOR -ge 4 -o $LLVM_VERSION_MAJOR -eq 3 -a $LLVM_VERSION_MINOR -ge 9; then
2845 if test "x$enable_llvm_shared_libs" = xyes; then
2846 LLVM_LIBS="`$LLVM_CONFIG --link-shared --libs ${LLVM_COMPONENTS}`"
2848 dnl Invoking llvm-config with both -libs and --system-libs produces the
2849 dnl two separate lines - each for the set of libraries.
2850 dnl Call the program twice, effectively folding them into a single line.
2851 LLVM_LIBS="`$LLVM_CONFIG --link-static --libs ${LLVM_COMPONENTS}`"
2852 dnl We need to link to llvm system libs when using static libs
2853 LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --link-static --system-libs`"
2856 LLVM_LIBS="`$LLVM_CONFIG --libs ${LLVM_COMPONENTS}`"
2857 if test "x$enable_llvm_shared_libs" = xyes; then
2858 detect_old_buggy_llvm
2860 AC_MSG_WARN([Building mesa with statically linked LLVM may cause compilation issues])
2861 dnl We need to link to llvm system libs when using static libs
2862 dnl However, only llvm 3.5+ provides --system-libs
2863 if test $LLVM_VERSION_MAJOR -ge 4 -o $LLVM_VERSION_MAJOR -eq 3 -a $LLVM_VERSION_MINOR -ge 5; then
2864 LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --system-libs`"
2869 dnl The gallium-xlib GLX and gallium OSMesa targets directly embed the
2870 dnl swr/llvmpipe driver into the final binary. Adding LLVM_LIBS results in
2871 dnl the LLVM library propagated in the Libs.private of the respective .pc
2872 dnl file which ensures complete dependency information when statically
2874 if test "x$enable_glx" == xgallium-xlib; then
2875 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $LLVM_LIBS"
2877 if test "x$enable_gallium_osmesa" = xyes; then
2878 OSMESA_PC_LIB_PRIV="$OSMESA_PC_LIB_PRIV $LLVM_LIBS"
2882 AM_CONDITIONAL(HAVE_GALLIUM_SVGA, test "x$HAVE_GALLIUM_SVGA" = xyes)
2883 AM_CONDITIONAL(HAVE_GALLIUM_I915, test "x$HAVE_GALLIUM_I915" = xyes)
2884 AM_CONDITIONAL(HAVE_GALLIUM_PL111, test "x$HAVE_GALLIUM_PL111" = xyes)
2885 AM_CONDITIONAL(HAVE_GALLIUM_R300, test "x$HAVE_GALLIUM_R300" = xyes)
2886 AM_CONDITIONAL(HAVE_GALLIUM_R600, test "x$HAVE_GALLIUM_R600" = xyes)
2887 AM_CONDITIONAL(HAVE_GALLIUM_RADEONSI, test "x$HAVE_GALLIUM_RADEONSI" = xyes)
2888 AM_CONDITIONAL(HAVE_GALLIUM_NOUVEAU, test "x$HAVE_GALLIUM_NOUVEAU" = xyes)
2889 AM_CONDITIONAL(HAVE_GALLIUM_FREEDRENO, test "x$HAVE_GALLIUM_FREEDRENO" = xyes)
2890 AM_CONDITIONAL(HAVE_GALLIUM_ETNAVIV, test "x$HAVE_GALLIUM_ETNAVIV" = xyes)
2891 AM_CONDITIONAL(HAVE_GALLIUM_IMX, test "x$HAVE_GALLIUM_IMX" = xyes)
2892 AM_CONDITIONAL(HAVE_GALLIUM_TEGRA, test "x$HAVE_GALLIUM_TEGRA" = xyes)
2893 AM_CONDITIONAL(HAVE_GALLIUM_SOFTPIPE, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes)
2894 AM_CONDITIONAL(HAVE_GALLIUM_LLVMPIPE, test "x$HAVE_GALLIUM_LLVMPIPE" = xyes)
2895 AM_CONDITIONAL(HAVE_GALLIUM_SWR, test "x$HAVE_GALLIUM_SWR" = xyes)
2896 AM_CONDITIONAL(HAVE_GALLIUM_SWRAST, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes -o \
2897 "x$HAVE_GALLIUM_LLVMPIPE" = xyes -o \
2898 "x$HAVE_GALLIUM_SWR" = xyes)
2899 AM_CONDITIONAL(HAVE_GALLIUM_V3D, test "x$HAVE_GALLIUM_V3D" = xyes)
2900 AM_CONDITIONAL(HAVE_GALLIUM_VC4, test "x$HAVE_GALLIUM_VC4" = xyes)
2901 AM_CONDITIONAL(HAVE_GALLIUM_VIRGL, test "x$HAVE_GALLIUM_VIRGL" = xyes)
2903 AM_CONDITIONAL(HAVE_GALLIUM_STATIC_TARGETS, test "x$enable_shared_pipe_drivers" = xno)
2905 if test "x$enable_dri" = xyes; then
2906 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRI"
2909 if test "x$have_drisw_kms" = xyes; then
2910 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_KMS"
2912 AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
2914 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
2915 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
2916 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
2917 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
2918 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
2919 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
2921 AM_CONDITIONAL(HAVE_RADEON_VULKAN, test "x$HAVE_RADEON_VULKAN" = xyes)
2922 AM_CONDITIONAL(HAVE_INTEL_VULKAN, test "x$HAVE_INTEL_VULKAN" = xyes)
2924 AM_CONDITIONAL(HAVE_AMD_DRIVERS, test "x$HAVE_GALLIUM_RADEONSI" = xyes -o \
2925 "x$HAVE_RADEON_VULKAN" = xyes)
2927 AM_CONDITIONAL(HAVE_BROADCOM_DRIVERS, test "x$HAVE_GALLIUM_VC4" = xyes -o \
2928 "x$HAVE_GALLIUM_V3D" = xyes)
2930 AM_CONDITIONAL(HAVE_INTEL_DRIVERS, test "x$HAVE_INTEL_VULKAN" = xyes -o \
2931 "x$HAVE_I965_DRI" = xyes)
2933 AM_CONDITIONAL(NEED_RADEON_DRM_WINSYS, test "x$HAVE_GALLIUM_R300" = xyes -o \
2934 "x$HAVE_GALLIUM_R600" = xyes -o \
2935 "x$HAVE_GALLIUM_RADEONSI" = xyes)
2936 AM_CONDITIONAL(NEED_WINSYS_XLIB, test "x$enable_glx" = xgallium-xlib)
2937 AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
2938 AM_CONDITIONAL(HAVE_GALLIUM_LLVM, test "x$enable_llvm" = xyes)
2939 AM_CONDITIONAL(USE_V3D_SIMULATOR, test x$USE_V3D_SIMULATOR = xyes)
2940 AM_CONDITIONAL(USE_VC4_SIMULATOR, test x$USE_VC4_SIMULATOR = xyes)
2942 AM_CONDITIONAL(HAVE_LIBDRM, test "x$have_libdrm" = xyes)
2943 AM_CONDITIONAL(HAVE_OSMESA, test "x$enable_osmesa" = xyes)
2944 AM_CONDITIONAL(HAVE_GALLIUM_OSMESA, test "x$enable_gallium_osmesa" = xyes)
2945 AM_CONDITIONAL(HAVE_COMMON_OSMESA, test "x$enable_osmesa" = xyes -o \
2946 "x$enable_gallium_osmesa" = xyes)
2948 AM_CONDITIONAL(HAVE_X86_ASM, test "x$asm_arch" = xx86 -o "x$asm_arch" = xx86_64)
2949 AM_CONDITIONAL(HAVE_X86_64_ASM, test "x$asm_arch" = xx86_64)
2950 AM_CONDITIONAL(HAVE_SPARC_ASM, test "x$asm_arch" = xsparc)
2951 AM_CONDITIONAL(HAVE_PPC64LE_ASM, test "x$asm_arch" = xppc64le)
2952 AM_CONDITIONAL(HAVE_AARCH64_ASM, test "x$asm_arch" = xaarch64)
2953 AM_CONDITIONAL(HAVE_ARM_ASM, test "x$asm_arch" = xarm)
2955 AC_SUBST([NINE_MAJOR], 1)
2956 AC_SUBST([NINE_MINOR], 0)
2957 AC_SUBST([NINE_PATCH], 0)
2958 AC_SUBST([NINE_VERSION], "$NINE_MAJOR.$NINE_MINOR.$NINE_PATCH")
2960 AC_SUBST([VDPAU_MAJOR], 1)
2961 AC_SUBST([VDPAU_MINOR], 0)
2963 if test "x$enable_va" = xyes; then
2964 VA_MAJOR=`$PKG_CONFIG --modversion libva | $SED -n 's/\([[^\.]]*\)\..*$/\1/p'`
2965 VA_MINOR=`$PKG_CONFIG --modversion libva | $SED -n 's/.*\.\(.*\)\..*$/\1/p'`
2967 AC_SUBST([VA_MAJOR], $VA_MAJOR)
2968 AC_SUBST([VA_MINOR], $VA_MINOR)
2970 AM_CONDITIONAL(HAVE_VULKAN_COMMON, test "x$VULKAN_DRIVERS" != "x")
2972 AC_SUBST([XVMC_MAJOR], 1)
2973 AC_SUBST([XVMC_MINOR], 0)
2975 AC_SUBST([XA_MAJOR], 2)
2976 AC_SUBST([XA_MINOR], 4)
2977 AC_SUBST([XA_PATCH], 0)
2978 AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_PATCH")
2980 AC_ARG_ENABLE(valgrind,
2981 [AS_HELP_STRING([--enable-valgrind],
2982 [Build mesa with valgrind support (default: auto)])],
2983 [VALGRIND=$enableval], [VALGRIND=auto])
2984 if test "x$VALGRIND" != xno; then
2985 PKG_CHECK_MODULES(VALGRIND, [valgrind], [have_valgrind=yes], [have_valgrind=no])
2987 AC_MSG_CHECKING([whether to enable Valgrind support])
2988 if test "x$VALGRIND" = xauto; then
2989 VALGRIND="$have_valgrind"
2992 if test "x$VALGRIND" = "xyes"; then
2993 if ! test "x$have_valgrind" = xyes; then
2994 AC_MSG_ERROR([Valgrind support required but not present])
2996 AC_DEFINE([HAVE_VALGRIND], 1, [Use valgrind intrinsics to suppress false warnings])
2999 AC_MSG_RESULT([$VALGRIND])
3001 dnl Restore LDFLAGS and CPPFLAGS
3002 LDFLAGS="$_SAVE_LDFLAGS"
3003 CPPFLAGS="$_SAVE_CPPFLAGS"
3005 dnl Suppress clang's warnings about unused CFLAGS and CXXFLAGS
3006 if test "x$acv_mesa_CLANG" = xyes; then
3007 CFLAGS="$CFLAGS -Qunused-arguments"
3008 CXXFLAGS="$CXXFLAGS -Qunused-arguments"
3011 dnl Add user CFLAGS and CXXFLAGS
3012 CFLAGS="$CFLAGS $USER_CFLAGS"
3013 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
3015 dnl Substitute the config
3016 AC_CONFIG_FILES([Makefile
3019 src/amd/vulkan/Makefile
3020 src/broadcom/Makefile
3021 src/compiler/Makefile
3024 src/egl/wayland/wayland-drm/Makefile
3025 src/egl/wayland/wayland-egl/Makefile
3026 src/egl/wayland/wayland-egl/wayland-egl.pc
3027 src/gallium/Makefile
3028 src/gallium/auxiliary/Makefile
3029 src/gallium/auxiliary/pipe-loader/Makefile
3030 src/gallium/drivers/freedreno/Makefile
3031 src/gallium/drivers/i915/Makefile
3032 src/gallium/drivers/llvmpipe/Makefile
3033 src/gallium/drivers/nouveau/Makefile
3034 src/gallium/drivers/pl111/Makefile
3035 src/gallium/drivers/r300/Makefile
3036 src/gallium/drivers/r600/Makefile
3037 src/gallium/drivers/radeonsi/Makefile
3038 src/gallium/drivers/softpipe/Makefile
3039 src/gallium/drivers/svga/Makefile
3040 src/gallium/drivers/swr/Makefile
3041 src/gallium/drivers/tegra/Makefile
3042 src/gallium/drivers/etnaviv/Makefile
3043 src/gallium/drivers/imx/Makefile
3044 src/gallium/drivers/v3d/Makefile
3045 src/gallium/drivers/vc4/Makefile
3046 src/gallium/drivers/virgl/Makefile
3047 src/gallium/state_trackers/clover/Makefile
3048 src/gallium/state_trackers/dri/Makefile
3049 src/gallium/state_trackers/glx/xlib/Makefile
3050 src/gallium/state_trackers/nine/Makefile
3051 src/gallium/state_trackers/omx/Makefile
3052 src/gallium/state_trackers/omx/bellagio/Makefile
3053 src/gallium/state_trackers/omx/tizonia/Makefile
3054 src/gallium/state_trackers/osmesa/Makefile
3055 src/gallium/state_trackers/va/Makefile
3056 src/gallium/state_trackers/vdpau/Makefile
3057 src/gallium/state_trackers/xa/Makefile
3058 src/gallium/state_trackers/xa/xa_tracker.h
3059 src/gallium/state_trackers/xvmc/Makefile
3060 src/gallium/targets/d3dadapter9/Makefile
3061 src/gallium/targets/d3dadapter9/d3d.pc
3062 src/gallium/targets/dri/Makefile
3063 src/gallium/targets/libgl-xlib/Makefile
3064 src/gallium/targets/omx/Makefile
3065 src/gallium/targets/opencl/Makefile
3066 src/gallium/targets/opencl/mesa.icd
3067 src/gallium/targets/osmesa/Makefile
3068 src/gallium/targets/osmesa/osmesa.pc
3069 src/gallium/targets/pipe-loader/Makefile
3070 src/gallium/targets/va/Makefile
3071 src/gallium/targets/vdpau/Makefile
3072 src/gallium/targets/xa/Makefile
3073 src/gallium/targets/xa/xatracker.pc
3074 src/gallium/targets/xvmc/Makefile
3075 src/gallium/tests/trivial/Makefile
3076 src/gallium/tests/unit/Makefile
3077 src/gallium/winsys/etnaviv/drm/Makefile
3078 src/gallium/winsys/imx/drm/Makefile
3079 src/gallium/winsys/freedreno/drm/Makefile
3080 src/gallium/winsys/i915/drm/Makefile
3081 src/gallium/winsys/nouveau/drm/Makefile
3082 src/gallium/winsys/pl111/drm/Makefile
3083 src/gallium/winsys/radeon/drm/Makefile
3084 src/gallium/winsys/amdgpu/drm/Makefile
3085 src/gallium/winsys/svga/drm/Makefile
3086 src/gallium/winsys/sw/dri/Makefile
3087 src/gallium/winsys/sw/kms-dri/Makefile
3088 src/gallium/winsys/sw/null/Makefile
3089 src/gallium/winsys/sw/wrapper/Makefile
3090 src/gallium/winsys/sw/xlib/Makefile
3091 src/gallium/winsys/tegra/drm/Makefile
3092 src/gallium/winsys/v3d/drm/Makefile
3093 src/gallium/winsys/vc4/drm/Makefile
3094 src/gallium/winsys/virgl/drm/Makefile
3095 src/gallium/winsys/virgl/vtest/Makefile
3099 src/glx/apple/Makefile
3100 src/glx/tests/Makefile
3101 src/glx/windows/Makefile
3102 src/glx/windows/windowsdriproto.pc
3107 src/mapi/es1api/glesv1_cm.pc
3108 src/mapi/es2api/glesv2.pc
3109 src/mapi/glapi/gen/Makefile
3112 src/mesa/drivers/dri/dri.pc
3113 src/mesa/drivers/dri/common/Makefile
3114 src/mesa/drivers/dri/i915/Makefile
3115 src/mesa/drivers/dri/i965/Makefile
3116 src/mesa/drivers/dri/Makefile
3117 src/mesa/drivers/dri/nouveau/Makefile
3118 src/mesa/drivers/dri/r200/Makefile
3119 src/mesa/drivers/dri/radeon/Makefile
3120 src/mesa/drivers/dri/swrast/Makefile
3121 src/mesa/drivers/osmesa/Makefile
3122 src/mesa/drivers/osmesa/osmesa.pc
3123 src/mesa/drivers/x11/Makefile
3124 src/mesa/main/tests/Makefile
3125 src/mesa/state_tracker/tests/Makefile
3127 src/util/tests/hash_table/Makefile
3128 src/util/tests/string_buffer/Makefile
3129 src/util/tests/vma/Makefile
3130 src/util/xmlpool/Makefile
3131 src/vulkan/Makefile])
3135 # Fix up dependencies in *.Plo files, where we changed the extension of a
3137 $SED -i -e 's/brw_blorp.cpp/brw_blorp.c/' src/mesa/drivers/dri/i965/.deps/brw_blorp.Plo
3139 rm -f src/compiler/spirv/spirv_info.lo
3140 echo "# dummy" > src/compiler/spirv/.deps/spirv_info.Plo
3142 rm -f src/compiler/nir/.deps/nir_intrinsics.Plo
3143 echo "# dummy" > src/compiler/nir/.deps/nir_intrinsics.Plo
3146 dnl Output some configuration info for the user
3149 echo " prefix: $prefix"
3150 echo " exec_prefix: $exec_prefix"
3151 echo " libdir: $libdir"
3152 echo " includedir: $includedir"
3156 echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
3160 case "x$enable_osmesa$enable_gallium_osmesa" in
3162 echo " OSMesa: lib$OSMESA_LIB (Gallium)"
3165 echo " OSMesa: lib$OSMESA_LIB"
3173 if test "x$enable_dri" != xno; then
3174 echo " DRI platform: $dri_platform"
3175 if test -z "$DRI_DIRS"; then
3176 echo " DRI drivers: no"
3178 echo " DRI drivers: $DRI_DIRS"
3180 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
3183 case "x$enable_glx" in
3185 echo " GLX: DRI-based"
3188 echo " GLX: Xlib-based"
3191 echo " GLX: Xlib-based (Gallium)"
3194 echo " GLX: $enable_glx"
3200 echo " EGL: $enable_egl"
3201 if test "$enable_egl" = yes; then
3204 if test "x$enable_dri" != "xno"; then
3205 egl_drivers="$egl_drivers builtin:egl_dri2"
3207 if test "x$enable_dri3" != "xno"; then
3208 egl_drivers="$egl_drivers builtin:egl_dri3"
3211 echo " EGL drivers: $egl_drivers"
3213 if test "x$enable_gbm" = xyes; then
3219 echo " EGL/Vulkan/VL platforms: $platforms"
3223 if test "x$VULKAN_DRIVERS" != x; then
3224 echo " Vulkan drivers: $VULKAN_DRIVERS"
3225 echo " Vulkan ICD dir: $VULKAN_ICD_INSTALL_DIR"
3227 echo " Vulkan drivers: no"
3231 if test "x$enable_llvm" = xyes; then
3233 echo " llvm-config: $LLVM_CONFIG"
3234 echo " llvm-version: $LLVM_VERSION"
3240 if test -n "$with_gallium_drivers"; then
3241 echo " Gallium drivers: $gallium_drivers"
3242 echo " Gallium st: $gallium_st"
3248 if test "x$enable_gallium_extra_hud" != xyes; then
3249 echo " HUD extra stats: no"
3251 echo " HUD extra stats: yes"
3254 if test "x$enable_lmsensors" != xyes; then
3255 echo " HUD lmsensors: no"
3257 echo " HUD lmsensors: yes"
3261 if test "x$HAVE_GALLIUM_SWR" != x; then
3262 if test "x$HAVE_SWR_BUILTIN" = xyes; then
3263 echo " SWR archs: $swr_archs (builtin)"
3265 echo " SWR archs: $swr_archs"
3271 echo " Shared libs: $enable_shared"
3272 echo " Static libs: $enable_static"
3273 echo " Shared-glapi: $enable_shared_glapi"
3275 dnl Compiler options
3276 # cleanup the CFLAGS/CXXFLAGS/LDFLAGS/DEFINES vars
3277 cflags=`echo $CFLAGS | \
3278 $SED 's/^ *//;s/ */ /;s/ *$//'`
3279 cxxflags=`echo $CXXFLAGS | \
3280 $SED 's/^ *//;s/ */ /;s/ *$//'`
3281 ldflags=`echo $LDFLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
3282 defines=`echo $DEFINES | $SED 's/^ *//;s/ */ /;s/ *$//'`
3284 echo " CFLAGS: $cflags"
3285 echo " CXXFLAGS: $cxxflags"
3286 echo " CXX11_CXXFLAGS: $CXX11_CXXFLAGS"
3287 echo " LDFLAGS: $ldflags"
3288 echo " Macros: $defines"
3290 if test "x$enable_llvm" = xyes; then
3291 echo " LLVM_CFLAGS: $LLVM_CFLAGS"
3292 echo " LLVM_CXXFLAGS: $LLVM_CXXFLAGS"
3293 echo " LLVM_CPPFLAGS: $LLVM_CPPFLAGS"
3294 echo " LLVM_LDFLAGS: $LLVM_LDFLAGS"
3297 echo " PYTHON2: $PYTHON2"
3300 echo " Run '${MAKE-make}' to build Mesa"