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 HAVE_RADEON_VULKAN=yes
2105 AC_MSG_ERROR([Vulkan driver '$driver' does not exist])
2109 VULKAN_DRIVERS=`echo $VULKAN_DRIVERS|tr " " "\n"|sort -u|tr "\n" " "`
2113 DEFINES="$DEFINES -DENABLE_SHADER_CACHE"
2114 AM_CONDITIONAL(NEED_MEGADRIVER, test -n "$DRI_DIRS")
2115 AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_glx" = xxlib -o \
2116 "x$enable_osmesa" = xyes -o \
2120 dnl OSMesa configuration
2123 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
2124 AC_ARG_WITH([osmesa-bits],
2125 [AS_HELP_STRING([--with-osmesa-bits=BITS],
2126 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
2127 [osmesa_bits="$withval"],
2129 if test "x$osmesa_bits" != x8; then
2130 if test "x$enable_dri" = xyes -o "x$enable_glx" != xno; then
2131 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
2135 case "x$osmesa_bits" in
2137 OSMESA_LIB="${OSMESA_LIB}"
2140 OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
2141 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
2144 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
2148 if test "x$enable_osmesa" = xyes -o "x$enable_gallium_osmesa" = xyes; then
2149 # only link libraries with osmesa if shared
2150 if test "$enable_static" = no; then
2151 OSMESA_LIB_DEPS="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
2155 OSMESA_PC_LIB_PRIV="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
2158 AC_SUBST([OSMESA_LIB_DEPS])
2159 AC_SUBST([OSMESA_PC_REQ])
2160 AC_SUBST([OSMESA_PC_LIB_PRIV])
2163 dnl gbm configuration
2165 if test "x$enable_gbm" = xyes; then
2166 require_dri_shared_libs_and_glapi "gbm"
2168 AM_CONDITIONAL(HAVE_GBM, test "x$enable_gbm" = xyes)
2169 # FINISHME: GBM has a number of dependencies which we should add below
2171 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
2172 AC_SUBST([GBM_PC_REQ_PRIV])
2173 AC_SUBST([GBM_PC_LIB_PRIV])
2176 dnl EGL configuration
2179 if test "x$enable_egl" = xyes; then
2180 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS $PTHREAD_LIBS"
2182 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
2184 require_dri_shared_libs_and_glapi "egl"
2186 AM_CONDITIONAL(HAVE_EGL, test "x$enable_egl" = xyes)
2187 AC_SUBST([EGL_LIB_DEPS])
2192 dnl XA configuration
2194 if test "x$enable_xa" = xyes; then
2195 if test "x$with_gallium_drivers" = xswrast; then
2197 Building xa requires at least one non swrast gallium driver.
2198 If you are looking to use libxatracker.so with the VMware driver,
2199 make sure to include svga in the gallium drivers list, apart from
2201 Example: ./configure --enable-xa --with-gallium-drivers=svga...])
2203 gallium_st="$gallium_st xa"
2205 AM_CONDITIONAL(HAVE_ST_XA, test "x$enable_xa" = xyes)
2207 if echo $platforms | grep -q "x11"; then
2208 have_xvmc_platform=yes
2210 have_xvmc_platform=no
2213 if echo $platforms | grep -q "x11"; then
2214 have_vdpau_platform=yes
2216 have_vdpau_platform=no
2219 if echo $platforms | grep -q "x11\|drm"; then
2220 have_omx_platform=yes
2222 have_omx_platform=no
2225 if echo $platforms | grep -q "x11\|drm\|wayland"; then
2226 have_va_platform=yes
2232 dnl Gallium G3DVL configuration
2234 if test -n "$with_gallium_drivers" -a "x$with_gallium_drivers" != xswrast; then
2235 if test "x$enable_xvmc" = xauto -a "x$have_xvmc_platform" = xyes; then
2236 PKG_CHECK_EXISTS([xvmc >= $XVMC_REQUIRED], [enable_xvmc=yes], [enable_xvmc=no])
2239 if test "x$enable_vdpau" = xauto -a "x$have_vdpau_platform" = xyes; then
2240 PKG_CHECK_EXISTS([vdpau >= $VDPAU_REQUIRED], [enable_vdpau=yes], [enable_vdpau=no])
2243 if test "x$enable_omx_bellagio" = xauto -a "x$have_omx_platform" = xyes; then
2244 PKG_CHECK_EXISTS([libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED], [enable_omx_bellagio=yes], [enable_omx_bellagio=no])
2247 if test "x$enable_omx_tizonia" = xauto -a "x$have_omx_platform" = xyes; then
2248 PKG_CHECK_EXISTS([libtizonia >= $LIBOMXIL_TIZONIA_REQUIRED], [enable_omx_tizonia=yes], [enable_omx_tizonia=no])
2251 if test "x$enable_va" = xauto -a "x$have_va_platform" = xyes; then
2252 PKG_CHECK_EXISTS([libva >= $LIBVA_REQUIRED], [enable_va=yes], [enable_va=no])
2256 if test "x$enable_dri" = xyes -o \
2257 "x$enable_xvmc" = xyes -o \
2258 "x$enable_vdpau" = xyes -o \
2259 "x$enable_omx_bellagio" = xyes -o \
2260 "x$enable_omx_tizonia" = xyes -o \
2261 "x$enable_va" = xyes; then
2264 AM_CONDITIONAL(NEED_GALLIUM_VL, test "x$need_gallium_vl" = xyes)
2266 if test "x$enable_xvmc" = xyes -o \
2267 "x$enable_vdpau" = xyes -o \
2268 "x$enable_omx_bellagio" = xyes -o \
2269 "x$enable_omx_tizonia" = xyes -o \
2270 "x$enable_va" = xyes; then
2271 if echo $platforms | grep -q "x11"; then
2272 PKG_CHECK_MODULES([VL], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
2274 need_gallium_vl_winsys=yes
2276 AM_CONDITIONAL(NEED_GALLIUM_VL_WINSYS, test "x$need_gallium_vl_winsys" = xyes)
2278 if test "x$enable_xvmc" = xyes; then
2279 if test "x$have_xvmc_platform" != xyes; then
2280 AC_MSG_ERROR([XVMC requires the x11 platforms])
2282 PKG_CHECK_MODULES([XVMC], [xvmc >= $XVMC_REQUIRED])
2283 gallium_st="$gallium_st xvmc"
2285 AM_CONDITIONAL(HAVE_ST_XVMC, test "x$enable_xvmc" = xyes)
2287 if test "x$enable_vdpau" = xyes; then
2288 if test "x$have_vdpau_platform" != xyes; then
2289 AC_MSG_ERROR([VDPAU requires the x11 platforms])
2291 PKG_CHECK_MODULES([VDPAU], [vdpau >= $VDPAU_REQUIRED])
2292 gallium_st="$gallium_st vdpau"
2293 DEFINES="$DEFINES -DHAVE_ST_VDPAU"
2295 AM_CONDITIONAL(HAVE_ST_VDPAU, test "x$enable_vdpau" = xyes)
2297 if test "x$enable_omx_bellagio" = xyes; then
2298 if test "x$have_omx_platform" != xyes; then
2299 AC_MSG_ERROR([OMX requires at least one of the x11 or drm platforms])
2301 PKG_CHECK_MODULES([OMX_BELLAGIO], [libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED])
2302 gallium_st="$gallium_st omx_bellagio"
2303 AC_DEFINE([ENABLE_ST_OMX_BELLAGIO], 1, [Use Bellagio for OMX IL])
2305 AC_DEFINE([ENABLE_ST_OMX_BELLAGIO], 0)
2307 AM_CONDITIONAL(HAVE_ST_OMX_BELLAGIO, test "x$enable_omx_bellagio" = xyes)
2309 if test "x$enable_omx_tizonia" = xyes; then
2310 if test "x$have_omx_platform" != xyes; then
2311 AC_MSG_ERROR([OMX requires at least one of the x11 or drm platforms])
2313 PKG_CHECK_MODULES([OMX_TIZONIA],
2314 [libtizonia >= $LIBOMXIL_TIZONIA_REQUIRED
2315 tizilheaders >= $LIBOMXIL_TIZONIA_REQUIRED
2316 libtizplatform >= $LIBOMXIL_TIZONIA_REQUIRED])
2317 gallium_st="$gallium_st omx_tizonia"
2318 AC_DEFINE([ENABLE_ST_OMX_TIZONIA], 1, [Use Tizoina for OMX IL])
2320 AC_DEFINE([ENABLE_ST_OMX_TIZONIA], 0)
2322 AM_CONDITIONAL(HAVE_ST_OMX_TIZONIA, test "x$enable_omx_tizonia" = xyes)
2324 if test "x$enable_va" = xyes; then
2325 if test "x$have_va_platform" != xyes; then
2326 AC_MSG_ERROR([VA requires at least one of the x11 drm or wayland platforms])
2328 PKG_CHECK_MODULES([VA], [libva >= $LIBVA_REQUIRED])
2329 gallium_st="$gallium_st va"
2331 AM_CONDITIONAL(HAVE_ST_VA, test "x$enable_va" = xyes)
2334 dnl Nine Direct3D9 configuration
2336 if test "x$enable_nine" = xyes; then
2337 if ! echo "$with_gallium_drivers" | grep -q 'swrast'; then
2338 AC_MSG_ERROR([nine requires the gallium swrast driver])
2340 if test "x$with_gallium_drivers" = xswrast; then
2341 AC_MSG_ERROR([nine requires at least one non-swrast gallium driver])
2343 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6; then
2344 AC_MSG_ERROR([gcc >= 4.6 is required to build nine])
2347 if test "x$enable_dri3" = xno; then
2348 AC_MSG_WARN([using nine together with wine requires DRI3 enabled system])
2351 gallium_st="$gallium_st nine"
2353 AM_CONDITIONAL(HAVE_ST_NINE, test "x$enable_nine" = xyes)
2356 dnl OpenCL configuration
2359 AC_ARG_WITH([clang-libdir],
2360 [AS_HELP_STRING([--with-clang-libdir],
2361 [Path to Clang libraries @<:@default=llvm-config --libdir@:>@])],
2362 [CLANG_LIBDIR="$withval"],
2365 PKG_CHECK_EXISTS([libclc], [have_libclc=yes], [have_libclc=no])
2367 if test "x$enable_opencl" = xyes; then
2368 if test -z "$with_gallium_drivers"; then
2369 AC_MSG_ERROR([cannot enable OpenCL without Gallium])
2372 if test "x$HAVE_CXX11" != "xyes"; then
2373 AC_MSG_ERROR([clover requires c++11 support])
2376 if test "x$have_libclc" = xno; then
2377 AC_MSG_ERROR([pkg-config cannot find libclc.pc which is required to build clover.
2378 Make sure the directory containing libclc.pc is specified in your
2379 PKG_CONFIG_PATH environment variable.
2380 By default libclc.pc is installed to /usr/local/share/pkgconfig/])
2382 LIBCLC_INCLUDEDIR=`$PKG_CONFIG --variable=includedir libclc`
2383 LIBCLC_LIBEXECDIR=`$PKG_CONFIG --variable=libexecdir libclc`
2384 AC_SUBST([LIBCLC_INCLUDEDIR])
2385 AC_SUBST([LIBCLC_LIBEXECDIR])
2388 gallium_st="$gallium_st clover"
2390 if test "x$enable_opencl_icd" = xyes; then
2391 OPENCL_LIBNAME="MesaOpenCL"
2393 OPENCL_LIBNAME="OpenCL"
2396 if test "x$have_libelf" != xyes; then
2397 AC_MSG_ERROR([Clover requires libelf])
2400 if test "x${ac_cv_cxx_compiler_gnu}" = xyes; then
2402 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
2403 #if !defined(__VEC__) || !defined(__ALTIVEC__)
2404 #error "AltiVec not enabled"
2406 ])], altivec_enabled=yes)
2408 if test "$altivec_enabled" = yes; then
2409 CLOVER_STD_OVERRIDE="-std=gnu++11"
2411 AC_SUBST([CLOVER_STD_OVERRIDE])
2414 llvm_require_version $LLVM_REQUIRED_OPENCL "opencl"
2416 llvm_add_default_components "opencl"
2417 llvm_add_component "all-targets" "opencl"
2418 llvm_add_component "coverage" "opencl"
2419 llvm_add_component "linker" "opencl"
2420 llvm_add_component "instrumentation" "opencl"
2421 llvm_add_component "ipo" "opencl"
2422 llvm_add_component "irreader" "opencl"
2423 llvm_add_component "lto" "opencl"
2424 llvm_add_component "option" "opencl"
2425 llvm_add_component "objcarcopts" "opencl"
2426 llvm_add_component "profiledata" "opencl"
2427 llvm_add_optional_component "coroutines" "opencl"
2429 dnl Check for Clang internal headers
2430 if test -z "$CLANG_LIBDIR"; then
2431 CLANG_LIBDIR=${LLVM_LIBDIR}
2433 CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION}
2434 AS_IF([test ! -f "$CLANG_RESOURCE_DIR/include/stddef.h"],
2435 [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.])])
2437 AM_CONDITIONAL(HAVE_CLOVER, test "x$enable_opencl" = xyes)
2438 AM_CONDITIONAL(HAVE_CLOVER_ICD, test "x$enable_opencl_icd" = xyes)
2439 AC_SUBST([OPENCL_LIBNAME])
2440 AC_SUBST([CLANG_RESOURCE_DIR])
2443 dnl Gallium configuration
2445 AM_CONDITIONAL(HAVE_GALLIUM, test -n "$with_gallium_drivers")
2447 # libEGL wants to default to the first platform specified in
2448 # ./configure. parse that here.
2449 if test "x$platforms" != "x"; then
2450 FIRST_PLATFORM_CAPS=`echo $platforms | sed 's| .*||' | tr '[[a-z]]' '[[A-Z]]'`
2451 EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
2453 EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
2456 AC_SUBST([EGL_NATIVE_PLATFORM])
2457 AC_SUBST([EGL_CFLAGS])
2459 # If we don't have the X11 platform, set this define so we don't try to include
2461 if ! echo "$platforms" | grep -q 'x11'; then
2462 DEFINES="$DEFINES -DMESA_EGL_NO_X11_HEADERS"
2463 GL_PC_CFLAGS="$GL_PC_CFLAGS -DMESA_EGL_NO_X11_HEADERS"
2466 dnl Directory for XVMC libs
2467 AC_ARG_WITH([xvmc-libdir],
2468 [AS_HELP_STRING([--with-xvmc-libdir=DIR],
2469 [directory for the XVMC libraries @<:@default=${libdir}@:>@])],
2470 [XVMC_LIB_INSTALL_DIR="$withval"],
2471 [XVMC_LIB_INSTALL_DIR='${libdir}'])
2472 AC_SUBST([XVMC_LIB_INSTALL_DIR])
2477 AM_CONDITIONAL(HAVE_GALLIUM_TESTS, test "x$enable_gallium_tests" = xyes)
2479 dnl Directory for VDPAU libs
2480 AC_ARG_WITH([vdpau-libdir],
2481 [AS_HELP_STRING([--with-vdpau-libdir=DIR],
2482 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
2483 [VDPAU_LIB_INSTALL_DIR="$withval"],
2484 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
2485 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
2487 dnl Directory for OMX_BELLAGIO libs
2489 AC_ARG_WITH([omx-bellagio-libdir],
2490 [AS_HELP_STRING([--with-omx-bellagio-libdir=DIR],
2491 [directory for the OMX_BELLAGIO libraries])],
2492 [OMX_BELLAGIO_LIB_INSTALL_DIR="$withval"],
2493 [OMX_BELLAGIO_LIB_INSTALL_DIR=`$PKG_CONFIG --exists libomxil-bellagio && \
2494 $PKG_CONFIG --define-variable=libdir=\$libdir --variable=pluginsdir libomxil-bellagio`])
2495 AC_SUBST([OMX_BELLAGIO_LIB_INSTALL_DIR])
2497 dnl Directory for OMX_TIZONIA libs
2499 AC_ARG_WITH([omx-tizonia-libdir],
2500 [AS_HELP_STRING([--with-omx-tizonia-libdir=DIR],
2501 [directory for the OMX_TIZONIA libraries])],
2502 [OMX_TIZONIA_LIB_INSTALL_DIR="$withval"],
2503 [OMX_TIZONIA_LIB_INSTALL_DIR=`$PKG_CONFIG --define-variable=libdir=\$libdir --variable=pluginsdir libtizcore`])
2504 AC_SUBST([OMX_TIZONIA_LIB_INSTALL_DIR])
2506 dnl Directory for VA libs
2508 AC_ARG_WITH([va-libdir],
2509 [AS_HELP_STRING([--with-va-libdir=DIR],
2510 [directory for the VA libraries @<:@${libdir}/dri@:>@])],
2511 [VA_LIB_INSTALL_DIR="$withval"],
2512 [VA_LIB_INSTALL_DIR="${libdir}/dri"])
2513 AC_SUBST([VA_LIB_INSTALL_DIR])
2515 AC_ARG_WITH([d3d-libdir],
2516 [AS_HELP_STRING([--with-d3d-libdir=DIR],
2517 [directory for the D3D modules @<:@${libdir}/d3d@:>@])],
2518 [D3D_DRIVER_INSTALL_DIR="$withval"],
2519 [D3D_DRIVER_INSTALL_DIR="${libdir}/d3d"])
2520 AC_SUBST([D3D_DRIVER_INSTALL_DIR])
2522 dnl Architectures to build SWR library for
2524 AC_ARG_WITH([swr-archs],
2525 [AS_HELP_STRING([--with-swr-archs@<:@=DIRS...@:>@],
2526 [comma delimited swr architectures list, e.g.
2527 "avx,avx2,knl,skx" @<:@default="avx,avx2"@:>@])],
2528 [with_swr_archs="$withval"],
2529 [with_swr_archs="avx,avx2"])
2532 dnl r300 doesn't strictly require LLVM, but for performance reasons we
2533 dnl highly recommend LLVM usage. So require it at least on x86 and x86_64
2536 r300_require_llvm() {
2537 case "$host" in *gnux32) return;; esac
2539 i*86|x86_64|amd64) require_llvm $1
2545 dnl DRM is needed by X, Wayland, and offscreen rendering.
2546 dnl Surfaceless is an alternative for the last one.
2548 require_basic_egl() {
2549 case "$with_platforms" in
2550 *drm*|*surfaceless*|*android*)
2553 AC_MSG_ERROR([$1 requires one of these:
2554 1) --with-platforms=drm (X, Wayland, offscreen rendering based on DRM)
2555 2) --with-platforms=surfaceless (offscreen only)
2556 3) --with-platforms=android (Android only)
2557 Recommended options: drm,x11])
2562 swr_require_cxx_feature_flags() {
2564 preprocessor_test="$2"
2568 AC_MSG_CHECKING([whether $CXX supports $feature_name])
2570 save_CXXFLAGS="$CXXFLAGS"
2574 for opts in $option_list
2577 CXXFLAGS="$opts $save_CXXFLAGS"
2580 [ #if !($preprocessor_test)
2589 CXXFLAGS="$save_CXXFLAGS"
2591 if test $found -eq 1; then
2592 AC_MSG_RESULT([$opts])
2593 eval "$output_var=\$opts"
2597 AC_MSG_ERROR([swr requires $feature_name support])
2601 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
2602 if test -n "$with_gallium_drivers"; then
2603 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
2604 for driver in $gallium_drivers; do
2607 HAVE_GALLIUM_SVGA=yes
2608 require_libdrm "svga"
2611 HAVE_GALLIUM_I915=yes
2612 PKG_CHECK_MODULES([I915], [libdrm >= $LIBDRM_INTEL_REQUIRED libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
2613 require_libdrm "Gallium i915"
2616 HAVE_GALLIUM_R300=yes
2617 PKG_CHECK_MODULES([RADEON], [libdrm >= $LIBDRM_RADEON_REQUIRED libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2618 require_libdrm "r300"
2619 r300_require_llvm "r300"
2622 HAVE_GALLIUM_R600=yes
2623 PKG_CHECK_MODULES([RADEON], [libdrm >= $LIBDRM_RADEON_REQUIRED libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2624 require_libdrm "r600"
2625 if test "x$enable_llvm" = xyes; then
2626 radeon_llvm_check $LLVM_REQUIRED_R600 "r600"
2628 llvm_add_component "asmparser" "r600"
2629 llvm_add_component "bitreader" "r600"
2633 HAVE_GALLIUM_RADEONSI=yes
2634 PKG_CHECK_MODULES([RADEON], [libdrm >= $LIBDRM_RADEON_REQUIRED libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2635 PKG_CHECK_MODULES([AMDGPU], [libdrm >= $LIBDRM_AMDGPU_REQUIRED libdrm_amdgpu >= $LIBDRM_AMDGPU_REQUIRED])
2636 require_libdrm "radeonsi"
2637 radeon_llvm_check $LLVM_REQUIRED_RADEONSI "radeonsi"
2638 if test "x$enable_egl" = xyes; then
2639 require_basic_egl "radeonsi"
2643 HAVE_GALLIUM_NOUVEAU=yes
2644 PKG_CHECK_MODULES([NOUVEAU], [libdrm >= $LIBDRM_NOUVEAU_REQUIRED libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
2645 require_libdrm "nouveau"
2648 HAVE_GALLIUM_FREEDRENO=yes
2649 PKG_CHECK_MODULES([FREEDRENO], [libdrm >= $LIBDRM_FREEDRENO_REQUIRED libdrm_freedreno >= $LIBDRM_FREEDRENO_REQUIRED])
2650 require_libdrm "freedreno"
2653 HAVE_GALLIUM_ETNAVIV=yes
2654 PKG_CHECK_MODULES([ETNAVIV], [libdrm >= $LIBDRM_ETNAVIV_REQUIRED libdrm_etnaviv >= $LIBDRM_ETNAVIV_REQUIRED])
2655 require_libdrm "etnaviv"
2658 HAVE_GALLIUM_IMX=yes
2661 HAVE_GALLIUM_TEGRA=yes
2662 require_libdrm "tegra"
2665 HAVE_GALLIUM_SOFTPIPE=yes
2666 if test "x$enable_llvm" = xyes; then
2667 HAVE_GALLIUM_LLVMPIPE=yes
2671 llvm_require_version $LLVM_REQUIRED_SWR "swr"
2673 if test "x$HAVE_CXX11" != "xyes"; then
2674 AC_MSG_ERROR([swr requires c++11 support])
2677 swr_require_cxx_feature_flags "AVX" "defined(__AVX__)" \
2678 ",-target-cpu=sandybridge,-mavx,-march=core-avx,-tp=sandybridge" \
2680 AC_SUBST([SWR_AVX_CXXFLAGS])
2682 swr_archs=`IFS=', '; echo $with_swr_archs`
2683 for arch in $swr_archs; do
2689 swr_require_cxx_feature_flags "AVX2" "defined(__AVX2__)" \
2690 ",-target-cpu=haswell,-mavx2 -mfma -mbmi2 -mf16c,-march=core-avx2,-tp=haswell" \
2692 AC_SUBST([SWR_AVX2_CXXFLAGS])
2696 swr_require_cxx_feature_flags "KNL" "defined(__AVX512F__) && defined(__AVX512ER__)" \
2697 ",-target-cpu=mic-knl,-march=knl,-xMIC-AVX512" \
2699 AC_SUBST([SWR_KNL_CXXFLAGS])
2703 swr_require_cxx_feature_flags "SKX" "defined(__AVX512F__) && defined(__AVX512BW__)" \
2704 ",-target-cpu=x86-skylake,-march=skylake-avx512,-xCORE-AVX512" \
2706 AC_SUBST([SWR_SKX_CXXFLAGS])
2710 AC_MSG_ERROR([unknown SWR build architecture '$arch'])
2715 if test "x$HAVE_SWR_AVX" != xyes -a \
2716 "x$HAVE_SWR_AVX2" != xyes -a \
2717 "x$HAVE_SWR_KNL" != xyes -a \
2718 "x$HAVE_SWR_SKX" != xyes; then
2719 AC_MSG_ERROR([swr enabled but no swr architectures selected])
2722 # test if more than one swr arch configured
2723 if test `echo $swr_archs | wc -w` -eq 1; then
2724 HAVE_SWR_BUILTIN=yes
2727 HAVE_GALLIUM_SWR=yes
2730 HAVE_GALLIUM_VC4=yes
2731 PKG_CHECK_MODULES([VC4], [libdrm >= $LIBDRM_VC4_REQUIRED])
2733 PKG_CHECK_MODULES([SIMPENROSE], [simpenrose],
2734 [USE_VC4_SIMULATOR=yes;
2735 DEFINES="$DEFINES -DUSE_VC4_SIMULATOR"],
2736 [USE_VC4_SIMULATOR=no])
2739 HAVE_GALLIUM_V3D=yes
2741 PKG_CHECK_MODULES([V3D_SIMULATOR], [v3dv3],
2742 [USE_V3D_SIMULATOR=yes;
2743 DEFINES="$DEFINES -DUSE_V3D_SIMULATOR"],
2744 [USE_V3D_SIMULATOR=no])
2747 HAVE_GALLIUM_PL111=yes
2750 HAVE_GALLIUM_VIRGL=yes
2751 require_libdrm "virgl"
2752 if test "x$enable_egl" = xyes; then
2753 require_basic_egl "virgl"
2757 AC_MSG_ERROR([Unknown Gallium driver: $driver])
2763 # XXX: Keep in sync with LLVM_REQUIRED_SWR
2764 AM_CONDITIONAL(SWR_INVALID_LLVM_VERSION, test "x$LLVM_VERSION" != x4.0.0 -a \
2765 "x$LLVM_VERSION" != x4.0.1)
2767 if test "x$enable_llvm" = "xyes" -a "$with_gallium_drivers"; then
2768 llvm_require_version $LLVM_REQUIRED_GALLIUM "gallium"
2769 llvm_add_default_components "gallium"
2772 AM_CONDITIONAL(HAVE_SWR_AVX, test "x$HAVE_SWR_AVX" = xyes)
2773 AM_CONDITIONAL(HAVE_SWR_AVX2, test "x$HAVE_SWR_AVX2" = xyes)
2774 AM_CONDITIONAL(HAVE_SWR_KNL, test "x$HAVE_SWR_KNL" = xyes)
2775 AM_CONDITIONAL(HAVE_SWR_SKX, test "x$HAVE_SWR_SKX" = xyes)
2776 AM_CONDITIONAL(HAVE_SWR_BUILTIN, test "x$HAVE_SWR_BUILTIN" = xyes)
2778 dnl We need to validate some needed dependencies for renderonly drivers.
2780 if test "x$HAVE_GALLIUM_ETNAVIV" != xyes -a "x$HAVE_GALLIUM_IMX" = xyes ; then
2781 AC_MSG_ERROR([Building with imx requires etnaviv])
2784 if test "x$HAVE_GALLIUM_VC4" != xyes -a "x$HAVE_GALLIUM_PL111" = xyes ; then
2785 AC_MSG_ERROR([Building with pl111 requires vc4])
2788 if test "x$HAVE_GALLIUM_NOUVEAU" != xyes -a "x$HAVE_GALLIUM_TEGRA" = xyes; then
2789 AC_MSG_ERROR([Building with tegra requires nouveau])
2792 detect_old_buggy_llvm() {
2793 dnl llvm-config may not give the right answer when llvm is a built as a
2794 dnl single shared library, so we must work the library name out for
2796 dnl (See https://llvm.org/bugs/show_bug.cgi?id=6823)
2797 dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
2798 LLVM_SO_NAME=LLVM-`$LLVM_CONFIG --version`
2799 AS_IF([test -f "$LLVM_LIBDIR/lib$LLVM_SO_NAME.$IMP_LIB_EXT"], [llvm_have_one_so=yes])
2801 if test "x$llvm_have_one_so" = xyes; then
2802 dnl LLVM was built using auto*, so there is only one shared object.
2803 LLVM_LIBS="-l$LLVM_SO_NAME"
2805 dnl If LLVM was built with CMake, there will be one shared object per
2807 AS_IF([test ! -f "$LLVM_LIBDIR/libLLVMTarget.$IMP_LIB_EXT"],
2808 [AC_MSG_ERROR([Could not find llvm shared libraries:
2809 Please make sure you have built llvm with the --enable-shared option
2810 and that your llvm libraries are installed in $LLVM_LIBDIR
2811 If you have installed your llvm libraries to a different directory you
2812 can use the --with-llvm-prefix= configure flag to specify this directory.
2813 NOTE: Mesa is attempting to use llvm shared libraries by default.
2814 If you do not want to build with llvm shared libraries and instead want to
2815 use llvm static libraries then add --disable-llvm-shared-libs to your configure
2816 invocation and rebuild.])])
2818 dnl We don't need to update LLVM_LIBS in this case because the LLVM
2819 dnl install uses a shared object for each component and we have
2820 dnl already added all of these objects to LLVM_LIBS.
2825 dnl Set defines and buildtime variables only when using LLVM.
2827 if test "x$enable_llvm" = xyes; then
2828 DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT -DMESA_LLVM_VERSION_PATCH=$LLVM_VERSION_PATCH"
2830 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
2831 LLVM_CFLAGS=$LLVM_CPPFLAGS # CPPFLAGS seem to be sufficient
2832 LLVM_CXXFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cxxflags"`
2834 dnl Set LLVM_LIBS - This is done after the driver configuration so
2835 dnl that drivers can add additional components to LLVM_COMPONENTS.
2836 dnl Previously, gallium drivers were updating LLVM_LIBS directly
2837 dnl by calling llvm-config --libs ${DRIVER_LLVM_COMPONENTS}, but
2838 dnl this was causing the same libraries to be appear multiple times
2841 if test $LLVM_VERSION_MAJOR -ge 4 -o $LLVM_VERSION_MAJOR -eq 3 -a $LLVM_VERSION_MINOR -ge 9; then
2842 if test "x$enable_llvm_shared_libs" = xyes; then
2843 LLVM_LIBS="`$LLVM_CONFIG --link-shared --libs ${LLVM_COMPONENTS}`"
2845 dnl Invoking llvm-config with both -libs and --system-libs produces the
2846 dnl two separate lines - each for the set of libraries.
2847 dnl Call the program twice, effectively folding them into a single line.
2848 LLVM_LIBS="`$LLVM_CONFIG --link-static --libs ${LLVM_COMPONENTS}`"
2849 dnl We need to link to llvm system libs when using static libs
2850 LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --link-static --system-libs`"
2853 LLVM_LIBS="`$LLVM_CONFIG --libs ${LLVM_COMPONENTS}`"
2854 if test "x$enable_llvm_shared_libs" = xyes; then
2855 detect_old_buggy_llvm
2857 AC_MSG_WARN([Building mesa with statically linked LLVM may cause compilation issues])
2858 dnl We need to link to llvm system libs when using static libs
2859 dnl However, only llvm 3.5+ provides --system-libs
2860 if test $LLVM_VERSION_MAJOR -ge 4 -o $LLVM_VERSION_MAJOR -eq 3 -a $LLVM_VERSION_MINOR -ge 5; then
2861 LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --system-libs`"
2866 dnl The gallium-xlib GLX and gallium OSMesa targets directly embed the
2867 dnl swr/llvmpipe driver into the final binary. Adding LLVM_LIBS results in
2868 dnl the LLVM library propagated in the Libs.private of the respective .pc
2869 dnl file which ensures complete dependency information when statically
2871 if test "x$enable_glx" == xgallium-xlib; then
2872 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $LLVM_LIBS"
2874 if test "x$enable_gallium_osmesa" = xyes; then
2875 OSMESA_PC_LIB_PRIV="$OSMESA_PC_LIB_PRIV $LLVM_LIBS"
2879 AM_CONDITIONAL(HAVE_GALLIUM_SVGA, test "x$HAVE_GALLIUM_SVGA" = xyes)
2880 AM_CONDITIONAL(HAVE_GALLIUM_I915, test "x$HAVE_GALLIUM_I915" = xyes)
2881 AM_CONDITIONAL(HAVE_GALLIUM_PL111, test "x$HAVE_GALLIUM_PL111" = xyes)
2882 AM_CONDITIONAL(HAVE_GALLIUM_R300, test "x$HAVE_GALLIUM_R300" = xyes)
2883 AM_CONDITIONAL(HAVE_GALLIUM_R600, test "x$HAVE_GALLIUM_R600" = xyes)
2884 AM_CONDITIONAL(HAVE_GALLIUM_RADEONSI, test "x$HAVE_GALLIUM_RADEONSI" = xyes)
2885 AM_CONDITIONAL(HAVE_GALLIUM_NOUVEAU, test "x$HAVE_GALLIUM_NOUVEAU" = xyes)
2886 AM_CONDITIONAL(HAVE_GALLIUM_FREEDRENO, test "x$HAVE_GALLIUM_FREEDRENO" = xyes)
2887 AM_CONDITIONAL(HAVE_GALLIUM_ETNAVIV, test "x$HAVE_GALLIUM_ETNAVIV" = xyes)
2888 AM_CONDITIONAL(HAVE_GALLIUM_IMX, test "x$HAVE_GALLIUM_IMX" = xyes)
2889 AM_CONDITIONAL(HAVE_GALLIUM_TEGRA, test "x$HAVE_GALLIUM_TEGRA" = xyes)
2890 AM_CONDITIONAL(HAVE_GALLIUM_SOFTPIPE, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes)
2891 AM_CONDITIONAL(HAVE_GALLIUM_LLVMPIPE, test "x$HAVE_GALLIUM_LLVMPIPE" = xyes)
2892 AM_CONDITIONAL(HAVE_GALLIUM_SWR, test "x$HAVE_GALLIUM_SWR" = xyes)
2893 AM_CONDITIONAL(HAVE_GALLIUM_SWRAST, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes -o \
2894 "x$HAVE_GALLIUM_LLVMPIPE" = xyes -o \
2895 "x$HAVE_GALLIUM_SWR" = xyes)
2896 AM_CONDITIONAL(HAVE_GALLIUM_V3D, test "x$HAVE_GALLIUM_V3D" = xyes)
2897 AM_CONDITIONAL(HAVE_GALLIUM_VC4, test "x$HAVE_GALLIUM_VC4" = xyes)
2898 AM_CONDITIONAL(HAVE_GALLIUM_VIRGL, test "x$HAVE_GALLIUM_VIRGL" = xyes)
2900 AM_CONDITIONAL(HAVE_GALLIUM_STATIC_TARGETS, test "x$enable_shared_pipe_drivers" = xno)
2902 if test "x$enable_dri" = xyes; then
2903 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRI"
2906 if test "x$have_drisw_kms" = xyes; then
2907 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_KMS"
2909 AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
2911 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
2912 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
2913 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
2914 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
2915 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
2916 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
2918 AM_CONDITIONAL(HAVE_RADEON_VULKAN, test "x$HAVE_RADEON_VULKAN" = xyes)
2919 AM_CONDITIONAL(HAVE_INTEL_VULKAN, test "x$HAVE_INTEL_VULKAN" = xyes)
2921 AM_CONDITIONAL(HAVE_AMD_DRIVERS, test "x$HAVE_GALLIUM_RADEONSI" = xyes -o \
2922 "x$HAVE_RADEON_VULKAN" = xyes)
2924 AM_CONDITIONAL(HAVE_BROADCOM_DRIVERS, test "x$HAVE_GALLIUM_VC4" = xyes -o \
2925 "x$HAVE_GALLIUM_V3D" = xyes)
2927 AM_CONDITIONAL(HAVE_INTEL_DRIVERS, test "x$HAVE_INTEL_VULKAN" = xyes -o \
2928 "x$HAVE_I965_DRI" = xyes)
2930 AM_CONDITIONAL(NEED_RADEON_DRM_WINSYS, test "x$HAVE_GALLIUM_R300" = xyes -o \
2931 "x$HAVE_GALLIUM_R600" = xyes -o \
2932 "x$HAVE_GALLIUM_RADEONSI" = xyes)
2933 AM_CONDITIONAL(NEED_WINSYS_XLIB, test "x$enable_glx" = xgallium-xlib)
2934 AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
2935 AM_CONDITIONAL(HAVE_GALLIUM_LLVM, test "x$enable_llvm" = xyes)
2936 AM_CONDITIONAL(USE_V3D_SIMULATOR, test x$USE_V3D_SIMULATOR = xyes)
2937 AM_CONDITIONAL(USE_VC4_SIMULATOR, test x$USE_VC4_SIMULATOR = xyes)
2939 AM_CONDITIONAL(HAVE_LIBDRM, test "x$have_libdrm" = xyes)
2940 AM_CONDITIONAL(HAVE_OSMESA, test "x$enable_osmesa" = xyes)
2941 AM_CONDITIONAL(HAVE_GALLIUM_OSMESA, test "x$enable_gallium_osmesa" = xyes)
2942 AM_CONDITIONAL(HAVE_COMMON_OSMESA, test "x$enable_osmesa" = xyes -o \
2943 "x$enable_gallium_osmesa" = xyes)
2945 AM_CONDITIONAL(HAVE_X86_ASM, test "x$asm_arch" = xx86 -o "x$asm_arch" = xx86_64)
2946 AM_CONDITIONAL(HAVE_X86_64_ASM, test "x$asm_arch" = xx86_64)
2947 AM_CONDITIONAL(HAVE_SPARC_ASM, test "x$asm_arch" = xsparc)
2948 AM_CONDITIONAL(HAVE_PPC64LE_ASM, test "x$asm_arch" = xppc64le)
2949 AM_CONDITIONAL(HAVE_AARCH64_ASM, test "x$asm_arch" = xaarch64)
2950 AM_CONDITIONAL(HAVE_ARM_ASM, test "x$asm_arch" = xarm)
2952 AC_SUBST([NINE_MAJOR], 1)
2953 AC_SUBST([NINE_MINOR], 0)
2954 AC_SUBST([NINE_PATCH], 0)
2955 AC_SUBST([NINE_VERSION], "$NINE_MAJOR.$NINE_MINOR.$NINE_PATCH")
2957 AC_SUBST([VDPAU_MAJOR], 1)
2958 AC_SUBST([VDPAU_MINOR], 0)
2960 if test "x$enable_va" = xyes; then
2961 VA_MAJOR=`$PKG_CONFIG --modversion libva | $SED -n 's/\([[^\.]]*\)\..*$/\1/p'`
2962 VA_MINOR=`$PKG_CONFIG --modversion libva | $SED -n 's/.*\.\(.*\)\..*$/\1/p'`
2964 AC_SUBST([VA_MAJOR], $VA_MAJOR)
2965 AC_SUBST([VA_MINOR], $VA_MINOR)
2967 AM_CONDITIONAL(HAVE_VULKAN_COMMON, test "x$VULKAN_DRIVERS" != "x")
2969 AC_SUBST([XVMC_MAJOR], 1)
2970 AC_SUBST([XVMC_MINOR], 0)
2972 AC_SUBST([XA_MAJOR], 2)
2973 AC_SUBST([XA_MINOR], 4)
2974 AC_SUBST([XA_PATCH], 0)
2975 AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_PATCH")
2977 AC_ARG_ENABLE(valgrind,
2978 [AS_HELP_STRING([--enable-valgrind],
2979 [Build mesa with valgrind support (default: auto)])],
2980 [VALGRIND=$enableval], [VALGRIND=auto])
2981 if test "x$VALGRIND" != xno; then
2982 PKG_CHECK_MODULES(VALGRIND, [valgrind], [have_valgrind=yes], [have_valgrind=no])
2984 AC_MSG_CHECKING([whether to enable Valgrind support])
2985 if test "x$VALGRIND" = xauto; then
2986 VALGRIND="$have_valgrind"
2989 if test "x$VALGRIND" = "xyes"; then
2990 if ! test "x$have_valgrind" = xyes; then
2991 AC_MSG_ERROR([Valgrind support required but not present])
2993 AC_DEFINE([HAVE_VALGRIND], 1, [Use valgrind intrinsics to suppress false warnings])
2996 AC_MSG_RESULT([$VALGRIND])
2998 dnl Restore LDFLAGS and CPPFLAGS
2999 LDFLAGS="$_SAVE_LDFLAGS"
3000 CPPFLAGS="$_SAVE_CPPFLAGS"
3002 dnl Suppress clang's warnings about unused CFLAGS and CXXFLAGS
3003 if test "x$acv_mesa_CLANG" = xyes; then
3004 CFLAGS="$CFLAGS -Qunused-arguments"
3005 CXXFLAGS="$CXXFLAGS -Qunused-arguments"
3008 dnl Add user CFLAGS and CXXFLAGS
3009 CFLAGS="$CFLAGS $USER_CFLAGS"
3010 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
3012 dnl Substitute the config
3013 AC_CONFIG_FILES([Makefile
3016 src/amd/vulkan/Makefile
3017 src/broadcom/Makefile
3018 src/compiler/Makefile
3021 src/egl/wayland/wayland-drm/Makefile
3022 src/egl/wayland/wayland-egl/Makefile
3023 src/egl/wayland/wayland-egl/wayland-egl.pc
3024 src/gallium/Makefile
3025 src/gallium/auxiliary/Makefile
3026 src/gallium/auxiliary/pipe-loader/Makefile
3027 src/gallium/drivers/freedreno/Makefile
3028 src/gallium/drivers/i915/Makefile
3029 src/gallium/drivers/llvmpipe/Makefile
3030 src/gallium/drivers/nouveau/Makefile
3031 src/gallium/drivers/pl111/Makefile
3032 src/gallium/drivers/r300/Makefile
3033 src/gallium/drivers/r600/Makefile
3034 src/gallium/drivers/radeonsi/Makefile
3035 src/gallium/drivers/softpipe/Makefile
3036 src/gallium/drivers/svga/Makefile
3037 src/gallium/drivers/swr/Makefile
3038 src/gallium/drivers/tegra/Makefile
3039 src/gallium/drivers/etnaviv/Makefile
3040 src/gallium/drivers/imx/Makefile
3041 src/gallium/drivers/v3d/Makefile
3042 src/gallium/drivers/vc4/Makefile
3043 src/gallium/drivers/virgl/Makefile
3044 src/gallium/state_trackers/clover/Makefile
3045 src/gallium/state_trackers/dri/Makefile
3046 src/gallium/state_trackers/glx/xlib/Makefile
3047 src/gallium/state_trackers/nine/Makefile
3048 src/gallium/state_trackers/omx/Makefile
3049 src/gallium/state_trackers/omx/bellagio/Makefile
3050 src/gallium/state_trackers/omx/tizonia/Makefile
3051 src/gallium/state_trackers/osmesa/Makefile
3052 src/gallium/state_trackers/va/Makefile
3053 src/gallium/state_trackers/vdpau/Makefile
3054 src/gallium/state_trackers/xa/Makefile
3055 src/gallium/state_trackers/xa/xa_tracker.h
3056 src/gallium/state_trackers/xvmc/Makefile
3057 src/gallium/targets/d3dadapter9/Makefile
3058 src/gallium/targets/d3dadapter9/d3d.pc
3059 src/gallium/targets/dri/Makefile
3060 src/gallium/targets/libgl-xlib/Makefile
3061 src/gallium/targets/omx/Makefile
3062 src/gallium/targets/opencl/Makefile
3063 src/gallium/targets/opencl/mesa.icd
3064 src/gallium/targets/osmesa/Makefile
3065 src/gallium/targets/osmesa/osmesa.pc
3066 src/gallium/targets/pipe-loader/Makefile
3067 src/gallium/targets/va/Makefile
3068 src/gallium/targets/vdpau/Makefile
3069 src/gallium/targets/xa/Makefile
3070 src/gallium/targets/xa/xatracker.pc
3071 src/gallium/targets/xvmc/Makefile
3072 src/gallium/tests/trivial/Makefile
3073 src/gallium/tests/unit/Makefile
3074 src/gallium/winsys/etnaviv/drm/Makefile
3075 src/gallium/winsys/imx/drm/Makefile
3076 src/gallium/winsys/freedreno/drm/Makefile
3077 src/gallium/winsys/i915/drm/Makefile
3078 src/gallium/winsys/nouveau/drm/Makefile
3079 src/gallium/winsys/pl111/drm/Makefile
3080 src/gallium/winsys/radeon/drm/Makefile
3081 src/gallium/winsys/amdgpu/drm/Makefile
3082 src/gallium/winsys/svga/drm/Makefile
3083 src/gallium/winsys/sw/dri/Makefile
3084 src/gallium/winsys/sw/kms-dri/Makefile
3085 src/gallium/winsys/sw/null/Makefile
3086 src/gallium/winsys/sw/wrapper/Makefile
3087 src/gallium/winsys/sw/xlib/Makefile
3088 src/gallium/winsys/tegra/drm/Makefile
3089 src/gallium/winsys/v3d/drm/Makefile
3090 src/gallium/winsys/vc4/drm/Makefile
3091 src/gallium/winsys/virgl/drm/Makefile
3092 src/gallium/winsys/virgl/vtest/Makefile
3096 src/glx/apple/Makefile
3097 src/glx/tests/Makefile
3098 src/glx/windows/Makefile
3099 src/glx/windows/windowsdriproto.pc
3104 src/mapi/es1api/glesv1_cm.pc
3105 src/mapi/es2api/glesv2.pc
3106 src/mapi/glapi/gen/Makefile
3109 src/mesa/drivers/dri/dri.pc
3110 src/mesa/drivers/dri/common/Makefile
3111 src/mesa/drivers/dri/i915/Makefile
3112 src/mesa/drivers/dri/i965/Makefile
3113 src/mesa/drivers/dri/Makefile
3114 src/mesa/drivers/dri/nouveau/Makefile
3115 src/mesa/drivers/dri/r200/Makefile
3116 src/mesa/drivers/dri/radeon/Makefile
3117 src/mesa/drivers/dri/swrast/Makefile
3118 src/mesa/drivers/osmesa/Makefile
3119 src/mesa/drivers/osmesa/osmesa.pc
3120 src/mesa/drivers/x11/Makefile
3121 src/mesa/main/tests/Makefile
3122 src/mesa/state_tracker/tests/Makefile
3124 src/util/tests/hash_table/Makefile
3125 src/util/tests/string_buffer/Makefile
3126 src/util/xmlpool/Makefile
3127 src/vulkan/Makefile])
3131 # Fix up dependencies in *.Plo files, where we changed the extension of a
3133 $SED -i -e 's/brw_blorp.cpp/brw_blorp.c/' src/mesa/drivers/dri/i965/.deps/brw_blorp.Plo
3135 rm -f src/compiler/spirv/spirv_info.lo
3136 echo "# dummy" > src/compiler/spirv/.deps/spirv_info.Plo
3138 rm -f src/compiler/nir/.deps/nir_intrinsics.Plo
3139 echo "# dummy" > src/compiler/nir/.deps/nir_intrinsics.Plo
3142 dnl Output some configuration info for the user
3145 echo " prefix: $prefix"
3146 echo " exec_prefix: $exec_prefix"
3147 echo " libdir: $libdir"
3148 echo " includedir: $includedir"
3152 echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
3156 case "x$enable_osmesa$enable_gallium_osmesa" in
3158 echo " OSMesa: lib$OSMESA_LIB (Gallium)"
3161 echo " OSMesa: lib$OSMESA_LIB"
3169 if test "x$enable_dri" != xno; then
3170 echo " DRI platform: $dri_platform"
3171 if test -z "$DRI_DIRS"; then
3172 echo " DRI drivers: no"
3174 echo " DRI drivers: $DRI_DIRS"
3176 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
3179 case "x$enable_glx" in
3181 echo " GLX: DRI-based"
3184 echo " GLX: Xlib-based"
3187 echo " GLX: Xlib-based (Gallium)"
3190 echo " GLX: $enable_glx"
3196 echo " EGL: $enable_egl"
3197 if test "$enable_egl" = yes; then
3200 if test "x$enable_dri" != "xno"; then
3201 egl_drivers="$egl_drivers builtin:egl_dri2"
3203 if test "x$enable_dri3" != "xno"; then
3204 egl_drivers="$egl_drivers builtin:egl_dri3"
3207 echo " EGL drivers: $egl_drivers"
3209 if test "x$enable_gbm" = xyes; then
3215 echo " EGL/Vulkan/VL platforms: $platforms"
3219 if test "x$VULKAN_DRIVERS" != x; then
3220 echo " Vulkan drivers: $VULKAN_DRIVERS"
3221 echo " Vulkan ICD dir: $VULKAN_ICD_INSTALL_DIR"
3223 echo " Vulkan drivers: no"
3227 if test "x$enable_llvm" = xyes; then
3229 echo " llvm-config: $LLVM_CONFIG"
3230 echo " llvm-version: $LLVM_VERSION"
3236 if test -n "$with_gallium_drivers"; then
3237 echo " Gallium drivers: $gallium_drivers"
3238 echo " Gallium st: $gallium_st"
3244 if test "x$enable_gallium_extra_hud" != xyes; then
3245 echo " HUD extra stats: no"
3247 echo " HUD extra stats: yes"
3250 if test "x$enable_lmsensors" != xyes; then
3251 echo " HUD lmsensors: no"
3253 echo " HUD lmsensors: yes"
3257 if test "x$HAVE_GALLIUM_SWR" != x; then
3258 if test "x$HAVE_SWR_BUILTIN" = xyes; then
3259 echo " SWR archs: $swr_archs (builtin)"
3261 echo " SWR archs: $swr_archs"
3267 echo " Shared libs: $enable_shared"
3268 echo " Static libs: $enable_static"
3269 echo " Shared-glapi: $enable_shared_glapi"
3271 dnl Compiler options
3272 # cleanup the CFLAGS/CXXFLAGS/LDFLAGS/DEFINES vars
3273 cflags=`echo $CFLAGS | \
3274 $SED 's/^ *//;s/ */ /;s/ *$//'`
3275 cxxflags=`echo $CXXFLAGS | \
3276 $SED 's/^ *//;s/ */ /;s/ *$//'`
3277 ldflags=`echo $LDFLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
3278 defines=`echo $DEFINES | $SED 's/^ *//;s/ */ /;s/ *$//'`
3280 echo " CFLAGS: $cflags"
3281 echo " CXXFLAGS: $cxxflags"
3282 echo " CXX11_CXXFLAGS: $CXX11_CXXFLAGS"
3283 echo " LDFLAGS: $ldflags"
3284 echo " Macros: $defines"
3286 if test "x$enable_llvm" = xyes; then
3287 echo " LLVM_CFLAGS: $LLVM_CFLAGS"
3288 echo " LLVM_CXXFLAGS: $LLVM_CXXFLAGS"
3289 echo " LLVM_CPPFLAGS: $LLVM_CPPFLAGS"
3290 echo " LLVM_LDFLAGS: $LLVM_LDFLAGS"
3293 echo " PYTHON2: $PYTHON2"
3296 echo " Run '${MAKE-make}' to build Mesa"