OSDN Git Service

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