OSDN Git Service

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