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