OSDN Git Service

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