OSDN Git Service

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