OSDN Git Service

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