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