OSDN Git Service

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