OSDN Git Service

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