OSDN Git Service

ac/debug: move .gitignore for sid_tables.h too
[android-x86/external-mesa.git] / configure.ac
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
13 dnl
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:
20 dnl
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
23 dnl Software.
24 dnl
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.
32 dnl
33 dnl Process this file with autoconf to create configure.
34
35 AC_PREREQ([2.60])
36
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.])
40
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])
46 AC_CANONICAL_SYSTEM
47 AM_INIT_AUTOMAKE([foreign tar-ustar dist-xz subdir-objects])
48
49 dnl We only support native Windows builds (MinGW/MSVC) through SCons.
50 case "$host_os" in
51 mingw*)
52     AC_MSG_ERROR([MinGW build not supported through autoconf/automake, use SCons instead])
53     ;;
54 esac
55
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
58 # to make
59 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])],
60     [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])])
61
62 m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
63
64 dnl Set internal versions
65 OSMESA_VERSION=8
66 AC_SUBST([OSMESA_VERSION])
67 OPENCL_VERSION=1
68 AC_SUBST([OPENCL_VERSION])
69
70 dnl Versions for external dependencies
71 LIBDRM_REQUIRED=2.4.66
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.74
78 LIBDRM_VC4_REQUIRED=2.4.69
79 LIBDRM_ETNAVIV_REQUIRED=2.4.74
80 DRI2PROTO_REQUIRED=2.6
81 DRI3PROTO_REQUIRED=1.0
82 PRESENTPROTO_REQUIRED=1.0
83 GLPROTO_REQUIRED=1.4.14
84 LIBOMXIL_BELLAGIO_REQUIRED=0.0
85 LIBVA_REQUIRED=0.38.0
86 VDPAU_REQUIRED=1.1
87 WAYLAND_REQUIRED=1.2.0
88 XCB_REQUIRED=1.9.3
89 XCBDRI2_REQUIRED=1.8
90 XCBGLX_REQUIRED=1.8.1
91 XSHMFENCE_REQUIRED=1.1
92 XVMC_REQUIRED=1.0.6
93 PYTHON_MAKO_REQUIRED=0.8.0
94 LIBSENSORS_REQUIRED=4.0.0
95
96 dnl LLVM versions
97 LLVM_REQUIRED_GALLIUM=3.3.0
98 LLVM_REQUIRED_OPENCL=3.6.0
99 LLVM_REQUIRED_R600=3.6.0
100 LLVM_REQUIRED_RADEONSI=3.6.0
101 LLVM_REQUIRED_RADV=3.9.0
102 LLVM_REQUIRED_SWR=3.6.0
103
104 dnl Check for progs
105 AC_PROG_CPP
106 AC_PROG_CC
107 AC_PROG_CXX
108 AM_PROG_CC_C_O
109 AM_PROG_AS
110 AX_CHECK_GNU_MAKE
111 AC_CHECK_PROGS([PYTHON2], [python2.7 python2 python])
112 AC_PROG_SED
113 AC_PROG_MKDIR_P
114
115 AC_SYS_LARGEFILE
116
117 LT_PREREQ([2.2])
118 LT_INIT([disable-static])
119
120 AC_CHECK_PROG(RM, rm, [rm -f])
121 AC_CHECK_PROG(XXD, xxd, [xxd])
122
123 AX_PROG_BISON([],
124               AS_IF([test ! -f "$srcdir/src/compiler/glsl/glcpp/glcpp-parse.c"],
125                     [AC_MSG_ERROR([bison not found - unable to compile glcpp-parse.y])]))
126 AX_PROG_FLEX([],
127              AS_IF([test ! -f "$srcdir/src/compiler/glsl/glcpp/glcpp-lex.c"],
128                    [AC_MSG_ERROR([flex not found - unable to compile glcpp-lex.l])]))
129
130 AC_CHECK_PROG(INDENT, indent, indent, cat)
131 if test "x$INDENT" != "xcat"; then
132     # Only GNU indent is supported
133     INDENT_VERSION=`indent --version | grep GNU`
134     if test $? -eq 0; then
135        AC_SUBST(INDENT_FLAGS, '-i4 -nut -br -brs -npcs -ce -TGLubyte -TGLbyte -TBool')
136     else
137        INDENT="cat"
138     fi
139 fi
140
141 AX_CHECK_PYTHON_MAKO_MODULE($PYTHON_MAKO_REQUIRED)
142
143 if test -z "$PYTHON2"; then
144     if test ! -f "$srcdir/src/util/format_srgb.c"; then
145         AC_MSG_ERROR([Python not found - unable to generate sources])
146     fi
147 else
148     if test "x$acv_mako_found" = xno; then
149         if test ! -f "$srcdir/src/mesa/main/format_unpack.c"; then
150             AC_MSG_ERROR([Python mako module v$PYTHON_MAKO_REQUIRED or higher not found])
151         fi
152     fi
153 fi
154
155 AC_PROG_INSTALL
156
157 dnl We need a POSIX shell for parts of the build. Assume we have one
158 dnl in most cases.
159 case "$host_os" in
160 solaris*)
161     # Solaris /bin/sh is too old/non-POSIX compliant
162     AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
163     SHELL="$POSIX_SHELL"
164     ;;
165 esac
166
167 dnl clang is mostly GCC-compatible, but its version is much lower,
168 dnl so we have to check for it.
169 AC_MSG_CHECKING([if compiling with clang])
170
171 AC_COMPILE_IFELSE(
172 [AC_LANG_PROGRAM([], [[
173 #ifndef __clang__
174        not clang
175 #endif
176 ]])],
177 [acv_mesa_CLANG=yes], [acv_mesa_CLANG=no])
178
179 AC_MSG_RESULT([$acv_mesa_CLANG])
180
181 dnl If we're using GCC, make sure that it is at least version 4.2.0.  Older
182 dnl versions are explictly not supported.
183 GEN_ASM_OFFSETS=no
184 USE_GNU99=no
185 if test "x$GCC" = xyes -a "x$acv_mesa_CLANG" = xno; then
186     AC_MSG_CHECKING([whether gcc version is sufficient])
187     major=0
188     minor=0
189
190     GCC_VERSION=`$CC -dumpversion`
191     if test $? -eq 0; then
192         GCC_VERSION_MAJOR=`echo $GCC_VERSION | cut -d. -f1`
193         GCC_VERSION_MINOR=`echo $GCC_VERSION | cut -d. -f2`
194     fi
195
196     if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 2 ; then
197         AC_MSG_RESULT([no])
198         AC_MSG_ERROR([If using GCC, version 4.2.0 or later is required.])
199     else
200         AC_MSG_RESULT([yes])
201     fi
202
203     if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6 ; then
204         USE_GNU99=yes
205     fi
206     if test "x$cross_compiling" = xyes; then
207         GEN_ASM_OFFSETS=yes
208     fi
209 fi
210
211 dnl We don't support building Mesa with Sun C compiler
212 dnl https://bugs.freedesktop.org/show_bug.cgi?id=93189
213 AC_CHECK_DECL([__SUNPRO_C], [SUNCC=yes], [SUNCC=no])
214 if test "x$SUNCC" = xyes; then
215     AC_MSG_ERROR([Building with Sun C compiler is not supported, use GCC instead.])
216 fi
217
218 dnl Check for compiler builtins
219 AX_GCC_BUILTIN([__builtin_bswap32])
220 AX_GCC_BUILTIN([__builtin_bswap64])
221 AX_GCC_BUILTIN([__builtin_clz])
222 AX_GCC_BUILTIN([__builtin_clzll])
223 AX_GCC_BUILTIN([__builtin_ctz])
224 AX_GCC_BUILTIN([__builtin_expect])
225 AX_GCC_BUILTIN([__builtin_ffs])
226 AX_GCC_BUILTIN([__builtin_ffsll])
227 AX_GCC_BUILTIN([__builtin_popcount])
228 AX_GCC_BUILTIN([__builtin_popcountll])
229 AX_GCC_BUILTIN([__builtin_unreachable])
230
231 AX_GCC_FUNC_ATTRIBUTE([const])
232 AX_GCC_FUNC_ATTRIBUTE([flatten])
233 AX_GCC_FUNC_ATTRIBUTE([format])
234 AX_GCC_FUNC_ATTRIBUTE([malloc])
235 AX_GCC_FUNC_ATTRIBUTE([packed])
236 AX_GCC_FUNC_ATTRIBUTE([pure])
237 AX_GCC_FUNC_ATTRIBUTE([returns_nonnull])
238 AX_GCC_FUNC_ATTRIBUTE([unused])
239 AX_GCC_FUNC_ATTRIBUTE([visibility])
240 AX_GCC_FUNC_ATTRIBUTE([warn_unused_result])
241 AX_GCC_FUNC_ATTRIBUTE([weak])
242
243 AM_CONDITIONAL([GEN_ASM_OFFSETS], test "x$GEN_ASM_OFFSETS" = xyes)
244
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()
252
253 dnl LIB_DIR - library basename
254 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
255 AC_SUBST([LIB_DIR])
256
257 dnl Cache LDFLAGS and CPPFLAGS so we can add to them and restore later
258 _SAVE_LDFLAGS="$LDFLAGS"
259 _SAVE_CPPFLAGS="$CPPFLAGS"
260
261 dnl Compiler macros
262 DEFINES="-D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS"
263 AC_SUBST([DEFINES])
264 android=no
265 case "$host_os" in
266 *-android)
267     android=yes
268     ;;
269 linux*|*-gnu*|gnu*|cygwin*)
270     DEFINES="$DEFINES -D_GNU_SOURCE"
271     ;;
272 solaris*)
273     DEFINES="$DEFINES -DSVR4"
274     ;;
275 esac
276
277 AM_CONDITIONAL(HAVE_ANDROID, test "x$android" = xyes)
278
279 dnl Add flags for gcc and g++
280 if test "x$GCC" = xyes; then
281     CFLAGS="$CFLAGS -Wall"
282
283     if test "x$USE_GNU99" = xyes; then
284         CFLAGS="$CFLAGS -std=gnu99"
285     else
286         CFLAGS="$CFLAGS -std=c99"
287     fi
288
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])]);
301
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])]);
309
310     # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
311     CFLAGS=$save_CFLAGS
312
313     # We don't want floating-point math functions to set errno or trap
314     CFLAGS="$CFLAGS -fno-math-errno -fno-trapping-math"
315
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"
324
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"
335 fi
336 if test "x$GXX" = xyes; then
337     CXXFLAGS="$CXXFLAGS -Wall"
338
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"
344     AC_LANG_PUSH([C++])
345     AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
346                    [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
347     AC_LANG_POP([C++])
348
349     # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
350     CXXFLAGS=$save_CXXFLAGS
351
352     # We don't want floating-point math functions to set errno or trap
353     CXXFLAGS="$CXXFLAGS -fno-math-errno -fno-trapping-math"
354 fi
355
356 AC_SUBST([MSVC2013_COMPAT_CFLAGS])
357 AC_SUBST([MSVC2013_COMPAT_CXXFLAGS])
358
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
361 case "$host_os" in
362 cygwin*)
363     VISIBILITY_CFLAGS=""
364     VISIBILITY_CXXFLAGS=""
365     ;;
366 esac
367
368 AC_SUBST([VISIBILITY_CFLAGS])
369 AC_SUBST([VISIBILITY_CXXFLAGS])
370
371 dnl
372 dnl Optional flags, check for compiler support
373 dnl
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
378 i?86)
379     SSE41_CFLAGS="$SSE41_CFLAGS -mstackrealign"
380     ;;
381 esac
382 save_CFLAGS="$CFLAGS"
383 CFLAGS="$SSE41_CFLAGS $CFLAGS"
384 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
385 #include <smmintrin.h>
386 int param;
387 int main () {
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"
395 fi
396 AM_CONDITIONAL([SSE41_SUPPORTED], [test x$SSE41_SUPPORTED = x1])
397 AC_SUBST([SSE41_CFLAGS], $SSE41_CFLAGS)
398
399 dnl Check for new-style atomic builtins
400 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
401 int main() {
402     int n;
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"
407 fi
408 AM_CONDITIONAL([GCC_ATOMIC_BUILTINS_SUPPORTED], [test x$GCC_ATOMIC_BUILTINS_SUPPORTED = x1])
409
410 dnl Check for Endianness
411 AC_C_BIGENDIAN(
412    little_endian=no,
413    little_endian=yes,
414    little_endian=no,
415    little_endian=no
416 )
417
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)
422 save_CFLAGS=$CFLAGS
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"
427 #endif
428 #include <altivec.h>
429 int main () {
430     vector unsigned char r;
431     vector unsigned int v = vec_splat_u32 (1);
432     r = __builtin_vec_vgbbd ((vector unsigned char) v);
433     return 0;
434 }]])], have_pwr8_intrinsics=yes)
435 CFLAGS=$save_CFLAGS
436
437 AC_ARG_ENABLE(pwr8,
438    [AC_HELP_STRING([--disable-pwr8-inst],
439                    [disable POWER8-specific instructions])],
440    [enable_pwr8=$enableval], [enable_pwr8=auto])
441
442 if test "x$enable_pwr8" = xno ; then
443    have_pwr8_intrinsics=disabled
444 fi
445
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"
450 else
451    PWR8_CFLAGS=
452 fi
453
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])
457 fi
458
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])
461 fi
462
463 AC_SUBST([PWR8_CFLAGS], $PWR8_CFLAGS)
464
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
469 xyesyes)
470     AC_MSG_WARN([Cannot build static and shared libraries, disabling shared])
471     enable_shared=no
472     ;;
473 xnono)
474     AC_MSG_WARN([Cannot disable both static and shared libraries, enabling shared])
475     enable_shared=yes
476     ;;
477 esac
478
479 AM_CONDITIONAL(BUILD_SHARED, test "x$enable_shared" = xyes)
480
481 dnl
482 dnl other compiler options
483 dnl
484 AC_ARG_ENABLE([debug],
485     [AS_HELP_STRING([--enable-debug],
486         [use debug compiler flags and macros @<:@default=disabled@:>@])],
487     [enable_debug="$enableval"],
488     [enable_debug=no]
489 )
490
491 AC_ARG_ENABLE([profile],
492     [AS_HELP_STRING([--enable-profile],
493         [enable profiling of code @<:@default=disabled@:>@])],
494     [enable_profile="$enableval"],
495     [enable_profile=no]
496 )
497
498 if test "x$enable_profile" = xyes; then
499     DEFINES="$DEFINES -DPROFILE"
500     if test "x$GCC" = xyes; then
501         CFLAGS="$CFLAGS -fno-omit-frame-pointer"
502     fi
503     if test "x$GXX" = xyes; then
504         CXXFLAGS="$CXXFLAGS -fno-omit-frame-pointer"
505     fi
506 fi
507
508 if test "x$enable_debug" = xyes; then
509     DEFINES="$DEFINES -DDEBUG"
510     if test "x$enable_profile" = xyes; then
511         AC_MSG_WARN([Debug and Profile are enabled at the same time])
512     fi
513     if test "x$GCC" = xyes; then
514         if ! echo "$CFLAGS" | grep -q -e '-g'; then
515             CFLAGS="$CFLAGS -g"
516         fi
517         if ! echo "$CFLAGS" | grep -q -e '-O'; then
518             CFLAGS="$CFLAGS -O0"
519         fi
520     fi
521     if test "x$GXX" = xyes; then
522         if ! echo "$CXXFLAGS" | grep -q -e '-g'; then
523             CXXFLAGS="$CXXFLAGS -g"
524         fi
525         if ! echo "$CXXFLAGS" | grep -q -e '-O'; then
526             CXXFLAGS="$CXXFLAGS -O0"
527         fi
528     fi
529 else
530    DEFINES="$DEFINES -DNDEBUG"
531 fi
532
533 DEFAULT_GL_LIB_NAME=GL
534
535 dnl
536 dnl Check if linker supports -Bsymbolic
537 dnl
538 save_LDFLAGS=$LDFLAGS
539 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic"
540 AC_MSG_CHECKING([if ld supports -Bsymbolic])
541 AC_LINK_IFELSE(
542     [AC_LANG_SOURCE([int main() { return 0;}])],
543     [AC_MSG_RESULT([yes])
544         BSYMBOLIC="-Wl,-Bsymbolic";],
545     [AC_MSG_RESULT([no])
546         BSYMBOLIC="";])
547 LDFLAGS=$save_LDFLAGS
548
549 AC_SUBST([BSYMBOLIC])
550
551 dnl
552 dnl Check if linker supports garbage collection
553 dnl
554 save_LDFLAGS=$LDFLAGS
555 LDFLAGS="$LDFLAGS -Wl,--gc-sections"
556 AC_MSG_CHECKING([whether ld supports --gc-sections])
557 AC_LINK_IFELSE(
558     [AC_LANG_SOURCE([static char UnusedFunc() { return 5; } int main() { return 0;}])],
559     [AC_MSG_RESULT([yes])
560         GC_SECTIONS="-Wl,--gc-sections";],
561     [AC_MSG_RESULT([no])
562         GC_SECTIONS="";])
563 LDFLAGS=$save_LDFLAGS
564
565 AC_SUBST([GC_SECTIONS])
566
567 dnl
568 dnl OpenBSD does not have DT_NEEDED entries for libc by design
569 dnl so when these flags are passed to ld via libtool the checks will fail
570 dnl
571 case "$host_os" in
572 openbsd* | darwin* )
573     LD_NO_UNDEFINED="" ;;
574 *)
575     LD_NO_UNDEFINED="-Wl,--no-undefined" ;;
576 esac
577
578 AC_SUBST([LD_NO_UNDEFINED])
579
580 dnl
581 dnl Check if linker supports version scripts
582 dnl
583 AC_MSG_CHECKING([if the linker supports version-scripts])
584 save_LDFLAGS=$LDFLAGS
585 LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map"
586 cat > conftest.map <<EOF
587 VERSION_1 {
588      global:
589          main;
590
591      local:
592          *;
593 };
594 EOF
595 AC_LINK_IFELSE(
596     [AC_LANG_SOURCE([int main() { return 0;}])],
597     [have_ld_version_script=yes;AC_MSG_RESULT(yes)],
598     [have_ld_version_script=no; AC_MSG_RESULT(no)])
599 LDFLAGS=$save_LDFLAGS
600 AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes")
601
602 dnl
603 dnl Check if linker supports dynamic list files
604 dnl
605 AC_MSG_CHECKING([if the linker supports --dynamic-list])
606 save_LDFLAGS=$LDFLAGS
607 LDFLAGS="$LDFLAGS -Wl,--dynamic-list=conftest.dyn"
608 cat > conftest.dyn <<EOF
609 {
610         radeon_drm_winsys_create;
611 };
612 EOF
613 AC_LINK_IFELSE(
614     [AC_LANG_SOURCE([int main() { return 0;}])],
615     [have_ld_dynamic_list=yes;AC_MSG_RESULT(yes)],
616     [have_ld_dynamic_list=no; AC_MSG_RESULT(no)])
617 LDFLAGS=$save_LDFLAGS
618 AM_CONDITIONAL(HAVE_LD_DYNAMIC_LIST, test "$have_ld_dynamic_list" = "yes")
619
620 dnl
621 dnl compatibility symlinks
622 dnl
623 case "$host_os" in
624 linux* )
625     HAVE_COMPAT_SYMLINKS=yes ;;
626 * )
627     HAVE_COMPAT_SYMLINKS=no ;;
628 esac
629
630 AM_CONDITIONAL(HAVE_COMPAT_SYMLINKS, test "x$HAVE_COMPAT_SYMLINKS" = xyes)
631
632 DEFAULT_GL_LIB_NAME=GL
633
634 dnl
635 dnl Libglvnd configuration
636 dnl
637 AC_ARG_ENABLE([libglvnd],
638     [AS_HELP_STRING([--enable-libglvnd],
639         [Build for libglvnd @<:@default=disabled@:>@])],
640     [enable_libglvnd="$enableval"],
641     [enable_libglvnd=no])
642 AM_CONDITIONAL(USE_LIBGLVND_GLX, test "x$enable_libglvnd" = xyes)
643 #AM_COND_IF([USE_LIBGLVND_GLX], [DEFINES="${DEFINES} -DUSE_LIBGLVND_GLX=1"])
644 if test "x$enable_libglvnd" = xyes ; then
645     DEFINES="${DEFINES} -DUSE_LIBGLVND_GLX=1"
646     DEFAULT_GL_LIB_NAME=GLX_mesa
647 fi
648
649 dnl
650 dnl library names
651 dnl
652 dnl Unfortunately we need to do a few things that libtool can't help us with,
653 dnl so we need some knowledge of shared library filenames:
654 dnl
655 dnl LIB_EXT is the extension used when creating symlinks for alternate
656 dnl filenames for a shared library which will be dynamically loaded
657 dnl
658 dnl IMP_LIB_EXT is the extension used when checking for the presence of a
659 dnl the file for a shared library we wish to link with
660 dnl
661 case "$host_os" in
662 darwin* )
663     LIB_EXT='dylib'
664     IMP_LIB_EXT=$LIB_EXT
665     ;;
666 cygwin* )
667     LIB_EXT='dll'
668     IMP_LIB_EXT='dll.a'
669     ;;
670 aix* )
671     LIB_EXT='a'
672     IMP_LIB_EXT=$LIB_EXT
673     ;;
674 * )
675     LIB_EXT='so'
676     IMP_LIB_EXT=$LIB_EXT
677     ;;
678 esac
679
680 AC_SUBST([LIB_EXT])
681
682 AC_ARG_WITH([gl-lib-name],
683   [AS_HELP_STRING([--with-gl-lib-name@<:@=NAME@:>@],
684     [specify GL library name @<:@default=GL@:>@])],
685   [GL_LIB=$withval],
686   [GL_LIB="$DEFAULT_GL_LIB_NAME"])
687 AC_ARG_WITH([osmesa-lib-name],
688   [AS_HELP_STRING([--with-osmesa-lib-name@<:@=NAME@:>@],
689     [specify OSMesa library name @<:@default=OSMesa@:>@])],
690   [OSMESA_LIB=$withval],
691   [OSMESA_LIB=OSMesa])
692 AS_IF([test "x$GL_LIB" = xyes], [GL_LIB="$DEFAULT_GL_LIB_NAME"])
693 AS_IF([test "x$OSMESA_LIB" = xyes], [OSMESA_LIB=OSMesa])
694
695 dnl
696 dnl Mangled Mesa support
697 dnl
698 AC_ARG_ENABLE([mangling],
699   [AS_HELP_STRING([--enable-mangling],
700     [enable mangled symbols and library name @<:@default=disabled@:>@])],
701   [enable_mangling="${enableval}"],
702   [enable_mangling=no]
703 )
704 if test "x${enable_mangling}" = "xyes" ; then
705   DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
706   GL_LIB="Mangled${GL_LIB}"
707   OSMESA_LIB="Mangled${OSMESA_LIB}"
708 fi
709 AC_SUBST([GL_LIB])
710 AC_SUBST([OSMESA_LIB])
711
712 dnl
713 dnl potentially-infringing-but-nobody-knows-for-sure stuff
714 dnl
715 AC_ARG_ENABLE([texture-float],
716     [AS_HELP_STRING([--enable-texture-float],
717         [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
718     [enable_texture_float="$enableval"],
719     [enable_texture_float=no]
720 )
721 if test "x$enable_texture_float" = xyes; then
722     AC_MSG_WARN([Floating-point textures enabled.])
723     AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
724     DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
725 fi
726
727 dnl
728 dnl Arch/platform-specific settings
729 dnl
730 AC_ARG_ENABLE([asm],
731     [AS_HELP_STRING([--disable-asm],
732         [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
733     [enable_asm="$enableval"],
734     [enable_asm=yes]
735 )
736 asm_arch=""
737 AC_MSG_CHECKING([whether to enable assembly])
738 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
739 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
740 if test "x$enable_asm" = xyes -a "x$cross_compiling" = xyes; then
741     case "$host_cpu" in
742     i?86 | x86_64 | amd64)
743         if test "x$host_cpu" != "x$target_cpu"; then
744             enable_asm=no
745             AC_MSG_RESULT([no, cross compiling])
746         fi
747         ;;
748     esac
749 fi
750 # check for supported arches
751 if test "x$enable_asm" = xyes; then
752     case "$host_cpu" in
753     i?86)
754         case "$host_os" in
755         linux* | *freebsd* | dragonfly* | *netbsd* | openbsd* | gnu*)
756             asm_arch=x86
757             ;;
758         esac
759         ;;
760     x86_64|amd64)
761         case "$host_os" in
762         linux* | *freebsd* | dragonfly* | *netbsd* | openbsd*)
763             asm_arch=x86_64
764             ;;
765         esac
766         ;;
767     sparc*)
768         case "$host_os" in
769         linux*)
770             asm_arch=sparc
771             ;;
772         esac
773         ;;
774     esac
775
776     case "$asm_arch" in
777     x86)
778         DEFINES="$DEFINES -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
779         AC_MSG_RESULT([yes, x86])
780         ;;
781     x86_64|amd64)
782         DEFINES="$DEFINES -DUSE_X86_64_ASM"
783         AC_MSG_RESULT([yes, x86_64])
784         ;;
785     sparc)
786         DEFINES="$DEFINES -DUSE_SPARC_ASM"
787         AC_MSG_RESULT([yes, sparc])
788         ;;
789     *)
790         AC_MSG_RESULT([no, platform not supported])
791         ;;
792     esac
793 fi
794
795 AC_HEADER_MAJOR
796 AC_CHECK_HEADER([xlocale.h], [DEFINES="$DEFINES -DHAVE_XLOCALE_H"])
797 AC_CHECK_HEADER([sys/sysctl.h], [DEFINES="$DEFINES -DHAVE_SYS_SYSCTL_H"])
798 AC_CHECK_FUNC([strtof], [DEFINES="$DEFINES -DHAVE_STRTOF"])
799 AC_CHECK_FUNC([mkostemp], [DEFINES="$DEFINES -DHAVE_MKOSTEMP"])
800
801 dnl Check to see if dlopen is in default libraries (like Solaris, which
802 dnl has it in libc), or if libdl is needed to get it.
803 AC_CHECK_FUNC([dlopen], [DEFINES="$DEFINES -DHAVE_DLOPEN"],
804     [AC_CHECK_LIB([dl], [dlopen],
805        [DEFINES="$DEFINES -DHAVE_DLOPEN"; DLOPEN_LIBS="-ldl"])])
806 AC_SUBST([DLOPEN_LIBS])
807
808 dnl Check if that library also has dladdr
809 save_LIBS="$LIBS"
810 LIBS="$LIBS $DLOPEN_LIBS"
811 AC_CHECK_FUNCS([dladdr])
812 LIBS="$save_LIBS"
813
814 case "$host_os" in
815 darwin*)
816     ;;
817 *)
818     AC_CHECK_FUNCS([clock_gettime], [CLOCK_LIB=],
819                    [AC_CHECK_LIB([rt], [clock_gettime], [CLOCK_LIB=-lrt],
820                                  [AC_MSG_ERROR([Could not find clock_gettime])])])
821     AC_SUBST([CLOCK_LIB])
822     ;;
823 esac
824
825 dnl See if posix_memalign is available
826 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
827
828 dnl Check for pthreads
829 AX_PTHREAD
830 if test "x$ax_pthread_ok" = xno; then
831     AC_MSG_ERROR([Building mesa on this platform requires pthreads])
832 fi
833 dnl AX_PTHREADS leaves PTHREAD_LIBS empty for gcc and sets PTHREAD_CFLAGS
834 dnl to -pthread, which causes problems if we need -lpthread to appear in
835 dnl pkgconfig files.  Since Android doesn't have a pthread lib, this check
836 dnl is not valid for that platform.
837 if test "x$android" = xno; then
838     test -z "$PTHREAD_LIBS" && PTHREAD_LIBS="-lpthread"
839 fi
840
841 dnl pthread-stubs is mandatory on targets where it exists
842 case "$host_os" in
843 cygwin* )
844     pthread_stubs_possible="no"
845     ;;
846 * )
847     pthread_stubs_possible="yes"
848     ;;
849 esac
850
851 if test "x$pthread_stubs_possible" = xyes; then
852     PKG_CHECK_MODULES(PTHREADSTUBS, pthread-stubs)
853     AC_SUBST(PTHREADSTUBS_CFLAGS)
854     AC_SUBST(PTHREADSTUBS_LIBS)
855 fi
856
857 dnl SELinux awareness.
858 AC_ARG_ENABLE([selinux],
859     [AS_HELP_STRING([--enable-selinux],
860         [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
861     [MESA_SELINUX="$enableval"],
862     [MESA_SELINUX=no])
863 if test "x$enable_selinux" = "xyes"; then
864     PKG_CHECK_MODULES([SELINUX], [libselinux], [],
865         [AC_CHECK_HEADER([selinux/selinux.h],[],
866                          [AC_MSG_ERROR([SELinux headers not found])])
867          AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
868                       [AC_MSG_ERROR([SELinux library not found])])
869          SELINUX_LIBS="-lselinux"])
870     DEFINES="$DEFINES -DMESA_SELINUX"
871 fi
872 AC_SUBST([SELINUX_CFLAGS])
873 AC_SUBST([SELINUX_LIBS])
874
875 dnl
876 dnl LLVM
877 dnl
878 AC_ARG_ENABLE([llvm-shared-libs],
879     [AS_HELP_STRING([--enable-llvm-shared-libs],
880         [link with LLVM shared libraries @<:@default=enabled@:>@])],
881     [enable_llvm_shared_libs="$enableval"],
882     [enable_llvm_shared_libs=yes])
883
884 AC_ARG_WITH([llvm-prefix],
885     [AS_HELP_STRING([--with-llvm-prefix],
886         [Prefix for LLVM installations in non-standard locations])],
887     [llvm_prefix="$withval"],
888     [llvm_prefix=''])
889
890 PKG_CHECK_MODULES([LIBELF], [libelf], [have_libelf=yes], [have_libelf=no])
891 if test "x$have_libelf" = xno; then
892    LIBELF_LIBS=''
893    LIBELF_CFLAGS=''
894    AC_CHECK_LIB([elf], [elf_memory], [have_libelf=yes;LIBELF_LIBS=-lelf], [have_libelf=no])
895    AC_SUBST([LIBELF_LIBS])
896    AC_SUBST([LIBELF_CFLAGS])
897 fi
898
899 if test -z "$LLVM_CONFIG"; then
900     if test -n "$llvm_prefix"; then
901         AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no], ["$llvm_prefix/bin"])
902     else
903         AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no])
904     fi
905 fi
906
907 llvm_add_component() {
908     new_llvm_component=$1
909     driver_name=$2
910
911     if $LLVM_CONFIG --components | grep -iqw $new_llvm_component ; then
912         LLVM_COMPONENTS="${LLVM_COMPONENTS} ${new_llvm_component}"
913     else
914         AC_MSG_ERROR([LLVM component '$new_llvm_component' not enabled in your LLVM build. Required by $driver_name.])
915     fi
916 }
917
918 llvm_add_default_components() {
919     driver_name=$1
920
921     # Required default components
922     llvm_add_component "bitwriter" $driver_name
923     llvm_add_component "engine" $driver_name
924     llvm_add_component "mcdisassembler" $driver_name
925     llvm_add_component "mcjit" $driver_name
926
927     # Optional default components
928     if $LLVM_CONFIG --components | grep -iqw inteljitevents ; then
929         LLVM_COMPONENTS="$LLVM_COMPONENTS inteljitevents"
930     fi
931 }
932
933 llvm_add_target() {
934     new_llvm_target=$1
935     driver_name=$2
936
937     if $LLVM_CONFIG --targets-built | grep -iqw $new_llvm_target ; then
938         llvm_add_component $new_llvm_target $driver_name
939     else
940         AC_MSG_ERROR([LLVM target '$new_llvm_target' not enabled in your LLVM build. Required by $driver_name.])
941     fi
942 }
943
944 # Call this inside ` ` to get the return value.
945 # $1 is the llvm-config command with arguments.
946 strip_unwanted_llvm_flags() {
947     # Use \> (marks the end of the word)
948     echo `$1` | sed \
949         -e 's/-march=\S*//g' \
950         -e 's/-mtune=\S*//g' \
951         -e 's/-mcpu=\S*//g' \
952         -e 's/-DNDEBUG\>//g' \
953         -e 's/-D_GNU_SOURCE\>//g' \
954         -e 's/-pedantic\>//g' \
955         -e 's/-Wcovered-switch-default\>//g' \
956         -e 's/-O.\>//g' \
957         -e 's/-g\>//g' \
958         -e 's/-Wall\>//g' \
959         -e 's/-Wcast-qual\>//g' \
960         -e 's/-Woverloaded-virtual\>//g' \
961         -e 's/-fcolor-diagnostics\>//g' \
962         -e 's/-fdata-sections\>//g' \
963         -e 's/-ffunction-sections\>//g' \
964         -e 's/-fno-exceptions\>//g' \
965         -e 's/-fomit-frame-pointer\>//g' \
966         -e 's/-fvisibility-inlines-hidden\>//g' \
967         -e 's/-fPIC\>//g' \
968         -e 's/-fstack-protector-strong\>//g'
969 }
970
971 llvm_set_environment_variables() {
972     if test "x$LLVM_CONFIG" != xno; then
973         LLVM_VERSION=`$LLVM_CONFIG --version | egrep -o '^[[0-9.]]+'`
974         LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
975         LLVM_BINDIR=`$LLVM_CONFIG --bindir`
976         LLVM_CPPFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cppflags"`
977         LLVM_CFLAGS=$LLVM_CPPFLAGS   # CPPFLAGS seem to be sufficient
978         LLVM_CXXFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cxxflags"`
979         LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
980         LLVM_LIBDIR=`$LLVM_CONFIG --libdir`
981
982         AC_COMPUTE_INT([LLVM_VERSION_MAJOR], [LLVM_VERSION_MAJOR],
983             [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
984         AC_COMPUTE_INT([LLVM_VERSION_MINOR], [LLVM_VERSION_MINOR],
985             [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
986         AC_COMPUTE_INT([LLVM_VERSION_PATCH], [LLVM_VERSION_PATCH],
987             [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
988
989         # Only needed for LLVM < 3.6.0
990         if test -z "$LLVM_VERSION_PATCH"; then
991             LLVM_VERSION_PATCH=0
992         fi
993
994         if test "$LLVM_VERSION_MINOR" -lt 10; then
995             LLVM_VERSION_INT="${LLVM_VERSION_MAJOR}0${LLVM_VERSION_MINOR}"
996         else
997             LLVM_VERSION_INT="${LLVM_VERSION_MAJOR}${LLVM_VERSION_MINOR}"
998         fi
999
1000         DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT -DMESA_LLVM_VERSION_PATCH=$LLVM_VERSION_PATCH"
1001         MESA_LLVM=1
1002     else
1003         MESA_LLVM=0
1004         LLVM_VERSION_INT=0
1005     fi
1006 }
1007
1008 llvm_check_version_for() {
1009     if test "x$MESA_LLVM" = x0; then
1010         AC_MSG_ERROR([LLVM $1 or newer is required for $2])
1011         return
1012     fi
1013
1014     llvm_target_version_major=`echo $1 | cut -d. -f1 | egrep -o '^[[0-9]]+'`
1015     llvm_target_version_minor=`echo $1 | cut -d. -f2 | egrep -o '^[[0-9]]+'`
1016     llvm_target_version_patch=`echo $1 | cut -d. -f3 | egrep -o '^[[0-9]]+'`
1017
1018     if test "$LLVM_VERSION_MAJOR" -gt "$llvm_target_version_major"; then
1019         # major > required major
1020         #  --> OK
1021         return
1022     fi
1023
1024     if test "$LLVM_VERSION_MAJOR" -eq "$llvm_target_version_major"; then
1025         if test "$LLVM_VERSION_MINOR" -gt "$llvm_target_version_minor"; then
1026             # major = required major and
1027             # minor > required minor
1028             #  --> OK
1029             return
1030         else
1031             if test "$LLVM_VERSION_MINOR" -eq "$llvm_target_version_minor"; then
1032                 if test "$LLVM_VERSION_PATCH" -ge "$llvm_target_version_patch"; then
1033                     # major = required major and
1034                     # minor = required minor and
1035                     # patch >= required patch
1036                     #  --> OK
1037                     return
1038                 fi
1039             fi
1040         fi
1041     fi
1042
1043     AC_MSG_ERROR([LLVM $1 or newer is required for $2])
1044 }
1045
1046 radeon_llvm_check() {
1047     if test ${LLVM_VERSION_INT} -lt 307; then
1048         amdgpu_llvm_target_name='r600'
1049     else
1050         amdgpu_llvm_target_name='amdgpu'
1051     fi
1052
1053     llvm_check_version_for $*
1054
1055     llvm_add_target $amdgpu_llvm_target_name $2
1056
1057     llvm_add_default_components $2
1058     llvm_add_component "bitreader" $2
1059     llvm_add_component "ipo" $2
1060
1061     NEED_RADEON_LLVM=yes
1062     if test "x$have_libelf" != xyes; then
1063        AC_MSG_ERROR([$1 requires libelf when using llvm])
1064     fi
1065 }
1066
1067 llvm_set_environment_variables
1068
1069 AC_SUBST([MESA_LLVM])
1070 AC_SUBST([LLVM_BINDIR])
1071 AC_SUBST([LLVM_CFLAGS])
1072 AC_SUBST([LLVM_CPPFLAGS])
1073 AC_SUBST([LLVM_CXXFLAGS])
1074 AC_SUBST([LLVM_LIBDIR])
1075 AC_SUBST([LLVM_LIBS])
1076 AC_SUBST([LLVM_LDFLAGS])
1077 AC_SUBST([LLVM_INCLUDEDIR])
1078 AC_SUBST([LLVM_VERSION])
1079
1080 dnl Options for APIs
1081 AC_ARG_ENABLE([opengl],
1082     [AS_HELP_STRING([--disable-opengl],
1083         [disable support for standard OpenGL API @<:@default=enabled@:>@])],
1084     [enable_opengl="$enableval"],
1085     [enable_opengl=yes])
1086 AC_ARG_ENABLE([gles1],
1087     [AS_HELP_STRING([--disable-gles1],
1088         [disable support for OpenGL ES 1.x API @<:@default=enabled@:>@])],
1089     [enable_gles1="$enableval"],
1090     [enable_gles1=yes])
1091 AC_ARG_ENABLE([gles2],
1092     [AS_HELP_STRING([--disable-gles2],
1093         [disable support for OpenGL ES 2.x API @<:@default=enabled@:>@])],
1094     [enable_gles2="$enableval"],
1095     [enable_gles2=yes])
1096
1097 AC_ARG_ENABLE([dri],
1098     [AS_HELP_STRING([--enable-dri],
1099         [enable DRI modules @<:@default=enabled@:>@])],
1100     [enable_dri="$enableval"],
1101     [enable_dri=yes])
1102
1103 AC_ARG_ENABLE([gallium-extra-hud],
1104     [AS_HELP_STRING([--enable-gallium-extra-hud],
1105         [enable HUD block/NIC I/O HUD stats support @<:@default=disabled@:>@])],
1106     [enable_gallium_extra_hud="$enableval"],
1107     [enable_gallium_extra_hud=no])
1108 AM_CONDITIONAL(HAVE_GALLIUM_EXTRA_HUD, test "x$enable_gallium_extra_hud" = xyes)
1109 if test "x$enable_gallium_extra_hud" = xyes ; then
1110     DEFINES="${DEFINES} -DHAVE_GALLIUM_EXTRA_HUD=1"
1111 fi
1112
1113 #TODO: no pkgconfig .pc available for libsensors.
1114 #PKG_CHECK_MODULES([LIBSENSORS], [libsensors >= $LIBSENSORS_REQUIRED], [enable_lmsensors=yes], [enable_lmsensors=no])
1115 AC_ARG_ENABLE([lmsensors],
1116     [AS_HELP_STRING([--enable-lmsensors],
1117         [enable HUD lmsensor support @<:@default=disabled@:>@])],
1118     [enable_lmsensors="$enableval"],
1119     [enable_lmsensors=no])
1120 AM_CONDITIONAL(HAVE_LIBSENSORS, test "x$enable_lmsensors" = xyes)
1121 if test "x$enable_lmsensors" = xyes ; then
1122     DEFINES="${DEFINES} -DHAVE_LIBSENSORS=1"
1123     LIBSENSORS_LDFLAGS="-lsensors"
1124 else
1125     LIBSENSORS_LDFLAGS=""
1126 fi
1127 AC_SUBST(LIBSENSORS_LDFLAGS)
1128
1129 case "$host_os" in
1130 linux*)
1131     dri3_default=yes
1132     ;;
1133 *)
1134     dri3_default=no
1135     ;;
1136 esac
1137
1138 if test "x$enable_dri" = xno; then
1139     dri3_default=no
1140 fi
1141
1142 AC_ARG_ENABLE([dri3],
1143     [AS_HELP_STRING([--enable-dri3],
1144         [enable DRI3 @<:@default=auto@:>@])],
1145     [enable_dri3="$enableval"],
1146     [enable_dri3="$dri3_default"])
1147 AC_ARG_ENABLE([glx],
1148     [AS_HELP_STRING([--enable-glx@<:@=dri|xlib|gallium-xlib@:>@],
1149         [enable the GLX library and choose an implementation @<:@default=auto@:>@])],
1150     [enable_glx="$enableval"],
1151     [enable_glx=yes])
1152 AC_ARG_ENABLE([osmesa],
1153     [AS_HELP_STRING([--enable-osmesa],
1154         [enable OSMesa library @<:@default=disabled@:>@])],
1155     [enable_osmesa="$enableval"],
1156     [enable_osmesa=no])
1157 AC_ARG_ENABLE([gallium-osmesa],
1158     [AS_HELP_STRING([--enable-gallium-osmesa],
1159         [enable Gallium implementation of the OSMesa library @<:@default=disabled@:>@])],
1160     [enable_gallium_osmesa="$enableval"],
1161     [enable_gallium_osmesa=no])
1162 AC_ARG_ENABLE([egl],
1163     [AS_HELP_STRING([--disable-egl],
1164         [disable EGL library @<:@default=enabled@:>@])],
1165     [enable_egl="$enableval"],
1166     [enable_egl=yes])
1167
1168 AC_ARG_ENABLE([xa],
1169     [AS_HELP_STRING([--enable-xa],
1170         [enable build of the XA X Acceleration API @<:@default=disabled@:>@])],
1171     [enable_xa="$enableval"],
1172     [enable_xa=no])
1173 AC_ARG_ENABLE([gbm],
1174    [AS_HELP_STRING([--enable-gbm],
1175          [enable gbm library @<:@default=yes except cygwin@:>@])],
1176    [enable_gbm="$enableval"],
1177    [case "$host_os" in
1178        cygwin*)
1179           enable_gbm=no
1180           ;;
1181        *)
1182           enable_gbm=yes
1183           ;;
1184     esac])
1185 AC_ARG_ENABLE([nine],
1186     [AS_HELP_STRING([--enable-nine],
1187         [enable build of the nine Direct3D9 API @<:@default=no@:>@])],
1188     [enable_nine="$enableval"],
1189     [enable_nine=no])
1190
1191 AC_ARG_ENABLE([xvmc],
1192    [AS_HELP_STRING([--enable-xvmc],
1193          [enable xvmc library @<:@default=auto@:>@])],
1194    [enable_xvmc="$enableval"],
1195    [enable_xvmc=auto])
1196 AC_ARG_ENABLE([vdpau],
1197    [AS_HELP_STRING([--enable-vdpau],
1198          [enable vdpau library @<:@default=auto@:>@])],
1199    [enable_vdpau="$enableval"],
1200    [enable_vdpau=auto])
1201 AC_ARG_ENABLE([omx],
1202    [AS_HELP_STRING([--enable-omx],
1203          [enable OpenMAX library @<:@default=disabled@:>@])],
1204    [enable_omx="$enableval"],
1205    [enable_omx=no])
1206 AC_ARG_ENABLE([va],
1207    [AS_HELP_STRING([--enable-va],
1208          [enable va library @<:@default=auto@:>@])],
1209    [enable_va="$enableval"],
1210    [enable_va=auto])
1211 AC_ARG_ENABLE([opencl],
1212    [AS_HELP_STRING([--enable-opencl],
1213          [enable OpenCL library @<:@default=disabled@:>@])],
1214    [enable_opencl="$enableval"],
1215    [enable_opencl=no])
1216 AC_ARG_ENABLE([opencl_icd],
1217    [AS_HELP_STRING([--enable-opencl-icd],
1218           [Build an OpenCL ICD library to be loaded by an ICD implementation
1219            @<:@default=disabled@:>@])],
1220     [enable_opencl_icd="$enableval"],
1221     [enable_opencl_icd=no])
1222
1223 AC_ARG_ENABLE([gallium-tests],
1224     [AS_HELP_STRING([--enable-gallium-tests],
1225         [Enable optional Gallium tests) @<:@default=disabled@:>@])],
1226     [enable_gallium_tests="$enableval"],
1227     [enable_gallium_tests=no])
1228
1229 # Option for Gallium drivers
1230
1231 # Keep this in sync with the --with-gallium-drivers help string default value
1232 GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
1233
1234 AC_ARG_WITH([gallium-drivers],
1235     [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
1236         [comma delimited Gallium drivers list, e.g.
1237         "i915,ilo,nouveau,r300,r600,radeonsi,freedreno,svga,swrast,vc4,virgl,etnaviv,imx"
1238         @<:@default=r300,r600,svga,swrast@:>@])],
1239     [with_gallium_drivers="$withval"],
1240     [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
1241
1242 # Doing '--without-gallium-drivers' will set this variable to 'no'.  Clear it
1243 # here so that the script doesn't choke on an unknown driver name later.
1244 case "$with_gallium_drivers" in
1245     yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
1246     no) with_gallium_drivers='' ;;
1247 esac
1248
1249 if test "x$enable_opengl" = xno -a \
1250         "x$enable_gles1" = xno -a \
1251         "x$enable_gles2" = xno -a \
1252         "x$enable_nine" = xno -a \
1253         "x$enable_xa" = xno -a \
1254         "x$enable_xvmc" = xno -a \
1255         "x$enable_vdpau" = xno -a \
1256         "x$enable_omx" = xno -a \
1257         "x$enable_va" = xno -a \
1258         "x$enable_opencl" = xno; then
1259     AC_MSG_ERROR([at least one API should be enabled])
1260 fi
1261
1262 # Building OpenGL ES1 and/or ES2 without OpenGL is not supported on mesa 9.0.x
1263 if test "x$enable_opengl" = xno -a \
1264         "x$enable_gles1" = xyes; then
1265     AC_MSG_ERROR([Building OpenGL ES1 without OpenGL is not supported])
1266 fi
1267
1268 if test "x$enable_opengl" = xno -a \
1269         "x$enable_gles2" = xyes; then
1270     AC_MSG_ERROR([Building OpenGL ES2 without OpenGL is not supported])
1271 fi
1272
1273 AM_CONDITIONAL(HAVE_OPENGL, test "x$enable_opengl" = xyes)
1274 AM_CONDITIONAL(HAVE_OPENGL_ES1, test "x$enable_gles1" = xyes)
1275 AM_CONDITIONAL(HAVE_OPENGL_ES2, test "x$enable_gles2" = xyes)
1276 AM_CONDITIONAL(NEED_OPENGL_COMMON, test "x$enable_opengl" = xyes -o \
1277                                         "x$enable_gles1" = xyes -o \
1278                                         "x$enable_gles2" = xyes)
1279
1280 # Validate GLX options
1281 if test "x$enable_glx" = xyes; then
1282     if test "x$enable_dri" = xyes; then
1283         enable_glx=dri
1284     elif test -n "$with_gallium_drivers"; then
1285         enable_glx=gallium-xlib
1286     else
1287         enable_glx=xlib
1288     fi
1289 fi
1290 case "x$enable_glx" in
1291 xdri | xxlib | xgallium-xlib)
1292     # GLX requires OpenGL
1293     if test "x$enable_opengl" = xno; then
1294         AC_MSG_ERROR([GLX cannot be built without OpenGL])
1295     fi
1296
1297     # Check individual dependencies
1298     case "x$enable_glx" in
1299     xdri)
1300         if test "x$enable_dri" = xno; then
1301             AC_MSG_ERROR([DRI-based GLX requires DRI to be enabled])
1302         fi
1303         ;;
1304     xxlib)
1305         if test "x$enable_dri" = xyes; then
1306             AC_MSG_ERROR([Xlib-based GLX cannot be built with DRI enabled])
1307         fi
1308         ;;
1309     xgallium-xlib )
1310         if test "x$enable_dri" = xyes; then
1311             AC_MSG_ERROR([Xlib-based (Gallium) GLX cannot be built with DRI enabled])
1312         fi
1313         if test -z "$with_gallium_drivers"; then
1314             AC_MSG_ERROR([Xlib-based (Gallium) GLX cannot be built without Gallium enabled])
1315         fi
1316         ;;
1317     esac
1318     ;;
1319 xno)
1320     ;;
1321 *)
1322     AC_MSG_ERROR([Illegal value for --enable-glx: $enable_glx])
1323     ;;
1324 esac
1325
1326 AM_CONDITIONAL(HAVE_GLX, test "x$enable_glx" != xno)
1327 AM_CONDITIONAL(HAVE_DRI_GLX, test "x$enable_glx" = xdri)
1328 AM_CONDITIONAL(HAVE_XLIB_GLX, test "x$enable_glx" = xxlib)
1329 AM_CONDITIONAL(HAVE_GALLIUM_XLIB_GLX, test "x$enable_glx" = xgallium-xlib)
1330
1331 dnl
1332 dnl Libglvnd configuration
1333 dnl
1334 AC_ARG_ENABLE([libglvnd],
1335     [AS_HELP_STRING([--enable-libglvnd],
1336         [Build for libglvnd @<:@default=disabled@:>@])],
1337     [enable_libglvnd="$enableval"],
1338     [enable_libglvnd=no])
1339 AM_CONDITIONAL(USE_LIBGLVND_GLX, test "x$enable_libglvnd" = xyes)
1340 if test "x$enable_libglvnd" = xyes ; then
1341     dnl XXX: update once we can handle more than libGL/glx.
1342     dnl Namely: we should error out if neither of the glvnd enabled libraries
1343     dnl are built
1344     case "x$enable_glx" in
1345     xno)
1346         AC_MSG_ERROR([cannot build libglvnd without GLX])
1347         ;;
1348     xxlib | xgallium-xlib )
1349         AC_MSG_ERROR([cannot build libgvnd when Xlib-GLX or Gallium-Xlib-GLX is enabled])
1350         ;;
1351     xdri)
1352         ;;
1353     esac
1354
1355     PKG_CHECK_MODULES([GLVND], libglvnd >= 0.1.0)
1356     DEFINES="${DEFINES} -DUSE_LIBGLVND_GLX=1"
1357     DEFAULT_GL_LIB_NAME=GLX_mesa
1358 fi
1359
1360 # Check for libdrm
1361 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
1362                   [have_libdrm=yes], [have_libdrm=no])
1363 if test "x$have_libdrm" = xyes; then
1364         DEFINES="$DEFINES -DHAVE_LIBDRM"
1365 fi
1366
1367 require_libdrm() {
1368     if test "x$have_libdrm" != xyes; then
1369        AC_MSG_ERROR([$1 requires libdrm >= $LIBDRM_REQUIRED])
1370     fi
1371 }
1372
1373
1374 # Select which platform-dependent DRI code gets built
1375 case "$host_os" in
1376 darwin*)
1377     dri_platform='apple' ;;
1378 cygwin*)
1379     dri_platform='windows' ;;
1380 gnu*)
1381     dri_platform='none' ;;
1382 *)
1383     dri_platform='drm' ;;
1384 esac
1385
1386 if test "x$enable_dri" = xyes -a "x$dri_platform" = xdrm -a "x$have_libdrm" = xyes; then
1387     have_drisw_kms='yes'
1388 fi
1389
1390 AM_CONDITIONAL(HAVE_DRICOMMON, test "x$enable_dri" = xyes )
1391 AM_CONDITIONAL(HAVE_DRISW, test "x$enable_dri" = xyes )
1392 AM_CONDITIONAL(HAVE_DRISW_KMS, test "x$have_drisw_kms" = xyes )
1393 AM_CONDITIONAL(HAVE_DRI2, test "x$enable_dri" = xyes -a "x$dri_platform" = xdrm -a "x$have_libdrm" = xyes )
1394 AM_CONDITIONAL(HAVE_DRI3, test "x$enable_dri3" = xyes -a "x$dri_platform" = xdrm -a "x$have_libdrm" = xyes )
1395 AM_CONDITIONAL(HAVE_APPLEDRI, test "x$enable_dri" = xyes -a "x$dri_platform" = xapple )
1396 AM_CONDITIONAL(HAVE_LMSENSORS, test "x$enable_lmsensors" = xyes )
1397 AM_CONDITIONAL(HAVE_GALLIUM_EXTRA_HUD, test "x$enable_gallium_extra_hud" = xyes )
1398 AM_CONDITIONAL(HAVE_WINDOWSDRI, test "x$enable_dri" = xyes -a "x$dri_platform" = xwindows )
1399
1400 AC_ARG_ENABLE([shared-glapi],
1401     [AS_HELP_STRING([--enable-shared-glapi],
1402         [Enable shared glapi for OpenGL @<:@default=enabled@:>@])],
1403     [enable_shared_glapi="$enableval"],
1404     [enable_shared_glapi=yes])
1405
1406 case "x$enable_opengl$enable_gles1$enable_gles2" in
1407 x*yes*yes*)
1408     if test "x$enable_shared_glapi" = xno; then
1409         AC_MSG_ERROR([shared GLAPI required when building two or more of
1410                       the following APIs - opengl, gles1 gles2])
1411     fi
1412     ;;
1413 esac
1414
1415 AM_CONDITIONAL(HAVE_SHARED_GLAPI, test "x$enable_shared_glapi" = xyes)
1416
1417 # Build the pipe-drivers as separate libraries/modules.
1418 # Do not touch this unless you know what you are doing.
1419 # XXX: Expose via configure option ?
1420 enable_shared_pipe_drivers=no
1421
1422 dnl
1423 dnl Driver specific build directories
1424 dnl
1425
1426 if test "x$enable_gallium_osmesa" = xyes; then
1427     if ! echo "$with_gallium_drivers" | grep -q 'swrast'; then
1428         AC_MSG_ERROR([gallium_osmesa requires the gallium swrast driver])
1429     fi
1430     if test "x$enable_osmesa" = xyes; then
1431         AC_MSG_ERROR([Cannot enable both classic and Gallium OSMesa implementations])
1432     fi
1433 fi
1434
1435 # SHA1 hashing
1436 AC_ARG_WITH([sha1],
1437         [AS_HELP_STRING([--with-sha1=libc|libmd|libnettle|libgcrypt|libcrypto|libsha1|CommonCrypto|CryptoAPI],
1438         [choose SHA1 implementation])])
1439 case "x$with_sha1" in
1440 x | xlibc | xlibmd | xlibnettle | xlibgcrypt | xlibcrypto | xlibsha1 | xCommonCrypto | xCryptoAPI)
1441   ;;
1442 *)
1443         AC_MSG_ERROR([Illegal value for --with-sha1: $with_sha1])
1444 esac
1445
1446 AC_CHECK_FUNC([SHA1Init], [HAVE_SHA1_IN_LIBC=yes])
1447 if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_LIBC" = xyes; then
1448         with_sha1=libc
1449 fi
1450 if test "x$with_sha1" = xlibc && test "x$HAVE_SHA1_IN_LIBC" != xyes; then
1451         AC_MSG_ERROR([sha1 in libc requested but not found])
1452 fi
1453 if test "x$with_sha1" = xlibc; then
1454         AC_DEFINE([HAVE_SHA1_IN_LIBC], [1],
1455                 [Use libc SHA1 functions])
1456         SHA1_LIBS=""
1457 fi
1458 AC_CHECK_FUNC([CC_SHA1_Init], [HAVE_SHA1_IN_COMMONCRYPTO=yes])
1459 if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_COMMONCRYPTO" = xyes; then
1460         with_sha1=CommonCrypto
1461 fi
1462 if test "x$with_sha1" = xCommonCrypto && test "x$HAVE_SHA1_IN_COMMONCRYPTO" != xyes; then
1463         AC_MSG_ERROR([CommonCrypto requested but not found])
1464 fi
1465 if test "x$with_sha1" = xCommonCrypto; then
1466         AC_DEFINE([HAVE_SHA1_IN_COMMONCRYPTO], [1],
1467                 [Use CommonCrypto SHA1 functions])
1468         SHA1_LIBS=""
1469 fi
1470 dnl stdcall functions cannot be tested with AC_CHECK_LIB
1471 AC_CHECK_HEADER([wincrypt.h], [HAVE_SHA1_IN_CRYPTOAPI=yes], [], [#include <windows.h>])
1472 if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_CRYPTOAPI" = xyes; then
1473         with_sha1=CryptoAPI
1474 fi
1475 if test "x$with_sha1" = xCryptoAPI && test "x$HAVE_SHA1_IN_CRYPTOAPI" != xyes; then
1476         AC_MSG_ERROR([CryptoAPI requested but not found])
1477 fi
1478 if test "x$with_sha1" = xCryptoAPI; then
1479         AC_DEFINE([HAVE_SHA1_IN_CRYPTOAPI], [1],
1480                 [Use CryptoAPI SHA1 functions])
1481         SHA1_LIBS=""
1482 fi
1483 AC_CHECK_LIB([md], [SHA1Init], [HAVE_LIBMD=yes])
1484 if test "x$with_sha1" = x && test "x$HAVE_LIBMD" = xyes; then
1485         with_sha1=libmd
1486 fi
1487 if test "x$with_sha1" = xlibmd && test "x$HAVE_LIBMD" != xyes; then
1488         AC_MSG_ERROR([libmd requested but not found])
1489 fi
1490 if test "x$with_sha1" = xlibmd; then
1491         AC_DEFINE([HAVE_SHA1_IN_LIBMD], [1],
1492                   [Use libmd SHA1 functions])
1493         SHA1_LIBS=-lmd
1494 fi
1495 PKG_CHECK_MODULES([LIBSHA1], [libsha1], [HAVE_LIBSHA1=yes], [HAVE_LIBSHA1=no])
1496 if test "x$with_sha1" = x && test "x$HAVE_LIBSHA1" = xyes; then
1497    with_sha1=libsha1
1498 fi
1499 if test "x$with_sha1" = xlibsha1 && test "x$HAVE_LIBSHA1" != xyes; then
1500         AC_MSG_ERROR([libsha1 requested but not found])
1501 fi
1502 if test "x$with_sha1" = xlibsha1; then
1503         AC_DEFINE([HAVE_SHA1_IN_LIBSHA1], [1],
1504                   [Use libsha1 for SHA1])
1505         SHA1_LIBS=-lsha1
1506 fi
1507 AC_CHECK_LIB([nettle], [nettle_sha1_init], [HAVE_LIBNETTLE=yes])
1508 if test "x$with_sha1" = x && test "x$HAVE_LIBNETTLE" = xyes; then
1509         with_sha1=libnettle
1510 fi
1511 if test "x$with_sha1" = xlibnettle && test "x$HAVE_LIBNETTLE" != xyes; then
1512         AC_MSG_ERROR([libnettle requested but not found])
1513 fi
1514 if test "x$with_sha1" = xlibnettle; then
1515         AC_DEFINE([HAVE_SHA1_IN_LIBNETTLE], [1],
1516                   [Use libnettle SHA1 functions])
1517         SHA1_LIBS=-lnettle
1518 fi
1519 AC_CHECK_LIB([gcrypt], [gcry_md_open], [HAVE_LIBGCRYPT=yes])
1520 if test "x$with_sha1" = x && test "x$HAVE_LIBGCRYPT" = xyes; then
1521         with_sha1=libgcrypt
1522 fi
1523 if test "x$with_sha1" = xlibgcrypt && test "x$HAVE_LIBGCRYPT" != xyes; then
1524         AC_MSG_ERROR([libgcrypt requested but not found])
1525 fi
1526 if test "x$with_sha1" = xlibgcrypt; then
1527         AC_DEFINE([HAVE_SHA1_IN_LIBGCRYPT], [1],
1528                   [Use libgcrypt SHA1 functions])
1529         SHA1_LIBS=-lgcrypt
1530 fi
1531 # We don't need all of the OpenSSL libraries, just libcrypto
1532 AC_CHECK_LIB([crypto], [SHA1_Init], [HAVE_LIBCRYPTO=yes])
1533 PKG_CHECK_MODULES([OPENSSL], [openssl], [HAVE_OPENSSL_PKC=yes],
1534                   [HAVE_OPENSSL_PKC=no])
1535 if test "x$HAVE_LIBCRYPTO" = xyes || test "x$HAVE_OPENSSL_PKC" = xyes; then
1536         if test "x$with_sha1" = x; then
1537                 with_sha1=libcrypto
1538         fi
1539 else
1540         if test "x$with_sha1" = xlibcrypto; then
1541                 AC_MSG_ERROR([OpenSSL libcrypto requested but not found])
1542         fi
1543 fi
1544 if test "x$with_sha1" = xlibcrypto; then
1545         if test "x$HAVE_LIBCRYPTO" = xyes; then
1546                 SHA1_LIBS=-lcrypto
1547         else
1548                 SHA1_LIBS="$OPENSSL_LIBS"
1549                 SHA1_CFLAGS="$OPENSSL_CFLAGS"
1550         fi
1551 fi
1552 AC_MSG_CHECKING([for SHA1 implementation])
1553 AC_MSG_RESULT([$with_sha1])
1554 AC_SUBST(SHA1_LIBS)
1555 AC_SUBST(SHA1_CFLAGS)
1556
1557 # Enable a define for SHA1
1558 if test "x$with_sha1" != "x"; then
1559         DEFINES="$DEFINES -DHAVE_SHA1"
1560 fi
1561
1562 # Allow user to configure out the shader-cache feature
1563 AC_ARG_ENABLE([shader-cache],
1564     AS_HELP_STRING([--disable-shader-cache], [Disable binary shader cache]),
1565     [enable_shader_cache="$enableval"],
1566     [if test "x$with_sha1" != "x"; then
1567         enable_shader_cache=yes
1568      else
1569         enable_shader_cache=no
1570      fi])
1571 if test "x$with_sha1" = "x"; then
1572     if test "x$enable_shader_cache" = "xyes"; then
1573         AC_MSG_ERROR([Cannot enable shader cache (no SHA-1 implementation found)])
1574     fi
1575 fi
1576 if test "x$enable_shader_cache" = "xyes"; then
1577    AC_DEFINE([ENABLE_SHADER_CACHE], [1], [Enable shader cache])
1578 fi
1579
1580 if test "x$enable_dri" = xyes; then
1581     if test "$enable_static" = yes; then
1582         AC_MSG_ERROR([Cannot use static libraries for DRI drivers])
1583     fi
1584
1585     # not a hard requirement as swrast does not depend on it
1586     if test "x$have_libdrm" = xyes; then
1587         DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
1588     fi
1589 fi
1590
1591 AC_ARG_ENABLE([driglx-direct],
1592     [AS_HELP_STRING([--disable-driglx-direct],
1593         [disable direct rendering in GLX and EGL for DRI \
1594             @<:@default=auto@:>@])],
1595     [driglx_direct="$enableval"],
1596     [driglx_direct="yes"])
1597
1598 dnl
1599 dnl libGL configuration per driver
1600 dnl
1601 if test "x$enable_glx" != xno; then
1602     PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
1603 fi
1604 case "x$enable_glx" in
1605 xxlib | xgallium-xlib)
1606     # Xlib-based GLX
1607     dri_modules="x11 xext xcb"
1608     PKG_CHECK_MODULES([XLIBGL], [$dri_modules])
1609     GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
1610     X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
1611     GL_LIB_DEPS="$XLIBGL_LIBS"
1612     GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1613     GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm $PTHREAD_LIBS"
1614     ;;
1615 xdri)
1616     # DRI-based GLX
1617
1618     # find the DRI deps for libGL
1619     dri_modules="x11 xext xdamage xfixes x11-xcb xcb xcb-glx >= $XCBGLX_REQUIRED"
1620
1621     if test x"$driglx_direct" = xyes; then
1622         if test x"$dri_platform" = xdrm ; then
1623             DEFINES="$DEFINES -DGLX_USE_DRM"
1624             require_libdrm "Direct rendering"
1625
1626             PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
1627             GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED"
1628             if test x"$enable_dri3" = xyes; then
1629                PKG_CHECK_MODULES([DRI3PROTO], [dri3proto >= $DRI3PROTO_REQUIRED])
1630                PKG_CHECK_MODULES([PRESENTPROTO], [presentproto >= $PRESENTPROTO_REQUIRED])
1631             fi
1632
1633             if test x"$enable_dri" = xyes; then
1634                dri_modules="$dri_modules xcb-dri2 >= $XCBDRI2_REQUIRED"
1635             fi
1636
1637             if test x"$enable_dri3" = xyes; then
1638                PKG_CHECK_EXISTS([xcb >= $XCB_REQUIRED], [], AC_MSG_ERROR([DRI3 requires xcb >= $XCB_REQUIRED]))
1639                dri3_modules="xcb xcb-dri3 xcb-present xcb-sync xshmfence >= $XSHMFENCE_REQUIRED"
1640                PKG_CHECK_MODULES([XCB_DRI3], [$dri3_modules])
1641             fi
1642         fi
1643         if test x"$dri_platform" = xapple ; then
1644             DEFINES="$DEFINES -DGLX_USE_APPLEGL"
1645         fi
1646         if test x"$dri_platform" = xwindows ; then
1647             DEFINES="$DEFINES -DGLX_USE_WINDOWSGL"
1648         fi
1649     fi
1650
1651     # add xf86vidmode if available
1652     PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
1653     if test "$HAVE_XF86VIDMODE" = yes ; then
1654         dri_modules="$dri_modules xxf86vm"
1655     fi
1656
1657     PKG_CHECK_MODULES([DRIGL], [$dri_modules])
1658     GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
1659     X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
1660     GL_LIB_DEPS="$DRIGL_LIBS"
1661
1662     # need DRM libs, $PTHREAD_LIBS, etc.
1663     GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1664     GL_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
1665     ;;
1666 esac
1667
1668 # This is outside the case (above) so that it is invoked even for non-GLX
1669 # builds.
1670 AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
1671
1672 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1673 GLESv1_CM_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
1674 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1675 GLESv2_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
1676
1677 AC_SUBST([X11_INCLUDES])
1678 AC_SUBST([GL_LIB_DEPS])
1679 AC_SUBST([GL_PC_REQ_PRIV])
1680 AC_SUBST([GL_PC_LIB_PRIV])
1681 AC_SUBST([GL_PC_CFLAGS])
1682 AC_SUBST([DRI_PC_REQ_PRIV])
1683 AC_SUBST([GLESv1_CM_LIB_DEPS])
1684 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
1685 AC_SUBST([GLESv2_LIB_DEPS])
1686 AC_SUBST([GLESv2_PC_LIB_PRIV])
1687
1688 AC_SUBST([HAVE_XF86VIDMODE])
1689
1690 dnl
1691 dnl More GLX setup
1692 dnl
1693 case "x$enable_glx" in
1694 xxlib | xgallium-xlib)
1695     DEFINES="$DEFINES -DUSE_XSHM"
1696     ;;
1697 xdri)
1698     DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1699     if test "x$driglx_direct" = xyes; then
1700         DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1701     fi
1702     ;;
1703 esac
1704
1705 dnl
1706 dnl TLS detection
1707 dnl
1708
1709 AC_ARG_ENABLE([glx-tls],
1710     [AS_HELP_STRING([--enable-glx-tls],
1711         [enable TLS support in GLX @<:@default=enabled@:>@])],
1712     [GLX_USE_TLS="$enableval"],
1713     [GLX_USE_TLS=yes])
1714 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
1715
1716 if test "x$GLX_USE_TLS" = xyes; then
1717     DEFINES="$DEFINES -DGLX_USE_TLS"
1718 fi
1719
1720 dnl Read-only text section on x86 hardened platforms
1721 AC_ARG_ENABLE([glx-read-only-text],
1722     [AS_HELP_STRING([--enable-glx-read-only-text],
1723         [Disable writable .text section on x86 (decreases performance) @<:@default=disabled@:>@])],
1724     [enable_glx_read_only_text="$enableval"],
1725     [enable_glx_read_only_text=no])
1726 if test "x$enable_glx_read_only_text" = xyes; then
1727     DEFINES="$DEFINES -DGLX_X86_READONLY_TEXT"
1728 fi
1729
1730 dnl
1731 dnl More DRI setup
1732 dnl
1733 dnl Directory for DRI drivers
1734 AC_ARG_WITH([dri-driverdir],
1735     [AS_HELP_STRING([--with-dri-driverdir=DIR],
1736         [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
1737     [DRI_DRIVER_INSTALL_DIR="$withval"],
1738     [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
1739 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
1740 dnl Extra search path for DRI drivers
1741 AC_ARG_WITH([dri-searchpath],
1742     [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
1743         [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
1744     [DRI_DRIVER_SEARCH_DIR="$withval"],
1745     [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
1746 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
1747 dnl Which drivers to build - default is chosen by platform
1748 AC_ARG_WITH([dri-drivers],
1749     [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
1750         [comma delimited classic DRI drivers list, e.g.
1751         "swrast,i965,radeon" @<:@default=auto@:>@])],
1752     [with_dri_drivers="$withval"],
1753     [with_dri_drivers=auto])
1754
1755 if test "x$with_dri_drivers" = xauto; then
1756     if test "x$enable_opengl" = xyes -a "x$enable_dri" = xyes; then
1757         with_dri_drivers="yes"
1758     else
1759         with_dri_drivers="no"
1760     fi
1761 fi
1762 if test "x$with_dri_drivers" = xno; then
1763     with_dri_drivers=''
1764 fi
1765
1766 dnl If $with_dri_drivers is yes, drivers will be added through
1767 dnl platform checks. Set DEFINES and LIB_DEPS
1768 if test "x$enable_dri" = xyes; then
1769     # Platform specific settings and drivers to build
1770     case "$host_os" in
1771     linux*)
1772         DEFINES="$DEFINES -DHAVE_ALIAS"
1773         if test "x$enable_dri3" = xyes; then
1774             DEFINES="$DEFINES -DHAVE_DRI3"
1775         fi
1776
1777         case "$host_cpu" in
1778         powerpc* | sparc*)
1779             # Build only the drivers for cards that exist on PowerPC/sparc
1780             if test "x$with_dri_drivers" = "xyes"; then
1781                 with_dri_drivers="r200 radeon swrast"
1782             fi
1783             ;;
1784         esac
1785         ;;
1786     *freebsd* | dragonfly* | *netbsd* | openbsd*)
1787         DEFINES="$DEFINES -DHAVE_ALIAS"
1788         ;;
1789     gnu*)
1790         DEFINES="$DEFINES -DHAVE_ALIAS"
1791         ;;
1792     cygwin*)
1793         if test "x$with_dri_drivers" = "xyes"; then
1794             with_dri_drivers="swrast"
1795         fi
1796         ;;
1797     darwin*)
1798         DEFINES="$DEFINES -DGLX_ALIAS_UNSUPPORTED -DBUILDING_MESA"
1799         if test "x$with_dri_drivers" = "xyes"; then
1800             with_dri_drivers="swrast"
1801         fi
1802         ;;
1803     esac
1804
1805     # default drivers
1806     if test "x$with_dri_drivers" = "xyes"; then
1807         with_dri_drivers="i915 i965 nouveau r200 radeon swrast"
1808     fi
1809
1810     # Check for expat
1811     PKG_CHECK_MODULES([EXPAT], [expat], [],
1812         # expat version 2.0 and earlier do not provide expat.pc
1813         [AC_CHECK_HEADER([expat.h],[],
1814                          [AC_MSG_ERROR([Expat headers required for DRI not found])])
1815          AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1816                      [AC_MSG_ERROR([Expat library required for DRI not found])])
1817          EXPAT_LIBS="-lexpat"])
1818
1819     # put all the necessary libs together
1820     DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1821 fi
1822
1823 AC_SUBST([DRI_LIB_DEPS])
1824
1825 DRI_DIRS=''
1826 dnl Duplicates in DRI_DIRS are removed by sorting it at the end of this block
1827 if test -n "$with_dri_drivers"; then
1828     if test "x$enable_opengl" != xyes; then
1829         AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1830     fi
1831
1832     dri_drivers=`IFS=', '; echo $with_dri_drivers`
1833     for driver in $dri_drivers; do
1834         DRI_DIRS="$DRI_DIRS $driver"
1835         case "x$driver" in
1836         xi915)
1837             HAVE_I915_DRI=yes;
1838             PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1839             ;;
1840         xi965)
1841             HAVE_I965_DRI=yes;
1842             PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1843             ;;
1844         xnouveau)
1845             HAVE_NOUVEAU_DRI=yes;
1846             PKG_CHECK_MODULES([NVVIEUX], [libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED])
1847             ;;
1848         xradeon)
1849             HAVE_RADEON_DRI=yes;
1850             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1851             ;;
1852         xr200)
1853             HAVE_R200_DRI=yes;
1854             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1855             ;;
1856         xswrast)
1857             HAVE_SWRAST_DRI=yes;
1858             ;;
1859         *)
1860             AC_MSG_ERROR([classic DRI driver '$driver' does not exist])
1861             ;;
1862         esac
1863     done
1864     DRI_DIRS=`echo $DRI_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1865 fi
1866
1867
1868 #
1869 # Vulkan driver configuration
1870 #
1871
1872 AC_ARG_WITH([vulkan-drivers],
1873     [AS_HELP_STRING([--with-vulkan-drivers@<:@=DIRS...@:>@],
1874         [comma delimited Vulkan drivers list, e.g.
1875         "intel"
1876         @<:@default=no@:>@])],
1877     [with_vulkan_drivers="$withval"],
1878     [with_vulkan_drivers="no"])
1879
1880 # Doing '--without-vulkan-drivers' will set this variable to 'no'.  Clear it
1881 # here so that the script doesn't choke on an unknown driver name later.
1882 case "x$with_vulkan_drivers" in
1883     xyes) with_vulkan_drivers="$VULKAN_DRIVERS_DEFAULT" ;;
1884     xno) with_vulkan_drivers='' ;;
1885 esac
1886
1887 AC_ARG_WITH([vulkan-icddir],
1888     [AS_HELP_STRING([--with-vulkan-icddir=DIR],
1889         [directory for the Vulkan driver icd files @<:@${datarootdir}/vulkan/icd.d@:>@])],
1890     [VULKAN_ICD_INSTALL_DIR="$withval"],
1891     [VULKAN_ICD_INSTALL_DIR='${datarootdir}/vulkan/icd.d'])
1892 AC_SUBST([VULKAN_ICD_INSTALL_DIR])
1893
1894 if test -n "$with_vulkan_drivers"; then
1895     VULKAN_DRIVERS=`IFS=', '; echo $with_vulkan_drivers`
1896     for driver in $VULKAN_DRIVERS; do
1897         case "x$driver" in
1898         xintel)
1899             if test "x$HAVE_I965_DRI" != xyes; then
1900                 AC_MSG_ERROR([Intel Vulkan driver requires the i965 dri driver])
1901             fi
1902             if test "x$with_sha1" == "x"; then
1903                 AC_MSG_ERROR([Intel Vulkan driver requires SHA1])
1904             fi
1905             HAVE_INTEL_VULKAN=yes;
1906
1907             ;;
1908         xradeon)
1909             PKG_CHECK_MODULES([AMDGPU], [libdrm_amdgpu >= $LIBDRM_AMDGPU_REQUIRED])
1910             radeon_llvm_check $LLVM_REQUIRED_RADV "radv"
1911             HAVE_RADEON_VULKAN=yes;
1912             if test "x$with_sha1" == "x"; then
1913                 AC_MSG_ERROR([radv vulkan driver requires SHA1])
1914             fi
1915             ;;
1916         *)
1917             AC_MSG_ERROR([Vulkan driver '$driver' does not exist])
1918             ;;
1919         esac
1920     done
1921     VULKAN_DRIVERS=`echo $VULKAN_DRIVERS|tr " " "\n"|sort -u|tr "\n" " "`
1922 fi
1923
1924
1925 AM_CONDITIONAL(NEED_MEGADRIVER, test -n "$DRI_DIRS")
1926 AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_glx" = xxlib -o \
1927                                   "x$enable_osmesa" = xyes -o \
1928                                   -n "$DRI_DIRS")
1929
1930 dnl
1931 dnl OSMesa configuration
1932 dnl
1933
1934 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1935 AC_ARG_WITH([osmesa-bits],
1936     [AS_HELP_STRING([--with-osmesa-bits=BITS],
1937         [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1938     [osmesa_bits="$withval"],
1939     [osmesa_bits=8])
1940 if test "x$osmesa_bits" != x8; then
1941     if test "x$enable_dri" = xyes -o "x$enable_glx" != xno; then
1942         AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1943         osmesa_bits=8
1944     fi
1945 fi
1946 case "x$osmesa_bits" in
1947 x8)
1948     OSMESA_LIB="${OSMESA_LIB}"
1949     ;;
1950 x16|x32)
1951     OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
1952     DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1953     ;;
1954 *)
1955     AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1956     ;;
1957 esac
1958
1959 if test "x$enable_osmesa" = xyes -o "x$enable_gallium_osmesa" = xyes; then
1960     # only link libraries with osmesa if shared
1961     if test "$enable_static" = no; then
1962         OSMESA_LIB_DEPS="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1963     else
1964         OSMESA_LIB_DEPS=""
1965     fi
1966     OSMESA_PC_LIB_PRIV="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1967 fi
1968
1969 AC_SUBST([OSMESA_LIB_DEPS])
1970 AC_SUBST([OSMESA_PC_REQ])
1971 AC_SUBST([OSMESA_PC_LIB_PRIV])
1972
1973 dnl
1974 dnl gbm configuration
1975 dnl
1976 if test "x$enable_gbm" = xyes; then
1977     if test "x$enable_dri" = xyes; then
1978         if test "x$enable_shared_glapi" = xno; then
1979             AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1980         fi
1981     else
1982         # Strictly speaking libgbm does not require --enable-dri, although
1983         # both of its backends do. Thus one can build libgbm without any
1984         # backends if --disable-dri is set.
1985         # To avoid unnecessary complexity of checking if at least one backend
1986         # is available when building, just mandate --enable-dri.
1987         AC_MSG_ERROR([gbm requires --enable-dri])
1988     fi
1989 fi
1990 AM_CONDITIONAL(HAVE_GBM, test "x$enable_gbm" = xyes)
1991 # FINISHME: GBM has a number of dependencies which we should add below
1992 GBM_PC_REQ_PRIV=""
1993 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1994 AC_SUBST([GBM_PC_REQ_PRIV])
1995 AC_SUBST([GBM_PC_LIB_PRIV])
1996
1997 dnl
1998 dnl EGL configuration
1999 dnl
2000 EGL_CLIENT_APIS=""
2001
2002 if test "x$enable_egl" = xyes; then
2003     EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS $PTHREAD_LIBS"
2004
2005     AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
2006
2007     if test "$enable_static" != yes; then
2008         if test "x$enable_dri" = xyes; then
2009             HAVE_EGL_DRIVER_DRI2=1
2010             if test "x$enable_shared_glapi" = xno; then
2011                 AC_MSG_ERROR([egl_dri2 requires --enable-shared-glapi])
2012             fi
2013             if test "x$enable_dri3" = xyes; then
2014                 HAVE_EGL_DRIVER_DRI3=1
2015                 if test "x$enable_shared_glapi" = xno; then
2016                     AC_MSG_ERROR([egl_dri3 requires --enable-shared-glapi])
2017                 fi
2018             fi
2019         else
2020             # Avoid building an "empty" libEGL. Drop/update this
2021             # when other backends (haiku?) come along.
2022             AC_MSG_ERROR([egl requires --enable-dri])
2023         fi
2024
2025     fi
2026 fi
2027 AM_CONDITIONAL(HAVE_EGL, test "x$enable_egl" = xyes)
2028 AC_SUBST([EGL_LIB_DEPS])
2029
2030 gallium_st="mesa"
2031
2032 dnl
2033 dnl XA configuration
2034 dnl
2035 if test "x$enable_xa" = xyes; then
2036     if test "x$with_gallium_drivers" = xswrast; then
2037        AC_MSG_ERROR([
2038           Building xa requires at least one non swrast gallium driver.
2039           If you are looking to use libxatracker.so with the VMware driver,
2040           make sure to include svga in the gallium drivers list, apart from
2041           enabling XA.
2042           Example: ./configure --enable-xa --with-gallium-drivers=svga...])
2043     fi
2044     gallium_st="$gallium_st xa"
2045 fi
2046 AM_CONDITIONAL(HAVE_ST_XA, test "x$enable_xa" = xyes)
2047
2048 dnl
2049 dnl Gallium G3DVL configuration
2050 dnl
2051 if test -n "$with_gallium_drivers" -a "x$with_gallium_drivers" != xswrast; then
2052     if test "x$enable_xvmc" = xauto; then
2053         PKG_CHECK_EXISTS([xvmc >= $XVMC_REQUIRED], [enable_xvmc=yes], [enable_xvmc=no])
2054     fi
2055
2056     if test "x$enable_vdpau" = xauto; then
2057         PKG_CHECK_EXISTS([vdpau >= $VDPAU_REQUIRED], [enable_vdpau=yes], [enable_vdpau=no])
2058     fi
2059
2060     if test "x$enable_omx" = xauto; then
2061         PKG_CHECK_EXISTS([libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED], [enable_omx=yes], [enable_omx=no])
2062     fi
2063
2064     if test "x$enable_va" = xauto; then
2065         PKG_CHECK_EXISTS([libva >= $LIBVA_REQUIRED], [enable_va=yes], [enable_va=no])
2066     fi
2067 fi
2068
2069 if test "x$enable_dri" = xyes -o \
2070         "x$enable_xvmc" = xyes -o \
2071         "x$enable_vdpau" = xyes -o \
2072         "x$enable_omx" = xyes -o \
2073         "x$enable_va" = xyes; then
2074     need_gallium_vl=yes
2075 fi
2076 AM_CONDITIONAL(NEED_GALLIUM_VL, test "x$need_gallium_vl" = xyes)
2077
2078 if test "x$enable_xvmc" = xyes -o \
2079         "x$enable_vdpau" = xyes -o \
2080         "x$enable_omx" = xyes -o \
2081         "x$enable_va" = xyes; then
2082     if test x"$enable_dri3" = xyes; then
2083         PKG_CHECK_MODULES([VL], [xcb-dri3 xcb-present xcb-sync xshmfence >= $XSHMFENCE_REQUIRED
2084                                  x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
2085     else
2086         PKG_CHECK_MODULES([VL], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
2087     fi
2088     need_gallium_vl_winsys=yes
2089 fi
2090 AM_CONDITIONAL(NEED_GALLIUM_VL_WINSYS, test "x$need_gallium_vl_winsys" = xyes)
2091
2092 if test "x$enable_xvmc" = xyes; then
2093     PKG_CHECK_MODULES([XVMC], [xvmc >= $XVMC_REQUIRED])
2094     gallium_st="$gallium_st xvmc"
2095 fi
2096 AM_CONDITIONAL(HAVE_ST_XVMC, test "x$enable_xvmc" = xyes)
2097
2098 if test "x$enable_vdpau" = xyes; then
2099     PKG_CHECK_MODULES([VDPAU], [vdpau >= $VDPAU_REQUIRED])
2100     gallium_st="$gallium_st vdpau"
2101     DEFINES="$DEFINES -DHAVE_ST_VDPAU"
2102 fi
2103 AM_CONDITIONAL(HAVE_ST_VDPAU, test "x$enable_vdpau" = xyes)
2104
2105 if test "x$enable_omx" = xyes; then
2106     PKG_CHECK_MODULES([OMX], [libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED])
2107     gallium_st="$gallium_st omx"
2108 fi
2109 AM_CONDITIONAL(HAVE_ST_OMX, test "x$enable_omx" = xyes)
2110
2111 if test "x$enable_va" = xyes; then
2112     PKG_CHECK_MODULES([VA], [libva >= $LIBVA_REQUIRED])
2113     gallium_st="$gallium_st va"
2114 fi
2115 AM_CONDITIONAL(HAVE_ST_VA, test "x$enable_va" = xyes)
2116
2117 dnl
2118 dnl Nine Direct3D9 configuration
2119 dnl
2120 if test "x$enable_nine" = xyes; then
2121     if ! echo "$with_gallium_drivers" | grep -q 'swrast'; then
2122         AC_MSG_ERROR([nine requires the gallium swrast driver])
2123     fi
2124     if test "x$with_gallium_drivers" = xswrast; then
2125         AC_MSG_ERROR([nine requires at least one non-swrast gallium driver])
2126     fi
2127     if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6; then
2128         AC_MSG_ERROR([gcc >= 4.6 is required to build nine])
2129     fi
2130
2131     if test "x$enable_dri3" = xno; then
2132         AC_MSG_WARN([using nine together with wine requires DRI3 enabled system])
2133     fi
2134
2135     gallium_st="$gallium_st nine"
2136 fi
2137 AM_CONDITIONAL(HAVE_ST_NINE, test "x$enable_nine" = xyes)
2138
2139 dnl
2140 dnl OpenCL configuration
2141 dnl
2142
2143 AC_ARG_WITH([clang-libdir],
2144    [AS_HELP_STRING([--with-clang-libdir],
2145          [Path to Clang libraries @<:@default=llvm-config --libdir@:>@])],
2146    [CLANG_LIBDIR="$withval"],
2147    [CLANG_LIBDIR=''])
2148
2149 PKG_CHECK_EXISTS([libclc], [have_libclc=yes], [have_libclc=no])
2150
2151 if test "x$enable_opencl" = xyes; then
2152     if test -z "$with_gallium_drivers"; then
2153         AC_MSG_ERROR([cannot enable OpenCL without Gallium])
2154     fi
2155
2156     if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 7; then
2157         AC_MSG_ERROR([gcc >= 4.7 is required to build clover])
2158     fi
2159
2160     if test "x$have_libclc" = xno; then
2161         AC_MSG_ERROR([pkg-config cannot find libclc.pc which is required to build clover.
2162                     Make sure the directory containing libclc.pc is specified in your
2163                     PKG_CONFIG_PATH environment variable.
2164                     By default libclc.pc is installed to /usr/local/share/pkgconfig/])
2165     else
2166         LIBCLC_INCLUDEDIR=`$PKG_CONFIG --variable=includedir libclc`
2167         LIBCLC_LIBEXECDIR=`$PKG_CONFIG --variable=libexecdir libclc`
2168         AC_SUBST([LIBCLC_INCLUDEDIR])
2169         AC_SUBST([LIBCLC_LIBEXECDIR])
2170     fi
2171
2172     gallium_st="$gallium_st clover"
2173
2174     if test "x$enable_opencl_icd" = xyes; then
2175         OPENCL_LIBNAME="MesaOpenCL"
2176     else
2177         OPENCL_LIBNAME="OpenCL"
2178     fi
2179
2180     if test "x$have_libelf" != xyes; then
2181        AC_MSG_ERROR([Clover requires libelf])
2182     fi
2183
2184     llvm_check_version_for $LLVM_REQUIRED_OPENCL "opencl"
2185
2186     llvm_add_default_components "opencl"
2187     llvm_add_component "all-targets" "opencl"
2188     llvm_add_component "linker" "opencl"
2189     llvm_add_component "instrumentation" "opencl"
2190     llvm_add_component "ipo" "opencl"
2191     llvm_add_component "irreader" "opencl"
2192     llvm_add_component "option" "opencl"
2193     llvm_add_component "objcarcopts" "opencl"
2194     llvm_add_component "profiledata" "opencl"
2195
2196     dnl Check for Clang internal headers
2197     if test -z "$CLANG_LIBDIR"; then
2198         CLANG_LIBDIR=${LLVM_LIBDIR}
2199     fi
2200     CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION}
2201     AS_IF([test ! -f "$CLANG_RESOURCE_DIR/include/stddef.h"],
2202         [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.])])
2203 fi
2204 AM_CONDITIONAL(HAVE_CLOVER, test "x$enable_opencl" = xyes)
2205 AM_CONDITIONAL(HAVE_CLOVER_ICD, test "x$enable_opencl_icd" = xyes)
2206 AC_SUBST([OPENCL_LIBNAME])
2207 AC_SUBST([CLANG_RESOURCE_DIR])
2208
2209 dnl
2210 dnl Gallium configuration
2211 dnl
2212 AM_CONDITIONAL(HAVE_GALLIUM, test -n "$with_gallium_drivers")
2213
2214 case "x$enable_opengl$enable_gles1$enable_gles2" in
2215 x*yes*)
2216     EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
2217     ;;
2218 esac
2219
2220 AC_SUBST([VG_LIB_DEPS])
2221 AC_SUBST([EGL_CLIENT_APIS])
2222
2223 dnl
2224 dnl EGL Platforms configuration
2225 dnl
2226 AC_ARG_WITH([egl-platforms],
2227     [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
2228         [comma delimited native platforms libEGL supports, e.g.
2229         "x11,drm" @<:@default=auto@:>@])],
2230     [with_egl_platforms="$withval"],
2231     [if test "x$enable_egl" = xyes; then
2232         if test "x$enable_gbm" = xyes; then
2233            with_egl_platforms="x11,drm"
2234         else
2235            with_egl_platforms="x11"
2236         fi
2237     else
2238         with_egl_platforms=""
2239     fi])
2240
2241 if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
2242     AC_MSG_ERROR([cannot build egl state tracker without EGL library])
2243 fi
2244
2245 PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner],
2246         WAYLAND_SCANNER=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner`,
2247         WAYLAND_SCANNER='')
2248 if test "x$WAYLAND_SCANNER" = x; then
2249     AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner])
2250 fi
2251
2252 # Do per-EGL platform setups and checks
2253 egl_platforms=`IFS=', '; echo $with_egl_platforms`
2254 for plat in $egl_platforms; do
2255         case "$plat" in
2256         wayland)
2257
2258                 PKG_CHECK_MODULES([WAYLAND], [wayland-client >= $WAYLAND_REQUIRED wayland-server >= $WAYLAND_REQUIRED])
2259
2260                 if test "x$WAYLAND_SCANNER" = x; then
2261                         AC_MSG_ERROR([wayland-scanner is needed to compile the wayland egl platform])
2262                 fi
2263                 ;;
2264
2265         x11)
2266                 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED xcb-xfixes])
2267                 ;;
2268
2269         drm)
2270                 test "x$enable_gbm" = "xno" &&
2271                         AC_MSG_ERROR([EGL platform drm needs gbm])
2272                 ;;
2273
2274         surfaceless)
2275                 ;;
2276
2277         android)
2278                 PKG_CHECK_MODULES([ANDROID], [cutils hardware sync])
2279                 ;;
2280
2281         *)
2282                 AC_MSG_ERROR([EGL platform '$plat' does not exist])
2283                 ;;
2284         esac
2285
2286         case "$plat" in
2287         wayland|drm|surfaceless)
2288                 require_libdrm "Platform $plat"
2289                 ;;
2290         esac
2291 done
2292
2293 # libEGL wants to default to the first platform specified in
2294 # ./configure.  parse that here.
2295 if test "x$egl_platforms" != "x"; then
2296     FIRST_PLATFORM_CAPS=`echo $egl_platforms | sed 's| .*||' | tr '[[a-z]]' '[[A-Z]]'`
2297     EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
2298 else
2299     EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
2300 fi
2301
2302 AM_CONDITIONAL(HAVE_PLATFORM_X11, echo "$egl_platforms" | grep -q 'x11')
2303 AM_CONDITIONAL(HAVE_PLATFORM_WAYLAND, echo "$egl_platforms" | grep -q 'wayland')
2304 AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep -q 'drm')
2305 AM_CONDITIONAL(HAVE_EGL_PLATFORM_SURFACELESS, echo "$egl_platforms" | grep -q 'surfaceless')
2306 AM_CONDITIONAL(HAVE_EGL_PLATFORM_ANDROID, echo "$egl_platforms" | grep -q 'android')
2307
2308 AM_CONDITIONAL(HAVE_EGL_DRIVER_DRI2, test "x$HAVE_EGL_DRIVER_DRI2" != "x")
2309
2310 AC_SUBST([EGL_NATIVE_PLATFORM])
2311 AC_SUBST([EGL_CFLAGS])
2312
2313 # If we don't have the X11 platform, set this define so we don't try to include
2314 # the X11 headers.
2315 if ! echo "$egl_platforms" | grep -q 'x11'; then
2316     DEFINES="$DEFINES -DMESA_EGL_NO_X11_HEADERS"
2317     GL_PC_CFLAGS="$GL_PC_CFLAGS -DMESA_EGL_NO_X11_HEADERS"
2318 fi
2319
2320 dnl
2321 dnl Gallium LLVM
2322 dnl
2323 AC_ARG_ENABLE([gallium-llvm],
2324     [AS_HELP_STRING([--enable-gallium-llvm],
2325         [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
2326     [enable_gallium_llvm="$enableval"],
2327     [enable_gallium_llvm=auto])
2328
2329 if test -z "$with_gallium_drivers"; then
2330     enable_gallium_llvm=no
2331 fi
2332 if test "x$enable_gallium_llvm" = xauto; then
2333     case "$host_cpu" in
2334     i*86|x86_64|amd64) enable_gallium_llvm=yes;;
2335     esac
2336 fi
2337
2338 dnl Directory for XVMC libs
2339 AC_ARG_WITH([xvmc-libdir],
2340     [AS_HELP_STRING([--with-xvmc-libdir=DIR],
2341         [directory for the XVMC libraries @<:@default=${libdir}@:>@])],
2342     [XVMC_LIB_INSTALL_DIR="$withval"],
2343     [XVMC_LIB_INSTALL_DIR='${libdir}'])
2344 AC_SUBST([XVMC_LIB_INSTALL_DIR])
2345
2346 dnl
2347 dnl Gallium Tests
2348 dnl
2349 AM_CONDITIONAL(HAVE_GALLIUM_TESTS, test "x$enable_gallium_tests" = xyes)
2350
2351 dnl Directory for VDPAU libs
2352 AC_ARG_WITH([vdpau-libdir],
2353     [AS_HELP_STRING([--with-vdpau-libdir=DIR],
2354         [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
2355     [VDPAU_LIB_INSTALL_DIR="$withval"],
2356     [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
2357 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
2358
2359 dnl Directory for OMX libs
2360
2361 AC_ARG_WITH([omx-libdir],
2362     [AS_HELP_STRING([--with-omx-libdir=DIR],
2363         [directory for the OMX libraries])],
2364     [OMX_LIB_INSTALL_DIR="$withval"],
2365     [OMX_LIB_INSTALL_DIR=`$PKG_CONFIG --define-variable=libdir=\$libdir --variable=pluginsdir libomxil-bellagio`])
2366 AC_SUBST([OMX_LIB_INSTALL_DIR])
2367
2368 dnl Directory for VA libs
2369
2370 AC_ARG_WITH([va-libdir],
2371     [AS_HELP_STRING([--with-va-libdir=DIR],
2372         [directory for the VA libraries @<:@${libdir}/dri@:>@])],
2373     [VA_LIB_INSTALL_DIR="$withval"],
2374     [VA_LIB_INSTALL_DIR="${libdir}/dri"])
2375 AC_SUBST([VA_LIB_INSTALL_DIR])
2376
2377 AC_ARG_WITH([d3d-libdir],
2378     [AS_HELP_STRING([--with-d3d-libdir=DIR],
2379         [directory for the D3D modules @<:@${libdir}/d3d@:>@])],
2380     [D3D_DRIVER_INSTALL_DIR="$withval"],
2381     [D3D_DRIVER_INSTALL_DIR="${libdir}/d3d"])
2382 AC_SUBST([D3D_DRIVER_INSTALL_DIR])
2383
2384 dnl
2385 dnl Gallium helper functions
2386 dnl
2387 gallium_require_llvm() {
2388     if test "x$enable_gallium_llvm" = "xyes"; then
2389         llvm_check_version_for $LLVM_REQUIRED_GALLIUM "gallium"
2390     else
2391         AC_MSG_ERROR([--enable-gallium-llvm is required when building $1])
2392     fi
2393 }
2394
2395 dnl
2396 dnl DRM is needed by X, Wayland, and offscreen rendering.
2397 dnl Surfaceless is an alternative for the last one.
2398 dnl
2399 require_basic_egl() {
2400     case "$with_egl_platforms" in
2401         *drm*|*surfaceless*)
2402             ;;
2403         *)
2404             AC_MSG_ERROR([$1 requires one of these:
2405                   1) --with-egl-platforms=drm (X, Wayland, offscreen rendering based on DRM)
2406                   2) --with-egl-platforms=surfaceless (offscreen only)
2407                   Recommended options: drm,x11])
2408             ;;
2409     esac
2410 }
2411
2412 radeon_gallium_llvm_check() {
2413     if test "x$enable_gallium_llvm" != "xyes"; then
2414         AC_MSG_ERROR([--enable-gallium-llvm is required when building $2])
2415     fi
2416     radeon_llvm_check $*
2417 }
2418
2419 swr_require_cxx_feature_flags() {
2420     feature_name="$1"
2421     preprocessor_test="$2"
2422     option_list="$3"
2423     output_var="$4"
2424
2425     AC_MSG_CHECKING([whether $CXX supports $feature_name])
2426     AC_LANG_PUSH([C++])
2427     save_CXXFLAGS="$CXXFLAGS"
2428     save_IFS="$IFS"
2429     IFS=","
2430     found=0
2431     for opts in $option_list
2432     do
2433         unset IFS
2434         CXXFLAGS="$opts $save_CXXFLAGS"
2435         AC_COMPILE_IFELSE(
2436             [AC_LANG_PROGRAM(
2437                 [   #if !($preprocessor_test)
2438                     #error
2439                     #endif
2440                 ])],
2441             [found=1; break],
2442             [])
2443         IFS=","
2444     done
2445     IFS="$save_IFS"
2446     CXXFLAGS="$save_CXXFLAGS"
2447     AC_LANG_POP([C++])
2448     if test $found -eq 1; then
2449         AC_MSG_RESULT([$opts])
2450         eval "$output_var=\$opts"
2451         return 0
2452     fi
2453     AC_MSG_RESULT([no])
2454     AC_MSG_ERROR([swr requires $feature_name support])
2455     return 1
2456 }
2457
2458 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
2459 if test -n "$with_gallium_drivers"; then
2460     gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
2461     for driver in $gallium_drivers; do
2462         case "x$driver" in
2463         xsvga)
2464             HAVE_GALLIUM_SVGA=yes
2465             require_libdrm "svga"
2466             ;;
2467         xi915)
2468             HAVE_GALLIUM_I915=yes
2469             PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
2470             require_libdrm "Gallium i915"
2471             ;;
2472         xilo)
2473             HAVE_GALLIUM_ILO=yes
2474             PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
2475             require_libdrm "Gallium i965/ilo"
2476             ;;
2477         xr300)
2478             HAVE_GALLIUM_R300=yes
2479             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2480             require_libdrm "r300"
2481             gallium_require_llvm "r300"
2482             ;;
2483         xr600)
2484             HAVE_GALLIUM_R600=yes
2485             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2486             require_libdrm "r600"
2487             if test "x$enable_opencl" = xyes; then
2488                 radeon_gallium_llvm_check $LLVM_REQUIRED_R600 "r600"
2489
2490                 llvm_add_component "asmparser" "r600"
2491                 llvm_add_component "bitreader" "r600"
2492             fi
2493             ;;
2494         xradeonsi)
2495             HAVE_GALLIUM_RADEONSI=yes
2496             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2497             PKG_CHECK_MODULES([AMDGPU], [libdrm_amdgpu >= $LIBDRM_AMDGPU_REQUIRED])
2498             require_libdrm "radeonsi"
2499             radeon_gallium_llvm_check $LLVM_REQUIRED_RADEONSI "radeonsi"
2500             require_basic_egl "radeonsi"
2501             ;;
2502         xnouveau)
2503             HAVE_GALLIUM_NOUVEAU=yes
2504             PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
2505             require_libdrm "nouveau"
2506             ;;
2507         xfreedreno)
2508             HAVE_GALLIUM_FREEDRENO=yes
2509             PKG_CHECK_MODULES([FREEDRENO], [libdrm_freedreno >= $LIBDRM_FREEDRENO_REQUIRED])
2510             require_libdrm "freedreno"
2511             ;;
2512         xetnaviv)
2513             HAVE_GALLIUM_ETNAVIV=yes
2514             PKG_CHECK_MODULES([ETNAVIV], [libdrm_etnaviv >= $LIBDRM_ETNAVIV_REQUIRED])
2515             require_libdrm "etnaviv"
2516             ;;
2517        ximx)
2518             HAVE_GALLIUM_IMX=yes
2519             ;;
2520         xswrast)
2521             HAVE_GALLIUM_SOFTPIPE=yes
2522             if test "x$MESA_LLVM" = x1 && test "x$enable_gallium_llvm" == "xyes";  then
2523                 HAVE_GALLIUM_LLVMPIPE=yes
2524             fi
2525             ;;
2526         xswr)
2527             llvm_check_version_for $LLVM_REQUIRED_SWR "swr"
2528             gallium_require_llvm "swr"
2529
2530             swr_require_cxx_feature_flags "C++11" "__cplusplus >= 201103L" \
2531                 ",-std=c++11" \
2532                 SWR_CXX11_CXXFLAGS
2533             AC_SUBST([SWR_CXX11_CXXFLAGS])
2534
2535             swr_require_cxx_feature_flags "AVX" "defined(__AVX__)" \
2536                 ",-mavx,-march=core-avx" \
2537                 SWR_AVX_CXXFLAGS
2538             AC_SUBST([SWR_AVX_CXXFLAGS])
2539
2540             swr_require_cxx_feature_flags "AVX2" "defined(__AVX2__)" \
2541                 ",-mavx2 -mfma -mbmi2 -mf16c,-march=core-avx2" \
2542                 SWR_AVX2_CXXFLAGS
2543             AC_SUBST([SWR_AVX2_CXXFLAGS])
2544
2545             HAVE_GALLIUM_SWR=yes
2546             ;;
2547         xvc4)
2548             HAVE_GALLIUM_VC4=yes
2549             PKG_CHECK_MODULES([VC4], [libdrm_vc4 >= $LIBDRM_VC4_REQUIRED])
2550             require_libdrm "vc4"
2551
2552             PKG_CHECK_MODULES([SIMPENROSE], [simpenrose],
2553                               [USE_VC4_SIMULATOR=yes;
2554                                DEFINES="$DEFINES -DUSE_VC4_SIMULATOR"],
2555                               [USE_VC4_SIMULATOR=no])
2556             ;;
2557         xvirgl)
2558             HAVE_GALLIUM_VIRGL=yes
2559             require_libdrm "virgl"
2560             require_basic_egl "virgl"
2561             ;;
2562         *)
2563             AC_MSG_ERROR([Unknown Gallium driver: $driver])
2564             ;;
2565         esac
2566     done
2567 fi
2568
2569 if test "x$enable_gallium_llvm" == "xyes"; then
2570     llvm_check_version_for $LLVM_REQUIRED_GALLIUM "gallium"
2571     llvm_add_default_components "gallium"
2572 fi
2573
2574 dnl We need to validate some needed dependencies for renderonly drivers.
2575
2576 if test "x$HAVE_GALLIUM_ETNAVIV" != xyes -a "x$HAVE_GALLIUM_IMX" == xyes  ; then
2577     AC_ERROR([Building with imx requires etnaviv])
2578 fi
2579
2580 dnl Set LLVM_LIBS - This is done after the driver configuration so
2581 dnl that drivers can add additional components to LLVM_COMPONENTS.
2582 dnl Previously, gallium drivers were updating LLVM_LIBS directly
2583 dnl by calling llvm-config --libs ${DRIVER_LLVM_COMPONENTS}, but
2584 dnl this was causing the same libraries to be appear multiple times
2585 dnl in LLVM_LIBS.
2586
2587 if test "x$MESA_LLVM" != x0; then
2588
2589     if ! $LLVM_CONFIG --libs ${LLVM_COMPONENTS} >/dev/null; then
2590        AC_MSG_ERROR([Calling ${LLVM_CONFIG} failed])
2591     fi
2592     LLVM_LIBS="`$LLVM_CONFIG --libs ${LLVM_COMPONENTS}`"
2593
2594     dnl llvm-config may not give the right answer when llvm is a built as a
2595     dnl single shared library, so we must work the library name out for
2596     dnl ourselves.
2597     dnl (See https://llvm.org/bugs/show_bug.cgi?id=6823)
2598     if test "x$enable_llvm_shared_libs" = xyes; then
2599         dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
2600         LLVM_SO_NAME=LLVM-`$LLVM_CONFIG --version`
2601         AS_IF([test -f "$LLVM_LIBDIR/lib$LLVM_SO_NAME.$IMP_LIB_EXT"], [llvm_have_one_so=yes])
2602
2603         if test "x$llvm_have_one_so" = xyes; then
2604             dnl LLVM was built using auto*, so there is only one shared object.
2605             LLVM_LIBS="-l$LLVM_SO_NAME"
2606         else
2607             dnl If LLVM was built with CMake, there will be one shared object per
2608             dnl component.
2609             AS_IF([test ! -f "$LLVM_LIBDIR/libLLVMTarget.$IMP_LIB_EXT"],
2610                     [AC_MSG_ERROR([Could not find llvm shared libraries:
2611         Please make sure you have built llvm with the --enable-shared option
2612         and that your llvm libraries are installed in $LLVM_LIBDIR
2613         If you have installed your llvm libraries to a different directory you
2614         can use the --with-llvm-prefix= configure flag to specify this directory.
2615         NOTE: Mesa is attempting to use llvm shared libraries by default.
2616         If you do not want to build with llvm shared libraries and instead want to
2617         use llvm static libraries then add --disable-llvm-shared-libs to your configure
2618         invocation and rebuild.])])
2619
2620            dnl We don't need to update LLVM_LIBS in this case because the LLVM
2621            dnl install uses a shared object for each component and we have
2622            dnl already added all of these objects to LLVM_LIBS.
2623         fi
2624     else
2625         AC_MSG_WARN([Building mesa with statically linked LLVM may cause compilation issues])
2626         dnl We need to link to llvm system libs when using static libs
2627         dnl However, only llvm 3.5+ provides --system-libs
2628         if test $LLVM_VERSION_MAJOR -ge 4 -o $LLVM_VERSION_MAJOR -eq 3 -a $LLVM_VERSION_MINOR -ge 5; then
2629             LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --system-libs`"
2630         fi
2631     fi
2632 fi
2633
2634 AM_CONDITIONAL(HAVE_GALLIUM_SVGA, test "x$HAVE_GALLIUM_SVGA" = xyes)
2635 AM_CONDITIONAL(HAVE_GALLIUM_I915, test "x$HAVE_GALLIUM_I915" = xyes)
2636 AM_CONDITIONAL(HAVE_GALLIUM_ILO, test "x$HAVE_GALLIUM_ILO" = xyes)
2637 AM_CONDITIONAL(HAVE_GALLIUM_R300, test "x$HAVE_GALLIUM_R300" = xyes)
2638 AM_CONDITIONAL(HAVE_GALLIUM_R600, test "x$HAVE_GALLIUM_R600" = xyes)
2639 AM_CONDITIONAL(HAVE_GALLIUM_RADEONSI, test "x$HAVE_GALLIUM_RADEONSI" = xyes)
2640 AM_CONDITIONAL(HAVE_GALLIUM_RADEON_COMMON, test "x$HAVE_GALLIUM_R600" = xyes -o \
2641                                                 "x$HAVE_GALLIUM_RADEONSI" = xyes)
2642 AM_CONDITIONAL(HAVE_GALLIUM_NOUVEAU, test "x$HAVE_GALLIUM_NOUVEAU" = xyes)
2643 AM_CONDITIONAL(HAVE_GALLIUM_FREEDRENO, test "x$HAVE_GALLIUM_FREEDRENO" = xyes)
2644 AM_CONDITIONAL(HAVE_GALLIUM_ETNAVIV, test "x$HAVE_GALLIUM_ETNAVIV" = xyes)
2645 AM_CONDITIONAL(HAVE_GALLIUM_IMX, test "x$HAVE_GALLIUM_IMX" = xyes)
2646 AM_CONDITIONAL(HAVE_GALLIUM_SOFTPIPE, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes)
2647 AM_CONDITIONAL(HAVE_GALLIUM_LLVMPIPE, test "x$HAVE_GALLIUM_LLVMPIPE" = xyes)
2648 AM_CONDITIONAL(HAVE_GALLIUM_SWR, test "x$HAVE_GALLIUM_SWR" = xyes)
2649 AM_CONDITIONAL(HAVE_GALLIUM_SWRAST, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes -o \
2650                                          "x$HAVE_GALLIUM_LLVMPIPE" = xyes -o \
2651                                          "x$HAVE_GALLIUM_SWR" = xyes)
2652 AM_CONDITIONAL(HAVE_GALLIUM_VC4, test "x$HAVE_GALLIUM_VC4" = xyes)
2653 AM_CONDITIONAL(HAVE_GALLIUM_VIRGL, test "x$HAVE_GALLIUM_VIRGL" = xyes)
2654
2655 AM_CONDITIONAL(HAVE_GALLIUM_STATIC_TARGETS, test "x$enable_shared_pipe_drivers" = xno)
2656
2657 if test "x$enable_dri" = xyes; then
2658     GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRI"
2659 fi
2660
2661 if test "x$have_drisw_kms" = xyes; then
2662     GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_KMS"
2663 fi
2664 AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
2665
2666 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
2667 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
2668 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
2669 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
2670 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
2671 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
2672
2673 AM_CONDITIONAL(HAVE_RADEON_VULKAN, test "x$HAVE_RADEON_VULKAN" = xyes)
2674 AM_CONDITIONAL(HAVE_INTEL_VULKAN, test "x$HAVE_INTEL_VULKAN" = xyes)
2675
2676 AM_CONDITIONAL(HAVE_AMD_DRIVERS, test "x$HAVE_GALLIUM_R600" = xyes -o \
2677                                       "x$HAVE_GALLIUM_RADEONSI" = xyes -o \
2678                                       "x$HAVE_RADEON_VULKAN" = xyes)
2679
2680 AM_CONDITIONAL(HAVE_INTEL_DRIVERS, test "x$HAVE_INTEL_VULKAN" = xyes -o \
2681                                         "x$HAVE_I965_DRI" = xyes)
2682
2683 AM_CONDITIONAL(NEED_RADEON_DRM_WINSYS, test "x$HAVE_GALLIUM_R300" = xyes -o \
2684                                             "x$HAVE_GALLIUM_R600" = xyes -o \
2685                                             "x$HAVE_GALLIUM_RADEONSI" = xyes)
2686 AM_CONDITIONAL(NEED_WINSYS_XLIB, test "x$enable_glx" = xgallium-xlib)
2687 AM_CONDITIONAL(NEED_RADEON_LLVM, test x$NEED_RADEON_LLVM = xyes)
2688 AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
2689 AM_CONDITIONAL(HAVE_GALLIUM_LLVM, test "x$MESA_LLVM" = x1 -a \
2690                                        "x$enable_gallium_llvm" = xyes)
2691 AM_CONDITIONAL(USE_VC4_SIMULATOR, test x$USE_VC4_SIMULATOR = xyes)
2692 if test "x$USE_VC4_SIMULATOR" = xyes -a "x$HAVE_GALLIUM_ILO" = xyes; then
2693     AC_MSG_ERROR([VC4 simulator on x86 replaces i965 driver build, so ilo must be disabled.])
2694 fi
2695
2696 AM_CONDITIONAL(HAVE_LIBDRM, test "x$have_libdrm" = xyes)
2697 AM_CONDITIONAL(HAVE_OSMESA, test "x$enable_osmesa" = xyes)
2698 AM_CONDITIONAL(HAVE_GALLIUM_OSMESA, test "x$enable_gallium_osmesa" = xyes)
2699 AM_CONDITIONAL(HAVE_COMMON_OSMESA, test "x$enable_osmesa" = xyes -o \
2700                                         "x$enable_gallium_osmesa" = xyes)
2701
2702 AM_CONDITIONAL(HAVE_X86_ASM, test "x$asm_arch" = xx86 -o "x$asm_arch" = xx86_64)
2703 AM_CONDITIONAL(HAVE_X86_64_ASM, test "x$asm_arch" = xx86_64)
2704 AM_CONDITIONAL(HAVE_SPARC_ASM, test "x$asm_arch" = xsparc)
2705
2706 AC_SUBST([NINE_MAJOR], 1)
2707 AC_SUBST([NINE_MINOR], 0)
2708 AC_SUBST([NINE_TINY], 0)
2709 AC_SUBST([NINE_VERSION], "$NINE_MAJOR.$NINE_MINOR.$NINE_TINY")
2710
2711 AC_SUBST([VDPAU_MAJOR], 1)
2712 AC_SUBST([VDPAU_MINOR], 0)
2713
2714 VA_MAJOR=`$PKG_CONFIG --modversion libva | $SED -n 's/\([[^\.]]*\)\..*$/\1/p'`
2715 VA_MINOR=`$PKG_CONFIG --modversion libva | $SED -n 's/.*\.\(.*\)\..*$/\1/p'`
2716 AC_SUBST([VA_MAJOR], $VA_MAJOR)
2717 AC_SUBST([VA_MINOR], $VA_MINOR)
2718
2719 AM_CONDITIONAL(HAVE_VULKAN_COMMON, test "x$VULKAN_DRIVERS" != "x")
2720
2721 AC_SUBST([XVMC_MAJOR], 1)
2722 AC_SUBST([XVMC_MINOR], 0)
2723
2724 XA_HEADER="$srcdir/src/gallium/state_trackers/xa/xa_tracker.h"
2725 XA_MAJOR=`grep "#define XA_TRACKER_VERSION_MAJOR" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_MAJOR //'`
2726 XA_MINOR=`grep "#define XA_TRACKER_VERSION_MINOR" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_MINOR //'`
2727 XA_TINY=`grep "#define XA_TRACKER_VERSION_PATCH" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_PATCH //'`
2728
2729 AC_SUBST([XA_MAJOR], $XA_MAJOR)
2730 AC_SUBST([XA_MINOR], $XA_MINOR)
2731 AC_SUBST([XA_TINY], $XA_TINY)
2732 AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_TINY")
2733
2734 AC_ARG_ENABLE(valgrind,
2735               [AS_HELP_STRING([--enable-valgrind],
2736                              [Build mesa with valgrind support (default: auto)])],
2737                              [VALGRIND=$enableval], [VALGRIND=auto])
2738 if test "x$VALGRIND" != xno; then
2739         PKG_CHECK_MODULES(VALGRIND, [valgrind], [have_valgrind=yes], [have_valgrind=no])
2740 fi
2741 AC_MSG_CHECKING([whether to enable Valgrind support])
2742 if test "x$VALGRIND" = xauto; then
2743         VALGRIND="$have_valgrind"
2744 fi
2745
2746 if test "x$VALGRIND" = "xyes"; then
2747         if ! test "x$have_valgrind" = xyes; then
2748                 AC_MSG_ERROR([Valgrind support required but not present])
2749         fi
2750         AC_DEFINE([HAVE_VALGRIND], 1, [Use valgrind intrinsics to suppress false warnings])
2751 fi
2752
2753 AC_MSG_RESULT([$VALGRIND])
2754
2755 dnl Restore LDFLAGS and CPPFLAGS
2756 LDFLAGS="$_SAVE_LDFLAGS"
2757 CPPFLAGS="$_SAVE_CPPFLAGS"
2758
2759 dnl Suppress clang's warnings about unused CFLAGS and CXXFLAGS
2760 if test "x$acv_mesa_CLANG" = xyes; then
2761     CFLAGS="$CFLAGS -Qunused-arguments"
2762     CXXFLAGS="$CXXFLAGS -Qunused-arguments"
2763 fi
2764
2765 dnl Add user CFLAGS and CXXFLAGS
2766 CFLAGS="$CFLAGS $USER_CFLAGS"
2767 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
2768
2769 dnl Substitute the config
2770 AC_CONFIG_FILES([Makefile
2771                 src/Makefile
2772                 src/amd/Makefile
2773                 src/amd/vulkan/Makefile
2774                 src/compiler/Makefile
2775                 src/egl/Makefile
2776                 src/egl/main/egl.pc
2777                 src/egl/wayland/wayland-drm/Makefile
2778                 src/egl/wayland/wayland-egl/Makefile
2779                 src/egl/wayland/wayland-egl/wayland-egl.pc
2780                 src/gallium/Makefile
2781                 src/gallium/auxiliary/Makefile
2782                 src/gallium/auxiliary/pipe-loader/Makefile
2783                 src/gallium/drivers/freedreno/Makefile
2784                 src/gallium/drivers/ddebug/Makefile
2785                 src/gallium/drivers/i915/Makefile
2786                 src/gallium/drivers/ilo/Makefile
2787                 src/gallium/drivers/llvmpipe/Makefile
2788                 src/gallium/drivers/noop/Makefile
2789                 src/gallium/drivers/nouveau/Makefile
2790                 src/gallium/drivers/r300/Makefile
2791                 src/gallium/drivers/r600/Makefile
2792                 src/gallium/drivers/radeon/Makefile
2793                 src/gallium/drivers/radeonsi/Makefile
2794                 src/gallium/drivers/rbug/Makefile
2795                 src/gallium/drivers/softpipe/Makefile
2796                 src/gallium/drivers/svga/Makefile
2797                 src/gallium/drivers/swr/Makefile
2798                 src/gallium/drivers/trace/Makefile
2799                 src/gallium/drivers/etnaviv/Makefile
2800                 src/gallium/drivers/imx/Makefile
2801                 src/gallium/drivers/vc4/Makefile
2802                 src/gallium/drivers/virgl/Makefile
2803                 src/gallium/state_trackers/clover/Makefile
2804                 src/gallium/state_trackers/dri/Makefile
2805                 src/gallium/state_trackers/glx/xlib/Makefile
2806                 src/gallium/state_trackers/nine/Makefile
2807                 src/gallium/state_trackers/omx/Makefile
2808                 src/gallium/state_trackers/osmesa/Makefile
2809                 src/gallium/state_trackers/va/Makefile
2810                 src/gallium/state_trackers/vdpau/Makefile
2811                 src/gallium/state_trackers/xa/Makefile
2812                 src/gallium/state_trackers/xvmc/Makefile
2813                 src/gallium/targets/d3dadapter9/Makefile
2814                 src/gallium/targets/d3dadapter9/d3d.pc
2815                 src/gallium/targets/dri/Makefile
2816                 src/gallium/targets/libgl-xlib/Makefile
2817                 src/gallium/targets/omx/Makefile
2818                 src/gallium/targets/opencl/Makefile
2819                 src/gallium/targets/opencl/mesa.icd
2820                 src/gallium/targets/osmesa/Makefile
2821                 src/gallium/targets/osmesa/osmesa.pc
2822                 src/gallium/targets/pipe-loader/Makefile
2823                 src/gallium/targets/va/Makefile
2824                 src/gallium/targets/vdpau/Makefile
2825                 src/gallium/targets/xa/Makefile
2826                 src/gallium/targets/xa/xatracker.pc
2827                 src/gallium/targets/xvmc/Makefile
2828                 src/gallium/tests/trivial/Makefile
2829                 src/gallium/tests/unit/Makefile
2830                 src/gallium/winsys/etnaviv/drm/Makefile
2831                 src/gallium/winsys/imx/drm/Makefile
2832                 src/gallium/winsys/freedreno/drm/Makefile
2833                 src/gallium/winsys/i915/drm/Makefile
2834                 src/gallium/winsys/intel/drm/Makefile
2835                 src/gallium/winsys/nouveau/drm/Makefile
2836                 src/gallium/winsys/radeon/drm/Makefile
2837                 src/gallium/winsys/amdgpu/drm/Makefile
2838                 src/gallium/winsys/svga/drm/Makefile
2839                 src/gallium/winsys/sw/dri/Makefile
2840                 src/gallium/winsys/sw/kms-dri/Makefile
2841                 src/gallium/winsys/sw/null/Makefile
2842                 src/gallium/winsys/sw/wrapper/Makefile
2843                 src/gallium/winsys/sw/xlib/Makefile
2844                 src/gallium/winsys/vc4/drm/Makefile
2845                 src/gallium/winsys/virgl/drm/Makefile
2846                 src/gallium/winsys/virgl/vtest/Makefile
2847                 src/gbm/Makefile
2848                 src/gbm/main/gbm.pc
2849                 src/glx/Makefile
2850                 src/glx/apple/Makefile
2851                 src/glx/tests/Makefile
2852                 src/glx/windows/Makefile
2853                 src/glx/windows/windowsdriproto.pc
2854                 src/gtest/Makefile
2855                 src/intel/Makefile
2856                 src/intel/tools/Makefile
2857                 src/intel/vulkan/Makefile
2858                 src/loader/Makefile
2859                 src/mapi/Makefile
2860                 src/mapi/es1api/glesv1_cm.pc
2861                 src/mapi/es2api/glesv2.pc
2862                 src/mapi/glapi/gen/Makefile
2863                 src/mesa/Makefile
2864                 src/mesa/gl.pc
2865                 src/mesa/drivers/dri/dri.pc
2866                 src/mesa/drivers/dri/common/Makefile
2867                 src/mesa/drivers/dri/common/xmlpool/Makefile
2868                 src/mesa/drivers/dri/i915/Makefile
2869                 src/mesa/drivers/dri/i965/Makefile
2870                 src/mesa/drivers/dri/Makefile
2871                 src/mesa/drivers/dri/nouveau/Makefile
2872                 src/mesa/drivers/dri/r200/Makefile
2873                 src/mesa/drivers/dri/radeon/Makefile
2874                 src/mesa/drivers/dri/swrast/Makefile
2875                 src/mesa/drivers/osmesa/Makefile
2876                 src/mesa/drivers/osmesa/osmesa.pc
2877                 src/mesa/drivers/x11/Makefile
2878                 src/mesa/main/tests/Makefile
2879                 src/util/Makefile
2880                 src/util/tests/hash_table/Makefile
2881                 src/vulkan/wsi/Makefile])
2882
2883 AC_OUTPUT
2884
2885 # Fix up dependencies in *.Plo files, where we changed the extension of a
2886 # source file
2887 $SED -i -e 's/brw_blorp.cpp/brw_blorp.c/' src/mesa/drivers/dri/i965/.deps/brw_blorp.Plo
2888
2889
2890 dnl
2891 dnl Output some configuration info for the user
2892 dnl
2893 echo ""
2894 echo "        prefix:          $prefix"
2895 echo "        exec_prefix:     $exec_prefix"
2896 echo "        libdir:          $libdir"
2897 echo "        includedir:      $includedir"
2898
2899 dnl API info
2900 echo ""
2901 echo "        OpenGL:          $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
2902
2903 dnl Driver info
2904 echo ""
2905 case "x$enable_osmesa$enable_gallium_osmesa" in
2906 xnoyes)
2907         echo "        OSMesa:          lib$OSMESA_LIB (Gallium)"
2908         ;;
2909 xyesno)
2910         echo "        OSMesa:          lib$OSMESA_LIB"
2911         ;;
2912 xnono)
2913         echo "        OSMesa:          no"
2914         ;;
2915 esac
2916
2917 echo ""
2918 if test "x$enable_dri" != xno; then
2919         echo "        DRI platform:    $dri_platform"
2920         if test -z "$DRI_DIRS"; then
2921             echo "        DRI drivers:     no"
2922         else
2923             echo "        DRI drivers:     $DRI_DIRS"
2924         fi
2925         echo "        DRI driver dir:  $DRI_DRIVER_INSTALL_DIR"
2926 fi
2927
2928 case "x$enable_glx" in
2929 xdri)
2930     echo "        GLX:             DRI-based"
2931     ;;
2932 xxlib)
2933     echo "        GLX:             Xlib-based"
2934     ;;
2935 xgallium-xlib)
2936     echo "        GLX:             Xlib-based (Gallium)"
2937     ;;
2938 *)
2939     echo "        GLX:             $enable_glx"
2940     ;;
2941 esac
2942
2943 dnl EGL
2944 echo ""
2945 echo "        EGL:             $enable_egl"
2946 if test "$enable_egl" = yes; then
2947     echo "        EGL platforms:   $egl_platforms"
2948
2949     egl_drivers=""
2950     if test "x$HAVE_EGL_DRIVER_DRI2" != "x"; then
2951         egl_drivers="$egl_drivers builtin:egl_dri2"
2952     fi
2953     if test "x$HAVE_EGL_DRIVER_DRI3" != "x"; then
2954         egl_drivers="$egl_drivers builtin:egl_dri3"
2955     fi
2956
2957     echo "        EGL drivers:    $egl_drivers"
2958 fi
2959 if test "x$enable_gbm" = xyes; then
2960     echo "        GBM:             yes"
2961 else
2962     echo "        GBM:             no"
2963 fi
2964
2965 # Vulkan
2966 echo ""
2967 if test "x$VULKAN_DRIVERS" != x; then
2968     echo "        Vulkan drivers:  $VULKAN_DRIVERS"
2969     echo "        Vulkan ICD dir:  $VULKAN_ICD_INSTALL_DIR"
2970 else
2971     echo "        Vulkan drivers:  no"
2972 fi
2973
2974 echo ""
2975 if test "x$MESA_LLVM" = x1; then
2976     echo "        llvm:            yes"
2977     echo "        llvm-config:     $LLVM_CONFIG"
2978     echo "        llvm-version:    $LLVM_VERSION"
2979 else
2980     echo "        llvm:            no"
2981 fi
2982
2983 echo ""
2984 if test -n "$with_gallium_drivers"; then
2985     echo "        Gallium drivers: $gallium_drivers"
2986     echo "        Gallium st:      $gallium_st"
2987 else
2988     echo "        Gallium:         no"
2989 fi
2990
2991 echo ""
2992 if test "x$enable_gallium_extra_hud" != xyes; then
2993     echo "        HUD extra stats: no"
2994 else
2995     echo "        HUD extra stats: yes"
2996 fi
2997
2998 if test "x$enable_lmsensors" != xyes; then
2999     echo "        HUD lmsensors:   no"
3000 else
3001     echo "        HUD lmsensors:   yes"
3002 fi
3003
3004 dnl Shader cache
3005 echo ""
3006 echo "        Shader cache:    $enable_shader_cache"
3007 if test "x$enable_shader_cache" = "xyes"; then
3008     echo "        With SHA1 from:  $with_sha1"
3009 fi
3010
3011 dnl Libraries
3012 echo ""
3013 echo "        Shared libs:     $enable_shared"
3014 echo "        Static libs:     $enable_static"
3015 echo "        Shared-glapi:    $enable_shared_glapi"
3016
3017 dnl Compiler options
3018 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
3019 cflags=`echo $CFLAGS | \
3020     $SED 's/^ *//;s/  */ /;s/ *$//'`
3021 cxxflags=`echo $CXXFLAGS | \
3022     $SED 's/^ *//;s/  */ /;s/ *$//'`
3023 defines=`echo $DEFINES | $SED 's/^ *//;s/  */ /;s/ *$//'`
3024 echo ""
3025 echo "        CFLAGS:          $cflags"
3026 echo "        CXXFLAGS:        $cxxflags"
3027 echo "        Macros:          $defines"
3028 echo ""
3029 if test "x$MESA_LLVM" = x1; then
3030     echo "        LLVM_CFLAGS:     $LLVM_CFLAGS"
3031     echo "        LLVM_CXXFLAGS:   $LLVM_CXXFLAGS"
3032     echo "        LLVM_CPPFLAGS:   $LLVM_CPPFLAGS"
3033     echo "        LLVM_LDFLAGS:    $LLVM_LDFLAGS"
3034     echo ""
3035 fi
3036 echo "        PYTHON2:         $PYTHON2"
3037
3038 echo ""
3039 echo "        Run '${MAKE-make}' to build Mesa"
3040 echo ""