OSDN Git Service

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