configure: Check xcb version when X11 pkgconfig exists
[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         [Enable shared glapi for OpenGL @<:@default=yes@:>@])],
693     [enable_shared_glapi="$enableval"],
694     [enable_shared_glapi=yes])
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         PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx >= 1.8.1])
980         dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx"
981
982         # add xf86vidmode if available
983         PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
984         if test "$HAVE_XF86VIDMODE" = yes ; then
985             dri_modules="$dri_modules xxf86vm"
986         fi
987
988         PKG_CHECK_MODULES([DRIGL], [$dri_modules])
989         GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
990         X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
991         GL_LIB_DEPS="$DRIGL_LIBS"
992     else
993         # should check these...
994         X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
995         if test "x$HAVE_XF86VIDMODE" == xyes; then
996            GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
997         else
998            GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXdamage -lXfixes"
999         fi
1000         GL_PC_LIB_PRIV="$GL_LIB_DEPS"
1001         GL_PC_CFLAGS="$X11_INCLUDES"
1002
1003         # XCB can only be used from pkg-config
1004         PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx >= 1.8.1])
1005         GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
1006         X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
1007         GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
1008     fi
1009
1010     # need DRM libs, -lpthread, etc.
1011     GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1012     GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1013     ;;
1014 esac
1015
1016 # This is outside the case (above) so that it is invoked even for non-GLX
1017 # builds.
1018 AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
1019
1020 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1021 GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1022 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1023 GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1024
1025 AC_SUBST([GL_LIB_DEPS])
1026 AC_SUBST([GL_PC_REQ_PRIV])
1027 AC_SUBST([GL_PC_LIB_PRIV])
1028 AC_SUBST([GL_PC_CFLAGS])
1029 AC_SUBST([DRI_PC_REQ_PRIV])
1030 AC_SUBST([GLESv1_CM_LIB_DEPS])
1031 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
1032 AC_SUBST([GLESv2_LIB_DEPS])
1033 AC_SUBST([GLESv2_PC_LIB_PRIV])
1034
1035 GLAPI_LIB_DEPS="-lpthread $SELINUX_LIBS"
1036 AC_SUBST([GLAPI_LIB_DEPS])
1037
1038
1039 dnl dri libraries are linking with mesa
1040 DRI_LIB_DEPS='$(TOP)/src/mesa/libmesa.la'
1041 GALLIUM_DRI_LIB_DEPS='$(TOP)/src/mesa/libmesa.a'
1042
1043 dnl ... or dricore?
1044 if test "x$enable_dri" = xyes && test "x$driglx_direct" = xyes ; then
1045     DRI_LIB_DEPS="\$(TOP)/src/mesa/libdricore/libdricore${VERSION}.la"
1046     GALLIUM_DRI_LIB_DEPS="\$(TOP)/\$(LIB_DIR)/libdricore${VERSION}.so"
1047     HAVE_DRICORE=yes
1048 fi
1049 AM_CONDITIONAL(HAVE_DRICORE, test x$HAVE_DRICORE = xyes)
1050
1051 AC_SUBST([HAVE_XF86VIDMODE])
1052
1053 dnl
1054 dnl More GLX setup
1055 dnl
1056 case "x$enable_glx$enable_xlib_glx" in
1057 xyesyes)
1058     DEFINES="$DEFINES -DUSE_XSHM"
1059     ;;
1060 xyesno)
1061     DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1062     if test "x$driglx_direct" = xyes; then
1063         DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1064     fi
1065     ;;
1066 esac
1067
1068 dnl
1069 dnl TLS detection
1070 dnl
1071
1072 AC_ARG_ENABLE([glx-tls],
1073     [AS_HELP_STRING([--enable-glx-tls],
1074         [enable TLS support in GLX @<:@default=disabled@:>@])],
1075     [GLX_USE_TLS="$enableval"],
1076     [GLX_USE_TLS=no])
1077 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
1078
1079 AS_IF([test "x$GLX_USE_TLS" = xyes],
1080       [DEFINES="${DEFINES} -DGLX_USE_TLS -DPTHREADS"])
1081
1082 dnl
1083 dnl More DRI setup
1084 dnl
1085 dnl Directory for DRI drivers
1086 AC_ARG_WITH([dri-driverdir],
1087     [AS_HELP_STRING([--with-dri-driverdir=DIR],
1088         [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
1089     [DRI_DRIVER_INSTALL_DIR="$withval"],
1090     [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
1091 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
1092 dnl Extra search path for DRI drivers
1093 AC_ARG_WITH([dri-searchpath],
1094     [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
1095         [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
1096     [DRI_DRIVER_SEARCH_DIR="$withval"],
1097     [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
1098 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
1099 dnl Which drivers to build - default is chosen by platform
1100 AC_ARG_WITH([dri-drivers],
1101     [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
1102         [comma delimited DRI drivers list, e.g.
1103         "swrast,i965,radeon" @<:@default=auto@:>@])],
1104     [with_dri_drivers="$withval"],
1105     [with_dri_drivers=yes])
1106 if test "x$with_dri_drivers" = x; then
1107     with_dri_drivers=no
1108 fi
1109
1110 dnl If $with_dri_drivers is yes, directories will be added through
1111 dnl platform checks
1112 DRI_DIRS=""
1113 case "$with_dri_drivers" in
1114 no) ;;
1115 yes)
1116     # classic DRI drivers require FEATURE_GL to build
1117     if test "x$enable_opengl" = xyes; then
1118         DRI_DIRS="yes"
1119     fi
1120     ;;
1121 *)
1122     # verify the requested driver directories exist
1123     dri_drivers=`IFS=', '; echo $with_dri_drivers`
1124     for driver in $dri_drivers; do
1125         test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
1126             AC_MSG_ERROR([DRI driver directory '$driver' does not exist])
1127     done
1128     DRI_DIRS="$dri_drivers"
1129     if test -n "$DRI_DIRS" -a "x$enable_opengl" != xyes; then
1130         AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1131     fi
1132     ;;
1133 esac
1134
1135 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
1136 if test "x$enable_dri" = xyes; then
1137     # Platform specific settings and drivers to build
1138     case "$host_os" in
1139     linux*)
1140         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1141         DEFINES="$DEFINES -DHAVE_ALIAS"
1142
1143         case "$host_cpu" in
1144         x86_64)
1145             if test "x$DRI_DIRS" = "xyes"; then
1146                 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1147             fi
1148             ;;
1149         powerpc*)
1150             # Build only the drivers for cards that exist on PowerPC.
1151             if test "x$DRI_DIRS" = "xyes"; then
1152                 DRI_DIRS="r200 radeon swrast"
1153             fi
1154             ;;
1155         sparc*)
1156             # Build only the drivers for cards that exist on sparc
1157             if test "x$DRI_DIRS" = "xyes"; then
1158                 DRI_DIRS="r200 radeon swrast"
1159             fi
1160             ;;
1161         esac
1162         ;;
1163     freebsd* | dragonfly* | *netbsd*)
1164         DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
1165         DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
1166
1167         if test "x$DRI_DIRS" = "xyes"; then
1168             DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1169         fi
1170         ;;
1171     gnu*)
1172         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1173         DEFINES="$DEFINES -DHAVE_ALIAS"
1174         ;;
1175     solaris*)
1176         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1177         ;;
1178     cygwin*)
1179         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1180         if test "x$DRI_DIRS" = "xyes"; then
1181             DRI_DIRS="swrast"
1182         fi
1183         ;;
1184     esac
1185
1186     # default drivers
1187     if test "x$DRI_DIRS" = "xyes"; then
1188         DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1189     fi
1190
1191     DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/  */ /g'`
1192
1193     # Check for expat
1194     if test "x$enable_dri" = xyes; then
1195         EXPAT_INCLUDES=""
1196         EXPAT_LIB=-lexpat
1197         AC_ARG_WITH([expat],
1198             [AS_HELP_STRING([--with-expat=DIR],
1199                 [expat install directory])],[
1200             EXPAT_INCLUDES="-I$withval/include"
1201             CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
1202             LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
1203             EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
1204             ])
1205         AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
1206         save_LIBS="$LIBS"
1207         AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1208             [AC_MSG_ERROR([Expat required for DRI.])])
1209         LIBS="$save_LIBS"
1210     fi
1211
1212     # if we are building any dri driver other than swrast ...
1213     if test -n "$DRI_DIRS" -a x"$DRI_DIRS" != xswrast; then
1214         # ... libdrm is required
1215         if test "x$have_libdrm" != xyes; then
1216             AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
1217         fi
1218         # ... and build dricommon
1219         HAVE_COMMON_DRI=yes
1220     fi
1221
1222     # put all the necessary libs together
1223     DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
1224     GALLIUM_DRI_LIB_DEPS="$GALLIUM_DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
1225 fi
1226 AC_SUBST([DRI_DIRS])
1227 AC_SUBST([EXPAT_INCLUDES])
1228 AC_SUBST([DRI_LIB_DEPS])
1229 AC_SUBST([GALLIUM_DRI_LIB_DEPS])
1230
1231 case $DRI_DIRS in
1232 *i915*|*i965*)
1233     PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1234
1235     for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1236         case $d in
1237         i915)
1238             HAVE_I915_DRI=yes;
1239             ;;
1240         i965)
1241             HAVE_I965_DRI=yes;
1242             ;;
1243         esac
1244     done
1245
1246     ;;
1247 esac
1248
1249 case $DRI_DIRS in
1250 *nouveau*)
1251     PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED])
1252     HAVE_NOUVEAU_DRI=yes;
1253     ;;
1254 esac
1255
1256 case $DRI_DIRS in
1257 *radeon*|*r200*)
1258     PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1259
1260     for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1261         case $d in
1262         radeon)
1263             HAVE_RADEON_DRI=yes;
1264             ;;
1265         r200)
1266             HAVE_R200_DRI=yes;
1267             ;;
1268         esac
1269     done
1270
1271     ;;
1272 esac
1273
1274 case $DRI_DIRS in
1275 *swrast*)
1276     HAVE_SWRAST_DRI=yes;
1277     ;;
1278 esac
1279
1280 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
1281 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
1282 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
1283 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
1284 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
1285 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
1286 AM_CONDITIONAL(HAVE_COMMON_DRI, test x$HAVE_COMMON_DRI = xyes)
1287
1288 dnl
1289 dnl OSMesa configuration
1290 dnl
1291
1292 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1293 AC_ARG_WITH([osmesa-bits],
1294     [AS_HELP_STRING([--with-osmesa-bits=BITS],
1295         [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1296     [osmesa_bits="$withval"],
1297     [osmesa_bits=8])
1298 if test "x$osmesa_bits" != x8; then
1299     if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then
1300         AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1301         osmesa_bits=8
1302     fi
1303 fi
1304 case "x$osmesa_bits" in
1305 x8)
1306     OSMESA_LIB="${OSMESA_LIB}"
1307     ;;
1308 x16|x32)
1309     OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
1310     DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1311     ;;
1312 *)
1313     AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1314     ;;
1315 esac
1316
1317 if test "x$enable_osmesa" = xyes; then
1318     # only link libraries with osmesa if shared
1319     if test "$enable_static" = no; then
1320         OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1321     else
1322         OSMESA_LIB_DEPS=""
1323     fi
1324     OSMESA_MESA_DEPS=""
1325     OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1326 fi
1327
1328 OSMESA_VERSION=`echo "$VERSION" | $SED 's/\./:/g'`
1329
1330 AC_SUBST([OSMESA_LIB_DEPS])
1331 AC_SUBST([OSMESA_MESA_DEPS])
1332 AC_SUBST([OSMESA_PC_REQ])
1333 AC_SUBST([OSMESA_PC_LIB_PRIV])
1334 AC_SUBST([OSMESA_VERSION])
1335
1336 dnl
1337 dnl gbm configuration
1338 dnl
1339 if test "x$enable_gbm" = xauto; then
1340     case "$with_egl_platforms" in
1341         *drm*)
1342             enable_gbm=yes ;;
1343          *)
1344             enable_gbm=no ;;
1345     esac
1346 fi
1347 if test "x$enable_gbm" = xyes; then
1348     SRC_DIRS="$SRC_DIRS gbm"
1349
1350     PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1351                       AC_MSG_ERROR([gbm needs udev]))
1352
1353     if test "x$enable_dri" = xyes; then
1354         GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
1355         if test "$SHARED_GLAPI" -eq 0; then
1356             AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1357         fi
1358     fi
1359 fi
1360 GBM_PC_REQ_PRIV="libudev"
1361 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1362 AC_SUBST([GBM_PC_REQ_PRIV])
1363 AC_SUBST([GBM_PC_LIB_PRIV])
1364
1365 dnl
1366 dnl EGL configuration
1367 dnl
1368 EGL_CLIENT_APIS=""
1369
1370 if test "x$enable_egl" = xyes; then
1371     SRC_DIRS="$SRC_DIRS egl"
1372     EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS -lpthread"
1373
1374     AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1375
1376     if test "$enable_static" != yes; then
1377         # build egl_glx when libGL is built
1378         if test "x$enable_glx" = xyes; then
1379             HAVE_EGL_DRIVER_GLX=1
1380         fi
1381
1382         PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1383                           [have_libudev=yes],[have_libudev=no])
1384         if test "$have_libudev" = yes; then
1385             DEFINES="$DEFINES -DHAVE_LIBUDEV"
1386         fi
1387
1388         if test "x$enable_dri" = xyes; then
1389             HAVE_EGL_DRIVER_DRI2=1
1390         fi
1391
1392     fi
1393 fi
1394 AC_SUBST([EGL_LIB_DEPS])
1395
1396 dnl
1397 dnl EGL Gallium configuration
1398 dnl
1399 if test "x$enable_gallium_egl" = xyes; then
1400     if test "x$with_gallium_drivers" = x; then
1401         AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
1402     fi
1403     if test "x$enable_egl" = xno; then
1404         AC_MSG_ERROR([cannot enable egl_gallium without EGL])
1405     fi
1406     if test "x$have_libdrm" != xyes; then
1407         AC_MSG_ERROR([egl_gallium requires libdrm >= $LIBDRM_REQUIRED])
1408     fi
1409
1410     GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
1411     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static"
1412     HAVE_ST_EGL="yes"
1413 fi
1414
1415 dnl
1416 dnl gbm Gallium configuration
1417 dnl
1418 if test "x$enable_gallium_gbm" = xauto; then
1419     case "$enable_gbm$HAVE_ST_EGL$enable_dri$with_egl_platforms" in
1420         yesyesyes*drm*)
1421             enable_gallium_gbm=yes ;;
1422          *)
1423             enable_gallium_gbm=no ;;
1424     esac
1425 fi
1426 if test "x$enable_gallium_gbm" = xyes; then
1427     if test "x$with_gallium_drivers" = x; then
1428         AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
1429     fi
1430     if test "x$enable_gbm" = xno; then
1431         AC_MSG_ERROR([cannot enable gbm_gallium without gbm])
1432     fi
1433     # gbm_gallium abuses DRI_LIB_DEPS to link.  Make sure it is set.
1434     if test "x$enable_dri" = xno; then
1435         AC_MSG_ERROR([gbm_gallium requires --enable-dri to build])
1436     fi
1437
1438     GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS"
1439     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm"
1440     HAVE_ST_GBM="yes"
1441     enable_gallium_loader=yes
1442 fi
1443
1444 dnl
1445 dnl X.Org DDX configuration
1446 dnl
1447 if test "x$enable_xorg" = xyes; then
1448     PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1449     PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1450     PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1451     PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1452         HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1453         HAVE_XEXTPROTO_71="no")
1454     GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS"
1455     HAVE_ST_XORG=yes
1456 fi
1457
1458 dnl
1459 dnl XA configuration
1460 dnl
1461 if test "x$enable_xa" = xyes; then
1462 AC_PROG_AWK
1463 AC_PROG_GREP
1464 AC_CHECK_PROG(NM, nm, "nm")
1465 if test "x$AWK" = x || test "x$GREP" = x || test "x$NM" = x; then
1466 AC_MSG_WARN([Missing one of nm, grep or awk. Disabling xa.])
1467 enable_xa=no
1468 fi
1469 fi
1470 if test "x$enable_xa" = xyes; then
1471     GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS"
1472     HAVE_ST_XA=yes
1473     AC_SUBST(AWK)
1474     AC_SUBST(GREP)
1475     AC_SUBST(NM)
1476 fi
1477
1478 dnl
1479 dnl OpenVG configuration
1480 dnl
1481 VG_LIB_DEPS=""
1482
1483 if test "x$enable_openvg" = xyes; then
1484     if test "x$enable_egl" = xno; then
1485         AC_MSG_ERROR([cannot enable OpenVG without EGL])
1486     fi
1487     if test "x$with_gallium_drivers" = x; then
1488         AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1489     fi
1490     if test "x$enable_gallium_egl" = xno; then
1491         AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
1492     fi
1493
1494     EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1495     VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS -lpthread"
1496     CORE_DIRS="$CORE_DIRS mapi/vgapi"
1497     GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1498     HAVE_ST_VEGA=yes
1499 fi
1500
1501 dnl
1502 dnl D3D1X configuration
1503 dnl
1504
1505 if test "x$enable_d3d1x" = xyes; then
1506     if test "x$with_gallium_drivers" = x; then
1507         AC_MSG_ERROR([cannot enable D3D1X without Gallium])
1508     fi
1509
1510     GALLIUM_STATE_TRACKERS_DIRS="d3d1x $GALLIUM_STATE_TRACKERS_DIRS"
1511     HAVE_ST_D3D1X=yes
1512 fi
1513
1514 dnl
1515 dnl Gallium G3DVL configuration
1516 dnl
1517 AC_ARG_ENABLE([gallium-g3dvl],
1518     [AS_HELP_STRING([--enable-gallium-g3dvl],
1519         [build gallium g3dvl @<:@default=disabled@:>@])],
1520     [enable_gallium_g3dvl="$enableval"],
1521     [enable_gallium_g3dvl=no])
1522 if test "x$enable_gallium_g3dvl" = xyes; then
1523     if test "x$with_gallium_drivers" = x; then
1524         AC_MSG_ERROR([cannot enable G3DVL without Gallium])
1525     fi
1526
1527     if test "x$enable_xvmc" = xauto; then
1528         PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no])
1529     fi
1530
1531     if test "x$enable_vdpau" = xauto; then
1532         PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no])
1533     fi
1534
1535     if test "x$enable_va" = xauto; then
1536         #don't enable vaapi state tracker even if package exists
1537         #PKG_CHECK_EXISTS([libva], [enable_vdpau=yes], [enable_vdpau=no])
1538         enable_va=no
1539     fi
1540 fi
1541
1542 if test "x$enable_xvmc" = xyes; then
1543     PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6 x11-xcb xcb-dri2 >= 1.8])
1544     GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xvmc"
1545     HAVE_ST_XVMC="yes"
1546 fi
1547
1548 if test "x$enable_vdpau" = xyes; then
1549     PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.4.1 x11-xcb xcb-dri2 >= 1.8])
1550     GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau"
1551     HAVE_ST_VDPAU="yes"
1552 fi
1553
1554 if test "x$enable_va" = xyes; then
1555     PKG_CHECK_MODULES([LIBVA], [libva = 0.31.1 x11-xcb xcb-dri2 >= 1.8])
1556     AC_MSG_WARN([vaapi state tracker currently unmaintained])
1557     GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS va"
1558     HAVE_ST_VA="yes"
1559 fi
1560
1561 dnl
1562 dnl OpenCL configuration
1563 dnl
1564
1565 AC_ARG_WITH([libclc-path],
1566    [AS_HELP_STRING([--with-libclc-path],
1567          [Path to libclc builtins library.  Example: --with-libclc-path=\$HOME/libclc/])],
1568    [LIBCLC_PATH="$withval"],
1569    [LIBCLC_PATH=""])
1570
1571 AC_ARG_WITH([clang-libdir],
1572    [AS_HELP_STRING([--with-clang-libdir],
1573          [Path to Clang libraries @<:@default=llvm-config --libdir@:>@])],
1574    [CLANG_LIBDIR="$withval"],
1575    [CLANG_LIBDIR=""])
1576
1577 AC_SUBST([LIBCLC_PATH])
1578
1579 if test "x$enable_opencl" = xyes; then
1580     if test "x$with_gallium_drivers" = x; then
1581         AC_MSG_ERROR([cannot enable OpenCL without Gallium])
1582     fi
1583
1584     if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6; then
1585         AC_MSG_ERROR([gcc >= 4.6 is required to build clover])
1586     fi
1587
1588     GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS clover"
1589     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS opencl"
1590     enable_gallium_loader=yes
1591 fi
1592
1593 dnl
1594 dnl GLU configuration
1595 dnl
1596 AC_ARG_ENABLE([glu],
1597     [AS_HELP_STRING([--disable-glu],
1598         [enable OpenGL Utility library @<:@default=enabled@:>@])],
1599     [enable_glu="$enableval"],
1600     [enable_glu=yes])
1601
1602 if test "x$enable_glu" = xyes; then
1603     if test "x$enable_glx" = xno -a "x$enable_osmesa" = xno; then
1604         AC_MSG_NOTICE([Disabling GLU since there is no OpenGL driver])
1605         enable_glu=no
1606     fi
1607 fi
1608
1609 if test "x$enable_glu" = xyes; then
1610     SRC_DIRS="$SRC_DIRS glu"
1611
1612     if test "x$enable_glx" = xno; then
1613         # Link libGLU to libOSMesa instead of libGL
1614         GLU_LIB_DEPS=""
1615         GLU_PC_REQ="osmesa"
1616         if test "$enable_static" = no; then
1617             GLU_MESA_DEPS='-l$(OSMESA_LIB)'
1618         else
1619             GLU_MESA_DEPS=""
1620         fi
1621     else
1622         # If static, empty GLU_LIB_DEPS and add libs for programs to link
1623         GLU_PC_REQ="gl"
1624         GLU_PC_LIB_PRIV="-lm"
1625         if test "$enable_static" = no; then
1626             GLU_LIB_DEPS="-lm"
1627             GLU_MESA_DEPS='-l$(GL_LIB)'
1628         else
1629             GLU_LIB_DEPS=""
1630             GLU_MESA_DEPS=""
1631         fi
1632     fi
1633 fi
1634 if test "$enable_static" = no; then
1635     GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
1636 fi
1637 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
1638 AC_SUBST([GLU_LIB_DEPS])
1639 AC_SUBST([GLU_MESA_DEPS])
1640 AC_SUBST([GLU_PC_REQ])
1641 AC_SUBST([GLU_PC_REQ_PRIV])
1642 AC_SUBST([GLU_PC_LIB_PRIV])
1643 AC_SUBST([GLU_PC_CFLAGS])
1644
1645 AC_SUBST([PROGRAM_DIRS])
1646
1647 dnl
1648 dnl Gallium configuration
1649 dnl
1650 if test "x$with_gallium_drivers" != x; then
1651     SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
1652 fi
1653
1654 AC_SUBST([LLVM_BINDIR])
1655 AC_SUBST([LLVM_CFLAGS])
1656 AC_SUBST([LLVM_CPPFLAGS])
1657 AC_SUBST([LLVM_CXXFLAGS])
1658 AC_SUBST([LLVM_LIBDIR])
1659 AC_SUBST([LLVM_LIBS])
1660 AC_SUBST([LLVM_LDFLAGS])
1661 AC_SUBST([LLVM_INCLUDEDIR])
1662 AC_SUBST([LLVM_VERSION])
1663 AC_SUBST([CLANG_RESOURCE_DIR])
1664
1665 case "x$enable_opengl$enable_gles1$enable_gles2" in
1666 x*yes*)
1667     EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1668     ;;
1669 esac
1670
1671 AC_SUBST([VG_LIB_DEPS])
1672 AC_SUBST([EGL_CLIENT_APIS])
1673
1674 dnl
1675 dnl EGL Platforms configuration
1676 dnl
1677 AC_ARG_WITH([egl-platforms],
1678     [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1679         [comma delimited native platforms libEGL supports, e.g.
1680         "x11,drm" @<:@default=auto@:>@])],
1681     [with_egl_platforms="$withval"],
1682     [if test "x$enable_egl" = xyes; then
1683         with_egl_platforms="x11"
1684     else
1685         with_egl_platforms=""
1686     fi])
1687
1688 EGL_PLATFORMS=""
1689
1690 if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
1691     AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1692 fi
1693
1694 # Do per-EGL platform setups and checks
1695 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1696 for plat in $egl_platforms; do
1697         case "$plat" in
1698         fbdev|null)
1699                 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/$plat"
1700                 ;;
1701
1702         wayland)
1703                 PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-server],, \
1704                                   [AC_MSG_ERROR([cannot find libwayland-client])])
1705                 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
1706
1707                 WAYLAND_PREFIX=`$PKG_CONFIG --variable=prefix wayland-client`
1708                 AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner],,
1709                              [${WAYLAND_PREFIX}/bin$PATH_SEPARATOR$PATH])
1710                 ;;
1711
1712         x11)
1713                 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes])
1714                 # workaround a bug in xcb-dri2 generated by xcb-proto 1.6
1715                 save_LIBS="$LIBS"
1716                 AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [],
1717                              [DEFINES="$DEFINES -DXCB_DRI2_CONNECT_DEVICE_NAME_BROKEN"])
1718                 LIBS="$save_LIBS"
1719                 ;;
1720
1721         drm)
1722                 test "x$enable_gbm" = "xno" &&
1723                         AC_MSG_ERROR([EGL platform drm needs gbm])
1724                 ;;
1725
1726         android|gdi)
1727                 ;;
1728
1729         *)
1730                 AC_MSG_ERROR([EGL platform '$plat' does not exist])
1731                 ;;
1732         esac
1733
1734         case "$plat$have_libudev" in
1735                 waylandno|drmno)
1736                     AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;;
1737         esac
1738 done
1739
1740 # libEGL wants to default to the first platform specified in
1741 # ./configure.  parse that here.
1742 if test "x$egl_platforms" != "x"; then
1743     FIRST_PLATFORM_CAPS=`echo $egl_platforms | sed 's| .*||' | tr 'a-z' 'A-Z'`
1744     EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
1745 else
1746     EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
1747 fi
1748
1749 EGL_PLATFORMS="$egl_platforms"
1750
1751 AM_CONDITIONAL(HAVE_EGL_PLATFORM_X11, echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1)
1752 AM_CONDITIONAL(HAVE_EGL_PLATFORM_WAYLAND, echo "$egl_platforms" | grep 'wayland' >/dev/null 2>&1)
1753 AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep 'drm' >/dev/null 2>&1)
1754 AM_CONDITIONAL(HAVE_EGL_PLATFORM_FBDEV, echo "$egl_platforms" | grep 'fbdev' >/dev/null 2>&1)
1755 AM_CONDITIONAL(HAVE_EGL_PLATFORM_NULL, echo "$egl_platforms" | grep 'null' >/dev/null 2>&1)
1756
1757 AM_CONDITIONAL(HAVE_EGL_DRIVER_DRI2, test "x$HAVE_EGL_DRIVER_DRI2" != "x")
1758 AM_CONDITIONAL(HAVE_EGL_DRIVER_GLX, test "x$HAVE_EGL_DRIVER_GLX" != "x")
1759
1760 AC_SUBST([EGL_NATIVE_PLATFORM])
1761 AC_SUBST([EGL_PLATFORMS])
1762 AC_SUBST([EGL_CFLAGS])
1763
1764 AC_ARG_WITH([egl-driver-dir],
1765     [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1766                     [directory for EGL drivers [[default=${libdir}/egl]]])],
1767     [EGL_DRIVER_INSTALL_DIR="$withval"],
1768     [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1769 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1770
1771 AC_ARG_WITH([xorg-driver-dir],
1772     [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1773                     [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1774     [XORG_DRIVER_INSTALL_DIR="$withval"],
1775     [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1776 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1777
1778 AC_ARG_WITH([max-width],
1779     [AS_HELP_STRING([--with-max-width=N],
1780                     [Maximum framebuffer width (4096)])],
1781     [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1782      AS_IF([test "${withval}" -gt "4096"],
1783            [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1784 )
1785 AC_ARG_WITH([max-height],
1786     [AS_HELP_STRING([--with-max-height=N],
1787                     [Maximum framebuffer height (4096)])],
1788     [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1789      AS_IF([test "${withval}" -gt "4096"],
1790            [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1791 )
1792
1793 dnl
1794 dnl Gallium LLVM
1795 dnl
1796 AC_ARG_ENABLE([gallium-llvm],
1797     [AS_HELP_STRING([--enable-gallium-llvm],
1798         [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1799     [enable_gallium_llvm="$enableval"],
1800     [enable_gallium_llvm=auto])
1801
1802 AC_ARG_WITH([llvm-shared-libs],
1803     [AS_HELP_STRING([--with-llvm-shared-libs],
1804         [link with LLVM shared libraries @<:@default=disabled@:>@])],
1805     [with_llvm_shared_libs=yes],
1806     [with_llvm_shared_libs=no])
1807
1808 AC_ARG_WITH([llvm-prefix],
1809     [AS_HELP_STRING([--with-llvm-prefix],
1810         [Prefix for LLVM installations in non-standard locations])],
1811     [llvm_prefix="$withval"],
1812     [llvm_prefix=""])
1813
1814
1815 if test "x$with_gallium_drivers" = x; then
1816     enable_gallium_llvm=no
1817 fi
1818 if test "x$enable_gallium_llvm" = xauto; then
1819     case "$host_cpu" in
1820     i*86|x86_64) enable_gallium_llvm=yes;;
1821     esac
1822 fi
1823 if test "x$enable_gallium_llvm" = xyes; then
1824     if test "x$llvm_prefix" != x; then
1825         AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no], ["$llvm_prefix/bin"])
1826     else
1827         AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1828     fi
1829
1830     if test "x$LLVM_CONFIG" != xno; then
1831         LLVM_VERSION=`$LLVM_CONFIG --version | sed 's/svn.*//g'`
1832         LLVM_CFLAGS=`$LLVM_CONFIG --cppflags|sed -e 's/-DNDEBUG\>//g' -e 's/-pedantic//g' -e 's/-Wcovered-switch-default//g'`
1833         if test "x$with_llvm_shared_libs" = xyes; then
1834             dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
1835             LLVM_LIBS="-lLLVM-`$LLVM_CONFIG --version`"
1836         else
1837             LLVM_COMPONENTS="engine bitwriter"
1838             if $LLVM_CONFIG --components | grep -q '\<mcjit\>'; then
1839                 LLVM_COMPONENTS="${LLVM_COMPONENTS} mcjit"
1840             fi
1841             if test "x$enable_opencl" = xyes; then
1842                 LLVM_COMPONENTS="${LLVM_COMPONENTS} ipo linker instrumentation"
1843             fi
1844             LLVM_LIBS="`$LLVM_CONFIG --libs ${LLVM_COMPONENTS}`"
1845         fi
1846         LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1847         LLVM_BINDIR=`$LLVM_CONFIG --bindir`
1848         LLVM_CXXFLAGS=`$LLVM_CONFIG --cxxflags`
1849         LLVM_CPPFLAGS=`$LLVM_CONFIG --cppflags`
1850         LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
1851         LLVM_LIBDIR=`$LLVM_CONFIG --libdir`
1852         DEFINES="${DEFINES} -DHAVE_LLVM=`echo $LLVM_VERSION | sed -e 's/\([[0-9]]\)\.\([[0-9]]\)/0x0\10\2/g'`"
1853         MESA_LLVM=1
1854
1855         dnl Check for Clang interanl headers
1856         if test "x$enable_opencl" = xyes; then
1857             if test "x$CLANG_LIBDIR" = x; then
1858                 CLANG_LIBDIR=${LLVM_LIBDIR}
1859             fi
1860             CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION}
1861             AC_CHECK_FILE("$CLANG_RESOURCE_DIR/include/stddef.h",,
1862                 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.]))
1863         fi
1864     else
1865         MESA_LLVM=0
1866     fi
1867 else
1868     MESA_LLVM=0
1869 fi
1870
1871 dnl Directory for XVMC libs
1872 AC_ARG_WITH([xvmc-libdir],
1873     [AS_HELP_STRING([--with-xvmc-libdir=DIR],
1874         [directory for the XVMC libraries @<:@default=${libdir}@:>@])],
1875     [XVMC_LIB_INSTALL_DIR="$withval"],
1876     [XVMC_LIB_INSTALL_DIR='${libdir}'])
1877 AC_SUBST([XVMC_LIB_INSTALL_DIR])
1878
1879 dnl
1880 dnl Gallium Tests
1881 dnl
1882 if test "x$enable_gallium_tests" = xyes; then
1883     SRC_DIRS="$SRC_DIRS gallium/tests/trivial"
1884     enable_gallium_loader=yes
1885 fi
1886
1887 dnl Directory for VDPAU libs
1888 AC_ARG_WITH([vdpau-libdir],
1889     [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1890         [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1891     [VDPAU_LIB_INSTALL_DIR="$withval"],
1892     [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1893 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
1894
1895 dnl Directory for VA libs
1896 AC_ARG_WITH([va-libdir],
1897     [AS_HELP_STRING([--with-va-libdir=DIR],
1898         [directory for the VA libraries @<:@default=${libdir}/va@:>@])],
1899     [VA_LIB_INSTALL_DIR="$withval"],
1900     [VA_LIB_INSTALL_DIR='${libdir}/va'])
1901 AC_SUBST([VA_LIB_INSTALL_DIR])
1902
1903 dnl Directory for OpenCL libs
1904 AC_ARG_WITH([opencl-libdir],
1905     [AS_HELP_STRING([--with-opencl-libdir=DIR],
1906         [directory for the OpenCL libraries @<:@default=${libdir}/opencl@:>@])],
1907     [OPENCL_LIB_INSTALL_DIR="$withval"],
1908     [OPENCL_LIB_INSTALL_DIR='${libdir}/opencl'])
1909 AC_SUBST([OPENCL_LIB_INSTALL_DIR])
1910
1911 dnl
1912 dnl Gallium helper functions
1913 dnl
1914 gallium_check_st() {
1915     if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes ||
1916          test "x$HAVE_ST_XA" = xyes || test "x$HAVE_ST_XVMC" = xyes ||
1917          test "x$HAVE_ST_VDPAU" = xyes || test "x$HAVE_ST_VA" = xyes; then
1918          if test "x$have_libdrm" != xyes; then
1919             AC_MSG_ERROR([DRI or Xorg DDX requires libdrm >= $LIBDRM_REQUIRED])
1920          fi
1921          GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1922     fi
1923     if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1924          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1925     fi
1926     if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
1927          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1928     fi
1929     if test "x$HAVE_ST_XA" = xyes && test "x$4" != x; then
1930          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
1931     fi
1932     if test "x$HAVE_ST_XVMC" = xyes && test "x$5" != x; then
1933          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5"
1934     fi
1935     if test "x$HAVE_ST_VDPAU" = xyes && test "x$6" != x; then
1936          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6"
1937     fi
1938     if test "x$HAVE_ST_VA" = xyes && test "x$7" != x; then
1939          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $7"
1940     fi
1941 }
1942
1943 gallium_require_llvm() {
1944     if test "x$MESA_LLVM" = x0; then
1945         case "$host_cpu" in
1946         i*86|x86_64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1947         esac
1948     fi
1949 }
1950
1951 gallium_require_drm_loader() {
1952     if test "x$enable_gallium_loader" = xyes; then
1953         PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1954                           AC_MSG_ERROR([Gallium drm loader requrires libudev]))
1955         if test "x$have_libdrm" != xyes; then
1956             AC_MSG_ERROR([Gallium drm loader requires libdrm >= $LIBDRM_REQUIRED])
1957         fi
1958         enable_gallium_drm_loader=yes
1959     fi
1960 }
1961
1962 dnl Gallium drivers
1963 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
1964 if test "x$with_gallium_drivers" != x; then
1965     gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1966     for driver in $gallium_drivers; do
1967         case "x$driver" in
1968         xsvga)
1969             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
1970             gallium_check_st "svga/drm" "dri-vmwgfx" "" "xa-vmwgfx"
1971             ;;
1972         xi915)
1973             PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1974             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe"
1975             if test "x$MESA_LLVM" = x1; then
1976                 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1977             fi
1978             GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1979             gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1980             ;;
1981         xr300)
1982             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1983             gallium_require_llvm "Gallium R300"
1984             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1985             gallium_check_st "radeon/drm" "dri-r300" "xorg-r300" "" "xvmc-r300" "vdpau-r300" "va-r300"
1986             ;;
1987         xr600)
1988             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1989             gallium_require_drm_loader
1990             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1991             if test "x$enable_r600_llvm" = xyes -o "x$enable_opencl" = xyes; then
1992                 if test "x$LLVM_VERSION" != "x3.1"; then
1993                     AC_MSG_ERROR([LLVM 3.1 is required for the r600 llvm compiler.])
1994                 fi
1995                 NEED_RADEON_GALLIUM=yes;
1996             fi
1997             if test "x$enable_r600_llvm" = xyes; then
1998                 USE_R600_LLVM_COMPILER=yes;
1999             fi
2000             if test "x$enable_opencl" = xyes -a "x$with_llvm_shared_libs" = xno; then
2001                 LLVM_LIBS="${LLVM_LIBS} `$LLVM_CONFIG --libs bitreader asmparser`"
2002             fi
2003             gallium_check_st "radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600" "va-r600"
2004             ;;
2005         xradeonsi)
2006             PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
2007             gallium_require_drm_loader
2008             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS radeonsi"
2009             if test "x$LLVM_VERSION" != "x3.1"; then
2010                 AC_MSG_ERROR([LLVM 3.1 is required to build the radeonsi driver.])
2011             fi
2012             NEED_RADEON_GALLIUM=yes;
2013             gallium_check_st "radeon/drm" "dri-radeonsi" "xorg-radeonsi" "" "" "vdpau-radeonsi" ""
2014             ;;
2015         xnouveau)
2016             PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
2017             gallium_require_drm_loader
2018             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nv30 nv50 nvc0"
2019             gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau" "" "xvmc-nouveau" "vdpau-nouveau"
2020             ;;
2021         xswrast)
2022             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe"
2023             if test "x$MESA_LLVM" = x1; then
2024                 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
2025             fi
2026
2027             if test "x$HAVE_ST_DRI" = xyes; then
2028                 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
2029             fi
2030             if test "x$HAVE_ST_VDPAU" = xyes; then
2031                 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS vdpau-softpipe"
2032             fi
2033             if test "x$HAVE_ST_XVMC" = xyes; then
2034                 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS xvmc-softpipe"
2035             fi
2036             if test "x$HAVE_ST_VA" = xyes; then
2037                 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS va-softpipe"
2038             fi
2039             if test "x$HAVE_ST_VDPAU" = xyes ||
2040                test "x$HAVE_ST_XVMC" = xyes ||
2041                test "x$HAVE_ST_VA" = xyes; then
2042                if test "x$HAVE_WINSYS_XLIB" != xyes; then
2043                   GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
2044                fi
2045             fi
2046             ;;
2047         *)
2048             AC_MSG_ERROR([Unknown Gallium driver: $driver])
2049             ;;
2050         esac
2051     done
2052 fi
2053
2054 if test "x$enable_gallium_loader" = xyes; then
2055     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
2056     GALLIUM_PIPE_LOADER_DEFINES="-DHAVE_PIPE_LOADER_SW"
2057     GALLIUM_PIPE_LOADER_LIBS="\$(TOP)/src/gallium/auxiliary/pipe-loader/libpipe_loader.a"
2058     GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS \$(TOP)/src/gallium/winsys/sw/null/libws_null.a"
2059
2060     if test "x$HAVE_WINSYS_XLIB" = xyes; then
2061         GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_XLIB"
2062         GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS \$(TOP)/src/gallium/winsys/sw/xlib/libws_xlib.a"
2063     fi
2064
2065     if test "x$enable_gallium_drm_loader" = xyes; then
2066         GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRM"
2067         PKG_CHECK_MODULES([GALLIUM_PIPE_LOADER_XCB], [xcb xcb-dri2],
2068                           pipe_loader_have_xcb=yes, pipe_loader_have_xcb=no)
2069         if test "x$pipe_loader_have_xcb" = xyes; then
2070             GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DPIPE_LOADER_HAVE_XCB"
2071             GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS $GALLIUM_PIPE_LOADER_XCB_LIBS $LIBDRM_LIBS"
2072         fi
2073     fi
2074
2075     AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
2076     AC_SUBST([GALLIUM_PIPE_LOADER_LIBS])
2077 fi
2078
2079 dnl Tell Automake which drivers to build
2080 for driver in $GALLIUM_DRIVERS_DIRS; do
2081     case "x$driver" in
2082         xgalahad)
2083             HAVE_GALAHAD_GALLIUM=yes;
2084             ;;
2085         xidentity)
2086             HAVE_IDENTITY_GALLIUM=yes;
2087             ;;
2088         xnoop)
2089             HAVE_NOOP_GALLIUM=yes;
2090             ;;
2091         *)
2092             GALLIUM_MAKE_DIRS="$GALLIUM_MAKE_DIRS $driver"
2093             ;;
2094     esac
2095 done
2096
2097 AM_CONDITIONAL(HAVE_GALAHAD_GALLIUM, test x$HAVE_GALAHAD_GALLIUM = xyes)
2098 AM_CONDITIONAL(HAVE_IDENTITY_GALLIUM, test x$HAVE_IDENTITY_GALLIUM = xyes)
2099 AM_CONDITIONAL(HAVE_NOOP_GALLIUM, test x$HAVE_NOOP_GALLIUM = xyes)
2100 AM_CONDITIONAL(NEED_RADEON_GALLIUM, test x$NEED_RADEON_GALLIUM = xyes)
2101 AM_CONDITIONAL(USE_R600_LLVM_COMPILER, test x$USE_R600_LLVM_COMPILER = xyes)
2102 AM_CONDITIONAL(HAVE_LOADER_GALLIUM, test x$enable_gallium_loader = xyes)
2103 AM_CONDITIONAL(HAVE_DRM_LOADER_GALLIUM, test x$enable_gallium_drm_loader = xyes)
2104 AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
2105 AC_SUBST([GALLIUM_MAKE_DIRS])
2106
2107 AM_CONDITIONAL(HAVE_X11_DRIVER, echo "$DRIVER_DIRS" | grep 'x11' >/dev/null 2>&1)
2108 AM_CONDITIONAL(HAVE_DRI_DRIVER, echo "$DRIVER_DIRS" | grep 'dri' >/dev/null 2>&1)
2109
2110 AM_CONDITIONAL(HAVE_X86_ASM, echo "$DEFINES" | grep 'X86_ASM' >/dev/null 2>&1)
2111 AM_CONDITIONAL(HAVE_X86_64_ASM, echo "$DEFINES" | grep 'X86_64_ASM' >/dev/null 2>&1)
2112 AM_CONDITIONAL(HAVE_SPARC_ASM, echo "$DEFINES" | grep 'SPARC_ASM' >/dev/null 2>&1)
2113
2114 dnl prepend CORE_DIRS to SRC_DIRS
2115 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
2116
2117 dnl Restore LDFLAGS and CPPFLAGS
2118 LDFLAGS="$_SAVE_LDFLAGS"
2119 CPPFLAGS="$_SAVE_CPPFLAGS"
2120
2121 dnl Add user CFLAGS and CXXFLAGS
2122 CFLAGS="$CFLAGS $USER_CFLAGS"
2123 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
2124
2125 dnl Substitute the config
2126 AC_CONFIG_FILES([configs/current
2127                 Makefile
2128                 src/Makefile
2129                 src/gallium/Makefile
2130                 src/gallium/auxiliary/pipe-loader/Makefile
2131                 src/gallium/state_trackers/clover/Makefile
2132                 src/gallium/drivers/Makefile
2133                 src/gallium/drivers/r300/Makefile
2134                 src/gallium/drivers/r600/Makefile
2135                 src/gallium/targets/opencl/Makefile
2136                 src/gbm/Makefile
2137                 src/gbm/main/gbm.pc
2138                 src/egl/drivers/Makefile
2139                 src/egl/drivers/dri2/Makefile
2140                 src/egl/drivers/glx/Makefile
2141                 src/egl/Makefile
2142                 src/egl/main/Makefile
2143                 src/egl/main/egl.pc
2144                 src/egl/wayland/Makefile
2145                 src/egl/wayland/wayland-egl/Makefile
2146                 src/egl/wayland/wayland-egl/wayland-egl.pc
2147                 src/egl/wayland/wayland-drm/Makefile
2148                 src/glsl/Makefile
2149                 src/glsl/glcpp/Makefile
2150                 src/glsl/tests/Makefile
2151                 src/glx/Makefile
2152                 src/glx/tests/Makefile
2153                 src/mapi/glapi/Makefile
2154                 src/mapi/glapi/gen/Makefile
2155                 src/mapi/shared-glapi/Makefile
2156                 src/mapi/glapi/tests/Makefile
2157                 src/mapi/shared-glapi/tests/Makefile
2158                 src/gtest/Makefile
2159                 src/mesa/Makefile
2160                 src/mesa/libdricore/Makefile
2161                 src/mesa/main/tests/Makefile
2162                 src/mesa/x86/Makefile
2163                 src/mesa/x86-64/Makefile
2164                 src/mesa/drivers/Makefile
2165                 src/mesa/drivers/dri/dri.pc
2166                 src/mesa/drivers/dri/Makefile
2167                 src/mesa/drivers/dri/common/Makefile
2168                 src/mesa/drivers/dri/i915/Makefile
2169                 src/mesa/drivers/dri/i965/Makefile
2170                 src/mesa/drivers/dri/nouveau/Makefile
2171                 src/mesa/drivers/dri/r200/Makefile
2172                 src/mesa/drivers/dri/radeon/Makefile
2173                 src/mesa/drivers/dri/swrast/Makefile
2174                 src/mesa/drivers/osmesa/Makefile
2175                 src/mesa/drivers/x11/Makefile
2176                 src/mesa/gl.pc
2177                 src/mesa/drivers/osmesa/osmesa.pc])
2178
2179 dnl Sort the dirs alphabetically
2180 GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2181 GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2182 GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2183 GALLIUM_MAKE_DIRS=`echo $GALLIUM_MAKE_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2184 GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2185
2186 AC_OUTPUT
2187
2188 dnl
2189 dnl Output some configuration info for the user
2190 dnl
2191 echo ""
2192 echo "        prefix:          $prefix"
2193 echo "        exec_prefix:     $exec_prefix"
2194 echo "        libdir:          $libdir"
2195 echo "        includedir:      $includedir"
2196
2197 dnl API info
2198 echo ""
2199 echo "        OpenGL:          $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
2200 echo "        OpenVG:          $enable_openvg"
2201
2202 dnl Driver info
2203 echo ""
2204 if test "x$enable_osmesa" != xno; then
2205         echo "        OSMesa:          lib$OSMESA_LIB"
2206 else
2207         echo "        OSMesa:          no"
2208 fi
2209
2210 if test "x$enable_dri" != xno; then
2211         # cleanup the drivers var
2212         dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/  */ /;s/ *$//'`
2213         if test "x$DRI_DIRS" = x; then
2214             echo "        DRI drivers:     no"
2215         else
2216             echo "        DRI drivers:     $dri_dirs"
2217         fi
2218         echo "        DRI driver dir:  $DRI_DRIVER_INSTALL_DIR"
2219 fi
2220
2221 case "x$enable_glx$enable_xlib_glx" in
2222 xyesyes)
2223     echo "        GLX:             Xlib-based"
2224     ;;
2225 xyesno)
2226     echo "        GLX:             DRI-based"
2227     ;;
2228 *)
2229     echo "        GLX:             $enable_glx"
2230     ;;
2231 esac
2232
2233 echo ""
2234 echo "        GLU:             $enable_glu"
2235
2236 dnl EGL
2237 echo ""
2238 echo "        EGL:             $enable_egl"
2239 if test "$enable_egl" = yes; then
2240     echo "        EGL platforms:   $EGL_PLATFORMS"
2241
2242     egl_drivers=""
2243     if test "x$HAVE_EGL_DRIVER_GLX" != "x"; then
2244         egl_drivers="$egl_drivers builtin:egl_glx"
2245     fi
2246     if test "x$HAVE_EGL_DRIVER_DRI2" != "x"; then
2247         egl_drivers="$egl_drivers builtin:egl_dri2"
2248     fi
2249
2250     if test "x$HAVE_ST_EGL" = xyes; then
2251         echo "        EGL drivers:    ${egl_drivers} egl_gallium"
2252         echo "        EGL Gallium STs:$EGL_CLIENT_APIS"
2253     else
2254         echo "        EGL drivers:    $egl_drivers"
2255     fi
2256 fi
2257
2258 echo ""
2259 if test "x$MESA_LLVM" = x1; then
2260     echo "        llvm:            yes"
2261     echo "        llvm-config:     $LLVM_CONFIG"
2262     echo "        llvm-version:    $LLVM_VERSION"
2263 else
2264     echo "        llvm:            no"
2265 fi
2266
2267 echo ""
2268 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
2269     echo "        Gallium:         yes"
2270     echo "        Gallium dirs:    $GALLIUM_DIRS"
2271     echo "        Target dirs:     $GALLIUM_TARGET_DIRS"
2272     echo "        Winsys dirs:     $GALLIUM_WINSYS_DIRS"
2273     echo "        Driver dirs:     $GALLIUM_DRIVERS_DIRS"
2274     echo "        Trackers dirs:   $GALLIUM_STATE_TRACKERS_DIRS"
2275 else
2276     echo "        Gallium:         no"
2277 fi
2278
2279
2280 dnl Libraries
2281 echo ""
2282 echo "        Shared libs:     $enable_shared"
2283 echo "        Static libs:     $enable_static"
2284
2285 dnl Compiler options
2286 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2287 cflags=`echo $CFLAGS $PIC_FLAGS | \
2288     $SED 's/^ *//;s/  */ /;s/ *$//'`
2289 cxxflags=`echo $CXXFLAGS $PIC_FLAGS | \
2290     $SED 's/^ *//;s/  */ /;s/ *$//'`
2291 defines=`echo $DEFINES | $SED 's/^ *//;s/  */ /;s/ *$//'`
2292 echo ""
2293 echo "        CFLAGS:          $cflags"
2294 echo "        CXXFLAGS:        $cxxflags"
2295 echo "        Macros:          $defines"
2296 echo ""
2297 echo "        PYTHON2:         $PYTHON2"
2298
2299 echo ""
2300 echo "        Run '${MAKE-make}' to build Mesa"
2301 echo ""