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 dnl Versions for external dependencies
70 LIBDRM_REQUIRED=2.4.66
71 LIBDRM_RADEON_REQUIRED=2.4.56
72 LIBDRM_AMDGPU_REQUIRED=2.4.63
73 LIBDRM_INTEL_REQUIRED=2.4.75
74 LIBDRM_NVVIEUX_REQUIRED=2.4.66
75 LIBDRM_NOUVEAU_REQUIRED=2.4.66
76 LIBDRM_FREEDRENO_REQUIRED=2.4.74
77 LIBDRM_VC4_REQUIRED=2.4.69
78 LIBDRM_ETNAVIV_REQUIRED=2.4.74
79 DRI2PROTO_REQUIRED=2.6
80 DRI3PROTO_REQUIRED=1.0
81 PRESENTPROTO_REQUIRED=1.0
82 GLPROTO_REQUIRED=1.4.14
83 LIBOMXIL_BELLAGIO_REQUIRED=0.0
90 XSHMFENCE_REQUIRED=1.1
92 PYTHON_MAKO_REQUIRED=0.8.0
93 LIBSENSORS_REQUIRED=4.0.0
96 LLVM_REQUIRED_GALLIUM=3.3.0
97 LLVM_REQUIRED_OPENCL=3.6.0
98 LLVM_REQUIRED_R600=3.6.0
99 LLVM_REQUIRED_RADEONSI=3.6.0
100 LLVM_REQUIRED_RADV=3.9.0
101 LLVM_REQUIRED_SWR=3.6.0
110 AC_CHECK_PROGS([PYTHON2], [python2.7 python2 python])
117 LT_INIT([disable-static])
119 AC_CHECK_PROG(RM, rm, [rm -f])
120 AC_CHECK_PROG(XXD, xxd, [xxd])
123 AS_IF([test ! -f "$srcdir/src/compiler/glsl/glcpp/glcpp-parse.c"],
124 [AC_MSG_ERROR([bison not found - unable to compile glcpp-parse.y])]))
126 AS_IF([test ! -f "$srcdir/src/compiler/glsl/glcpp/glcpp-lex.c"],
127 [AC_MSG_ERROR([flex not found - unable to compile glcpp-lex.l])]))
129 AC_CHECK_PROG(INDENT, indent, indent, cat)
130 if test "x$INDENT" != "xcat"; then
131 # Only GNU indent is supported
132 INDENT_VERSION=`indent --version | grep GNU`
133 if test $? -eq 0; then
134 AC_SUBST(INDENT_FLAGS, '-i4 -nut -br -brs -npcs -ce -TGLubyte -TGLbyte -TBool')
140 AX_CHECK_PYTHON_MAKO_MODULE($PYTHON_MAKO_REQUIRED)
142 if test -z "$PYTHON2"; then
143 if test ! -f "$srcdir/src/util/format_srgb.c"; then
144 AC_MSG_ERROR([Python not found - unable to generate sources])
147 if test "x$acv_mako_found" = xno; then
148 if test ! -f "$srcdir/src/mesa/main/format_unpack.c"; then
149 AC_MSG_ERROR([Python mako module v$PYTHON_MAKO_REQUIRED or higher not found])
156 dnl We need a POSIX shell for parts of the build. Assume we have one
160 # Solaris /bin/sh is too old/non-POSIX compliant
161 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
166 dnl clang is mostly GCC-compatible, but its version is much lower,
167 dnl so we have to check for it.
168 AC_MSG_CHECKING([if compiling with clang])
171 [AC_LANG_PROGRAM([], [[
176 [acv_mesa_CLANG=yes], [acv_mesa_CLANG=no])
178 AC_MSG_RESULT([$acv_mesa_CLANG])
180 dnl If we're using GCC, make sure that it is at least version 4.2.0. Older
181 dnl versions are explictly not supported.
184 if test "x$GCC" = xyes -a "x$acv_mesa_CLANG" = xno; then
185 AC_MSG_CHECKING([whether gcc version is sufficient])
189 GCC_VERSION=`$CC -dumpversion`
190 if test $? -eq 0; then
191 GCC_VERSION_MAJOR=`echo $GCC_VERSION | cut -d. -f1`
192 GCC_VERSION_MINOR=`echo $GCC_VERSION | cut -d. -f2`
195 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 2 ; then
197 AC_MSG_ERROR([If using GCC, version 4.2.0 or later is required.])
202 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6 ; then
205 if test "x$cross_compiling" = xyes; then
210 dnl We don't support building Mesa with Sun C compiler
211 dnl https://bugs.freedesktop.org/show_bug.cgi?id=93189
212 AC_CHECK_DECL([__SUNPRO_C], [SUNCC=yes], [SUNCC=no])
213 if test "x$SUNCC" = xyes; then
214 AC_MSG_ERROR([Building with Sun C compiler is not supported, use GCC instead.])
217 dnl Check for compiler builtins
218 AX_GCC_BUILTIN([__builtin_bswap32])
219 AX_GCC_BUILTIN([__builtin_bswap64])
220 AX_GCC_BUILTIN([__builtin_clz])
221 AX_GCC_BUILTIN([__builtin_clzll])
222 AX_GCC_BUILTIN([__builtin_ctz])
223 AX_GCC_BUILTIN([__builtin_expect])
224 AX_GCC_BUILTIN([__builtin_ffs])
225 AX_GCC_BUILTIN([__builtin_ffsll])
226 AX_GCC_BUILTIN([__builtin_popcount])
227 AX_GCC_BUILTIN([__builtin_popcountll])
228 AX_GCC_BUILTIN([__builtin_unreachable])
230 AX_GCC_FUNC_ATTRIBUTE([const])
231 AX_GCC_FUNC_ATTRIBUTE([flatten])
232 AX_GCC_FUNC_ATTRIBUTE([format])
233 AX_GCC_FUNC_ATTRIBUTE([malloc])
234 AX_GCC_FUNC_ATTRIBUTE([packed])
235 AX_GCC_FUNC_ATTRIBUTE([pure])
236 AX_GCC_FUNC_ATTRIBUTE([returns_nonnull])
237 AX_GCC_FUNC_ATTRIBUTE([unused])
238 AX_GCC_FUNC_ATTRIBUTE([visibility])
239 AX_GCC_FUNC_ATTRIBUTE([warn_unused_result])
240 AX_GCC_FUNC_ATTRIBUTE([weak])
241 AX_GCC_FUNC_ATTRIBUTE([alias])
243 AM_CONDITIONAL([GEN_ASM_OFFSETS], test "x$GEN_ASM_OFFSETS" = xyes)
245 dnl Make sure the pkg-config macros are defined
246 m4_ifndef([PKG_PROG_PKG_CONFIG],
247 [m4_fatal([Could not locate the pkg-config autoconf macros.
248 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
249 are in a different location, try setting the environment variable
250 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
251 PKG_PROG_PKG_CONFIG()
253 dnl LIB_DIR - library basename
254 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
257 dnl Cache LDFLAGS and CPPFLAGS so we can add to them and restore later
258 _SAVE_LDFLAGS="$LDFLAGS"
259 _SAVE_CPPFLAGS="$CPPFLAGS"
262 DEFINES="-D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS"
269 linux*|*-gnu*|gnu*|cygwin*)
270 DEFINES="$DEFINES -D_GNU_SOURCE"
273 DEFINES="$DEFINES -DSVR4"
277 AM_CONDITIONAL(HAVE_ANDROID, test "x$android" = xyes)
279 dnl Add flags for gcc and g++
280 if test "x$GCC" = xyes; then
281 CFLAGS="$CFLAGS -Wall"
283 if test "x$USE_GNU99" = xyes; then
284 CFLAGS="$CFLAGS -std=gnu99"
286 CFLAGS="$CFLAGS -std=c99"
289 # Enable -Werror=implicit-function-declaration and
290 # -Werror=missing-prototypes, if available, or otherwise, just
291 # -Wmissing-prototypes. This is particularly useful to avoid
292 # generating a loadable driver module that has undefined symbols.
293 save_CFLAGS="$CFLAGS"
294 AC_MSG_CHECKING([whether $CC supports -Werror=missing-prototypes])
295 CFLAGS="$CFLAGS -Werror=implicit-function-declaration"
296 CFLAGS="$CFLAGS -Werror=missing-prototypes"
297 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
298 AC_MSG_RESULT([yes]),
299 [CFLAGS="$save_CFLAGS -Wmissing-prototypes";
300 AC_MSG_RESULT([no])]);
302 # Enable -fvisibility=hidden if using a gcc that supports it
303 save_CFLAGS="$CFLAGS"
304 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
305 VISIBILITY_CFLAGS="-fvisibility=hidden"
306 CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
307 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
308 [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
310 # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
313 # We don't want floating-point math functions to set errno or trap
314 CFLAGS="$CFLAGS -fno-math-errno -fno-trapping-math"
316 # Flags to help ensure that certain portions of the code -- and only those
317 # portions -- can be built with MSVC:
318 # - src/util, src/gallium/auxiliary, rc/gallium/drivers/llvmpipe, and
319 # - non-Linux/Posix OpenGL portions needs to build on MSVC 2013 (which
320 # supports most of C99)
321 # - the rest has no compiler compiler restrictions
322 MSVC2013_COMPAT_CFLAGS="-Werror=pointer-arith"
323 MSVC2013_COMPAT_CXXFLAGS="-Werror=pointer-arith"
325 # Enable -Werror=vla if compiler supports it
326 save_CFLAGS="$CFLAGS"
327 AC_MSG_CHECKING([whether $CC supports -Werror=vla])
328 CFLAGS="$CFLAGS -Werror=vla"
329 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
330 [MSVC2013_COMPAT_CFLAGS="$MSVC2013_COMPAT_CFLAGS -Werror=vla";
331 MSVC2013_COMPAT_CXXFLAGS="$MSVC2013_COMPAT_CXXFLAGS -Werror=vla";
332 AC_MSG_RESULT([yes])],
333 AC_MSG_RESULT([no]));
334 CFLAGS="$save_CFLAGS"
336 if test "x$GXX" = xyes; then
337 CXXFLAGS="$CXXFLAGS -Wall"
339 # Enable -fvisibility=hidden if using a gcc that supports it
340 save_CXXFLAGS="$CXXFLAGS"
341 AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
342 VISIBILITY_CXXFLAGS="-fvisibility=hidden"
343 CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
345 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
346 [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
349 # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
350 CXXFLAGS=$save_CXXFLAGS
352 # We don't want floating-point math functions to set errno or trap
353 CXXFLAGS="$CXXFLAGS -fno-math-errno -fno-trapping-math"
356 AC_SUBST([MSVC2013_COMPAT_CFLAGS])
357 AC_SUBST([MSVC2013_COMPAT_CXXFLAGS])
359 dnl even if the compiler appears to support it, using visibility attributes isn't
360 dnl going to do anything useful currently on cygwin apart from emit lots of warnings
364 VISIBILITY_CXXFLAGS=""
368 AC_SUBST([VISIBILITY_CFLAGS])
369 AC_SUBST([VISIBILITY_CXXFLAGS])
372 dnl Optional flags, check for compiler support
374 SSE41_CFLAGS="-msse4.1"
375 dnl Code compiled by GCC with -msse* assumes a 16 byte aligned
376 dnl stack, but on x86-32 such alignment is not guaranteed.
377 case "$target_cpu" in
379 SSE41_CFLAGS="$SSE41_CFLAGS -mstackrealign"
382 save_CFLAGS="$CFLAGS"
383 CFLAGS="$SSE41_CFLAGS $CFLAGS"
384 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
385 #include <smmintrin.h>
388 __m128i a = _mm_set1_epi32 (param), b = _mm_set1_epi32 (param + 1), c;
389 c = _mm_max_epu32(a, b);
390 return _mm_cvtsi128_si32(c);
391 }]])], SSE41_SUPPORTED=1)
392 CFLAGS="$save_CFLAGS"
393 if test "x$SSE41_SUPPORTED" = x1; then
394 DEFINES="$DEFINES -DUSE_SSE41"
396 AM_CONDITIONAL([SSE41_SUPPORTED], [test x$SSE41_SUPPORTED = x1])
397 AC_SUBST([SSE41_CFLAGS], $SSE41_CFLAGS)
399 dnl Check for new-style atomic builtins
400 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
403 return __atomic_load_n(&n, __ATOMIC_ACQUIRE);
404 }]])], GCC_ATOMIC_BUILTINS_SUPPORTED=1)
405 if test "x$GCC_ATOMIC_BUILTINS_SUPPORTED" = x1; then
406 DEFINES="$DEFINES -DUSE_GCC_ATOMIC_BUILTINS"
408 AM_CONDITIONAL([GCC_ATOMIC_BUILTINS_SUPPORTED], [test x$GCC_ATOMIC_BUILTINS_SUPPORTED = x1])
410 dnl Check for Endianness
418 dnl Check for POWER8 Architecture
419 PWR8_CFLAGS="-mpower8-vector"
420 have_pwr8_intrinsics=no
421 AC_MSG_CHECKING(whether gcc supports -mpower8-vector)
423 CFLAGS="$PWR8_CFLAGS $CFLAGS"
424 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
425 #if defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8))
426 #error "Need GCC >= 4.8 for sane POWER8 support"
430 vector unsigned char r;
431 vector unsigned int v = vec_splat_u32 (1);
432 r = __builtin_vec_vgbbd ((vector unsigned char) v);
434 }]])], have_pwr8_intrinsics=yes)
438 [AC_HELP_STRING([--disable-pwr8-inst],
439 [disable POWER8-specific instructions])],
440 [enable_pwr8=$enableval], [enable_pwr8=auto])
442 if test "x$enable_pwr8" = xno ; then
443 have_pwr8_intrinsics=disabled
446 if test $have_pwr8_intrinsics = yes && test $little_endian = yes ; then
447 DEFINES="$DEFINES -D_ARCH_PWR8"
448 CXXFLAGS="$CXXFLAGS $PWR8_CFLAGS"
449 CFLAGS="$CFLAGS $PWR8_CFLAGS"
454 AC_MSG_RESULT($have_pwr8_intrinsics)
455 if test "x$enable_pwr8" = xyes && test $have_pwr8_intrinsics = no ; then
456 AC_MSG_ERROR([POWER8 compiler support not detected])
459 if test $have_pwr8_intrinsics = yes && test $little_endian = no ; then
460 AC_MSG_WARN([POWER8 optimization is enabled only on POWER8 Little-Endian])
463 AC_SUBST([PWR8_CFLAGS], $PWR8_CFLAGS)
465 dnl Can't have static and shared libraries, default to static if user
466 dnl explicitly requested. If both disabled, set to static since shared
467 dnl was explicitly requested.
468 case "x$enable_static$enable_shared" in
470 AC_MSG_ERROR([Cannot enable both static and shared. Building using --enable-shared is strongly recommended])
473 AC_MSG_ERROR([Cannot disable both static and shared. Building using --enable-shared is strongly recommended])
477 AM_CONDITIONAL(BUILD_SHARED, test "x$enable_shared" = xyes)
480 dnl other compiler options
482 AC_ARG_ENABLE([debug],
483 [AS_HELP_STRING([--enable-debug],
484 [use debug compiler flags and macros @<:@default=disabled@:>@])],
485 [enable_debug="$enableval"],
489 AC_ARG_ENABLE([profile],
490 [AS_HELP_STRING([--enable-profile],
491 [enable profiling of code @<:@default=disabled@:>@])],
492 [enable_profile="$enableval"],
496 if test "x$enable_profile" = xyes; then
497 DEFINES="$DEFINES -DPROFILE"
498 if test "x$GCC" = xyes; then
499 CFLAGS="$CFLAGS -fno-omit-frame-pointer"
501 if test "x$GXX" = xyes; then
502 CXXFLAGS="$CXXFLAGS -fno-omit-frame-pointer"
506 if test "x$enable_debug" = xyes; then
507 DEFINES="$DEFINES -DDEBUG"
508 if test "x$enable_profile" = xyes; then
509 AC_MSG_WARN([Debug and Profile are enabled at the same time])
511 if test "x$GCC" = xyes; then
512 if ! echo "$CFLAGS" | grep -q -e '-g'; then
515 if ! echo "$CFLAGS" | grep -q -e '-O'; then
519 if test "x$GXX" = xyes; then
520 if ! echo "$CXXFLAGS" | grep -q -e '-g'; then
521 CXXFLAGS="$CXXFLAGS -g"
523 if ! echo "$CXXFLAGS" | grep -q -e '-O'; then
524 CXXFLAGS="$CXXFLAGS -O0"
528 DEFINES="$DEFINES -DNDEBUG"
532 dnl Check if linker supports -Bsymbolic
534 save_LDFLAGS=$LDFLAGS
535 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic"
536 AC_MSG_CHECKING([if ld supports -Bsymbolic])
538 [AC_LANG_SOURCE([int main() { return 0;}])],
539 [AC_MSG_RESULT([yes])
540 BSYMBOLIC="-Wl,-Bsymbolic";],
543 LDFLAGS=$save_LDFLAGS
545 AC_SUBST([BSYMBOLIC])
548 dnl Check if linker supports garbage collection
550 save_LDFLAGS=$LDFLAGS
551 LDFLAGS="$LDFLAGS -Wl,--gc-sections"
552 AC_MSG_CHECKING([whether ld supports --gc-sections])
554 [AC_LANG_SOURCE([static char UnusedFunc() { return 5; } int main() { return 0;}])],
555 [AC_MSG_RESULT([yes])
556 GC_SECTIONS="-Wl,--gc-sections";],
559 LDFLAGS=$save_LDFLAGS
561 AC_SUBST([GC_SECTIONS])
564 dnl OpenBSD does not have DT_NEEDED entries for libc by design
565 dnl so when these flags are passed to ld via libtool the checks will fail
569 LD_NO_UNDEFINED="" ;;
571 LD_NO_UNDEFINED="-Wl,--no-undefined" ;;
574 AC_SUBST([LD_NO_UNDEFINED])
577 dnl Check if linker supports version scripts
579 AC_MSG_CHECKING([if the linker supports version-scripts])
580 save_LDFLAGS=$LDFLAGS
581 LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map"
582 cat > conftest.map <<EOF
592 [AC_LANG_SOURCE([int main() { return 0;}])],
593 [have_ld_version_script=yes;AC_MSG_RESULT(yes)],
594 [have_ld_version_script=no; AC_MSG_RESULT(no)])
595 LDFLAGS=$save_LDFLAGS
596 AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes")
599 dnl Check if linker supports dynamic list files
601 AC_MSG_CHECKING([if the linker supports --dynamic-list])
602 save_LDFLAGS=$LDFLAGS
603 LDFLAGS="$LDFLAGS -Wl,--dynamic-list=conftest.dyn"
604 cat > conftest.dyn <<EOF
606 radeon_drm_winsys_create;
610 [AC_LANG_SOURCE([int main() { return 0;}])],
611 [have_ld_dynamic_list=yes;AC_MSG_RESULT(yes)],
612 [have_ld_dynamic_list=no; AC_MSG_RESULT(no)])
613 LDFLAGS=$save_LDFLAGS
614 AM_CONDITIONAL(HAVE_LD_DYNAMIC_LIST, test "$have_ld_dynamic_list" = "yes")
617 dnl compatibility symlinks
621 HAVE_COMPAT_SYMLINKS=yes ;;
623 HAVE_COMPAT_SYMLINKS=no ;;
626 AM_CONDITIONAL(HAVE_COMPAT_SYMLINKS, test "x$HAVE_COMPAT_SYMLINKS" = xyes)
631 dnl Unfortunately we need to do a few things that libtool can't help us with,
632 dnl so we need some knowledge of shared library filenames:
634 dnl LIB_EXT is the extension used when creating symlinks for alternate
635 dnl filenames for a shared library which will be dynamically loaded
637 dnl IMP_LIB_EXT is the extension used when checking for the presence of a
638 dnl the file for a shared library we wish to link with
662 dnl potentially-infringing-but-nobody-knows-for-sure stuff
664 AC_ARG_ENABLE([texture-float],
665 [AS_HELP_STRING([--enable-texture-float],
666 [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
667 [enable_texture_float="$enableval"],
668 [enable_texture_float=no]
670 if test "x$enable_texture_float" = xyes; then
671 AC_MSG_WARN([Floating-point textures enabled.])
672 AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
673 DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
677 dnl Arch/platform-specific settings
680 [AS_HELP_STRING([--disable-asm],
681 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
682 [enable_asm="$enableval"],
686 AC_MSG_CHECKING([whether to enable assembly])
687 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
688 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
689 if test "x$enable_asm" = xyes -a "x$cross_compiling" = xyes; then
691 i?86 | x86_64 | amd64)
692 if test "x$host_cpu" != "x$target_cpu"; then
694 AC_MSG_RESULT([no, cross compiling])
699 # check for supported arches
700 if test "x$enable_asm" = xyes; then
704 linux* | *freebsd* | dragonfly* | *netbsd* | openbsd* | gnu*)
711 linux* | *freebsd* | dragonfly* | *netbsd* | openbsd*)
727 DEFINES="$DEFINES -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
728 AC_MSG_RESULT([yes, x86])
731 DEFINES="$DEFINES -DUSE_X86_64_ASM"
732 AC_MSG_RESULT([yes, x86_64])
735 DEFINES="$DEFINES -DUSE_SPARC_ASM"
736 AC_MSG_RESULT([yes, sparc])
739 AC_MSG_RESULT([no, platform not supported])
745 AC_CHECK_HEADER([xlocale.h], [DEFINES="$DEFINES -DHAVE_XLOCALE_H"])
746 AC_CHECK_HEADER([sys/sysctl.h], [DEFINES="$DEFINES -DHAVE_SYS_SYSCTL_H"])
747 AC_CHECK_FUNC([strtof], [DEFINES="$DEFINES -DHAVE_STRTOF"])
748 AC_CHECK_FUNC([mkostemp], [DEFINES="$DEFINES -DHAVE_MKOSTEMP"])
750 dnl Check to see if dlopen is in default libraries (like Solaris, which
751 dnl has it in libc), or if libdl is needed to get it.
752 AC_CHECK_FUNC([dlopen], [DEFINES="$DEFINES -DHAVE_DLOPEN"],
753 [AC_CHECK_LIB([dl], [dlopen],
754 [DEFINES="$DEFINES -DHAVE_DLOPEN"; DLOPEN_LIBS="-ldl"])])
755 AC_SUBST([DLOPEN_LIBS])
757 dnl Check if that library also has dladdr
759 LIBS="$LIBS $DLOPEN_LIBS"
760 AC_CHECK_FUNCS([dladdr])
767 AC_CHECK_FUNCS([clock_gettime], [CLOCK_LIB=],
768 [AC_CHECK_LIB([rt], [clock_gettime], [CLOCK_LIB=-lrt],
769 [AC_MSG_ERROR([Could not find clock_gettime])])])
770 AC_SUBST([CLOCK_LIB])
774 dnl See if posix_memalign is available
775 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
777 dnl Check for pthreads
779 if test "x$ax_pthread_ok" = xno; then
780 AC_MSG_ERROR([Building mesa on this platform requires pthreads])
782 dnl AX_PTHREADS leaves PTHREAD_LIBS empty for gcc and sets PTHREAD_CFLAGS
783 dnl to -pthread, which causes problems if we need -lpthread to appear in
784 dnl pkgconfig files. Since Android doesn't have a pthread lib, this check
785 dnl is not valid for that platform.
786 if test "x$android" = xno; then
787 test -z "$PTHREAD_LIBS" && PTHREAD_LIBS="-lpthread"
790 dnl pthread-stubs is mandatory on targets where it exists
793 pthread_stubs_possible="no"
796 pthread_stubs_possible="yes"
800 if test "x$pthread_stubs_possible" = xyes; then
801 PKG_CHECK_MODULES(PTHREADSTUBS, pthread-stubs)
802 AC_SUBST(PTHREADSTUBS_CFLAGS)
803 AC_SUBST(PTHREADSTUBS_LIBS)
806 dnl SELinux awareness.
807 AC_ARG_ENABLE([selinux],
808 [AS_HELP_STRING([--enable-selinux],
809 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
810 [MESA_SELINUX="$enableval"],
812 if test "x$enable_selinux" = "xyes"; then
813 PKG_CHECK_MODULES([SELINUX], [libselinux], [],
814 [AC_CHECK_HEADER([selinux/selinux.h],[],
815 [AC_MSG_ERROR([SELinux headers not found])])
816 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
817 [AC_MSG_ERROR([SELinux library not found])])
818 SELINUX_LIBS="-lselinux"])
819 DEFINES="$DEFINES -DMESA_SELINUX"
821 AC_SUBST([SELINUX_CFLAGS])
822 AC_SUBST([SELINUX_LIBS])
827 AC_ARG_ENABLE([llvm-shared-libs],
828 [AS_HELP_STRING([--enable-llvm-shared-libs],
829 [link with LLVM shared libraries @<:@default=enabled@:>@])],
830 [enable_llvm_shared_libs="$enableval"],
831 [enable_llvm_shared_libs=yes])
833 AC_ARG_WITH([llvm-prefix],
834 [AS_HELP_STRING([--with-llvm-prefix],
835 [Prefix for LLVM installations in non-standard locations])],
836 [llvm_prefix="$withval"],
839 PKG_CHECK_MODULES([LIBELF], [libelf], [have_libelf=yes], [have_libelf=no])
840 if test "x$have_libelf" = xno; then
843 AC_CHECK_LIB([elf], [elf_memory], [have_libelf=yes;LIBELF_LIBS=-lelf], [have_libelf=no])
844 AC_SUBST([LIBELF_LIBS])
845 AC_SUBST([LIBELF_CFLAGS])
848 if test -z "$LLVM_CONFIG"; then
849 if test -n "$llvm_prefix"; then
850 AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no], ["$llvm_prefix/bin"])
852 AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no])
856 llvm_add_component() {
857 new_llvm_component=$1
860 if $LLVM_CONFIG --components | grep -iqw $new_llvm_component ; then
861 LLVM_COMPONENTS="${LLVM_COMPONENTS} ${new_llvm_component}"
863 AC_MSG_ERROR([LLVM component '$new_llvm_component' not enabled in your LLVM build. Required by $driver_name.])
867 llvm_add_default_components() {
870 # Required default components
871 llvm_add_component "bitwriter" $driver_name
872 llvm_add_component "engine" $driver_name
873 llvm_add_component "mcdisassembler" $driver_name
874 llvm_add_component "mcjit" $driver_name
876 # Optional default components
877 if $LLVM_CONFIG --components | grep -iqw inteljitevents ; then
878 LLVM_COMPONENTS="$LLVM_COMPONENTS inteljitevents"
886 if $LLVM_CONFIG --targets-built | grep -iqw $new_llvm_target ; then
887 llvm_add_component $new_llvm_target $driver_name
889 AC_MSG_ERROR([LLVM target '$new_llvm_target' not enabled in your LLVM build. Required by $driver_name.])
893 # Call this inside ` ` to get the return value.
894 # $1 is the llvm-config command with arguments.
895 strip_unwanted_llvm_flags() {
896 # Use \> (marks the end of the word)
898 -e 's/-march=\S*//g' \
899 -e 's/-mtune=\S*//g' \
900 -e 's/-mcpu=\S*//g' \
901 -e 's/-DNDEBUG\>//g' \
902 -e 's/-D_GNU_SOURCE\>//g' \
903 -e 's/-pedantic\>//g' \
904 -e 's/-Wcovered-switch-default\>//g' \
908 -e 's/-Wcast-qual\>//g' \
909 -e 's/-Woverloaded-virtual\>//g' \
910 -e 's/-fcolor-diagnostics\>//g' \
911 -e 's/-fdata-sections\>//g' \
912 -e 's/-ffunction-sections\>//g' \
913 -e 's/-fno-exceptions\>//g' \
914 -e 's/-fomit-frame-pointer\>//g' \
915 -e 's/-fvisibility-inlines-hidden\>//g' \
917 -e 's/-fstack-protector-strong\>//g'
920 llvm_set_environment_variables() {
921 if test "x$LLVM_CONFIG" != xno; then
922 LLVM_VERSION=`$LLVM_CONFIG --version | egrep -o '^[[0-9.]]+'`
923 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
924 LLVM_BINDIR=`$LLVM_CONFIG --bindir`
925 LLVM_CPPFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cppflags"`
926 LLVM_CFLAGS=$LLVM_CPPFLAGS # CPPFLAGS seem to be sufficient
927 LLVM_CXXFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cxxflags"`
928 LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
929 LLVM_LIBDIR=`$LLVM_CONFIG --libdir`
931 # We need to respect LLVM_CFLAGS when compiling LLVM headers.
932 save_CFLAGS="$CFLAGS"
933 CFLAGS="$CFLAGS $LLVM_CFLAGS"
935 AC_COMPUTE_INT([LLVM_VERSION_MAJOR], [LLVM_VERSION_MAJOR],
936 [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
937 AC_COMPUTE_INT([LLVM_VERSION_MINOR], [LLVM_VERSION_MINOR],
938 [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
939 AC_COMPUTE_INT([LLVM_VERSION_PATCH], [LLVM_VERSION_PATCH],
940 [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
942 CFLAGS="$save_CFLAGS"
944 # Only needed for LLVM < 3.6.0
945 if test -z "$LLVM_VERSION_PATCH"; then
949 if test "$LLVM_VERSION_MINOR" -lt 10; then
950 LLVM_VERSION_INT="${LLVM_VERSION_MAJOR}0${LLVM_VERSION_MINOR}"
952 LLVM_VERSION_INT="${LLVM_VERSION_MAJOR}${LLVM_VERSION_MINOR}"
955 DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT -DMESA_LLVM_VERSION_PATCH=$LLVM_VERSION_PATCH"
963 llvm_check_version_for() {
964 if test "x$MESA_LLVM" = x0; then
965 AC_MSG_ERROR([LLVM $1 or newer is required for $2])
969 llvm_target_version_major=`echo $1 | cut -d. -f1 | egrep -o '^[[0-9]]+'`
970 llvm_target_version_minor=`echo $1 | cut -d. -f2 | egrep -o '^[[0-9]]+'`
971 llvm_target_version_patch=`echo $1 | cut -d. -f3 | egrep -o '^[[0-9]]+'`
973 if test "$LLVM_VERSION_MAJOR" -gt "$llvm_target_version_major"; then
974 # major > required major
979 if test "$LLVM_VERSION_MAJOR" -eq "$llvm_target_version_major"; then
980 if test "$LLVM_VERSION_MINOR" -gt "$llvm_target_version_minor"; then
981 # major = required major and
982 # minor > required minor
986 if test "$LLVM_VERSION_MINOR" -eq "$llvm_target_version_minor"; then
987 if test "$LLVM_VERSION_PATCH" -ge "$llvm_target_version_patch"; then
988 # major = required major and
989 # minor = required minor and
990 # patch >= required patch
998 AC_MSG_ERROR([LLVM $1 or newer is required for $2])
1001 radeon_llvm_check() {
1002 if test ${LLVM_VERSION_INT} -lt 307; then
1003 amdgpu_llvm_target_name='r600'
1005 amdgpu_llvm_target_name='amdgpu'
1008 llvm_check_version_for $*
1010 llvm_add_target $amdgpu_llvm_target_name $2
1012 llvm_add_default_components $2
1013 llvm_add_component "bitreader" $2
1014 llvm_add_component "ipo" $2
1016 NEED_RADEON_LLVM=yes
1017 if test "x$have_libelf" != xyes; then
1018 AC_MSG_ERROR([$1 requires libelf when using llvm])
1022 llvm_set_environment_variables
1024 AC_SUBST([MESA_LLVM])
1025 AC_SUBST([LLVM_BINDIR])
1026 AC_SUBST([LLVM_CFLAGS])
1027 AC_SUBST([LLVM_CPPFLAGS])
1028 AC_SUBST([LLVM_CXXFLAGS])
1029 AC_SUBST([LLVM_LIBDIR])
1030 AC_SUBST([LLVM_LIBS])
1031 AC_SUBST([LLVM_LDFLAGS])
1032 AC_SUBST([LLVM_INCLUDEDIR])
1033 AC_SUBST([LLVM_VERSION])
1035 dnl Options for APIs
1036 AC_ARG_ENABLE([opengl],
1037 [AS_HELP_STRING([--disable-opengl],
1038 [disable support for standard OpenGL API @<:@default=enabled@:>@])],
1039 [enable_opengl="$enableval"],
1040 [enable_opengl=yes])
1041 AC_ARG_ENABLE([gles1],
1042 [AS_HELP_STRING([--disable-gles1],
1043 [disable support for OpenGL ES 1.x API @<:@default=enabled@:>@])],
1044 [enable_gles1="$enableval"],
1046 AC_ARG_ENABLE([gles2],
1047 [AS_HELP_STRING([--disable-gles2],
1048 [disable support for OpenGL ES 2.x API @<:@default=enabled@:>@])],
1049 [enable_gles2="$enableval"],
1052 AC_ARG_ENABLE([dri],
1053 [AS_HELP_STRING([--enable-dri],
1054 [enable DRI modules @<:@default=enabled@:>@])],
1055 [enable_dri="$enableval"],
1058 AC_ARG_ENABLE([gallium-extra-hud],
1059 [AS_HELP_STRING([--enable-gallium-extra-hud],
1060 [enable HUD block/NIC I/O HUD stats support @<:@default=disabled@:>@])],
1061 [enable_gallium_extra_hud="$enableval"],
1062 [enable_gallium_extra_hud=no])
1063 AM_CONDITIONAL(HAVE_GALLIUM_EXTRA_HUD, test "x$enable_gallium_extra_hud" = xyes)
1064 if test "x$enable_gallium_extra_hud" = xyes ; then
1065 DEFINES="${DEFINES} -DHAVE_GALLIUM_EXTRA_HUD=1"
1068 #TODO: no pkgconfig .pc available for libsensors.
1069 #PKG_CHECK_MODULES([LIBSENSORS], [libsensors >= $LIBSENSORS_REQUIRED], [enable_lmsensors=yes], [enable_lmsensors=no])
1070 AC_ARG_ENABLE([lmsensors],
1071 [AS_HELP_STRING([--enable-lmsensors],
1072 [enable HUD lmsensor support @<:@default=disabled@:>@])],
1073 [enable_lmsensors="$enableval"],
1074 [enable_lmsensors=no])
1075 AM_CONDITIONAL(HAVE_LIBSENSORS, test "x$enable_lmsensors" = xyes)
1076 if test "x$enable_lmsensors" = xyes ; then
1077 DEFINES="${DEFINES} -DHAVE_LIBSENSORS=1"
1078 LIBSENSORS_LIBS="-lsensors"
1082 AC_SUBST(LIBSENSORS_LIBS)
1093 if test "x$enable_dri" = xno; then
1097 AC_ARG_ENABLE([dri3],
1098 [AS_HELP_STRING([--enable-dri3],
1099 [enable DRI3 @<:@default=auto@:>@])],
1100 [enable_dri3="$enableval"],
1101 [enable_dri3="$dri3_default"])
1102 AC_ARG_ENABLE([glx],
1103 [AS_HELP_STRING([--enable-glx@<:@=dri|xlib|gallium-xlib@:>@],
1104 [enable the GLX library and choose an implementation @<:@default=auto@:>@])],
1105 [enable_glx="$enableval"],
1107 AC_ARG_ENABLE([osmesa],
1108 [AS_HELP_STRING([--enable-osmesa],
1109 [enable OSMesa library @<:@default=disabled@:>@])],
1110 [enable_osmesa="$enableval"],
1112 AC_ARG_ENABLE([gallium-osmesa],
1113 [AS_HELP_STRING([--enable-gallium-osmesa],
1114 [enable Gallium implementation of the OSMesa library @<:@default=disabled@:>@])],
1115 [enable_gallium_osmesa="$enableval"],
1116 [enable_gallium_osmesa=no])
1117 AC_ARG_ENABLE([egl],
1118 [AS_HELP_STRING([--disable-egl],
1119 [disable EGL library @<:@default=enabled@:>@])],
1120 [enable_egl="$enableval"],
1124 [AS_HELP_STRING([--enable-xa],
1125 [enable build of the XA X Acceleration API @<:@default=disabled@:>@])],
1126 [enable_xa="$enableval"],
1128 AC_ARG_ENABLE([gbm],
1129 [AS_HELP_STRING([--enable-gbm],
1130 [enable gbm library @<:@default=yes except cygwin@:>@])],
1131 [enable_gbm="$enableval"],
1140 AC_ARG_ENABLE([nine],
1141 [AS_HELP_STRING([--enable-nine],
1142 [enable build of the nine Direct3D9 API @<:@default=no@:>@])],
1143 [enable_nine="$enableval"],
1146 AC_ARG_ENABLE([xvmc],
1147 [AS_HELP_STRING([--enable-xvmc],
1148 [enable xvmc library @<:@default=auto@:>@])],
1149 [enable_xvmc="$enableval"],
1151 AC_ARG_ENABLE([vdpau],
1152 [AS_HELP_STRING([--enable-vdpau],
1153 [enable vdpau library @<:@default=auto@:>@])],
1154 [enable_vdpau="$enableval"],
1155 [enable_vdpau=auto])
1156 AC_ARG_ENABLE([omx],
1157 [AS_HELP_STRING([--enable-omx],
1158 [enable OpenMAX library @<:@default=disabled@:>@])],
1159 [enable_omx="$enableval"],
1162 [AS_HELP_STRING([--enable-va],
1163 [enable va library @<:@default=auto@:>@])],
1164 [enable_va="$enableval"],
1166 AC_ARG_ENABLE([opencl],
1167 [AS_HELP_STRING([--enable-opencl],
1168 [enable OpenCL library @<:@default=disabled@:>@])],
1169 [enable_opencl="$enableval"],
1171 AC_ARG_ENABLE([opencl_icd],
1172 [AS_HELP_STRING([--enable-opencl-icd],
1173 [Build an OpenCL ICD library to be loaded by an ICD implementation
1174 @<:@default=disabled@:>@])],
1175 [enable_opencl_icd="$enableval"],
1176 [enable_opencl_icd=no])
1178 AC_ARG_ENABLE([gallium-tests],
1179 [AS_HELP_STRING([--enable-gallium-tests],
1180 [Enable optional Gallium tests) @<:@default=disabled@:>@])],
1181 [enable_gallium_tests="$enableval"],
1182 [enable_gallium_tests=no])
1184 # Option for Gallium drivers
1186 # Keep this in sync with the --with-gallium-drivers help string default value
1187 GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
1189 AC_ARG_WITH([gallium-drivers],
1190 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
1191 [comma delimited Gallium drivers list, e.g.
1192 "i915,nouveau,r300,r600,radeonsi,freedreno,svga,swrast,swr,vc4,virgl,etnaviv,imx"
1193 @<:@default=r300,r600,svga,swrast@:>@])],
1194 [with_gallium_drivers="$withval"],
1195 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
1197 # Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it
1198 # here so that the script doesn't choke on an unknown driver name later.
1199 case "$with_gallium_drivers" in
1200 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
1201 no) with_gallium_drivers='' ;;
1204 if test "x$enable_opengl" = xno -a \
1205 "x$enable_gles1" = xno -a \
1206 "x$enable_gles2" = xno -a \
1207 "x$enable_nine" = xno -a \
1208 "x$enable_xa" = xno -a \
1209 "x$enable_xvmc" = xno -a \
1210 "x$enable_vdpau" = xno -a \
1211 "x$enable_omx" = xno -a \
1212 "x$enable_va" = xno -a \
1213 "x$enable_opencl" = xno; then
1214 AC_MSG_ERROR([at least one API should be enabled])
1217 # Building OpenGL ES1 and/or ES2 without OpenGL is not supported on mesa 9.0.x
1218 if test "x$enable_opengl" = xno -a \
1219 "x$enable_gles1" = xyes; then
1220 AC_MSG_ERROR([Building OpenGL ES1 without OpenGL is not supported])
1223 if test "x$enable_opengl" = xno -a \
1224 "x$enable_gles2" = xyes; then
1225 AC_MSG_ERROR([Building OpenGL ES2 without OpenGL is not supported])
1228 AM_CONDITIONAL(HAVE_OPENGL, test "x$enable_opengl" = xyes)
1229 AM_CONDITIONAL(HAVE_OPENGL_ES1, test "x$enable_gles1" = xyes)
1230 AM_CONDITIONAL(HAVE_OPENGL_ES2, test "x$enable_gles2" = xyes)
1231 AM_CONDITIONAL(NEED_OPENGL_COMMON, test "x$enable_opengl" = xyes -o \
1232 "x$enable_gles1" = xyes -o \
1233 "x$enable_gles2" = xyes)
1235 # Validate GLX options
1236 if test "x$enable_glx" = xyes; then
1237 if test "x$enable_dri" = xyes; then
1239 elif test -n "$with_gallium_drivers"; then
1240 enable_glx=gallium-xlib
1245 case "x$enable_glx" in
1246 xdri | xxlib | xgallium-xlib)
1247 # GLX requires OpenGL
1248 if test "x$enable_opengl" = xno; then
1249 AC_MSG_ERROR([GLX cannot be built without OpenGL])
1252 # Check individual dependencies
1253 case "x$enable_glx" in
1255 if test "x$enable_dri" = xno; then
1256 AC_MSG_ERROR([DRI-based GLX requires DRI to be enabled])
1260 if test "x$enable_dri" = xyes; then
1261 AC_MSG_ERROR([Xlib-based GLX cannot be built with DRI enabled])
1265 if test "x$enable_dri" = xyes; then
1266 AC_MSG_ERROR([Xlib-based (Gallium) GLX cannot be built with DRI enabled])
1268 if test -z "$with_gallium_drivers"; then
1269 AC_MSG_ERROR([Xlib-based (Gallium) GLX cannot be built without Gallium enabled])
1277 AC_MSG_ERROR([Illegal value for --enable-glx: $enable_glx])
1281 AM_CONDITIONAL(HAVE_GLX, test "x$enable_glx" != xno)
1282 AM_CONDITIONAL(HAVE_DRI_GLX, test "x$enable_glx" = xdri)
1283 AM_CONDITIONAL(HAVE_XLIB_GLX, test "x$enable_glx" = xxlib)
1284 AM_CONDITIONAL(HAVE_GALLIUM_XLIB_GLX, test "x$enable_glx" = xgallium-xlib)
1286 DEFAULT_GL_LIB_NAME=GL
1289 dnl Libglvnd configuration
1291 AC_ARG_ENABLE([libglvnd],
1292 [AS_HELP_STRING([--enable-libglvnd],
1293 [Build for libglvnd @<:@default=disabled@:>@])],
1294 [enable_libglvnd="$enableval"],
1295 [enable_libglvnd=no])
1296 AM_CONDITIONAL(USE_LIBGLVND_GLX, test "x$enable_libglvnd" = xyes)
1297 if test "x$enable_libglvnd" = xyes ; then
1298 dnl XXX: update once we can handle more than libGL/glx.
1299 dnl Namely: we should error out if neither of the glvnd enabled libraries
1301 case "x$enable_glx" in
1303 AC_MSG_ERROR([cannot build libglvnd without GLX])
1305 xxlib | xgallium-xlib )
1306 AC_MSG_ERROR([cannot build libgvnd when Xlib-GLX or Gallium-Xlib-GLX is enabled])
1312 PKG_CHECK_MODULES([GLVND], libglvnd >= 0.1.0)
1313 DEFINES="${DEFINES} -DUSE_LIBGLVND_GLX=1"
1314 DEFAULT_GL_LIB_NAME=GLX_mesa
1317 AC_ARG_WITH([gl-lib-name],
1318 [AS_HELP_STRING([--with-gl-lib-name@<:@=NAME@:>@],
1319 [specify GL library name @<:@default=GL@:>@])],
1321 [GL_LIB="$DEFAULT_GL_LIB_NAME"])
1322 AC_ARG_WITH([osmesa-lib-name],
1323 [AS_HELP_STRING([--with-osmesa-lib-name@<:@=NAME@:>@],
1324 [specify OSMesa library name @<:@default=OSMesa@:>@])],
1325 [OSMESA_LIB=$withval],
1326 [OSMESA_LIB=OSMesa])
1327 AS_IF([test "x$GL_LIB" = xyes], [GL_LIB="$DEFAULT_GL_LIB_NAME"])
1328 AS_IF([test "x$OSMESA_LIB" = xyes], [OSMESA_LIB=OSMesa])
1331 dnl Mangled Mesa support
1333 AC_ARG_ENABLE([mangling],
1334 [AS_HELP_STRING([--enable-mangling],
1335 [enable mangled symbols and library name @<:@default=disabled@:>@])],
1336 [enable_mangling="${enableval}"],
1337 [enable_mangling=no]
1339 if test "x${enable_mangling}" = "xyes" ; then
1340 DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
1341 GL_LIB="Mangled${GL_LIB}"
1342 OSMESA_LIB="Mangled${OSMESA_LIB}"
1345 AC_SUBST([OSMESA_LIB])
1348 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
1349 [have_libdrm=yes], [have_libdrm=no])
1350 if test "x$have_libdrm" = xyes; then
1351 DEFINES="$DEFINES -DHAVE_LIBDRM"
1355 if test "x$have_libdrm" != xyes; then
1356 AC_MSG_ERROR([$1 requires libdrm >= $LIBDRM_REQUIRED])
1361 # Select which platform-dependent DRI code gets built
1364 dri_platform='apple' ;;
1366 dri_platform='windows' ;;
1368 dri_platform='none' ;;
1370 dri_platform='drm' ;;
1373 if test "x$enable_dri" = xyes -a "x$dri_platform" = xdrm -a "x$have_libdrm" = xyes; then
1374 have_drisw_kms='yes'
1377 AM_CONDITIONAL(HAVE_DRICOMMON, test "x$enable_dri" = xyes )
1378 AM_CONDITIONAL(HAVE_DRISW, test "x$enable_dri" = xyes )
1379 AM_CONDITIONAL(HAVE_DRISW_KMS, test "x$have_drisw_kms" = xyes )
1380 AM_CONDITIONAL(HAVE_DRI2, test "x$enable_dri" = xyes -a "x$dri_platform" = xdrm -a "x$have_libdrm" = xyes )
1381 AM_CONDITIONAL(HAVE_DRI3, test "x$enable_dri3" = xyes -a "x$dri_platform" = xdrm -a "x$have_libdrm" = xyes )
1382 AM_CONDITIONAL(HAVE_APPLEDRI, test "x$enable_dri" = xyes -a "x$dri_platform" = xapple )
1383 AM_CONDITIONAL(HAVE_LMSENSORS, test "x$enable_lmsensors" = xyes )
1384 AM_CONDITIONAL(HAVE_GALLIUM_EXTRA_HUD, test "x$enable_gallium_extra_hud" = xyes )
1385 AM_CONDITIONAL(HAVE_WINDOWSDRI, test "x$enable_dri" = xyes -a "x$dri_platform" = xwindows )
1387 AC_ARG_ENABLE([shared-glapi],
1388 [AS_HELP_STRING([--enable-shared-glapi],
1389 [Enable shared glapi for OpenGL @<:@default=enabled@:>@])],
1390 [enable_shared_glapi="$enableval"],
1391 [enable_shared_glapi=yes])
1393 case "x$enable_opengl$enable_gles1$enable_gles2" in
1395 if test "x$enable_shared_glapi" = xno; then
1396 AC_MSG_ERROR([shared GLAPI required when building two or more of
1397 the following APIs - opengl, gles1 gles2])
1402 AM_CONDITIONAL(HAVE_SHARED_GLAPI, test "x$enable_shared_glapi" = xyes)
1404 # Build the pipe-drivers as separate libraries/modules.
1405 # Do not touch this unless you know what you are doing.
1406 # XXX: Expose via configure option ?
1407 enable_shared_pipe_drivers=no
1410 dnl Driver specific build directories
1413 if test "x$enable_gallium_osmesa" = xyes; then
1414 if ! echo "$with_gallium_drivers" | grep -q 'swrast'; then
1415 AC_MSG_ERROR([gallium_osmesa requires the gallium swrast driver])
1417 if test "x$enable_osmesa" = xyes; then
1418 AC_MSG_ERROR([Cannot enable both classic and Gallium OSMesa implementations])
1422 require_dri_shared_libs_and_glapi() {
1423 if test "x$enable_static" = xyes; then
1424 AC_MSG_ERROR([$1 cannot be build as static library])
1427 if test "x$enable_dri" != xyes; then
1428 # There is only a single backend which won't be build/used otherwise.
1429 # XXX: Revisit this as the egl/haiku is a thing.
1430 AC_MSG_ERROR([$1 requires --enable-dri])
1433 if test "x$enable_shared_glapi" != xyes; then
1434 AC_MSG_ERROR([$1 requires --enable-shared-glapi])
1438 if test "x$enable_dri" = xyes; then
1439 require_dri_shared_libs_and_glapi "DRI"
1441 # not a hard requirement as swrast does not depend on it
1442 if test "x$have_libdrm" = xyes; then
1443 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
1447 AC_ARG_ENABLE([driglx-direct],
1448 [AS_HELP_STRING([--disable-driglx-direct],
1449 [disable direct rendering in GLX and EGL for DRI \
1450 @<:@default=auto@:>@])],
1451 [driglx_direct="$enableval"],
1452 [driglx_direct="yes"])
1455 dnl libGL configuration per driver
1457 if test "x$enable_glx" != xno; then
1458 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
1460 case "x$enable_glx" in
1461 xxlib | xgallium-xlib)
1463 dri_modules="x11 xext xcb"
1464 PKG_CHECK_MODULES([XLIBGL], [$dri_modules])
1465 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
1466 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
1467 GL_LIB_DEPS="$XLIBGL_LIBS"
1468 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1469 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm $PTHREAD_LIBS"
1474 # find the DRI deps for libGL
1475 dri_modules="x11 xext xdamage xfixes x11-xcb xcb xcb-glx >= $XCBGLX_REQUIRED"
1477 if test x"$driglx_direct" = xyes; then
1478 if test x"$dri_platform" = xdrm ; then
1479 DEFINES="$DEFINES -DGLX_USE_DRM"
1480 require_libdrm "Direct rendering"
1482 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
1483 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED"
1484 if test x"$enable_dri3" = xyes; then
1485 PKG_CHECK_MODULES([DRI3PROTO], [dri3proto >= $DRI3PROTO_REQUIRED])
1486 PKG_CHECK_MODULES([PRESENTPROTO], [presentproto >= $PRESENTPROTO_REQUIRED])
1489 if test x"$enable_dri" = xyes; then
1490 dri_modules="$dri_modules xcb-dri2 >= $XCBDRI2_REQUIRED"
1493 if test x"$enable_dri3" = xyes; then
1494 PKG_CHECK_EXISTS([xcb >= $XCB_REQUIRED], [], AC_MSG_ERROR([DRI3 requires xcb >= $XCB_REQUIRED]))
1495 dri3_modules="xcb xcb-dri3 xcb-present xcb-sync xshmfence >= $XSHMFENCE_REQUIRED"
1496 PKG_CHECK_MODULES([XCB_DRI3], [$dri3_modules])
1499 if test x"$dri_platform" = xapple ; then
1500 DEFINES="$DEFINES -DGLX_USE_APPLEGL"
1502 if test x"$dri_platform" = xwindows ; then
1503 DEFINES="$DEFINES -DGLX_USE_WINDOWSGL"
1507 # add xf86vidmode if available
1508 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
1509 if test "$HAVE_XF86VIDMODE" = yes ; then
1510 dri_modules="$dri_modules xxf86vm"
1513 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
1514 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
1515 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
1516 GL_LIB_DEPS="$DRIGL_LIBS"
1518 # need DRM libs, $PTHREAD_LIBS, etc.
1519 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1520 GL_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
1524 # This is outside the case (above) so that it is invoked even for non-GLX
1526 AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
1528 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1529 GLESv1_CM_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
1530 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1531 GLESv2_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
1533 AC_SUBST([X11_INCLUDES])
1534 AC_SUBST([GL_LIB_DEPS])
1535 AC_SUBST([GL_PC_REQ_PRIV])
1536 AC_SUBST([GL_PC_LIB_PRIV])
1537 AC_SUBST([GL_PC_CFLAGS])
1538 AC_SUBST([DRI_PC_REQ_PRIV])
1539 AC_SUBST([GLESv1_CM_LIB_DEPS])
1540 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
1541 AC_SUBST([GLESv2_LIB_DEPS])
1542 AC_SUBST([GLESv2_PC_LIB_PRIV])
1544 AC_SUBST([HAVE_XF86VIDMODE])
1549 case "x$enable_glx" in
1550 xxlib | xgallium-xlib)
1551 DEFINES="$DEFINES -DUSE_XSHM"
1554 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1555 if test "x$driglx_direct" = xyes; then
1556 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1565 AC_ARG_ENABLE([glx-tls],
1566 [AS_HELP_STRING([--enable-glx-tls],
1567 [enable TLS support in GLX @<:@default=enabled@:>@])],
1568 [GLX_USE_TLS="$enableval"],
1570 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
1572 if test "x$GLX_USE_TLS" = xyes; then
1573 DEFINES="$DEFINES -DGLX_USE_TLS"
1576 dnl Read-only text section on x86 hardened platforms
1577 AC_ARG_ENABLE([glx-read-only-text],
1578 [AS_HELP_STRING([--enable-glx-read-only-text],
1579 [Disable writable .text section on x86 (decreases performance) @<:@default=disabled@:>@])],
1580 [enable_glx_read_only_text="$enableval"],
1581 [enable_glx_read_only_text=no])
1582 if test "x$enable_glx_read_only_text" = xyes; then
1583 DEFINES="$DEFINES -DGLX_X86_READONLY_TEXT"
1589 dnl Directory for DRI drivers
1590 AC_ARG_WITH([dri-driverdir],
1591 [AS_HELP_STRING([--with-dri-driverdir=DIR],
1592 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
1593 [DRI_DRIVER_INSTALL_DIR="$withval"],
1594 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
1595 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
1596 dnl Extra search path for DRI drivers
1597 AC_ARG_WITH([dri-searchpath],
1598 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
1599 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
1600 [DRI_DRIVER_SEARCH_DIR="$withval"],
1601 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
1602 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
1603 dnl Which drivers to build - default is chosen by platform
1604 AC_ARG_WITH([dri-drivers],
1605 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
1606 [comma delimited classic DRI drivers list, e.g.
1607 "i915,i965,nouveau,radeon,r200,swrast" @<:@default=auto@:>@])],
1608 [with_dri_drivers="$withval"],
1609 [with_dri_drivers=auto])
1611 if test "x$with_dri_drivers" = xauto; then
1612 if test "x$enable_opengl" = xyes -a "x$enable_dri" = xyes; then
1613 with_dri_drivers="yes"
1615 with_dri_drivers="no"
1618 if test "x$with_dri_drivers" = xno; then
1622 dnl If $with_dri_drivers is yes, drivers will be added through
1623 dnl platform checks. Set DEFINES and LIB_DEPS
1624 if test "x$enable_dri" = xyes; then
1625 # Platform specific settings and drivers to build
1628 if test "x$enable_dri3" = xyes; then
1629 DEFINES="$DEFINES -DHAVE_DRI3"
1634 # Build only the drivers for cards that exist on PowerPC/sparc
1635 if test "x$with_dri_drivers" = "xyes"; then
1636 with_dri_drivers="r200 radeon swrast"
1642 if test "x$with_dri_drivers" = "xyes"; then
1643 with_dri_drivers="swrast"
1647 DEFINES="$DEFINES -DBUILDING_MESA"
1648 if test "x$with_dri_drivers" = "xyes"; then
1649 with_dri_drivers="swrast"
1655 if test "x$with_dri_drivers" = "xyes"; then
1656 with_dri_drivers="i915 i965 nouveau r200 radeon swrast"
1660 PKG_CHECK_MODULES([EXPAT], [expat], [],
1661 # expat version 2.0 and earlier do not provide expat.pc
1662 [AC_CHECK_HEADER([expat.h],[],
1663 [AC_MSG_ERROR([Expat headers required for DRI not found])])
1664 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1665 [AC_MSG_ERROR([Expat library required for DRI not found])])
1666 EXPAT_LIBS="-lexpat"])
1668 # put all the necessary libs together
1669 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1672 AC_SUBST([DRI_LIB_DEPS])
1675 dnl Duplicates in DRI_DIRS are removed by sorting it at the end of this block
1676 if test -n "$with_dri_drivers"; then
1677 if test "x$enable_opengl" != xyes; then
1678 AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1681 dri_drivers=`IFS=', '; echo $with_dri_drivers`
1682 for driver in $dri_drivers; do
1683 DRI_DIRS="$DRI_DIRS $driver"
1686 require_libdrm "i915"
1688 PKG_CHECK_MODULES([INTEL], [libdrm >= $LIBDRM_INTEL_REQUIRED libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1691 require_libdrm "i965"
1693 PKG_CHECK_MODULES([INTEL], [libdrm >= $LIBDRM_INTEL_REQUIRED libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1696 require_libdrm "nouveau"
1697 HAVE_NOUVEAU_DRI=yes;
1698 PKG_CHECK_MODULES([NVVIEUX], [libdrm >= $LIBDRM_NVVIEUX_REQUIRED libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED])
1701 require_libdrm "radeon"
1702 HAVE_RADEON_DRI=yes;
1703 PKG_CHECK_MODULES([RADEON], [libdrm >= $LIBDRM_RADEON_REQUIRED libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1706 require_libdrm "r200"
1708 PKG_CHECK_MODULES([RADEON], [libdrm >= $LIBDRM_RADEON_REQUIRED libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1711 HAVE_SWRAST_DRI=yes;
1714 AC_MSG_ERROR([classic DRI driver '$driver' does not exist])
1718 DRI_DIRS=`echo $DRI_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1723 # Vulkan driver configuration
1726 AC_ARG_WITH([vulkan-drivers],
1727 [AS_HELP_STRING([--with-vulkan-drivers@<:@=DIRS...@:>@],
1728 [comma delimited Vulkan drivers list, e.g.
1730 @<:@default=no@:>@])],
1731 [with_vulkan_drivers="$withval"],
1732 [with_vulkan_drivers="no"])
1734 # Doing '--without-vulkan-drivers' will set this variable to 'no'. Clear it
1735 # here so that the script doesn't choke on an unknown driver name later.
1736 case "x$with_vulkan_drivers" in
1737 xyes) with_vulkan_drivers="$VULKAN_DRIVERS_DEFAULT" ;;
1738 xno) with_vulkan_drivers='' ;;
1741 AC_ARG_WITH([vulkan-icddir],
1742 [AS_HELP_STRING([--with-vulkan-icddir=DIR],
1743 [directory for the Vulkan driver icd files @<:@${datarootdir}/vulkan/icd.d@:>@])],
1744 [VULKAN_ICD_INSTALL_DIR="$withval"],
1745 [VULKAN_ICD_INSTALL_DIR='${datarootdir}/vulkan/icd.d'])
1746 AC_SUBST([VULKAN_ICD_INSTALL_DIR])
1748 if test -n "$with_vulkan_drivers"; then
1749 VULKAN_DRIVERS=`IFS=', '; echo $with_vulkan_drivers`
1750 for driver in $VULKAN_DRIVERS; do
1753 if test "x$HAVE_I965_DRI" != xyes; then
1754 AC_MSG_ERROR([Intel Vulkan driver requires the i965 dri driver])
1756 HAVE_INTEL_VULKAN=yes;
1760 PKG_CHECK_MODULES([AMDGPU], [libdrm >= $LIBDRM_AMDGPU_REQUIRED libdrm_amdgpu >= $LIBDRM_AMDGPU_REQUIRED])
1761 radeon_llvm_check $LLVM_REQUIRED_RADV "radv"
1762 HAVE_RADEON_VULKAN=yes;
1765 AC_MSG_ERROR([Vulkan driver '$driver' does not exist])
1769 VULKAN_DRIVERS=`echo $VULKAN_DRIVERS|tr " " "\n"|sort -u|tr "\n" " "`
1773 DEFINES="$DEFINES -DENABLE_SHADER_CACHE"
1774 AM_CONDITIONAL(NEED_MEGADRIVER, test -n "$DRI_DIRS")
1775 AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_glx" = xxlib -o \
1776 "x$enable_osmesa" = xyes -o \
1780 dnl OSMesa configuration
1783 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1784 AC_ARG_WITH([osmesa-bits],
1785 [AS_HELP_STRING([--with-osmesa-bits=BITS],
1786 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1787 [osmesa_bits="$withval"],
1789 if test "x$osmesa_bits" != x8; then
1790 if test "x$enable_dri" = xyes -o "x$enable_glx" != xno; then
1791 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1795 case "x$osmesa_bits" in
1797 OSMESA_LIB="${OSMESA_LIB}"
1800 OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
1801 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1804 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1808 if test "x$enable_osmesa" = xyes -o "x$enable_gallium_osmesa" = xyes; then
1809 # only link libraries with osmesa if shared
1810 if test "$enable_static" = no; then
1811 OSMESA_LIB_DEPS="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1815 OSMESA_PC_LIB_PRIV="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1818 AC_SUBST([OSMESA_LIB_DEPS])
1819 AC_SUBST([OSMESA_PC_REQ])
1820 AC_SUBST([OSMESA_PC_LIB_PRIV])
1823 dnl gbm configuration
1825 if test "x$enable_gbm" = xyes; then
1826 require_dri_shared_libs_and_glapi "gbm"
1828 AM_CONDITIONAL(HAVE_GBM, test "x$enable_gbm" = xyes)
1829 # FINISHME: GBM has a number of dependencies which we should add below
1831 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1832 AC_SUBST([GBM_PC_REQ_PRIV])
1833 AC_SUBST([GBM_PC_LIB_PRIV])
1836 dnl EGL configuration
1839 if test "x$enable_egl" = xyes; then
1840 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS $PTHREAD_LIBS"
1842 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1844 require_dri_shared_libs_and_glapi "egl"
1846 AM_CONDITIONAL(HAVE_EGL, test "x$enable_egl" = xyes)
1847 AC_SUBST([EGL_LIB_DEPS])
1852 dnl XA configuration
1854 if test "x$enable_xa" = xyes; then
1855 if test "x$with_gallium_drivers" = xswrast; then
1857 Building xa requires at least one non swrast gallium driver.
1858 If you are looking to use libxatracker.so with the VMware driver,
1859 make sure to include svga in the gallium drivers list, apart from
1861 Example: ./configure --enable-xa --with-gallium-drivers=svga...])
1863 gallium_st="$gallium_st xa"
1865 AM_CONDITIONAL(HAVE_ST_XA, test "x$enable_xa" = xyes)
1868 dnl Gallium G3DVL configuration
1870 if test -n "$with_gallium_drivers" -a "x$with_gallium_drivers" != xswrast; then
1871 if test "x$enable_xvmc" = xauto; then
1872 PKG_CHECK_EXISTS([xvmc >= $XVMC_REQUIRED], [enable_xvmc=yes], [enable_xvmc=no])
1875 if test "x$enable_vdpau" = xauto; then
1876 PKG_CHECK_EXISTS([vdpau >= $VDPAU_REQUIRED], [enable_vdpau=yes], [enable_vdpau=no])
1879 if test "x$enable_omx" = xauto; then
1880 PKG_CHECK_EXISTS([libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED], [enable_omx=yes], [enable_omx=no])
1883 if test "x$enable_va" = xauto; then
1884 PKG_CHECK_EXISTS([libva >= $LIBVA_REQUIRED], [enable_va=yes], [enable_va=no])
1888 if test "x$enable_dri" = xyes -o \
1889 "x$enable_xvmc" = xyes -o \
1890 "x$enable_vdpau" = xyes -o \
1891 "x$enable_omx" = xyes -o \
1892 "x$enable_va" = xyes; then
1895 AM_CONDITIONAL(NEED_GALLIUM_VL, test "x$need_gallium_vl" = xyes)
1897 if test "x$enable_xvmc" = xyes -o \
1898 "x$enable_vdpau" = xyes -o \
1899 "x$enable_omx" = xyes -o \
1900 "x$enable_va" = xyes; then
1901 if test x"$enable_dri3" = xyes; then
1902 PKG_CHECK_MODULES([VL], [xcb-dri3 xcb-present xcb-sync xshmfence >= $XSHMFENCE_REQUIRED
1903 xcb-xfixes x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
1905 PKG_CHECK_MODULES([VL], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
1907 need_gallium_vl_winsys=yes
1909 AM_CONDITIONAL(NEED_GALLIUM_VL_WINSYS, test "x$need_gallium_vl_winsys" = xyes)
1911 if test "x$enable_xvmc" = xyes; then
1912 PKG_CHECK_MODULES([XVMC], [xvmc >= $XVMC_REQUIRED])
1913 gallium_st="$gallium_st xvmc"
1915 AM_CONDITIONAL(HAVE_ST_XVMC, test "x$enable_xvmc" = xyes)
1917 if test "x$enable_vdpau" = xyes; then
1918 PKG_CHECK_MODULES([VDPAU], [vdpau >= $VDPAU_REQUIRED])
1919 gallium_st="$gallium_st vdpau"
1920 DEFINES="$DEFINES -DHAVE_ST_VDPAU"
1922 AM_CONDITIONAL(HAVE_ST_VDPAU, test "x$enable_vdpau" = xyes)
1924 if test "x$enable_omx" = xyes; then
1925 PKG_CHECK_MODULES([OMX], [libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED])
1926 gallium_st="$gallium_st omx"
1928 AM_CONDITIONAL(HAVE_ST_OMX, test "x$enable_omx" = xyes)
1930 if test "x$enable_va" = xyes; then
1931 PKG_CHECK_MODULES([VA], [libva >= $LIBVA_REQUIRED])
1932 gallium_st="$gallium_st va"
1934 AM_CONDITIONAL(HAVE_ST_VA, test "x$enable_va" = xyes)
1937 dnl Nine Direct3D9 configuration
1939 if test "x$enable_nine" = xyes; then
1940 if ! echo "$with_gallium_drivers" | grep -q 'swrast'; then
1941 AC_MSG_ERROR([nine requires the gallium swrast driver])
1943 if test "x$with_gallium_drivers" = xswrast; then
1944 AC_MSG_ERROR([nine requires at least one non-swrast gallium driver])
1946 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6; then
1947 AC_MSG_ERROR([gcc >= 4.6 is required to build nine])
1950 if test "x$enable_dri3" = xno; then
1951 AC_MSG_WARN([using nine together with wine requires DRI3 enabled system])
1954 gallium_st="$gallium_st nine"
1956 AM_CONDITIONAL(HAVE_ST_NINE, test "x$enable_nine" = xyes)
1959 dnl OpenCL configuration
1962 AC_ARG_WITH([clang-libdir],
1963 [AS_HELP_STRING([--with-clang-libdir],
1964 [Path to Clang libraries @<:@default=llvm-config --libdir@:>@])],
1965 [CLANG_LIBDIR="$withval"],
1968 PKG_CHECK_EXISTS([libclc], [have_libclc=yes], [have_libclc=no])
1970 if test "x$enable_opencl" = xyes; then
1971 if test -z "$with_gallium_drivers"; then
1972 AC_MSG_ERROR([cannot enable OpenCL without Gallium])
1975 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 7; then
1976 AC_MSG_ERROR([gcc >= 4.7 is required to build clover])
1979 if test "x$have_libclc" = xno; then
1980 AC_MSG_ERROR([pkg-config cannot find libclc.pc which is required to build clover.
1981 Make sure the directory containing libclc.pc is specified in your
1982 PKG_CONFIG_PATH environment variable.
1983 By default libclc.pc is installed to /usr/local/share/pkgconfig/])
1985 LIBCLC_INCLUDEDIR=`$PKG_CONFIG --variable=includedir libclc`
1986 LIBCLC_LIBEXECDIR=`$PKG_CONFIG --variable=libexecdir libclc`
1987 AC_SUBST([LIBCLC_INCLUDEDIR])
1988 AC_SUBST([LIBCLC_LIBEXECDIR])
1991 gallium_st="$gallium_st clover"
1993 if test "x$enable_opencl_icd" = xyes; then
1994 OPENCL_LIBNAME="MesaOpenCL"
1996 OPENCL_LIBNAME="OpenCL"
1999 if test "x$have_libelf" != xyes; then
2000 AC_MSG_ERROR([Clover requires libelf])
2003 llvm_check_version_for $LLVM_REQUIRED_OPENCL "opencl"
2005 llvm_add_default_components "opencl"
2006 llvm_add_component "all-targets" "opencl"
2007 llvm_add_component "linker" "opencl"
2008 llvm_add_component "instrumentation" "opencl"
2009 llvm_add_component "ipo" "opencl"
2010 llvm_add_component "irreader" "opencl"
2011 llvm_add_component "option" "opencl"
2012 llvm_add_component "objcarcopts" "opencl"
2013 llvm_add_component "profiledata" "opencl"
2015 dnl Check for Clang internal headers
2016 if test -z "$CLANG_LIBDIR"; then
2017 CLANG_LIBDIR=${LLVM_LIBDIR}
2019 CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION}
2020 AS_IF([test ! -f "$CLANG_RESOURCE_DIR/include/stddef.h"],
2021 [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.])])
2023 AM_CONDITIONAL(HAVE_CLOVER, test "x$enable_opencl" = xyes)
2024 AM_CONDITIONAL(HAVE_CLOVER_ICD, test "x$enable_opencl_icd" = xyes)
2025 AC_SUBST([OPENCL_LIBNAME])
2026 AC_SUBST([CLANG_RESOURCE_DIR])
2029 dnl Gallium configuration
2031 AM_CONDITIONAL(HAVE_GALLIUM, test -n "$with_gallium_drivers")
2034 dnl EGL Platforms configuration
2036 AC_ARG_WITH([egl-platforms],
2037 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
2038 [comma delimited native platforms libEGL supports, e.g.
2039 "x11,drm" @<:@default=auto@:>@])],
2040 [with_egl_platforms="$withval"],
2041 [if test "x$enable_egl" = xyes; then
2042 if test "x$enable_gbm" = xyes; then
2043 with_egl_platforms="x11,drm"
2045 with_egl_platforms="x11"
2048 with_egl_platforms=""
2051 if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
2052 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
2055 PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner],
2056 WAYLAND_SCANNER=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner`,
2058 if test "x$WAYLAND_SCANNER" = x; then
2059 AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner])
2062 # Do per-EGL platform setups and checks
2063 egl_platforms=`IFS=', '; echo $with_egl_platforms`
2064 for plat in $egl_platforms; do
2068 PKG_CHECK_MODULES([WAYLAND], [wayland-client >= $WAYLAND_REQUIRED wayland-server >= $WAYLAND_REQUIRED])
2070 if test "x$WAYLAND_SCANNER" = x; then
2071 AC_MSG_ERROR([wayland-scanner is needed to compile the wayland egl platform])
2076 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED xcb-xfixes])
2080 test "x$enable_gbm" = "xno" &&
2081 AC_MSG_ERROR([EGL platform drm needs gbm])
2088 PKG_CHECK_MODULES([ANDROID], [cutils hardware sync])
2092 AC_MSG_ERROR([EGL platform '$plat' does not exist])
2097 wayland|drm|surfaceless)
2098 require_libdrm "Platform $plat"
2103 # libEGL wants to default to the first platform specified in
2104 # ./configure. parse that here.
2105 if test "x$egl_platforms" != "x"; then
2106 FIRST_PLATFORM_CAPS=`echo $egl_platforms | sed 's| .*||' | tr '[[a-z]]' '[[A-Z]]'`
2107 EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
2109 EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
2112 AM_CONDITIONAL(HAVE_PLATFORM_X11, echo "$egl_platforms" | grep -q 'x11')
2113 AM_CONDITIONAL(HAVE_PLATFORM_WAYLAND, echo "$egl_platforms" | grep -q 'wayland')
2114 AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep -q 'drm')
2115 AM_CONDITIONAL(HAVE_EGL_PLATFORM_SURFACELESS, echo "$egl_platforms" | grep -q 'surfaceless')
2116 AM_CONDITIONAL(HAVE_EGL_PLATFORM_ANDROID, echo "$egl_platforms" | grep -q 'android')
2118 AC_SUBST([EGL_NATIVE_PLATFORM])
2119 AC_SUBST([EGL_CFLAGS])
2121 # If we don't have the X11 platform, set this define so we don't try to include
2123 if ! echo "$egl_platforms" | grep -q 'x11'; then
2124 DEFINES="$DEFINES -DMESA_EGL_NO_X11_HEADERS"
2125 GL_PC_CFLAGS="$GL_PC_CFLAGS -DMESA_EGL_NO_X11_HEADERS"
2131 AC_ARG_ENABLE([gallium-llvm],
2132 [AS_HELP_STRING([--enable-gallium-llvm],
2133 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
2134 [enable_gallium_llvm="$enableval"],
2135 [enable_gallium_llvm=auto])
2137 if test -z "$with_gallium_drivers"; then
2138 enable_gallium_llvm=no
2140 if test "x$enable_gallium_llvm" = xauto; then
2142 i*86|x86_64|amd64) enable_gallium_llvm=yes;;
2146 dnl Directory for XVMC libs
2147 AC_ARG_WITH([xvmc-libdir],
2148 [AS_HELP_STRING([--with-xvmc-libdir=DIR],
2149 [directory for the XVMC libraries @<:@default=${libdir}@:>@])],
2150 [XVMC_LIB_INSTALL_DIR="$withval"],
2151 [XVMC_LIB_INSTALL_DIR='${libdir}'])
2152 AC_SUBST([XVMC_LIB_INSTALL_DIR])
2157 AM_CONDITIONAL(HAVE_GALLIUM_TESTS, test "x$enable_gallium_tests" = xyes)
2159 dnl Directory for VDPAU libs
2160 AC_ARG_WITH([vdpau-libdir],
2161 [AS_HELP_STRING([--with-vdpau-libdir=DIR],
2162 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
2163 [VDPAU_LIB_INSTALL_DIR="$withval"],
2164 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
2165 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
2167 dnl Directory for OMX libs
2169 AC_ARG_WITH([omx-libdir],
2170 [AS_HELP_STRING([--with-omx-libdir=DIR],
2171 [directory for the OMX libraries])],
2172 [OMX_LIB_INSTALL_DIR="$withval"],
2173 [OMX_LIB_INSTALL_DIR=`$PKG_CONFIG --define-variable=libdir=\$libdir --variable=pluginsdir libomxil-bellagio`])
2174 AC_SUBST([OMX_LIB_INSTALL_DIR])
2176 dnl Directory for VA libs
2178 AC_ARG_WITH([va-libdir],
2179 [AS_HELP_STRING([--with-va-libdir=DIR],
2180 [directory for the VA libraries @<:@${libdir}/dri@:>@])],
2181 [VA_LIB_INSTALL_DIR="$withval"],
2182 [VA_LIB_INSTALL_DIR="${libdir}/dri"])
2183 AC_SUBST([VA_LIB_INSTALL_DIR])
2185 AC_ARG_WITH([d3d-libdir],
2186 [AS_HELP_STRING([--with-d3d-libdir=DIR],
2187 [directory for the D3D modules @<:@${libdir}/d3d@:>@])],
2188 [D3D_DRIVER_INSTALL_DIR="$withval"],
2189 [D3D_DRIVER_INSTALL_DIR="${libdir}/d3d"])
2190 AC_SUBST([D3D_DRIVER_INSTALL_DIR])
2193 dnl Gallium helper functions
2195 gallium_require_llvm() {
2196 if test "x$enable_gallium_llvm" = "xyes"; then
2197 llvm_check_version_for $LLVM_REQUIRED_GALLIUM "gallium"
2199 AC_MSG_ERROR([--enable-gallium-llvm is required when building $1])
2204 dnl r300 doesn't strictly require LLVM, but for performance reasons we
2205 dnl highly recommend LLVM usage. So require it at least on x86 and x86_64
2208 r300_require_llvm() {
2209 case "$host" in *gnux32) return;; esac
2211 i*86|x86_64|amd64) gallium_require_llvm $1
2217 dnl DRM is needed by X, Wayland, and offscreen rendering.
2218 dnl Surfaceless is an alternative for the last one.
2220 require_basic_egl() {
2221 case "$with_egl_platforms" in
2222 *drm*|*surfaceless*)
2225 AC_MSG_ERROR([$1 requires one of these:
2226 1) --with-egl-platforms=drm (X, Wayland, offscreen rendering based on DRM)
2227 2) --with-egl-platforms=surfaceless (offscreen only)
2228 Recommended options: drm,x11])
2233 radeon_gallium_llvm_check() {
2234 if test "x$enable_gallium_llvm" != "xyes"; then
2235 AC_MSG_ERROR([--enable-gallium-llvm is required when building $2])
2237 radeon_llvm_check $*
2240 swr_require_cxx_feature_flags() {
2242 preprocessor_test="$2"
2246 AC_MSG_CHECKING([whether $CXX supports $feature_name])
2248 save_CXXFLAGS="$CXXFLAGS"
2252 for opts in $option_list
2255 CXXFLAGS="$opts $save_CXXFLAGS"
2258 [ #if !($preprocessor_test)
2267 CXXFLAGS="$save_CXXFLAGS"
2269 if test $found -eq 1; then
2270 AC_MSG_RESULT([$opts])
2271 eval "$output_var=\$opts"
2275 AC_MSG_ERROR([swr requires $feature_name support])
2279 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
2280 if test -n "$with_gallium_drivers"; then
2281 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
2282 for driver in $gallium_drivers; do
2285 HAVE_GALLIUM_SVGA=yes
2286 require_libdrm "svga"
2289 HAVE_GALLIUM_I915=yes
2290 PKG_CHECK_MODULES([INTEL], [libdrm >= $LIBDRM_INTEL_REQUIRED libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
2291 require_libdrm "Gallium i915"
2294 HAVE_GALLIUM_R300=yes
2295 PKG_CHECK_MODULES([RADEON], [libdrm >= $LIBDRM_RADEON_REQUIRED libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2296 require_libdrm "r300"
2297 r300_require_llvm "r300"
2300 HAVE_GALLIUM_R600=yes
2301 PKG_CHECK_MODULES([RADEON], [libdrm >= $LIBDRM_RADEON_REQUIRED libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2302 require_libdrm "r600"
2303 if test "x$enable_opencl" = xyes; then
2304 radeon_gallium_llvm_check $LLVM_REQUIRED_R600 "r600"
2306 llvm_add_component "asmparser" "r600"
2307 llvm_add_component "bitreader" "r600"
2311 HAVE_GALLIUM_RADEONSI=yes
2312 PKG_CHECK_MODULES([RADEON], [libdrm >= $LIBDRM_RADEON_REQUIRED libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2313 PKG_CHECK_MODULES([AMDGPU], [libdrm >= $LIBDRM_AMDGPU_REQUIRED libdrm_amdgpu >= $LIBDRM_AMDGPU_REQUIRED])
2314 require_libdrm "radeonsi"
2315 radeon_gallium_llvm_check $LLVM_REQUIRED_RADEONSI "radeonsi"
2316 require_basic_egl "radeonsi"
2319 HAVE_GALLIUM_NOUVEAU=yes
2320 PKG_CHECK_MODULES([NOUVEAU], [libdrm >= $LIBDRM_NOUVEAU_REQUIRED libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
2321 require_libdrm "nouveau"
2324 HAVE_GALLIUM_FREEDRENO=yes
2325 PKG_CHECK_MODULES([FREEDRENO], [libdrm >= $LIBDRM_FREEDRENO_REQUIRED libdrm_freedreno >= $LIBDRM_FREEDRENO_REQUIRED])
2326 require_libdrm "freedreno"
2329 HAVE_GALLIUM_ETNAVIV=yes
2330 PKG_CHECK_MODULES([ETNAVIV], [libdrm >= $LIBDRM_ETNAVIV_REQUIRED libdrm_etnaviv >= $LIBDRM_ETNAVIV_REQUIRED])
2331 require_libdrm "etnaviv"
2334 HAVE_GALLIUM_IMX=yes
2337 HAVE_GALLIUM_SOFTPIPE=yes
2338 if test "x$MESA_LLVM" = x1 && test "x$enable_gallium_llvm" == "xyes"; then
2339 HAVE_GALLIUM_LLVMPIPE=yes
2343 llvm_check_version_for $LLVM_REQUIRED_SWR "swr"
2344 gallium_require_llvm "swr"
2346 swr_require_cxx_feature_flags "C++11" "__cplusplus >= 201103L" \
2349 AC_SUBST([SWR_CXX11_CXXFLAGS])
2351 swr_require_cxx_feature_flags "AVX" "defined(__AVX__)" \
2352 ",-mavx,-march=core-avx" \
2354 AC_SUBST([SWR_AVX_CXXFLAGS])
2356 swr_require_cxx_feature_flags "AVX2" "defined(__AVX2__)" \
2357 ",-mavx2 -mfma -mbmi2 -mf16c,-march=core-avx2" \
2359 AC_SUBST([SWR_AVX2_CXXFLAGS])
2361 HAVE_GALLIUM_SWR=yes
2364 HAVE_GALLIUM_VC4=yes
2365 PKG_CHECK_MODULES([VC4], [libdrm >= $LIBDRM_VC4_REQUIRED libdrm_vc4 >= $LIBDRM_VC4_REQUIRED])
2366 require_libdrm "vc4"
2368 PKG_CHECK_MODULES([SIMPENROSE], [simpenrose],
2369 [USE_VC4_SIMULATOR=yes;
2370 DEFINES="$DEFINES -DUSE_VC4_SIMULATOR"],
2371 [USE_VC4_SIMULATOR=no])
2374 HAVE_GALLIUM_VIRGL=yes
2375 require_libdrm "virgl"
2376 require_basic_egl "virgl"
2379 AC_MSG_ERROR([Unknown Gallium driver: $driver])
2385 if test "x$enable_gallium_llvm" == "xyes"; then
2386 llvm_check_version_for $LLVM_REQUIRED_GALLIUM "gallium"
2387 llvm_add_default_components "gallium"
2390 dnl We need to validate some needed dependencies for renderonly drivers.
2392 if test "x$HAVE_GALLIUM_ETNAVIV" != xyes -a "x$HAVE_GALLIUM_IMX" == xyes ; then
2393 AC_ERROR([Building with imx requires etnaviv])
2396 dnl Set LLVM_LIBS - This is done after the driver configuration so
2397 dnl that drivers can add additional components to LLVM_COMPONENTS.
2398 dnl Previously, gallium drivers were updating LLVM_LIBS directly
2399 dnl by calling llvm-config --libs ${DRIVER_LLVM_COMPONENTS}, but
2400 dnl this was causing the same libraries to be appear multiple times
2403 if test "x$MESA_LLVM" != x0; then
2405 if ! $LLVM_CONFIG --libs ${LLVM_COMPONENTS} >/dev/null; then
2406 AC_MSG_ERROR([Calling ${LLVM_CONFIG} failed])
2408 LLVM_LIBS="`$LLVM_CONFIG --libs ${LLVM_COMPONENTS}`"
2410 dnl llvm-config may not give the right answer when llvm is a built as a
2411 dnl single shared library, so we must work the library name out for
2413 dnl (See https://llvm.org/bugs/show_bug.cgi?id=6823)
2414 if test "x$enable_llvm_shared_libs" = xyes; then
2415 dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
2416 LLVM_SO_NAME=LLVM-`$LLVM_CONFIG --version`
2417 AS_IF([test -f "$LLVM_LIBDIR/lib$LLVM_SO_NAME.$IMP_LIB_EXT"], [llvm_have_one_so=yes])
2419 if test "x$llvm_have_one_so" = xyes; then
2420 dnl LLVM was built using auto*, so there is only one shared object.
2421 LLVM_LIBS="-l$LLVM_SO_NAME"
2423 dnl If LLVM was built with CMake, there will be one shared object per
2425 AS_IF([test ! -f "$LLVM_LIBDIR/libLLVMTarget.$IMP_LIB_EXT"],
2426 [AC_MSG_ERROR([Could not find llvm shared libraries:
2427 Please make sure you have built llvm with the --enable-shared option
2428 and that your llvm libraries are installed in $LLVM_LIBDIR
2429 If you have installed your llvm libraries to a different directory you
2430 can use the --with-llvm-prefix= configure flag to specify this directory.
2431 NOTE: Mesa is attempting to use llvm shared libraries by default.
2432 If you do not want to build with llvm shared libraries and instead want to
2433 use llvm static libraries then add --disable-llvm-shared-libs to your configure
2434 invocation and rebuild.])])
2436 dnl We don't need to update LLVM_LIBS in this case because the LLVM
2437 dnl install uses a shared object for each component and we have
2438 dnl already added all of these objects to LLVM_LIBS.
2441 AC_MSG_WARN([Building mesa with statically linked LLVM may cause compilation issues])
2442 dnl We need to link to llvm system libs when using static libs
2443 dnl However, only llvm 3.5+ provides --system-libs
2444 if test $LLVM_VERSION_MAJOR -ge 4 -o $LLVM_VERSION_MAJOR -eq 3 -a $LLVM_VERSION_MINOR -ge 5; then
2445 LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --system-libs`"
2450 AM_CONDITIONAL(HAVE_GALLIUM_SVGA, test "x$HAVE_GALLIUM_SVGA" = xyes)
2451 AM_CONDITIONAL(HAVE_GALLIUM_I915, test "x$HAVE_GALLIUM_I915" = xyes)
2452 AM_CONDITIONAL(HAVE_GALLIUM_R300, test "x$HAVE_GALLIUM_R300" = xyes)
2453 AM_CONDITIONAL(HAVE_GALLIUM_R600, test "x$HAVE_GALLIUM_R600" = xyes)
2454 AM_CONDITIONAL(HAVE_GALLIUM_RADEONSI, test "x$HAVE_GALLIUM_RADEONSI" = xyes)
2455 AM_CONDITIONAL(HAVE_GALLIUM_RADEON_COMMON, test "x$HAVE_GALLIUM_R600" = xyes -o \
2456 "x$HAVE_GALLIUM_RADEONSI" = xyes)
2457 AM_CONDITIONAL(HAVE_GALLIUM_NOUVEAU, test "x$HAVE_GALLIUM_NOUVEAU" = xyes)
2458 AM_CONDITIONAL(HAVE_GALLIUM_FREEDRENO, test "x$HAVE_GALLIUM_FREEDRENO" = xyes)
2459 AM_CONDITIONAL(HAVE_GALLIUM_ETNAVIV, test "x$HAVE_GALLIUM_ETNAVIV" = xyes)
2460 AM_CONDITIONAL(HAVE_GALLIUM_IMX, test "x$HAVE_GALLIUM_IMX" = xyes)
2461 AM_CONDITIONAL(HAVE_GALLIUM_SOFTPIPE, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes)
2462 AM_CONDITIONAL(HAVE_GALLIUM_LLVMPIPE, test "x$HAVE_GALLIUM_LLVMPIPE" = xyes)
2463 AM_CONDITIONAL(HAVE_GALLIUM_SWR, test "x$HAVE_GALLIUM_SWR" = xyes)
2464 AM_CONDITIONAL(HAVE_GALLIUM_SWRAST, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes -o \
2465 "x$HAVE_GALLIUM_LLVMPIPE" = xyes -o \
2466 "x$HAVE_GALLIUM_SWR" = xyes)
2467 AM_CONDITIONAL(HAVE_GALLIUM_VC4, test "x$HAVE_GALLIUM_VC4" = xyes)
2468 AM_CONDITIONAL(HAVE_GALLIUM_VIRGL, test "x$HAVE_GALLIUM_VIRGL" = xyes)
2470 AM_CONDITIONAL(HAVE_GALLIUM_STATIC_TARGETS, test "x$enable_shared_pipe_drivers" = xno)
2472 if test "x$enable_dri" = xyes; then
2473 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRI"
2476 if test "x$have_drisw_kms" = xyes; then
2477 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_KMS"
2479 AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
2481 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
2482 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
2483 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
2484 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
2485 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
2486 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
2488 AM_CONDITIONAL(HAVE_RADEON_VULKAN, test "x$HAVE_RADEON_VULKAN" = xyes)
2489 AM_CONDITIONAL(HAVE_INTEL_VULKAN, test "x$HAVE_INTEL_VULKAN" = xyes)
2491 AM_CONDITIONAL(HAVE_AMD_DRIVERS, test "x$HAVE_GALLIUM_R600" = xyes -o \
2492 "x$HAVE_GALLIUM_RADEONSI" = xyes -o \
2493 "x$HAVE_RADEON_VULKAN" = xyes)
2495 AM_CONDITIONAL(HAVE_INTEL_DRIVERS, test "x$HAVE_INTEL_VULKAN" = xyes -o \
2496 "x$HAVE_I965_DRI" = xyes)
2498 AM_CONDITIONAL(NEED_RADEON_DRM_WINSYS, test "x$HAVE_GALLIUM_R300" = xyes -o \
2499 "x$HAVE_GALLIUM_R600" = xyes -o \
2500 "x$HAVE_GALLIUM_RADEONSI" = xyes)
2501 AM_CONDITIONAL(NEED_WINSYS_XLIB, test "x$enable_glx" = xgallium-xlib)
2502 AM_CONDITIONAL(NEED_RADEON_LLVM, test x$NEED_RADEON_LLVM = xyes)
2503 AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
2504 AM_CONDITIONAL(HAVE_GALLIUM_LLVM, test "x$MESA_LLVM" = x1 -a \
2505 "x$enable_gallium_llvm" = xyes)
2506 AM_CONDITIONAL(USE_VC4_SIMULATOR, test x$USE_VC4_SIMULATOR = xyes)
2508 AM_CONDITIONAL(HAVE_LIBDRM, test "x$have_libdrm" = xyes)
2509 AM_CONDITIONAL(HAVE_OSMESA, test "x$enable_osmesa" = xyes)
2510 AM_CONDITIONAL(HAVE_GALLIUM_OSMESA, test "x$enable_gallium_osmesa" = xyes)
2511 AM_CONDITIONAL(HAVE_COMMON_OSMESA, test "x$enable_osmesa" = xyes -o \
2512 "x$enable_gallium_osmesa" = xyes)
2514 AM_CONDITIONAL(HAVE_X86_ASM, test "x$asm_arch" = xx86 -o "x$asm_arch" = xx86_64)
2515 AM_CONDITIONAL(HAVE_X86_64_ASM, test "x$asm_arch" = xx86_64)
2516 AM_CONDITIONAL(HAVE_SPARC_ASM, test "x$asm_arch" = xsparc)
2518 AC_SUBST([NINE_MAJOR], 1)
2519 AC_SUBST([NINE_MINOR], 0)
2520 AC_SUBST([NINE_TINY], 0)
2521 AC_SUBST([NINE_VERSION], "$NINE_MAJOR.$NINE_MINOR.$NINE_TINY")
2523 AC_SUBST([VDPAU_MAJOR], 1)
2524 AC_SUBST([VDPAU_MINOR], 0)
2526 VA_MAJOR=`$PKG_CONFIG --modversion libva | $SED -n 's/\([[^\.]]*\)\..*$/\1/p'`
2527 VA_MINOR=`$PKG_CONFIG --modversion libva | $SED -n 's/.*\.\(.*\)\..*$/\1/p'`
2528 AC_SUBST([VA_MAJOR], $VA_MAJOR)
2529 AC_SUBST([VA_MINOR], $VA_MINOR)
2531 AM_CONDITIONAL(HAVE_VULKAN_COMMON, test "x$VULKAN_DRIVERS" != "x")
2533 AC_SUBST([XVMC_MAJOR], 1)
2534 AC_SUBST([XVMC_MINOR], 0)
2536 XA_HEADER="$srcdir/src/gallium/state_trackers/xa/xa_tracker.h"
2537 XA_MAJOR=`grep "#define XA_TRACKER_VERSION_MAJOR" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_MAJOR //'`
2538 XA_MINOR=`grep "#define XA_TRACKER_VERSION_MINOR" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_MINOR //'`
2539 XA_TINY=`grep "#define XA_TRACKER_VERSION_PATCH" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_PATCH //'`
2541 AC_SUBST([XA_MAJOR], $XA_MAJOR)
2542 AC_SUBST([XA_MINOR], $XA_MINOR)
2543 AC_SUBST([XA_TINY], $XA_TINY)
2544 AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_TINY")
2546 AC_ARG_ENABLE(valgrind,
2547 [AS_HELP_STRING([--enable-valgrind],
2548 [Build mesa with valgrind support (default: auto)])],
2549 [VALGRIND=$enableval], [VALGRIND=auto])
2550 if test "x$VALGRIND" != xno; then
2551 PKG_CHECK_MODULES(VALGRIND, [valgrind], [have_valgrind=yes], [have_valgrind=no])
2553 AC_MSG_CHECKING([whether to enable Valgrind support])
2554 if test "x$VALGRIND" = xauto; then
2555 VALGRIND="$have_valgrind"
2558 if test "x$VALGRIND" = "xyes"; then
2559 if ! test "x$have_valgrind" = xyes; then
2560 AC_MSG_ERROR([Valgrind support required but not present])
2562 AC_DEFINE([HAVE_VALGRIND], 1, [Use valgrind intrinsics to suppress false warnings])
2565 AC_MSG_RESULT([$VALGRIND])
2567 dnl Restore LDFLAGS and CPPFLAGS
2568 LDFLAGS="$_SAVE_LDFLAGS"
2569 CPPFLAGS="$_SAVE_CPPFLAGS"
2571 dnl Suppress clang's warnings about unused CFLAGS and CXXFLAGS
2572 if test "x$acv_mesa_CLANG" = xyes; then
2573 CFLAGS="$CFLAGS -Qunused-arguments"
2574 CXXFLAGS="$CXXFLAGS -Qunused-arguments"
2577 dnl Add user CFLAGS and CXXFLAGS
2578 CFLAGS="$CFLAGS $USER_CFLAGS"
2579 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
2581 dnl Substitute the config
2582 AC_CONFIG_FILES([Makefile
2585 src/amd/vulkan/Makefile
2586 src/compiler/Makefile
2589 src/egl/wayland/wayland-drm/Makefile
2590 src/egl/wayland/wayland-egl/Makefile
2591 src/egl/wayland/wayland-egl/wayland-egl.pc
2592 src/gallium/Makefile
2593 src/gallium/auxiliary/Makefile
2594 src/gallium/auxiliary/pipe-loader/Makefile
2595 src/gallium/drivers/freedreno/Makefile
2596 src/gallium/drivers/ddebug/Makefile
2597 src/gallium/drivers/i915/Makefile
2598 src/gallium/drivers/llvmpipe/Makefile
2599 src/gallium/drivers/noop/Makefile
2600 src/gallium/drivers/nouveau/Makefile
2601 src/gallium/drivers/r300/Makefile
2602 src/gallium/drivers/r600/Makefile
2603 src/gallium/drivers/radeon/Makefile
2604 src/gallium/drivers/radeonsi/Makefile
2605 src/gallium/drivers/rbug/Makefile
2606 src/gallium/drivers/softpipe/Makefile
2607 src/gallium/drivers/svga/Makefile
2608 src/gallium/drivers/swr/Makefile
2609 src/gallium/drivers/trace/Makefile
2610 src/gallium/drivers/etnaviv/Makefile
2611 src/gallium/drivers/imx/Makefile
2612 src/gallium/drivers/vc4/Makefile
2613 src/gallium/drivers/virgl/Makefile
2614 src/gallium/state_trackers/clover/Makefile
2615 src/gallium/state_trackers/dri/Makefile
2616 src/gallium/state_trackers/glx/xlib/Makefile
2617 src/gallium/state_trackers/nine/Makefile
2618 src/gallium/state_trackers/omx/Makefile
2619 src/gallium/state_trackers/osmesa/Makefile
2620 src/gallium/state_trackers/va/Makefile
2621 src/gallium/state_trackers/vdpau/Makefile
2622 src/gallium/state_trackers/xa/Makefile
2623 src/gallium/state_trackers/xvmc/Makefile
2624 src/gallium/targets/d3dadapter9/Makefile
2625 src/gallium/targets/d3dadapter9/d3d.pc
2626 src/gallium/targets/dri/Makefile
2627 src/gallium/targets/libgl-xlib/Makefile
2628 src/gallium/targets/omx/Makefile
2629 src/gallium/targets/opencl/Makefile
2630 src/gallium/targets/opencl/mesa.icd
2631 src/gallium/targets/osmesa/Makefile
2632 src/gallium/targets/osmesa/osmesa.pc
2633 src/gallium/targets/pipe-loader/Makefile
2634 src/gallium/targets/va/Makefile
2635 src/gallium/targets/vdpau/Makefile
2636 src/gallium/targets/xa/Makefile
2637 src/gallium/targets/xa/xatracker.pc
2638 src/gallium/targets/xvmc/Makefile
2639 src/gallium/tests/trivial/Makefile
2640 src/gallium/tests/unit/Makefile
2641 src/gallium/winsys/etnaviv/drm/Makefile
2642 src/gallium/winsys/imx/drm/Makefile
2643 src/gallium/winsys/freedreno/drm/Makefile
2644 src/gallium/winsys/i915/drm/Makefile
2645 src/gallium/winsys/nouveau/drm/Makefile
2646 src/gallium/winsys/radeon/drm/Makefile
2647 src/gallium/winsys/amdgpu/drm/Makefile
2648 src/gallium/winsys/svga/drm/Makefile
2649 src/gallium/winsys/sw/dri/Makefile
2650 src/gallium/winsys/sw/kms-dri/Makefile
2651 src/gallium/winsys/sw/null/Makefile
2652 src/gallium/winsys/sw/wrapper/Makefile
2653 src/gallium/winsys/sw/xlib/Makefile
2654 src/gallium/winsys/vc4/drm/Makefile
2655 src/gallium/winsys/virgl/drm/Makefile
2656 src/gallium/winsys/virgl/vtest/Makefile
2660 src/glx/apple/Makefile
2661 src/glx/tests/Makefile
2662 src/glx/windows/Makefile
2663 src/glx/windows/windowsdriproto.pc
2666 src/intel/tools/Makefile
2667 src/intel/vulkan/Makefile
2670 src/mapi/es1api/glesv1_cm.pc
2671 src/mapi/es2api/glesv2.pc
2672 src/mapi/glapi/gen/Makefile
2675 src/mesa/drivers/dri/dri.pc
2676 src/mesa/drivers/dri/common/Makefile
2677 src/mesa/drivers/dri/common/xmlpool/Makefile
2678 src/mesa/drivers/dri/i915/Makefile
2679 src/mesa/drivers/dri/i965/Makefile
2680 src/mesa/drivers/dri/Makefile
2681 src/mesa/drivers/dri/nouveau/Makefile
2682 src/mesa/drivers/dri/r200/Makefile
2683 src/mesa/drivers/dri/radeon/Makefile
2684 src/mesa/drivers/dri/swrast/Makefile
2685 src/mesa/drivers/osmesa/Makefile
2686 src/mesa/drivers/osmesa/osmesa.pc
2687 src/mesa/drivers/x11/Makefile
2688 src/mesa/main/tests/Makefile
2690 src/util/tests/hash_table/Makefile
2691 src/vulkan/wsi/Makefile])
2695 # Fix up dependencies in *.Plo files, where we changed the extension of a
2697 $SED -i -e 's/brw_blorp.cpp/brw_blorp.c/' src/mesa/drivers/dri/i965/.deps/brw_blorp.Plo
2701 dnl Output some configuration info for the user
2704 echo " prefix: $prefix"
2705 echo " exec_prefix: $exec_prefix"
2706 echo " libdir: $libdir"
2707 echo " includedir: $includedir"
2711 echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
2715 case "x$enable_osmesa$enable_gallium_osmesa" in
2717 echo " OSMesa: lib$OSMESA_LIB (Gallium)"
2720 echo " OSMesa: lib$OSMESA_LIB"
2728 if test "x$enable_dri" != xno; then
2729 echo " DRI platform: $dri_platform"
2730 if test -z "$DRI_DIRS"; then
2731 echo " DRI drivers: no"
2733 echo " DRI drivers: $DRI_DIRS"
2735 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
2738 case "x$enable_glx" in
2740 echo " GLX: DRI-based"
2743 echo " GLX: Xlib-based"
2746 echo " GLX: Xlib-based (Gallium)"
2749 echo " GLX: $enable_glx"
2755 echo " EGL: $enable_egl"
2756 if test "$enable_egl" = yes; then
2757 echo " EGL platforms: $egl_platforms"
2760 if test "x$enable_dri" != "xno"; then
2761 egl_drivers="$egl_drivers builtin:egl_dri2"
2763 if test "x$enable_dri3" != "xno"; then
2764 egl_drivers="$egl_drivers builtin:egl_dri3"
2767 echo " EGL drivers: $egl_drivers"
2769 if test "x$enable_gbm" = xyes; then
2777 if test "x$VULKAN_DRIVERS" != x; then
2778 echo " Vulkan drivers: $VULKAN_DRIVERS"
2779 echo " Vulkan ICD dir: $VULKAN_ICD_INSTALL_DIR"
2781 echo " Vulkan drivers: no"
2785 if test "x$MESA_LLVM" = x1; then
2787 echo " llvm-config: $LLVM_CONFIG"
2788 echo " llvm-version: $LLVM_VERSION"
2794 if test -n "$with_gallium_drivers"; then
2795 echo " Gallium drivers: $gallium_drivers"
2796 echo " Gallium st: $gallium_st"
2802 if test "x$enable_gallium_extra_hud" != xyes; then
2803 echo " HUD extra stats: no"
2805 echo " HUD extra stats: yes"
2808 if test "x$enable_lmsensors" != xyes; then
2809 echo " HUD lmsensors: no"
2811 echo " HUD lmsensors: yes"
2816 echo " Shared libs: $enable_shared"
2817 echo " Static libs: $enable_static"
2818 echo " Shared-glapi: $enable_shared_glapi"
2820 dnl Compiler options
2821 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2822 cflags=`echo $CFLAGS | \
2823 $SED 's/^ *//;s/ */ /;s/ *$//'`
2824 cxxflags=`echo $CXXFLAGS | \
2825 $SED 's/^ *//;s/ */ /;s/ *$//'`
2826 defines=`echo $DEFINES | $SED 's/^ *//;s/ */ /;s/ *$//'`
2828 echo " CFLAGS: $cflags"
2829 echo " CXXFLAGS: $cxxflags"
2830 echo " Macros: $defines"
2832 if test "x$MESA_LLVM" = x1; then
2833 echo " LLVM_CFLAGS: $LLVM_CFLAGS"
2834 echo " LLVM_CXXFLAGS: $LLVM_CXXFLAGS"
2835 echo " LLVM_CPPFLAGS: $LLVM_CPPFLAGS"
2836 echo " LLVM_LDFLAGS: $LLVM_LDFLAGS"
2839 echo " PYTHON2: $PYTHON2"
2842 echo " Run '${MAKE-make}' to build Mesa"