1 dnl Copyright © 2011-2014 Intel Corporation
2 dnl Copyright © 2011-2014 Emil Velikov <emil.l.velikov@gmail.com>
3 dnl Copyright © 2007-2010 Dan Nicholson
4 dnl Copyright © 2010-2014 Marek Olšák <maraeo@gmail.com>
5 dnl Copyright © 2010-2014 Christian König
6 dnl Copyright © 2012-2014 Tom Stellard <tstellar@gmail.com>
7 dnl Copyright © 2009-2012 Jakob Bornecrantz
8 dnl Copyright © 2009-2014 Jon TURNEY
9 dnl Copyright © 2011-2012 Benjamin Franzke
10 dnl Copyright © 2008-2014 David Airlie
11 dnl Copyright © 2009-2013 Brian Paul
12 dnl Copyright © 2003-2007 Keith Packard, Daniel Stone
14 dnl Permission is hereby granted, free of charge, to any person obtaining a
15 dnl copy of this software and associated documentation files (the "Software"),
16 dnl to deal in the Software without restriction, including without limitation
17 dnl the rights to use, copy, modify, merge, publish, distribute, sublicense,
18 dnl and/or sell copies of the Software, and to permit persons to whom the
19 dnl Software is furnished to do so, subject to the following conditions:
21 dnl The above copyright notice and this permission notice (including the next
22 dnl paragraph) shall be included in all copies or substantial portions of the
25 dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
26 dnl IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
27 dnl FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
28 dnl THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
29 dnl LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
30 dnl FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
31 dnl DEALINGS IN THE SOFTWARE.
33 dnl Process this file with autoconf to create configure.
37 dnl Tell the user about autoconf.html in the --help output
38 m4_divert_once([HELP_END], [
39 See docs/autoconf.html for more details on the options for Mesa.])
41 m4_define(MESA_VERSION, m4_normalize(m4_include(VERSION)))
42 AC_INIT([Mesa], [MESA_VERSION],
43 [https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa])
44 AC_CONFIG_AUX_DIR([bin])
45 AC_CONFIG_MACRO_DIR([m4])
47 AM_INIT_AUTOMAKE([foreign tar-ustar dist-xz subdir-objects])
49 dnl We only support native Windows builds (MinGW/MSVC) through SCons.
52 AC_MSG_ERROR([MinGW build not supported through autoconf/automake, use SCons instead])
56 # Support silent build rules, requires at least automake-1.11. Disable
57 # by either passing --disable-silent-rules to configure or passing V=1
59 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])],
60 [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])])
62 m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
64 dnl Set internal versions
66 AC_SUBST([OSMESA_VERSION])
68 AC_SUBST([OPENCL_VERSION])
70 dnl Versions for external dependencies
71 LIBDRM_REQUIRED=2.4.60
72 LIBDRM_RADEON_REQUIRED=2.4.56
73 LIBDRM_AMDGPU_REQUIRED=2.4.63
74 LIBDRM_INTEL_REQUIRED=2.4.61
75 LIBDRM_NVVIEUX_REQUIRED=2.4.66
76 LIBDRM_NOUVEAU_REQUIRED=2.4.66
77 LIBDRM_FREEDRENO_REQUIRED=2.4.65
78 DRI2PROTO_REQUIRED=2.6
79 DRI3PROTO_REQUIRED=1.0
80 PRESENTPROTO_REQUIRED=1.0
82 GLPROTO_REQUIRED=1.4.14
83 LIBOMXIL_BELLAGIO_REQUIRED=0.0
86 WAYLAND_REQUIRED=1.2.0
90 XSHMFENCE_REQUIRED=1.1
92 PYTHON_MAKO_REQUIRED=0.3.4
101 AC_CHECK_PROGS([PYTHON2], [python2.7 python2 python])
108 LT_INIT([disable-static])
110 AC_CHECK_PROG(RM, rm, [rm -f])
113 AS_IF([test ! -f "$srcdir/src/glsl/glcpp/glcpp-parse.c"],
114 [AC_MSG_ERROR([bison not found - unable to compile glcpp-parse.y])]))
116 AS_IF([test ! -f "$srcdir/src/glsl/glcpp/glcpp-lex.c"],
117 [AC_MSG_ERROR([flex not found - unable to compile glcpp-lex.l])]))
119 AC_CHECK_PROG(INDENT, indent, indent, cat)
120 if test "x$INDENT" != "xcat"; then
121 # Only GNU indent is supported
122 INDENT_VERSION=`indent --version | grep GNU`
123 if test $? -eq 0; then
124 AC_SUBST(INDENT_FLAGS, '-i4 -nut -br -brs -npcs -ce -TGLubyte -TGLbyte -TBool')
130 AX_CHECK_PYTHON_MAKO_MODULE($PYTHON_MAKO_REQUIRED)
132 if test -z "$PYTHON2"; then
133 if test ! -f "$srcdir/src/util/format_srgb.c"; then
134 AC_MSG_ERROR([Python not found - unable to generate sources])
137 if test "x$acv_mako_found" = xno; then
138 if test ! -f "$srcdir/src/mesa/main/format_unpack.c"; then
139 AC_MSG_ERROR([Python mako module v$PYTHON_MAKO_REQUIRED or higher not found])
146 dnl We need a POSIX shell for parts of the build. Assume we have one
150 # Solaris /bin/sh is too old/non-POSIX compliant
151 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
156 dnl clang is mostly GCC-compatible, but its version is much lower,
157 dnl so we have to check for it.
158 AC_MSG_CHECKING([if compiling with clang])
161 [AC_LANG_PROGRAM([], [[
166 [acv_mesa_CLANG=yes], [acv_mesa_CLANG=no])
168 AC_MSG_RESULT([$acv_mesa_CLANG])
170 dnl If we're using GCC, make sure that it is at least version 4.2.0. Older
171 dnl versions are explictly not supported.
174 if test "x$GCC" = xyes -a "x$acv_mesa_CLANG" = xno; then
175 AC_MSG_CHECKING([whether gcc version is sufficient])
179 GCC_VERSION=`$CC -dumpversion`
180 if test $? -eq 0; then
181 GCC_VERSION_MAJOR=`echo $GCC_VERSION | cut -d. -f1`
182 GCC_VERSION_MINOR=`echo $GCC_VERSION | cut -d. -f2`
185 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 2 ; then
187 AC_MSG_ERROR([If using GCC, version 4.2.0 or later is required.])
192 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6 ; then
195 if test "x$cross_compiling" = xyes; then
200 dnl We don't support building Mesa with Sun C compiler
201 dnl https://bugs.freedesktop.org/show_bug.cgi?id=93189
202 AC_CHECK_DECL([__SUNPRO_C], [SUNCC=yes], [SUNCC=no])
203 if test "x$SUNCC" = xyes; then
204 AC_MSG_ERROR([Building with Sun C compiler is not supported, use GCC instead.])
207 dnl Check for compiler builtins
208 AX_GCC_BUILTIN([__builtin_bswap32])
209 AX_GCC_BUILTIN([__builtin_bswap64])
210 AX_GCC_BUILTIN([__builtin_clz])
211 AX_GCC_BUILTIN([__builtin_clzll])
212 AX_GCC_BUILTIN([__builtin_ctz])
213 AX_GCC_BUILTIN([__builtin_expect])
214 AX_GCC_BUILTIN([__builtin_ffs])
215 AX_GCC_BUILTIN([__builtin_ffsll])
216 AX_GCC_BUILTIN([__builtin_popcount])
217 AX_GCC_BUILTIN([__builtin_popcountll])
218 AX_GCC_BUILTIN([__builtin_unreachable])
220 AX_GCC_FUNC_ATTRIBUTE([const])
221 AX_GCC_FUNC_ATTRIBUTE([flatten])
222 AX_GCC_FUNC_ATTRIBUTE([format])
223 AX_GCC_FUNC_ATTRIBUTE([malloc])
224 AX_GCC_FUNC_ATTRIBUTE([packed])
225 AX_GCC_FUNC_ATTRIBUTE([pure])
226 AX_GCC_FUNC_ATTRIBUTE([unused])
227 AX_GCC_FUNC_ATTRIBUTE([warn_unused_result])
229 AM_CONDITIONAL([GEN_ASM_OFFSETS], test "x$GEN_ASM_OFFSETS" = xyes)
231 dnl Make sure the pkg-config macros are defined
232 m4_ifndef([PKG_PROG_PKG_CONFIG],
233 [m4_fatal([Could not locate the pkg-config autoconf macros.
234 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
235 are in a different location, try setting the environment variable
236 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
237 PKG_PROG_PKG_CONFIG()
239 dnl LIB_DIR - library basename
240 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
243 dnl Cache LDFLAGS and CPPFLAGS so we can add to them and restore later
244 _SAVE_LDFLAGS="$LDFLAGS"
245 _SAVE_CPPFLAGS="$CPPFLAGS"
248 DEFINES="-D__STDC_LIMIT_MACROS"
252 DEFINES="$DEFINES -D_GNU_SOURCE"
255 DEFINES="$DEFINES -DSVR4"
258 DEFINES="$DEFINES -D_XOPEN_SOURCE=700"
262 dnl Add flags for gcc and g++
263 if test "x$GCC" = xyes; then
264 CFLAGS="$CFLAGS -Wall"
266 if test "x$USE_GNU99" = xyes; then
267 CFLAGS="$CFLAGS -std=gnu99"
269 CFLAGS="$CFLAGS -std=c99"
272 # Enable -Werror=implicit-function-declaration and
273 # -Werror=missing-prototypes, if available, or otherwise, just
274 # -Wmissing-prototypes. This is particularly useful to avoid
275 # generating a loadable driver module that has undefined symbols.
276 save_CFLAGS="$CFLAGS"
277 AC_MSG_CHECKING([whether $CC supports -Werror=missing-prototypes])
278 CFLAGS="$CFLAGS -Werror=implicit-function-declaration"
279 CFLAGS="$CFLAGS -Werror=missing-prototypes"
280 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
281 AC_MSG_RESULT([yes]),
282 [CFLAGS="$save_CFLAGS -Wmissing-prototypes";
283 AC_MSG_RESULT([no])]);
285 # Enable -fvisibility=hidden if using a gcc that supports it
286 save_CFLAGS="$CFLAGS"
287 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
288 VISIBILITY_CFLAGS="-fvisibility=hidden"
289 CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
290 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
291 [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
293 # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
296 # Work around aliasing bugs - developers should comment this out
297 CFLAGS="$CFLAGS -fno-strict-aliasing"
299 # We don't want floating-point math functions to set errno or trap
300 CFLAGS="$CFLAGS -fno-math-errno -fno-trapping-math"
302 # gcc's builtin memcmp is slower than glibc's
303 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
304 CFLAGS="$CFLAGS -fno-builtin-memcmp"
306 # Flags to help ensure that certain portions of the code -- and only those
307 # portions -- can be built with MSVC:
308 # - src/util, src/gallium/auxiliary, and src/gallium/drivers/llvmpipe needs
309 # to build with Windows SDK 7.0.7600, which bundles MSVC 2008
310 # - non-Linux/Posix OpenGL portions needs to build on MSVC 2013 (which
311 # supports most of C99)
312 # - the rest has no compiler compiler restrictions
313 MSVC2013_COMPAT_CFLAGS="-Werror=pointer-arith"
314 MSVC2013_COMPAT_CXXFLAGS="-Werror=pointer-arith"
316 # Enable -Werror=vla if compiler supports it
317 save_CFLAGS="$CFLAGS"
318 AC_MSG_CHECKING([whether $CC supports -Werror=vla])
319 CFLAGS="$CFLAGS -Werror=vla"
320 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
321 [MSVC2013_COMPAT_CFLAGS="$MSVC2013_COMPAT_CFLAGS -Werror=vla";
322 MSVC2013_COMPAT_CXXFLAGS="$MSVC2013_COMPAT_CXXFLAGS -Werror=vla";
323 AC_MSG_RESULT([yes])],
324 AC_MSG_RESULT([no]));
325 CFLAGS="$save_CFLAGS"
327 MSVC2008_COMPAT_CFLAGS="$MSVC2013_COMPAT_CFLAGS -Werror=declaration-after-statement"
328 MSVC2008_COMPAT_CXXFLAGS="$MSVC2013_COMPAT_CXXFLAGS"
330 if test "x$GXX" = xyes; then
331 CXXFLAGS="$CXXFLAGS -Wall"
333 # Enable -fvisibility=hidden if using a gcc that supports it
334 save_CXXFLAGS="$CXXFLAGS"
335 AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
336 VISIBILITY_CXXFLAGS="-fvisibility=hidden"
337 CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
339 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
340 [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
343 # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
344 CXXFLAGS=$save_CXXFLAGS
346 # Work around aliasing bugs - developers should comment this out
347 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
349 # gcc's builtin memcmp is slower than glibc's
350 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
351 CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp"
354 AC_SUBST([MSVC2013_COMPAT_CFLAGS])
355 AC_SUBST([MSVC2013_COMPAT_CXXFLAGS])
356 AC_SUBST([MSVC2008_COMPAT_CFLAGS])
357 AC_SUBST([MSVC2008_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 Endianness
407 dnl Check for POWER8 Architecture
408 PWR8_CFLAGS="-mpower8-vector"
409 have_pwr8_intrinsics=no
410 AC_MSG_CHECKING(whether gcc supports -mpower8-vector)
412 CFLAGS="$PWR8_CFLAGS $CFLAGS"
413 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
414 #if defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8))
415 #error "Need GCC >= 4.8 for sane POWER8 support"
419 vector unsigned char r;
420 vector unsigned int v = vec_splat_u32 (1);
421 r = __builtin_vec_vgbbd ((vector unsigned char) v);
423 }]])], have_pwr8_intrinsics=yes)
427 [AC_HELP_STRING([--disable-pwr8-inst],
428 [disable POWER8-specific instructions])],
429 [enable_pwr8=$enableval], [enable_pwr8=auto])
431 if test "x$enable_pwr8" = xno ; then
432 have_pwr8_intrinsics=disabled
435 if test $have_pwr8_intrinsics = yes && test $little_endian = yes ; then
436 DEFINES="$DEFINES -D_ARCH_PWR8"
437 CXXFLAGS="$CXXFLAGS $PWR8_CFLAGS"
438 CFLAGS="$CFLAGS $PWR8_CFLAGS"
443 AC_MSG_RESULT($have_pwr8_intrinsics)
444 if test "x$enable_pwr8" = xyes && test $have_pwr8_intrinsics = no ; then
445 AC_MSG_ERROR([POWER8 compiler support not detected])
448 if test $have_pwr8_intrinsics = yes && test $little_endian = no ; then
449 AC_MSG_WARN([POWER8 optimization is enabled only on POWER8 Little-Endian])
452 AC_SUBST([PWR8_CFLAGS], $PWR8_CFLAGS)
454 dnl Can't have static and shared libraries, default to static if user
455 dnl explicitly requested. If both disabled, set to static since shared
456 dnl was explicitly requested.
457 case "x$enable_static$enable_shared" in
459 AC_MSG_WARN([Cannot build static and shared libraries, disabling shared])
463 AC_MSG_WARN([Cannot disable both static and shared libraries, enabling shared])
468 AM_CONDITIONAL(BUILD_SHARED, test "x$enable_shared" = xyes)
471 dnl other compiler options
473 AC_ARG_ENABLE([debug],
474 [AS_HELP_STRING([--enable-debug],
475 [use debug compiler flags and macros @<:@default=disabled@:>@])],
476 [enable_debug="$enableval"],
479 if test "x$enable_debug" = xyes; then
480 DEFINES="$DEFINES -DDEBUG"
481 if test "x$GCC" = xyes; then
482 if ! echo "$CFLAGS" | grep -q -e '-g'; then
485 if ! echo "$CFLAGS" | grep -q -e '-O'; then
489 if test "x$GXX" = xyes; then
490 if ! echo "$CXXFLAGS" | grep -q -e '-g'; then
491 CXXFLAGS="$CXXFLAGS -g"
493 if ! echo "$CXXFLAGS" | grep -q -e '-O'; then
494 CXXFLAGS="$CXXFLAGS -O0"
498 DEFINES="$DEFINES -DNDEBUG"
502 dnl Check if linker supports -Bsymbolic
504 save_LDFLAGS=$LDFLAGS
505 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic"
506 AC_MSG_CHECKING([if ld supports -Bsymbolic])
508 [AC_LANG_SOURCE([int main() { return 0;}])],
509 [AC_MSG_RESULT([yes])
510 BSYMBOLIC="-Wl,-Bsymbolic";],
513 LDFLAGS=$save_LDFLAGS
515 AC_SUBST([BSYMBOLIC])
518 dnl Check if linker supports garbage collection
520 save_LDFLAGS=$LDFLAGS
521 LDFLAGS="$LDFLAGS -Wl,--gc-sections"
522 AC_MSG_CHECKING([whether ld supports --gc-sections])
524 [AC_LANG_SOURCE([static char UnusedFunc() { return 5; } int main() { return 0;}])],
525 [AC_MSG_RESULT([yes])
526 GC_SECTIONS="-Wl,--gc-sections";],
529 LDFLAGS=$save_LDFLAGS
531 AC_SUBST([GC_SECTIONS])
534 dnl OpenBSD does not have DT_NEEDED entries for libc by design
535 dnl so when these flags are passed to ld via libtool the checks will fail
539 LD_NO_UNDEFINED="" ;;
541 LD_NO_UNDEFINED="-Wl,--no-undefined" ;;
544 AC_SUBST([LD_NO_UNDEFINED])
547 dnl Check if linker supports version scripts
549 AC_MSG_CHECKING([if the linker supports version-scripts])
550 save_LDFLAGS=$LDFLAGS
551 LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map"
552 cat > conftest.map <<EOF
562 [AC_LANG_SOURCE([int main() { return 0;}])],
563 [have_ld_version_script=yes;AC_MSG_RESULT(yes)],
564 [have_ld_version_script=no; AC_MSG_RESULT(no)])
565 LDFLAGS=$save_LDFLAGS
566 AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes")
569 dnl Check if linker supports dynamic list files
571 AC_MSG_CHECKING([if the linker supports --dynamic-list])
572 save_LDFLAGS=$LDFLAGS
573 LDFLAGS="$LDFLAGS -Wl,--dynamic-list=conftest.dyn"
574 cat > conftest.dyn <<EOF
576 radeon_drm_winsys_create;
580 [AC_LANG_SOURCE([int main() { return 0;}])],
581 [have_ld_dynamic_list=yes;AC_MSG_RESULT(yes)],
582 [have_ld_dynamic_list=no; AC_MSG_RESULT(no)])
583 LDFLAGS=$save_LDFLAGS
584 AM_CONDITIONAL(HAVE_LD_DYNAMIC_LIST, test "$have_ld_dynamic_list" = "yes")
587 dnl compatibility symlinks
591 HAVE_COMPAT_SYMLINKS=yes ;;
593 HAVE_COMPAT_SYMLINKS=no ;;
596 AM_CONDITIONAL(HAVE_COMPAT_SYMLINKS, test "x$HAVE_COMPAT_SYMLINKS" = xyes)
601 dnl Unfortunately we need to do a few things that libtool can't help us with,
602 dnl so we need some knowledge of shared library filenames:
604 dnl LIB_EXT is the extension used when creating symlinks for alternate
605 dnl filenames for a shared library which will be dynamically loaded
607 dnl IMP_LIB_EXT is the extension used when checking for the presence of a
608 dnl the file for a shared library we wish to link with
631 AC_ARG_WITH([gl-lib-name],
632 [AS_HELP_STRING([--with-gl-lib-name@<:@=NAME@:>@],
633 [specify GL library name @<:@default=GL@:>@])],
636 AC_ARG_WITH([osmesa-lib-name],
637 [AS_HELP_STRING([--with-osmesa-lib-name@<:@=NAME@:>@],
638 [specify OSMesa library name @<:@default=OSMesa@:>@])],
639 [OSMESA_LIB=$withval],
641 AS_IF([test "x$GL_LIB" = xyes], [GL_LIB=GL])
642 AS_IF([test "x$OSMESA_LIB" = xyes], [OSMESA_LIB=OSMesa])
645 dnl Mangled Mesa support
647 AC_ARG_ENABLE([mangling],
648 [AS_HELP_STRING([--enable-mangling],
649 [enable mangled symbols and library name @<:@default=disabled@:>@])],
650 [enable_mangling="${enableval}"],
653 if test "x${enable_mangling}" = "xyes" ; then
654 DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
655 GL_LIB="Mangled${GL_LIB}"
656 OSMESA_LIB="Mangled${OSMESA_LIB}"
659 AC_SUBST([OSMESA_LIB])
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)
693 AC_MSG_RESULT([no, cross compiling])
697 # check for supported arches
698 if test "x$enable_asm" = xyes; then
702 linux* | *freebsd* | dragonfly* | *netbsd* | openbsd* | gnu*)
709 linux* | *freebsd* | dragonfly* | *netbsd* | openbsd*)
725 DEFINES="$DEFINES -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
726 AC_MSG_RESULT([yes, x86])
729 DEFINES="$DEFINES -DUSE_X86_64_ASM"
730 AC_MSG_RESULT([yes, x86_64])
733 DEFINES="$DEFINES -DUSE_SPARC_ASM"
734 AC_MSG_RESULT([yes, sparc])
737 AC_MSG_RESULT([no, platform not supported])
742 AC_CHECK_HEADER([xlocale.h], [DEFINES="$DEFINES -DHAVE_XLOCALE_H"])
743 AC_CHECK_HEADER([sys/sysctl.h], [DEFINES="$DEFINES -DHAVE_SYS_SYSCTL_H"])
744 AC_CHECK_FUNC([strtof], [DEFINES="$DEFINES -DHAVE_STRTOF"])
745 AC_CHECK_FUNC([mkostemp], [DEFINES="$DEFINES -DHAVE_MKOSTEMP"])
747 dnl Check to see if dlopen is in default libraries (like Solaris, which
748 dnl has it in libc), or if libdl is needed to get it.
749 AC_CHECK_FUNC([dlopen], [DEFINES="$DEFINES -DHAVE_DLOPEN"],
750 [AC_CHECK_LIB([dl], [dlopen],
751 [DEFINES="$DEFINES -DHAVE_DLOPEN"; DLOPEN_LIBS="-ldl"])])
752 AC_SUBST([DLOPEN_LIBS])
754 dnl Check if that library also has dladdr
756 LIBS="$LIBS $DLOPEN_LIBS"
757 AC_CHECK_FUNCS([dladdr])
764 AC_CHECK_FUNCS([clock_gettime], [CLOCK_LIB=],
765 [AC_CHECK_LIB([rt], [clock_gettime], [CLOCK_LIB=-lrt],
766 [AC_MSG_ERROR([Could not find clock_gettime])])])
767 AC_SUBST([CLOCK_LIB])
771 dnl See if posix_memalign is available
772 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
774 dnl Check for pthreads
776 if test "x$ax_pthread_ok" = xno; then
777 AC_MSG_ERROR([Building mesa on this platform requires pthreads])
779 dnl AX_PTHREADS leaves PTHREAD_LIBS empty for gcc and sets PTHREAD_CFLAGS
780 dnl to -pthread, which causes problems if we need -lpthread to appear in
782 test -z "$PTHREAD_LIBS" && PTHREAD_LIBS="-lpthread"
784 dnl SELinux awareness.
785 AC_ARG_ENABLE([selinux],
786 [AS_HELP_STRING([--enable-selinux],
787 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
788 [MESA_SELINUX="$enableval"],
790 if test "x$enable_selinux" = "xyes"; then
791 PKG_CHECK_MODULES([SELINUX], [libselinux], [],
792 [AC_CHECK_HEADER([selinux/selinux.h],[],
793 [AC_MSG_ERROR([SELinux headers not found])])
794 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
795 [AC_MSG_ERROR([SELinux library not found])])
796 SELINUX_LIBS="-lselinux"])
797 DEFINES="$DEFINES -DMESA_SELINUX"
799 AC_SUBST([SELINUX_CFLAGS])
800 AC_SUBST([SELINUX_LIBS])
803 AC_ARG_ENABLE([opengl],
804 [AS_HELP_STRING([--disable-opengl],
805 [disable support for standard OpenGL API @<:@default=enabled@:>@])],
806 [enable_opengl="$enableval"],
808 AC_ARG_ENABLE([gles1],
809 [AS_HELP_STRING([--disable-gles1],
810 [disable support for OpenGL ES 1.x API @<:@default=enabled@:>@])],
811 [enable_gles1="$enableval"],
813 AC_ARG_ENABLE([gles2],
814 [AS_HELP_STRING([--disable-gles2],
815 [disable support for OpenGL ES 2.x API @<:@default=enabled@:>@])],
816 [enable_gles2="$enableval"],
820 [AS_HELP_STRING([--enable-dri],
821 [enable DRI modules @<:@default=enabled@:>@])],
822 [enable_dri="$enableval"],
834 if test "x$enable_dri" = xno; then
838 AC_ARG_ENABLE([dri3],
839 [AS_HELP_STRING([--enable-dri3],
840 [enable DRI3 @<:@default=auto@:>@])],
841 [enable_dri3="$enableval"],
842 [enable_dri3="$dri3_default"])
844 [AS_HELP_STRING([--enable-glx],
845 [enable GLX library @<:@default=enabled@:>@])],
846 [enable_glx="$enableval"],
848 AC_ARG_ENABLE([osmesa],
849 [AS_HELP_STRING([--enable-osmesa],
850 [enable OSMesa library @<:@default=disabled@:>@])],
851 [enable_osmesa="$enableval"],
853 AC_ARG_ENABLE([gallium-osmesa],
854 [AS_HELP_STRING([--enable-gallium-osmesa],
855 [enable Gallium implementation of the OSMesa library @<:@default=disabled@:>@])],
856 [enable_gallium_osmesa="$enableval"],
857 [enable_gallium_osmesa=no])
859 [AS_HELP_STRING([--disable-egl],
860 [disable EGL library @<:@default=enabled@:>@])],
861 [enable_egl="$enableval"],
865 [AS_HELP_STRING([--enable-xa],
866 [enable build of the XA X Acceleration API @<:@default=disabled@:>@])],
867 [enable_xa="$enableval"],
870 [AS_HELP_STRING([--enable-gbm],
871 [enable gbm library @<:@default=auto@:>@])],
872 [enable_gbm="$enableval"],
874 AC_ARG_ENABLE([nine],
875 [AS_HELP_STRING([--enable-nine],
876 [enable build of the nine Direct3D9 API @<:@default=no@:>@])],
877 [enable_nine="$enableval"],
880 AC_ARG_ENABLE([xvmc],
881 [AS_HELP_STRING([--enable-xvmc],
882 [enable xvmc library @<:@default=auto@:>@])],
883 [enable_xvmc="$enableval"],
885 AC_ARG_ENABLE([vdpau],
886 [AS_HELP_STRING([--enable-vdpau],
887 [enable vdpau library @<:@default=auto@:>@])],
888 [enable_vdpau="$enableval"],
891 [AS_HELP_STRING([--enable-omx],
892 [enable OpenMAX library @<:@default=disabled@:>@])],
893 [enable_omx="$enableval"],
896 [AS_HELP_STRING([--enable-va],
897 [enable va library @<:@default=auto@:>@])],
898 [enable_va="$enableval"],
900 AC_ARG_ENABLE([opencl],
901 [AS_HELP_STRING([--enable-opencl],
902 [enable OpenCL library @<:@default=disabled@:>@])],
903 [enable_opencl="$enableval"],
905 AC_ARG_ENABLE([opencl_icd],
906 [AS_HELP_STRING([--enable-opencl-icd],
907 [Build an OpenCL ICD library to be loaded by an ICD implementation
908 @<:@default=disabled@:>@])],
909 [enable_opencl_icd="$enableval"],
910 [enable_opencl_icd=no])
911 AC_ARG_ENABLE([xlib-glx],
912 [AS_HELP_STRING([--enable-xlib-glx],
913 [make GLX library Xlib-based instead of DRI-based @<:@default=disabled@:>@])],
914 [enable_xlib_glx="$enableval"],
915 [enable_xlib_glx=no])
917 AC_ARG_ENABLE([r600-llvm-compiler],
918 [AS_HELP_STRING([--enable-r600-llvm-compiler],
919 [Enable experimental LLVM backend for graphics shaders @<:@default=disabled@:>@])],
920 [enable_r600_llvm="$enableval"],
921 [enable_r600_llvm=no])
923 AC_ARG_ENABLE([gallium-tests],
924 [AS_HELP_STRING([--enable-gallium-tests],
925 [Enable optional Gallium tests) @<:@default=disabled@:>@])],
926 [enable_gallium_tests="$enableval"],
927 [enable_gallium_tests=no])
929 # Option for Gallium drivers
931 # Keep this in sync with the --with-gallium-drivers help string default value
932 GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
934 AC_ARG_WITH([gallium-drivers],
935 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
936 [comma delimited Gallium drivers list, e.g.
937 "i915,ilo,nouveau,r300,r600,radeonsi,freedreno,svga,swrast,vc4,virgl"
938 @<:@default=r300,r600,svga,swrast@:>@])],
939 [with_gallium_drivers="$withval"],
940 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
942 # Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it
943 # here so that the script doesn't choke on an unknown driver name later.
944 case "$with_gallium_drivers" in
945 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
946 no) with_gallium_drivers='' ;;
949 if test "x$enable_opengl" = xno -a \
950 "x$enable_gles1" = xno -a \
951 "x$enable_gles2" = xno -a \
952 "x$enable_nine" = xno -a \
953 "x$enable_xa" = xno -a \
954 "x$enable_xvmc" = xno -a \
955 "x$enable_vdpau" = xno -a \
956 "x$enable_omx" = xno -a \
957 "x$enable_va" = xno -a \
958 "x$enable_opencl" = xno; then
959 AC_MSG_ERROR([at least one API should be enabled])
962 # Building OpenGL ES1 and/or ES2 without OpenGL is not supported on mesa 9.0.x
963 if test "x$enable_opengl" = xno -a \
964 "x$enable_gles1" = xyes; then
965 AC_MSG_ERROR([Building OpenGL ES1 without OpenGL is not supported])
968 if test "x$enable_opengl" = xno -a \
969 "x$enable_gles2" = xyes; then
970 AC_MSG_ERROR([Building OpenGL ES2 without OpenGL is not supported])
973 AM_CONDITIONAL(HAVE_OPENGL, test "x$enable_opengl" = xyes)
974 AM_CONDITIONAL(HAVE_OPENGL_ES1, test "x$enable_gles1" = xyes)
975 AM_CONDITIONAL(HAVE_OPENGL_ES2, test "x$enable_gles2" = xyes)
976 AM_CONDITIONAL(NEED_OPENGL_COMMON, test "x$enable_opengl" = xyes -o \
977 "x$enable_gles1" = xyes -o \
978 "x$enable_gles2" = xyes)
980 if test "x$enable_glx" = xno; then
981 AC_MSG_WARN([GLX disabled, disabling Xlib-GLX])
985 if test "x$enable_dri$enable_xlib_glx" = xyesyes; then
986 AC_MSG_ERROR([DRI and Xlib-GLX cannot be built together])
989 if test "x$enable_opengl$enable_xlib_glx" = xnoyes; then
990 AC_MSG_ERROR([Xlib-GLX cannot be built without OpenGL])
993 # Disable GLX if OpenGL is not enabled
994 if test "x$enable_glx$enable_opengl" = xyesno; then
995 AC_MSG_WARN([OpenGL not enabled, disabling GLX])
999 # Disable GLX if DRI and Xlib-GLX are not enabled
1000 if test "x$enable_glx" = xyes -a \
1001 "x$enable_dri" = xno -a \
1002 "x$enable_xlib_glx" = xno; then
1003 AC_MSG_WARN([Neither DRI nor Xlib-GLX enabled, disabling GLX])
1007 AM_CONDITIONAL(HAVE_DRI_GLX, test "x$enable_glx" = xyes -a \
1008 "x$enable_dri" = xyes)
1011 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
1012 [have_libdrm=yes], [have_libdrm=no])
1013 if test "x$have_libdrm" = xyes; then
1014 DEFINES="$DEFINES -DHAVE_LIBDRM"
1017 # Select which platform-dependent DRI code gets built
1020 dri_platform='apple' ;;
1022 dri_platform='none' ;;
1024 dri_platform='drm' ;;
1027 if test "x$enable_dri" = xyes -a "x$dri_platform" = xdrm -a "x$have_libdrm" = xyes; then
1028 have_drisw_kms='yes'
1031 AM_CONDITIONAL(HAVE_DRICOMMON, test "x$enable_dri" = xyes )
1032 AM_CONDITIONAL(HAVE_DRISW, test "x$enable_dri" = xyes )
1033 AM_CONDITIONAL(HAVE_DRISW_KMS, test "x$have_drisw_kms" = xyes )
1034 AM_CONDITIONAL(HAVE_DRI2, test "x$enable_dri" = xyes -a "x$dri_platform" = xdrm -a "x$have_libdrm" = xyes )
1035 AM_CONDITIONAL(HAVE_DRI3, test "x$enable_dri3" = xyes -a "x$dri_platform" = xdrm -a "x$have_libdrm" = xyes )
1036 AM_CONDITIONAL(HAVE_APPLEDRI, test "x$enable_dri" = xyes -a "x$dri_platform" = xapple )
1038 AC_ARG_ENABLE([shared-glapi],
1039 [AS_HELP_STRING([--enable-shared-glapi],
1040 [Enable shared glapi for OpenGL @<:@default=enabled@:>@])],
1041 [enable_shared_glapi="$enableval"],
1042 [enable_shared_glapi=yes])
1044 case "x$enable_opengl$enable_gles1$enable_gles2" in
1046 if test "x$enable_shared_glapi" = xno; then
1047 AC_MSG_ERROR([shared GLAPI required when building two or more of
1048 the following APIs - opengl, gles1 gles2])
1053 AM_CONDITIONAL(HAVE_SHARED_GLAPI, test "x$enable_shared_glapi" = xyes)
1055 # Build the pipe-drivers as separate libraries/modules.
1056 # Do not touch this unless you know what you are doing.
1057 # XXX: Expose via configure option ?
1058 enable_shared_pipe_drivers=no
1061 dnl Driver specific build directories
1064 if test -n "$with_gallium_drivers" -a "x$enable_glx$enable_xlib_glx" = xyesyes; then
1065 NEED_WINSYS_XLIB="yes"
1068 if test "x$enable_gallium_osmesa" = xyes; then
1069 if ! echo "$with_gallium_drivers" | grep -q 'swrast'; then
1070 AC_MSG_ERROR([gallium_osmesa requires the gallium swrast driver])
1072 if test "x$enable_osmesa" = xyes; then
1073 AC_MSG_ERROR([Cannot enable both classic and Gallium OSMesa implementations])
1077 AC_SUBST([MESA_LLVM])
1081 [AS_HELP_STRING([--with-sha1=libc|libmd|libnettle|libgcrypt|libcrypto|libsha1|CommonCrypto|CryptoAPI],
1082 [choose SHA1 implementation])])
1083 case "x$with_sha1" in
1084 x | xlibc | xlibmd | xlibnettle | xlibgcrypt | xlibcrypto | xlibsha1 | xCommonCrypto | xCryptoAPI)
1087 AC_MSG_ERROR([Illegal value for --with-sha1: $with_sha1])
1090 AC_CHECK_FUNC([SHA1Init], [HAVE_SHA1_IN_LIBC=yes])
1091 if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_LIBC" = xyes; then
1094 if test "x$with_sha1" = xlibc && test "x$HAVE_SHA1_IN_LIBC" != xyes; then
1095 AC_MSG_ERROR([sha1 in libc requested but not found])
1097 if test "x$with_sha1" = xlibc; then
1098 AC_DEFINE([HAVE_SHA1_IN_LIBC], [1],
1099 [Use libc SHA1 functions])
1102 AC_CHECK_FUNC([CC_SHA1_Init], [HAVE_SHA1_IN_COMMONCRYPTO=yes])
1103 if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_COMMONCRYPTO" = xyes; then
1104 with_sha1=CommonCrypto
1106 if test "x$with_sha1" = xCommonCrypto && test "x$HAVE_SHA1_IN_COMMONCRYPTO" != xyes; then
1107 AC_MSG_ERROR([CommonCrypto requested but not found])
1109 if test "x$with_sha1" = xCommonCrypto; then
1110 AC_DEFINE([HAVE_SHA1_IN_COMMONCRYPTO], [1],
1111 [Use CommonCrypto SHA1 functions])
1114 dnl stdcall functions cannot be tested with AC_CHECK_LIB
1115 AC_CHECK_HEADER([wincrypt.h], [HAVE_SHA1_IN_CRYPTOAPI=yes], [], [#include <windows.h>])
1116 if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_CRYPTOAPI" = xyes; then
1119 if test "x$with_sha1" = xCryptoAPI && test "x$HAVE_SHA1_IN_CRYPTOAPI" != xyes; then
1120 AC_MSG_ERROR([CryptoAPI requested but not found])
1122 if test "x$with_sha1" = xCryptoAPI; then
1123 AC_DEFINE([HAVE_SHA1_IN_CRYPTOAPI], [1],
1124 [Use CryptoAPI SHA1 functions])
1127 AC_CHECK_LIB([md], [SHA1Init], [HAVE_LIBMD=yes])
1128 if test "x$with_sha1" = x && test "x$HAVE_LIBMD" = xyes; then
1131 if test "x$with_sha1" = xlibmd && test "x$HAVE_LIBMD" != xyes; then
1132 AC_MSG_ERROR([libmd requested but not found])
1134 if test "x$with_sha1" = xlibmd; then
1135 AC_DEFINE([HAVE_SHA1_IN_LIBMD], [1],
1136 [Use libmd SHA1 functions])
1139 PKG_CHECK_MODULES([LIBSHA1], [libsha1], [HAVE_LIBSHA1=yes], [HAVE_LIBSHA1=no])
1140 if test "x$with_sha1" = x && test "x$HAVE_LIBSHA1" = xyes; then
1143 if test "x$with_sha1" = xlibsha1 && test "x$HAVE_LIBSHA1" != xyes; then
1144 AC_MSG_ERROR([libsha1 requested but not found])
1146 if test "x$with_sha1" = xlibsha1; then
1147 AC_DEFINE([HAVE_SHA1_IN_LIBSHA1], [1],
1148 [Use libsha1 for SHA1])
1151 AC_CHECK_LIB([nettle], [nettle_sha1_init], [HAVE_LIBNETTLE=yes])
1152 if test "x$with_sha1" = x && test "x$HAVE_LIBNETTLE" = xyes; then
1155 if test "x$with_sha1" = xlibnettle && test "x$HAVE_LIBNETTLE" != xyes; then
1156 AC_MSG_ERROR([libnettle requested but not found])
1158 if test "x$with_sha1" = xlibnettle; then
1159 AC_DEFINE([HAVE_SHA1_IN_LIBNETTLE], [1],
1160 [Use libnettle SHA1 functions])
1163 AC_CHECK_LIB([gcrypt], [gcry_md_open], [HAVE_LIBGCRYPT=yes])
1164 if test "x$with_sha1" = x && test "x$HAVE_LIBGCRYPT" = xyes; then
1167 if test "x$with_sha1" = xlibgcrypt && test "x$HAVE_LIBGCRYPT" != xyes; then
1168 AC_MSG_ERROR([libgcrypt requested but not found])
1170 if test "x$with_sha1" = xlibgcrypt; then
1171 AC_DEFINE([HAVE_SHA1_IN_LIBGCRYPT], [1],
1172 [Use libgcrypt SHA1 functions])
1175 # We don't need all of the OpenSSL libraries, just libcrypto
1176 AC_CHECK_LIB([crypto], [SHA1_Init], [HAVE_LIBCRYPTO=yes])
1177 PKG_CHECK_MODULES([OPENSSL], [openssl], [HAVE_OPENSSL_PKC=yes],
1178 [HAVE_OPENSSL_PKC=no])
1179 if test "x$HAVE_LIBCRYPTO" = xyes || test "x$HAVE_OPENSSL_PKC" = xyes; then
1180 if test "x$with_sha1" = x; then
1184 if test "x$with_sha1" = xlibcrypto; then
1185 AC_MSG_ERROR([OpenSSL libcrypto requested but not found])
1188 if test "x$with_sha1" = xlibcrypto; then
1189 if test "x$HAVE_LIBCRYPTO" = xyes; then
1192 SHA1_LIBS="$OPENSSL_LIBS"
1193 SHA1_CFLAGS="$OPENSSL_CFLAGS"
1196 AC_MSG_CHECKING([for SHA1 implementation])
1197 AC_MSG_RESULT([$with_sha1])
1199 AC_SUBST(SHA1_CFLAGS)
1201 # Enable a define for SHA1
1202 if test "x$with_sha1" != "x"; then
1203 DEFINES="$DEFINES -DHAVE_SHA1"
1206 # Allow user to configure out the shader-cache feature
1207 AC_ARG_ENABLE([shader-cache],
1208 AS_HELP_STRING([--disable-shader-cache], [Disable binary shader cache]),
1209 [enable_shader_cache="$enableval"],
1210 [if test "x$with_sha1" != "x"; then
1211 enable_shader_cache=yes
1213 enable_shader_cache=no
1215 if test "x$with_sha1" = "x"; then
1216 if test "x$enable_shader_cache" = "xyes"; then
1217 AC_MSG_ERROR([Cannot enable shader cache (no SHA-1 implementation found)])
1220 AM_CONDITIONAL([ENABLE_SHADER_CACHE], [test x$enable_shader_cache = xyes])
1229 PKG_CHECK_MODULES([LIBUDEV], [libudev >= $LIBUDEV_REQUIRED],
1230 have_libudev=yes, have_libudev=no)
1232 AC_ARG_ENABLE([sysfs],
1233 [AS_HELP_STRING([--enable-sysfs],
1234 [enable /sys PCI identification @<:@default=disabled@:>@])],
1235 [have_sysfs="$enableval"],
1239 if test "x$enable_dri" = xyes; then
1240 if test "$enable_static" = yes; then
1241 AC_MSG_ERROR([Cannot use static libraries for DRI drivers])
1244 # not a hard requirement as swrast does not depend on it
1245 if test "x$have_libdrm" = xyes; then
1246 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
1250 AC_ARG_ENABLE([driglx-direct],
1251 [AS_HELP_STRING([--disable-driglx-direct],
1252 [disable direct rendering in GLX and EGL for DRI \
1253 @<:@default=auto@:>@])],
1254 [driglx_direct="$enableval"],
1255 [driglx_direct="yes"])
1258 dnl libGL configuration per driver
1260 case "x$enable_glx$enable_xlib_glx" in
1263 dri_modules="x11 xext xcb"
1264 PKG_CHECK_MODULES([XLIBGL], [$dri_modules])
1265 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
1266 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
1267 GL_LIB_DEPS="$XLIBGL_LIBS"
1268 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1269 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm $PTHREAD_LIBS"
1273 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
1275 # find the DRI deps for libGL
1276 dri_modules="x11 xext xdamage xfixes x11-xcb xcb xcb-glx >= $XCBGLX_REQUIRED"
1278 if test x"$driglx_direct" = xyes; then
1279 if test x"$dri_platform" = xdrm ; then
1280 DEFINES="$DEFINES -DGLX_USE_DRM"
1281 if test "x$have_libdrm" != xyes; then
1282 AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
1285 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
1286 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED"
1287 if test x"$enable_dri3" = xyes; then
1288 PKG_CHECK_MODULES([DRI3PROTO], [dri3proto >= $DRI3PROTO_REQUIRED])
1289 PKG_CHECK_MODULES([PRESENTPROTO], [presentproto >= $PRESENTPROTO_REQUIRED])
1292 if test x"$enable_dri" = xyes; then
1293 dri_modules="$dri_modules xcb-dri2 >= $XCBDRI2_REQUIRED"
1296 if test x"$enable_dri3" = xyes; then
1297 PKG_CHECK_EXISTS([xcb >= $XCB_REQUIRED], [], AC_MSG_ERROR([DRI3 requires xcb >= $XCB_REQUIRED]))
1298 dri3_modules="xcb-dri3 xcb-present xcb-sync xshmfence >= $XSHMFENCE_REQUIRED"
1299 PKG_CHECK_MODULES([XCB_DRI3], [$dri3_modules])
1302 if test x"$dri_platform" = xapple ; then
1303 DEFINES="$DEFINES -DGLX_USE_APPLEGL"
1307 # add xf86vidmode if available
1308 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
1309 if test "$HAVE_XF86VIDMODE" = yes ; then
1310 dri_modules="$dri_modules xxf86vm"
1313 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
1314 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
1315 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
1316 GL_LIB_DEPS="$DRIGL_LIBS"
1318 # need DRM libs, $PTHREAD_LIBS, etc.
1319 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1320 GL_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
1325 if test "$have_libudev" = yes; then
1326 DEFINES="$DEFINES -DHAVE_LIBUDEV"
1330 if test "$have_sysfs" = yes; then
1331 DEFINES="$DEFINES -DHAVE_SYSFS"
1335 # This is outside the case (above) so that it is invoked even for non-GLX
1337 AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
1339 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1340 GLESv1_CM_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
1341 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1342 GLESv2_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
1344 AC_SUBST([X11_INCLUDES])
1345 AC_SUBST([GL_LIB_DEPS])
1346 AC_SUBST([GL_PC_REQ_PRIV])
1347 AC_SUBST([GL_PC_LIB_PRIV])
1348 AC_SUBST([GL_PC_CFLAGS])
1349 AC_SUBST([DRI_PC_REQ_PRIV])
1350 AC_SUBST([GLESv1_CM_LIB_DEPS])
1351 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
1352 AC_SUBST([GLESv2_LIB_DEPS])
1353 AC_SUBST([GLESv2_PC_LIB_PRIV])
1355 AC_SUBST([HAVE_XF86VIDMODE])
1360 case "x$enable_glx$enable_xlib_glx" in
1362 DEFINES="$DEFINES -DUSE_XSHM"
1365 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1366 if test "x$driglx_direct" = xyes; then
1367 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1376 AC_ARG_ENABLE([glx-tls],
1377 [AS_HELP_STRING([--enable-glx-tls],
1378 [enable TLS support in GLX @<:@default=disabled@:>@])],
1379 [GLX_USE_TLS="$enableval"],
1381 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
1383 AS_IF([test "x$GLX_USE_TLS" = xyes -a "x$ax_pthread_ok" = xyes],
1384 [DEFINES="${DEFINES} -DGLX_USE_TLS"])
1386 dnl Read-only text section on x86 hardened platforms
1387 AC_ARG_ENABLE([glx-read-only-text],
1388 [AS_HELP_STRING([--enable-glx-read-only-text],
1389 [Disable writable .text section on x86 (decreases performance) @<:@default=disabled@:>@])],
1390 [enable_glx_read_only_text="$enableval"],
1391 [enable_glx_read_only_text=no])
1392 if test "x$enable_glx_read_only_text" = xyes; then
1393 DEFINES="$DEFINES -DGLX_X86_READONLY_TEXT"
1399 dnl Directory for DRI drivers
1400 AC_ARG_WITH([dri-driverdir],
1401 [AS_HELP_STRING([--with-dri-driverdir=DIR],
1402 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
1403 [DRI_DRIVER_INSTALL_DIR="$withval"],
1404 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
1405 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
1406 dnl Extra search path for DRI drivers
1407 AC_ARG_WITH([dri-searchpath],
1408 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
1409 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
1410 [DRI_DRIVER_SEARCH_DIR="$withval"],
1411 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
1412 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
1413 dnl Which drivers to build - default is chosen by platform
1414 AC_ARG_WITH([dri-drivers],
1415 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
1416 [comma delimited classic DRI drivers list, e.g.
1417 "swrast,i965,radeon" @<:@default=auto@:>@])],
1418 [with_dri_drivers="$withval"],
1419 [with_dri_drivers=auto])
1421 if test "x$with_dri_drivers" = xauto; then
1422 if test "x$enable_opengl" = xyes -a "x$enable_dri" = xyes; then
1423 with_dri_drivers="yes"
1425 with_dri_drivers="no"
1428 if test "x$with_dri_drivers" = xno; then
1432 dnl If $with_dri_drivers is yes, drivers will be added through
1433 dnl platform checks. Set DEFINES and LIB_DEPS
1434 if test "x$enable_dri" = xyes; then
1435 # Platform specific settings and drivers to build
1438 DEFINES="$DEFINES -DHAVE_ALIAS"
1439 if test "x$enable_dri3" = xyes; then
1440 DEFINES="$DEFINES -DHAVE_DRI3"
1443 if test "x$have_pci_id" != xyes; then
1444 AC_MSG_ERROR([libudev-dev or sysfs required for building DRI])
1449 # Build only the drivers for cards that exist on PowerPC/sparc
1450 if test "x$with_dri_drivers" = "xyes"; then
1451 with_dri_drivers="r200 radeon swrast"
1456 *freebsd* | dragonfly* | *netbsd* | openbsd*)
1457 DEFINES="$DEFINES -DHAVE_ALIAS"
1460 DEFINES="$DEFINES -DHAVE_ALIAS"
1463 if test "x$with_dri_drivers" = "xyes"; then
1464 with_dri_drivers="swrast"
1468 DEFINES="$DEFINES -DGLX_ALIAS_UNSUPPORTED -DBUILDING_MESA"
1469 if test "x$with_dri_drivers" = "xyes"; then
1470 with_dri_drivers="swrast"
1476 if test "x$with_dri_drivers" = "xyes"; then
1477 with_dri_drivers="i915 i965 nouveau r200 radeon swrast"
1481 PKG_CHECK_MODULES([EXPAT], [expat], [],
1482 # expat version 2.0 and earlier do not provide expat.pc
1483 [AC_CHECK_HEADER([expat.h],[],
1484 [AC_MSG_ERROR([Expat headers required for DRI not found])])
1485 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1486 [AC_MSG_ERROR([Expat library required for DRI not found])])
1487 EXPAT_LIBS="-lexpat"])
1489 # put all the necessary libs together
1490 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1493 AC_SUBST([DRI_LIB_DEPS])
1496 dnl Duplicates in DRI_DIRS are removed by sorting it at the end of this block
1497 if test -n "$with_dri_drivers"; then
1498 if test "x$enable_opengl" != xyes; then
1499 AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1502 dri_drivers=`IFS=', '; echo $with_dri_drivers`
1503 for driver in $dri_drivers; do
1504 DRI_DIRS="$DRI_DIRS $driver"
1508 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1512 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1515 HAVE_NOUVEAU_DRI=yes;
1516 PKG_CHECK_MODULES([NVVIEUX], [libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED])
1519 HAVE_RADEON_DRI=yes;
1520 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1524 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1527 HAVE_SWRAST_DRI=yes;
1530 AC_MSG_ERROR([classic DRI driver '$driver' does not exist])
1534 DRI_DIRS=`echo $DRI_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1537 AM_CONDITIONAL(NEED_MEGADRIVER, test -n "$DRI_DIRS")
1538 AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_xlib_glx" = xyes -o \
1539 "x$enable_osmesa" = xyes -o \
1543 dnl OSMesa configuration
1546 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1547 AC_ARG_WITH([osmesa-bits],
1548 [AS_HELP_STRING([--with-osmesa-bits=BITS],
1549 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1550 [osmesa_bits="$withval"],
1552 if test "x$osmesa_bits" != x8; then
1553 if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then
1554 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1558 case "x$osmesa_bits" in
1560 OSMESA_LIB="${OSMESA_LIB}"
1563 OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
1564 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1567 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1571 if test "x$enable_osmesa" = xyes -o "x$enable_gallium_osmesa" = xyes; then
1572 # only link libraries with osmesa if shared
1573 if test "$enable_static" = no; then
1574 OSMESA_LIB_DEPS="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1578 OSMESA_PC_LIB_PRIV="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1581 AC_SUBST([OSMESA_LIB_DEPS])
1582 AC_SUBST([OSMESA_PC_REQ])
1583 AC_SUBST([OSMESA_PC_LIB_PRIV])
1586 dnl gbm configuration
1588 if test "x$enable_gbm" = xauto; then
1589 case "$with_egl_platforms" in
1596 if test "x$enable_gbm" = xyes; then
1597 if test "x$need_pci_id$have_pci_id" = xyesno; then
1598 AC_MSG_ERROR([gbm requires udev >= $LIBUDEV_REQUIRED or sysfs])
1601 if test "x$enable_dri" = xyes; then
1602 if test "x$enable_shared_glapi" = xno; then
1603 AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1606 # Strictly speaking libgbm does not require --enable-dri, although
1607 # both of its backends do. Thus one can build libgbm without any
1608 # backends if --disable-dri is set.
1609 # To avoid unnecessary complexity of checking if at least one backend
1610 # is available when building, just mandate --enable-dri.
1611 AC_MSG_ERROR([gbm requires --enable-dri])
1614 AM_CONDITIONAL(HAVE_GBM, test "x$enable_gbm" = xyes)
1615 if test "x$need_pci_id$have_libudev" = xyesyes; then
1616 GBM_PC_REQ_PRIV="libudev >= $LIBUDEV_REQUIRED"
1620 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1621 AC_SUBST([GBM_PC_REQ_PRIV])
1622 AC_SUBST([GBM_PC_LIB_PRIV])
1625 dnl EGL configuration
1629 if test "x$enable_egl" = xyes; then
1630 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS $PTHREAD_LIBS"
1632 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1634 if test "$enable_static" != yes; then
1635 if test "x$enable_dri" = xyes; then
1636 HAVE_EGL_DRIVER_DRI2=1
1637 if test "x$enable_shared_glapi" = xno; then
1638 AC_MSG_ERROR([egl_dri2 requires --enable-shared-glapi])
1640 if test "x$enable_dri3" = xyes; then
1641 HAVE_EGL_DRIVER_DRI3=1
1642 if test "x$enable_shared_glapi" = xno; then
1643 AC_MSG_ERROR([egl_dri3 requires --enable-shared-glapi])
1647 # Avoid building an "empty" libEGL. Drop/update this
1648 # when other backends (haiku?) come along.
1649 AC_MSG_ERROR([egl requires --enable-dri])
1654 AM_CONDITIONAL(HAVE_EGL, test "x$enable_egl" = xyes)
1655 AC_SUBST([EGL_LIB_DEPS])
1660 dnl XA configuration
1662 if test "x$enable_xa" = xyes; then
1663 if test "x$with_gallium_drivers" = xswrast; then
1665 Building xa requires at least one non swrast gallium driver.
1666 If you are looking to use libxatracker.so with the VMware driver,
1667 make sure to include svga in the gallium drivers list, apart from
1669 Example: ./configure --enable-xa --with-gallium-drivers=svga...])
1671 gallium_st="$gallium_st xa"
1673 AM_CONDITIONAL(HAVE_ST_XA, test "x$enable_xa" = xyes)
1676 dnl Gallium G3DVL configuration
1678 if test -n "$with_gallium_drivers" -a "x$with_gallium_drivers" != xswrast; then
1679 if test "x$enable_xvmc" = xauto; then
1680 PKG_CHECK_EXISTS([xvmc >= $XVMC_REQUIRED], [enable_xvmc=yes], [enable_xvmc=no])
1683 if test "x$enable_vdpau" = xauto; then
1684 PKG_CHECK_EXISTS([vdpau >= $VDPAU_REQUIRED], [enable_vdpau=yes], [enable_vdpau=no])
1687 if test "x$enable_omx" = xauto; then
1688 PKG_CHECK_EXISTS([libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED], [enable_omx=yes], [enable_omx=no])
1691 if test "x$enable_va" = xauto; then
1692 PKG_CHECK_EXISTS([libva >= $LIBVA_REQUIRED], [enable_va=yes], [enable_va=no])
1696 if test "x$enable_dri" = xyes -o \
1697 "x$enable_xvmc" = xyes -o \
1698 "x$enable_vdpau" = xyes -o \
1699 "x$enable_omx" = xyes -o \
1700 "x$enable_va" = xyes; then
1703 AM_CONDITIONAL(NEED_GALLIUM_VL, test "x$need_gallium_vl" = xyes)
1705 if test "x$enable_xvmc" = xyes -o \
1706 "x$enable_vdpau" = xyes -o \
1707 "x$enable_omx" = xyes -o \
1708 "x$enable_va" = xyes; then
1709 PKG_CHECK_MODULES([VL], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
1710 need_gallium_vl_winsys=yes
1712 AM_CONDITIONAL(NEED_GALLIUM_VL_WINSYS, test "x$need_gallium_vl_winsys" = xyes)
1714 if test "x$enable_xvmc" = xyes; then
1715 PKG_CHECK_MODULES([XVMC], [xvmc >= $XVMC_REQUIRED])
1716 gallium_st="$gallium_st xvmc"
1718 AM_CONDITIONAL(HAVE_ST_XVMC, test "x$enable_xvmc" = xyes)
1720 if test "x$enable_vdpau" = xyes; then
1721 PKG_CHECK_MODULES([VDPAU], [vdpau >= $VDPAU_REQUIRED])
1722 gallium_st="$gallium_st vdpau"
1724 AM_CONDITIONAL(HAVE_ST_VDPAU, test "x$enable_vdpau" = xyes)
1726 if test "x$enable_omx" = xyes; then
1727 PKG_CHECK_MODULES([OMX], [libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED])
1728 gallium_st="$gallium_st omx"
1730 AM_CONDITIONAL(HAVE_ST_OMX, test "x$enable_omx" = xyes)
1732 if test "x$enable_va" = xyes; then
1733 PKG_CHECK_MODULES([VA], [libva >= $LIBVA_REQUIRED])
1734 gallium_st="$gallium_st va"
1736 AM_CONDITIONAL(HAVE_ST_VA, test "x$enable_va" = xyes)
1739 dnl Nine Direct3D9 configuration
1741 if test "x$enable_nine" = xyes; then
1742 if ! echo "$with_gallium_drivers" | grep -q 'swrast'; then
1743 AC_MSG_ERROR([nine requires the gallium swrast driver])
1745 if test "x$with_gallium_drivers" = xswrast; then
1746 AC_MSG_ERROR([nine requires at least one non-swrast gallium driver])
1748 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6; then
1749 AC_MSG_ERROR([gcc >= 4.6 is required to build nine])
1752 if test "x$enable_dri3" = xno; then
1753 AC_MSG_WARN([using nine together with wine requires DRI3 enabled system])
1756 gallium_st="$gallium_st nine"
1758 AM_CONDITIONAL(HAVE_ST_NINE, test "x$enable_nine" = xyes)
1761 dnl OpenCL configuration
1764 AC_ARG_WITH([clang-libdir],
1765 [AS_HELP_STRING([--with-clang-libdir],
1766 [Path to Clang libraries @<:@default=llvm-config --libdir@:>@])],
1767 [CLANG_LIBDIR="$withval"],
1770 PKG_CHECK_EXISTS([libclc], [have_libclc=yes], [have_libclc=no])
1771 PKG_CHECK_MODULES([LIBELF], [libelf], [have_libelf=yes], [have_libelf=no])
1773 if test "x$have_libelf" = xno; then
1776 AC_CHECK_LIB([elf], [elf_memory], [have_libelf=yes;LIBELF_LIBS=-lelf], [have_libelf=no])
1777 AC_SUBST([LIBELF_LIBS])
1778 AC_SUBST([LIBELF_CFLAGS])
1781 if test "x$enable_opencl" = xyes; then
1782 if test -z "$with_gallium_drivers"; then
1783 AC_MSG_ERROR([cannot enable OpenCL without Gallium])
1786 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 7; then
1787 AC_MSG_ERROR([gcc >= 4.7 is required to build clover])
1790 if test "x$have_libclc" = xno; then
1791 AC_MSG_ERROR([pkg-config cannot find libclc.pc which is required to build clover.
1792 Make sure the directory containing libclc.pc is specified in your
1793 PKG_CONFIG_PATH environment variable.
1794 By default libclc.pc is installed to /usr/local/share/pkgconfig/])
1796 LIBCLC_INCLUDEDIR=`$PKG_CONFIG --variable=includedir libclc`
1797 LIBCLC_LIBEXECDIR=`$PKG_CONFIG --variable=libexecdir libclc`
1798 AC_SUBST([LIBCLC_INCLUDEDIR])
1799 AC_SUBST([LIBCLC_LIBEXECDIR])
1802 gallium_st="$gallium_st clover"
1804 if test "x$enable_opencl_icd" = xyes; then
1805 OPENCL_LIBNAME="MesaOpenCL"
1807 OPENCL_LIBNAME="OpenCL"
1810 if test "x$have_libelf" != xyes; then
1811 AC_MSG_ERROR([Clover requires libelf])
1814 AM_CONDITIONAL(HAVE_CLOVER, test "x$enable_opencl" = xyes)
1815 AM_CONDITIONAL(HAVE_CLOVER_ICD, test "x$enable_opencl_icd" = xyes)
1816 AC_SUBST([OPENCL_LIBNAME])
1819 dnl Gallium configuration
1821 AM_CONDITIONAL(HAVE_GALLIUM, test -n "$with_gallium_drivers")
1823 AC_SUBST([LLVM_BINDIR])
1824 AC_SUBST([LLVM_CFLAGS])
1825 AC_SUBST([LLVM_CPPFLAGS])
1826 AC_SUBST([LLVM_CXXFLAGS])
1827 AC_SUBST([LLVM_LIBDIR])
1828 AC_SUBST([LLVM_LIBS])
1829 AC_SUBST([LLVM_LDFLAGS])
1830 AC_SUBST([LLVM_INCLUDEDIR])
1831 AC_SUBST([LLVM_VERSION])
1832 AC_SUBST([CLANG_RESOURCE_DIR])
1834 case "x$enable_opengl$enable_gles1$enable_gles2" in
1836 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1840 AC_SUBST([VG_LIB_DEPS])
1841 AC_SUBST([EGL_CLIENT_APIS])
1844 dnl EGL Platforms configuration
1846 AC_ARG_WITH([egl-platforms],
1847 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1848 [comma delimited native platforms libEGL supports, e.g.
1849 "x11,drm" @<:@default=auto@:>@])],
1850 [with_egl_platforms="$withval"],
1851 [if test "x$enable_egl" = xyes; then
1852 with_egl_platforms="x11"
1854 with_egl_platforms=""
1857 if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
1858 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1861 PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland_scanner],
1862 WAYLAND_SCANNER=`$PKG_CONFIG --variable=wayland_scanner wayland_scanner`,
1864 if test "x$WAYLAND_SCANNER" = x; then
1865 AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner])
1868 # Do per-EGL platform setups and checks
1869 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1870 for plat in $egl_platforms; do
1873 test "x$have_libdrm" != xyes &&
1874 AC_MSG_ERROR([EGL platform wayland requires libdrm >= $LIBDRM_REQUIRED])
1876 PKG_CHECK_MODULES([WAYLAND], [wayland-client >= $WAYLAND_REQUIRED wayland-server >= $WAYLAND_REQUIRED])
1878 if test "x$WAYLAND_SCANNER" = x; then
1879 AC_MSG_ERROR([wayland-scanner is needed to compile the wayland egl platform])
1884 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED xcb-xfixes])
1888 test "x$enable_gbm" = "xno" &&
1889 AC_MSG_ERROR([EGL platform drm needs gbm])
1890 test "x$have_libdrm" != xyes &&
1891 AC_MSG_ERROR([EGL platform drm requires libdrm >= $LIBDRM_REQUIRED])
1895 test "x$have_libdrm" != xyes &&
1896 AC_MSG_ERROR([EGL platform surfaceless requires libdrm >= $LIBDRM_REQUIRED])
1900 AC_MSG_ERROR([EGL platform '$plat' does not exist])
1904 case "$plat$need_pci_id$have_pci_id" in
1905 waylandyesno|drmyesno)
1906 AC_MSG_ERROR([cannot build $plat platform without udev >= $LIBUDEV_REQUIRED or sysfs]) ;;
1910 # libEGL wants to default to the first platform specified in
1911 # ./configure. parse that here.
1912 if test "x$egl_platforms" != "x"; then
1913 FIRST_PLATFORM_CAPS=`echo $egl_platforms | sed 's| .*||' | tr '[[a-z]]' '[[A-Z]]'`
1914 EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
1916 EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
1919 AM_CONDITIONAL(HAVE_EGL_PLATFORM_X11, echo "$egl_platforms" | grep -q 'x11')
1920 AM_CONDITIONAL(HAVE_EGL_PLATFORM_WAYLAND, echo "$egl_platforms" | grep -q 'wayland')
1921 AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep -q 'drm')
1922 AM_CONDITIONAL(HAVE_EGL_PLATFORM_SURFACELESS, echo "$egl_platforms" | grep -q 'surfaceless')
1923 AM_CONDITIONAL(HAVE_EGL_PLATFORM_NULL, echo "$egl_platforms" | grep -q 'null')
1925 AM_CONDITIONAL(HAVE_EGL_DRIVER_DRI2, test "x$HAVE_EGL_DRIVER_DRI2" != "x")
1927 AC_SUBST([EGL_NATIVE_PLATFORM])
1928 AC_SUBST([EGL_CFLAGS])
1930 # If we don't have the X11 platform, set this define so we don't try to include
1932 if ! echo "$egl_platforms" | grep -q 'x11'; then
1933 DEFINES="$DEFINES -DMESA_EGL_NO_X11_HEADERS"
1934 GL_PC_CFLAGS="$GL_PC_CFLAGS -DMESA_EGL_NO_X11_HEADERS"
1940 AC_ARG_ENABLE([gallium-llvm],
1941 [AS_HELP_STRING([--enable-gallium-llvm],
1942 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1943 [enable_gallium_llvm="$enableval"],
1944 [enable_gallium_llvm=auto])
1946 AC_ARG_ENABLE([llvm-shared-libs],
1947 [AS_HELP_STRING([--enable-llvm-shared-libs],
1948 [link with LLVM shared libraries @<:@default=enabled@:>@])],
1949 [enable_llvm_shared_libs="$enableval"],
1950 [enable_llvm_shared_libs=yes])
1952 AC_ARG_WITH([llvm-prefix],
1953 [AS_HELP_STRING([--with-llvm-prefix],
1954 [Prefix for LLVM installations in non-standard locations])],
1955 [llvm_prefix="$withval"],
1959 # Call this inside ` ` to get the return value.
1960 # $1 is the llvm-config command with arguments.
1961 strip_unwanted_llvm_flags() {
1962 # Use \> (marks the end of the word)
1964 -e 's/-DNDEBUG\>//g' \
1965 -e 's/-D_GNU_SOURCE\>//g' \
1966 -e 's/-pedantic\>//g' \
1967 -e 's/-Wcovered-switch-default\>//g' \
1971 -e 's/-Wcast-qual\>//g' \
1972 -e 's/-Woverloaded-virtual\>//g' \
1973 -e 's/-fcolor-diagnostics\>//g' \
1974 -e 's/-fdata-sections\>//g' \
1975 -e 's/-ffunction-sections\>//g' \
1976 -e 's/-fno-exceptions\>//g' \
1977 -e 's/-fomit-frame-pointer\>//g' \
1978 -e 's/-fvisibility-inlines-hidden\>//g' \
1980 -e 's/-fstack-protector-strong\>//g'
1983 llvm_check_version_for() {
1984 if test "${LLVM_VERSION_INT}${LLVM_VERSION_PATCH}" -lt "${1}0${2}${3}"; then
1985 AC_MSG_ERROR([LLVM $1.$2.$3 or newer is required for $4])
1991 if test -z "$with_gallium_drivers"; then
1992 enable_gallium_llvm=no
1994 if test "x$enable_gallium_llvm" = xauto; then
1996 i*86|x86_64|amd64) enable_gallium_llvm=yes;;
1999 if test "x$enable_gallium_llvm" = xyes; then
2000 if test -n "$llvm_prefix"; then
2001 AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no], ["$llvm_prefix/bin"])
2003 AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no])
2006 if test "x$LLVM_CONFIG" != xno; then
2007 LLVM_VERSION=`$LLVM_CONFIG --version | egrep -o '^[[0-9.]]+'`
2008 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
2009 LLVM_BINDIR=`$LLVM_CONFIG --bindir`
2010 LLVM_CPPFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cppflags"`
2011 LLVM_CFLAGS=$LLVM_CPPFLAGS # CPPFLAGS seem to be sufficient
2012 LLVM_CXXFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cxxflags"`
2013 LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
2014 LLVM_LIBDIR=`$LLVM_CONFIG --libdir`
2016 AC_COMPUTE_INT([LLVM_VERSION_MAJOR], [LLVM_VERSION_MAJOR],
2017 [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
2018 AC_COMPUTE_INT([LLVM_VERSION_MINOR], [LLVM_VERSION_MINOR],
2019 [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
2021 LLVM_VERSION_PATCH=`echo $LLVM_VERSION | cut -d. -f3 | egrep -o '^[[0-9]]+'`
2022 if test -z "$LLVM_VERSION_PATCH"; then
2023 LLVM_VERSION_PATCH=0
2026 if test -n "${LLVM_VERSION_MAJOR}"; then
2027 LLVM_VERSION_INT="${LLVM_VERSION_MAJOR}0${LLVM_VERSION_MINOR}"
2029 LLVM_VERSION_INT=`echo $LLVM_VERSION | sed -e 's/\([[0-9]]\)\.\([[0-9]]\)/\10\2/g'`
2032 LLVM_REQUIRED_VERSION_MAJOR="3"
2033 LLVM_REQUIRED_VERSION_MINOR="3"
2034 if test "$LLVM_VERSION_INT" -lt "${LLVM_REQUIRED_VERSION_MAJOR}0${LLVM_REQUIRED_VERSION_MINOR}"; then
2035 AC_MSG_ERROR([LLVM $LLVM_REQUIRED_VERSION_MAJOR.$LLVM_REQUIRED_VERSION_MINOR or newer is required])
2038 LLVM_COMPONENTS="engine bitwriter mcjit mcdisassembler"
2040 if test "x$enable_opencl" = xyes; then
2041 llvm_check_version_for "3" "5" "0" "opencl"
2043 LLVM_COMPONENTS="${LLVM_COMPONENTS} all-targets ipo linker instrumentation"
2044 LLVM_COMPONENTS="${LLVM_COMPONENTS} irreader option objcarcopts profiledata"
2046 DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT -DMESA_LLVM_VERSION_PATCH=$LLVM_VERSION_PATCH"
2049 dnl Check for Clang internal headers
2050 if test "x$enable_opencl" = xyes; then
2051 if test -z "$CLANG_LIBDIR"; then
2052 CLANG_LIBDIR=${LLVM_LIBDIR}
2054 CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION}
2055 AS_IF([test ! -f "$CLANG_RESOURCE_DIR/include/stddef.h"],
2056 [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.])])
2066 if test "x$enable_opencl" = xyes; then
2067 AC_MSG_ERROR([cannot enable OpenCL without LLVM])
2071 dnl Directory for XVMC libs
2072 AC_ARG_WITH([xvmc-libdir],
2073 [AS_HELP_STRING([--with-xvmc-libdir=DIR],
2074 [directory for the XVMC libraries @<:@default=${libdir}@:>@])],
2075 [XVMC_LIB_INSTALL_DIR="$withval"],
2076 [XVMC_LIB_INSTALL_DIR='${libdir}'])
2077 AC_SUBST([XVMC_LIB_INSTALL_DIR])
2082 AM_CONDITIONAL(HAVE_GALLIUM_TESTS, test "x$enable_gallium_tests" = xyes)
2084 dnl Directory for VDPAU libs
2085 AC_ARG_WITH([vdpau-libdir],
2086 [AS_HELP_STRING([--with-vdpau-libdir=DIR],
2087 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
2088 [VDPAU_LIB_INSTALL_DIR="$withval"],
2089 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
2090 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
2092 dnl Directory for OMX libs
2094 AC_ARG_WITH([omx-libdir],
2095 [AS_HELP_STRING([--with-omx-libdir=DIR],
2096 [directory for the OMX libraries])],
2097 [OMX_LIB_INSTALL_DIR="$withval"],
2098 [OMX_LIB_INSTALL_DIR=`$PKG_CONFIG --define-variable=libdir=\$libdir --variable=pluginsdir libomxil-bellagio`])
2099 AC_SUBST([OMX_LIB_INSTALL_DIR])
2101 dnl Directory for VA libs
2103 AC_ARG_WITH([va-libdir],
2104 [AS_HELP_STRING([--with-va-libdir=DIR],
2105 [directory for the VA libraries @<:@${libdir}/dri@:>@])],
2106 [VA_LIB_INSTALL_DIR="$withval"],
2107 [VA_LIB_INSTALL_DIR="${libdir}/dri"])
2108 AC_SUBST([VA_LIB_INSTALL_DIR])
2110 AC_ARG_WITH([d3d-libdir],
2111 [AS_HELP_STRING([--with-d3d-libdir=DIR],
2112 [directory for the D3D modules @<:@${libdir}/d3d@:>@])],
2113 [D3D_DRIVER_INSTALL_DIR="$withval"],
2114 [D3D_DRIVER_INSTALL_DIR="${libdir}/d3d"])
2115 AC_SUBST([D3D_DRIVER_INSTALL_DIR])
2118 dnl Gallium helper functions
2120 gallium_require_drm() {
2121 if test "x$have_libdrm" != xyes; then
2122 AC_MSG_ERROR([$1 requires libdrm >= $LIBDRM_REQUIRED])
2126 gallium_require_llvm() {
2127 if test "x$MESA_LLVM" = x0; then
2128 case "$host" in *gnux32) return;; esac
2130 i*86|x86_64|amd64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
2135 gallium_require_drm_loader() {
2136 if test "x$need_pci_id$have_pci_id" = xyesno; then
2137 AC_MSG_ERROR([Gallium drm loader requires libudev >= $LIBUDEV_REQUIRED or sysfs])
2142 case "$with_egl_platforms" in
2146 AC_MSG_ERROR([--with-egl-platforms=drm is required to build the $1 driver.])
2149 if test "x$enable_gbm" != xyes; then
2150 AC_MSG_ERROR([--enable-gbm is required to build the $1 driver.])
2154 radeon_llvm_check() {
2155 if test ${LLVM_VERSION_INT} -lt 307; then
2156 amdgpu_llvm_target_name='r600'
2158 amdgpu_llvm_target_name='amdgpu'
2160 if test "x$enable_gallium_llvm" != "xyes"; then
2161 AC_MSG_ERROR([--enable-gallium-llvm is required when building $1])
2163 llvm_check_version_for "3" "5" "0" $1
2164 if test true && $LLVM_CONFIG --targets-built | grep -iqvw $amdgpu_llvm_target_name ; then
2165 AC_MSG_ERROR([LLVM $amdgpu_llvm_target_name not enabled in your LLVM build.])
2167 LLVM_COMPONENTS="${LLVM_COMPONENTS} $amdgpu_llvm_target_name bitreader ipo"
2168 NEED_RADEON_LLVM=yes
2169 if test "x$have_libelf" != xyes; then
2170 AC_MSG_ERROR([$1 requires libelf when using llvm])
2174 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
2175 if test -n "$with_gallium_drivers"; then
2176 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
2177 for driver in $gallium_drivers; do
2180 HAVE_GALLIUM_SVGA=yes
2181 gallium_require_drm "svga"
2182 gallium_require_drm_loader
2185 HAVE_GALLIUM_I915=yes
2186 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
2187 gallium_require_drm "Gallium i915"
2188 gallium_require_drm_loader
2191 HAVE_GALLIUM_ILO=yes
2192 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
2193 gallium_require_drm "Gallium i965/ilo"
2194 gallium_require_drm_loader
2197 HAVE_GALLIUM_R300=yes
2198 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2199 gallium_require_drm "Gallium R300"
2200 gallium_require_drm_loader
2201 gallium_require_llvm "Gallium R300"
2204 HAVE_GALLIUM_R600=yes
2205 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2206 gallium_require_drm "Gallium R600"
2207 gallium_require_drm_loader
2208 if test "x$enable_r600_llvm" = xyes -o "x$enable_opencl" = xyes; then
2209 radeon_llvm_check "r600g"
2210 LLVM_COMPONENTS="${LLVM_COMPONENTS} bitreader asmparser"
2212 if test "x$enable_r600_llvm" = xyes; then
2213 USE_R600_LLVM_COMPILER=yes;
2215 if test "x$enable_opencl" = xyes; then
2216 LLVM_COMPONENTS="${LLVM_COMPONENTS} bitreader asmparser"
2220 HAVE_GALLIUM_RADEONSI=yes
2221 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2222 PKG_CHECK_MODULES([AMDGPU], [libdrm_amdgpu >= $LIBDRM_AMDGPU_REQUIRED])
2223 gallium_require_drm "radeonsi"
2224 gallium_require_drm_loader
2225 radeon_llvm_check "radeonsi"
2226 require_egl_drm "radeonsi"
2229 HAVE_GALLIUM_NOUVEAU=yes
2230 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
2231 gallium_require_drm "nouveau"
2232 gallium_require_drm_loader
2235 HAVE_GALLIUM_FREEDRENO=yes
2236 PKG_CHECK_MODULES([FREEDRENO], [libdrm_freedreno >= $LIBDRM_FREEDRENO_REQUIRED])
2237 gallium_require_drm "freedreno"
2238 gallium_require_drm_loader
2241 HAVE_GALLIUM_SOFTPIPE=yes
2242 if test "x$MESA_LLVM" = x1; then
2243 HAVE_GALLIUM_LLVMPIPE=yes
2247 HAVE_GALLIUM_VC4=yes
2248 gallium_require_drm "vc4"
2249 gallium_require_drm_loader
2251 PKG_CHECK_MODULES([SIMPENROSE], [simpenrose],
2252 [USE_VC4_SIMULATOR=yes;
2253 DEFINES="$DEFINES -DUSE_VC4_SIMULATOR"],
2254 [USE_VC4_SIMULATOR=no])
2257 HAVE_GALLIUM_VIRGL=yes
2258 gallium_require_drm "virgl"
2259 gallium_require_drm_loader
2260 require_egl_drm "virgl"
2263 AC_MSG_ERROR([Unknown Gallium driver: $driver])
2269 dnl Set LLVM_LIBS - This is done after the driver configuration so
2270 dnl that drivers can add additional components to LLVM_COMPONENTS.
2271 dnl Previously, gallium drivers were updating LLVM_LIBS directly
2272 dnl by calling llvm-config --libs ${DRIVER_LLVM_COMPONENTS}, but
2273 dnl this was causing the same libraries to be appear multiple times
2276 if test "x$MESA_LLVM" != x0; then
2278 LLVM_LIBS="`$LLVM_CONFIG --libs ${LLVM_COMPONENTS}`"
2280 dnl llvm-config may not give the right answer when llvm is a built as a
2281 dnl single shared library, so we must work the library name out for
2283 dnl (See https://llvm.org/bugs/show_bug.cgi?id=6823)
2284 if test "x$enable_llvm_shared_libs" = xyes; then
2285 dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
2286 LLVM_SO_NAME=LLVM-`$LLVM_CONFIG --version`
2287 AS_IF([test -f "$LLVM_LIBDIR/lib$LLVM_SO_NAME.$IMP_LIB_EXT"], [llvm_have_one_so=yes])
2289 if test "x$llvm_have_one_so" = xyes; then
2290 dnl LLVM was built using auto*, so there is only one shared object.
2291 LLVM_LIBS="-l$LLVM_SO_NAME"
2293 dnl If LLVM was built with CMake, there will be one shared object per
2295 AS_IF([test ! -f "$LLVM_LIBDIR/libLLVMTarget.$IMP_LIB_EXT"],
2296 [AC_MSG_ERROR([Could not find llvm shared libraries:
2297 Please make sure you have built llvm with the --enable-shared option
2298 and that your llvm libraries are installed in $LLVM_LIBDIR
2299 If you have installed your llvm libraries to a different directory you
2300 can use the --with-llvm-prefix= configure flag to specify this directory.
2301 NOTE: Mesa is attempting to use llvm shared libraries by default.
2302 If you do not want to build with llvm shared libraries and instead want to
2303 use llvm static libraries then add --disable-llvm-shared-libs to your configure
2304 invocation and rebuild.])])
2306 dnl We don't need to update LLVM_LIBS in this case because the LLVM
2307 dnl install uses a shared object for each component and we have
2308 dnl already added all of these objects to LLVM_LIBS.
2311 AC_MSG_WARN([Building mesa with statically linked LLVM may cause compilation issues])
2312 dnl We need to link to llvm system libs when using static libs
2313 dnl However, only llvm 3.5+ provides --system-libs
2314 if test $LLVM_VERSION_MAJOR -eq 3 -a $LLVM_VERSION_MINOR -ge 5; then
2315 LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --system-libs`"
2320 AM_CONDITIONAL(HAVE_GALLIUM_SVGA, test "x$HAVE_GALLIUM_SVGA" = xyes)
2321 AM_CONDITIONAL(HAVE_GALLIUM_I915, test "x$HAVE_GALLIUM_I915" = xyes)
2322 AM_CONDITIONAL(HAVE_GALLIUM_ILO, test "x$HAVE_GALLIUM_ILO" = xyes)
2323 AM_CONDITIONAL(HAVE_GALLIUM_R300, test "x$HAVE_GALLIUM_R300" = xyes)
2324 AM_CONDITIONAL(HAVE_GALLIUM_R600, test "x$HAVE_GALLIUM_R600" = xyes)
2325 AM_CONDITIONAL(HAVE_GALLIUM_RADEONSI, test "x$HAVE_GALLIUM_RADEONSI" = xyes)
2326 AM_CONDITIONAL(HAVE_GALLIUM_RADEON_COMMON, test "x$HAVE_GALLIUM_R600" = xyes -o \
2327 "x$HAVE_GALLIUM_RADEONSI" = xyes)
2328 AM_CONDITIONAL(HAVE_GALLIUM_NOUVEAU, test "x$HAVE_GALLIUM_NOUVEAU" = xyes)
2329 AM_CONDITIONAL(HAVE_GALLIUM_FREEDRENO, test "x$HAVE_GALLIUM_FREEDRENO" = xyes)
2330 AM_CONDITIONAL(HAVE_GALLIUM_SOFTPIPE, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes)
2331 AM_CONDITIONAL(HAVE_GALLIUM_LLVMPIPE, test "x$HAVE_GALLIUM_LLVMPIPE" = xyes)
2332 AM_CONDITIONAL(HAVE_GALLIUM_VC4, test "x$HAVE_GALLIUM_VC4" = xyes)
2333 AM_CONDITIONAL(HAVE_GALLIUM_VIRGL, test "x$HAVE_GALLIUM_VIRGL" = xyes)
2335 AM_CONDITIONAL(HAVE_GALLIUM_STATIC_TARGETS, test "x$enable_shared_pipe_drivers" = xno)
2337 if test "x$enable_dri" = xyes; then
2338 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRI"
2341 if test "x$have_drisw_kms" = xyes; then
2342 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_KMS"
2344 AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
2346 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
2347 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
2348 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
2349 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
2350 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
2351 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
2353 AM_CONDITIONAL(NEED_RADEON_DRM_WINSYS, test "x$HAVE_GALLIUM_R300" = xyes -o \
2354 "x$HAVE_GALLIUM_R600" = xyes -o \
2355 "x$HAVE_GALLIUM_RADEONSI" = xyes)
2356 AM_CONDITIONAL(NEED_WINSYS_XLIB, test "x$NEED_WINSYS_XLIB" = xyes)
2357 AM_CONDITIONAL(NEED_RADEON_LLVM, test x$NEED_RADEON_LLVM = xyes)
2358 AM_CONDITIONAL(USE_R600_LLVM_COMPILER, test x$USE_R600_LLVM_COMPILER = xyes)
2359 AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
2360 AM_CONDITIONAL(HAVE_MESA_LLVM, test x$MESA_LLVM = x1)
2361 AM_CONDITIONAL(USE_VC4_SIMULATOR, test x$USE_VC4_SIMULATOR = xyes)
2362 if test "x$USE_VC4_SIMULATOR" = xyes -a "x$HAVE_GALLIUM_ILO" = xyes; then
2363 AC_MSG_ERROR([VC4 simulator on x86 replaces i965 driver build, so ilo must be disabled.])
2366 AM_CONDITIONAL(HAVE_LIBDRM, test "x$have_libdrm" = xyes)
2367 AM_CONDITIONAL(HAVE_X11_DRIVER, test "x$enable_xlib_glx" = xyes)
2368 AM_CONDITIONAL(HAVE_OSMESA, test "x$enable_osmesa" = xyes)
2369 AM_CONDITIONAL(HAVE_GALLIUM_OSMESA, test "x$enable_gallium_osmesa" = xyes)
2371 AM_CONDITIONAL(HAVE_X86_ASM, test "x$asm_arch" = xx86 -o "x$asm_arch" = xx86_64)
2372 AM_CONDITIONAL(HAVE_X86_64_ASM, test "x$asm_arch" = xx86_64)
2373 AM_CONDITIONAL(HAVE_SPARC_ASM, test "x$asm_arch" = xsparc)
2375 AC_SUBST([NINE_MAJOR], 1)
2376 AC_SUBST([NINE_MINOR], 0)
2377 AC_SUBST([NINE_TINY], 0)
2378 AC_SUBST([NINE_VERSION], "$NINE_MAJOR.$NINE_MINOR.$NINE_TINY")
2380 AC_SUBST([VDPAU_MAJOR], 1)
2381 AC_SUBST([VDPAU_MINOR], 0)
2383 VA_MAJOR=`$PKG_CONFIG --modversion libva | $SED -n 's/\([[^\.]]*\)\..*$/\1/p'`
2384 VA_MINOR=`$PKG_CONFIG --modversion libva | $SED -n 's/.*\.\(.*\)\..*$/\1/p'`
2385 AC_SUBST([VA_MAJOR], $VA_MAJOR)
2386 AC_SUBST([VA_MINOR], $VA_MINOR)
2388 AC_SUBST([XVMC_MAJOR], 1)
2389 AC_SUBST([XVMC_MINOR], 0)
2391 XA_HEADER="$srcdir/src/gallium/state_trackers/xa/xa_tracker.h"
2392 XA_MAJOR=`grep "#define XA_TRACKER_VERSION_MAJOR" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_MAJOR //'`
2393 XA_MINOR=`grep "#define XA_TRACKER_VERSION_MINOR" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_MINOR //'`
2394 XA_TINY=`grep "#define XA_TRACKER_VERSION_PATCH" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_PATCH //'`
2396 AC_SUBST([XA_MAJOR], $XA_MAJOR)
2397 AC_SUBST([XA_MINOR], $XA_MINOR)
2398 AC_SUBST([XA_TINY], $XA_TINY)
2399 AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_TINY")
2401 dnl Restore LDFLAGS and CPPFLAGS
2402 LDFLAGS="$_SAVE_LDFLAGS"
2403 CPPFLAGS="$_SAVE_CPPFLAGS"
2405 dnl Suppress clang's warnings about unused CFLAGS and CXXFLAGS
2406 if test "x$acv_mesa_CLANG" = xyes; then
2407 CFLAGS="$CFLAGS -Qunused-arguments"
2408 CXXFLAGS="$CXXFLAGS -Qunused-arguments"
2411 dnl Add user CFLAGS and CXXFLAGS
2412 CFLAGS="$CFLAGS $USER_CFLAGS"
2413 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
2415 dnl Substitute the config
2416 AC_CONFIG_FILES([Makefile
2420 src/egl/wayland/wayland-drm/Makefile
2421 src/egl/wayland/wayland-egl/Makefile
2422 src/egl/wayland/wayland-egl/wayland-egl.pc
2423 src/gallium/Makefile
2424 src/gallium/auxiliary/Makefile
2425 src/gallium/auxiliary/pipe-loader/Makefile
2426 src/gallium/drivers/freedreno/Makefile
2427 src/gallium/drivers/ddebug/Makefile
2428 src/gallium/drivers/i915/Makefile
2429 src/gallium/drivers/ilo/Makefile
2430 src/gallium/drivers/llvmpipe/Makefile
2431 src/gallium/drivers/noop/Makefile
2432 src/gallium/drivers/nouveau/Makefile
2433 src/gallium/drivers/r300/Makefile
2434 src/gallium/drivers/r600/Makefile
2435 src/gallium/drivers/radeon/Makefile
2436 src/gallium/drivers/radeonsi/Makefile
2437 src/gallium/drivers/rbug/Makefile
2438 src/gallium/drivers/softpipe/Makefile
2439 src/gallium/drivers/svga/Makefile
2440 src/gallium/drivers/trace/Makefile
2441 src/gallium/drivers/vc4/Makefile
2442 src/gallium/drivers/virgl/Makefile
2443 src/gallium/state_trackers/clover/Makefile
2444 src/gallium/state_trackers/dri/Makefile
2445 src/gallium/state_trackers/glx/xlib/Makefile
2446 src/gallium/state_trackers/nine/Makefile
2447 src/gallium/state_trackers/omx/Makefile
2448 src/gallium/state_trackers/osmesa/Makefile
2449 src/gallium/state_trackers/va/Makefile
2450 src/gallium/state_trackers/vdpau/Makefile
2451 src/gallium/state_trackers/xa/Makefile
2452 src/gallium/state_trackers/xvmc/Makefile
2453 src/gallium/targets/d3dadapter9/Makefile
2454 src/gallium/targets/d3dadapter9/d3d.pc
2455 src/gallium/targets/dri/Makefile
2456 src/gallium/targets/libgl-xlib/Makefile
2457 src/gallium/targets/omx/Makefile
2458 src/gallium/targets/opencl/Makefile
2459 src/gallium/targets/opencl/mesa.icd
2460 src/gallium/targets/osmesa/Makefile
2461 src/gallium/targets/osmesa/osmesa.pc
2462 src/gallium/targets/pipe-loader/Makefile
2463 src/gallium/targets/va/Makefile
2464 src/gallium/targets/vdpau/Makefile
2465 src/gallium/targets/xa/Makefile
2466 src/gallium/targets/xa/xatracker.pc
2467 src/gallium/targets/xvmc/Makefile
2468 src/gallium/tests/trivial/Makefile
2469 src/gallium/tests/unit/Makefile
2470 src/gallium/winsys/freedreno/drm/Makefile
2471 src/gallium/winsys/i915/drm/Makefile
2472 src/gallium/winsys/intel/drm/Makefile
2473 src/gallium/winsys/nouveau/drm/Makefile
2474 src/gallium/winsys/radeon/drm/Makefile
2475 src/gallium/winsys/amdgpu/drm/Makefile
2476 src/gallium/winsys/svga/drm/Makefile
2477 src/gallium/winsys/sw/dri/Makefile
2478 src/gallium/winsys/sw/kms-dri/Makefile
2479 src/gallium/winsys/sw/null/Makefile
2480 src/gallium/winsys/sw/wrapper/Makefile
2481 src/gallium/winsys/sw/xlib/Makefile
2482 src/gallium/winsys/vc4/drm/Makefile
2483 src/gallium/winsys/virgl/drm/Makefile
2484 src/gallium/winsys/virgl/vtest/Makefile
2489 src/glx/apple/Makefile
2490 src/glx/tests/Makefile
2494 src/mapi/es1api/glesv1_cm.pc
2495 src/mapi/es2api/glesv2.pc
2496 src/mapi/glapi/gen/Makefile
2499 src/mesa/drivers/dri/dri.pc
2500 src/mesa/drivers/dri/common/Makefile
2501 src/mesa/drivers/dri/common/xmlpool/Makefile
2502 src/mesa/drivers/dri/i915/Makefile
2503 src/mesa/drivers/dri/i965/Makefile
2504 src/mesa/drivers/dri/Makefile
2505 src/mesa/drivers/dri/nouveau/Makefile
2506 src/mesa/drivers/dri/r200/Makefile
2507 src/mesa/drivers/dri/radeon/Makefile
2508 src/mesa/drivers/dri/swrast/Makefile
2509 src/mesa/drivers/osmesa/Makefile
2510 src/mesa/drivers/osmesa/osmesa.pc
2511 src/mesa/drivers/x11/Makefile
2512 src/mesa/main/tests/Makefile
2514 src/util/tests/hash_table/Makefile])
2519 dnl Output some configuration info for the user
2522 echo " prefix: $prefix"
2523 echo " exec_prefix: $exec_prefix"
2524 echo " libdir: $libdir"
2525 echo " includedir: $includedir"
2529 echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
2533 case "x$enable_osmesa$enable_gallium_osmesa" in
2535 echo " OSMesa: lib$OSMESA_LIB (Gallium)"
2538 echo " OSMesa: lib$OSMESA_LIB"
2546 if test "x$enable_dri" != xno; then
2547 echo " DRI platform: $dri_platform"
2548 if test -z "$DRI_DIRS"; then
2549 echo " DRI drivers: no"
2551 echo " DRI drivers: $DRI_DIRS"
2553 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
2556 case "x$enable_glx$enable_xlib_glx" in
2558 echo " GLX: Xlib-based"
2561 echo " GLX: DRI-based"
2564 echo " GLX: $enable_glx"
2570 echo " EGL: $enable_egl"
2571 if test "$enable_egl" = yes; then
2572 echo " EGL platforms: $egl_platforms"
2575 if test "x$HAVE_EGL_DRIVER_DRI2" != "x"; then
2576 egl_drivers="$egl_drivers builtin:egl_dri2"
2578 if test "x$HAVE_EGL_DRIVER_DRI3" != "x"; then
2579 egl_drivers="$egl_drivers builtin:egl_dri3"
2582 echo " EGL drivers: $egl_drivers"
2586 if test "x$MESA_LLVM" = x1; then
2588 echo " llvm-config: $LLVM_CONFIG"
2589 echo " llvm-version: $LLVM_VERSION"
2595 if test -n "$with_gallium_drivers"; then
2596 echo " Gallium drivers: $gallium_drivers"
2597 echo " Gallium st: $gallium_st"
2604 echo " Shader cache: $enable_shader_cache"
2605 if test "x$enable_shader_cache" = "xyes"; then
2606 echo " With SHA1 from: $with_sha1"
2611 echo " Shared libs: $enable_shared"
2612 echo " Static libs: $enable_static"
2613 echo " Shared-glapi: $enable_shared_glapi"
2615 dnl Compiler options
2616 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2617 cflags=`echo $CFLAGS | \
2618 $SED 's/^ *//;s/ */ /;s/ *$//'`
2619 cxxflags=`echo $CXXFLAGS | \
2620 $SED 's/^ *//;s/ */ /;s/ *$//'`
2621 defines=`echo $DEFINES | $SED 's/^ *//;s/ */ /;s/ *$//'`
2623 echo " CFLAGS: $cflags"
2624 echo " CXXFLAGS: $cxxflags"
2625 echo " Macros: $defines"
2627 if test "x$MESA_LLVM" = x1; then
2628 echo " LLVM_CFLAGS: $LLVM_CFLAGS"
2629 echo " LLVM_CXXFLAGS: $LLVM_CXXFLAGS"
2630 echo " LLVM_CPPFLAGS: $LLVM_CPPFLAGS"
2631 echo " LLVM_LDFLAGS: $LLVM_LDFLAGS"
2634 echo " PYTHON2: $PYTHON2"
2637 echo " Run '${MAKE-make}' to build Mesa"