OSDN Git Service

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