OSDN Git Service

r600g: there are 16 const buffer size regs for each shader stage
[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.1.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_HOST
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 LT_PREREQ([2.2])
28 LT_INIT([disable-static])
29
30 dnl Set internal versions
31 OSMESA_VERSION=8
32 AC_SUBST([OSMESA_VERSION])
33
34 dnl Versions for external dependencies
35 LIBDRM_REQUIRED=2.4.24
36 LIBDRM_RADEON_REQUIRED=2.4.39
37 LIBDRM_INTEL_REQUIRED=2.4.38
38 LIBDRM_NVVIEUX_REQUIRED=2.4.33
39 LIBDRM_NOUVEAU_REQUIRED=2.4.33
40 DRI2PROTO_REQUIRED=2.6
41 GLPROTO_REQUIRED=1.4.14
42 LIBDRM_XORG_REQUIRED=2.4.24
43 LIBKMS_XORG_REQUIRED=1.0.0
44
45 dnl Check for progs
46 AC_PROG_CPP
47 AC_PROG_CC
48 AC_PROG_CXX
49 AM_PROG_CC_C_O
50 AM_PROG_AS
51 AC_CHECK_PROGS([MAKE], [gmake make])
52 AC_CHECK_PROGS([PYTHON2], [python2 python])
53 AC_PROG_SED
54 AC_PROG_MKDIR_P
55 AC_PATH_PROG([MKDEP], [makedepend])
56
57 if test "x$MKDEP" = "x"; then
58     AC_MSG_ERROR([makedepend is required to build Mesa])
59 fi
60
61 AC_PROG_YACC
62 AC_PATH_PROG([YACC_INST], $YACC)
63 if test ! -f "$srcdir/src/glsl/glcpp/glcpp-parse.c"; then
64     if test -z "$YACC_INST"; then
65         AC_MSG_ERROR([yacc not found - unable to compile glcpp-parse.y])
66     fi
67 fi
68 AC_PROG_LEX
69
70 AC_PATH_PROG([PERL], [perl])
71
72 AC_CHECK_PROG(INDENT, indent, indent, cat)
73 if test "x$INDENT" != "xcat"; then
74     AC_SUBST(INDENT_FLAGS, '-i4 -nut -br -brs -npcs -ce -T GLubyte -T GLbyte -T Bool')
75 fi
76
77 dnl Our fallback install-sh is a symlink to minstall. Use the existing
78 dnl configuration in that case.
79 AC_PROG_INSTALL
80 test "x$INSTALL" = "x$ac_install_sh" && INSTALL='$(MINSTALL)'
81
82 dnl We need a POSIX shell for parts of the build. Assume we have one
83 dnl in most cases.
84 case "$host_os" in
85 solaris*)
86     # Solaris /bin/sh is too old/non-POSIX compliant
87     AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
88     SHELL="$POSIX_SHELL"
89     ;;
90 esac
91
92 dnl clang is mostly GCC-compatible, but its version is much lower,
93 dnl so we have to check for it.
94 AC_MSG_CHECKING([if compiling with clang])
95
96 AC_COMPILE_IFELSE(
97 [AC_LANG_PROGRAM([], [[
98 #ifndef __clang__
99        not clang
100 #endif
101 ]])],
102 [acv_mesa_CLANG=yes], [acv_mesa_CLANG=no])
103
104 AC_MSG_RESULT([$acv_mesa_CLANG])
105
106 dnl If we're using GCC, make sure that it is at least version 3.3.0.  Older
107 dnl versions are explictly not supported.
108 if test "x$GCC" = xyes -a "x$acv_mesa_CLANG" = xno; then
109     AC_MSG_CHECKING([whether gcc version is sufficient])
110     major=0
111     minor=0
112
113     GCC_VERSION=`$CC -dumpversion`
114     if test $? -eq 0; then
115         GCC_VERSION_MAJOR=`echo $GCC_VERSION | cut -d. -f1`
116         GCC_VERSION_MINOR=`echo $GCC_VERSION | cut -d. -f2`
117     fi
118
119     if test $GCC_VERSION_MAJOR -lt 3 -o $GCC_VERSION_MAJOR -eq 3 -a $GCC_VERSION_MINOR -lt 3 ; then
120         AC_MSG_RESULT([no])
121         AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.])
122     else
123         AC_MSG_RESULT([yes])
124     fi
125 fi
126
127
128 MKDEP_OPTIONS=-fdepend
129 dnl Ask gcc where it's keeping its secret headers
130 if test "x$GCC" = xyes; then
131     for dir in include include-fixed; do
132         GCC_INCLUDES=`$CC -print-file-name=$dir`
133         if test "x$GCC_INCLUDES" != x && \
134            test "$GCC_INCLUDES" != "$dir" && \
135            test -d "$GCC_INCLUDES"; then
136             MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
137         fi
138     done
139 fi
140 AC_SUBST([MKDEP_OPTIONS])
141
142 dnl Make sure the pkg-config macros are defined
143 m4_ifndef([PKG_PROG_PKG_CONFIG],
144     [m4_fatal([Could not locate the pkg-config autoconf macros.
145   These are usually located in /usr/share/aclocal/pkg.m4. If your macros
146   are in a different location, try setting the environment variable
147   ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
148 PKG_PROG_PKG_CONFIG()
149
150 dnl LIB_DIR - library basename
151 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
152 AC_SUBST([LIB_DIR])
153
154 dnl Cache LDFLAGS and CPPFLAGS so we can add to them and restore later
155 _SAVE_LDFLAGS="$LDFLAGS"
156 _SAVE_CPPFLAGS="$CPPFLAGS"
157
158 dnl Compiler macros
159 DEFINES=""
160 AC_SUBST([DEFINES])
161 case "$host_os" in
162 linux*|*-gnu*|gnu*)
163     DEFINES="$DEFINES -D_GNU_SOURCE -DHAVE_PTHREAD"
164     ;;
165 solaris*)
166     DEFINES="$DEFINES -DHAVE_PTHREAD -DSVR4"
167     ;;
168 cygwin*)
169     DEFINES="$DEFINES -DHAVE_PTHREAD"
170     ;;
171 esac
172
173 dnl Add flags for gcc and g++
174 if test "x$GCC" = xyes; then
175     case "$host_os" in
176     cygwin*)
177         CFLAGS="$CFLAGS -Wall -std=gnu99"
178         ;;
179     *)
180         CFLAGS="$CFLAGS -Wall -std=c99"
181         ;;
182     esac
183
184     # Enable -Werror=implicit-function-declaration and
185     # -Werror=missing-prototypes, if available, or otherwise, just
186     # -Wmissing-prototypes.  This is particularly useful to avoid
187     # generating a loadable driver module that has undefined symbols.
188     save_CFLAGS="$CFLAGS"
189     AC_MSG_CHECKING([whether $CC supports -Werror=missing-prototypes])
190     CFLAGS="$CFLAGS -Werror=implicit-function-declaration"
191     CFLAGS="$CFLAGS -Werror=missing-prototypes"
192     AC_LINK_IFELSE([AC_LANG_PROGRAM()],
193                    AC_MSG_RESULT([yes]),
194                    [CFLAGS="$save_CFLAGS -Wmissing-prototypes";
195                     AC_MSG_RESULT([no])]);
196
197     # Enable -fvisibility=hidden if using a gcc that supports it
198     save_CFLAGS="$CFLAGS"
199     AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
200     VISIBILITY_CFLAGS="-fvisibility=hidden"
201     CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
202     AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
203                    [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
204
205     # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
206     CFLAGS=$save_CFLAGS
207
208     # Work around aliasing bugs - developers should comment this out
209     CFLAGS="$CFLAGS -fno-strict-aliasing"
210
211     # gcc's builtin memcmp is slower than glibc's
212     # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
213     CFLAGS="$CFLAGS -fno-builtin-memcmp"
214 fi
215 if test "x$GXX" = xyes; then
216     CXXFLAGS="$CXXFLAGS -Wall"
217
218     # Enable -fvisibility=hidden if using a gcc that supports it
219     save_CXXFLAGS="$CXXFLAGS"
220     AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
221     VISIBILITY_CXXFLAGS="-fvisibility=hidden"
222     CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
223     AC_LANG_PUSH([C++])
224     AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
225                    [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
226     AC_LANG_POP([C++])
227
228     # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
229     CXXFLAGS=$save_CXXFLAGS
230
231     # Work around aliasing bugs - developers should comment this out
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="$CXXFLAGS -fno-builtin-memcmp"
237 fi
238
239 dnl even if the compiler appears to support it, using visibility attributes isn't
240 dnl going to do anything useful currently on cygwin apart from emit lots of warnings
241 case "$host_os" in
242 cygwin*)
243     VISIBILITY_CFLAGS=""
244     VISIBILITY_CXXFLAGS=""
245     ;;
246 esac
247
248 AC_SUBST([VISIBILITY_CFLAGS])
249 AC_SUBST([VISIBILITY_CXXFLAGS])
250
251 dnl
252 dnl Hacks to enable 32 or 64 bit build
253 dnl
254 AC_ARG_ENABLE([32-bit],
255     [AS_HELP_STRING([--enable-32-bit],
256         [build 32-bit libraries @<:@default=auto@:>@])],
257     [enable_32bit="$enableval"],
258     [enable_32bit=auto]
259 )
260 if test "x$enable_32bit" = xyes; then
261     if test "x$GCC" = xyes; then
262         CFLAGS="$CFLAGS -m32"
263         CCASFLAGS="$CCASFLAGS -m32"
264     fi
265     if test "x$GXX" = xyes; then
266         CXXFLAGS="$CXXFLAGS -m32"
267     fi
268 fi
269 AC_ARG_ENABLE([64-bit],
270     [AS_HELP_STRING([--enable-64-bit],
271         [build 64-bit libraries @<:@default=auto@:>@])],
272     [enable_64bit="$enableval"],
273     [enable_64bit=auto]
274 )
275 if test "x$enable_64bit" = xyes; then
276     if test "x$GCC" = xyes; then
277         CFLAGS="$CFLAGS -m64"
278     fi
279     if test "x$GXX" = xyes; then
280         CXXFLAGS="$CXXFLAGS -m64"
281     fi
282 fi
283
284 dnl Can't have static and shared libraries, default to static if user
285 dnl explicitly requested. If both disabled, set to static since shared
286 dnl was explicitly requested.
287 case "x$enable_static$enable_shared" in
288 xyesyes )
289     AC_MSG_WARN([Cannot build static and shared libraries, disabling shared])
290     enable_shared=no
291     ;;
292 xnono )
293     AC_MSG_WARN([Cannot disable both static and shared libraries, enabling static])
294     enable_static=yes
295     ;;
296 esac
297
298 AM_CONDITIONAL(BUILD_SHARED, test "x$enable_shared" = xyes)
299
300 dnl
301 dnl mklib options
302 dnl
303 AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
304 if test "$enable_static" = yes; then
305     MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
306 fi
307 AC_SUBST([MKLIB_OPTIONS])
308
309 dnl
310 dnl other compiler options
311 dnl
312 AC_ARG_ENABLE([debug],
313     [AS_HELP_STRING([--enable-debug],
314         [use debug compiler flags and macros @<:@default=disabled@:>@])],
315     [enable_debug="$enableval"],
316     [enable_debug=no]
317 )
318 if test "x$enable_debug" = xyes; then
319     DEFINES="$DEFINES -DDEBUG"
320     if test "x$GCC" = xyes; then
321         CFLAGS="$CFLAGS -g"
322     fi
323     if test "x$GXX" = xyes; then
324         CXXFLAGS="$CXXFLAGS -g"
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 MESA_ASM_FILES=""
437 AC_MSG_CHECKING([whether to enable assembly])
438 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
439 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
440 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
441     case "$host_cpu" in
442     i?86 | x86_64)
443         enable_asm=no
444         AC_MSG_RESULT([no, cross compiling])
445         ;;
446     esac
447 fi
448 # check for supported arches
449 if test "x$enable_asm" = xyes; then
450     case "$host_cpu" in
451     i?86)
452         case "$host_os" in
453         linux* | *freebsd* | dragonfly* | *netbsd*)
454             test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
455             ;;
456         esac
457         ;;
458     x86_64)
459         case "$host_os" in
460         linux* | *freebsd* | dragonfly* | *netbsd*)
461             test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
462             ;;
463         esac
464         ;;
465     sparc*)
466         case "$host_os" in
467         linux*)
468             asm_arch=sparc
469             ;;
470         esac
471         ;;
472     esac
473
474     case "$asm_arch" in
475     x86)
476         DEFINES="$DEFINES -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
477         MESA_ASM_FILES='$(X86_FILES)'
478         AC_MSG_RESULT([yes, x86])
479         ;;
480     x86_64)
481         DEFINES="$DEFINES -DUSE_X86_64_ASM"
482         MESA_ASM_FILES='$(X86_64_FILES)'
483         AC_MSG_RESULT([yes, x86_64])
484         ;;
485     sparc)
486         DEFINES="$DEFINES -DUSE_SPARC_ASM"
487         MESA_ASM_FILES='$(SPARC_FILES)'
488         AC_MSG_RESULT([yes, sparc])
489         ;;
490     *)
491         AC_MSG_RESULT([no, platform not supported])
492         ;;
493     esac
494 fi
495 AC_SUBST([MESA_ASM_FILES])
496
497 dnl PIC code macro
498 MESA_PIC_FLAGS
499
500 dnl Check to see if dlopen is in default libraries (like Solaris, which
501 dnl has it in libc), or if libdl is needed to get it.
502 AC_CHECK_FUNC([dlopen], [DEFINES="$DEFINES -DHAVE_DLOPEN"],
503     [AC_CHECK_LIB([dl], [dlopen],
504        [DEFINES="$DEFINES -DHAVE_DLOPEN"; DLOPEN_LIBS="-ldl"])])
505 AC_SUBST([DLOPEN_LIBS])
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 @<:@default=no@:>@])],
612    [enable_opencl="$enableval"],
613    [enable_opencl=no])
614 AC_ARG_ENABLE([xlib_glx],
615     [AS_HELP_STRING([--enable-xlib-glx],
616         [make GLX library Xlib-based instead of DRI-based @<:@default=disabled@:>@])],
617     [enable_xlib_glx="$enableval"],
618     [enable_xlib_glx=no])
619 AC_ARG_ENABLE([gallium_egl],
620     [AS_HELP_STRING([--enable-gallium-egl],
621         [enable optional EGL state tracker (not required
622          for EGL support in Gallium with OpenGL and OpenGL ES)
623          @<:@default=disable@:>@])],
624     [enable_gallium_egl="$enableval"],
625     [enable_gallium_egl=no])
626 AC_ARG_ENABLE([gallium_gbm],
627     [AS_HELP_STRING([--enable-gallium-gbm],
628         [enable optional gbm state tracker (not required for
629          gbm support in Gallium)
630          @<:@default=auto@:>@])],
631     [enable_gallium_gbm="$enableval"],
632     [enable_gallium_gbm=auto])
633
634 AC_ARG_ENABLE([r600-llvm-compiler],
635     [AS_HELP_STRING([--enable-r600-llvm-compiler],
636         [Enable experimental LLVM backend for graphics shaders @<:@default=disable@:>@])],
637     [enable_r600_llvm="$enableval"],
638     [enable_r600_llvm=no])
639
640 AC_ARG_ENABLE([gallium_tests],
641     [AS_HELP_STRING([--enable-gallium-tests],
642         [Enable optional Gallium tests) @<:@default=disable@:>@])],
643     [enable_gallium_tests="$enableval"],
644     [enable_gallium_tests=no])
645
646 # Option for Gallium drivers
647 GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
648
649 AC_ARG_WITH([gallium-drivers],
650     [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
651         [comma delimited Gallium drivers list, e.g.
652         "i915,nouveau,r300,r600,radeonsi,svga,swrast"
653         @<:@default=r300,r600,swrast@:>@])],
654     [with_gallium_drivers="$withval"],
655     [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
656
657 # Doing '--without-gallium-drivers' will set this variable to 'no'.  Clear it
658 # here so that the script doesn't choke on an unknown driver name later.
659 case "$with_gallium_drivers" in
660     yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
661     no) with_gallium_drivers='' ;;
662 esac
663
664 if test "x$enable_opengl" = xno -a \
665         "x$enable_gles1" = xno -a \
666         "x$enable_gles2" = xno -a \
667         "x$enable_openvg" = xno -a \
668         "x$enable_xorg" = xno -a \
669         "x$enable_xa" = xno -a \
670         "x$enable_d3d1x" = xno -a \
671         "x$enable_xvmc" = xno -a \
672         "x$enable_vdpau" = xno -a \
673         "x$enable_opencl" = xno; then
674     AC_MSG_ERROR([at least one API should be enabled])
675 fi
676
677 API_DEFINES=""
678 if test "x$enable_opengl" = xno; then
679     API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
680 else
681     API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
682 fi
683 if test "x$enable_gles1" = xyes; then
684     API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
685 fi
686 if test "x$enable_gles2" = xyes; then
687     API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
688 fi
689 AC_SUBST([API_DEFINES])
690
691 if test "x$enable_glx" = xno; then
692     AC_MSG_WARN([GLX disabled, disabling Xlib-GLX])
693     enable_xlib_glx=no
694 fi
695
696 if test "x$enable_dri$enable_xlib_glx" = xyesyes; then
697     AC_MSG_ERROR([DRI and Xlib-GLX cannot be built together])
698 fi
699
700 # Disable GLX if DRI and Xlib-GLX are not enabled
701 if test "x$enable_glx" = xyes -a \
702         "x$enable_dri" = xno -a \
703         "x$enable_xlib_glx" = xno; then
704     AC_MSG_WARN([Neither DRI nor Xlib-GLX enabled, disabling GLX])
705     enable_glx=no
706 fi
707
708 AM_CONDITIONAL(HAVE_DRI, test "x$enable_dri" = xyes)
709 AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_xlib_glx" = xyes -o \
710                                   "x$enable_osmesa" = xyes)
711
712 AC_ARG_ENABLE([shared-glapi],
713     [AS_HELP_STRING([--enable-shared-glapi],
714         [Enable shared glapi for OpenGL @<:@default=yes@:>@])],
715     [enable_shared_glapi="$enableval"],
716     [enable_shared_glapi="$enable_dri"])
717
718 # Shared GLAPI is only useful for DRI
719 if test "x$enable_dri" = xno; then
720     AC_MSG_NOTICE([Shared GLAPI is only useful for DRI, disabling])
721     enable_shared_glapi=no
722 fi
723
724 # TODO: Get rid of SHARED_GLAPI variable
725 SHARED_GLAPI="0"
726 if test "x$enable_shared_glapi" = xyes; then
727     SHARED_GLAPI="1"
728     # libGL will use libglapi for function lookups (IN_DRI_DRIVER means to use
729     # the remap table)
730     DEFINES="$DEFINES -DIN_DRI_DRIVER"
731     CORE_DIRS="mapi/shared-glapi"
732 fi
733 AC_SUBST([SHARED_GLAPI])
734 AM_CONDITIONAL(HAVE_SHARED_GLAPI, test "x$enable_shared_glapi" = xyes)
735
736 dnl
737 dnl Driver specific build directories
738 dnl
739 SRC_DIRS="gtest"
740 GALLIUM_DIRS="auxiliary drivers state_trackers"
741 GALLIUM_TARGET_DIRS=""
742 GALLIUM_WINSYS_DIRS="sw"
743 GALLIUM_DRIVERS_DIRS="galahad trace rbug noop identity"
744 GALLIUM_STATE_TRACKERS_DIRS=""
745
746 # build glapi if OpenGL is enabled
747 if test "x$enable_opengl" = xyes; then
748     CORE_DIRS="$CORE_DIRS mapi/glapi"
749 fi
750
751 # build es1api if OpenGL ES 1.x is enabled
752 if test "x$enable_gles1" = xyes; then
753     CORE_DIRS="$CORE_DIRS mapi/es1api"
754 fi
755
756 # build es2api if OpenGL ES 2.x is enabled
757 if test "x$enable_gles2" = xyes; then
758     CORE_DIRS="$CORE_DIRS mapi/es2api"
759 fi
760
761 # build glsl and mesa if OpenGL or OpenGL ES is enabled
762 case "x$enable_opengl$enable_gles1$enable_gles2" in
763 x*yes*)
764     CORE_DIRS="mapi/glapi/gen $CORE_DIRS glsl mesa"
765     ;;
766 esac
767
768 case "x$enable_glx$enable_xlib_glx" in
769 xyesyes)
770     DRIVER_DIRS="$DRIVER_DIRS x11"
771     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
772     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
773     GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS"
774     HAVE_WINSYS_XLIB="yes"
775     ;;
776 xyesno)
777     # DRI-based GLX
778     SRC_DIRS="$SRC_DIRS glx"
779     ;;
780 esac
781
782 if test "x$enable_dri" = xyes; then
783     DRIVER_DIRS="$DRIVER_DIRS dri"
784
785     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/dri"
786     GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
787     HAVE_ST_DRI="yes"
788 fi
789
790 if test "x$enable_osmesa" = xyes; then
791     DRIVER_DIRS="$DRIVER_DIRS osmesa"
792 fi
793
794 AC_SUBST([SRC_DIRS])
795 AC_SUBST([DRIVER_DIRS])
796 AC_SUBST([GALLIUM_DIRS])
797 AC_SUBST([GALLIUM_TARGET_DIRS])
798 AC_SUBST([GALLIUM_WINSYS_DIRS])
799 AC_SUBST([GALLIUM_DRIVERS_DIRS])
800 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
801 AC_SUBST([MESA_LLVM])
802
803 # Check for libdrm
804 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
805                   [have_libdrm=yes], [have_libdrm=no])
806
807 if test "x$enable_dri" = xyes; then
808     # DRI must be shared, I think
809     if test "$enable_static" = yes; then
810         AC_MSG_ERROR([Cannot use static libraries for DRI drivers])
811     fi
812
813     # not a hard requirement as swrast does not depend on it
814     if test "x$have_libdrm" = xyes; then
815         DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
816     fi
817 fi
818
819 dnl Find out if X is available.
820 PKG_CHECK_MODULES([X11], [x11], [no_x=no], [no_x=yes])
821
822 dnl Try to tell the user that the --x-* options are only used when
823 dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
824 m4_divert_once([HELP_BEGIN],
825 [These options are only used when the X libraries cannot be found by the
826 pkg-config utility.])
827
828 dnl We need X for xlib and dri, so bomb now if it's not found
829 if test "x$enable_glx" = xyes -a "x$no_x" = xyes; then
830     AC_MSG_ERROR([X11 development libraries needed for GLX])
831 fi
832
833 dnl Direct rendering or just indirect rendering
834 case "$host_os" in
835 gnu*)
836     dnl Disable by default on GNU/Hurd
837     driglx_direct_default="no"
838     ;;
839 cygwin*)
840     dnl Disable by default on cygwin
841     driglx_direct_default="no"
842     ;;
843 *)
844     driglx_direct_default="yes"
845     ;;
846 esac
847 AC_ARG_ENABLE([driglx-direct],
848     [AS_HELP_STRING([--disable-driglx-direct],
849         [enable direct rendering in GLX and EGL for DRI \
850             @<:@default=auto@:>@])],
851     [driglx_direct="$enableval"],
852     [driglx_direct="$driglx_direct_default"])
853
854 dnl
855 dnl libGL configuration per driver
856 dnl
857 case "x$enable_glx$enable_xlib_glx" in
858 xyesyes)
859     # Xlib-based GLX
860     PKG_CHECK_MODULES([XLIBGL], [x11 xext])
861     GL_PC_REQ_PRIV="x11 xext"
862     X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
863     GL_LIB_DEPS="$XLIBGL_LIBS"
864     GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
865     GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm $PTHREAD_LIBS"
866     ;;
867 xyesno)
868     # DRI-based GLX
869     PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
870     if test x"$driglx_direct" = xyes; then
871         if test "x$have_libdrm" != xyes; then
872             AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
873         fi
874         PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
875         GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED"
876     fi
877
878     # find the DRI deps for libGL
879     dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx >= 1.8.1 xcb-dri2 >= 1.8"
880
881     # add xf86vidmode if available
882     PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
883     if test "$HAVE_XF86VIDMODE" = yes ; then
884         dri_modules="$dri_modules xxf86vm"
885     fi
886
887     PKG_CHECK_MODULES([DRIGL], [$dri_modules])
888     GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
889     X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
890     GL_LIB_DEPS="$DRIGL_LIBS"
891
892     # need DRM libs, $PTHREAD_LIBS, etc.
893     GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
894     GL_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
895     ;;
896 esac
897
898 # This is outside the case (above) so that it is invoked even for non-GLX
899 # builds.
900 AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
901
902 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
903 GLESv1_CM_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
904 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
905 GLESv2_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
906
907 AC_SUBST([X11_INCLUDES])
908 AC_SUBST([GL_LIB_DEPS])
909 AC_SUBST([GL_PC_REQ_PRIV])
910 AC_SUBST([GL_PC_LIB_PRIV])
911 AC_SUBST([GL_PC_CFLAGS])
912 AC_SUBST([DRI_PC_REQ_PRIV])
913 AC_SUBST([GLESv1_CM_LIB_DEPS])
914 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
915 AC_SUBST([GLESv2_LIB_DEPS])
916 AC_SUBST([GLESv2_PC_LIB_PRIV])
917
918 DRI_LIB_DEPS="\$(top_builddir)/src/mesa/libdricore/libdricore${VERSION}.la"
919
920 AC_SUBST([HAVE_XF86VIDMODE])
921
922 dnl
923 dnl More GLX setup
924 dnl
925 case "x$enable_glx$enable_xlib_glx" in
926 xyesyes)
927     DEFINES="$DEFINES -DUSE_XSHM"
928     ;;
929 xyesno)
930     DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
931     if test "x$driglx_direct" = xyes; then
932         DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
933     fi
934     ;;
935 esac
936
937 dnl
938 dnl TLS detection
939 dnl
940
941 AC_ARG_ENABLE([glx-tls],
942     [AS_HELP_STRING([--enable-glx-tls],
943         [enable TLS support in GLX @<:@default=disabled@:>@])],
944     [GLX_USE_TLS="$enableval"],
945     [GLX_USE_TLS=no])
946 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
947
948 AS_IF([test "x$GLX_USE_TLS" = xyes -a "x$ax_pthread_ok" = xyes],
949       [DEFINES="${DEFINES} -DGLX_USE_TLS -DHAVE_PTHREAD"])
950
951 dnl
952 dnl More DRI setup
953 dnl
954 dnl Directory for DRI drivers
955 AC_ARG_WITH([dri-driverdir],
956     [AS_HELP_STRING([--with-dri-driverdir=DIR],
957         [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
958     [DRI_DRIVER_INSTALL_DIR="$withval"],
959     [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
960 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
961 dnl Extra search path for DRI drivers
962 AC_ARG_WITH([dri-searchpath],
963     [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
964         [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
965     [DRI_DRIVER_SEARCH_DIR="$withval"],
966     [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
967 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
968 dnl Which drivers to build - default is chosen by platform
969 AC_ARG_WITH([dri-drivers],
970     [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
971         [comma delimited DRI drivers list, e.g.
972         "swrast,i965,radeon" @<:@default=auto@:>@])],
973     [with_dri_drivers="$withval"],
974     [with_dri_drivers=yes])
975 if test "x$with_dri_drivers" = x; then
976     with_dri_drivers=no
977 fi
978
979 dnl If $with_dri_drivers is yes, directories will be added through
980 dnl platform checks
981 DRI_DIRS=""
982 case "$with_dri_drivers" in
983 no) ;;
984 yes)
985     # classic DRI drivers require FEATURE_GL to build
986     if test "x$enable_opengl" = xyes; then
987         DRI_DIRS="yes"
988     fi
989     ;;
990 *)
991     # verify the requested driver directories exist
992     dri_drivers=`IFS=', '; echo $with_dri_drivers`
993     for driver in $dri_drivers; do
994         test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
995             AC_MSG_ERROR([DRI driver directory '$driver' does not exist])
996     done
997     DRI_DIRS="$dri_drivers"
998     if test -n "$DRI_DIRS" -a "x$enable_opengl" != xyes; then
999         AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1000     fi
1001     ;;
1002 esac
1003
1004 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
1005 if test "x$enable_dri" = xyes; then
1006     # Platform specific settings and drivers to build
1007     case "$host_os" in
1008     linux*)
1009         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1010         DEFINES="$DEFINES -DHAVE_ALIAS"
1011
1012         case "$host_cpu" in
1013         x86_64)
1014             if test "x$DRI_DIRS" = "xyes"; then
1015                 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1016             fi
1017             ;;
1018         powerpc*)
1019             # Build only the drivers for cards that exist on PowerPC.
1020             if test "x$DRI_DIRS" = "xyes"; then
1021                 DRI_DIRS="r200 radeon swrast"
1022             fi
1023             ;;
1024         sparc*)
1025             # Build only the drivers for cards that exist on sparc
1026             if test "x$DRI_DIRS" = "xyes"; then
1027                 DRI_DIRS="r200 radeon swrast"
1028             fi
1029             ;;
1030         esac
1031         ;;
1032     freebsd* | dragonfly* | *netbsd*)
1033         DEFINES="$DEFINES -DHAVE_PTHREAD -DUSE_EXTERNAL_DXTN_LIB=1"
1034         DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
1035
1036         if test "x$DRI_DIRS" = "xyes"; then
1037             DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1038         fi
1039         ;;
1040     gnu*)
1041         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1042         DEFINES="$DEFINES -DHAVE_ALIAS"
1043         ;;
1044     solaris*)
1045         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1046         ;;
1047     cygwin*)
1048         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1049         if test "x$DRI_DIRS" = "xyes"; then
1050             DRI_DIRS="swrast"
1051         fi
1052         ;;
1053     esac
1054
1055     # default drivers
1056     if test "x$DRI_DIRS" = "xyes"; then
1057         DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1058     fi
1059
1060     DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/  */ /g'`
1061
1062     # Check for expat
1063     if test "x$enable_dri" = xyes; then
1064         EXPAT_INCLUDES=""
1065         EXPAT_LIB=-lexpat
1066         AC_ARG_WITH([expat],
1067             [AS_HELP_STRING([--with-expat=DIR],
1068                 [expat install directory])],[
1069             EXPAT_INCLUDES="-I$withval/include"
1070             CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
1071             LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
1072             EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
1073             ])
1074         AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
1075         save_LIBS="$LIBS"
1076         AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1077             [AC_MSG_ERROR([Expat required for DRI.])])
1078         LIBS="$save_LIBS"
1079     fi
1080
1081     # if we are building any dri driver other than swrast ...
1082     if test -n "$DRI_DIRS" -a x"$DRI_DIRS" != xswrast; then
1083         # ... libdrm is required
1084         if test "x$have_libdrm" != xyes; then
1085             AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
1086         fi
1087         # ... and build dricommon
1088         HAVE_COMMON_DRI=yes
1089     fi
1090
1091     # put all the necessary libs together
1092     DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1093     GALLIUM_DRI_LIB_DEPS="$GALLIUM_DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1094 fi
1095 AM_CONDITIONAL(NEED_LIBDRICORE, test -n "$DRI_DIRS")
1096 AC_SUBST([DRI_DIRS])
1097 AC_SUBST([EXPAT_INCLUDES])
1098 AC_SUBST([DRI_LIB_DEPS])
1099 AC_SUBST([GALLIUM_DRI_LIB_DEPS])
1100
1101 case $DRI_DIRS in
1102 *i915*|*i965*)
1103     PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1104
1105     for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1106         case $d in
1107         i915)
1108             HAVE_I915_DRI=yes;
1109             ;;
1110         i965)
1111             HAVE_I965_DRI=yes;
1112             ;;
1113         esac
1114     done
1115
1116     ;;
1117 esac
1118
1119 case $DRI_DIRS in
1120 *nouveau*)
1121     PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED])
1122     HAVE_NOUVEAU_DRI=yes;
1123     ;;
1124 esac
1125
1126 case $DRI_DIRS in
1127 *radeon*|*r200*)
1128     PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1129
1130     for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1131         case $d in
1132         radeon)
1133             HAVE_RADEON_DRI=yes;
1134             ;;
1135         r200)
1136             HAVE_R200_DRI=yes;
1137             ;;
1138         esac
1139     done
1140
1141     ;;
1142 esac
1143
1144 case $DRI_DIRS in
1145 *swrast*)
1146     HAVE_SWRAST_DRI=yes;
1147     ;;
1148 esac
1149
1150 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
1151 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
1152 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
1153 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
1154 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
1155 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
1156 AM_CONDITIONAL(HAVE_COMMON_DRI, test x$HAVE_COMMON_DRI = xyes)
1157
1158 dnl
1159 dnl OSMesa configuration
1160 dnl
1161
1162 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1163 AC_ARG_WITH([osmesa-bits],
1164     [AS_HELP_STRING([--with-osmesa-bits=BITS],
1165         [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1166     [osmesa_bits="$withval"],
1167     [osmesa_bits=8])
1168 if test "x$osmesa_bits" != x8; then
1169     if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then
1170         AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1171         osmesa_bits=8
1172     fi
1173 fi
1174 case "x$osmesa_bits" in
1175 x8)
1176     OSMESA_LIB="${OSMESA_LIB}"
1177     ;;
1178 x16|x32)
1179     OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
1180     DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1181     ;;
1182 *)
1183     AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1184     ;;
1185 esac
1186
1187 if test "x$enable_osmesa" = xyes; then
1188     # only link libraries with osmesa if shared
1189     if test "$enable_static" = no; then
1190         OSMESA_LIB_DEPS="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1191     else
1192         OSMESA_LIB_DEPS=""
1193     fi
1194     OSMESA_MESA_DEPS=""
1195     OSMESA_PC_LIB_PRIV="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1196 fi
1197
1198 AC_SUBST([OSMESA_LIB_DEPS])
1199 AC_SUBST([OSMESA_MESA_DEPS])
1200 AC_SUBST([OSMESA_PC_REQ])
1201 AC_SUBST([OSMESA_PC_LIB_PRIV])
1202
1203 dnl
1204 dnl gbm configuration
1205 dnl
1206 if test "x$enable_gbm" = xauto; then
1207     case "$with_egl_platforms" in
1208         *drm*)
1209             enable_gbm=yes ;;
1210          *)
1211             enable_gbm=no ;;
1212     esac
1213 fi
1214 if test "x$enable_gbm" = xyes; then
1215     SRC_DIRS="$SRC_DIRS gbm"
1216
1217     PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1218                       AC_MSG_ERROR([gbm needs udev]))
1219
1220     if test "x$enable_dri" = xyes; then
1221         GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
1222         if test "x$enable_shared_glapi" = xno; then
1223             AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1224         fi
1225     fi
1226 fi
1227 GBM_PC_REQ_PRIV="libudev"
1228 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1229 AC_SUBST([GBM_PC_REQ_PRIV])
1230 AC_SUBST([GBM_PC_LIB_PRIV])
1231
1232 dnl
1233 dnl EGL configuration
1234 dnl
1235 EGL_CLIENT_APIS=""
1236
1237 if test "x$enable_egl" = xyes; then
1238     SRC_DIRS="$SRC_DIRS egl"
1239     EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS $PTHREAD_LIBS"
1240
1241     AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1242
1243     if test "$enable_static" != yes; then
1244         # build egl_glx when libGL is built
1245         if test "x$enable_glx" = xyes; then
1246             HAVE_EGL_DRIVER_GLX=1
1247         fi
1248
1249         PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1250                           [have_libudev=yes],[have_libudev=no])
1251         if test "$have_libudev" = yes; then
1252             DEFINES="$DEFINES -DHAVE_LIBUDEV"
1253         fi
1254
1255         if test "x$enable_dri" = xyes; then
1256             HAVE_EGL_DRIVER_DRI2=1
1257         fi
1258
1259     fi
1260 fi
1261 AC_SUBST([EGL_LIB_DEPS])
1262
1263 dnl
1264 dnl EGL Gallium configuration
1265 dnl
1266 if test "x$enable_gallium_egl" = xyes; then
1267     if test "x$with_gallium_drivers" = x; then
1268         AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
1269     fi
1270     if test "x$enable_egl" = xno; then
1271         AC_MSG_ERROR([cannot enable egl_gallium without EGL])
1272     fi
1273     if test "x$have_libdrm" != xyes; then
1274         AC_MSG_ERROR([egl_gallium requires libdrm >= $LIBDRM_REQUIRED])
1275     fi
1276
1277     GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
1278     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static"
1279     HAVE_ST_EGL="yes"
1280 fi
1281
1282 dnl
1283 dnl gbm Gallium configuration
1284 dnl
1285 if test "x$enable_gallium_gbm" = xauto; then
1286     case "$enable_gbm$HAVE_ST_EGL$enable_dri$with_egl_platforms" in
1287         yesyesyes*drm*)
1288             enable_gallium_gbm=yes ;;
1289          *)
1290             enable_gallium_gbm=no ;;
1291     esac
1292 fi
1293 if test "x$enable_gallium_gbm" = xyes; then
1294     if test "x$with_gallium_drivers" = x; then
1295         AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
1296     fi
1297     if test "x$enable_gbm" = xno; then
1298         AC_MSG_ERROR([cannot enable gbm_gallium without gbm])
1299     fi
1300     # gbm_gallium abuses DRI_LIB_DEPS to link.  Make sure it is set.
1301     if test "x$enable_dri" = xno; then
1302         AC_MSG_ERROR([gbm_gallium requires --enable-dri to build])
1303     fi
1304
1305     GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS"
1306     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm"
1307     HAVE_ST_GBM="yes"
1308     enable_gallium_loader=yes
1309 fi
1310
1311 dnl
1312 dnl X.Org DDX configuration
1313 dnl
1314 if test "x$enable_xorg" = xyes; then
1315     PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1316     PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1317     PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1318     PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1319         HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1320         HAVE_XEXTPROTO_71="no")
1321     GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS"
1322     HAVE_ST_XORG=yes
1323 fi
1324
1325 dnl
1326 dnl XA configuration
1327 dnl
1328 if test "x$enable_xa" = xyes; then
1329 AC_PROG_AWK
1330 AC_PROG_GREP
1331 AC_CHECK_PROG(NM, nm, "nm")
1332 if test "x$AWK" = x || test "x$GREP" = x || test "x$NM" = x; then
1333 AC_MSG_WARN([Missing one of nm, grep or awk. Disabling xa.])
1334 enable_xa=no
1335 fi
1336 fi
1337 if test "x$enable_xa" = xyes; then
1338     GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS"
1339     HAVE_ST_XA=yes
1340     AC_SUBST(AWK)
1341     AC_SUBST(GREP)
1342     AC_SUBST(NM)
1343 fi
1344
1345 dnl
1346 dnl OpenVG configuration
1347 dnl
1348 VG_LIB_DEPS=""
1349
1350 if test "x$enable_openvg" = xyes; then
1351     if test "x$enable_egl" = xno; then
1352         AC_MSG_ERROR([cannot enable OpenVG without EGL])
1353     fi
1354     if test "x$with_gallium_drivers" = x; then
1355         AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1356     fi
1357     if test "x$enable_gallium_egl" = xno; then
1358         AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
1359     fi
1360
1361     EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1362     VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS $PTHREAD_LIBS"
1363     CORE_DIRS="$CORE_DIRS mapi/vgapi"
1364     GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1365     HAVE_ST_VEGA=yes
1366     VG_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
1367     AC_SUBST([VG_PC_LIB_PRIV])
1368 fi
1369
1370 dnl
1371 dnl D3D1X configuration
1372 dnl
1373
1374 if test "x$enable_d3d1x" = xyes; then
1375     if test "x$with_gallium_drivers" = x; then
1376         AC_MSG_ERROR([cannot enable D3D1X without Gallium])
1377     fi
1378
1379     GALLIUM_STATE_TRACKERS_DIRS="d3d1x $GALLIUM_STATE_TRACKERS_DIRS"
1380     HAVE_ST_D3D1X=yes
1381 fi
1382
1383 dnl
1384 dnl Gallium G3DVL configuration
1385 dnl
1386 AC_ARG_ENABLE([gallium-g3dvl],
1387     [AS_HELP_STRING([--enable-gallium-g3dvl],
1388         [build gallium g3dvl @<:@default=disabled@:>@])],
1389     [enable_gallium_g3dvl="$enableval"],
1390     [enable_gallium_g3dvl=no])
1391 if test "x$enable_gallium_g3dvl" = xyes; then
1392     if test "x$with_gallium_drivers" = x; then
1393         AC_MSG_ERROR([cannot enable G3DVL without Gallium])
1394     fi
1395
1396     if test "x$enable_xvmc" = xauto; then
1397         PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no])
1398     fi
1399
1400     if test "x$enable_vdpau" = xauto; then
1401         PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no])
1402     fi
1403 fi
1404
1405 if test "x$enable_xvmc" = xyes; then
1406     PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6 x11-xcb xcb-dri2 >= 1.8])
1407     GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xvmc"
1408     HAVE_ST_XVMC="yes"
1409 fi
1410
1411 if test "x$enable_vdpau" = xyes; then
1412     PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.4.1 x11-xcb xcb-dri2 >= 1.8])
1413     GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau"
1414     HAVE_ST_VDPAU="yes"
1415 fi
1416
1417 dnl
1418 dnl OpenCL configuration
1419 dnl
1420
1421 AC_ARG_WITH([libclc-path],
1422    [AS_HELP_STRING([--with-libclc-path],
1423          [Path to libclc builtins library.  Example: --with-libclc-path=\$HOME/libclc/])],
1424    [LIBCLC_PATH="$withval"],
1425    [LIBCLC_PATH=""])
1426
1427 AC_ARG_WITH([clang-libdir],
1428    [AS_HELP_STRING([--with-clang-libdir],
1429          [Path to Clang libraries @<:@default=llvm-config --libdir@:>@])],
1430    [CLANG_LIBDIR="$withval"],
1431    [CLANG_LIBDIR=""])
1432
1433 AC_SUBST([LIBCLC_PATH])
1434
1435 if test "x$enable_opencl" = xyes; then
1436     if test "x$with_gallium_drivers" = x; then
1437         AC_MSG_ERROR([cannot enable OpenCL without Gallium])
1438     fi
1439
1440     if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6; then
1441         AC_MSG_ERROR([gcc >= 4.6 is required to build clover])
1442     fi
1443
1444     GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS clover"
1445     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS opencl"
1446     enable_gallium_loader=yes
1447 fi
1448
1449 dnl
1450 dnl Gallium configuration
1451 dnl
1452 if test "x$with_gallium_drivers" != x; then
1453     SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
1454 fi
1455 AM_CONDITIONAL(HAVE_GALLIUM, test "x$with_gallium_drivers" != x)
1456
1457 AC_SUBST([LLVM_BINDIR])
1458 AC_SUBST([LLVM_CFLAGS])
1459 AC_SUBST([LLVM_CPPFLAGS])
1460 AC_SUBST([LLVM_CXXFLAGS])
1461 AC_SUBST([LLVM_LIBDIR])
1462 AC_SUBST([LLVM_LIBS])
1463 AC_SUBST([LLVM_LDFLAGS])
1464 AC_SUBST([LLVM_INCLUDEDIR])
1465 AC_SUBST([LLVM_VERSION])
1466 AC_SUBST([CLANG_RESOURCE_DIR])
1467
1468 case "x$enable_opengl$enable_gles1$enable_gles2" in
1469 x*yes*)
1470     EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1471     ;;
1472 esac
1473
1474 AC_SUBST([VG_LIB_DEPS])
1475 AC_SUBST([EGL_CLIENT_APIS])
1476
1477 dnl
1478 dnl EGL Platforms configuration
1479 dnl
1480 AC_ARG_WITH([egl-platforms],
1481     [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1482         [comma delimited native platforms libEGL supports, e.g.
1483         "x11,drm" @<:@default=auto@:>@])],
1484     [with_egl_platforms="$withval"],
1485     [if test "x$enable_egl" = xyes; then
1486         with_egl_platforms="x11"
1487     else
1488         with_egl_platforms=""
1489     fi])
1490
1491 EGL_PLATFORMS=""
1492
1493 if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
1494     AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1495 fi
1496
1497 # Do per-EGL platform setups and checks
1498 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1499 for plat in $egl_platforms; do
1500         case "$plat" in
1501         fbdev|null)
1502                 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/$plat"
1503                 ;;
1504
1505         wayland)
1506                 PKG_CHECK_MODULES([WAYLAND], [wayland-client >= 0.99.0 wayland-server >= 0.99.0],, \
1507                                   [AC_MSG_ERROR([cannot find libwayland-client])])
1508                 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
1509
1510                 WAYLAND_PREFIX=`$PKG_CONFIG --variable=prefix wayland-client`
1511                 AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner],,
1512                              [${WAYLAND_PREFIX}/bin$PATH_SEPARATOR$PATH])
1513                 ;;
1514
1515         x11)
1516                 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 >= 1.8 xcb-xfixes])
1517                 ;;
1518
1519         drm)
1520                 test "x$enable_gbm" = "xno" &&
1521                         AC_MSG_ERROR([EGL platform drm needs gbm])
1522                 ;;
1523
1524         android|gdi)
1525                 ;;
1526
1527         *)
1528                 AC_MSG_ERROR([EGL platform '$plat' does not exist])
1529                 ;;
1530         esac
1531
1532         case "$plat$have_libudev" in
1533                 waylandno|drmno)
1534                     AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;;
1535         esac
1536 done
1537
1538 # libEGL wants to default to the first platform specified in
1539 # ./configure.  parse that here.
1540 if test "x$egl_platforms" != "x"; then
1541     FIRST_PLATFORM_CAPS=`echo $egl_platforms | sed 's| .*||' | tr 'a-z' 'A-Z'`
1542     EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
1543 else
1544     EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
1545 fi
1546
1547 EGL_PLATFORMS="$egl_platforms"
1548
1549 AM_CONDITIONAL(HAVE_EGL_PLATFORM_X11, echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1)
1550 AM_CONDITIONAL(HAVE_EGL_PLATFORM_WAYLAND, echo "$egl_platforms" | grep 'wayland' >/dev/null 2>&1)
1551 AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep 'drm' >/dev/null 2>&1)
1552 AM_CONDITIONAL(HAVE_EGL_PLATFORM_FBDEV, echo "$egl_platforms" | grep 'fbdev' >/dev/null 2>&1)
1553 AM_CONDITIONAL(HAVE_EGL_PLATFORM_NULL, echo "$egl_platforms" | grep 'null' >/dev/null 2>&1)
1554
1555 AM_CONDITIONAL(HAVE_EGL_DRIVER_DRI2, test "x$HAVE_EGL_DRIVER_DRI2" != "x")
1556 AM_CONDITIONAL(HAVE_EGL_DRIVER_GLX, test "x$HAVE_EGL_DRIVER_GLX" != "x")
1557
1558 AC_SUBST([EGL_NATIVE_PLATFORM])
1559 AC_SUBST([EGL_PLATFORMS])
1560 AC_SUBST([EGL_CFLAGS])
1561
1562 AC_ARG_WITH([egl-driver-dir],
1563     [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1564                     [directory for EGL drivers [[default=${libdir}/egl]]])],
1565     [EGL_DRIVER_INSTALL_DIR="$withval"],
1566     [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1567 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1568
1569 AC_ARG_WITH([xorg-driver-dir],
1570     [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1571                     [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1572     [XORG_DRIVER_INSTALL_DIR="$withval"],
1573     [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1574 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1575
1576 AC_ARG_WITH([max-width],
1577     [AS_HELP_STRING([--with-max-width=N],
1578                     [Maximum framebuffer width (4096)])],
1579     [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1580      AS_IF([test "${withval}" -gt "4096"],
1581            [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1582 )
1583 AC_ARG_WITH([max-height],
1584     [AS_HELP_STRING([--with-max-height=N],
1585                     [Maximum framebuffer height (4096)])],
1586     [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1587      AS_IF([test "${withval}" -gt "4096"],
1588            [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1589 )
1590
1591 dnl
1592 dnl Gallium LLVM
1593 dnl
1594 AC_ARG_ENABLE([gallium-llvm],
1595     [AS_HELP_STRING([--enable-gallium-llvm],
1596         [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1597     [enable_gallium_llvm="$enableval"],
1598     [enable_gallium_llvm=auto])
1599
1600 AC_ARG_WITH([llvm-shared-libs],
1601     [AS_HELP_STRING([--with-llvm-shared-libs],
1602         [link with LLVM shared libraries @<:@default=disabled@:>@])],
1603     [with_llvm_shared_libs=yes],
1604     [with_llvm_shared_libs=no])
1605
1606 AC_ARG_WITH([llvm-prefix],
1607     [AS_HELP_STRING([--with-llvm-prefix],
1608         [Prefix for LLVM installations in non-standard locations])],
1609     [llvm_prefix="$withval"],
1610     [llvm_prefix=""])
1611
1612
1613 if test "x$with_gallium_drivers" = x; then
1614     enable_gallium_llvm=no
1615 fi
1616 if test "x$enable_gallium_llvm" = xauto; then
1617     case "$host_cpu" in
1618     i*86|x86_64) enable_gallium_llvm=yes;;
1619     esac
1620 fi
1621 if test "x$enable_gallium_llvm" = xyes; then
1622     if test "x$llvm_prefix" != x; then
1623         AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no], ["$llvm_prefix/bin"])
1624     else
1625         AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1626     fi
1627
1628     if test "x$LLVM_CONFIG" != xno; then
1629         LLVM_VERSION=`$LLVM_CONFIG --version | sed 's/svn.*//g'`
1630         LLVM_CFLAGS=`$LLVM_CONFIG --cppflags|sed -e 's/-DNDEBUG\>//g' -e 's/-pedantic//g' -e 's/-Wcovered-switch-default//g'`
1631         if test "x$with_llvm_shared_libs" = xyes; then
1632             dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
1633             LLVM_LIBS="-lLLVM-`$LLVM_CONFIG --version`"
1634         else
1635             LLVM_COMPONENTS="engine bitwriter"
1636             if $LLVM_CONFIG --components | grep -q '\<mcjit\>'; then
1637                 LLVM_COMPONENTS="${LLVM_COMPONENTS} mcjit"
1638             fi
1639
1640             if test "x$enable_opencl" = xyes; then
1641                 LLVM_COMPONENTS="${LLVM_COMPONENTS} ipo linker instrumentation"
1642             fi
1643             LLVM_LIBS="`$LLVM_CONFIG --libs ${LLVM_COMPONENTS}`"
1644         fi
1645         LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1646         LLVM_BINDIR=`$LLVM_CONFIG --bindir`
1647         LLVM_CXXFLAGS=`$LLVM_CONFIG --cxxflags`
1648         LLVM_CPPFLAGS=`$LLVM_CONFIG --cppflags`
1649         LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
1650         LLVM_LIBDIR=`$LLVM_CONFIG --libdir`
1651         DEFINES="${DEFINES} -DHAVE_LLVM=`echo $LLVM_VERSION | sed -e 's/\([[0-9]]\)\.\([[0-9]]\)/0x0\10\2/g'`"
1652         MESA_LLVM=1
1653
1654         dnl Check for Clang interanl headers
1655         if test "x$enable_opencl" = xyes; then
1656             if test "x$CLANG_LIBDIR" = x; then
1657                 CLANG_LIBDIR=${LLVM_LIBDIR}
1658             fi
1659             CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION}
1660             AC_CHECK_FILE("$CLANG_RESOURCE_DIR/include/stddef.h",,
1661                 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.]))
1662         fi
1663     else
1664         MESA_LLVM=0
1665     fi
1666 else
1667     MESA_LLVM=0
1668 fi
1669
1670 dnl Directory for XVMC libs
1671 AC_ARG_WITH([xvmc-libdir],
1672     [AS_HELP_STRING([--with-xvmc-libdir=DIR],
1673         [directory for the XVMC libraries @<:@default=${libdir}@:>@])],
1674     [XVMC_LIB_INSTALL_DIR="$withval"],
1675     [XVMC_LIB_INSTALL_DIR='${libdir}'])
1676 AC_SUBST([XVMC_LIB_INSTALL_DIR])
1677
1678 dnl
1679 dnl Gallium Tests
1680 dnl
1681 if test "x$enable_gallium_tests" = xyes; then
1682     SRC_DIRS="$SRC_DIRS gallium/tests/trivial"
1683     enable_gallium_loader=yes
1684 fi
1685
1686 dnl Directory for VDPAU libs
1687 AC_ARG_WITH([vdpau-libdir],
1688     [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1689         [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1690     [VDPAU_LIB_INSTALL_DIR="$withval"],
1691     [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1692 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
1693
1694 dnl Directory for OpenCL libs
1695 AC_ARG_WITH([opencl-libdir],
1696     [AS_HELP_STRING([--with-opencl-libdir=DIR],
1697         [directory for the OpenCL libraries @<:@default=${libdir}/opencl@:>@])],
1698     [OPENCL_LIB_INSTALL_DIR="$withval"],
1699     [OPENCL_LIB_INSTALL_DIR='${libdir}/opencl'])
1700 AC_SUBST([OPENCL_LIB_INSTALL_DIR])
1701
1702 dnl
1703 dnl Gallium helper functions
1704 dnl
1705 gallium_check_st() {
1706     if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes ||
1707          test "x$HAVE_ST_XA" = xyes || test "x$HAVE_ST_XVMC" = xyes ||
1708          test "x$HAVE_ST_VDPAU" = xyes; then
1709          if test "x$have_libdrm" != xyes; then
1710             AC_MSG_ERROR([DRI or Xorg DDX requires libdrm >= $LIBDRM_REQUIRED])
1711          fi
1712          GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1713     fi
1714     if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1715          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1716     fi
1717     if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
1718          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1719     fi
1720     if test "x$HAVE_ST_XA" = xyes && test "x$4" != x; then
1721          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
1722     fi
1723     if test "x$HAVE_ST_XVMC" = xyes && test "x$5" != x; then
1724          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5"
1725     fi
1726     if test "x$HAVE_ST_VDPAU" = xyes && test "x$6" != x; then
1727          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6"
1728     fi
1729 }
1730
1731 gallium_require_llvm() {
1732     if test "x$MESA_LLVM" = x0; then
1733         case "$host_cpu" in
1734         i*86|x86_64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1735         esac
1736     fi
1737 }
1738
1739 gallium_require_drm_loader() {
1740     if test "x$enable_gallium_loader" = xyes; then
1741         PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1742                           AC_MSG_ERROR([Gallium drm loader requrires libudev]))
1743         if test "x$have_libdrm" != xyes; then
1744             AC_MSG_ERROR([Gallium drm loader requires libdrm >= $LIBDRM_REQUIRED])
1745         fi
1746         enable_gallium_drm_loader=yes
1747     fi
1748 }
1749
1750 radeon_llvm_check() {
1751     LLVM_VERSION_MAJOR=`echo $LLVM_VERSION | cut -d. -f1`
1752     if test "$LLVM_VERSION_MAJOR" -lt "3" -o "x$LLVM_VERSION" = "x3.0"; then
1753         AC_MSG_ERROR([LLVM 3.1 or newer is required for the r600/radeonsi llvm compiler.])
1754     fi
1755     if test "$LLVM_VERSION_MAJOR" -ge "3" -a "x$LLVM_VERSION" != "x3.1" && $LLVM_CONFIG --targets-built | grep -qv '\<AMDGPU\>' ; then
1756         AC_MSG_ERROR([To use the r600/radeonsi LLVM backend with LLVM 3.2 and newer, you need to fetch the LLVM source from:
1757                       git://people.freedesktop.org/~tstellar/llvm master
1758                       and build with --enable-experimental-targets=AMDGPU])
1759     fi
1760     if test "x$LLVM_VERSION" = "x3.2"; then
1761         LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --libs amdgpu`"
1762     fi
1763 }
1764
1765 dnl Gallium drivers
1766 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
1767 if test "x$with_gallium_drivers" != x; then
1768     gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1769     for driver in $gallium_drivers; do
1770         case "x$driver" in
1771         xsvga)
1772             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
1773             gallium_check_st "svga/drm" "dri-vmwgfx" "" "xa-vmwgfx"
1774             ;;
1775         xi915)
1776             PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1777             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe"
1778             if test "x$MESA_LLVM" = x1; then
1779                 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1780             fi
1781             GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1782             gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1783             ;;
1784         xr300)
1785             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1786             gallium_require_llvm "Gallium R300"
1787             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1788             gallium_check_st "radeon/drm" "dri-r300" "xorg-r300" "" "xvmc-r300" "vdpau-r300"
1789             ;;
1790         xr600)
1791             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1792             gallium_require_drm_loader
1793             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1794             if test "x$enable_r600_llvm" = xyes -o "x$enable_opencl" = xyes; then
1795                 radeon_llvm_check
1796                 NEED_RADEON_GALLIUM=yes;
1797             fi
1798             if test "x$enable_r600_llvm" = xyes; then
1799                 USE_R600_LLVM_COMPILER=yes;
1800             fi
1801             if test "x$enable_opencl" = xyes -a "x$with_llvm_shared_libs" = xno; then
1802                 LLVM_LIBS="${LLVM_LIBS} `$LLVM_CONFIG --libs bitreader asmparser`"
1803             fi
1804             gallium_check_st "radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600"
1805             ;;
1806         xradeonsi)
1807             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1808             gallium_require_drm_loader
1809             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS radeonsi"
1810             radeon_llvm_check
1811             NEED_RADEON_GALLIUM=yes;
1812             gallium_check_st "radeon/drm" "dri-radeonsi" "xorg-radeonsi" "" "" "vdpau-radeonsi" ""
1813             ;;
1814         xnouveau)
1815             PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1816             gallium_require_drm_loader
1817             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nv30 nv50 nvc0"
1818             gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau" "" "xvmc-nouveau" "vdpau-nouveau"
1819             ;;
1820         xswrast)
1821             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe"
1822             if test "x$MESA_LLVM" = x1; then
1823                 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1824             fi
1825
1826             if test "x$HAVE_ST_DRI" = xyes; then
1827                 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1828             fi
1829             if test "x$HAVE_ST_VDPAU" = xyes; then
1830                 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS vdpau-softpipe"
1831             fi
1832             if test "x$HAVE_ST_XVMC" = xyes; then
1833                 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS xvmc-softpipe"
1834             fi
1835             if test "x$HAVE_ST_VDPAU" = xyes ||
1836                test "x$HAVE_ST_XVMC" = xyes; then
1837                if test "x$HAVE_WINSYS_XLIB" != xyes; then
1838                   GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
1839                fi
1840             fi
1841             ;;
1842         *)
1843             AC_MSG_ERROR([Unknown Gallium driver: $driver])
1844             ;;
1845         esac
1846     done
1847 fi
1848
1849 if test "x$enable_gallium_loader" = xyes; then
1850     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
1851     GALLIUM_PIPE_LOADER_DEFINES="-DHAVE_PIPE_LOADER_SW"
1852     GALLIUM_PIPE_LOADER_LIBS="\$(TOP)/src/gallium/auxiliary/pipe-loader/libpipe_loader.a"
1853     GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS \$(TOP)/src/gallium/winsys/sw/null/libws_null.a"
1854
1855     if test "x$HAVE_WINSYS_XLIB" = xyes; then
1856         GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_XLIB"
1857         GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS \$(TOP)/src/gallium/winsys/sw/xlib/libws_xlib.a"
1858     fi
1859
1860     if test "x$enable_gallium_drm_loader" = xyes; then
1861         GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRM"
1862         PKG_CHECK_MODULES([GALLIUM_PIPE_LOADER_XCB], [xcb xcb-dri2],
1863                           pipe_loader_have_xcb=yes, pipe_loader_have_xcb=no)
1864         if test "x$pipe_loader_have_xcb" = xyes; then
1865             GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DPIPE_LOADER_HAVE_XCB"
1866             GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS $GALLIUM_PIPE_LOADER_XCB_LIBS $LIBDRM_LIBS"
1867         fi
1868     fi
1869
1870     AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
1871     AC_SUBST([GALLIUM_PIPE_LOADER_LIBS])
1872 fi
1873
1874 dnl Tell Automake which drivers to build
1875 for driver in $GALLIUM_DRIVERS_DIRS; do
1876     case "x$driver" in
1877         xgalahad)
1878             HAVE_GALAHAD_GALLIUM=yes;
1879             ;;
1880         xidentity)
1881             HAVE_IDENTITY_GALLIUM=yes;
1882             ;;
1883         xnoop)
1884             HAVE_NOOP_GALLIUM=yes;
1885             ;;
1886         *)
1887             GALLIUM_MAKE_DIRS="$GALLIUM_MAKE_DIRS $driver"
1888             ;;
1889     esac
1890 done
1891
1892 AM_CONDITIONAL(HAVE_GALAHAD_GALLIUM, test x$HAVE_GALAHAD_GALLIUM = xyes)
1893 AM_CONDITIONAL(HAVE_IDENTITY_GALLIUM, test x$HAVE_IDENTITY_GALLIUM = xyes)
1894 AM_CONDITIONAL(HAVE_NOOP_GALLIUM, test x$HAVE_NOOP_GALLIUM = xyes)
1895 AM_CONDITIONAL(NEED_RADEON_GALLIUM, test x$NEED_RADEON_GALLIUM = xyes)
1896 AM_CONDITIONAL(USE_R600_LLVM_COMPILER, test x$USE_R600_LLVM_COMPILER = xyes)
1897 AM_CONDITIONAL(HAVE_LOADER_GALLIUM, test x$enable_gallium_loader = xyes)
1898 AM_CONDITIONAL(HAVE_DRM_LOADER_GALLIUM, test x$enable_gallium_drm_loader = xyes)
1899 AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
1900 AC_SUBST([GALLIUM_MAKE_DIRS])
1901
1902 AM_CONDITIONAL(HAVE_X11_DRIVER, echo "$DRIVER_DIRS" | grep 'x11' >/dev/null 2>&1)
1903
1904 AM_CONDITIONAL(HAVE_X86_ASM, echo "$DEFINES" | grep 'X86_ASM' >/dev/null 2>&1)
1905 AM_CONDITIONAL(HAVE_X86_64_ASM, echo "$DEFINES" | grep 'X86_64_ASM' >/dev/null 2>&1)
1906 AM_CONDITIONAL(HAVE_SPARC_ASM, echo "$DEFINES" | grep 'SPARC_ASM' >/dev/null 2>&1)
1907
1908 dnl prepend CORE_DIRS to SRC_DIRS
1909 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
1910
1911 dnl Restore LDFLAGS and CPPFLAGS
1912 LDFLAGS="$_SAVE_LDFLAGS"
1913 CPPFLAGS="$_SAVE_CPPFLAGS"
1914
1915 dnl Add user CFLAGS and CXXFLAGS
1916 CFLAGS="$CFLAGS $USER_CFLAGS"
1917 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
1918
1919 dnl Substitute the config
1920 AC_CONFIG_FILES([configs/current
1921                 Makefile
1922                 src/Makefile
1923                 src/egl/Makefile
1924                 src/egl/drivers/Makefile
1925                 src/egl/drivers/dri2/Makefile
1926                 src/egl/drivers/glx/Makefile
1927                 src/egl/main/Makefile
1928                 src/egl/main/egl.pc
1929                 src/egl/wayland/Makefile
1930                 src/egl/wayland/wayland-drm/Makefile
1931                 src/egl/wayland/wayland-egl/Makefile
1932                 src/egl/wayland/wayland-egl/wayland-egl.pc
1933                 src/gallium/Makefile
1934                 src/gallium/auxiliary/pipe-loader/Makefile
1935                 src/gallium/drivers/Makefile
1936                 src/gallium/drivers/r300/Makefile
1937                 src/gallium/drivers/r600/Makefile
1938                 src/gallium/state_trackers/clover/Makefile
1939                 src/gallium/targets/opencl/Makefile
1940                 src/gbm/Makefile
1941                 src/gbm/main/gbm.pc
1942                 src/glsl/Makefile
1943                 src/glsl/glcpp/Makefile
1944                 src/glsl/tests/Makefile
1945                 src/glx/Makefile
1946                 src/glx/tests/Makefile
1947                 src/gtest/Makefile
1948                 src/mapi/es1api/Makefile
1949                 src/mapi/es1api/glesv1_cm.pc
1950                 src/mapi/es2api/Makefile
1951                 src/mapi/es2api/glesv2.pc
1952                 src/mapi/glapi/Makefile
1953                 src/mapi/glapi/gen/Makefile
1954                 src/mapi/glapi/tests/Makefile
1955                 src/mapi/shared-glapi/Makefile
1956                 src/mapi/shared-glapi/tests/Makefile
1957                 src/mapi/vgapi/Makefile
1958                 src/mapi/vgapi/vg.pc
1959                 src/mesa/Makefile
1960                 src/mesa/gl.pc
1961                 src/mesa/drivers/Makefile
1962                 src/mesa/drivers/dri/dri.pc
1963                 src/mesa/drivers/dri/common/Makefile
1964                 src/mesa/drivers/dri/i915/Makefile
1965                 src/mesa/drivers/dri/i965/Makefile
1966                 src/mesa/drivers/dri/Makefile
1967                 src/mesa/drivers/dri/nouveau/Makefile
1968                 src/mesa/drivers/dri/r200/Makefile
1969                 src/mesa/drivers/dri/radeon/Makefile
1970                 src/mesa/drivers/dri/swrast/Makefile
1971                 src/mesa/drivers/osmesa/Makefile
1972                 src/mesa/drivers/osmesa/osmesa.pc
1973                 src/mesa/drivers/x11/Makefile
1974                 src/mesa/libdricore/Makefile
1975                 src/mesa/main/tests/Makefile
1976                 src/mesa/x86-64/Makefile
1977                 src/mesa/x86/Makefile])
1978
1979 dnl Sort the dirs alphabetically
1980 GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1981 GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1982 GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1983 GALLIUM_MAKE_DIRS=`echo $GALLIUM_MAKE_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1984 GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1985
1986 AC_OUTPUT
1987
1988 dnl
1989 dnl Output some configuration info for the user
1990 dnl
1991 echo ""
1992 echo "        prefix:          $prefix"
1993 echo "        exec_prefix:     $exec_prefix"
1994 echo "        libdir:          $libdir"
1995 echo "        includedir:      $includedir"
1996
1997 dnl API info
1998 echo ""
1999 echo "        OpenGL:          $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
2000 echo "        OpenVG:          $enable_openvg"
2001
2002 dnl Driver info
2003 echo ""
2004 if test "x$enable_osmesa" != xno; then
2005         echo "        OSMesa:          lib$OSMESA_LIB"
2006 else
2007         echo "        OSMesa:          no"
2008 fi
2009
2010 if test "x$enable_dri" != xno; then
2011         # cleanup the drivers var
2012         dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/  */ /;s/ *$//'`
2013         if test "x$DRI_DIRS" = x; then
2014             echo "        DRI drivers:     no"
2015         else
2016             echo "        DRI drivers:     $dri_dirs"
2017         fi
2018         echo "        DRI driver dir:  $DRI_DRIVER_INSTALL_DIR"
2019 fi
2020
2021 case "x$enable_glx$enable_xlib_glx" in
2022 xyesyes)
2023     echo "        GLX:             Xlib-based"
2024     ;;
2025 xyesno)
2026     echo "        GLX:             DRI-based"
2027     ;;
2028 *)
2029     echo "        GLX:             $enable_glx"
2030     ;;
2031 esac
2032
2033 dnl EGL
2034 echo ""
2035 echo "        EGL:             $enable_egl"
2036 if test "$enable_egl" = yes; then
2037     echo "        EGL platforms:   $EGL_PLATFORMS"
2038
2039     egl_drivers=""
2040     if test "x$HAVE_EGL_DRIVER_GLX" != "x"; then
2041         egl_drivers="$egl_drivers builtin:egl_glx"
2042     fi
2043     if test "x$HAVE_EGL_DRIVER_DRI2" != "x"; then
2044         egl_drivers="$egl_drivers builtin:egl_dri2"
2045     fi
2046
2047     if test "x$HAVE_ST_EGL" = xyes; then
2048         echo "        EGL drivers:    ${egl_drivers} egl_gallium"
2049         echo "        EGL Gallium STs:$EGL_CLIENT_APIS"
2050     else
2051         echo "        EGL drivers:    $egl_drivers"
2052     fi
2053 fi
2054
2055 echo ""
2056 if test "x$MESA_LLVM" = x1; then
2057     echo "        llvm:            yes"
2058     echo "        llvm-config:     $LLVM_CONFIG"
2059     echo "        llvm-version:    $LLVM_VERSION"
2060 else
2061     echo "        llvm:            no"
2062 fi
2063
2064 echo ""
2065 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
2066     echo "        Gallium:         yes"
2067     echo "        Gallium dirs:    $GALLIUM_DIRS"
2068     echo "        Target dirs:     $GALLIUM_TARGET_DIRS"
2069     echo "        Winsys dirs:     $GALLIUM_WINSYS_DIRS"
2070     echo "        Driver dirs:     $GALLIUM_DRIVERS_DIRS"
2071     echo "        Trackers dirs:   $GALLIUM_STATE_TRACKERS_DIRS"
2072 else
2073     echo "        Gallium:         no"
2074 fi
2075
2076
2077 dnl Libraries
2078 echo ""
2079 echo "        Shared libs:     $enable_shared"
2080 echo "        Static libs:     $enable_static"
2081 echo "        Shared-glapi:    $enable_shared_glapi"
2082
2083 dnl Compiler options
2084 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2085 cflags=`echo $CFLAGS $PIC_FLAGS | \
2086     $SED 's/^ *//;s/  */ /;s/ *$//'`
2087 cxxflags=`echo $CXXFLAGS $PIC_FLAGS | \
2088     $SED 's/^ *//;s/  */ /;s/ *$//'`
2089 defines=`echo $DEFINES | $SED 's/^ *//;s/  */ /;s/ *$//'`
2090 echo ""
2091 echo "        CFLAGS:          $cflags"
2092 echo "        CXXFLAGS:        $cxxflags"
2093 echo "        Macros:          $defines"
2094 echo ""
2095 echo "        PYTHON2:         $PYTHON2"
2096
2097 echo ""
2098 echo "        Run '${MAKE-make}' to build Mesa"
2099 echo ""