OSDN Git Service

docs: add sha256 checksums for 12.0.2
[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_HEADER_MAJOR
788 AC_CHECK_HEADER([xlocale.h], [DEFINES="$DEFINES -DHAVE_XLOCALE_H"])
789 AC_CHECK_HEADER([sys/sysctl.h], [DEFINES="$DEFINES -DHAVE_SYS_SYSCTL_H"])
790 AC_CHECK_FUNC([strtof], [DEFINES="$DEFINES -DHAVE_STRTOF"])
791 AC_CHECK_FUNC([mkostemp], [DEFINES="$DEFINES -DHAVE_MKOSTEMP"])
792
793 dnl Check to see if dlopen is in default libraries (like Solaris, which
794 dnl has it in libc), or if libdl is needed to get it.
795 AC_CHECK_FUNC([dlopen], [DEFINES="$DEFINES -DHAVE_DLOPEN"],
796     [AC_CHECK_LIB([dl], [dlopen],
797        [DEFINES="$DEFINES -DHAVE_DLOPEN"; DLOPEN_LIBS="-ldl"])])
798 AC_SUBST([DLOPEN_LIBS])
799
800 dnl Check if that library also has dladdr
801 save_LIBS="$LIBS"
802 LIBS="$LIBS $DLOPEN_LIBS"
803 AC_CHECK_FUNCS([dladdr])
804 LIBS="$save_LIBS"
805
806 case "$host_os" in
807 darwin*)
808     ;;
809 *)
810     AC_CHECK_FUNCS([clock_gettime], [CLOCK_LIB=],
811                    [AC_CHECK_LIB([rt], [clock_gettime], [CLOCK_LIB=-lrt],
812                                  [AC_MSG_ERROR([Could not find clock_gettime])])])
813     AC_SUBST([CLOCK_LIB])
814     ;;
815 esac
816
817 dnl See if posix_memalign is available
818 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
819
820 dnl Check for pthreads
821 AX_PTHREAD
822 if test "x$ax_pthread_ok" = xno; then
823     AC_MSG_ERROR([Building mesa on this platform requires pthreads])
824 fi
825 dnl AX_PTHREADS leaves PTHREAD_LIBS empty for gcc and sets PTHREAD_CFLAGS
826 dnl to -pthread, which causes problems if we need -lpthread to appear in
827 dnl pkgconfig files.
828 test -z "$PTHREAD_LIBS" && PTHREAD_LIBS="-lpthread"
829
830 PKG_CHECK_MODULES(PTHREADSTUBS, pthread-stubs)
831 AC_SUBST(PTHREADSTUBS_CFLAGS)
832 AC_SUBST(PTHREADSTUBS_LIBS)
833
834 dnl SELinux awareness.
835 AC_ARG_ENABLE([selinux],
836     [AS_HELP_STRING([--enable-selinux],
837         [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
838     [MESA_SELINUX="$enableval"],
839     [MESA_SELINUX=no])
840 if test "x$enable_selinux" = "xyes"; then
841     PKG_CHECK_MODULES([SELINUX], [libselinux], [],
842         [AC_CHECK_HEADER([selinux/selinux.h],[],
843                          [AC_MSG_ERROR([SELinux headers not found])])
844          AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
845                       [AC_MSG_ERROR([SELinux library not found])])
846          SELINUX_LIBS="-lselinux"])
847     DEFINES="$DEFINES -DMESA_SELINUX"
848 fi
849 AC_SUBST([SELINUX_CFLAGS])
850 AC_SUBST([SELINUX_LIBS])
851
852 dnl Options for APIs
853 AC_ARG_ENABLE([opengl],
854     [AS_HELP_STRING([--disable-opengl],
855         [disable support for standard OpenGL API @<:@default=enabled@:>@])],
856     [enable_opengl="$enableval"],
857     [enable_opengl=yes])
858 AC_ARG_ENABLE([gles1],
859     [AS_HELP_STRING([--disable-gles1],
860         [disable support for OpenGL ES 1.x API @<:@default=enabled@:>@])],
861     [enable_gles1="$enableval"],
862     [enable_gles1=yes])
863 AC_ARG_ENABLE([gles2],
864     [AS_HELP_STRING([--disable-gles2],
865         [disable support for OpenGL ES 2.x API @<:@default=enabled@:>@])],
866     [enable_gles2="$enableval"],
867     [enable_gles2=yes])
868
869 AC_ARG_ENABLE([dri],
870     [AS_HELP_STRING([--enable-dri],
871         [enable DRI modules @<:@default=enabled@:>@])],
872     [enable_dri="$enableval"],
873     [enable_dri=yes])
874
875 case "$host_os" in
876 linux*)
877     dri3_default=yes
878     ;;
879 *)
880     dri3_default=no
881     ;;
882 esac
883
884 if test "x$enable_dri" = xno; then
885     dri3_default=no
886 fi
887
888 AC_ARG_ENABLE([dri3],
889     [AS_HELP_STRING([--enable-dri3],
890         [enable DRI3 @<:@default=auto@:>@])],
891     [enable_dri3="$enableval"],
892     [enable_dri3="$dri3_default"])
893 AC_ARG_ENABLE([glx],
894     [AS_HELP_STRING([--enable-glx@<:@=dri|xlib|gallium-xlib@:>@],
895         [enable the GLX library and choose an implementation @<:@default=auto@:>@])],
896     [enable_glx="$enableval"],
897     [enable_glx=yes])
898 AC_ARG_ENABLE([osmesa],
899     [AS_HELP_STRING([--enable-osmesa],
900         [enable OSMesa library @<:@default=disabled@:>@])],
901     [enable_osmesa="$enableval"],
902     [enable_osmesa=no])
903 AC_ARG_ENABLE([gallium-osmesa],
904     [AS_HELP_STRING([--enable-gallium-osmesa],
905         [enable Gallium implementation of the OSMesa library @<:@default=disabled@:>@])],
906     [enable_gallium_osmesa="$enableval"],
907     [enable_gallium_osmesa=no])
908 AC_ARG_ENABLE([egl],
909     [AS_HELP_STRING([--disable-egl],
910         [disable EGL library @<:@default=enabled@:>@])],
911     [enable_egl="$enableval"],
912     [enable_egl=yes])
913
914 AC_ARG_ENABLE([xa],
915     [AS_HELP_STRING([--enable-xa],
916         [enable build of the XA X Acceleration API @<:@default=disabled@:>@])],
917     [enable_xa="$enableval"],
918     [enable_xa=no])
919 AC_ARG_ENABLE([gbm],
920    [AS_HELP_STRING([--enable-gbm],
921          [enable gbm library @<:@default=auto@:>@])],
922    [enable_gbm="$enableval"],
923    [enable_gbm=auto])
924 AC_ARG_ENABLE([nine],
925     [AS_HELP_STRING([--enable-nine],
926         [enable build of the nine Direct3D9 API @<:@default=no@:>@])],
927     [enable_nine="$enableval"],
928     [enable_nine=no])
929
930 AC_ARG_ENABLE([xvmc],
931    [AS_HELP_STRING([--enable-xvmc],
932          [enable xvmc library @<:@default=auto@:>@])],
933    [enable_xvmc="$enableval"],
934    [enable_xvmc=auto])
935 AC_ARG_ENABLE([vdpau],
936    [AS_HELP_STRING([--enable-vdpau],
937          [enable vdpau library @<:@default=auto@:>@])],
938    [enable_vdpau="$enableval"],
939    [enable_vdpau=auto])
940 AC_ARG_ENABLE([omx],
941    [AS_HELP_STRING([--enable-omx],
942          [enable OpenMAX library @<:@default=disabled@:>@])],
943    [enable_omx="$enableval"],
944    [enable_omx=no])
945 AC_ARG_ENABLE([va],
946    [AS_HELP_STRING([--enable-va],
947          [enable va library @<:@default=auto@:>@])],
948    [enable_va="$enableval"],
949    [enable_va=auto])
950 AC_ARG_ENABLE([opencl],
951    [AS_HELP_STRING([--enable-opencl],
952          [enable OpenCL library @<:@default=disabled@:>@])],
953    [enable_opencl="$enableval"],
954    [enable_opencl=no])
955 AC_ARG_ENABLE([opencl_icd],
956    [AS_HELP_STRING([--enable-opencl-icd],
957           [Build an OpenCL ICD library to be loaded by an ICD implementation
958            @<:@default=disabled@:>@])],
959     [enable_opencl_icd="$enableval"],
960     [enable_opencl_icd=no])
961
962 AC_ARG_ENABLE([gallium-tests],
963     [AS_HELP_STRING([--enable-gallium-tests],
964         [Enable optional Gallium tests) @<:@default=disabled@:>@])],
965     [enable_gallium_tests="$enableval"],
966     [enable_gallium_tests=no])
967
968 # Option for Gallium drivers
969
970 # Keep this in sync with the --with-gallium-drivers help string default value
971 GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
972
973 AC_ARG_WITH([gallium-drivers],
974     [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
975         [comma delimited Gallium drivers list, e.g.
976         "i915,ilo,nouveau,r300,r600,radeonsi,freedreno,svga,swrast,vc4,virgl"
977         @<:@default=r300,r600,svga,swrast@:>@])],
978     [with_gallium_drivers="$withval"],
979     [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
980
981 # Doing '--without-gallium-drivers' will set this variable to 'no'.  Clear it
982 # here so that the script doesn't choke on an unknown driver name later.
983 case "$with_gallium_drivers" in
984     yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
985     no) with_gallium_drivers='' ;;
986 esac
987
988 if test "x$enable_opengl" = xno -a \
989         "x$enable_gles1" = xno -a \
990         "x$enable_gles2" = xno -a \
991         "x$enable_nine" = xno -a \
992         "x$enable_xa" = xno -a \
993         "x$enable_xvmc" = xno -a \
994         "x$enable_vdpau" = xno -a \
995         "x$enable_omx" = xno -a \
996         "x$enable_va" = xno -a \
997         "x$enable_opencl" = xno; then
998     AC_MSG_ERROR([at least one API should be enabled])
999 fi
1000
1001 # Building OpenGL ES1 and/or ES2 without OpenGL is not supported on mesa 9.0.x
1002 if test "x$enable_opengl" = xno -a \
1003         "x$enable_gles1" = xyes; then
1004     AC_MSG_ERROR([Building OpenGL ES1 without OpenGL is not supported])
1005 fi
1006
1007 if test "x$enable_opengl" = xno -a \
1008         "x$enable_gles2" = xyes; then
1009     AC_MSG_ERROR([Building OpenGL ES2 without OpenGL is not supported])
1010 fi
1011
1012 AM_CONDITIONAL(HAVE_OPENGL, test "x$enable_opengl" = xyes)
1013 AM_CONDITIONAL(HAVE_OPENGL_ES1, test "x$enable_gles1" = xyes)
1014 AM_CONDITIONAL(HAVE_OPENGL_ES2, test "x$enable_gles2" = xyes)
1015 AM_CONDITIONAL(NEED_OPENGL_COMMON, test "x$enable_opengl" = xyes -o \
1016                                         "x$enable_gles1" = xyes -o \
1017                                         "x$enable_gles2" = xyes)
1018
1019 # Validate GLX options
1020 if test "x$enable_glx" = xyes; then
1021     if test "x$enable_dri" = xyes; then
1022         enable_glx=dri
1023     elif test -n "$with_gallium_drivers"; then
1024         enable_glx=gallium-xlib
1025     else
1026         enable_glx=xlib
1027     fi
1028 fi
1029 case "x$enable_glx" in
1030 xdri | xxlib | xgallium-xlib)
1031     # GLX requires OpenGL
1032     if test "x$enable_opengl" = xno; then
1033         AC_MSG_ERROR([GLX cannot be built without OpenGL])
1034     fi
1035
1036     # Check individual dependencies
1037     case "x$enable_glx" in
1038     xdri)
1039         if test "x$enable_dri" = xno; then
1040             AC_MSG_ERROR([DRI-based GLX requires DRI to be enabled])
1041         fi
1042         ;;
1043     xxlib)
1044         if test "x$enable_dri" = xyes; then
1045             AC_MSG_ERROR([Xlib-based GLX cannot be built with DRI enabled])
1046         fi
1047         ;;
1048     xgallium-xlib )
1049         if test "x$enable_dri" = xyes; then
1050             AC_MSG_ERROR([Xlib-based (Gallium) GLX cannot be built with DRI enabled])
1051         fi
1052         if test -z "$with_gallium_drivers"; then
1053             AC_MSG_ERROR([Xlib-based (Gallium) GLX cannot be built without Gallium enabled])
1054         fi
1055         ;;
1056     esac
1057     ;;
1058 xno)
1059     ;;
1060 *)
1061     AC_MSG_ERROR([Illegal value for --enable-glx: $enable_glx])
1062     ;;
1063 esac
1064
1065 AM_CONDITIONAL(HAVE_GLX, test "x$enable_glx" != xno)
1066 AM_CONDITIONAL(HAVE_DRI_GLX, test "x$enable_glx" = xdri)
1067 AM_CONDITIONAL(HAVE_XLIB_GLX, test "x$enable_glx" = xxlib)
1068 AM_CONDITIONAL(HAVE_GALLIUM_XLIB_GLX, test "x$enable_glx" = xgallium-xlib)
1069
1070 dnl
1071 dnl Libglvnd configuration
1072 dnl
1073 AC_ARG_ENABLE([libglvnd],
1074     [AS_HELP_STRING([--enable-libglvnd],
1075         [Build for libglvnd @<:@default=disabled@:>@])],
1076     [enable_libglvnd="$enableval"],
1077     [enable_libglvnd=no])
1078 AM_CONDITIONAL(USE_LIBGLVND_GLX, test "x$enable_libglvnd" = xyes)
1079 if test "x$enable_libglvnd" = xyes ; then
1080     dnl XXX: update once we can handle more than libGL/glx.
1081     dnl Namely: we should error out if neither of the glvnd enabled libraries
1082     dnl are built
1083     case "x$enable_glx" in
1084     xno)
1085         AC_MSG_ERROR([cannot build libglvnd without GLX])
1086         ;;
1087     xxlib | xgallium-xlib )
1088         AC_MSG_ERROR([cannot build libgvnd when Xlib-GLX or Gallium-Xlib-GLX is enabled])
1089         ;;
1090     xdri)
1091         ;;
1092     esac
1093
1094     PKG_CHECK_MODULES([GLVND], libglvnd >= 0.1.0)
1095     DEFINES="${DEFINES} -DUSE_LIBGLVND_GLX=1"
1096     DEFAULT_GL_LIB_NAME=GLX_mesa
1097 fi
1098
1099 # Check for libdrm
1100 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
1101                   [have_libdrm=yes], [have_libdrm=no])
1102 if test "x$have_libdrm" = xyes; then
1103         DEFINES="$DEFINES -DHAVE_LIBDRM"
1104 fi
1105
1106 # Select which platform-dependent DRI code gets built
1107 case "$host_os" in
1108 darwin*)
1109     dri_platform='apple' ;;
1110 gnu*|cygwin*)
1111     dri_platform='none' ;;
1112 *)
1113     dri_platform='drm' ;;
1114 esac
1115
1116 if test "x$enable_dri" = xyes -a "x$dri_platform" = xdrm -a "x$have_libdrm" = xyes; then
1117     have_drisw_kms='yes'
1118 fi
1119
1120 AM_CONDITIONAL(HAVE_DRICOMMON, test "x$enable_dri" = xyes )
1121 AM_CONDITIONAL(HAVE_DRISW, test "x$enable_dri" = xyes )
1122 AM_CONDITIONAL(HAVE_DRISW_KMS, test "x$have_drisw_kms" = xyes )
1123 AM_CONDITIONAL(HAVE_DRI2, test "x$enable_dri" = xyes -a "x$dri_platform" = xdrm -a "x$have_libdrm" = xyes )
1124 AM_CONDITIONAL(HAVE_DRI3, test "x$enable_dri3" = xyes -a "x$dri_platform" = xdrm -a "x$have_libdrm" = xyes )
1125 AM_CONDITIONAL(HAVE_APPLEDRI, test "x$enable_dri" = xyes -a "x$dri_platform" = xapple )
1126
1127 AC_ARG_ENABLE([shared-glapi],
1128     [AS_HELP_STRING([--enable-shared-glapi],
1129         [Enable shared glapi for OpenGL @<:@default=enabled@:>@])],
1130     [enable_shared_glapi="$enableval"],
1131     [enable_shared_glapi=yes])
1132
1133 case "x$enable_opengl$enable_gles1$enable_gles2" in
1134 x*yes*yes*)
1135     if test "x$enable_shared_glapi" = xno; then
1136         AC_MSG_ERROR([shared GLAPI required when building two or more of
1137                       the following APIs - opengl, gles1 gles2])
1138     fi
1139     ;;
1140 esac
1141
1142 AM_CONDITIONAL(HAVE_SHARED_GLAPI, test "x$enable_shared_glapi" = xyes)
1143
1144 # Build the pipe-drivers as separate libraries/modules.
1145 # Do not touch this unless you know what you are doing.
1146 # XXX: Expose via configure option ?
1147 enable_shared_pipe_drivers=no
1148
1149 dnl
1150 dnl Driver specific build directories
1151 dnl
1152
1153 if test "x$enable_gallium_osmesa" = xyes; then
1154     if ! echo "$with_gallium_drivers" | grep -q 'swrast'; then
1155         AC_MSG_ERROR([gallium_osmesa requires the gallium swrast driver])
1156     fi
1157     if test "x$enable_osmesa" = xyes; then
1158         AC_MSG_ERROR([Cannot enable both classic and Gallium OSMesa implementations])
1159     fi
1160 fi
1161
1162 AC_SUBST([MESA_LLVM])
1163
1164 # SHA1 hashing
1165 AC_ARG_WITH([sha1],
1166         [AS_HELP_STRING([--with-sha1=libc|libmd|libnettle|libgcrypt|libcrypto|libsha1|CommonCrypto|CryptoAPI],
1167         [choose SHA1 implementation])])
1168 case "x$with_sha1" in
1169 x | xlibc | xlibmd | xlibnettle | xlibgcrypt | xlibcrypto | xlibsha1 | xCommonCrypto | xCryptoAPI)
1170   ;;
1171 *)
1172         AC_MSG_ERROR([Illegal value for --with-sha1: $with_sha1])
1173 esac
1174
1175 AC_CHECK_FUNC([SHA1Init], [HAVE_SHA1_IN_LIBC=yes])
1176 if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_LIBC" = xyes; then
1177         with_sha1=libc
1178 fi
1179 if test "x$with_sha1" = xlibc && test "x$HAVE_SHA1_IN_LIBC" != xyes; then
1180         AC_MSG_ERROR([sha1 in libc requested but not found])
1181 fi
1182 if test "x$with_sha1" = xlibc; then
1183         AC_DEFINE([HAVE_SHA1_IN_LIBC], [1],
1184                 [Use libc SHA1 functions])
1185         SHA1_LIBS=""
1186 fi
1187 AC_CHECK_FUNC([CC_SHA1_Init], [HAVE_SHA1_IN_COMMONCRYPTO=yes])
1188 if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_COMMONCRYPTO" = xyes; then
1189         with_sha1=CommonCrypto
1190 fi
1191 if test "x$with_sha1" = xCommonCrypto && test "x$HAVE_SHA1_IN_COMMONCRYPTO" != xyes; then
1192         AC_MSG_ERROR([CommonCrypto requested but not found])
1193 fi
1194 if test "x$with_sha1" = xCommonCrypto; then
1195         AC_DEFINE([HAVE_SHA1_IN_COMMONCRYPTO], [1],
1196                 [Use CommonCrypto SHA1 functions])
1197         SHA1_LIBS=""
1198 fi
1199 dnl stdcall functions cannot be tested with AC_CHECK_LIB
1200 AC_CHECK_HEADER([wincrypt.h], [HAVE_SHA1_IN_CRYPTOAPI=yes], [], [#include <windows.h>])
1201 if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_CRYPTOAPI" = xyes; then
1202         with_sha1=CryptoAPI
1203 fi
1204 if test "x$with_sha1" = xCryptoAPI && test "x$HAVE_SHA1_IN_CRYPTOAPI" != xyes; then
1205         AC_MSG_ERROR([CryptoAPI requested but not found])
1206 fi
1207 if test "x$with_sha1" = xCryptoAPI; then
1208         AC_DEFINE([HAVE_SHA1_IN_CRYPTOAPI], [1],
1209                 [Use CryptoAPI SHA1 functions])
1210         SHA1_LIBS=""
1211 fi
1212 AC_CHECK_LIB([md], [SHA1Init], [HAVE_LIBMD=yes])
1213 if test "x$with_sha1" = x && test "x$HAVE_LIBMD" = xyes; then
1214         with_sha1=libmd
1215 fi
1216 if test "x$with_sha1" = xlibmd && test "x$HAVE_LIBMD" != xyes; then
1217         AC_MSG_ERROR([libmd requested but not found])
1218 fi
1219 if test "x$with_sha1" = xlibmd; then
1220         AC_DEFINE([HAVE_SHA1_IN_LIBMD], [1],
1221                   [Use libmd SHA1 functions])
1222         SHA1_LIBS=-lmd
1223 fi
1224 PKG_CHECK_MODULES([LIBSHA1], [libsha1], [HAVE_LIBSHA1=yes], [HAVE_LIBSHA1=no])
1225 if test "x$with_sha1" = x && test "x$HAVE_LIBSHA1" = xyes; then
1226    with_sha1=libsha1
1227 fi
1228 if test "x$with_sha1" = xlibsha1 && test "x$HAVE_LIBSHA1" != xyes; then
1229         AC_MSG_ERROR([libsha1 requested but not found])
1230 fi
1231 if test "x$with_sha1" = xlibsha1; then
1232         AC_DEFINE([HAVE_SHA1_IN_LIBSHA1], [1],
1233                   [Use libsha1 for SHA1])
1234         SHA1_LIBS=-lsha1
1235 fi
1236 AC_CHECK_LIB([nettle], [nettle_sha1_init], [HAVE_LIBNETTLE=yes])
1237 if test "x$with_sha1" = x && test "x$HAVE_LIBNETTLE" = xyes; then
1238         with_sha1=libnettle
1239 fi
1240 if test "x$with_sha1" = xlibnettle && test "x$HAVE_LIBNETTLE" != xyes; then
1241         AC_MSG_ERROR([libnettle requested but not found])
1242 fi
1243 if test "x$with_sha1" = xlibnettle; then
1244         AC_DEFINE([HAVE_SHA1_IN_LIBNETTLE], [1],
1245                   [Use libnettle SHA1 functions])
1246         SHA1_LIBS=-lnettle
1247 fi
1248 AC_CHECK_LIB([gcrypt], [gcry_md_open], [HAVE_LIBGCRYPT=yes])
1249 if test "x$with_sha1" = x && test "x$HAVE_LIBGCRYPT" = xyes; then
1250         with_sha1=libgcrypt
1251 fi
1252 if test "x$with_sha1" = xlibgcrypt && test "x$HAVE_LIBGCRYPT" != xyes; then
1253         AC_MSG_ERROR([libgcrypt requested but not found])
1254 fi
1255 if test "x$with_sha1" = xlibgcrypt; then
1256         AC_DEFINE([HAVE_SHA1_IN_LIBGCRYPT], [1],
1257                   [Use libgcrypt SHA1 functions])
1258         SHA1_LIBS=-lgcrypt
1259 fi
1260 # We don't need all of the OpenSSL libraries, just libcrypto
1261 AC_CHECK_LIB([crypto], [SHA1_Init], [HAVE_LIBCRYPTO=yes])
1262 PKG_CHECK_MODULES([OPENSSL], [openssl], [HAVE_OPENSSL_PKC=yes],
1263                   [HAVE_OPENSSL_PKC=no])
1264 if test "x$HAVE_LIBCRYPTO" = xyes || test "x$HAVE_OPENSSL_PKC" = xyes; then
1265         if test "x$with_sha1" = x; then
1266                 with_sha1=libcrypto
1267         fi
1268 else
1269         if test "x$with_sha1" = xlibcrypto; then
1270                 AC_MSG_ERROR([OpenSSL libcrypto requested but not found])
1271         fi
1272 fi
1273 if test "x$with_sha1" = xlibcrypto; then
1274         if test "x$HAVE_LIBCRYPTO" = xyes; then
1275                 SHA1_LIBS=-lcrypto
1276         else
1277                 SHA1_LIBS="$OPENSSL_LIBS"
1278                 SHA1_CFLAGS="$OPENSSL_CFLAGS"
1279         fi
1280 fi
1281 AC_MSG_CHECKING([for SHA1 implementation])
1282 AC_MSG_RESULT([$with_sha1])
1283 AC_SUBST(SHA1_LIBS)
1284 AC_SUBST(SHA1_CFLAGS)
1285
1286 # Enable a define for SHA1
1287 if test "x$with_sha1" != "x"; then
1288         DEFINES="$DEFINES -DHAVE_SHA1"
1289 fi
1290
1291 # Allow user to configure out the shader-cache feature
1292 AC_ARG_ENABLE([shader-cache],
1293     AS_HELP_STRING([--disable-shader-cache], [Disable binary shader cache]),
1294     [enable_shader_cache="$enableval"],
1295     [if test "x$with_sha1" != "x"; then
1296         enable_shader_cache=yes
1297      else
1298         enable_shader_cache=no
1299      fi])
1300 if test "x$with_sha1" = "x"; then
1301     if test "x$enable_shader_cache" = "xyes"; then
1302         AC_MSG_ERROR([Cannot enable shader cache (no SHA-1 implementation found)])
1303     fi
1304 fi
1305 AM_CONDITIONAL([ENABLE_SHADER_CACHE], [test x$enable_shader_cache = xyes])
1306
1307 case "$host_os" in
1308 linux*)
1309     need_pci_id=yes ;;
1310 *)
1311     need_pci_id=no ;;
1312 esac
1313
1314 PKG_CHECK_MODULES([LIBUDEV], [libudev >= $LIBUDEV_REQUIRED],
1315                   have_libudev=yes, have_libudev=no)
1316
1317 AC_ARG_ENABLE([sysfs],
1318     [AS_HELP_STRING([--enable-sysfs],
1319         [enable /sys PCI identification @<:@default=disabled@:>@])],
1320     [have_sysfs="$enableval"],
1321     [have_sysfs=no]
1322 )
1323
1324 if test "x$enable_dri" = xyes; then
1325     if test "$enable_static" = yes; then
1326         AC_MSG_ERROR([Cannot use static libraries for DRI drivers])
1327     fi
1328
1329     # not a hard requirement as swrast does not depend on it
1330     if test "x$have_libdrm" = xyes; then
1331         DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
1332     fi
1333 fi
1334
1335 AC_ARG_ENABLE([driglx-direct],
1336     [AS_HELP_STRING([--disable-driglx-direct],
1337         [disable direct rendering in GLX and EGL for DRI \
1338             @<:@default=auto@:>@])],
1339     [driglx_direct="$enableval"],
1340     [driglx_direct="yes"])
1341
1342 dnl
1343 dnl libGL configuration per driver
1344 dnl
1345 case "x$enable_glx" in
1346 xxlib | xgallium-xlib)
1347     # Xlib-based GLX
1348     dri_modules="x11 xext xcb"
1349     PKG_CHECK_MODULES([XLIBGL], [$dri_modules])
1350     GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
1351     X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
1352     GL_LIB_DEPS="$XLIBGL_LIBS"
1353     GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1354     GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm $PTHREAD_LIBS"
1355     ;;
1356 xdri)
1357     # DRI-based GLX
1358     PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
1359
1360     # find the DRI deps for libGL
1361     dri_modules="x11 xext xdamage xfixes x11-xcb xcb xcb-glx >= $XCBGLX_REQUIRED"
1362
1363     if test x"$driglx_direct" = xyes; then
1364         if test x"$dri_platform" = xdrm ; then
1365             DEFINES="$DEFINES -DGLX_USE_DRM"
1366             if test "x$have_libdrm" != xyes; then
1367                AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
1368             fi
1369
1370             PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
1371             GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED"
1372             if test x"$enable_dri3" = xyes; then
1373                PKG_CHECK_MODULES([DRI3PROTO], [dri3proto >= $DRI3PROTO_REQUIRED])
1374                PKG_CHECK_MODULES([PRESENTPROTO], [presentproto >= $PRESENTPROTO_REQUIRED])
1375             fi
1376
1377             if test x"$enable_dri" = xyes; then
1378                dri_modules="$dri_modules xcb-dri2 >= $XCBDRI2_REQUIRED"
1379             fi
1380
1381             if test x"$enable_dri3" = xyes; then
1382                PKG_CHECK_EXISTS([xcb >= $XCB_REQUIRED], [], AC_MSG_ERROR([DRI3 requires xcb >= $XCB_REQUIRED]))
1383                dri3_modules="xcb xcb-dri3 xcb-present xcb-sync xshmfence >= $XSHMFENCE_REQUIRED"
1384                PKG_CHECK_MODULES([XCB_DRI3], [$dri3_modules])
1385             fi
1386         fi
1387         if test x"$dri_platform" = xapple ; then
1388             DEFINES="$DEFINES -DGLX_USE_APPLEGL"
1389         fi
1390     fi
1391
1392     # add xf86vidmode if available
1393     PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
1394     if test "$HAVE_XF86VIDMODE" = yes ; then
1395         dri_modules="$dri_modules xxf86vm"
1396     fi
1397
1398     PKG_CHECK_MODULES([DRIGL], [$dri_modules])
1399     GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
1400     X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
1401     GL_LIB_DEPS="$DRIGL_LIBS"
1402
1403     # need DRM libs, $PTHREAD_LIBS, etc.
1404     GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1405     GL_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
1406     ;;
1407 esac
1408
1409 have_pci_id=no
1410 if test "$have_libudev" = yes; then
1411     DEFINES="$DEFINES -DHAVE_LIBUDEV"
1412     have_pci_id=yes
1413 fi
1414
1415 if test "$have_sysfs" = yes; then
1416     DEFINES="$DEFINES -DHAVE_SYSFS"
1417     have_pci_id=yes
1418 fi
1419
1420 # This is outside the case (above) so that it is invoked even for non-GLX
1421 # builds.
1422 AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
1423
1424 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1425 GLESv1_CM_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
1426 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1427 GLESv2_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
1428
1429 AC_SUBST([X11_INCLUDES])
1430 AC_SUBST([GL_LIB_DEPS])
1431 AC_SUBST([GL_PC_REQ_PRIV])
1432 AC_SUBST([GL_PC_LIB_PRIV])
1433 AC_SUBST([GL_PC_CFLAGS])
1434 AC_SUBST([DRI_PC_REQ_PRIV])
1435 AC_SUBST([GLESv1_CM_LIB_DEPS])
1436 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
1437 AC_SUBST([GLESv2_LIB_DEPS])
1438 AC_SUBST([GLESv2_PC_LIB_PRIV])
1439
1440 AC_SUBST([HAVE_XF86VIDMODE])
1441
1442 dnl
1443 dnl More GLX setup
1444 dnl
1445 case "x$enable_glx" in
1446 xxlib | xgallium-xlib)
1447     DEFINES="$DEFINES -DUSE_XSHM"
1448     ;;
1449 xdri)
1450     DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1451     if test "x$driglx_direct" = xyes; then
1452         DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1453     fi
1454     ;;
1455 esac
1456
1457 dnl
1458 dnl TLS detection
1459 dnl
1460
1461 AC_ARG_ENABLE([glx-tls],
1462     [AS_HELP_STRING([--enable-glx-tls],
1463         [enable TLS support in GLX @<:@default=disabled@:>@])],
1464     [GLX_USE_TLS="$enableval"],
1465     [GLX_USE_TLS=no])
1466 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
1467
1468 AS_IF([test "x$GLX_USE_TLS" = xyes -a "x$ax_pthread_ok" = xyes],
1469       [DEFINES="${DEFINES} -DGLX_USE_TLS"])
1470
1471 dnl Read-only text section on x86 hardened platforms
1472 AC_ARG_ENABLE([glx-read-only-text],
1473     [AS_HELP_STRING([--enable-glx-read-only-text],
1474         [Disable writable .text section on x86 (decreases performance) @<:@default=disabled@:>@])],
1475     [enable_glx_read_only_text="$enableval"],
1476     [enable_glx_read_only_text=no])
1477 if test "x$enable_glx_read_only_text" = xyes; then
1478     DEFINES="$DEFINES -DGLX_X86_READONLY_TEXT"
1479 fi
1480
1481 dnl
1482 dnl More DRI setup
1483 dnl
1484 dnl Directory for DRI drivers
1485 AC_ARG_WITH([dri-driverdir],
1486     [AS_HELP_STRING([--with-dri-driverdir=DIR],
1487         [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
1488     [DRI_DRIVER_INSTALL_DIR="$withval"],
1489     [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
1490 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
1491 dnl Extra search path for DRI drivers
1492 AC_ARG_WITH([dri-searchpath],
1493     [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
1494         [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
1495     [DRI_DRIVER_SEARCH_DIR="$withval"],
1496     [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
1497 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
1498 dnl Which drivers to build - default is chosen by platform
1499 AC_ARG_WITH([dri-drivers],
1500     [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
1501         [comma delimited classic DRI drivers list, e.g.
1502         "swrast,i965,radeon" @<:@default=auto@:>@])],
1503     [with_dri_drivers="$withval"],
1504     [with_dri_drivers=auto])
1505
1506 if test "x$with_dri_drivers" = xauto; then
1507     if test "x$enable_opengl" = xyes -a "x$enable_dri" = xyes; then
1508         with_dri_drivers="yes"
1509     else
1510         with_dri_drivers="no"
1511     fi
1512 fi
1513 if test "x$with_dri_drivers" = xno; then
1514     with_dri_drivers=''
1515 fi
1516
1517 dnl If $with_dri_drivers is yes, drivers will be added through
1518 dnl platform checks. Set DEFINES and LIB_DEPS
1519 if test "x$enable_dri" = xyes; then
1520     # Platform specific settings and drivers to build
1521     case "$host_os" in
1522     linux*)
1523         DEFINES="$DEFINES -DHAVE_ALIAS"
1524         if test "x$enable_dri3" = xyes; then
1525             DEFINES="$DEFINES -DHAVE_DRI3"
1526         fi
1527
1528         if test "x$have_pci_id" != xyes; then
1529             AC_MSG_ERROR([libudev-dev or sysfs required for building DRI])
1530         fi
1531
1532         case "$host_cpu" in
1533         powerpc* | sparc*)
1534             # Build only the drivers for cards that exist on PowerPC/sparc
1535             if test "x$with_dri_drivers" = "xyes"; then
1536                 with_dri_drivers="r200 radeon swrast"
1537             fi
1538             ;;
1539         esac
1540         ;;
1541     *freebsd* | dragonfly* | *netbsd* | openbsd*)
1542         DEFINES="$DEFINES -DHAVE_ALIAS"
1543         ;;
1544     gnu*)
1545         DEFINES="$DEFINES -DHAVE_ALIAS"
1546         ;;
1547     cygwin*)
1548         if test "x$with_dri_drivers" = "xyes"; then
1549             with_dri_drivers="swrast"
1550         fi
1551         ;;
1552     darwin*)
1553         DEFINES="$DEFINES -DGLX_ALIAS_UNSUPPORTED -DBUILDING_MESA"
1554         if test "x$with_dri_drivers" = "xyes"; then
1555             with_dri_drivers="swrast"
1556         fi
1557         ;;
1558     esac
1559
1560     # default drivers
1561     if test "x$with_dri_drivers" = "xyes"; then
1562         with_dri_drivers="i915 i965 nouveau r200 radeon swrast"
1563     fi
1564
1565     # Check for expat
1566     PKG_CHECK_MODULES([EXPAT], [expat], [],
1567         # expat version 2.0 and earlier do not provide expat.pc
1568         [AC_CHECK_HEADER([expat.h],[],
1569                          [AC_MSG_ERROR([Expat headers required for DRI not found])])
1570          AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1571                      [AC_MSG_ERROR([Expat library required for DRI not found])])
1572          EXPAT_LIBS="-lexpat"])
1573
1574     # put all the necessary libs together
1575     DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1576 fi
1577
1578 AC_SUBST([DRI_LIB_DEPS])
1579
1580 DRI_DIRS=''
1581 dnl Duplicates in DRI_DIRS are removed by sorting it at the end of this block
1582 if test -n "$with_dri_drivers"; then
1583     if test "x$enable_opengl" != xyes; then
1584         AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1585     fi
1586
1587     dri_drivers=`IFS=', '; echo $with_dri_drivers`
1588     for driver in $dri_drivers; do
1589         DRI_DIRS="$DRI_DIRS $driver"
1590         case "x$driver" in
1591         xi915)
1592             HAVE_I915_DRI=yes;
1593             PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1594             ;;
1595         xi965)
1596             HAVE_I965_DRI=yes;
1597             PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1598             ;;
1599         xnouveau)
1600             HAVE_NOUVEAU_DRI=yes;
1601             PKG_CHECK_MODULES([NVVIEUX], [libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED])
1602             ;;
1603         xradeon)
1604             HAVE_RADEON_DRI=yes;
1605             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1606             ;;
1607         xr200)
1608             HAVE_R200_DRI=yes;
1609             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1610             ;;
1611         xswrast)
1612             HAVE_SWRAST_DRI=yes;
1613             ;;
1614         *)
1615             AC_MSG_ERROR([classic DRI driver '$driver' does not exist])
1616             ;;
1617         esac
1618     done
1619     DRI_DIRS=`echo $DRI_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1620 fi
1621
1622
1623 #
1624 # Vulkan driver configuration
1625 #
1626
1627 AC_ARG_WITH([vulkan-drivers],
1628     [AS_HELP_STRING([--with-vulkan-drivers@<:@=DIRS...@:>@],
1629         [comma delimited Vulkan drivers list, e.g.
1630         "intel"
1631         @<:@default=no@:>@])],
1632     [with_vulkan_drivers="$withval"],
1633     [with_vulkan_drivers="no"])
1634
1635 # Doing '--without-vulkan-drivers' will set this variable to 'no'.  Clear it
1636 # here so that the script doesn't choke on an unknown driver name later.
1637 case "x$with_vulkan_drivers" in
1638     xyes) with_vulkan_drivers="$VULKAN_DRIVERS_DEFAULT" ;;
1639     xno) with_vulkan_drivers='' ;;
1640 esac
1641
1642 AC_ARG_WITH([vulkan-icddir],
1643     [AS_HELP_STRING([--with-vulkan-icddir=DIR],
1644         [directory for the Vulkan driver icd files @<:@${datarootdir}/vulkan/icd.d@:>@])],
1645     [VULKAN_ICD_INSTALL_DIR="$withval"],
1646     [VULKAN_ICD_INSTALL_DIR='${datarootdir}/vulkan/icd.d'])
1647 AC_SUBST([VULKAN_ICD_INSTALL_DIR])
1648
1649 if test -n "$with_vulkan_drivers"; then
1650     VULKAN_DRIVERS=`IFS=', '; echo $with_vulkan_drivers`
1651     for driver in $VULKAN_DRIVERS; do
1652         case "x$driver" in
1653         xintel)
1654             if test "x$HAVE_I965_DRI" != xyes; then
1655                 AC_MSG_ERROR([Intel Vulkan driver requires the i965 dri driver])
1656             fi
1657             if test "x$with_sha1" == "x"; then
1658                 AC_MSG_ERROR([Intel Vulkan driver requires SHA1])
1659             fi
1660             HAVE_INTEL_VULKAN=yes;
1661
1662             ;;
1663         *)
1664             AC_MSG_ERROR([Vulkan driver '$driver' does not exist])
1665             ;;
1666         esac
1667     done
1668     VULKAN_DRIVERS=`echo $VULKAN_DRIVERS|tr " " "\n"|sort -u|tr "\n" " "`
1669 fi
1670
1671
1672 AM_CONDITIONAL(NEED_MEGADRIVER, test -n "$DRI_DIRS")
1673 AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_glx" = xxlib -o \
1674                                   "x$enable_osmesa" = xyes -o \
1675                                   -n "$DRI_DIRS")
1676
1677 dnl
1678 dnl OSMesa configuration
1679 dnl
1680
1681 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1682 AC_ARG_WITH([osmesa-bits],
1683     [AS_HELP_STRING([--with-osmesa-bits=BITS],
1684         [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1685     [osmesa_bits="$withval"],
1686     [osmesa_bits=8])
1687 if test "x$osmesa_bits" != x8; then
1688     if test "x$enable_dri" = xyes -o "x$enable_glx" != xno; then
1689         AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1690         osmesa_bits=8
1691     fi
1692 fi
1693 case "x$osmesa_bits" in
1694 x8)
1695     OSMESA_LIB="${OSMESA_LIB}"
1696     ;;
1697 x16|x32)
1698     OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
1699     DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1700     ;;
1701 *)
1702     AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1703     ;;
1704 esac
1705
1706 if test "x$enable_osmesa" = xyes -o "x$enable_gallium_osmesa" = xyes; then
1707     # only link libraries with osmesa if shared
1708     if test "$enable_static" = no; then
1709         OSMESA_LIB_DEPS="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1710     else
1711         OSMESA_LIB_DEPS=""
1712     fi
1713     OSMESA_PC_LIB_PRIV="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1714 fi
1715
1716 AC_SUBST([OSMESA_LIB_DEPS])
1717 AC_SUBST([OSMESA_PC_REQ])
1718 AC_SUBST([OSMESA_PC_LIB_PRIV])
1719
1720 dnl
1721 dnl gbm configuration
1722 dnl
1723 if test "x$enable_gbm" = xauto; then
1724     case "$with_egl_platforms" in
1725         *drm*)
1726             enable_gbm=yes ;;
1727          *)
1728             enable_gbm=no ;;
1729     esac
1730 fi
1731 if test "x$enable_gbm" = xyes; then
1732     if test "x$need_pci_id$have_pci_id" = xyesno; then
1733         AC_MSG_ERROR([gbm requires udev >= $LIBUDEV_REQUIRED or sysfs])
1734     fi
1735
1736     if test "x$enable_dri" = xyes; then
1737         if test "x$enable_shared_glapi" = xno; then
1738             AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1739         fi
1740     else
1741         # Strictly speaking libgbm does not require --enable-dri, although
1742         # both of its backends do. Thus one can build libgbm without any
1743         # backends if --disable-dri is set.
1744         # To avoid unnecessary complexity of checking if at least one backend
1745         # is available when building, just mandate --enable-dri.
1746         AC_MSG_ERROR([gbm requires --enable-dri])
1747     fi
1748 fi
1749 AM_CONDITIONAL(HAVE_GBM, test "x$enable_gbm" = xyes)
1750 if test "x$need_pci_id$have_libudev" = xyesyes; then
1751     GBM_PC_REQ_PRIV="libudev >= $LIBUDEV_REQUIRED"
1752 else
1753     GBM_PC_REQ_PRIV=""
1754 fi
1755 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1756 AC_SUBST([GBM_PC_REQ_PRIV])
1757 AC_SUBST([GBM_PC_LIB_PRIV])
1758
1759 dnl
1760 dnl EGL configuration
1761 dnl
1762 EGL_CLIENT_APIS=""
1763
1764 if test "x$enable_egl" = xyes; then
1765     EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS $PTHREAD_LIBS"
1766
1767     AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1768
1769     if test "$enable_static" != yes; then
1770         if test "x$enable_dri" = xyes; then
1771             HAVE_EGL_DRIVER_DRI2=1
1772             if test "x$enable_shared_glapi" = xno; then
1773                 AC_MSG_ERROR([egl_dri2 requires --enable-shared-glapi])
1774             fi
1775             if test "x$enable_dri3" = xyes; then
1776                 HAVE_EGL_DRIVER_DRI3=1
1777                 if test "x$enable_shared_glapi" = xno; then
1778                     AC_MSG_ERROR([egl_dri3 requires --enable-shared-glapi])
1779                 fi
1780             fi
1781         else
1782             # Avoid building an "empty" libEGL. Drop/update this
1783             # when other backends (haiku?) come along.
1784             AC_MSG_ERROR([egl requires --enable-dri])
1785         fi
1786
1787     fi
1788 fi
1789 AM_CONDITIONAL(HAVE_EGL, test "x$enable_egl" = xyes)
1790 AC_SUBST([EGL_LIB_DEPS])
1791
1792 gallium_st="mesa"
1793
1794 dnl
1795 dnl XA configuration
1796 dnl
1797 if test "x$enable_xa" = xyes; then
1798     if test "x$with_gallium_drivers" = xswrast; then
1799        AC_MSG_ERROR([
1800           Building xa requires at least one non swrast gallium driver.
1801           If you are looking to use libxatracker.so with the VMware driver,
1802           make sure to include svga in the gallium drivers list, apart from
1803           enabling XA.
1804           Example: ./configure --enable-xa --with-gallium-drivers=svga...])
1805     fi
1806     gallium_st="$gallium_st xa"
1807 fi
1808 AM_CONDITIONAL(HAVE_ST_XA, test "x$enable_xa" = xyes)
1809
1810 dnl
1811 dnl Gallium G3DVL configuration
1812 dnl
1813 if test -n "$with_gallium_drivers" -a "x$with_gallium_drivers" != xswrast; then
1814     if test "x$enable_xvmc" = xauto; then
1815         PKG_CHECK_EXISTS([xvmc >= $XVMC_REQUIRED], [enable_xvmc=yes], [enable_xvmc=no])
1816     fi
1817
1818     if test "x$enable_vdpau" = xauto; then
1819         PKG_CHECK_EXISTS([vdpau >= $VDPAU_REQUIRED], [enable_vdpau=yes], [enable_vdpau=no])
1820     fi
1821
1822     if test "x$enable_omx" = xauto; then
1823         PKG_CHECK_EXISTS([libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED], [enable_omx=yes], [enable_omx=no])
1824     fi
1825
1826     if test "x$enable_va" = xauto; then
1827         PKG_CHECK_EXISTS([libva >= $LIBVA_REQUIRED], [enable_va=yes], [enable_va=no])
1828     fi
1829 fi
1830
1831 if test "x$enable_dri" = xyes -o \
1832         "x$enable_xvmc" = xyes -o \
1833         "x$enable_vdpau" = xyes -o \
1834         "x$enable_omx" = xyes -o \
1835         "x$enable_va" = xyes; then
1836     need_gallium_vl=yes
1837 fi
1838 AM_CONDITIONAL(NEED_GALLIUM_VL, test "x$need_gallium_vl" = xyes)
1839
1840 if test "x$enable_xvmc" = xyes -o \
1841         "x$enable_vdpau" = xyes -o \
1842         "x$enable_omx" = xyes -o \
1843         "x$enable_va" = xyes; then
1844     if test x"$enable_dri3" = xyes; then
1845         PKG_CHECK_MODULES([VL], [xcb-dri3 xcb-present xcb-sync xshmfence >= $XSHMFENCE_REQUIRED
1846                                  x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
1847     else
1848         PKG_CHECK_MODULES([VL], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
1849     fi
1850     need_gallium_vl_winsys=yes
1851 fi
1852 AM_CONDITIONAL(NEED_GALLIUM_VL_WINSYS, test "x$need_gallium_vl_winsys" = xyes)
1853
1854 if test "x$enable_xvmc" = xyes; then
1855     PKG_CHECK_MODULES([XVMC], [xvmc >= $XVMC_REQUIRED])
1856     gallium_st="$gallium_st xvmc"
1857 fi
1858 AM_CONDITIONAL(HAVE_ST_XVMC, test "x$enable_xvmc" = xyes)
1859
1860 if test "x$enable_vdpau" = xyes; then
1861     PKG_CHECK_MODULES([VDPAU], [vdpau >= $VDPAU_REQUIRED])
1862     gallium_st="$gallium_st vdpau"
1863     DEFINES="$DEFINES -DHAVE_ST_VDPAU"
1864 fi
1865 AM_CONDITIONAL(HAVE_ST_VDPAU, test "x$enable_vdpau" = xyes)
1866
1867 if test "x$enable_omx" = xyes; then
1868     PKG_CHECK_MODULES([OMX], [libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED])
1869     gallium_st="$gallium_st omx"
1870 fi
1871 AM_CONDITIONAL(HAVE_ST_OMX, test "x$enable_omx" = xyes)
1872
1873 if test "x$enable_va" = xyes; then
1874     PKG_CHECK_MODULES([VA], [libva >= $LIBVA_REQUIRED])
1875     gallium_st="$gallium_st va"
1876 fi
1877 AM_CONDITIONAL(HAVE_ST_VA, test "x$enable_va" = xyes)
1878
1879 dnl
1880 dnl Nine Direct3D9 configuration
1881 dnl
1882 if test "x$enable_nine" = xyes; then
1883     if ! echo "$with_gallium_drivers" | grep -q 'swrast'; then
1884         AC_MSG_ERROR([nine requires the gallium swrast driver])
1885     fi
1886     if test "x$with_gallium_drivers" = xswrast; then
1887         AC_MSG_ERROR([nine requires at least one non-swrast gallium driver])
1888     fi
1889     if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6; then
1890         AC_MSG_ERROR([gcc >= 4.6 is required to build nine])
1891     fi
1892
1893     if test "x$enable_dri3" = xno; then
1894         AC_MSG_WARN([using nine together with wine requires DRI3 enabled system])
1895     fi
1896
1897     gallium_st="$gallium_st nine"
1898 fi
1899 AM_CONDITIONAL(HAVE_ST_NINE, test "x$enable_nine" = xyes)
1900
1901 dnl
1902 dnl OpenCL configuration
1903 dnl
1904
1905 AC_ARG_WITH([clang-libdir],
1906    [AS_HELP_STRING([--with-clang-libdir],
1907          [Path to Clang libraries @<:@default=llvm-config --libdir@:>@])],
1908    [CLANG_LIBDIR="$withval"],
1909    [CLANG_LIBDIR=''])
1910
1911 PKG_CHECK_EXISTS([libclc], [have_libclc=yes], [have_libclc=no])
1912 PKG_CHECK_MODULES([LIBELF], [libelf], [have_libelf=yes], [have_libelf=no])
1913
1914 if test "x$have_libelf" = xno; then
1915    LIBELF_LIBS=''
1916    LIBELF_CFLAGS=''
1917    AC_CHECK_LIB([elf], [elf_memory], [have_libelf=yes;LIBELF_LIBS=-lelf], [have_libelf=no])
1918    AC_SUBST([LIBELF_LIBS])
1919    AC_SUBST([LIBELF_CFLAGS])
1920 fi
1921
1922 if test "x$enable_opencl" = xyes; then
1923     if test -z "$with_gallium_drivers"; then
1924         AC_MSG_ERROR([cannot enable OpenCL without Gallium])
1925     fi
1926
1927     if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 7; then
1928         AC_MSG_ERROR([gcc >= 4.7 is required to build clover])
1929     fi
1930
1931     if test "x$have_libclc" = xno; then
1932         AC_MSG_ERROR([pkg-config cannot find libclc.pc which is required to build clover.
1933                     Make sure the directory containing libclc.pc is specified in your
1934                     PKG_CONFIG_PATH environment variable.
1935                     By default libclc.pc is installed to /usr/local/share/pkgconfig/])
1936     else
1937         LIBCLC_INCLUDEDIR=`$PKG_CONFIG --variable=includedir libclc`
1938         LIBCLC_LIBEXECDIR=`$PKG_CONFIG --variable=libexecdir libclc`
1939         AC_SUBST([LIBCLC_INCLUDEDIR])
1940         AC_SUBST([LIBCLC_LIBEXECDIR])
1941     fi
1942
1943     gallium_st="$gallium_st clover"
1944
1945     if test "x$enable_opencl_icd" = xyes; then
1946         OPENCL_LIBNAME="MesaOpenCL"
1947     else
1948         OPENCL_LIBNAME="OpenCL"
1949     fi
1950
1951     if test "x$have_libelf" != xyes; then
1952        AC_MSG_ERROR([Clover requires libelf])
1953     fi
1954 fi
1955 AM_CONDITIONAL(HAVE_CLOVER, test "x$enable_opencl" = xyes)
1956 AM_CONDITIONAL(HAVE_CLOVER_ICD, test "x$enable_opencl_icd" = xyes)
1957 AC_SUBST([OPENCL_LIBNAME])
1958
1959 dnl
1960 dnl Gallium configuration
1961 dnl
1962 AM_CONDITIONAL(HAVE_GALLIUM, test -n "$with_gallium_drivers")
1963
1964 AC_SUBST([LLVM_BINDIR])
1965 AC_SUBST([LLVM_CFLAGS])
1966 AC_SUBST([LLVM_CPPFLAGS])
1967 AC_SUBST([LLVM_CXXFLAGS])
1968 AC_SUBST([LLVM_LIBDIR])
1969 AC_SUBST([LLVM_LIBS])
1970 AC_SUBST([LLVM_LDFLAGS])
1971 AC_SUBST([LLVM_INCLUDEDIR])
1972 AC_SUBST([LLVM_VERSION])
1973 AC_SUBST([CLANG_RESOURCE_DIR])
1974
1975 case "x$enable_opengl$enable_gles1$enable_gles2" in
1976 x*yes*)
1977     EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1978     ;;
1979 esac
1980
1981 AC_SUBST([VG_LIB_DEPS])
1982 AC_SUBST([EGL_CLIENT_APIS])
1983
1984 dnl
1985 dnl EGL Platforms configuration
1986 dnl
1987 AC_ARG_WITH([egl-platforms],
1988     [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1989         [comma delimited native platforms libEGL supports, e.g.
1990         "x11,drm" @<:@default=auto@:>@])],
1991     [with_egl_platforms="$withval"],
1992     [if test "x$enable_egl" = xyes; then
1993         with_egl_platforms="x11"
1994     else
1995         with_egl_platforms=""
1996     fi])
1997
1998 if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
1999     AC_MSG_ERROR([cannot build egl state tracker without EGL library])
2000 fi
2001
2002 PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland_scanner],
2003         WAYLAND_SCANNER=`$PKG_CONFIG --variable=wayland_scanner wayland_scanner`,
2004         WAYLAND_SCANNER='')
2005 if test "x$WAYLAND_SCANNER" = x; then
2006     AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner])
2007 fi
2008
2009 # Do per-EGL platform setups and checks
2010 egl_platforms=`IFS=', '; echo $with_egl_platforms`
2011 for plat in $egl_platforms; do
2012         case "$plat" in
2013         wayland)
2014                 test "x$have_libdrm" != xyes &&
2015                         AC_MSG_ERROR([EGL platform wayland requires libdrm >= $LIBDRM_REQUIRED])
2016
2017                 PKG_CHECK_MODULES([WAYLAND], [wayland-client >= $WAYLAND_REQUIRED wayland-server >= $WAYLAND_REQUIRED])
2018
2019                 if test "x$WAYLAND_SCANNER" = x; then
2020                         AC_MSG_ERROR([wayland-scanner is needed to compile the wayland egl platform])
2021                 fi
2022                 ;;
2023
2024         x11)
2025                 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED xcb-xfixes])
2026                 ;;
2027
2028         drm)
2029                 test "x$enable_gbm" = "xno" &&
2030                         AC_MSG_ERROR([EGL platform drm needs gbm])
2031                 test "x$have_libdrm" != xyes &&
2032                         AC_MSG_ERROR([EGL platform drm requires libdrm >= $LIBDRM_REQUIRED])
2033                 ;;
2034
2035         surfaceless)
2036                 test "x$have_libdrm" != xyes &&
2037                         AC_MSG_ERROR([EGL platform surfaceless requires libdrm >= $LIBDRM_REQUIRED])
2038                 ;;
2039
2040         android)
2041                 ;;
2042
2043         *)
2044                 AC_MSG_ERROR([EGL platform '$plat' does not exist])
2045                 ;;
2046         esac
2047
2048         case "$plat$need_pci_id$have_pci_id" in
2049                 waylandyesno|drmyesno)
2050                     AC_MSG_ERROR([cannot build $plat platform without udev >= $LIBUDEV_REQUIRED or sysfs]) ;;
2051         esac
2052 done
2053
2054 # libEGL wants to default to the first platform specified in
2055 # ./configure.  parse that here.
2056 if test "x$egl_platforms" != "x"; then
2057     FIRST_PLATFORM_CAPS=`echo $egl_platforms | sed 's| .*||' | tr '[[a-z]]' '[[A-Z]]'`
2058     EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
2059 else
2060     EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
2061 fi
2062
2063 AM_CONDITIONAL(HAVE_PLATFORM_X11, echo "$egl_platforms" | grep -q 'x11')
2064 AM_CONDITIONAL(HAVE_PLATFORM_WAYLAND, echo "$egl_platforms" | grep -q 'wayland')
2065 AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep -q 'drm')
2066 AM_CONDITIONAL(HAVE_EGL_PLATFORM_SURFACELESS, echo "$egl_platforms" | grep -q 'surfaceless')
2067 AM_CONDITIONAL(HAVE_EGL_PLATFORM_ANDROID, echo "$egl_platforms" | grep -q 'android')
2068
2069 AM_CONDITIONAL(HAVE_EGL_DRIVER_DRI2, test "x$HAVE_EGL_DRIVER_DRI2" != "x")
2070
2071 AC_SUBST([EGL_NATIVE_PLATFORM])
2072 AC_SUBST([EGL_CFLAGS])
2073
2074 # If we don't have the X11 platform, set this define so we don't try to include
2075 # the X11 headers.
2076 if ! echo "$egl_platforms" | grep -q 'x11'; then
2077     DEFINES="$DEFINES -DMESA_EGL_NO_X11_HEADERS"
2078     GL_PC_CFLAGS="$GL_PC_CFLAGS -DMESA_EGL_NO_X11_HEADERS"
2079 fi
2080
2081 dnl
2082 dnl Gallium LLVM
2083 dnl
2084 AC_ARG_ENABLE([gallium-llvm],
2085     [AS_HELP_STRING([--enable-gallium-llvm],
2086         [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
2087     [enable_gallium_llvm="$enableval"],
2088     [enable_gallium_llvm=auto])
2089
2090 AC_ARG_ENABLE([llvm-shared-libs],
2091     [AS_HELP_STRING([--enable-llvm-shared-libs],
2092         [link with LLVM shared libraries @<:@default=enabled@:>@])],
2093     [enable_llvm_shared_libs="$enableval"],
2094     [enable_llvm_shared_libs=yes])
2095
2096 AC_ARG_WITH([llvm-prefix],
2097     [AS_HELP_STRING([--with-llvm-prefix],
2098         [Prefix for LLVM installations in non-standard locations])],
2099     [llvm_prefix="$withval"],
2100     [llvm_prefix=''])
2101
2102
2103 # Call this inside ` ` to get the return value.
2104 # $1 is the llvm-config command with arguments.
2105 strip_unwanted_llvm_flags() {
2106     # Use \> (marks the end of the word)
2107     echo `$1` | sed \
2108         -e 's/-march=\S*//g' \
2109         -e 's/-mtune=\S*//g' \
2110         -e 's/-mcpu=\S*//g' \
2111         -e 's/-DNDEBUG\>//g' \
2112         -e 's/-D_GNU_SOURCE\>//g' \
2113         -e 's/-pedantic\>//g' \
2114         -e 's/-Wcovered-switch-default\>//g' \
2115         -e 's/-O.\>//g' \
2116         -e 's/-g\>//g' \
2117         -e 's/-Wall\>//g' \
2118         -e 's/-Wcast-qual\>//g' \
2119         -e 's/-Woverloaded-virtual\>//g' \
2120         -e 's/-fcolor-diagnostics\>//g' \
2121         -e 's/-fdata-sections\>//g' \
2122         -e 's/-ffunction-sections\>//g' \
2123         -e 's/-fno-exceptions\>//g' \
2124         -e 's/-fomit-frame-pointer\>//g' \
2125         -e 's/-fvisibility-inlines-hidden\>//g' \
2126         -e 's/-fPIC\>//g' \
2127         -e 's/-fstack-protector-strong\>//g'
2128 }
2129
2130 llvm_check_version_for() {
2131     if test "${LLVM_VERSION_INT}${LLVM_VERSION_PATCH}" -lt "${1}0${2}${3}"; then
2132         AC_MSG_ERROR([LLVM $1.$2.$3 or newer is required for $4])
2133     fi
2134 }
2135
2136
2137
2138 if test -z "$with_gallium_drivers"; then
2139     enable_gallium_llvm=no
2140 fi
2141 if test "x$enable_gallium_llvm" = xauto; then
2142     case "$host_cpu" in
2143     i*86|x86_64|amd64) enable_gallium_llvm=yes;;
2144     esac
2145 fi
2146 if test "x$enable_gallium_llvm" = xyes; then
2147     if test -n "$llvm_prefix"; then
2148         AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no], ["$llvm_prefix/bin"])
2149     else
2150         AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no])
2151     fi
2152
2153     if test "x$LLVM_CONFIG" != xno; then
2154         LLVM_VERSION=`$LLVM_CONFIG --version | egrep -o '^[[0-9.]]+'`
2155         LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
2156         LLVM_BINDIR=`$LLVM_CONFIG --bindir`
2157         LLVM_CPPFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cppflags"`
2158         LLVM_CFLAGS=$LLVM_CPPFLAGS   # CPPFLAGS seem to be sufficient
2159         LLVM_CXXFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cxxflags"`
2160         LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
2161         LLVM_LIBDIR=`$LLVM_CONFIG --libdir`
2162
2163         AC_COMPUTE_INT([LLVM_VERSION_MAJOR], [LLVM_VERSION_MAJOR],
2164             [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
2165         AC_COMPUTE_INT([LLVM_VERSION_MINOR], [LLVM_VERSION_MINOR],
2166             [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
2167
2168         LLVM_VERSION_PATCH=`echo $LLVM_VERSION | cut -d. -f3 | egrep -o '^[[0-9]]+'`
2169         if test -z "$LLVM_VERSION_PATCH"; then
2170             LLVM_VERSION_PATCH=0
2171         fi
2172
2173         if test -n "${LLVM_VERSION_MAJOR}"; then
2174             LLVM_VERSION_INT="${LLVM_VERSION_MAJOR}0${LLVM_VERSION_MINOR}"
2175         else
2176             LLVM_VERSION_INT=`echo $LLVM_VERSION | sed -e 's/\([[0-9]]\)\.\([[0-9]]\)/\10\2/g'`
2177         fi
2178
2179         LLVM_REQUIRED_VERSION_MAJOR="3"
2180         LLVM_REQUIRED_VERSION_MINOR="3"
2181         if test "$LLVM_VERSION_INT" -lt "${LLVM_REQUIRED_VERSION_MAJOR}0${LLVM_REQUIRED_VERSION_MINOR}"; then
2182             AC_MSG_ERROR([LLVM $LLVM_REQUIRED_VERSION_MAJOR.$LLVM_REQUIRED_VERSION_MINOR or newer is required])
2183         fi
2184
2185         LLVM_COMPONENTS="engine bitwriter mcjit mcdisassembler"
2186
2187         if test "x$enable_opencl" = xyes; then
2188             llvm_check_version_for "3" "5" "0" "opencl"
2189
2190             LLVM_COMPONENTS="${LLVM_COMPONENTS} all-targets ipo linker instrumentation"
2191             LLVM_COMPONENTS="${LLVM_COMPONENTS} irreader option objcarcopts profiledata"
2192         fi
2193         DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT -DMESA_LLVM_VERSION_PATCH=$LLVM_VERSION_PATCH"
2194         MESA_LLVM=1
2195
2196         dnl Check for Clang internal headers
2197         if test "x$enable_opencl" = xyes; then
2198             if test -z "$CLANG_LIBDIR"; then
2199                 CLANG_LIBDIR=${LLVM_LIBDIR}
2200             fi
2201             CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION}
2202             AS_IF([test ! -f "$CLANG_RESOURCE_DIR/include/stddef.h"],
2203                 [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.])])
2204         fi
2205     else
2206         MESA_LLVM=0
2207         LLVM_VERSION_INT=0
2208     fi
2209 else
2210     MESA_LLVM=0
2211     LLVM_VERSION_INT=0
2212
2213     if test "x$enable_opencl" = xyes; then
2214         AC_MSG_ERROR([cannot enable OpenCL without LLVM])
2215     fi
2216 fi
2217
2218 dnl Directory for XVMC libs
2219 AC_ARG_WITH([xvmc-libdir],
2220     [AS_HELP_STRING([--with-xvmc-libdir=DIR],
2221         [directory for the XVMC libraries @<:@default=${libdir}@:>@])],
2222     [XVMC_LIB_INSTALL_DIR="$withval"],
2223     [XVMC_LIB_INSTALL_DIR='${libdir}'])
2224 AC_SUBST([XVMC_LIB_INSTALL_DIR])
2225
2226 dnl
2227 dnl Gallium Tests
2228 dnl
2229 AM_CONDITIONAL(HAVE_GALLIUM_TESTS, test "x$enable_gallium_tests" = xyes)
2230
2231 dnl Directory for VDPAU libs
2232 AC_ARG_WITH([vdpau-libdir],
2233     [AS_HELP_STRING([--with-vdpau-libdir=DIR],
2234         [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
2235     [VDPAU_LIB_INSTALL_DIR="$withval"],
2236     [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
2237 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
2238
2239 dnl Directory for OMX libs
2240
2241 AC_ARG_WITH([omx-libdir],
2242     [AS_HELP_STRING([--with-omx-libdir=DIR],
2243         [directory for the OMX libraries])],
2244     [OMX_LIB_INSTALL_DIR="$withval"],
2245     [OMX_LIB_INSTALL_DIR=`$PKG_CONFIG --define-variable=libdir=\$libdir --variable=pluginsdir libomxil-bellagio`])
2246 AC_SUBST([OMX_LIB_INSTALL_DIR])
2247
2248 dnl Directory for VA libs
2249
2250 AC_ARG_WITH([va-libdir],
2251     [AS_HELP_STRING([--with-va-libdir=DIR],
2252         [directory for the VA libraries @<:@${libdir}/dri@:>@])],
2253     [VA_LIB_INSTALL_DIR="$withval"],
2254     [VA_LIB_INSTALL_DIR="${libdir}/dri"])
2255 AC_SUBST([VA_LIB_INSTALL_DIR])
2256
2257 AC_ARG_WITH([d3d-libdir],
2258     [AS_HELP_STRING([--with-d3d-libdir=DIR],
2259         [directory for the D3D modules @<:@${libdir}/d3d@:>@])],
2260     [D3D_DRIVER_INSTALL_DIR="$withval"],
2261     [D3D_DRIVER_INSTALL_DIR="${libdir}/d3d"])
2262 AC_SUBST([D3D_DRIVER_INSTALL_DIR])
2263
2264 dnl
2265 dnl Gallium helper functions
2266 dnl
2267 gallium_require_drm() {
2268     if test "x$have_libdrm" != xyes; then
2269        AC_MSG_ERROR([$1 requires libdrm >= $LIBDRM_REQUIRED])
2270     fi
2271 }
2272
2273 gallium_require_llvm() {
2274     if test "x$MESA_LLVM" = x0; then
2275         case "$host" in *gnux32) return;; esac
2276         case "$host_cpu" in
2277         i*86|x86_64|amd64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
2278         esac
2279     fi
2280 }
2281
2282 gallium_require_drm_loader() {
2283     if test "x$need_pci_id$have_pci_id" = xyesno; then
2284         AC_MSG_ERROR([Gallium drm loader requires libudev >= $LIBUDEV_REQUIRED or sysfs])
2285     fi
2286 }
2287
2288 dnl This is for Glamor. Skip this if OpenGL is disabled.
2289 require_egl_drm() {
2290     if test "x$enable_opengl" = xno; then
2291         return 0
2292     fi
2293
2294     case "$with_egl_platforms" in
2295         *drm*)
2296             ;;
2297          *)
2298             AC_MSG_ERROR([--with-egl-platforms=drm is required to build the $1 driver.])
2299             ;;
2300     esac
2301     if test "x$enable_gbm" != xyes; then
2302             AC_MSG_ERROR([--enable-gbm is required to build the $1 driver.])
2303     fi
2304 }
2305
2306 radeon_llvm_check() {
2307     if test ${LLVM_VERSION_INT} -lt 307; then
2308         amdgpu_llvm_target_name='r600'
2309     else
2310         amdgpu_llvm_target_name='amdgpu'
2311     fi
2312     if test "x$enable_gallium_llvm" != "xyes"; then
2313         AC_MSG_ERROR([--enable-gallium-llvm is required when building $1])
2314     fi
2315     llvm_check_version_for "3" "6" "0" $1
2316     if test true && $LLVM_CONFIG --targets-built | grep -iqvw $amdgpu_llvm_target_name ; then
2317         AC_MSG_ERROR([LLVM $amdgpu_llvm_target_name not enabled in your LLVM build.])
2318     fi
2319     LLVM_COMPONENTS="${LLVM_COMPONENTS} $amdgpu_llvm_target_name bitreader ipo"
2320     NEED_RADEON_LLVM=yes
2321     if test "x$have_libelf" != xyes; then
2322        AC_MSG_ERROR([$1 requires libelf when using llvm])
2323     fi
2324 }
2325
2326 swr_llvm_check() {
2327     gallium_require_llvm $1
2328     if test ${LLVM_VERSION_INT} -lt 306; then
2329         AC_MSG_ERROR([LLVM version 3.6 or later required when building $1])
2330     fi
2331     if test "x$enable_gallium_llvm" != "xyes"; then
2332         AC_MSG_ERROR([--enable-gallium-llvm is required when building $1])
2333     fi
2334 }
2335
2336 swr_require_cxx_feature_flags() {
2337     feature_name="$1"
2338     preprocessor_test="$2"
2339     option_list="$3"
2340     output_var="$4"
2341
2342     AC_MSG_CHECKING([whether $CXX supports $feature_name])
2343     AC_LANG_PUSH([C++])
2344     save_CXXFLAGS="$CXXFLAGS"
2345     save_IFS="$IFS"
2346     IFS=","
2347     found=0
2348     for opts in $option_list
2349     do
2350         unset IFS
2351         CXXFLAGS="$opts $save_CXXFLAGS"
2352         AC_COMPILE_IFELSE(
2353             [AC_LANG_PROGRAM(
2354                 [   #if !($preprocessor_test)
2355                     #error
2356                     #endif
2357                 ])],
2358             [found=1; break],
2359             [])
2360         IFS=","
2361     done
2362     IFS="$save_IFS"
2363     CXXFLAGS="$save_CXXFLAGS"
2364     AC_LANG_POP([C++])
2365     if test $found -eq 1; then
2366         AC_MSG_RESULT([$opts])
2367         eval "$output_var=\$opts"
2368         return 0
2369     fi
2370     AC_MSG_RESULT([no])
2371     AC_MSG_ERROR([swr requires $feature_name support])
2372     return 1
2373 }
2374
2375 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
2376 if test -n "$with_gallium_drivers"; then
2377     gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
2378     for driver in $gallium_drivers; do
2379         case "x$driver" in
2380         xsvga)
2381             HAVE_GALLIUM_SVGA=yes
2382             gallium_require_drm "svga"
2383             gallium_require_drm_loader
2384             ;;
2385         xi915)
2386             HAVE_GALLIUM_I915=yes
2387             PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
2388             gallium_require_drm "Gallium i915"
2389             gallium_require_drm_loader
2390             ;;
2391         xilo)
2392             HAVE_GALLIUM_ILO=yes
2393             PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
2394             gallium_require_drm "Gallium i965/ilo"
2395             gallium_require_drm_loader
2396             ;;
2397         xr300)
2398             HAVE_GALLIUM_R300=yes
2399             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2400             gallium_require_drm "Gallium R300"
2401             gallium_require_drm_loader
2402             gallium_require_llvm "Gallium R300"
2403             ;;
2404         xr600)
2405             HAVE_GALLIUM_R600=yes
2406             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2407             gallium_require_drm "Gallium R600"
2408             gallium_require_drm_loader
2409             if test "x$enable_opencl" = xyes; then
2410                 radeon_llvm_check "r600g"
2411                 LLVM_COMPONENTS="${LLVM_COMPONENTS} bitreader asmparser"
2412             fi
2413             ;;
2414         xradeonsi)
2415             HAVE_GALLIUM_RADEONSI=yes
2416             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2417             PKG_CHECK_MODULES([AMDGPU], [libdrm_amdgpu >= $LIBDRM_AMDGPU_REQUIRED])
2418             gallium_require_drm "radeonsi"
2419             gallium_require_drm_loader
2420             radeon_llvm_check "radeonsi"
2421             require_egl_drm "radeonsi"
2422             ;;
2423         xnouveau)
2424             HAVE_GALLIUM_NOUVEAU=yes
2425             PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
2426             gallium_require_drm "nouveau"
2427             gallium_require_drm_loader
2428             ;;
2429         xfreedreno)
2430             HAVE_GALLIUM_FREEDRENO=yes
2431             PKG_CHECK_MODULES([FREEDRENO], [libdrm_freedreno >= $LIBDRM_FREEDRENO_REQUIRED])
2432             gallium_require_drm "freedreno"
2433             gallium_require_drm_loader
2434             ;;
2435         xswrast)
2436             HAVE_GALLIUM_SOFTPIPE=yes
2437             if test "x$MESA_LLVM" = x1; then
2438                 HAVE_GALLIUM_LLVMPIPE=yes
2439             fi
2440             ;;
2441         xswr)
2442             swr_llvm_check "swr"
2443
2444             swr_require_cxx_feature_flags "C++11" "__cplusplus >= 201103L" \
2445                 ",-std=c++11" \
2446                 SWR_CXX11_CXXFLAGS
2447             AC_SUBST([SWR_CXX11_CXXFLAGS])
2448
2449             swr_require_cxx_feature_flags "AVX" "defined(__AVX__)" \
2450                 ",-mavx,-march=core-avx" \
2451                 SWR_AVX_CXXFLAGS
2452             AC_SUBST([SWR_AVX_CXXFLAGS])
2453
2454             swr_require_cxx_feature_flags "AVX2" "defined(__AVX2__)" \
2455                 ",-mavx2 -mfma -mbmi2 -mf16c,-march=core-avx2" \
2456                 SWR_AVX2_CXXFLAGS
2457             AC_SUBST([SWR_AVX2_CXXFLAGS])
2458
2459             HAVE_GALLIUM_SWR=yes
2460             ;;
2461         xvc4)
2462             HAVE_GALLIUM_VC4=yes
2463             gallium_require_drm "vc4"
2464             gallium_require_drm_loader
2465
2466             PKG_CHECK_MODULES([SIMPENROSE], [simpenrose],
2467                               [USE_VC4_SIMULATOR=yes;
2468                                DEFINES="$DEFINES -DUSE_VC4_SIMULATOR"],
2469                               [USE_VC4_SIMULATOR=no])
2470             ;;
2471         xvirgl)
2472             HAVE_GALLIUM_VIRGL=yes
2473             gallium_require_drm "virgl"
2474             gallium_require_drm_loader
2475             require_egl_drm "virgl"
2476             ;;
2477         *)
2478             AC_MSG_ERROR([Unknown Gallium driver: $driver])
2479             ;;
2480         esac
2481     done
2482 fi
2483
2484 dnl Set LLVM_LIBS - This is done after the driver configuration so
2485 dnl that drivers can add additional components to LLVM_COMPONENTS.
2486 dnl Previously, gallium drivers were updating LLVM_LIBS directly
2487 dnl by calling llvm-config --libs ${DRIVER_LLVM_COMPONENTS}, but
2488 dnl this was causing the same libraries to be appear multiple times
2489 dnl in LLVM_LIBS.
2490
2491 if test "x$MESA_LLVM" != x0; then
2492
2493     if ! $LLVM_CONFIG --libs ${LLVM_COMPONENTS} >/dev/null; then
2494        AC_MSG_ERROR([Calling ${LLVM_CONFIG} failed])
2495     fi
2496     LLVM_LIBS="`$LLVM_CONFIG --libs ${LLVM_COMPONENTS}`"
2497
2498     dnl llvm-config may not give the right answer when llvm is a built as a
2499     dnl single shared library, so we must work the library name out for
2500     dnl ourselves.
2501     dnl (See https://llvm.org/bugs/show_bug.cgi?id=6823)
2502     if test "x$enable_llvm_shared_libs" = xyes; then
2503         dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
2504         LLVM_SO_NAME=LLVM-`$LLVM_CONFIG --version`
2505         AS_IF([test -f "$LLVM_LIBDIR/lib$LLVM_SO_NAME.$IMP_LIB_EXT"], [llvm_have_one_so=yes])
2506
2507         if test "x$llvm_have_one_so" = xyes; then
2508             dnl LLVM was built using auto*, so there is only one shared object.
2509             LLVM_LIBS="-l$LLVM_SO_NAME"
2510         else
2511             dnl If LLVM was built with CMake, there will be one shared object per
2512             dnl component.
2513             AS_IF([test ! -f "$LLVM_LIBDIR/libLLVMTarget.$IMP_LIB_EXT"],
2514                     [AC_MSG_ERROR([Could not find llvm shared libraries:
2515         Please make sure you have built llvm with the --enable-shared option
2516         and that your llvm libraries are installed in $LLVM_LIBDIR
2517         If you have installed your llvm libraries to a different directory you
2518         can use the --with-llvm-prefix= configure flag to specify this directory.
2519         NOTE: Mesa is attempting to use llvm shared libraries by default.
2520         If you do not want to build with llvm shared libraries and instead want to
2521         use llvm static libraries then add --disable-llvm-shared-libs to your configure
2522         invocation and rebuild.])])
2523
2524            dnl We don't need to update LLVM_LIBS in this case because the LLVM
2525            dnl install uses a shared object for each component and we have
2526            dnl already added all of these objects to LLVM_LIBS.
2527         fi
2528     else
2529         AC_MSG_WARN([Building mesa with statically linked LLVM may cause compilation issues])
2530         dnl We need to link to llvm system libs when using static libs
2531         dnl However, only llvm 3.5+ provides --system-libs
2532         if test $LLVM_VERSION_MAJOR -eq 3 -a $LLVM_VERSION_MINOR -ge 5; then
2533             LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --system-libs`"
2534         fi
2535     fi
2536 fi
2537
2538 AM_CONDITIONAL(HAVE_GALLIUM_SVGA, test "x$HAVE_GALLIUM_SVGA" = xyes)
2539 AM_CONDITIONAL(HAVE_GALLIUM_I915, test "x$HAVE_GALLIUM_I915" = xyes)
2540 AM_CONDITIONAL(HAVE_GALLIUM_ILO, test "x$HAVE_GALLIUM_ILO" = xyes)
2541 AM_CONDITIONAL(HAVE_GALLIUM_R300, test "x$HAVE_GALLIUM_R300" = xyes)
2542 AM_CONDITIONAL(HAVE_GALLIUM_R600, test "x$HAVE_GALLIUM_R600" = xyes)
2543 AM_CONDITIONAL(HAVE_GALLIUM_RADEONSI, test "x$HAVE_GALLIUM_RADEONSI" = xyes)
2544 AM_CONDITIONAL(HAVE_GALLIUM_RADEON_COMMON, test "x$HAVE_GALLIUM_R600" = xyes -o \
2545                                                 "x$HAVE_GALLIUM_RADEONSI" = xyes)
2546 AM_CONDITIONAL(HAVE_GALLIUM_NOUVEAU, test "x$HAVE_GALLIUM_NOUVEAU" = xyes)
2547 AM_CONDITIONAL(HAVE_GALLIUM_FREEDRENO, test "x$HAVE_GALLIUM_FREEDRENO" = xyes)
2548 AM_CONDITIONAL(HAVE_GALLIUM_SOFTPIPE, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes)
2549 AM_CONDITIONAL(HAVE_GALLIUM_LLVMPIPE, test "x$HAVE_GALLIUM_LLVMPIPE" = xyes)
2550 AM_CONDITIONAL(HAVE_GALLIUM_SWR, test "x$HAVE_GALLIUM_SWR" = xyes)
2551 AM_CONDITIONAL(HAVE_GALLIUM_SWRAST, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes -o \
2552                                          "x$HAVE_GALLIUM_LLVMPIPE" = xyes -o \
2553                                          "x$HAVE_GALLIUM_SWR" = xyes)
2554 AM_CONDITIONAL(HAVE_GALLIUM_VC4, test "x$HAVE_GALLIUM_VC4" = xyes)
2555 AM_CONDITIONAL(HAVE_GALLIUM_VIRGL, test "x$HAVE_GALLIUM_VIRGL" = xyes)
2556
2557 AM_CONDITIONAL(HAVE_GALLIUM_STATIC_TARGETS, test "x$enable_shared_pipe_drivers" = xno)
2558
2559 if test "x$enable_dri" = xyes; then
2560     GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRI"
2561 fi
2562
2563 if test "x$have_drisw_kms" = xyes; then
2564     GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_KMS"
2565 fi
2566 AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
2567
2568 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
2569 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
2570 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
2571 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
2572 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
2573 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
2574
2575 AM_CONDITIONAL(HAVE_INTEL_VULKAN, test "x$HAVE_INTEL_VULKAN" = xyes)
2576
2577 AM_CONDITIONAL(HAVE_INTEL_DRIVERS, test "x$HAVE_INTEL_VULKAN" = xyes -o \
2578                                         "x$HAVE_I965_DRI" = xyes)
2579
2580 AM_CONDITIONAL(NEED_RADEON_DRM_WINSYS, test "x$HAVE_GALLIUM_R300" = xyes -o \
2581                                             "x$HAVE_GALLIUM_R600" = xyes -o \
2582                                             "x$HAVE_GALLIUM_RADEONSI" = xyes)
2583 AM_CONDITIONAL(NEED_WINSYS_XLIB, test "x$enable_glx" = xgallium-xlib)
2584 AM_CONDITIONAL(NEED_RADEON_LLVM, test x$NEED_RADEON_LLVM = xyes)
2585 AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
2586 AM_CONDITIONAL(HAVE_MESA_LLVM, test x$MESA_LLVM = x1)
2587 AM_CONDITIONAL(USE_VC4_SIMULATOR, test x$USE_VC4_SIMULATOR = xyes)
2588 if test "x$USE_VC4_SIMULATOR" = xyes -a "x$HAVE_GALLIUM_ILO" = xyes; then
2589     AC_MSG_ERROR([VC4 simulator on x86 replaces i965 driver build, so ilo must be disabled.])
2590 fi
2591
2592 AM_CONDITIONAL(HAVE_LIBDRM, test "x$have_libdrm" = xyes)
2593 AM_CONDITIONAL(HAVE_OSMESA, test "x$enable_osmesa" = xyes)
2594 AM_CONDITIONAL(HAVE_GALLIUM_OSMESA, test "x$enable_gallium_osmesa" = xyes)
2595
2596 AM_CONDITIONAL(HAVE_X86_ASM, test "x$asm_arch" = xx86 -o "x$asm_arch" = xx86_64)
2597 AM_CONDITIONAL(HAVE_X86_64_ASM, test "x$asm_arch" = xx86_64)
2598 AM_CONDITIONAL(HAVE_SPARC_ASM, test "x$asm_arch" = xsparc)
2599
2600 AC_SUBST([NINE_MAJOR], 1)
2601 AC_SUBST([NINE_MINOR], 0)
2602 AC_SUBST([NINE_TINY], 0)
2603 AC_SUBST([NINE_VERSION], "$NINE_MAJOR.$NINE_MINOR.$NINE_TINY")
2604
2605 AC_SUBST([VDPAU_MAJOR], 1)
2606 AC_SUBST([VDPAU_MINOR], 0)
2607
2608 VA_MAJOR=`$PKG_CONFIG --modversion libva | $SED -n 's/\([[^\.]]*\)\..*$/\1/p'`
2609 VA_MINOR=`$PKG_CONFIG --modversion libva | $SED -n 's/.*\.\(.*\)\..*$/\1/p'`
2610 AC_SUBST([VA_MAJOR], $VA_MAJOR)
2611 AC_SUBST([VA_MINOR], $VA_MINOR)
2612
2613 AC_SUBST([XVMC_MAJOR], 1)
2614 AC_SUBST([XVMC_MINOR], 0)
2615
2616 XA_HEADER="$srcdir/src/gallium/state_trackers/xa/xa_tracker.h"
2617 XA_MAJOR=`grep "#define XA_TRACKER_VERSION_MAJOR" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_MAJOR //'`
2618 XA_MINOR=`grep "#define XA_TRACKER_VERSION_MINOR" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_MINOR //'`
2619 XA_TINY=`grep "#define XA_TRACKER_VERSION_PATCH" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_PATCH //'`
2620
2621 AC_SUBST([XA_MAJOR], $XA_MAJOR)
2622 AC_SUBST([XA_MINOR], $XA_MINOR)
2623 AC_SUBST([XA_TINY], $XA_TINY)
2624 AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_TINY")
2625
2626 AC_SUBST([TIMESTAMP_CMD], '`test $(SOURCE_DATE_EPOCH) && echo $(SOURCE_DATE_EPOCH) || date +%s`')
2627
2628 AC_ARG_ENABLE(valgrind,
2629               [AS_HELP_STRING([--enable-valgrind],
2630                              [Build mesa with valgrind support (default: auto)])],
2631                              [VALGRIND=$enableval], [VALGRIND=auto])
2632 if test "x$VALGRIND" != xno; then
2633         PKG_CHECK_MODULES(VALGRIND, [valgrind], [have_valgrind=yes], [have_valgrind=no])
2634 fi
2635 AC_MSG_CHECKING([whether to enable Valgrind support])
2636 if test "x$VALGRIND" = xauto; then
2637         VALGRIND="$have_valgrind"
2638 fi
2639
2640 if test "x$VALGRIND" = "xyes"; then
2641         if ! test "x$have_valgrind" = xyes; then
2642                 AC_MSG_ERROR([Valgrind support required but not present])
2643         fi
2644         AC_DEFINE([HAVE_VALGRIND], 1, [Use valgrind intrinsics to suppress false warnings])
2645 fi
2646
2647 AC_MSG_RESULT([$VALGRIND])
2648
2649 dnl Restore LDFLAGS and CPPFLAGS
2650 LDFLAGS="$_SAVE_LDFLAGS"
2651 CPPFLAGS="$_SAVE_CPPFLAGS"
2652
2653 dnl Suppress clang's warnings about unused CFLAGS and CXXFLAGS
2654 if test "x$acv_mesa_CLANG" = xyes; then
2655     CFLAGS="$CFLAGS -Qunused-arguments"
2656     CXXFLAGS="$CXXFLAGS -Qunused-arguments"
2657 fi
2658
2659 dnl Add user CFLAGS and CXXFLAGS
2660 CFLAGS="$CFLAGS $USER_CFLAGS"
2661 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
2662
2663 dnl Substitute the config
2664 AC_CONFIG_FILES([Makefile
2665                 src/Makefile
2666                 src/compiler/Makefile
2667                 src/egl/Makefile
2668                 src/egl/main/egl.pc
2669                 src/egl/wayland/wayland-drm/Makefile
2670                 src/egl/wayland/wayland-egl/Makefile
2671                 src/egl/wayland/wayland-egl/wayland-egl.pc
2672                 src/gallium/Makefile
2673                 src/gallium/auxiliary/Makefile
2674                 src/gallium/auxiliary/pipe-loader/Makefile
2675                 src/gallium/drivers/freedreno/Makefile
2676                 src/gallium/drivers/ddebug/Makefile
2677                 src/gallium/drivers/i915/Makefile
2678                 src/gallium/drivers/ilo/Makefile
2679                 src/gallium/drivers/llvmpipe/Makefile
2680                 src/gallium/drivers/noop/Makefile
2681                 src/gallium/drivers/nouveau/Makefile
2682                 src/gallium/drivers/r300/Makefile
2683                 src/gallium/drivers/r600/Makefile
2684                 src/gallium/drivers/radeon/Makefile
2685                 src/gallium/drivers/radeonsi/Makefile
2686                 src/gallium/drivers/rbug/Makefile
2687                 src/gallium/drivers/softpipe/Makefile
2688                 src/gallium/drivers/svga/Makefile
2689                 src/gallium/drivers/swr/Makefile
2690                 src/gallium/drivers/trace/Makefile
2691                 src/gallium/drivers/vc4/Makefile
2692                 src/gallium/drivers/virgl/Makefile
2693                 src/gallium/state_trackers/clover/Makefile
2694                 src/gallium/state_trackers/dri/Makefile
2695                 src/gallium/state_trackers/glx/xlib/Makefile
2696                 src/gallium/state_trackers/nine/Makefile
2697                 src/gallium/state_trackers/omx/Makefile
2698                 src/gallium/state_trackers/osmesa/Makefile
2699                 src/gallium/state_trackers/va/Makefile
2700                 src/gallium/state_trackers/vdpau/Makefile
2701                 src/gallium/state_trackers/xa/Makefile
2702                 src/gallium/state_trackers/xvmc/Makefile
2703                 src/gallium/targets/d3dadapter9/Makefile
2704                 src/gallium/targets/d3dadapter9/d3d.pc
2705                 src/gallium/targets/dri/Makefile
2706                 src/gallium/targets/libgl-xlib/Makefile
2707                 src/gallium/targets/omx/Makefile
2708                 src/gallium/targets/opencl/Makefile
2709                 src/gallium/targets/opencl/mesa.icd
2710                 src/gallium/targets/osmesa/Makefile
2711                 src/gallium/targets/osmesa/osmesa.pc
2712                 src/gallium/targets/pipe-loader/Makefile
2713                 src/gallium/targets/va/Makefile
2714                 src/gallium/targets/vdpau/Makefile
2715                 src/gallium/targets/xa/Makefile
2716                 src/gallium/targets/xa/xatracker.pc
2717                 src/gallium/targets/xvmc/Makefile
2718                 src/gallium/tests/trivial/Makefile
2719                 src/gallium/tests/unit/Makefile
2720                 src/gallium/winsys/freedreno/drm/Makefile
2721                 src/gallium/winsys/i915/drm/Makefile
2722                 src/gallium/winsys/intel/drm/Makefile
2723                 src/gallium/winsys/nouveau/drm/Makefile
2724                 src/gallium/winsys/radeon/drm/Makefile
2725                 src/gallium/winsys/amdgpu/drm/Makefile
2726                 src/gallium/winsys/svga/drm/Makefile
2727                 src/gallium/winsys/sw/dri/Makefile
2728                 src/gallium/winsys/sw/kms-dri/Makefile
2729                 src/gallium/winsys/sw/null/Makefile
2730                 src/gallium/winsys/sw/wrapper/Makefile
2731                 src/gallium/winsys/sw/xlib/Makefile
2732                 src/gallium/winsys/vc4/drm/Makefile
2733                 src/gallium/winsys/virgl/drm/Makefile
2734                 src/gallium/winsys/virgl/vtest/Makefile
2735                 src/gbm/Makefile
2736                 src/gbm/main/gbm.pc
2737                 src/glx/Makefile
2738                 src/glx/apple/Makefile
2739                 src/glx/tests/Makefile
2740                 src/gtest/Makefile
2741                 src/intel/Makefile
2742                 src/intel/genxml/Makefile
2743                 src/intel/isl/Makefile
2744                 src/intel/vulkan/Makefile
2745                 src/loader/Makefile
2746                 src/mapi/Makefile
2747                 src/mapi/es1api/glesv1_cm.pc
2748                 src/mapi/es2api/glesv2.pc
2749                 src/mapi/glapi/gen/Makefile
2750                 src/mesa/Makefile
2751                 src/mesa/gl.pc
2752                 src/mesa/drivers/dri/dri.pc
2753                 src/mesa/drivers/dri/common/Makefile
2754                 src/mesa/drivers/dri/common/xmlpool/Makefile
2755                 src/mesa/drivers/dri/i915/Makefile
2756                 src/mesa/drivers/dri/i965/Makefile
2757                 src/mesa/drivers/dri/Makefile
2758                 src/mesa/drivers/dri/nouveau/Makefile
2759                 src/mesa/drivers/dri/r200/Makefile
2760                 src/mesa/drivers/dri/radeon/Makefile
2761                 src/mesa/drivers/dri/swrast/Makefile
2762                 src/mesa/drivers/osmesa/Makefile
2763                 src/mesa/drivers/osmesa/osmesa.pc
2764                 src/mesa/drivers/x11/Makefile
2765                 src/mesa/main/tests/Makefile
2766                 src/util/Makefile
2767                 src/util/tests/hash_table/Makefile])
2768
2769 AC_OUTPUT
2770
2771 # Fix up dependencies in *.Plo files, where we changed the extension of a
2772 # source file
2773 $SED -i -e 's/brw_blorp.cpp/brw_blorp.c/' src/mesa/drivers/dri/i965/.deps/brw_blorp.Plo
2774 $SED -i -e 's/gen6_blorp.cpp/gen6_blorp.c/' src/mesa/drivers/dri/i965/.deps/gen6_blorp.Plo
2775 $SED -i -e 's/gen7_blorp.cpp/gen7_blorp.c/' src/mesa/drivers/dri/i965/.deps/gen7_blorp.Plo
2776 $SED -i -e 's/gen8_blorp.cpp/gen8_blorp.c/' src/mesa/drivers/dri/i965/.deps/gen8_blorp.Plo
2777
2778
2779 dnl
2780 dnl Output some configuration info for the user
2781 dnl
2782 echo ""
2783 echo "        prefix:          $prefix"
2784 echo "        exec_prefix:     $exec_prefix"
2785 echo "        libdir:          $libdir"
2786 echo "        includedir:      $includedir"
2787
2788 dnl API info
2789 echo ""
2790 echo "        OpenGL:          $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
2791
2792 dnl Driver info
2793 echo ""
2794 case "x$enable_osmesa$enable_gallium_osmesa" in
2795 xnoyes)
2796         echo "        OSMesa:          lib$OSMESA_LIB (Gallium)"
2797         ;;
2798 xyesno)
2799         echo "        OSMesa:          lib$OSMESA_LIB"
2800         ;;
2801 xnono)
2802         echo "        OSMesa:          no"
2803         ;;
2804 esac
2805
2806 echo ""
2807 if test "x$enable_dri" != xno; then
2808         echo "        DRI platform:    $dri_platform"
2809         if test -z "$DRI_DIRS"; then
2810             echo "        DRI drivers:     no"
2811         else
2812             echo "        DRI drivers:     $DRI_DIRS"
2813         fi
2814         echo "        DRI driver dir:  $DRI_DRIVER_INSTALL_DIR"
2815 fi
2816
2817 case "x$enable_glx" in
2818 xdri)
2819     echo "        GLX:             DRI-based"
2820     ;;
2821 xxlib)
2822     echo "        GLX:             Xlib-based"
2823     ;;
2824 xgallium-xlib)
2825     echo "        GLX:             Xlib-based (Gallium)"
2826     ;;
2827 *)
2828     echo "        GLX:             $enable_glx"
2829     ;;
2830 esac
2831
2832 dnl EGL
2833 echo ""
2834 echo "        EGL:             $enable_egl"
2835 if test "$enable_egl" = yes; then
2836     echo "        EGL platforms:   $egl_platforms"
2837
2838     egl_drivers=""
2839     if test "x$HAVE_EGL_DRIVER_DRI2" != "x"; then
2840         egl_drivers="$egl_drivers builtin:egl_dri2"
2841     fi
2842     if test "x$HAVE_EGL_DRIVER_DRI3" != "x"; then
2843         egl_drivers="$egl_drivers builtin:egl_dri3"
2844     fi
2845
2846     echo "        EGL drivers:    $egl_drivers"
2847 fi
2848
2849 # Vulkan
2850 echo ""
2851 if test "x$VULKAN_DRIVERS" != x; then
2852     echo "        Vulkan drivers:  $VULKAN_DRIVERS"
2853     echo "        Vulkan ICD dir:  $VULKAN_ICD_INSTALL_DIR"
2854 else
2855     echo "        Vulkan drivers:  no"
2856 fi
2857
2858 echo ""
2859 if test "x$MESA_LLVM" = x1; then
2860     echo "        llvm:            yes"
2861     echo "        llvm-config:     $LLVM_CONFIG"
2862     echo "        llvm-version:    $LLVM_VERSION"
2863 else
2864     echo "        llvm:            no"
2865 fi
2866
2867 echo ""
2868 if test -n "$with_gallium_drivers"; then
2869     echo "        Gallium drivers: $gallium_drivers"
2870     echo "        Gallium st:      $gallium_st"
2871 else
2872     echo "        Gallium:         no"
2873 fi
2874
2875 dnl Shader cache
2876 echo ""
2877 echo "        Shader cache:    $enable_shader_cache"
2878 if test "x$enable_shader_cache" = "xyes"; then
2879     echo "        With SHA1 from:  $with_sha1"
2880 fi
2881
2882 dnl Libraries
2883 echo ""
2884 echo "        Shared libs:     $enable_shared"
2885 echo "        Static libs:     $enable_static"
2886 echo "        Shared-glapi:    $enable_shared_glapi"
2887
2888 dnl Compiler options
2889 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2890 cflags=`echo $CFLAGS | \
2891     $SED 's/^ *//;s/  */ /;s/ *$//'`
2892 cxxflags=`echo $CXXFLAGS | \
2893     $SED 's/^ *//;s/  */ /;s/ *$//'`
2894 defines=`echo $DEFINES | $SED 's/^ *//;s/  */ /;s/ *$//'`
2895 echo ""
2896 echo "        CFLAGS:          $cflags"
2897 echo "        CXXFLAGS:        $cxxflags"
2898 echo "        Macros:          $defines"
2899 echo ""
2900 if test "x$MESA_LLVM" = x1; then
2901     echo "        LLVM_CFLAGS:     $LLVM_CFLAGS"
2902     echo "        LLVM_CXXFLAGS:   $LLVM_CXXFLAGS"
2903     echo "        LLVM_CPPFLAGS:   $LLVM_CPPFLAGS"
2904     echo "        LLVM_LDFLAGS:    $LLVM_LDFLAGS"
2905     echo ""
2906 fi
2907 echo "        PYTHON2:         $PYTHON2"
2908
2909 echo ""
2910 echo "        Run '${MAKE-make}' to build Mesa"
2911 echo ""