OSDN Git Service

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