OSDN Git Service

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