OSDN Git Service

mesa/build: add OpenSWR to build
[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 dnl
1640 dnl EGL configuration
1641 dnl
1642 EGL_CLIENT_APIS=""
1643
1644 if test "x$enable_egl" = xyes; then
1645     EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS $PTHREAD_LIBS"
1646
1647     AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1648
1649     if test "$enable_static" != yes; then
1650         if test "x$enable_dri" = xyes; then
1651             HAVE_EGL_DRIVER_DRI2=1
1652             if test "x$enable_shared_glapi" = xno; then
1653                 AC_MSG_ERROR([egl_dri2 requires --enable-shared-glapi])
1654             fi
1655             if test "x$enable_dri3" = xyes; then
1656                 HAVE_EGL_DRIVER_DRI3=1
1657                 if test "x$enable_shared_glapi" = xno; then
1658                     AC_MSG_ERROR([egl_dri3 requires --enable-shared-glapi])
1659                 fi
1660             fi
1661         else
1662             # Avoid building an "empty" libEGL. Drop/update this
1663             # when other backends (haiku?) come along.
1664             AC_MSG_ERROR([egl requires --enable-dri])
1665         fi
1666
1667     fi
1668 fi
1669 AM_CONDITIONAL(HAVE_EGL, test "x$enable_egl" = xyes)
1670 AC_SUBST([EGL_LIB_DEPS])
1671
1672 gallium_st="mesa"
1673
1674 dnl
1675 dnl XA configuration
1676 dnl
1677 if test "x$enable_xa" = xyes; then
1678     if test "x$with_gallium_drivers" = xswrast; then
1679        AC_MSG_ERROR([
1680           Building xa requires at least one non swrast gallium driver.
1681           If you are looking to use libxatracker.so with the VMware driver,
1682           make sure to include svga in the gallium drivers list, apart from
1683           enabling XA.
1684           Example: ./configure --enable-xa --with-gallium-drivers=svga...])
1685     fi
1686     gallium_st="$gallium_st xa"
1687 fi
1688 AM_CONDITIONAL(HAVE_ST_XA, test "x$enable_xa" = xyes)
1689
1690 dnl
1691 dnl Gallium G3DVL configuration
1692 dnl
1693 if test -n "$with_gallium_drivers" -a "x$with_gallium_drivers" != xswrast; then
1694     if test "x$enable_xvmc" = xauto; then
1695         PKG_CHECK_EXISTS([xvmc >= $XVMC_REQUIRED], [enable_xvmc=yes], [enable_xvmc=no])
1696     fi
1697
1698     if test "x$enable_vdpau" = xauto; then
1699         PKG_CHECK_EXISTS([vdpau >= $VDPAU_REQUIRED], [enable_vdpau=yes], [enable_vdpau=no])
1700     fi
1701
1702     if test "x$enable_omx" = xauto; then
1703         PKG_CHECK_EXISTS([libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED], [enable_omx=yes], [enable_omx=no])
1704     fi
1705
1706     if test "x$enable_va" = xauto; then
1707         PKG_CHECK_EXISTS([libva >= $LIBVA_REQUIRED], [enable_va=yes], [enable_va=no])
1708     fi
1709 fi
1710
1711 if test "x$enable_dri" = xyes -o \
1712         "x$enable_xvmc" = xyes -o \
1713         "x$enable_vdpau" = xyes -o \
1714         "x$enable_omx" = xyes -o \
1715         "x$enable_va" = xyes; then
1716     need_gallium_vl=yes
1717 fi
1718 AM_CONDITIONAL(NEED_GALLIUM_VL, test "x$need_gallium_vl" = xyes)
1719
1720 if test "x$enable_xvmc" = xyes -o \
1721         "x$enable_vdpau" = xyes -o \
1722         "x$enable_omx" = xyes -o \
1723         "x$enable_va" = xyes; then
1724     PKG_CHECK_MODULES([VL], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
1725     need_gallium_vl_winsys=yes
1726 fi
1727 AM_CONDITIONAL(NEED_GALLIUM_VL_WINSYS, test "x$need_gallium_vl_winsys" = xyes)
1728
1729 if test "x$enable_xvmc" = xyes; then
1730     PKG_CHECK_MODULES([XVMC], [xvmc >= $XVMC_REQUIRED])
1731     gallium_st="$gallium_st xvmc"
1732 fi
1733 AM_CONDITIONAL(HAVE_ST_XVMC, test "x$enable_xvmc" = xyes)
1734
1735 if test "x$enable_vdpau" = xyes; then
1736     PKG_CHECK_MODULES([VDPAU], [vdpau >= $VDPAU_REQUIRED])
1737     gallium_st="$gallium_st vdpau"
1738 fi
1739 AM_CONDITIONAL(HAVE_ST_VDPAU, test "x$enable_vdpau" = xyes)
1740
1741 if test "x$enable_omx" = xyes; then
1742     PKG_CHECK_MODULES([OMX], [libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED])
1743     gallium_st="$gallium_st omx"
1744 fi
1745 AM_CONDITIONAL(HAVE_ST_OMX, test "x$enable_omx" = xyes)
1746
1747 if test "x$enable_va" = xyes; then
1748     PKG_CHECK_MODULES([VA], [libva >= $LIBVA_REQUIRED])
1749     gallium_st="$gallium_st va"
1750 fi
1751 AM_CONDITIONAL(HAVE_ST_VA, test "x$enable_va" = xyes)
1752
1753 dnl
1754 dnl Nine Direct3D9 configuration
1755 dnl
1756 if test "x$enable_nine" = xyes; then
1757     if ! echo "$with_gallium_drivers" | grep -q 'swrast'; then
1758         AC_MSG_ERROR([nine requires the gallium swrast driver])
1759     fi
1760     if test "x$with_gallium_drivers" = xswrast; then
1761         AC_MSG_ERROR([nine requires at least one non-swrast gallium driver])
1762     fi
1763     if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6; then
1764         AC_MSG_ERROR([gcc >= 4.6 is required to build nine])
1765     fi
1766
1767     if test "x$enable_dri3" = xno; then
1768         AC_MSG_WARN([using nine together with wine requires DRI3 enabled system])
1769     fi
1770
1771     gallium_st="$gallium_st nine"
1772 fi
1773 AM_CONDITIONAL(HAVE_ST_NINE, test "x$enable_nine" = xyes)
1774
1775 dnl
1776 dnl OpenCL configuration
1777 dnl
1778
1779 AC_ARG_WITH([clang-libdir],
1780    [AS_HELP_STRING([--with-clang-libdir],
1781          [Path to Clang libraries @<:@default=llvm-config --libdir@:>@])],
1782    [CLANG_LIBDIR="$withval"],
1783    [CLANG_LIBDIR=''])
1784
1785 PKG_CHECK_EXISTS([libclc], [have_libclc=yes], [have_libclc=no])
1786 PKG_CHECK_MODULES([LIBELF], [libelf], [have_libelf=yes], [have_libelf=no])
1787
1788 if test "x$have_libelf" = xno; then
1789    LIBELF_LIBS=''
1790    LIBELF_CFLAGS=''
1791    AC_CHECK_LIB([elf], [elf_memory], [have_libelf=yes;LIBELF_LIBS=-lelf], [have_libelf=no])
1792    AC_SUBST([LIBELF_LIBS])
1793    AC_SUBST([LIBELF_CFLAGS])
1794 fi
1795
1796 if test "x$enable_opencl" = xyes; then
1797     if test -z "$with_gallium_drivers"; then
1798         AC_MSG_ERROR([cannot enable OpenCL without Gallium])
1799     fi
1800
1801     if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 7; then
1802         AC_MSG_ERROR([gcc >= 4.7 is required to build clover])
1803     fi
1804
1805     if test "x$have_libclc" = xno; then
1806         AC_MSG_ERROR([pkg-config cannot find libclc.pc which is required to build clover.
1807                     Make sure the directory containing libclc.pc is specified in your
1808                     PKG_CONFIG_PATH environment variable.
1809                     By default libclc.pc is installed to /usr/local/share/pkgconfig/])
1810     else
1811         LIBCLC_INCLUDEDIR=`$PKG_CONFIG --variable=includedir libclc`
1812         LIBCLC_LIBEXECDIR=`$PKG_CONFIG --variable=libexecdir libclc`
1813         AC_SUBST([LIBCLC_INCLUDEDIR])
1814         AC_SUBST([LIBCLC_LIBEXECDIR])
1815     fi
1816
1817     gallium_st="$gallium_st clover"
1818
1819     if test "x$enable_opencl_icd" = xyes; then
1820         OPENCL_LIBNAME="MesaOpenCL"
1821     else
1822         OPENCL_LIBNAME="OpenCL"
1823     fi
1824
1825     if test "x$have_libelf" != xyes; then
1826        AC_MSG_ERROR([Clover requires libelf])
1827     fi
1828 fi
1829 AM_CONDITIONAL(HAVE_CLOVER, test "x$enable_opencl" = xyes)
1830 AM_CONDITIONAL(HAVE_CLOVER_ICD, test "x$enable_opencl_icd" = xyes)
1831 AC_SUBST([OPENCL_LIBNAME])
1832
1833 dnl
1834 dnl Gallium configuration
1835 dnl
1836 AM_CONDITIONAL(HAVE_GALLIUM, test -n "$with_gallium_drivers")
1837
1838 AC_SUBST([LLVM_BINDIR])
1839 AC_SUBST([LLVM_CFLAGS])
1840 AC_SUBST([LLVM_CPPFLAGS])
1841 AC_SUBST([LLVM_CXXFLAGS])
1842 AC_SUBST([LLVM_LIBDIR])
1843 AC_SUBST([LLVM_LIBS])
1844 AC_SUBST([LLVM_LDFLAGS])
1845 AC_SUBST([LLVM_INCLUDEDIR])
1846 AC_SUBST([LLVM_VERSION])
1847 AC_SUBST([CLANG_RESOURCE_DIR])
1848
1849 case "x$enable_opengl$enable_gles1$enable_gles2" in
1850 x*yes*)
1851     EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1852     ;;
1853 esac
1854
1855 AC_SUBST([VG_LIB_DEPS])
1856 AC_SUBST([EGL_CLIENT_APIS])
1857
1858 dnl
1859 dnl EGL Platforms configuration
1860 dnl
1861 AC_ARG_WITH([egl-platforms],
1862     [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1863         [comma delimited native platforms libEGL supports, e.g.
1864         "x11,drm" @<:@default=auto@:>@])],
1865     [with_egl_platforms="$withval"],
1866     [if test "x$enable_egl" = xyes; then
1867         with_egl_platforms="x11"
1868     else
1869         with_egl_platforms=""
1870     fi])
1871
1872 if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
1873     AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1874 fi
1875
1876 PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland_scanner],
1877         WAYLAND_SCANNER=`$PKG_CONFIG --variable=wayland_scanner wayland_scanner`,
1878         WAYLAND_SCANNER='')
1879 if test "x$WAYLAND_SCANNER" = x; then
1880     AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner])
1881 fi
1882
1883 # Do per-EGL platform setups and checks
1884 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1885 for plat in $egl_platforms; do
1886         case "$plat" in
1887         wayland)
1888                 test "x$have_libdrm" != xyes &&
1889                         AC_MSG_ERROR([EGL platform wayland requires libdrm >= $LIBDRM_REQUIRED])
1890
1891                 PKG_CHECK_MODULES([WAYLAND], [wayland-client >= $WAYLAND_REQUIRED wayland-server >= $WAYLAND_REQUIRED])
1892
1893                 if test "x$WAYLAND_SCANNER" = x; then
1894                         AC_MSG_ERROR([wayland-scanner is needed to compile the wayland egl platform])
1895                 fi
1896                 ;;
1897
1898         x11)
1899                 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED xcb-xfixes])
1900                 ;;
1901
1902         drm)
1903                 test "x$enable_gbm" = "xno" &&
1904                         AC_MSG_ERROR([EGL platform drm needs gbm])
1905                 test "x$have_libdrm" != xyes &&
1906                         AC_MSG_ERROR([EGL platform drm requires libdrm >= $LIBDRM_REQUIRED])
1907                 ;;
1908
1909         surfaceless)
1910                 test "x$have_libdrm" != xyes &&
1911                         AC_MSG_ERROR([EGL platform surfaceless requires libdrm >= $LIBDRM_REQUIRED])
1912                 ;;
1913
1914         *)
1915                 AC_MSG_ERROR([EGL platform '$plat' does not exist])
1916                 ;;
1917         esac
1918
1919         case "$plat$need_pci_id$have_pci_id" in
1920                 waylandyesno|drmyesno)
1921                     AC_MSG_ERROR([cannot build $plat platform without udev >= $LIBUDEV_REQUIRED or sysfs]) ;;
1922         esac
1923 done
1924
1925 # libEGL wants to default to the first platform specified in
1926 # ./configure.  parse that here.
1927 if test "x$egl_platforms" != "x"; then
1928     FIRST_PLATFORM_CAPS=`echo $egl_platforms | sed 's| .*||' | tr '[[a-z]]' '[[A-Z]]'`
1929     EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
1930 else
1931     EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
1932 fi
1933
1934 AM_CONDITIONAL(HAVE_EGL_PLATFORM_X11, echo "$egl_platforms" | grep -q 'x11')
1935 AM_CONDITIONAL(HAVE_EGL_PLATFORM_WAYLAND, echo "$egl_platforms" | grep -q 'wayland')
1936 AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep -q 'drm')
1937 AM_CONDITIONAL(HAVE_EGL_PLATFORM_SURFACELESS, echo "$egl_platforms" | grep -q 'surfaceless')
1938 AM_CONDITIONAL(HAVE_EGL_PLATFORM_NULL, echo "$egl_platforms" | grep -q 'null')
1939
1940 AM_CONDITIONAL(HAVE_EGL_DRIVER_DRI2, test "x$HAVE_EGL_DRIVER_DRI2" != "x")
1941
1942 AC_SUBST([EGL_NATIVE_PLATFORM])
1943 AC_SUBST([EGL_CFLAGS])
1944
1945 # If we don't have the X11 platform, set this define so we don't try to include
1946 # the X11 headers.
1947 if ! echo "$egl_platforms" | grep -q 'x11'; then
1948     DEFINES="$DEFINES -DMESA_EGL_NO_X11_HEADERS"
1949     GL_PC_CFLAGS="$GL_PC_CFLAGS -DMESA_EGL_NO_X11_HEADERS"
1950 fi
1951
1952 dnl
1953 dnl Gallium LLVM
1954 dnl
1955 AC_ARG_ENABLE([gallium-llvm],
1956     [AS_HELP_STRING([--enable-gallium-llvm],
1957         [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1958     [enable_gallium_llvm="$enableval"],
1959     [enable_gallium_llvm=auto])
1960
1961 AC_ARG_ENABLE([llvm-shared-libs],
1962     [AS_HELP_STRING([--enable-llvm-shared-libs],
1963         [link with LLVM shared libraries @<:@default=enabled@:>@])],
1964     [enable_llvm_shared_libs="$enableval"],
1965     [enable_llvm_shared_libs=yes])
1966
1967 AC_ARG_WITH([llvm-prefix],
1968     [AS_HELP_STRING([--with-llvm-prefix],
1969         [Prefix for LLVM installations in non-standard locations])],
1970     [llvm_prefix="$withval"],
1971     [llvm_prefix=''])
1972
1973
1974 # Call this inside ` ` to get the return value.
1975 # $1 is the llvm-config command with arguments.
1976 strip_unwanted_llvm_flags() {
1977     # Use \> (marks the end of the word)
1978     echo `$1` | sed \
1979         -e 's/-DNDEBUG\>//g' \
1980         -e 's/-D_GNU_SOURCE\>//g' \
1981         -e 's/-pedantic\>//g' \
1982         -e 's/-Wcovered-switch-default\>//g' \
1983         -e 's/-O.\>//g' \
1984         -e 's/-g\>//g' \
1985         -e 's/-Wall\>//g' \
1986         -e 's/-Wcast-qual\>//g' \
1987         -e 's/-Woverloaded-virtual\>//g' \
1988         -e 's/-fcolor-diagnostics\>//g' \
1989         -e 's/-fdata-sections\>//g' \
1990         -e 's/-ffunction-sections\>//g' \
1991         -e 's/-fno-exceptions\>//g' \
1992         -e 's/-fomit-frame-pointer\>//g' \
1993         -e 's/-fvisibility-inlines-hidden\>//g' \
1994         -e 's/-fPIC\>//g' \
1995         -e 's/-fstack-protector-strong\>//g'
1996 }
1997
1998 llvm_check_version_for() {
1999     if test "${LLVM_VERSION_INT}${LLVM_VERSION_PATCH}" -lt "${1}0${2}${3}"; then
2000         AC_MSG_ERROR([LLVM $1.$2.$3 or newer is required for $4])
2001     fi
2002 }
2003
2004
2005
2006 if test -z "$with_gallium_drivers"; then
2007     enable_gallium_llvm=no
2008 fi
2009 if test "x$enable_gallium_llvm" = xauto; then
2010     case "$host_cpu" in
2011     i*86|x86_64|amd64) enable_gallium_llvm=yes;;
2012     esac
2013 fi
2014 if test "x$enable_gallium_llvm" = xyes; then
2015     if test -n "$llvm_prefix"; then
2016         AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no], ["$llvm_prefix/bin"])
2017     else
2018         AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no])
2019     fi
2020
2021     if test "x$LLVM_CONFIG" != xno; then
2022         LLVM_VERSION=`$LLVM_CONFIG --version | egrep -o '^[[0-9.]]+'`
2023         LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
2024         LLVM_BINDIR=`$LLVM_CONFIG --bindir`
2025         LLVM_CPPFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cppflags"`
2026         LLVM_CFLAGS=$LLVM_CPPFLAGS   # CPPFLAGS seem to be sufficient
2027         LLVM_CXXFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cxxflags"`
2028         LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
2029         LLVM_LIBDIR=`$LLVM_CONFIG --libdir`
2030
2031         AC_COMPUTE_INT([LLVM_VERSION_MAJOR], [LLVM_VERSION_MAJOR],
2032             [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
2033         AC_COMPUTE_INT([LLVM_VERSION_MINOR], [LLVM_VERSION_MINOR],
2034             [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
2035
2036         LLVM_VERSION_PATCH=`echo $LLVM_VERSION | cut -d. -f3 | egrep -o '^[[0-9]]+'`
2037         if test -z "$LLVM_VERSION_PATCH"; then
2038             LLVM_VERSION_PATCH=0
2039         fi
2040
2041         if test -n "${LLVM_VERSION_MAJOR}"; then
2042             LLVM_VERSION_INT="${LLVM_VERSION_MAJOR}0${LLVM_VERSION_MINOR}"
2043         else
2044             LLVM_VERSION_INT=`echo $LLVM_VERSION | sed -e 's/\([[0-9]]\)\.\([[0-9]]\)/\10\2/g'`
2045         fi
2046
2047         LLVM_REQUIRED_VERSION_MAJOR="3"
2048         LLVM_REQUIRED_VERSION_MINOR="3"
2049         if test "$LLVM_VERSION_INT" -lt "${LLVM_REQUIRED_VERSION_MAJOR}0${LLVM_REQUIRED_VERSION_MINOR}"; then
2050             AC_MSG_ERROR([LLVM $LLVM_REQUIRED_VERSION_MAJOR.$LLVM_REQUIRED_VERSION_MINOR or newer is required])
2051         fi
2052
2053         LLVM_COMPONENTS="engine bitwriter mcjit mcdisassembler"
2054
2055         if test "x$enable_opencl" = xyes; then
2056             llvm_check_version_for "3" "5" "0" "opencl"
2057
2058             LLVM_COMPONENTS="${LLVM_COMPONENTS} all-targets ipo linker instrumentation"
2059             LLVM_COMPONENTS="${LLVM_COMPONENTS} irreader option objcarcopts profiledata"
2060         fi
2061         DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT -DMESA_LLVM_VERSION_PATCH=$LLVM_VERSION_PATCH"
2062         MESA_LLVM=1
2063
2064         dnl Check for Clang internal headers
2065         if test "x$enable_opencl" = xyes; then
2066             if test -z "$CLANG_LIBDIR"; then
2067                 CLANG_LIBDIR=${LLVM_LIBDIR}
2068             fi
2069             CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION}
2070             AS_IF([test ! -f "$CLANG_RESOURCE_DIR/include/stddef.h"],
2071                 [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.])])
2072         fi
2073     else
2074         MESA_LLVM=0
2075         LLVM_VERSION_INT=0
2076     fi
2077 else
2078     MESA_LLVM=0
2079     LLVM_VERSION_INT=0
2080
2081     if test "x$enable_opencl" = xyes; then
2082         AC_MSG_ERROR([cannot enable OpenCL without LLVM])
2083     fi
2084 fi
2085
2086 dnl Directory for XVMC libs
2087 AC_ARG_WITH([xvmc-libdir],
2088     [AS_HELP_STRING([--with-xvmc-libdir=DIR],
2089         [directory for the XVMC libraries @<:@default=${libdir}@:>@])],
2090     [XVMC_LIB_INSTALL_DIR="$withval"],
2091     [XVMC_LIB_INSTALL_DIR='${libdir}'])
2092 AC_SUBST([XVMC_LIB_INSTALL_DIR])
2093
2094 dnl
2095 dnl Gallium Tests
2096 dnl
2097 AM_CONDITIONAL(HAVE_GALLIUM_TESTS, test "x$enable_gallium_tests" = xyes)
2098
2099 dnl Directory for VDPAU libs
2100 AC_ARG_WITH([vdpau-libdir],
2101     [AS_HELP_STRING([--with-vdpau-libdir=DIR],
2102         [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
2103     [VDPAU_LIB_INSTALL_DIR="$withval"],
2104     [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
2105 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
2106
2107 dnl Directory for OMX libs
2108
2109 AC_ARG_WITH([omx-libdir],
2110     [AS_HELP_STRING([--with-omx-libdir=DIR],
2111         [directory for the OMX libraries])],
2112     [OMX_LIB_INSTALL_DIR="$withval"],
2113     [OMX_LIB_INSTALL_DIR=`$PKG_CONFIG --define-variable=libdir=\$libdir --variable=pluginsdir libomxil-bellagio`])
2114 AC_SUBST([OMX_LIB_INSTALL_DIR])
2115
2116 dnl Directory for VA libs
2117
2118 AC_ARG_WITH([va-libdir],
2119     [AS_HELP_STRING([--with-va-libdir=DIR],
2120         [directory for the VA libraries @<:@${libdir}/dri@:>@])],
2121     [VA_LIB_INSTALL_DIR="$withval"],
2122     [VA_LIB_INSTALL_DIR="${libdir}/dri"])
2123 AC_SUBST([VA_LIB_INSTALL_DIR])
2124
2125 AC_ARG_WITH([d3d-libdir],
2126     [AS_HELP_STRING([--with-d3d-libdir=DIR],
2127         [directory for the D3D modules @<:@${libdir}/d3d@:>@])],
2128     [D3D_DRIVER_INSTALL_DIR="$withval"],
2129     [D3D_DRIVER_INSTALL_DIR="${libdir}/d3d"])
2130 AC_SUBST([D3D_DRIVER_INSTALL_DIR])
2131
2132 dnl
2133 dnl Gallium helper functions
2134 dnl
2135 gallium_require_drm() {
2136     if test "x$have_libdrm" != xyes; then
2137        AC_MSG_ERROR([$1 requires libdrm >= $LIBDRM_REQUIRED])
2138     fi
2139 }
2140
2141 gallium_require_llvm() {
2142     if test "x$MESA_LLVM" = x0; then
2143         case "$host" in *gnux32) return;; esac
2144         case "$host_cpu" in
2145         i*86|x86_64|amd64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
2146         esac
2147     fi
2148 }
2149
2150 gallium_require_drm_loader() {
2151     if test "x$need_pci_id$have_pci_id" = xyesno; then
2152         AC_MSG_ERROR([Gallium drm loader requires libudev >= $LIBUDEV_REQUIRED or sysfs])
2153     fi
2154 }
2155
2156 dnl This is for Glamor. Skip this if OpenGL is disabled.
2157 require_egl_drm() {
2158     if test "x$enable_opengl" = xno; then
2159         return 0
2160     fi
2161
2162     case "$with_egl_platforms" in
2163         *drm*)
2164             ;;
2165          *)
2166             AC_MSG_ERROR([--with-egl-platforms=drm is required to build the $1 driver.])
2167             ;;
2168     esac
2169     if test "x$enable_gbm" != xyes; then
2170             AC_MSG_ERROR([--enable-gbm is required to build the $1 driver.])
2171     fi
2172 }
2173
2174 radeon_llvm_check() {
2175     if test ${LLVM_VERSION_INT} -lt 307; then
2176         amdgpu_llvm_target_name='r600'
2177     else
2178         amdgpu_llvm_target_name='amdgpu'
2179     fi
2180     if test "x$enable_gallium_llvm" != "xyes"; then
2181         AC_MSG_ERROR([--enable-gallium-llvm is required when building $1])
2182     fi
2183     llvm_check_version_for "3" "6" "0" $1
2184     if test true && $LLVM_CONFIG --targets-built | grep -iqvw $amdgpu_llvm_target_name ; then
2185         AC_MSG_ERROR([LLVM $amdgpu_llvm_target_name not enabled in your LLVM build.])
2186     fi
2187     LLVM_COMPONENTS="${LLVM_COMPONENTS} $amdgpu_llvm_target_name bitreader ipo"
2188     NEED_RADEON_LLVM=yes
2189     if test "x$have_libelf" != xyes; then
2190        AC_MSG_ERROR([$1 requires libelf when using llvm])
2191     fi
2192 }
2193
2194 swr_llvm_check() {
2195     gallium_require_llvm $1
2196     if test ${LLVM_VERSION_INT} -lt 306; then
2197         AC_MSG_ERROR([LLVM version 3.6 or later required when building $1])
2198     fi
2199     if test "x$enable_gallium_llvm" != "xyes"; then
2200         AC_MSG_ERROR([--enable-gallium-llvm is required when building $1])
2201     fi
2202 }
2203
2204 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
2205 if test -n "$with_gallium_drivers"; then
2206     gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
2207     for driver in $gallium_drivers; do
2208         case "x$driver" in
2209         xsvga)
2210             HAVE_GALLIUM_SVGA=yes
2211             gallium_require_drm "svga"
2212             gallium_require_drm_loader
2213             ;;
2214         xi915)
2215             HAVE_GALLIUM_I915=yes
2216             PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
2217             gallium_require_drm "Gallium i915"
2218             gallium_require_drm_loader
2219             ;;
2220         xilo)
2221             HAVE_GALLIUM_ILO=yes
2222             PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
2223             gallium_require_drm "Gallium i965/ilo"
2224             gallium_require_drm_loader
2225             ;;
2226         xr300)
2227             HAVE_GALLIUM_R300=yes
2228             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2229             gallium_require_drm "Gallium R300"
2230             gallium_require_drm_loader
2231             gallium_require_llvm "Gallium R300"
2232             ;;
2233         xr600)
2234             HAVE_GALLIUM_R600=yes
2235             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2236             gallium_require_drm "Gallium R600"
2237             gallium_require_drm_loader
2238             if test "x$enable_r600_llvm" = xyes -o "x$enable_opencl" = xyes; then
2239                 radeon_llvm_check "r600g"
2240                 LLVM_COMPONENTS="${LLVM_COMPONENTS} bitreader asmparser"
2241             fi
2242             if test "x$enable_r600_llvm" = xyes; then
2243                 USE_R600_LLVM_COMPILER=yes;
2244             fi
2245             if test "x$enable_opencl" = xyes; then
2246                 LLVM_COMPONENTS="${LLVM_COMPONENTS} bitreader asmparser"
2247             fi
2248             ;;
2249         xradeonsi)
2250             HAVE_GALLIUM_RADEONSI=yes
2251             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2252             PKG_CHECK_MODULES([AMDGPU], [libdrm_amdgpu >= $LIBDRM_AMDGPU_REQUIRED])
2253             gallium_require_drm "radeonsi"
2254             gallium_require_drm_loader
2255             radeon_llvm_check "radeonsi"
2256             require_egl_drm "radeonsi"
2257             ;;
2258         xnouveau)
2259             HAVE_GALLIUM_NOUVEAU=yes
2260             PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
2261             gallium_require_drm "nouveau"
2262             gallium_require_drm_loader
2263             ;;
2264         xfreedreno)
2265             HAVE_GALLIUM_FREEDRENO=yes
2266             PKG_CHECK_MODULES([FREEDRENO], [libdrm_freedreno >= $LIBDRM_FREEDRENO_REQUIRED])
2267             gallium_require_drm "freedreno"
2268             gallium_require_drm_loader
2269             ;;
2270         xswrast)
2271             HAVE_GALLIUM_SOFTPIPE=yes
2272             if test "x$MESA_LLVM" = x1; then
2273                 HAVE_GALLIUM_LLVMPIPE=yes
2274             fi
2275             ;;
2276         xswr)
2277             AX_CXX_COMPILE_STDCXX([11], [noext], [mandatory])
2278             swr_llvm_check "swr"
2279
2280             AC_MSG_CHECKING([whether $CXX supports AVX/AVX2])
2281             AVX_CXXFLAGS="-march=core-avx-i"
2282             AVX2_CXXFLAGS="-march=core-avx2"
2283
2284             AC_LANG_PUSH([C++])
2285             save_CXXFLAGS="$CXXFLAGS"
2286             CXXFLAGS="$AVX_CXXFLAGS $CXXFLAGS"
2287             AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],[],
2288                               [AC_MSG_ERROR([AVX compiler support not detected])])
2289             CXXFLAGS="$save_CXXFLAGS"
2290
2291             save_CFLAGS="$CXXFLAGS"
2292             CXXFLAGS="$AVX2_CXXFLAGS $CXXFLAGS"
2293             AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],[],
2294                               [AC_MSG_ERROR([AVX2 compiler support not detected])])
2295             CXXFLAGS="$save_CXXFLAGS"
2296             AC_LANG_POP([C++])
2297
2298             HAVE_GALLIUM_SWR=yes
2299             ;;
2300         xvc4)
2301             HAVE_GALLIUM_VC4=yes
2302             gallium_require_drm "vc4"
2303             gallium_require_drm_loader
2304
2305             PKG_CHECK_MODULES([SIMPENROSE], [simpenrose],
2306                               [USE_VC4_SIMULATOR=yes;
2307                                DEFINES="$DEFINES -DUSE_VC4_SIMULATOR"],
2308                               [USE_VC4_SIMULATOR=no])
2309             ;;
2310         xvirgl)
2311             HAVE_GALLIUM_VIRGL=yes
2312             gallium_require_drm "virgl"
2313             gallium_require_drm_loader
2314             require_egl_drm "virgl"
2315             ;;
2316         *)
2317             AC_MSG_ERROR([Unknown Gallium driver: $driver])
2318             ;;
2319         esac
2320     done
2321 fi
2322
2323 dnl Set LLVM_LIBS - This is done after the driver configuration so
2324 dnl that drivers can add additional components to LLVM_COMPONENTS.
2325 dnl Previously, gallium drivers were updating LLVM_LIBS directly
2326 dnl by calling llvm-config --libs ${DRIVER_LLVM_COMPONENTS}, but
2327 dnl this was causing the same libraries to be appear multiple times
2328 dnl in LLVM_LIBS.
2329
2330 if test "x$MESA_LLVM" != x0; then
2331
2332     if ! $LLVM_CONFIG --libs ${LLVM_COMPONENTS} >/dev/null; then
2333        AC_MSG_ERROR([Calling ${LLVM_CONFIG} failed])
2334     fi
2335     LLVM_LIBS="`$LLVM_CONFIG --libs ${LLVM_COMPONENTS}`"
2336
2337     dnl llvm-config may not give the right answer when llvm is a built as a
2338     dnl single shared library, so we must work the library name out for
2339     dnl ourselves.
2340     dnl (See https://llvm.org/bugs/show_bug.cgi?id=6823)
2341     if test "x$enable_llvm_shared_libs" = xyes; then
2342         dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
2343         LLVM_SO_NAME=LLVM-`$LLVM_CONFIG --version`
2344         AS_IF([test -f "$LLVM_LIBDIR/lib$LLVM_SO_NAME.$IMP_LIB_EXT"], [llvm_have_one_so=yes])
2345
2346         if test "x$llvm_have_one_so" = xyes; then
2347             dnl LLVM was built using auto*, so there is only one shared object.
2348             LLVM_LIBS="-l$LLVM_SO_NAME"
2349         else
2350             dnl If LLVM was built with CMake, there will be one shared object per
2351             dnl component.
2352             AS_IF([test ! -f "$LLVM_LIBDIR/libLLVMTarget.$IMP_LIB_EXT"],
2353                     [AC_MSG_ERROR([Could not find llvm shared libraries:
2354         Please make sure you have built llvm with the --enable-shared option
2355         and that your llvm libraries are installed in $LLVM_LIBDIR
2356         If you have installed your llvm libraries to a different directory you
2357         can use the --with-llvm-prefix= configure flag to specify this directory.
2358         NOTE: Mesa is attempting to use llvm shared libraries by default.
2359         If you do not want to build with llvm shared libraries and instead want to
2360         use llvm static libraries then add --disable-llvm-shared-libs to your configure
2361         invocation and rebuild.])])
2362
2363            dnl We don't need to update LLVM_LIBS in this case because the LLVM
2364            dnl install uses a shared object for each component and we have
2365            dnl already added all of these objects to LLVM_LIBS.
2366         fi
2367     else
2368         AC_MSG_WARN([Building mesa with statically linked LLVM may cause compilation issues])
2369         dnl We need to link to llvm system libs when using static libs
2370         dnl However, only llvm 3.5+ provides --system-libs
2371         if test $LLVM_VERSION_MAJOR -eq 3 -a $LLVM_VERSION_MINOR -ge 5; then
2372             LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --system-libs`"
2373         fi
2374     fi
2375 fi
2376
2377 AM_CONDITIONAL(HAVE_GALLIUM_SVGA, test "x$HAVE_GALLIUM_SVGA" = xyes)
2378 AM_CONDITIONAL(HAVE_GALLIUM_I915, test "x$HAVE_GALLIUM_I915" = xyes)
2379 AM_CONDITIONAL(HAVE_GALLIUM_ILO, test "x$HAVE_GALLIUM_ILO" = xyes)
2380 AM_CONDITIONAL(HAVE_GALLIUM_R300, test "x$HAVE_GALLIUM_R300" = xyes)
2381 AM_CONDITIONAL(HAVE_GALLIUM_R600, test "x$HAVE_GALLIUM_R600" = xyes)
2382 AM_CONDITIONAL(HAVE_GALLIUM_RADEONSI, test "x$HAVE_GALLIUM_RADEONSI" = xyes)
2383 AM_CONDITIONAL(HAVE_GALLIUM_RADEON_COMMON, test "x$HAVE_GALLIUM_R600" = xyes -o \
2384                                                 "x$HAVE_GALLIUM_RADEONSI" = xyes)
2385 AM_CONDITIONAL(HAVE_GALLIUM_NOUVEAU, test "x$HAVE_GALLIUM_NOUVEAU" = xyes)
2386 AM_CONDITIONAL(HAVE_GALLIUM_FREEDRENO, test "x$HAVE_GALLIUM_FREEDRENO" = xyes)
2387 AM_CONDITIONAL(HAVE_GALLIUM_SOFTPIPE, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes)
2388 AM_CONDITIONAL(HAVE_GALLIUM_LLVMPIPE, test "x$HAVE_GALLIUM_LLVMPIPE" = xyes)
2389 AM_CONDITIONAL(HAVE_GALLIUM_SWR, test "x$HAVE_GALLIUM_SWR" = xyes)
2390 AM_CONDITIONAL(HAVE_GALLIUM_VC4, test "x$HAVE_GALLIUM_VC4" = xyes)
2391 AM_CONDITIONAL(HAVE_GALLIUM_VIRGL, test "x$HAVE_GALLIUM_VIRGL" = xyes)
2392
2393 AM_CONDITIONAL(HAVE_GALLIUM_STATIC_TARGETS, test "x$enable_shared_pipe_drivers" = xno)
2394
2395 if test "x$enable_dri" = xyes; then
2396     GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRI"
2397 fi
2398
2399 if test "x$have_drisw_kms" = xyes; then
2400     GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_KMS"
2401 fi
2402 AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
2403
2404 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
2405 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
2406 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
2407 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
2408 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
2409 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
2410
2411 AM_CONDITIONAL(NEED_RADEON_DRM_WINSYS, test "x$HAVE_GALLIUM_R300" = xyes -o \
2412                                             "x$HAVE_GALLIUM_R600" = xyes -o \
2413                                             "x$HAVE_GALLIUM_RADEONSI" = xyes)
2414 AM_CONDITIONAL(NEED_WINSYS_XLIB, test "x$NEED_WINSYS_XLIB" = xyes)
2415 AM_CONDITIONAL(NEED_RADEON_LLVM, test x$NEED_RADEON_LLVM = xyes)
2416 AM_CONDITIONAL(USE_R600_LLVM_COMPILER, test x$USE_R600_LLVM_COMPILER = xyes)
2417 AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
2418 AM_CONDITIONAL(HAVE_MESA_LLVM, test x$MESA_LLVM = x1)
2419 AM_CONDITIONAL(USE_VC4_SIMULATOR, test x$USE_VC4_SIMULATOR = xyes)
2420 if test "x$USE_VC4_SIMULATOR" = xyes -a "x$HAVE_GALLIUM_ILO" = xyes; then
2421     AC_MSG_ERROR([VC4 simulator on x86 replaces i965 driver build, so ilo must be disabled.])
2422 fi
2423
2424 AM_CONDITIONAL(HAVE_LIBDRM, test "x$have_libdrm" = xyes)
2425 AM_CONDITIONAL(HAVE_X11_DRIVER, test "x$enable_xlib_glx" = xyes)
2426 AM_CONDITIONAL(HAVE_OSMESA, test "x$enable_osmesa" = xyes)
2427 AM_CONDITIONAL(HAVE_GALLIUM_OSMESA, test "x$enable_gallium_osmesa" = xyes)
2428
2429 AM_CONDITIONAL(HAVE_X86_ASM, test "x$asm_arch" = xx86 -o "x$asm_arch" = xx86_64)
2430 AM_CONDITIONAL(HAVE_X86_64_ASM, test "x$asm_arch" = xx86_64)
2431 AM_CONDITIONAL(HAVE_SPARC_ASM, test "x$asm_arch" = xsparc)
2432
2433 AC_SUBST([NINE_MAJOR], 1)
2434 AC_SUBST([NINE_MINOR], 0)
2435 AC_SUBST([NINE_TINY], 0)
2436 AC_SUBST([NINE_VERSION], "$NINE_MAJOR.$NINE_MINOR.$NINE_TINY")
2437
2438 AC_SUBST([VDPAU_MAJOR], 1)
2439 AC_SUBST([VDPAU_MINOR], 0)
2440
2441 VA_MAJOR=`$PKG_CONFIG --modversion libva | $SED -n 's/\([[^\.]]*\)\..*$/\1/p'`
2442 VA_MINOR=`$PKG_CONFIG --modversion libva | $SED -n 's/.*\.\(.*\)\..*$/\1/p'`
2443 AC_SUBST([VA_MAJOR], $VA_MAJOR)
2444 AC_SUBST([VA_MINOR], $VA_MINOR)
2445
2446 AC_SUBST([XVMC_MAJOR], 1)
2447 AC_SUBST([XVMC_MINOR], 0)
2448
2449 XA_HEADER="$srcdir/src/gallium/state_trackers/xa/xa_tracker.h"
2450 XA_MAJOR=`grep "#define XA_TRACKER_VERSION_MAJOR" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_MAJOR //'`
2451 XA_MINOR=`grep "#define XA_TRACKER_VERSION_MINOR" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_MINOR //'`
2452 XA_TINY=`grep "#define XA_TRACKER_VERSION_PATCH" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_PATCH //'`
2453
2454 AC_SUBST([XA_MAJOR], $XA_MAJOR)
2455 AC_SUBST([XA_MINOR], $XA_MINOR)
2456 AC_SUBST([XA_TINY], $XA_TINY)
2457 AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_TINY")
2458
2459 dnl Restore LDFLAGS and CPPFLAGS
2460 LDFLAGS="$_SAVE_LDFLAGS"
2461 CPPFLAGS="$_SAVE_CPPFLAGS"
2462
2463 dnl Suppress clang's warnings about unused CFLAGS and CXXFLAGS
2464 if test "x$acv_mesa_CLANG" = xyes; then
2465     CFLAGS="$CFLAGS -Qunused-arguments"
2466     CXXFLAGS="$CXXFLAGS -Qunused-arguments"
2467 fi
2468
2469 dnl Add user CFLAGS and CXXFLAGS
2470 CFLAGS="$CFLAGS $USER_CFLAGS"
2471 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
2472
2473 dnl Substitute the config
2474 AC_CONFIG_FILES([Makefile
2475                 src/Makefile
2476                 src/compiler/Makefile
2477                 src/egl/Makefile
2478                 src/egl/main/egl.pc
2479                 src/egl/wayland/wayland-drm/Makefile
2480                 src/egl/wayland/wayland-egl/Makefile
2481                 src/egl/wayland/wayland-egl/wayland-egl.pc
2482                 src/gallium/Makefile
2483                 src/gallium/auxiliary/Makefile
2484                 src/gallium/auxiliary/pipe-loader/Makefile
2485                 src/gallium/drivers/freedreno/Makefile
2486                 src/gallium/drivers/ddebug/Makefile
2487                 src/gallium/drivers/i915/Makefile
2488                 src/gallium/drivers/ilo/Makefile
2489                 src/gallium/drivers/llvmpipe/Makefile
2490                 src/gallium/drivers/noop/Makefile
2491                 src/gallium/drivers/nouveau/Makefile
2492                 src/gallium/drivers/r300/Makefile
2493                 src/gallium/drivers/r600/Makefile
2494                 src/gallium/drivers/radeon/Makefile
2495                 src/gallium/drivers/radeonsi/Makefile
2496                 src/gallium/drivers/rbug/Makefile
2497                 src/gallium/drivers/softpipe/Makefile
2498                 src/gallium/drivers/svga/Makefile
2499                 src/gallium/drivers/swr/Makefile
2500                 src/gallium/drivers/swr/avx/Makefile
2501                 src/gallium/drivers/swr/avx2/Makefile
2502                 src/gallium/drivers/trace/Makefile
2503                 src/gallium/drivers/vc4/Makefile
2504                 src/gallium/drivers/virgl/Makefile
2505                 src/gallium/state_trackers/clover/Makefile
2506                 src/gallium/state_trackers/dri/Makefile
2507                 src/gallium/state_trackers/glx/xlib/Makefile
2508                 src/gallium/state_trackers/nine/Makefile
2509                 src/gallium/state_trackers/omx/Makefile
2510                 src/gallium/state_trackers/osmesa/Makefile
2511                 src/gallium/state_trackers/va/Makefile
2512                 src/gallium/state_trackers/vdpau/Makefile
2513                 src/gallium/state_trackers/xa/Makefile
2514                 src/gallium/state_trackers/xvmc/Makefile
2515                 src/gallium/targets/d3dadapter9/Makefile
2516                 src/gallium/targets/d3dadapter9/d3d.pc
2517                 src/gallium/targets/dri/Makefile
2518                 src/gallium/targets/libgl-xlib/Makefile
2519                 src/gallium/targets/omx/Makefile
2520                 src/gallium/targets/opencl/Makefile
2521                 src/gallium/targets/opencl/mesa.icd
2522                 src/gallium/targets/osmesa/Makefile
2523                 src/gallium/targets/osmesa/osmesa.pc
2524                 src/gallium/targets/pipe-loader/Makefile
2525                 src/gallium/targets/va/Makefile
2526                 src/gallium/targets/vdpau/Makefile
2527                 src/gallium/targets/xa/Makefile
2528                 src/gallium/targets/xa/xatracker.pc
2529                 src/gallium/targets/xvmc/Makefile
2530                 src/gallium/tests/trivial/Makefile
2531                 src/gallium/tests/unit/Makefile
2532                 src/gallium/winsys/freedreno/drm/Makefile
2533                 src/gallium/winsys/i915/drm/Makefile
2534                 src/gallium/winsys/intel/drm/Makefile
2535                 src/gallium/winsys/nouveau/drm/Makefile
2536                 src/gallium/winsys/radeon/drm/Makefile
2537                 src/gallium/winsys/amdgpu/drm/Makefile
2538                 src/gallium/winsys/svga/drm/Makefile
2539                 src/gallium/winsys/sw/dri/Makefile
2540                 src/gallium/winsys/sw/kms-dri/Makefile
2541                 src/gallium/winsys/sw/null/Makefile
2542                 src/gallium/winsys/sw/wrapper/Makefile
2543                 src/gallium/winsys/sw/xlib/Makefile
2544                 src/gallium/winsys/vc4/drm/Makefile
2545                 src/gallium/winsys/virgl/drm/Makefile
2546                 src/gallium/winsys/virgl/vtest/Makefile
2547                 src/gbm/Makefile
2548                 src/gbm/main/gbm.pc
2549                 src/glx/Makefile
2550                 src/glx/apple/Makefile
2551                 src/glx/tests/Makefile
2552                 src/gtest/Makefile
2553                 src/loader/Makefile
2554                 src/mapi/Makefile
2555                 src/mapi/es1api/glesv1_cm.pc
2556                 src/mapi/es2api/glesv2.pc
2557                 src/mapi/glapi/gen/Makefile
2558                 src/mesa/Makefile
2559                 src/mesa/gl.pc
2560                 src/mesa/drivers/dri/dri.pc
2561                 src/mesa/drivers/dri/common/Makefile
2562                 src/mesa/drivers/dri/common/xmlpool/Makefile
2563                 src/mesa/drivers/dri/i915/Makefile
2564                 src/mesa/drivers/dri/i965/Makefile
2565                 src/mesa/drivers/dri/Makefile
2566                 src/mesa/drivers/dri/nouveau/Makefile
2567                 src/mesa/drivers/dri/r200/Makefile
2568                 src/mesa/drivers/dri/radeon/Makefile
2569                 src/mesa/drivers/dri/swrast/Makefile
2570                 src/mesa/drivers/osmesa/Makefile
2571                 src/mesa/drivers/osmesa/osmesa.pc
2572                 src/mesa/drivers/x11/Makefile
2573                 src/mesa/main/tests/Makefile
2574                 src/util/Makefile
2575                 src/util/tests/hash_table/Makefile])
2576
2577 AC_OUTPUT
2578
2579 dnl
2580 dnl Output some configuration info for the user
2581 dnl
2582 echo ""
2583 echo "        prefix:          $prefix"
2584 echo "        exec_prefix:     $exec_prefix"
2585 echo "        libdir:          $libdir"
2586 echo "        includedir:      $includedir"
2587
2588 dnl API info
2589 echo ""
2590 echo "        OpenGL:          $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
2591
2592 dnl Driver info
2593 echo ""
2594 case "x$enable_osmesa$enable_gallium_osmesa" in
2595 xnoyes)
2596         echo "        OSMesa:          lib$OSMESA_LIB (Gallium)"
2597         ;;
2598 xyesno)
2599         echo "        OSMesa:          lib$OSMESA_LIB"
2600         ;;
2601 xnono)
2602         echo "        OSMesa:          no"
2603         ;;
2604 esac
2605
2606 echo ""
2607 if test "x$enable_dri" != xno; then
2608         echo "        DRI platform:    $dri_platform"
2609         if test -z "$DRI_DIRS"; then
2610             echo "        DRI drivers:     no"
2611         else
2612             echo "        DRI drivers:     $DRI_DIRS"
2613         fi
2614         echo "        DRI driver dir:  $DRI_DRIVER_INSTALL_DIR"
2615 fi
2616
2617 case "x$enable_glx$enable_xlib_glx" in
2618 xyesyes)
2619     echo "        GLX:             Xlib-based"
2620     ;;
2621 xyesno)
2622     echo "        GLX:             DRI-based"
2623     ;;
2624 *)
2625     echo "        GLX:             $enable_glx"
2626     ;;
2627 esac
2628
2629 dnl EGL
2630 echo ""
2631 echo "        EGL:             $enable_egl"
2632 if test "$enable_egl" = yes; then
2633     echo "        EGL platforms:   $egl_platforms"
2634
2635     egl_drivers=""
2636     if test "x$HAVE_EGL_DRIVER_DRI2" != "x"; then
2637         egl_drivers="$egl_drivers builtin:egl_dri2"
2638     fi
2639     if test "x$HAVE_EGL_DRIVER_DRI3" != "x"; then
2640         egl_drivers="$egl_drivers builtin:egl_dri3"
2641     fi
2642
2643     echo "        EGL drivers:    $egl_drivers"
2644 fi
2645
2646 echo ""
2647 if test "x$MESA_LLVM" = x1; then
2648     echo "        llvm:            yes"
2649     echo "        llvm-config:     $LLVM_CONFIG"
2650     echo "        llvm-version:    $LLVM_VERSION"
2651 else
2652     echo "        llvm:            no"
2653 fi
2654
2655 echo ""
2656 if test -n "$with_gallium_drivers"; then
2657     echo "        Gallium drivers: $gallium_drivers"
2658     echo "        Gallium st:      $gallium_st"
2659 else
2660     echo "        Gallium:         no"
2661 fi
2662
2663 dnl Shader cache
2664 echo ""
2665 echo "        Shader cache:    $enable_shader_cache"
2666 if test "x$enable_shader_cache" = "xyes"; then
2667     echo "        With SHA1 from:  $with_sha1"
2668 fi
2669
2670 dnl Libraries
2671 echo ""
2672 echo "        Shared libs:     $enable_shared"
2673 echo "        Static libs:     $enable_static"
2674 echo "        Shared-glapi:    $enable_shared_glapi"
2675
2676 dnl Compiler options
2677 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2678 cflags=`echo $CFLAGS | \
2679     $SED 's/^ *//;s/  */ /;s/ *$//'`
2680 cxxflags=`echo $CXXFLAGS | \
2681     $SED 's/^ *//;s/  */ /;s/ *$//'`
2682 defines=`echo $DEFINES | $SED 's/^ *//;s/  */ /;s/ *$//'`
2683 echo ""
2684 echo "        CFLAGS:          $cflags"
2685 echo "        CXXFLAGS:        $cxxflags"
2686 echo "        Macros:          $defines"
2687 echo ""
2688 if test "x$MESA_LLVM" = x1; then
2689     echo "        LLVM_CFLAGS:     $LLVM_CFLAGS"
2690     echo "        LLVM_CXXFLAGS:   $LLVM_CXXFLAGS"
2691     echo "        LLVM_CPPFLAGS:   $LLVM_CPPFLAGS"
2692     echo "        LLVM_LDFLAGS:    $LLVM_LDFLAGS"
2693     echo ""
2694 fi
2695 echo "        PYTHON2:         $PYTHON2"
2696
2697 echo ""
2698 echo "        Run '${MAKE-make}' to build Mesa"
2699 echo ""