OSDN Git Service

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