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