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