OSDN Git Service

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