OSDN Git Service

docs: update some environment variable info
[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-devel],
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.45
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,ilo,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 # Building OpenGL ES1 and/or ES2 without OpenGL is not supported on mesa 9.0.x
680 if test "x$enable_opengl" = xno -a \
681         "x$enable_gles1" = xyes; then
682     AC_MSG_ERROR([Building OpenGL ES1 without OpenGL is not supported])
683 fi
684
685 if test "x$enable_opengl" = xno -a \
686         "x$enable_gles2" = xyes; then
687     AC_MSG_ERROR([Building OpenGL ES2 without OpenGL is not supported])
688 fi
689
690 AM_CONDITIONAL(HAVE_OPENGL, test "x$enable_opengl" = xyes)
691 AM_CONDITIONAL(HAVE_OPENGL_ES1, test "x$enable_gles1" = xyes)
692 AM_CONDITIONAL(HAVE_OPENGL_ES2, test "x$enable_gles2" = xyes)
693 AM_CONDITIONAL(NEED_OPENGL_COMMON, test "x$enable_opengl" = xyes -o \
694                                         "x$enable_gles1" = xyes -o \
695                                         "x$enable_gles2" = xyes)
696
697 if test "x$enable_glx" = xno; then
698     AC_MSG_WARN([GLX disabled, disabling Xlib-GLX])
699     enable_xlib_glx=no
700 fi
701
702 if test "x$enable_dri$enable_xlib_glx" = xyesyes; then
703     AC_MSG_ERROR([DRI and Xlib-GLX cannot be built together])
704 fi
705
706 if test "x$enable_opengl$enable_xlib_glx" = xnoyes; then
707     AC_MSG_ERROR([Xlib-GLX cannot be built without OpenGL])
708 fi
709
710 # Disable GLX if OpenGL is not enabled
711 if test "x$enable_glx$enable_opengl" = xyesno; then
712     AC_MSG_WARN([OpenGL not enabled, disabling GLX])
713     enable_glx=no
714 fi
715
716 # Disable GLX if DRI and Xlib-GLX are not enabled
717 if test "x$enable_glx" = xyes -a \
718         "x$enable_dri" = xno -a \
719         "x$enable_xlib_glx" = xno; then
720     AC_MSG_WARN([Neither DRI nor Xlib-GLX enabled, disabling GLX])
721     enable_glx=no
722 fi
723
724 AM_CONDITIONAL(HAVE_DRI_GLX, test "x$enable_glx" = xyes -a \
725                                   "x$enable_dri" = xyes)
726 AM_CONDITIONAL(HAVE_DRI, test "x$enable_dri" = xyes)
727 AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_xlib_glx" = xyes -o \
728                                   "x$enable_osmesa" = xyes)
729
730 AC_ARG_ENABLE([shared-glapi],
731     [AS_HELP_STRING([--enable-shared-glapi],
732         [Enable shared glapi for OpenGL @<:@default=yes@:>@])],
733     [enable_shared_glapi="$enableval"],
734     [enable_shared_glapi="$enable_dri"])
735
736 # Shared GLAPI is only useful for DRI
737 if test "x$enable_dri" = xno; then
738     AC_MSG_NOTICE([Shared GLAPI is only useful for DRI, disabling])
739     enable_shared_glapi=no
740 fi
741
742 AM_CONDITIONAL(HAVE_SHARED_GLAPI, test "x$enable_shared_glapi" = xyes)
743
744 dnl
745 dnl Driver specific build directories
746 dnl
747 GALLIUM_TARGET_DIRS=""
748 GALLIUM_WINSYS_DIRS="sw"
749 GALLIUM_DRIVERS_DIRS="galahad trace rbug noop identity"
750 GALLIUM_STATE_TRACKERS_DIRS=""
751
752 case "x$enable_glx$enable_xlib_glx" in
753 xyesyes)
754     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
755     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
756     GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS"
757     NEED_WINSYS_XLIB="yes"
758     ;;
759 esac
760
761 if test "x$enable_dri" = xyes; then
762     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/dri"
763     GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
764 fi
765
766 if test "x$enable_osmesa" = xyes; then
767     GALLIUM_STATE_TRACKERS_DIRS="osmesa $GALLIUM_STATE_TRACKERS_DIRS"
768     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS osmesa"
769 fi
770
771 AC_SUBST([MESA_LLVM])
772
773 # Check for libdrm
774 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
775                   [have_libdrm=yes], [have_libdrm=no])
776
777 if test "x$enable_dri" = xyes; then
778     # DRI must be shared, I think
779     if test "$enable_static" = yes; then
780         AC_MSG_ERROR([Cannot use static libraries for DRI drivers])
781     fi
782
783     # not a hard requirement as swrast does not depend on it
784     if test "x$have_libdrm" = xyes; then
785         DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
786     fi
787 fi
788
789 dnl Direct rendering or just indirect rendering
790 case "$host_os" in
791 gnu*)
792     dnl Disable by default on GNU/Hurd
793     driglx_direct_default="no"
794     ;;
795 cygwin*)
796     dnl Disable by default on cygwin
797     driglx_direct_default="no"
798     ;;
799 *)
800     driglx_direct_default="yes"
801     ;;
802 esac
803 AC_ARG_ENABLE([driglx-direct],
804     [AS_HELP_STRING([--disable-driglx-direct],
805         [disable direct rendering in GLX and EGL for DRI \
806             @<:@default=auto@:>@])],
807     [driglx_direct="$enableval"],
808     [driglx_direct="$driglx_direct_default"])
809
810 dnl
811 dnl libGL configuration per driver
812 dnl
813 case "x$enable_glx$enable_xlib_glx" in
814 xyesyes)
815     # Xlib-based GLX
816     PKG_CHECK_MODULES([XLIBGL], [x11 xext])
817     GL_PC_REQ_PRIV="x11 xext"
818     X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
819     GL_LIB_DEPS="$XLIBGL_LIBS"
820     GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
821     GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm $PTHREAD_LIBS"
822     ;;
823 xyesno)
824     # DRI-based GLX
825     PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
826     if test x"$driglx_direct" = xyes; then
827         if test "x$have_libdrm" != xyes; then
828             AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
829         fi
830         PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
831         GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED"
832     fi
833
834     # find the DRI deps for libGL
835     dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx >= 1.8.1 xcb-dri2 >= 1.8"
836
837     # add xf86vidmode if available
838     PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
839     if test "$HAVE_XF86VIDMODE" = yes ; then
840         dri_modules="$dri_modules xxf86vm"
841     fi
842
843     PKG_CHECK_MODULES([DRIGL], [$dri_modules])
844     GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
845     X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
846     GL_LIB_DEPS="$DRIGL_LIBS"
847
848     # need DRM libs, $PTHREAD_LIBS, etc.
849     GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
850     GL_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
851     ;;
852 esac
853
854 # This is outside the case (above) so that it is invoked even for non-GLX
855 # builds.
856 AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
857
858 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
859 GLESv1_CM_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
860 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
861 GLESv2_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
862
863 AC_SUBST([X11_INCLUDES])
864 AC_SUBST([GL_LIB_DEPS])
865 AC_SUBST([GL_PC_REQ_PRIV])
866 AC_SUBST([GL_PC_LIB_PRIV])
867 AC_SUBST([GL_PC_CFLAGS])
868 AC_SUBST([DRI_PC_REQ_PRIV])
869 AC_SUBST([GLESv1_CM_LIB_DEPS])
870 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
871 AC_SUBST([GLESv2_LIB_DEPS])
872 AC_SUBST([GLESv2_PC_LIB_PRIV])
873
874 DRI_LIB_DEPS="\$(top_builddir)/src/mesa/libdricore/libdricore${VERSION}.la"
875
876 AC_SUBST([HAVE_XF86VIDMODE])
877
878 dnl
879 dnl More GLX setup
880 dnl
881 case "x$enable_glx$enable_xlib_glx" in
882 xyesyes)
883     DEFINES="$DEFINES -DUSE_XSHM"
884     ;;
885 xyesno)
886     DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
887     if test "x$driglx_direct" = xyes; then
888         DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
889     fi
890     ;;
891 esac
892
893 dnl
894 dnl TLS detection
895 dnl
896
897 AC_ARG_ENABLE([glx-tls],
898     [AS_HELP_STRING([--enable-glx-tls],
899         [enable TLS support in GLX @<:@default=disabled@:>@])],
900     [GLX_USE_TLS="$enableval"],
901     [GLX_USE_TLS=no])
902 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
903
904 AS_IF([test "x$GLX_USE_TLS" = xyes -a "x$ax_pthread_ok" = xyes],
905       [DEFINES="${DEFINES} -DGLX_USE_TLS -DHAVE_PTHREAD"])
906
907 dnl
908 dnl More DRI setup
909 dnl
910 dnl Directory for DRI drivers
911 AC_ARG_WITH([dri-driverdir],
912     [AS_HELP_STRING([--with-dri-driverdir=DIR],
913         [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
914     [DRI_DRIVER_INSTALL_DIR="$withval"],
915     [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
916 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
917 dnl Extra search path for DRI drivers
918 AC_ARG_WITH([dri-searchpath],
919     [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
920         [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
921     [DRI_DRIVER_SEARCH_DIR="$withval"],
922     [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
923 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
924 dnl Which drivers to build - default is chosen by platform
925 AC_ARG_WITH([dri-drivers],
926     [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
927         [comma delimited DRI drivers list, e.g.
928         "swrast,i965,radeon" @<:@default=auto@:>@])],
929     [with_dri_drivers="$withval"],
930     [with_dri_drivers=yes])
931 if test "x$with_dri_drivers" = x; then
932     with_dri_drivers=no
933 fi
934
935 dnl If $with_dri_drivers is yes, directories will be added through
936 dnl platform checks
937 DRI_DIRS=""
938 case "$with_dri_drivers" in
939 no) ;;
940 yes)
941     # classic DRI drivers
942     if test "x$enable_opengl" = xyes; then
943         DRI_DIRS="yes"
944     fi
945     ;;
946 *)
947     # verify the requested driver directories exist
948     dri_drivers=`IFS=', '; echo $with_dri_drivers`
949     for driver in $dri_drivers; do
950         test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
951             AC_MSG_ERROR([DRI driver directory '$driver' does not exist])
952     done
953     DRI_DIRS="$dri_drivers"
954     if test -n "$DRI_DIRS" -a "x$enable_opengl" != xyes; then
955         AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
956     fi
957     ;;
958 esac
959
960 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
961 if test "x$enable_dri" = xyes; then
962     # Platform specific settings and drivers to build
963     case "$host_os" in
964     linux*)
965         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1"
966         DEFINES="$DEFINES -DHAVE_ALIAS"
967
968         case "$host_cpu" in
969         x86_64)
970             if test "x$DRI_DIRS" = "xyes"; then
971                 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
972             fi
973             ;;
974         powerpc*)
975             # Build only the drivers for cards that exist on PowerPC.
976             if test "x$DRI_DIRS" = "xyes"; then
977                 DRI_DIRS="r200 radeon swrast"
978             fi
979             ;;
980         sparc*)
981             # Build only the drivers for cards that exist on sparc
982             if test "x$DRI_DIRS" = "xyes"; then
983                 DRI_DIRS="r200 radeon swrast"
984             fi
985             ;;
986         esac
987         ;;
988     freebsd* | dragonfly* | *netbsd*)
989         DEFINES="$DEFINES -DHAVE_PTHREAD -DUSE_EXTERNAL_DXTN_LIB=1"
990         DEFINES="$DEFINES -DHAVE_ALIAS"
991
992         if test "x$DRI_DIRS" = "xyes"; then
993             DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
994         fi
995         ;;
996     gnu*)
997         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1"
998         DEFINES="$DEFINES -DHAVE_ALIAS"
999         ;;
1000     solaris*)
1001         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1"
1002         ;;
1003     cygwin*)
1004         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1"
1005         if test "x$DRI_DIRS" = "xyes"; then
1006             DRI_DIRS="swrast"
1007         fi
1008         ;;
1009     esac
1010
1011     # default drivers
1012     if test "x$DRI_DIRS" = "xyes"; then
1013         DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1014     fi
1015
1016     DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/  */ /g'`
1017
1018     # Check for expat
1019     EXPAT_INCLUDES=""
1020     EXPAT_LIB=-lexpat
1021     AC_ARG_WITH([expat],
1022         [AS_HELP_STRING([--with-expat=DIR],
1023             [expat install directory])],[
1024         EXPAT_INCLUDES="-I$withval/include"
1025         CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
1026         LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
1027         EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
1028         ])
1029     AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
1030     save_LIBS="$LIBS"
1031     AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1032         [AC_MSG_ERROR([Expat required for DRI.])])
1033     LIBS="$save_LIBS"
1034
1035     # If we are building any DRI driver other than swrast.
1036     if test -n "$DRI_DIRS" -a x"$DRI_DIRS" != xswrast; then
1037         # ... libdrm is required
1038         if test "x$have_libdrm" != xyes; then
1039             AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
1040         fi
1041         # ... and build dricommon
1042         HAVE_COMMON_DRI=yes
1043     fi
1044
1045     # put all the necessary libs together
1046     DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1047     GALLIUM_DRI_LIB_DEPS="$GALLIUM_DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm $CLOCK_LIB $PTHREAD_LIBS $DLOPEN_LIBS"
1048 fi
1049 AM_CONDITIONAL(NEED_LIBDRICORE, test -n "$DRI_DIRS")
1050 AC_SUBST([EXPAT_INCLUDES])
1051 AC_SUBST([DRI_LIB_DEPS])
1052 AC_SUBST([GALLIUM_DRI_LIB_DEPS])
1053
1054 case $DRI_DIRS in
1055 *i915*|*i965*)
1056     PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1057
1058     for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1059         case $d in
1060         i915)
1061             HAVE_I915_DRI=yes;
1062             ;;
1063         i965)
1064             HAVE_I965_DRI=yes;
1065             ;;
1066         esac
1067     done
1068
1069     ;;
1070 esac
1071
1072 case $DRI_DIRS in
1073 *nouveau*)
1074     PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED])
1075     HAVE_NOUVEAU_DRI=yes;
1076     ;;
1077 esac
1078
1079 case $DRI_DIRS in
1080 *radeon*|*r200*)
1081     PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1082
1083     for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1084         case $d in
1085         radeon)
1086             HAVE_RADEON_DRI=yes;
1087             ;;
1088         r200)
1089             HAVE_R200_DRI=yes;
1090             ;;
1091         esac
1092     done
1093
1094     ;;
1095 esac
1096
1097 case $DRI_DIRS in
1098 *swrast*)
1099     HAVE_SWRAST_DRI=yes;
1100     ;;
1101 esac
1102
1103 dnl
1104 dnl OSMesa configuration
1105 dnl
1106
1107 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1108 AC_ARG_WITH([osmesa-bits],
1109     [AS_HELP_STRING([--with-osmesa-bits=BITS],
1110         [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1111     [osmesa_bits="$withval"],
1112     [osmesa_bits=8])
1113 if test "x$osmesa_bits" != x8; then
1114     if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then
1115         AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1116         osmesa_bits=8
1117     fi
1118 fi
1119 case "x$osmesa_bits" in
1120 x8)
1121     OSMESA_LIB="${OSMESA_LIB}"
1122     ;;
1123 x16|x32)
1124     OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
1125     DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1126     ;;
1127 *)
1128     AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1129     ;;
1130 esac
1131
1132 if test "x$enable_osmesa" = xyes; then
1133     # only link libraries with osmesa if shared
1134     if test "$enable_static" = no; then
1135         OSMESA_LIB_DEPS="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1136     else
1137         OSMESA_LIB_DEPS=""
1138     fi
1139     OSMESA_MESA_DEPS=""
1140     OSMESA_PC_LIB_PRIV="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1141 fi
1142
1143 AC_SUBST([OSMESA_LIB_DEPS])
1144 AC_SUBST([OSMESA_MESA_DEPS])
1145 AC_SUBST([OSMESA_PC_REQ])
1146 AC_SUBST([OSMESA_PC_LIB_PRIV])
1147
1148 dnl
1149 dnl gbm configuration
1150 dnl
1151 if test "x$enable_gbm" = xauto; then
1152     case "$with_egl_platforms" in
1153         *drm*)
1154             enable_gbm=yes ;;
1155          *)
1156             enable_gbm=no ;;
1157     esac
1158 fi
1159 if test "x$enable_gbm" = xyes; then
1160     PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1161                       AC_MSG_ERROR([gbm needs udev]))
1162
1163     if test "x$enable_dri" = xyes; then
1164         GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
1165         if test "x$enable_shared_glapi" = xno; then
1166             AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1167         fi
1168     fi
1169 fi
1170 AM_CONDITIONAL(HAVE_GBM, test "x$enable_gbm" = xyes)
1171 GBM_PC_REQ_PRIV="libudev"
1172 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1173 AC_SUBST([GBM_PC_REQ_PRIV])
1174 AC_SUBST([GBM_PC_LIB_PRIV])
1175
1176 dnl
1177 dnl EGL configuration
1178 dnl
1179 EGL_CLIENT_APIS=""
1180
1181 if test "x$enable_egl" = xyes; then
1182     EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS $PTHREAD_LIBS"
1183
1184     AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1185
1186     if test "$enable_static" != yes; then
1187         # build egl_glx when libGL is built
1188         PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1189                           [have_libudev=yes],[have_libudev=no])
1190         if test "$have_libudev" = yes; then
1191             DEFINES="$DEFINES -DHAVE_LIBUDEV"
1192         fi
1193
1194         if test "x$enable_dri" = xyes; then
1195             HAVE_EGL_DRIVER_DRI2=1
1196         fi
1197
1198     fi
1199 fi
1200 AM_CONDITIONAL(HAVE_EGL, test "x$enable_egl" = xyes)
1201 AC_SUBST([EGL_LIB_DEPS])
1202
1203 dnl
1204 dnl EGL Gallium configuration
1205 dnl
1206 if test "x$enable_gallium_egl" = xyes; then
1207     if test "x$with_gallium_drivers" = x; then
1208         AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
1209     fi
1210     if test "x$enable_egl" = xno; then
1211         AC_MSG_ERROR([cannot enable egl_gallium without EGL])
1212     fi
1213     if test "x$have_libdrm" != xyes; then
1214         AC_MSG_ERROR([egl_gallium requires libdrm >= $LIBDRM_REQUIRED])
1215     fi
1216
1217     GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
1218     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static"
1219 fi
1220 AM_CONDITIONAL(HAVE_GALLIUM_EGL, test "x$enable_gallium_egl" = xyes)
1221
1222 dnl
1223 dnl gbm Gallium configuration
1224 dnl
1225 if test "x$enable_gallium_gbm" = xauto; then
1226     case "$enable_gbm$enable_gallium_egl$enable_dri$with_egl_platforms" in
1227         yesyesyes*drm*)
1228             enable_gallium_gbm=yes ;;
1229          *)
1230             enable_gallium_gbm=no ;;
1231     esac
1232 fi
1233 if test "x$enable_gallium_gbm" = xyes; then
1234     if test "x$with_gallium_drivers" = x; then
1235         AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
1236     fi
1237     if test "x$enable_gbm" = xno; then
1238         AC_MSG_ERROR([cannot enable gbm_gallium without gbm])
1239     fi
1240     # gbm_gallium abuses DRI_LIB_DEPS to link.  Make sure it is set.
1241     if test "x$enable_dri" = xno; then
1242         AC_MSG_ERROR([gbm_gallium requires --enable-dri to build])
1243     fi
1244
1245     GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS"
1246     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm"
1247     enable_gallium_loader=yes
1248 fi
1249 AM_CONDITIONAL(HAVE_GALLIUM_GBM, test "x$enable_gallium_gbm" = xyes)
1250
1251 dnl
1252 dnl X.Org DDX configuration
1253 dnl
1254 if test "x$enable_xorg" = xyes; then
1255     PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1256     PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1257     PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1258     PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1259         HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1260         HAVE_XEXTPROTO_71="no")
1261     GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS"
1262 fi
1263 AM_CONDITIONAL(HAVE_ST_XORG, test "x$enable_xorg" = xyes)
1264
1265 dnl
1266 dnl XA configuration
1267 dnl
1268 if test "x$enable_xa" = xyes; then
1269 AC_PROG_AWK
1270 AC_PROG_GREP
1271 AC_CHECK_PROG(NM, nm, "nm")
1272 if test "x$AWK" = x || test "x$GREP" = x || test "x$NM" = x; then
1273 AC_MSG_WARN([Missing one of nm, grep or awk. Disabling xa.])
1274 enable_xa=no
1275 fi
1276 fi
1277 if test "x$enable_xa" = xyes; then
1278     GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS"
1279     AC_SUBST(AWK)
1280     AC_SUBST(GREP)
1281     AC_SUBST(NM)
1282 fi
1283 AM_CONDITIONAL(HAVE_ST_XA, test "x$enable_xa" = xyes)
1284
1285 dnl
1286 dnl OpenVG configuration
1287 dnl
1288 VG_LIB_DEPS=""
1289
1290 if test "x$enable_openvg" = xyes; then
1291     if test "x$enable_egl" = xno; then
1292         AC_MSG_ERROR([cannot enable OpenVG without EGL])
1293     fi
1294     if test "x$with_gallium_drivers" = x; then
1295         AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1296     fi
1297     if test "x$enable_gallium_egl" = xno; then
1298         AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
1299     fi
1300
1301     EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1302     VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS $PTHREAD_LIBS"
1303     GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1304     VG_PC_LIB_PRIV="-lm $CLOCK_LIB $PTHREAD_LIBS $DLOPEN_LIBS"
1305     AC_SUBST([VG_PC_LIB_PRIV])
1306 fi
1307 AM_CONDITIONAL(HAVE_OPENVG, test "x$enable_openvg" = xyes)
1308
1309 dnl
1310 dnl Gallium G3DVL configuration
1311 dnl
1312 if test -n "$with_gallium_drivers"; then
1313     if test "x$enable_xvmc" = xauto; then
1314         PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no])
1315     fi
1316
1317     if test "x$enable_vdpau" = xauto; then
1318         PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no])
1319     fi
1320 fi
1321
1322 if test "x$enable_xvmc" = xyes; then
1323     PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6 x11-xcb xcb-dri2 >= 1.8])
1324     GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xvmc"
1325 fi
1326 AM_CONDITIONAL(HAVE_ST_XVMC, test "x$enable_xvmc" = xyes)
1327
1328 if test "x$enable_vdpau" = xyes; then
1329     PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.4.1 x11-xcb xcb-dri2 >= 1.8])
1330     GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau"
1331 fi
1332 AM_CONDITIONAL(HAVE_ST_VDPAU, test "x$enable_vdpau" = xyes)
1333
1334 dnl
1335 dnl OpenCL configuration
1336 dnl
1337
1338 AC_ARG_WITH([libclc-path],
1339    [AS_HELP_STRING([--with-libclc-path],
1340          [DEPRECATED: See http://dri.freedesktop.org/wiki/GalliumCompute#How_to_Install])],
1341    [LIBCLC_PATH="$withval"],
1342    [LIBCLC_PATH=""])
1343
1344 if test "x$LIBCLC_PATH" != x; then
1345    AC_MSG_ERROR([The --with-libclc-path option has been deprecated.
1346                   Please review the updated build instructions for clover:
1347                   http://dri.freedesktop.org/wiki/GalliumCompute])
1348 fi
1349
1350
1351 AC_ARG_WITH([clang-libdir],
1352    [AS_HELP_STRING([--with-clang-libdir],
1353          [Path to Clang libraries @<:@default=llvm-config --libdir@:>@])],
1354    [CLANG_LIBDIR="$withval"],
1355    [CLANG_LIBDIR=""])
1356
1357 LIBCLC_INCLUDEDIR=`pkg-config --variable=includedir libclc`
1358 LIBCLC_LIBEXECDIR=`pkg-config --variable=libexecdir libclc`
1359 AC_SUBST([LIBCLC_INCLUDEDIR])
1360 AC_SUBST([LIBCLC_LIBEXECDIR])
1361
1362 if test "x$enable_opencl" = xyes; then
1363     if test "x$with_gallium_drivers" = x; then
1364         AC_MSG_ERROR([cannot enable OpenCL without Gallium])
1365     fi
1366
1367     if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6; then
1368         AC_MSG_ERROR([gcc >= 4.6 is required to build clover])
1369     fi
1370
1371     if test "x$LIBCLC_INCLUDEDIR" == x || test "x$LIBCLC_LIBEXECDIR" == x; then
1372         AC_MSG_ERROR([pkg-config cannot use libclc.pc which is required to build clover])
1373     fi
1374
1375     GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS clover"
1376     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS opencl"
1377     enable_gallium_loader=yes
1378 fi
1379 AM_CONDITIONAL(HAVE_CLOVER, test "x$enable_opencl" = xyes)
1380
1381 dnl
1382 dnl Gallium configuration
1383 dnl
1384 AM_CONDITIONAL(HAVE_GALLIUM, test -n "$with_gallium_drivers")
1385
1386 AC_SUBST([LLVM_BINDIR])
1387 AC_SUBST([LLVM_CFLAGS])
1388 AC_SUBST([LLVM_CPPFLAGS])
1389 AC_SUBST([LLVM_CXXFLAGS])
1390 AC_SUBST([LLVM_LIBDIR])
1391 AC_SUBST([LLVM_LIBS])
1392 AC_SUBST([LLVM_LDFLAGS])
1393 AC_SUBST([LLVM_INCLUDEDIR])
1394 AC_SUBST([LLVM_VERSION])
1395 AC_SUBST([CLANG_RESOURCE_DIR])
1396
1397 case "x$enable_opengl$enable_gles1$enable_gles2" in
1398 x*yes*)
1399     EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1400     ;;
1401 esac
1402
1403 AC_SUBST([VG_LIB_DEPS])
1404 AC_SUBST([EGL_CLIENT_APIS])
1405
1406 dnl
1407 dnl EGL Platforms configuration
1408 dnl
1409 AC_ARG_WITH([egl-platforms],
1410     [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1411         [comma delimited native platforms libEGL supports, e.g.
1412         "x11,drm" @<:@default=auto@:>@])],
1413     [with_egl_platforms="$withval"],
1414     [if test "x$enable_egl" = xyes; then
1415         with_egl_platforms="x11"
1416     else
1417         with_egl_platforms=""
1418     fi])
1419
1420 EGL_PLATFORMS=""
1421
1422 if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
1423     AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1424 fi
1425
1426 # Do per-EGL platform setups and checks
1427 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1428 for plat in $egl_platforms; do
1429         case "$plat" in
1430         wayland)
1431                 PKG_CHECK_MODULES([WAYLAND], [wayland-client >= 1.0.2 wayland-server >= 1.0.2])
1432                 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
1433
1434                 WAYLAND_PREFIX=`$PKG_CONFIG --variable=prefix wayland-client`
1435                 AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner],,
1436                              [${WAYLAND_PREFIX}/bin$PATH_SEPARATOR$PATH])
1437                 ;;
1438
1439         x11)
1440                 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 >= 1.8 xcb-xfixes])
1441
1442                 if test "x$enable_glx" = xyes; then
1443                         HAVE_EGL_DRIVER_GLX=1
1444                 fi
1445                 ;;
1446
1447         drm)
1448                 test "x$enable_gbm" = "xno" &&
1449                         AC_MSG_ERROR([EGL platform drm needs gbm])
1450                 ;;
1451
1452         android|fbdev|gdi|null)
1453                 ;;
1454
1455         *)
1456                 AC_MSG_ERROR([EGL platform '$plat' does not exist])
1457                 ;;
1458         esac
1459
1460         case "$plat$have_libudev" in
1461                 waylandno|drmno)
1462                     AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;;
1463         esac
1464 done
1465
1466 # libEGL wants to default to the first platform specified in
1467 # ./configure.  parse that here.
1468 if test "x$egl_platforms" != "x"; then
1469     FIRST_PLATFORM_CAPS=`echo $egl_platforms | sed 's| .*||' | tr 'a-z' 'A-Z'`
1470     EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
1471 else
1472     EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
1473 fi
1474
1475 EGL_PLATFORMS="$egl_platforms"
1476
1477 if echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1; then
1478     NEED_WINSYS_XLIB=yes
1479 fi
1480 AM_CONDITIONAL(HAVE_EGL_PLATFORM_X11, echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1)
1481 AM_CONDITIONAL(HAVE_EGL_PLATFORM_WAYLAND, echo "$egl_platforms" | grep 'wayland' >/dev/null 2>&1)
1482 AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep 'drm' >/dev/null 2>&1)
1483 AM_CONDITIONAL(HAVE_EGL_PLATFORM_FBDEV, echo "$egl_platforms" | grep 'fbdev' >/dev/null 2>&1)
1484 AM_CONDITIONAL(HAVE_EGL_PLATFORM_NULL, echo "$egl_platforms" | grep 'null' >/dev/null 2>&1)
1485
1486 AM_CONDITIONAL(HAVE_EGL_DRIVER_DRI2, test "x$HAVE_EGL_DRIVER_DRI2" != "x")
1487 AM_CONDITIONAL(HAVE_EGL_DRIVER_GLX, test "x$HAVE_EGL_DRIVER_GLX" != "x")
1488
1489 AC_SUBST([EGL_NATIVE_PLATFORM])
1490 AC_SUBST([EGL_PLATFORMS])
1491 AC_SUBST([EGL_CFLAGS])
1492
1493 AC_ARG_WITH([egl-driver-dir],
1494     [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1495                     [directory for EGL drivers [[default=${libdir}/egl]]])],
1496     [EGL_DRIVER_INSTALL_DIR="$withval"],
1497     [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1498 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1499
1500 AC_ARG_WITH([xorg-driver-dir],
1501     [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1502                     [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1503     [XORG_DRIVER_INSTALL_DIR="$withval"],
1504     [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1505 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1506
1507 AC_ARG_WITH([max-width],
1508     [AS_HELP_STRING([--with-max-width=N],
1509                     [Maximum framebuffer width (4096)])],
1510     [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1511      AS_IF([test "${withval}" -gt "4096"],
1512            [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1513 )
1514 AC_ARG_WITH([max-height],
1515     [AS_HELP_STRING([--with-max-height=N],
1516                     [Maximum framebuffer height (4096)])],
1517     [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1518      AS_IF([test "${withval}" -gt "4096"],
1519            [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1520 )
1521
1522 dnl
1523 dnl Gallium LLVM
1524 dnl
1525 AC_ARG_ENABLE([gallium-llvm],
1526     [AS_HELP_STRING([--enable-gallium-llvm],
1527         [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1528     [enable_gallium_llvm="$enableval"],
1529     [enable_gallium_llvm=auto])
1530
1531 AC_ARG_WITH([llvm-shared-libs],
1532     [AS_HELP_STRING([--with-llvm-shared-libs],
1533         [link with LLVM shared libraries @<:@default=disabled@:>@])],
1534     [],
1535     [with_llvm_shared_libs=no])
1536 AS_IF([test x$enable_opencl = xyes],
1537     [
1538         AC_MSG_WARN([OpenCL required, forcing LLVM shared libraries])
1539         with_llvm_shared_libs=yes
1540     ])
1541
1542 AC_ARG_WITH([llvm-prefix],
1543     [AS_HELP_STRING([--with-llvm-prefix],
1544         [Prefix for LLVM installations in non-standard locations])],
1545     [llvm_prefix="$withval"],
1546     [llvm_prefix=""])
1547
1548
1549 # Call this inside ` ` to get the return value.
1550 # $1 is the llvm-config command with arguments.
1551 strip_unwanted_llvm_flags() {
1552     # Use \> (marks the end of the word)
1553     echo `$1` | sed \
1554         -e 's/-DNDEBUG\>//g' \
1555         -e 's/-pedantic\>//g' \
1556         -e 's/-Wcovered-switch-default\>//g' \
1557         -e 's/-O.\>//g' \
1558         -e 's/-g\>//g' \
1559         -e 's/-Wall\>//g' \
1560         -e 's/-fomit-frame-pointer\>//g'
1561 }
1562
1563
1564 if test "x$with_gallium_drivers" = x; then
1565     enable_gallium_llvm=no
1566 fi
1567 if test "x$enable_gallium_llvm" = xauto; then
1568     case "$host_cpu" in
1569     i*86|x86_64) enable_gallium_llvm=yes;;
1570     esac
1571 fi
1572 if test "x$enable_gallium_llvm" = xyes; then
1573     if test "x$llvm_prefix" != x; then
1574         AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no], ["$llvm_prefix/bin"])
1575     else
1576         AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1577     fi
1578
1579     if test "x$LLVM_CONFIG" != xno; then
1580         LLVM_VERSION=`$LLVM_CONFIG --version | sed 's/svn.*//g'`
1581         LLVM_VERSION_INT=`echo $LLVM_VERSION | sed -e 's/\([[0-9]]\)\.\([[0-9]]\)/\10\2/g'`
1582         LLVM_COMPONENTS="engine bitwriter"
1583         if $LLVM_CONFIG --components | grep -q '\<mcjit\>'; then
1584             LLVM_COMPONENTS="${LLVM_COMPONENTS} mcjit"
1585         fi
1586
1587         if test "x$enable_opencl" = xyes; then
1588             LLVM_COMPONENTS="${LLVM_COMPONENTS} ipo linker instrumentation"
1589             # LLVM 3.3 >= 177971 requires IRReader
1590             if $LLVM_CONFIG --components | grep -q '\<irreader\>'; then
1591                 LLVM_COMPONENTS="${LLVM_COMPONENTS} irreader"
1592             fi
1593         fi
1594         LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1595         LLVM_BINDIR=`$LLVM_CONFIG --bindir`
1596         LLVM_CPPFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cppflags"`
1597         LLVM_CFLAGS=$LLVM_CPPFLAGS   # CPPFLAGS seem to be sufficient
1598         LLVM_CXXFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cxxflags"`
1599         LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
1600         LLVM_LIBDIR=`$LLVM_CONFIG --libdir`
1601         DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT"
1602         MESA_LLVM=1
1603
1604         dnl Check for Clang interanl headers
1605         if test "x$enable_opencl" = xyes; then
1606             if test "x$CLANG_LIBDIR" = x; then
1607                 CLANG_LIBDIR=${LLVM_LIBDIR}
1608             fi
1609             CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION}
1610             AC_CHECK_FILE("$CLANG_RESOURCE_DIR/include/stddef.h",,
1611                 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.]))
1612         fi
1613     else
1614         MESA_LLVM=0
1615         LLVM_VERSION_INT=0
1616     fi
1617 else
1618     MESA_LLVM=0
1619     LLVM_VERSION_INT=0
1620 fi
1621
1622 dnl Directory for XVMC libs
1623 AC_ARG_WITH([xvmc-libdir],
1624     [AS_HELP_STRING([--with-xvmc-libdir=DIR],
1625         [directory for the XVMC libraries @<:@default=${libdir}@:>@])],
1626     [XVMC_LIB_INSTALL_DIR="$withval"],
1627     [XVMC_LIB_INSTALL_DIR='${libdir}'])
1628 AC_SUBST([XVMC_LIB_INSTALL_DIR])
1629
1630 dnl
1631 dnl Gallium Tests
1632 dnl
1633 if test "x$enable_gallium_tests" = xyes; then
1634     enable_gallium_loader=yes
1635 fi
1636 AM_CONDITIONAL(HAVE_GALLIUM_TESTS, test "x$enable_gallium_tests" = xyes)
1637
1638 if test "x$enable_gallium_loader" = xyes; then
1639     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS pipe-loader"
1640 fi
1641 AM_CONDITIONAL(NEED_GALLIUM_LOADER, test "x$enable_gallium_loader" = xyes)
1642
1643 dnl Directory for VDPAU libs
1644 AC_ARG_WITH([vdpau-libdir],
1645     [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1646         [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1647     [VDPAU_LIB_INSTALL_DIR="$withval"],
1648     [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1649 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
1650
1651 dnl Directory for OpenCL libs
1652 AC_ARG_WITH([opencl-libdir],
1653     [AS_HELP_STRING([--with-opencl-libdir=DIR],
1654         [directory for auxiliary libraries used by the OpenCL implementation @<:@default=${libdir}/opencl@:>@])],
1655     [OPENCL_LIB_INSTALL_DIR="$withval"],
1656     [OPENCL_LIB_INSTALL_DIR='${libdir}/opencl'])
1657 AC_SUBST([OPENCL_LIB_INSTALL_DIR])
1658
1659 dnl
1660 dnl Gallium helper functions
1661 dnl
1662 gallium_check_st() {
1663     if test "x$NEED_NONNULL_WINSYS" = xyes; then
1664          if test "x$have_libdrm" != xyes; then
1665             AC_MSG_ERROR([DRI or Xorg DDX requires libdrm >= $LIBDRM_REQUIRED])
1666          fi
1667          GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1668     fi
1669     if test "x$enable_dri" = xyes && test "x$2" != x; then
1670          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1671          HAVE_COMMON_DRI=yes
1672     fi
1673     if test "x$enable_xorg" = xyes && test "x$3" != x; then
1674          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1675     fi
1676     if test "x$enable_xa" = xyes && test "x$4" != x; then
1677          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
1678     fi
1679     if test "x$enable_xvmc" = xyes && test "x$5" != x; then
1680          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5"
1681     fi
1682     if test "x$enable_vdpau" = xyes && test "x$6" != x; then
1683          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6"
1684     fi
1685 }
1686
1687 gallium_require_llvm() {
1688     if test "x$MESA_LLVM" = x0; then
1689         case "$host_cpu" in
1690         i*86|x86_64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1691         esac
1692     fi
1693 }
1694
1695 gallium_require_drm_loader() {
1696     if test "x$enable_gallium_loader" = xyes; then
1697         PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1698                           AC_MSG_ERROR([Gallium drm loader requires libudev]))
1699         if test "x$have_libdrm" != xyes; then
1700             AC_MSG_ERROR([Gallium drm loader requires libdrm >= $LIBDRM_REQUIRED])
1701         fi
1702         enable_gallium_drm_loader=yes
1703     fi
1704 }
1705
1706 radeon_llvm_check() {
1707     LLVM_REQUIRED_VERSION_MAJOR="3"
1708     LLVM_REQUIRED_VERSION_MINOR="3"
1709     if test "$LLVM_VERSION_INT" -lt "${LLVM_REQUIRED_VERSION_MAJOR}0${LLVM_REQUIRED_VERSION_MINOR}"; then
1710         AC_MSG_ERROR([LLVM $LLVM_REQUIRED_VERSION_MAJOR.$LLVM_REQUIRED_VERSION_MINOR or newer is required for r600g and radeonsi.])
1711     fi
1712     if test true && $LLVM_CONFIG --targets-built | grep -qv '\<R600\>' ; then
1713         AC_MSG_ERROR([LLVM R600 Target not enabled.  You can enable it when building the LLVM
1714                       sources with the --enable-experimental-targets=R600
1715                       configure flag])
1716     fi
1717     LLVM_COMPONENTS="${LLVM_COMPONENTS} r600 bitreader ipo"
1718     NEED_RADEON_LLVM=yes
1719     AC_CHECK_LIB([elf], [elf_memory], [ELF_LIB=-lelf],
1720                                  [AC_MSG_ERROR([radeonsi and r600g require libelf when using LLVM])])
1721 }
1722
1723 dnl Gallium drivers
1724 if test "x$enable_dri" = xyes -o "x$enable_xorg" = xyes -o \
1725         "x$enable_xa" = xyes -o "x$enable_xvmc" = xyes -o \
1726         "x$enable_vdpau" = xyes; then
1727     NEED_NONNULL_WINSYS=yes
1728 fi
1729 AM_CONDITIONAL(NEED_NONNULL_WINSYS, test "x$NEED_NONNULL_WINSYS" = xyes)
1730
1731 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
1732 if test "x$with_gallium_drivers" != x; then
1733     gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1734     for driver in $gallium_drivers; do
1735         case "x$driver" in
1736         xsvga)
1737             HAVE_GALLIUM_SVGA=yes
1738             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
1739             gallium_check_st "svga/drm" "dri-vmwgfx" "" "xa-vmwgfx"
1740             ;;
1741         xi915)
1742             HAVE_GALLIUM_I915=yes
1743             PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1744             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe"
1745             if test "x$MESA_LLVM" = x1; then
1746                 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1747             fi
1748             GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1749             gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1750             ;;
1751         xilo)
1752             HAVE_GALLIUM_ILO=yes
1753             PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1754             gallium_require_drm_loader
1755             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS ilo"
1756             gallium_check_st "intel/drm" "dri-ilo"
1757             ;;
1758         xr300)
1759             HAVE_GALLIUM_R300=yes
1760             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1761             gallium_require_llvm "Gallium R300"
1762             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1763             gallium_check_st "radeon/drm" "dri-r300" "" "" "xvmc-r300" "vdpau-r300"
1764             ;;
1765         xr600)
1766             HAVE_GALLIUM_R600=yes
1767             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1768             gallium_require_drm_loader
1769             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1770             if test "x$enable_r600_llvm" = xyes -o "x$enable_opencl" = xyes; then
1771                 radeon_llvm_check
1772                 R600_NEED_RADEON_GALLIUM=yes;
1773                 LLVM_COMPONENTS="${LLVM_COMPONENTS} bitreader asmparser"
1774             fi
1775             if test "x$enable_r600_llvm" = xyes; then
1776                 USE_R600_LLVM_COMPILER=yes;
1777             fi
1778             if test "x$enable_opencl" = xyes; then
1779                 LLVM_COMPONENTS="${LLVM_COMPONENTS} bitreader asmparser"
1780             fi
1781             gallium_check_st "radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600"
1782             ;;
1783         xradeonsi)
1784             HAVE_GALLIUM_RADEONSI=yes
1785             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1786             gallium_require_drm_loader
1787             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS radeonsi"
1788             radeon_llvm_check
1789             gallium_check_st "radeon/drm" "dri-radeonsi" "xorg-radeonsi" "" "" "vdpau-radeonsi" ""
1790             ;;
1791         xnouveau)
1792             HAVE_GALLIUM_NOUVEAU=yes
1793             PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1794             gallium_require_drm_loader
1795             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nv30 nv50 nvc0"
1796             gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau" "" "xvmc-nouveau" "vdpau-nouveau"
1797             ;;
1798         xfreedreno)
1799             HAVE_GALLIUM_FREEDRENO=yes
1800             PKG_CHECK_MODULES([FREEDRENO], [libdrm_freedreno >= $LIBDRM_FREEDRENO_REQUIRED])
1801             gallium_require_drm_loader
1802             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS freedreno"
1803             gallium_check_st "freedreno/drm" "dri-freedreno" "" "" "" ""
1804             ;;
1805         xswrast)
1806             HAVE_GALLIUM_SOFTPIPE=yes
1807             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe"
1808             if test "x$MESA_LLVM" = x1; then
1809                 HAVE_GALLIUM_LLVMPIPE=yes
1810                 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1811             fi
1812
1813             if test "x$enable_dri" = xyes; then
1814                 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1815                 HAVE_COMMON_DRI=yes
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_ILO, test "x$HAVE_GALLIUM_ILO" = xyes)
1881 AM_CONDITIONAL(HAVE_GALLIUM_R300, test "x$HAVE_GALLIUM_R300" = xyes)
1882 AM_CONDITIONAL(HAVE_GALLIUM_R600, test "x$HAVE_GALLIUM_R600" = xyes)
1883 AM_CONDITIONAL(HAVE_GALLIUM_RADEONSI, test "x$HAVE_GALLIUM_RADEONSI" = xyes)
1884 AM_CONDITIONAL(HAVE_GALLIUM_NOUVEAU, test "x$HAVE_GALLIUM_NOUVEAU" = xyes)
1885 AM_CONDITIONAL(HAVE_GALLIUM_FREEDRENO, test "x$HAVE_GALLIUM_FREEDRENO" = xyes)
1886 AM_CONDITIONAL(HAVE_GALLIUM_SOFTPIPE, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes)
1887 AM_CONDITIONAL(HAVE_GALLIUM_LLVMPIPE, test "x$HAVE_GALLIUM_LLVMPIPE" = xyes)
1888
1889 AM_CONDITIONAL(NEED_GALLIUM_SOFTPIPE_DRIVER, test "x$HAVE_GALLIUM_SVGA" = xyes -o \
1890                                                   "x$HAVE_GALLIUM_I915" = xyes -o \
1891                                                   "x$HAVE_GALLIUM_SOFTPIPE" = xyes)
1892 AM_CONDITIONAL(NEED_GALLIUM_LLVMPIPE_DRIVER, test "x$HAVE_GALLIUM_I915" = xyes -o \
1893                                                   "x$HAVE_GALLIUM_SOFTPIPE" = xyes -a \
1894                                                   "x$MESA_LLVM" = x1)
1895
1896 if test "x$enable_gallium_loader" = xyes; then
1897     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
1898
1899     if test "x$enable_gallium_drm_loader" = xyes; then
1900         GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRM"
1901         PKG_CHECK_MODULES([GALLIUM_PIPE_LOADER_XCB], [xcb xcb-dri2],
1902                           pipe_loader_have_xcb=yes, pipe_loader_have_xcb=no)
1903         if test "x$pipe_loader_have_xcb" = xyes; then
1904             GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_XCB"
1905             GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS $GALLIUM_PIPE_LOADER_XCB_LIBS $LIBDRM_LIBS"
1906         fi
1907     fi
1908
1909     AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
1910     AC_SUBST([GALLIUM_PIPE_LOADER_LIBS])
1911 fi
1912
1913 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
1914 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
1915 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
1916 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
1917 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
1918 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
1919 AM_CONDITIONAL(HAVE_COMMON_DRI, test x$HAVE_COMMON_DRI = xyes)
1920
1921 AM_CONDITIONAL(NEED_RADEON_DRM_WINSYS, test "x$NEED_NONNULL_WINSYS" = xyes -a \
1922                                             "x$HAVE_GALLIUM_R300" = xyes -o \
1923                                             "x$HAVE_GALLIUM_R600" = xyes -o \
1924                                             "x$HAVE_GALLIUM_RADEONSI" = xyes)
1925 AM_CONDITIONAL(NEED_WINSYS_WRAPPER, test "x$HAVE_GALLIUM_I915" = xyes -o \
1926                                          "x$HAVE_GALLIUM_SVGA" = xyes)
1927 AM_CONDITIONAL(NEED_WINSYS_XLIB, test "x$NEED_WINSYS_XLIB" = xyes)
1928 AM_CONDITIONAL(NEED_RADEON_LLVM, test x$NEED_RADEON_LLVM = xyes)
1929 AM_CONDITIONAL(R600_NEED_RADEON_GALLIUM, test x$R600_NEED_RADEON_GALLIUM = xyes)
1930 AM_CONDITIONAL(USE_R600_LLVM_COMPILER, test x$USE_R600_LLVM_COMPILER = xyes)
1931 AM_CONDITIONAL(HAVE_LOADER_GALLIUM, test x$enable_gallium_loader = xyes)
1932 AM_CONDITIONAL(HAVE_DRM_LOADER_GALLIUM, test x$enable_gallium_drm_loader = xyes)
1933 AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
1934 AM_CONDITIONAL(HAVE_MESA_LLVM, test x$MESA_LLVM = x1)
1935 AM_CONDITIONAL(LLVM_NEEDS_FNORTTI, test $LLVM_VERSION_INT -ge 302)
1936
1937 AC_SUBST([ELF_LIB])
1938
1939 AM_CONDITIONAL(NEED_LIBPROGRAM, test "x$with_gallium_drivers" != x -o \
1940                                      "x$enable_xlib_glx" = xyes -o \
1941                                      "x$enable_osmesa" = xyes)
1942 AM_CONDITIONAL(HAVE_X11_DRIVER, test "x$enable_xlib_glx" = xyes)
1943 AM_CONDITIONAL(HAVE_OSMESA, test "x$enable_osmesa" = xyes)
1944
1945 AM_CONDITIONAL(HAVE_X86_ASM, echo "$DEFINES" | grep 'X86_ASM' >/dev/null 2>&1)
1946 AM_CONDITIONAL(HAVE_X86_64_ASM, echo "$DEFINES" | grep 'X86_64_ASM' >/dev/null 2>&1)
1947 AM_CONDITIONAL(HAVE_SPARC_ASM, echo "$DEFINES" | grep 'SPARC_ASM' >/dev/null 2>&1)
1948
1949 AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes)
1950
1951 AC_SUBST([VDPAU_MAJOR], 1)
1952 AC_SUBST([VDPAU_MINOR], 0)
1953
1954 AC_SUBST([XVMC_MAJOR], 1)
1955 AC_SUBST([XVMC_MINOR], 0)
1956
1957 AC_SUBST([XA_MAJOR], 1)
1958 AC_SUBST([XA_MINOR], 0)
1959 AC_SUBST([XA_TINY], 0)
1960 AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_TINY")
1961
1962 dnl Restore LDFLAGS and CPPFLAGS
1963 LDFLAGS="$_SAVE_LDFLAGS"
1964 CPPFLAGS="$_SAVE_CPPFLAGS"
1965
1966 dnl Add user CFLAGS and CXXFLAGS
1967 CFLAGS="$CFLAGS $USER_CFLAGS"
1968 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
1969
1970 dnl Substitute the config
1971 AC_CONFIG_FILES([Makefile
1972                 src/Makefile
1973                 src/egl/Makefile
1974                 src/egl/drivers/Makefile
1975                 src/egl/drivers/dri2/Makefile
1976                 src/egl/drivers/glx/Makefile
1977                 src/egl/main/Makefile
1978                 src/egl/main/egl.pc
1979                 src/egl/wayland/Makefile
1980                 src/egl/wayland/wayland-drm/Makefile
1981                 src/egl/wayland/wayland-egl/Makefile
1982                 src/egl/wayland/wayland-egl/wayland-egl.pc
1983                 src/gallium/auxiliary/Makefile
1984                 src/gallium/auxiliary/pipe-loader/Makefile
1985                 src/gallium/drivers/Makefile
1986                 src/gallium/drivers/freedreno/Makefile
1987                 src/gallium/drivers/i915/Makefile
1988                 src/gallium/drivers/ilo/Makefile
1989                 src/gallium/drivers/llvmpipe/Makefile
1990                 src/gallium/drivers/nouveau/Makefile
1991                 src/gallium/drivers/nv30/Makefile
1992                 src/gallium/drivers/nv50/Makefile
1993                 src/gallium/drivers/nvc0/Makefile
1994                 src/gallium/drivers/r300/Makefile
1995                 src/gallium/drivers/r600/Makefile
1996                 src/gallium/drivers/radeon/Makefile
1997                 src/gallium/drivers/radeonsi/Makefile
1998                 src/gallium/drivers/rbug/Makefile
1999                 src/gallium/drivers/softpipe/Makefile
2000                 src/gallium/drivers/svga/Makefile
2001                 src/gallium/drivers/trace/Makefile
2002                 src/gallium/state_trackers/Makefile
2003                 src/gallium/state_trackers/clover/Makefile
2004                 src/gallium/state_trackers/dri/Makefile
2005                 src/gallium/state_trackers/dri/drm/Makefile
2006                 src/gallium/state_trackers/dri/sw/Makefile
2007                 src/gallium/state_trackers/egl/Makefile
2008                 src/gallium/state_trackers/gbm/Makefile
2009                 src/gallium/state_trackers/glx/Makefile
2010                 src/gallium/state_trackers/osmesa/Makefile
2011                 src/gallium/state_trackers/vdpau/Makefile
2012                 src/gallium/state_trackers/vega/Makefile
2013                 src/gallium/state_trackers/xa/Makefile
2014                 src/gallium/state_trackers/xorg/Makefile
2015                 src/gallium/state_trackers/xvmc/Makefile
2016                 src/gallium/targets/Makefile
2017                 src/gallium/targets/dri-freedreno/Makefile
2018                 src/gallium/targets/dri-i915/Makefile
2019                 src/gallium/targets/dri-ilo/Makefile
2020                 src/gallium/targets/dri-nouveau/Makefile
2021                 src/gallium/targets/dri-r300/Makefile
2022                 src/gallium/targets/dri-r600/Makefile
2023                 src/gallium/targets/dri-radeonsi/Makefile
2024                 src/gallium/targets/dri-swrast/Makefile
2025                 src/gallium/targets/dri-vmwgfx/Makefile
2026                 src/gallium/targets/egl-static/Makefile
2027                 src/gallium/targets/gbm/Makefile
2028                 src/gallium/targets/opencl/Makefile
2029                 src/gallium/targets/osmesa/Makefile
2030                 src/gallium/targets/pipe-loader/Makefile
2031                 src/gallium/targets/libgl-xlib/Makefile
2032                 src/gallium/targets/vdpau-nouveau/Makefile
2033                 src/gallium/targets/vdpau-r300/Makefile
2034                 src/gallium/targets/vdpau-r600/Makefile
2035                 src/gallium/targets/vdpau-radeonsi/Makefile
2036                 src/gallium/targets/vdpau-softpipe/Makefile
2037                 src/gallium/targets/xa-vmwgfx/Makefile
2038                 src/gallium/targets/xa-vmwgfx/xatracker.pc
2039                 src/gallium/targets/xorg-i915/Makefile
2040                 src/gallium/targets/xorg-nouveau/Makefile
2041                 src/gallium/targets/xorg-r600/Makefile
2042                 src/gallium/targets/xorg-radeonsi/Makefile
2043                 src/gallium/targets/xvmc-nouveau/Makefile
2044                 src/gallium/targets/xvmc-r300/Makefile
2045                 src/gallium/targets/xvmc-r600/Makefile
2046                 src/gallium/targets/xvmc-softpipe/Makefile
2047                 src/gallium/tests/trivial/Makefile
2048                 src/gallium/tests/unit/Makefile
2049                 src/gallium/winsys/Makefile
2050                 src/gallium/winsys/freedreno/drm/Makefile
2051                 src/gallium/winsys/i915/drm/Makefile
2052                 src/gallium/winsys/i915/sw/Makefile
2053                 src/gallium/winsys/intel/drm/Makefile
2054                 src/gallium/winsys/nouveau/drm/Makefile
2055                 src/gallium/winsys/radeon/drm/Makefile
2056                 src/gallium/winsys/svga/drm/Makefile
2057                 src/gallium/winsys/sw/dri/Makefile
2058                 src/gallium/winsys/sw/fbdev/Makefile
2059                 src/gallium/winsys/sw/null/Makefile
2060                 src/gallium/winsys/sw/wayland/Makefile
2061                 src/gallium/winsys/sw/wrapper/Makefile
2062                 src/gallium/winsys/sw/xlib/Makefile
2063                 src/gbm/Makefile
2064                 src/gbm/main/gbm.pc
2065                 src/glsl/Makefile
2066                 src/glsl/builtin_compiler/Makefile
2067                 src/glx/Makefile
2068                 src/glx/tests/Makefile
2069                 src/gtest/Makefile
2070                 src/mapi/Makefile
2071                 src/mapi/es1api/Makefile
2072                 src/mapi/es1api/glesv1_cm.pc
2073                 src/mapi/es2api/Makefile
2074                 src/mapi/es2api/glesv2.pc
2075                 src/mapi/glapi/Makefile
2076                 src/mapi/glapi/gen/Makefile
2077                 src/mapi/glapi/tests/Makefile
2078                 src/mapi/shared-glapi/Makefile
2079                 src/mapi/shared-glapi/tests/Makefile
2080                 src/mapi/vgapi/Makefile
2081                 src/mapi/vgapi/vg.pc
2082                 src/mesa/Makefile
2083                 src/mesa/gl.pc
2084                 src/mesa/drivers/dri/dri.pc
2085                 src/mesa/drivers/dri/common/Makefile
2086                 src/mesa/drivers/dri/common/xmlpool/Makefile
2087                 src/mesa/drivers/dri/i915/Makefile
2088                 src/mesa/drivers/dri/i965/Makefile
2089                 src/mesa/drivers/dri/Makefile
2090                 src/mesa/drivers/dri/nouveau/Makefile
2091                 src/mesa/drivers/dri/r200/Makefile
2092                 src/mesa/drivers/dri/radeon/Makefile
2093                 src/mesa/drivers/dri/swrast/Makefile
2094                 src/mesa/drivers/osmesa/Makefile
2095                 src/mesa/drivers/osmesa/osmesa.pc
2096                 src/mesa/drivers/x11/Makefile
2097                 src/mesa/libdricore/Makefile
2098                 src/mesa/main/tests/Makefile
2099                 src/mesa/main/tests/hash_table/Makefile
2100                 src/mesa/program/Makefile
2101                 src/mesa/x86-64/Makefile
2102                 src/mesa/x86/Makefile])
2103
2104 dnl Sort the dirs alphabetically
2105 GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2106 GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2107 GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2108 GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2109
2110 AC_OUTPUT
2111
2112 dnl
2113 dnl Output some configuration info for the user
2114 dnl
2115 echo ""
2116 echo "        prefix:          $prefix"
2117 echo "        exec_prefix:     $exec_prefix"
2118 echo "        libdir:          $libdir"
2119 echo "        includedir:      $includedir"
2120
2121 dnl API info
2122 echo ""
2123 echo "        OpenGL:          $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
2124 echo "        OpenVG:          $enable_openvg"
2125
2126 dnl Driver info
2127 echo ""
2128 if test "x$enable_osmesa" != xno; then
2129         echo "        OSMesa:          lib$OSMESA_LIB"
2130 else
2131         echo "        OSMesa:          no"
2132 fi
2133
2134 if test "x$enable_dri" != xno; then
2135         # cleanup the drivers var
2136         dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/  */ /;s/ *$//'`
2137         if test "x$DRI_DIRS" = x; then
2138             echo "        DRI drivers:     no"
2139         else
2140             echo "        DRI drivers:     $dri_dirs"
2141         fi
2142         echo "        DRI driver dir:  $DRI_DRIVER_INSTALL_DIR"
2143 fi
2144
2145 case "x$enable_glx$enable_xlib_glx" in
2146 xyesyes)
2147     echo "        GLX:             Xlib-based"
2148     ;;
2149 xyesno)
2150     echo "        GLX:             DRI-based"
2151     ;;
2152 *)
2153     echo "        GLX:             $enable_glx"
2154     ;;
2155 esac
2156
2157 dnl EGL
2158 echo ""
2159 echo "        EGL:             $enable_egl"
2160 if test "$enable_egl" = yes; then
2161     echo "        EGL platforms:   $EGL_PLATFORMS"
2162
2163     egl_drivers=""
2164     if test "x$HAVE_EGL_DRIVER_GLX" != "x"; then
2165         egl_drivers="$egl_drivers builtin:egl_glx"
2166     fi
2167     if test "x$HAVE_EGL_DRIVER_DRI2" != "x"; then
2168         egl_drivers="$egl_drivers builtin:egl_dri2"
2169     fi
2170
2171     if test "x$enable_gallium_egl" = xyes; then
2172         echo "        EGL drivers:    ${egl_drivers} egl_gallium"
2173         echo "        EGL Gallium STs:$EGL_CLIENT_APIS"
2174     else
2175         echo "        EGL drivers:    $egl_drivers"
2176     fi
2177 fi
2178
2179 echo ""
2180 if test "x$MESA_LLVM" = x1; then
2181     echo "        llvm:            yes"
2182     echo "        llvm-config:     $LLVM_CONFIG"
2183     echo "        llvm-version:    $LLVM_VERSION"
2184 else
2185     echo "        llvm:            no"
2186 fi
2187
2188 echo ""
2189 if test -n "$with_gallium_drivers"; then
2190     echo "        Gallium:         yes"
2191     echo "        Target dirs:     $GALLIUM_TARGET_DIRS"
2192     echo "        Winsys dirs:     $GALLIUM_WINSYS_DIRS"
2193     echo "        Driver dirs:     $GALLIUM_DRIVERS_DIRS"
2194     echo "        Trackers dirs:   $GALLIUM_STATE_TRACKERS_DIRS"
2195 else
2196     echo "        Gallium:         no"
2197 fi
2198
2199
2200 dnl Libraries
2201 echo ""
2202 echo "        Shared libs:     $enable_shared"
2203 echo "        Static libs:     $enable_static"
2204 echo "        Shared-glapi:    $enable_shared_glapi"
2205
2206 dnl Compiler options
2207 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2208 cflags=`echo $CFLAGS | \
2209     $SED 's/^ *//;s/  */ /;s/ *$//'`
2210 cxxflags=`echo $CXXFLAGS | \
2211     $SED 's/^ *//;s/  */ /;s/ *$//'`
2212 defines=`echo $DEFINES | $SED 's/^ *//;s/  */ /;s/ *$//'`
2213 echo ""
2214 echo "        CFLAGS:          $cflags"
2215 echo "        CXXFLAGS:        $cxxflags"
2216 echo "        Macros:          $defines"
2217 echo ""
2218 if test "x$MESA_LLVM" = x1; then
2219     echo "        LLVM_CFLAGS:     $LLVM_CFLAGS"
2220     echo "        LLVM_CXXFLAGS:   $LLVM_CXXFLAGS"
2221     echo "        LLVM_CPPFLAGS:   $LLVM_CPPFLAGS"
2222     echo ""
2223 fi
2224 echo "        PYTHON2:         $PYTHON2"
2225
2226 echo ""
2227 echo "        Run '${MAKE-make}' to build Mesa"
2228 echo ""