OSDN Git Service

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