OSDN Git Service

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