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