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