automake: src/gbm
[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 [CLANG=yes], [CLANG=no])
101
102 AC_MSG_RESULT([$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$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 -Wmissing-prototypes -std=c99"
180
181     # Enable -fvisibility=hidden if using a gcc that supports it
182     save_CFLAGS="$CFLAGS"
183     AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
184     VISIBILITY_CFLAGS="-fvisibility=hidden"
185     CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
186     AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
187                    [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
188
189     # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
190     CFLAGS=$save_CFLAGS
191
192     # Work around aliasing bugs - developers should comment this out
193     CFLAGS="$CFLAGS -fno-strict-aliasing"
194
195     # gcc's builtin memcmp is slower than glibc's
196     # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
197     CFLAGS="$CFLAGS -fno-builtin-memcmp"
198 fi
199 if test "x$GXX" = xyes; then
200     CXXFLAGS="$CXXFLAGS -Wall"
201
202     # Enable -fvisibility=hidden if using a gcc that supports it
203     save_CXXFLAGS="$CXXFLAGS"
204     AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
205     VISIBILITY_CXXFLAGS="-fvisibility=hidden"
206     CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
207     AC_LANG_PUSH([C++])
208     AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
209                    [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
210     AC_LANG_POP([C++])
211
212     # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
213     CXXFLAGS=$save_CXXFLAGS
214
215     # Work around aliasing bugs - developers should comment this out
216     CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
217
218     # gcc's builtin memcmp is slower than glibc's
219     # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
220     CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp"
221 fi
222
223 dnl even if the compiler appears to support it, using visibility attributes isn't
224 dnl going to do anything useful currently on cygwin apart from emit lots of warnings
225 case "$host_os" in
226 cygwin*)
227     VISIBILITY_CFLAGS=""
228     VISIBILITY_CXXFLAGS=""
229     ;;
230 esac
231
232 AC_SUBST([VISIBILITY_CFLAGS])
233 AC_SUBST([VISIBILITY_CXXFLAGS])
234
235 dnl These should be unnecessary, but let the user set them if they want
236 AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
237     Default is to use CFLAGS.])
238 AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
239     compiler. Default is to use CFLAGS.])
240 AC_SUBST([OPT_FLAGS])
241 AC_SUBST([ARCH_FLAGS])
242
243 dnl
244 dnl Hacks to enable 32 or 64 bit build
245 dnl
246 AC_ARG_ENABLE([32-bit],
247     [AS_HELP_STRING([--enable-32-bit],
248         [build 32-bit libraries @<:@default=auto@:>@])],
249     [enable_32bit="$enableval"],
250     [enable_32bit=auto]
251 )
252 if test "x$enable_32bit" = xyes; then
253     if test "x$GCC" = xyes; then
254         CFLAGS="$CFLAGS -m32"
255         ARCH_FLAGS="$ARCH_FLAGS -m32"
256     fi
257     if test "x$GXX" = xyes; then
258         CXXFLAGS="$CXXFLAGS -m32"
259     fi
260 fi
261 AC_ARG_ENABLE([64-bit],
262     [AS_HELP_STRING([--enable-64-bit],
263         [build 64-bit libraries @<:@default=auto@:>@])],
264     [enable_64bit="$enableval"],
265     [enable_64bit=auto]
266 )
267 if test "x$enable_64bit" = xyes; then
268     if test "x$GCC" = xyes; then
269         CFLAGS="$CFLAGS -m64"
270     fi
271     if test "x$GXX" = xyes; then
272         CXXFLAGS="$CXXFLAGS -m64"
273     fi
274 fi
275
276 dnl
277 dnl shared/static libraries, mimic libtool options
278 dnl
279 AC_ARG_ENABLE([static],
280     [AS_HELP_STRING([--enable-static],
281         [build static libraries @<:@default=disabled@:>@])],
282     [enable_static="$enableval"],
283     [enable_static=no]
284 )
285 case "x$enable_static" in
286 xyes|xno ) ;;
287 x ) enable_static=no ;;
288 * )
289     AC_MSG_ERROR([Static library option '$enable_static' is not a valid])
290     ;;
291 esac
292 AC_ARG_ENABLE([shared],
293     [AS_HELP_STRING([--disable-shared],
294         [build shared libraries @<:@default=enabled@:>@])],
295     [enable_shared="$enableval"],
296     [enable_shared=yes]
297 )
298 case "x$enable_shared" in
299 xyes|xno ) ;;
300 x ) enable_shared=yes ;;
301 * )
302     AC_MSG_ERROR([Shared library option '$enable_shared' is not a valid])
303     ;;
304 esac
305
306 dnl Can't have static and shared libraries, default to static if user
307 dnl explicitly requested. If both disabled, set to static since shared
308 dnl was explicitly requirested.
309 case "x$enable_static$enable_shared" in
310 xyesyes )
311     AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
312     enable_shared=no
313     ;;
314 xnono )
315     AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
316     enable_static=yes
317     ;;
318 esac
319
320 dnl
321 dnl mklib options
322 dnl
323 AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
324 if test "$enable_static" = yes; then
325     MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
326 fi
327 AC_SUBST([MKLIB_OPTIONS])
328
329 dnl
330 dnl other compiler options
331 dnl
332 AC_ARG_ENABLE([debug],
333     [AS_HELP_STRING([--enable-debug],
334         [use debug compiler flags and macros @<:@default=disabled@:>@])],
335     [enable_debug="$enableval"],
336     [enable_debug=no]
337 )
338 if test "x$enable_debug" = xyes; then
339     DEFINES="$DEFINES -DDEBUG"
340     if test "x$GCC" = xyes; then
341         CFLAGS="$CFLAGS -g"
342     fi
343     if test "x$GXX" = xyes; then
344         CXXFLAGS="$CXXFLAGS -g"
345     fi
346 fi
347
348 dnl
349 dnl library names
350 dnl
351 LIB_PREFIX_GLOB='lib'
352 LIB_VERSION_SEPARATOR='.'
353 if test "$enable_static" = yes; then
354     LIB_EXTENSION='a'
355 else
356     case "$host_os" in
357     darwin* )
358         LIB_EXTENSION='dylib' ;;
359     cygwin* )
360         dnl prefix can be 'cyg' or 'lib'
361         LIB_PREFIX_GLOB='???'
362         LIB_VERSION_SEPARATOR='-'
363         LIB_EXTENSION='dll' ;;
364     aix* )
365         LIB_EXTENSION='a' ;;
366     * )
367         LIB_EXTENSION='so' ;;
368     esac
369 fi
370
371 dnl
372 dnl Mangled Mesa support
373 dnl
374 AC_ARG_ENABLE([mangling],
375   [AS_HELP_STRING([--enable-mangling],
376     [enable mangled symbols and library name @<:@default=disabled@:>@])],
377   [enable_mangling="${enableval}"],
378   [enable_mangling=no]
379 )
380 GL_LIB="GL"
381 GLU_LIB="GLU"
382 OSMESA_LIB="OSMesa"
383 if test "x${enable_mangling}" = "xyes" ; then
384   DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
385   GL_LIB="MangledGL"
386   GLU_LIB="MangledGLU"
387   OSMESA_LIB="MangledOSMesa"
388 fi
389 AC_SUBST([GL_LIB])
390 AC_SUBST([GLU_LIB])
391 AC_SUBST([OSMESA_LIB])
392
393 dnl
394 dnl potentially-infringing-but-nobody-knows-for-sure stuff
395 dnl
396 AC_ARG_ENABLE([texture-float],
397     [AS_HELP_STRING([--enable-texture-float],
398         [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
399     [enable_texture_float="$enableval"],
400     [enable_texture_float=no]
401 )
402 if test "x$enable_texture_float" = xyes; then
403     AC_MSG_WARN([Floating-point textures enabled.])
404     AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
405     DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
406 fi
407
408 GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
409 GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
410 OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
411 EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
412 GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
413 GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION}
414 VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION}
415 GLAPI_LIB_NAME='lib$(GLAPI_LIB).'${LIB_EXTENSION}
416 WAYLAND_EGL_LIB_NAME='lib$(WAYLAND_EGL_LIB).'${LIB_EXTENSION}
417
418 GL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
419 GLU_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLU_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
420 OSMESA_LIB_GLOB=${LIB_PREFIX_GLOB}'$(OSMESA_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
421 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
422 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
423 GLESv1_CM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv1_CM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
424 GLESv2_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv2_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
425 VG_LIB_GLOB=${LIB_PREFIX_GLOB}'$(VG_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
426 GLAPI_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLAPI_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
427 WAYLAND_EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(WAYLAND_EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
428
429 AC_SUBST([GL_LIB_NAME])
430 AC_SUBST([GLU_LIB_NAME])
431 AC_SUBST([OSMESA_LIB_NAME])
432 AC_SUBST([EGL_LIB_NAME])
433 AC_SUBST([GLESv1_CM_LIB_NAME])
434 AC_SUBST([GLESv2_LIB_NAME])
435 AC_SUBST([VG_LIB_NAME])
436 AC_SUBST([GLAPI_LIB_NAME])
437 AC_SUBST([WAYLAND_EGL_LIB_NAME])
438
439 AC_SUBST([GL_LIB_GLOB])
440 AC_SUBST([GLU_LIB_GLOB])
441 AC_SUBST([OSMESA_LIB_GLOB])
442 AC_SUBST([EGL_LIB_GLOB])
443 AC_SUBST([GLESv1_CM_LIB_GLOB])
444 AC_SUBST([GLESv2_LIB_GLOB])
445 AC_SUBST([VG_LIB_GLOB])
446 AC_SUBST([GLAPI_LIB_GLOB])
447 AC_SUBST([WAYLAND_EGL_LIB_GLOB])
448
449 dnl
450 dnl Arch/platform-specific settings
451 dnl
452 AC_ARG_ENABLE([asm],
453     [AS_HELP_STRING([--disable-asm],
454         [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
455     [enable_asm="$enableval"],
456     [enable_asm=yes]
457 )
458 asm_arch=""
459 ASM_FLAGS=""
460 MESA_ASM_SOURCES=""
461 GLAPI_ASM_SOURCES=""
462 AC_MSG_CHECKING([whether to enable assembly])
463 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
464 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
465 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
466     case "$host_cpu" in
467     i?86 | x86_64)
468         enable_asm=no
469         AC_MSG_RESULT([no, cross compiling])
470         ;;
471     esac
472 fi
473 # check for supported arches
474 if test "x$enable_asm" = xyes; then
475     case "$host_cpu" in
476     i?86)
477         case "$host_os" in
478         linux* | *freebsd* | dragonfly* | *netbsd*)
479             test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
480             ;;
481         esac
482         ;;
483     x86_64)
484         case "$host_os" in
485         linux* | *freebsd* | dragonfly* | *netbsd*)
486             test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
487             ;;
488         esac
489         ;;
490     powerpc)
491         case "$host_os" in
492         linux*)
493             asm_arch=ppc
494             ;;
495         esac
496         ;;
497     sparc*)
498         case "$host_os" in
499         linux*)
500             asm_arch=sparc
501             ;;
502         esac
503         ;;
504     esac
505
506     case "$asm_arch" in
507     x86)
508         ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
509         MESA_ASM_SOURCES='$(X86_SOURCES)'
510         GLAPI_ASM_SOURCES='$(X86_API)'
511         AC_MSG_RESULT([yes, x86])
512         ;;
513     x86_64)
514         ASM_FLAGS="-DUSE_X86_64_ASM"
515         MESA_ASM_SOURCES='$(X86-64_SOURCES)'
516         GLAPI_ASM_SOURCES='$(X86-64_API)'
517         AC_MSG_RESULT([yes, x86_64])
518         ;;
519     sparc)
520         ASM_FLAGS="-DUSE_SPARC_ASM"
521         MESA_ASM_SOURCES='$(SPARC_SOURCES)'
522         GLAPI_ASM_SOURCES='$(SPARC_API)'
523         AC_MSG_RESULT([yes, sparc])
524         ;;
525     *)
526         AC_MSG_RESULT([no, platform not supported])
527         ;;
528     esac
529 fi
530 AC_SUBST([ASM_FLAGS])
531 AC_SUBST([MESA_ASM_SOURCES])
532 AC_SUBST([GLAPI_ASM_SOURCES])
533
534 dnl PIC code macro
535 MESA_PIC_FLAGS
536
537 dnl Check to see if dlopen is in default libraries (like Solaris, which
538 dnl has it in libc), or if libdl is needed to get it.
539 AC_CHECK_FUNC([dlopen], [],
540     [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
541 AC_SUBST([DLOPEN_LIBS])
542
543 dnl See if posix_memalign is available
544 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
545
546 dnl SELinux awareness.
547 AC_ARG_ENABLE([selinux],
548     [AS_HELP_STRING([--enable-selinux],
549         [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
550     [MESA_SELINUX="$enableval"],
551     [MESA_SELINUX=no])
552 if test "x$enable_selinux" = "xyes"; then
553     AC_CHECK_HEADER([selinux/selinux.h],[],
554                     [AC_MSG_ERROR([SELinux headers not found])])
555     AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
556                  [AC_MSG_ERROR([SELinux library not found])])
557     SELINUX_LIBS="-lselinux"
558     DEFINES="$DEFINES -DMESA_SELINUX"
559 fi
560
561 dnl Options for APIs
562 AC_ARG_ENABLE([opengl],
563     [AS_HELP_STRING([--disable-opengl],
564         [disable support for standard OpenGL API @<:@default=no@:>@])],
565     [enable_opengl="$enableval"],
566     [enable_opengl=yes])
567 AC_ARG_ENABLE([gles1],
568     [AS_HELP_STRING([--enable-gles1],
569         [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
570     [enable_gles1="$enableval"],
571     [enable_gles1=no])
572 AC_ARG_ENABLE([gles2],
573     [AS_HELP_STRING([--enable-gles2],
574         [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
575     [enable_gles2="$enableval"],
576     [enable_gles2=no])
577 AC_ARG_ENABLE([openvg],
578     [AS_HELP_STRING([--enable-openvg],
579         [enable support for OpenVG API @<:@default=no@:>@])],
580     [enable_openvg="$enableval"],
581     [enable_openvg=no])
582
583 AC_ARG_ENABLE([dri],
584     [AS_HELP_STRING([--enable-dri],
585         [enable DRI modules @<:@default=auto@:>@])],
586     [enable_dri="$enableval"],
587     [enable_dri=auto])
588 AC_ARG_ENABLE([glx],
589     [AS_HELP_STRING([--enable-glx],
590         [enable GLX library @<:@default=auto@:>@])],
591     [enable_glx="$enableval"],
592     [enable_glx=auto])
593 AC_ARG_ENABLE([osmesa],
594     [AS_HELP_STRING([--enable-osmesa],
595         [enable OSMesa library @<:@default=auto@:>@])],
596     [enable_osmesa="$enableval"],
597     [enable_osmesa=auto])
598 AC_ARG_ENABLE([egl],
599     [AS_HELP_STRING([--disable-egl],
600         [disable EGL library @<:@default=enabled@:>@])],
601     [enable_egl="$enableval"],
602     [enable_egl=yes])
603
604 AC_ARG_ENABLE([xorg],
605     [AS_HELP_STRING([--enable-xorg],
606         [enable support for X.Org DDX API @<:@default=no@:>@])],
607     [enable_xorg="$enableval"],
608     [enable_xorg=no])
609 AC_ARG_ENABLE([xa],
610     [AS_HELP_STRING([--enable-xa],
611         [enable build of the XA X Acceleration API @<:@default=no@:>@])],
612     [enable_xa="$enableval"],
613     [enable_xa=no])
614 AC_ARG_ENABLE([d3d1x],
615     [AS_HELP_STRING([--enable-d3d1x],
616         [enable support for Direct3D 10 & 11 low-level API @<:@default=no@:>@])],
617     [enable_d3d1x="$enableval"],
618     [enable_d3d1x=no])
619 AC_ARG_ENABLE([gbm],
620    [AS_HELP_STRING([--enable-gbm],
621          [enable gbm library @<:@default=auto@:>@])],
622    [enable_gbm="$enableval"],
623    [enable_gbm=auto])
624
625 AC_ARG_ENABLE([xvmc],
626    [AS_HELP_STRING([--enable-xvmc],
627          [enable xvmc library @<:@default=auto@:>@])],
628    [enable_xvmc="$enableval"],
629    [enable_xvmc=auto])
630 AC_ARG_ENABLE([vdpau],
631    [AS_HELP_STRING([--enable-vdpau],
632          [enable vdpau library @<:@default=auto@:>@])],
633    [enable_vdpau="$enableval"],
634    [enable_vdpau=auto])
635 AC_ARG_ENABLE([va],
636    [AS_HELP_STRING([--enable-va],
637          [enable va library @<:@default=auto@:>@])],
638    [enable_va="$enableval"],
639    [enable_va=auto])
640
641 AC_ARG_ENABLE([xlib_glx],
642     [AS_HELP_STRING([--enable-xlib-glx],
643         [make GLX library Xlib-based instead of DRI-based @<:@default=disable@:>@])],
644     [enable_xlib_glx="$enableval"],
645     [enable_xlib_glx=auto])
646 AC_ARG_ENABLE([gallium_egl],
647     [AS_HELP_STRING([--enable-gallium-egl],
648         [enable optional EGL state tracker (not required
649          for EGL support in Gallium with OpenGL and OpenGL ES)
650          @<:@default=disable@:>@])],
651     [enable_gallium_egl="$enableval"],
652     [enable_gallium_egl=no])
653 AC_ARG_ENABLE([gallium_gbm],
654     [AS_HELP_STRING([--enable-gallium-gbm],
655         [enable optional gbm state tracker (not required for
656          gbm support in Gallium)
657          @<:@default=auto@:>@])],
658     [enable_gallium_gbm="$enableval"],
659     [enable_gallium_gbm=auto])
660
661 # Option for Gallium drivers
662 GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
663
664 AC_ARG_WITH([gallium-drivers],
665     [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
666         [comma delimited Gallium drivers list, e.g.
667         "i915,nouveau,r300,r600,svga,swrast"
668         @<:@default=r300,r600,swrast@:>@])],
669     [with_gallium_drivers="$withval"],
670     [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
671
672 # Doing '--without-gallium-drivers' will set this variable to 'no'.  Clear it
673 # here so that the script doesn't choke on an unknown driver name later.
674 case "$with_gallium_drivers" in
675     yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
676     no) with_gallium_drivers='' ;;
677 esac
678
679 if test "x$enable_opengl" = xno -a \
680         "x$enable_gles1" = xno -a \
681         "x$enable_gles2" = xno -a \
682         "x$enable_openvg" = xno -a \
683         "x$enable_xorg" = xno -a \
684         "x$enable_xa" = xno -a \
685         "x$enable_d3d1x" = xno -a \
686         "x$enable_xvmc" = xno -a \
687         "x$enable_vdpau" = xno -a \
688         "x$enable_va" = xno; then
689     AC_MSG_ERROR([at least one API should be enabled])
690 fi
691
692 API_DEFINES=""
693 if test "x$enable_opengl" = xno; then
694     API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
695 else
696     API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
697 fi
698 if test "x$enable_gles1" = xyes; then
699     API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
700 fi
701 if test "x$enable_gles2" = xyes; then
702     API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
703 fi
704 AC_SUBST([API_DEFINES])
705
706 dnl
707 dnl Driver configuration. Options are xlib, dri and osmesa right now.
708 dnl More later: fbdev, ...
709 dnl
710 default_driver="xlib"
711
712 case "$host_os" in
713 linux*)
714     case "$host_cpu" in
715     i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
716     esac
717     ;;
718 *freebsd* | dragonfly* | *netbsd*)
719     case "$host_cpu" in
720     i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
721     esac
722     ;;
723 esac
724
725 if test "x$enable_opengl" = xno; then
726     default_driver="no"
727 fi
728
729 AC_ARG_WITH([driver],
730     [AS_HELP_STRING([--with-driver=DRIVER], [DEPRECATED])],
731     [mesa_driver="$withval"],
732     [mesa_driver=auto])
733 dnl Check for valid option
734 case "x$mesa_driver" in
735 xxlib|xdri|xosmesa|xno)
736     if test "x$enable_dri" != xauto -o \
737             "x$enable_glx" != xauto -o \
738             "x$enable_osmesa" != xauto -o \
739             "x$enable_xlib_glx" != xauto; then
740         AC_MSG_ERROR([--with-driver=$mesa_driver is deprecated])
741     fi
742     ;;
743 xauto)
744     mesa_driver="$default_driver"
745     ;;
746 *)
747     AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
748     ;;
749 esac
750
751 # map $mesa_driver to APIs
752 if test "x$enable_dri" = xauto; then
753     case "x$mesa_driver" in
754     xdri) enable_dri=yes ;;
755     *)    enable_dri=no ;;
756     esac
757 fi
758
759 if test "x$enable_glx" = xauto; then
760     case "x$mesa_driver" in
761     xdri|xxlib) enable_glx=yes ;;
762     *)          enable_glx=no ;;
763     esac
764 fi
765
766 if test "x$enable_osmesa" = xauto; then
767     case "x$mesa_driver" in
768     xxlib|xosmesa) enable_osmesa=yes ;;
769     *)             enable_osmesa=no ;;
770     esac
771 fi
772
773 if test "x$enable_xlib_glx" = xauto; then
774     case "x$mesa_driver" in
775     xxlib) enable_xlib_glx=yes ;;
776     *)     enable_xlib_glx=no ;;
777     esac
778 fi
779
780 if test "x$enable_glx" = xno; then
781     enable_xlib_glx=no
782 fi
783
784 AM_CONDITIONAL(HAVE_DRI, test x"$enable_dri" = xyes)
785
786 dnl
787 dnl Driver specific build directories
788 dnl
789
790 dnl this variable will be prepended to SRC_DIRS and is not exported
791 CORE_DIRS="mapi/shared-glapi"
792
793 SRC_DIRS=""
794 GLU_DIRS="sgi"
795 GALLIUM_DIRS="auxiliary drivers state_trackers"
796 GALLIUM_TARGET_DIRS=""
797 GALLIUM_WINSYS_DIRS="sw"
798 GALLIUM_DRIVERS_DIRS="galahad trace rbug noop identity"
799 GALLIUM_STATE_TRACKERS_DIRS=""
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
1337 if test "x$enable_osmesa" = xyes; then
1338     # only link libraries with osmesa if shared
1339     if test "$enable_static" = no; then
1340         OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1341     else
1342         OSMESA_LIB_DEPS=""
1343     fi
1344     OSMESA_MESA_DEPS=""
1345     OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1346 fi
1347 AC_SUBST([OSMESA_LIB_DEPS])
1348 AC_SUBST([OSMESA_MESA_DEPS])
1349 AC_SUBST([OSMESA_PC_REQ])
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 fi
1369 GBM_PC_REQ_PRIV="libudev"
1370 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1371 AC_SUBST([GBM_PC_REQ_PRIV])
1372 AC_SUBST([GBM_PC_LIB_PRIV])
1373
1374 dnl
1375 dnl EGL configuration
1376 dnl
1377 EGL_CLIENT_APIS=""
1378
1379 if test "x$enable_egl" = xyes; then
1380     SRC_DIRS="$SRC_DIRS egl"
1381     EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS -lpthread"
1382     EGL_DRIVERS_DIRS=""
1383
1384     AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1385
1386     if test "$enable_static" != yes; then
1387         # build egl_glx when libGL is built
1388         if test "x$enable_glx" = xyes; then
1389             EGL_DRIVERS_DIRS="glx"
1390         fi
1391
1392         PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1393                           [have_libudev=yes],[have_libudev=no])
1394         if test "$have_libudev" = yes; then
1395             DEFINES="$DEFINES -DHAVE_LIBUDEV"
1396         fi
1397         if test "x$enable_dri" = xyes; then
1398             # build egl_dri2 when xcb-dri2 is available
1399             PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes],
1400                           [have_xcb_dri2=yes],[have_xcb_dri2=no])
1401             
1402             if test "$have_xcb_dri2" = yes; then
1403                 EGL_DRIVER_DRI2=dri2
1404                 DEFINES="$DEFINES -DHAVE_XCB_DRI2"
1405                 # workaround a bug in xcb-dri2 generated by xcb-proto 1.6
1406                 AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [],
1407                           [DEFINES="$DEFINES -DXCB_DRI2_CONNECT_DEVICE_NAME_BROKEN"])
1408             fi
1409         fi
1410
1411         EGL_DRIVERS_DIRS="$EGL_DRIVERS_DIRS $EGL_DRIVER_DRI2"
1412     fi
1413 fi
1414 AC_SUBST([EGL_LIB_DEPS])
1415 AC_SUBST([EGL_DRIVERS_DIRS])
1416
1417 dnl
1418 dnl EGL Gallium configuration
1419 dnl
1420 if test "x$enable_gallium_egl" = xyes; then
1421     if test "x$with_gallium_drivers" = x; then
1422         AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
1423     fi
1424     if test "x$enable_egl" = xno; then
1425         AC_MSG_ERROR([cannot enable egl_gallium without EGL])
1426     fi
1427     if test "x$have_libdrm" != xyes; then
1428         AC_MSG_ERROR([egl_gallium requires libdrm >= $LIBDRM_REQUIRED])
1429     fi
1430
1431     GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
1432     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static"
1433     HAVE_ST_EGL="yes"
1434 fi
1435
1436 dnl
1437 dnl gbm Gallium configuration
1438 dnl
1439 if test "x$enable_gallium_gbm" = xauto; then
1440     case "$enable_gbm$HAVE_ST_EGL$enable_dri$with_egl_platforms" in
1441         yesyesyes*drm*)
1442             enable_gallium_gbm=yes ;;
1443          *)
1444             enable_gallium_gbm=no ;;
1445     esac
1446 fi
1447 if test "x$enable_gallium_gbm" = xyes; then
1448     if test "x$with_gallium_drivers" = x; then
1449         AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
1450     fi
1451     if test "x$enable_gbm" = xno; then
1452         AC_MSG_ERROR([cannot enable gbm_gallium without gbm])
1453     fi
1454     # gbm_gallium abuses DRI_LIB_DEPS to link.  Make sure it is set.
1455     if test "x$enable_dri" = xno; then
1456         AC_MSG_ERROR([gbm_gallium requires --enable-dri to build])
1457     fi
1458
1459     GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS"
1460     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm"
1461     HAVE_ST_GBM="yes"
1462 fi
1463
1464 dnl
1465 dnl X.Org DDX configuration
1466 dnl
1467 if test "x$enable_xorg" = xyes; then
1468     PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1469     PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1470     PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1471     PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1472         HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1473         HAVE_XEXTPROTO_71="no")
1474     GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS"
1475     HAVE_ST_XORG=yes
1476 fi
1477
1478 dnl
1479 dnl XA configuration
1480 dnl
1481 if test "x$enable_xa" = xyes; then
1482 AC_PROG_AWK
1483 AC_PROG_GREP
1484 AC_CHECK_PROG(NM, nm, "nm")
1485 if test "x$AWK" = x || test "x$GREP" = x || test "x$NM" = x; then
1486 AC_MSG_WARN([Missing one of nm, grep or awk. Disabling xa.])
1487 enable_xa=no
1488 fi
1489 fi
1490 if test "x$enable_xa" = xyes; then
1491     GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS"
1492     HAVE_ST_XA=yes
1493     AC_SUBST(AWK)
1494     AC_SUBST(GREP)
1495     AC_SUBST(NM)
1496 fi
1497
1498 dnl
1499 dnl OpenVG configuration
1500 dnl
1501 VG_LIB_DEPS=""
1502
1503 if test "x$enable_openvg" = xyes; then
1504     if test "x$enable_egl" = xno; then
1505         AC_MSG_ERROR([cannot enable OpenVG without EGL])
1506     fi
1507     if test "x$with_gallium_drivers" = x; then
1508         AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1509     fi
1510     if test "x$enable_gallium_egl" = xno; then
1511         AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
1512     fi
1513
1514     EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1515     VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS -lpthread"
1516     CORE_DIRS="$CORE_DIRS mapi/vgapi"
1517     GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1518     HAVE_ST_VEGA=yes
1519 fi
1520
1521 dnl
1522 dnl D3D1X configuration
1523 dnl
1524
1525 if test "x$enable_d3d1x" = xyes; then
1526     if test "x$with_gallium_drivers" = x; then
1527         AC_MSG_ERROR([cannot enable D3D1X without Gallium])
1528     fi
1529
1530     GALLIUM_STATE_TRACKERS_DIRS="d3d1x $GALLIUM_STATE_TRACKERS_DIRS"
1531     HAVE_ST_D3D1X=yes
1532 fi
1533
1534 dnl
1535 dnl Gallium G3DVL configuration
1536 dnl
1537 AC_ARG_ENABLE([gallium-g3dvl],
1538     [AS_HELP_STRING([--enable-gallium-g3dvl],
1539         [build gallium g3dvl @<:@default=disabled@:>@])],
1540     [enable_gallium_g3dvl="$enableval"],
1541     [enable_gallium_g3dvl=no])
1542 if test "x$enable_gallium_g3dvl" = xyes; then
1543     if test "x$with_gallium_drivers" = x; then
1544         AC_MSG_ERROR([cannot enable G3DVL without Gallium])
1545     fi
1546
1547     if test "x$enable_xvmc" = xauto; then
1548         PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no])
1549     fi
1550
1551     if test "x$enable_vdpau" = xauto; then
1552         PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no])
1553     fi
1554
1555     if test "x$enable_va" = xauto; then
1556         #don't enable vaapi state tracker even if package exists
1557         #PKG_CHECK_EXISTS([libva], [enable_vdpau=yes], [enable_vdpau=no])
1558         enable_va=no
1559     fi
1560 fi
1561
1562 if test "x$enable_xvmc" = xyes; then
1563     PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6 xorg-server])
1564     GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg/xvmc"
1565     HAVE_ST_XVMC="yes"
1566 fi
1567
1568 if test "x$enable_vdpau" = xyes; then
1569     PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.4.1])
1570     GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau"
1571     HAVE_ST_VDPAU="yes"
1572 fi
1573
1574 if test "x$enable_va" = xyes; then
1575     PKG_CHECK_MODULES([LIBVA], [libva = 0.31.1])
1576     AC_MSG_WARN([vaapi state tracker currently unmaintained])
1577     GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS va"
1578     HAVE_ST_VA="yes"
1579 fi
1580
1581 dnl
1582 dnl GLU configuration
1583 dnl
1584 AC_ARG_ENABLE([glu],
1585     [AS_HELP_STRING([--disable-glu],
1586         [enable OpenGL Utility library @<:@default=enabled@:>@])],
1587     [enable_glu="$enableval"],
1588     [enable_glu=yes])
1589
1590 if test "x$enable_glu" = xyes; then
1591     if test "x$enable_glx" = xno -a "x$enable_osmesa" = xno; then
1592         AC_MSG_NOTICE([Disabling GLU since there is no OpenGL driver])
1593         enable_glu=no
1594     fi
1595 fi
1596
1597 if test "x$enable_glu" = xyes; then
1598     SRC_DIRS="$SRC_DIRS glu"
1599
1600     if test "x$enable_glx" = xno; then
1601         # Link libGLU to libOSMesa instead of libGL
1602         GLU_LIB_DEPS=""
1603         GLU_PC_REQ="osmesa"
1604         if test "$enable_static" = no; then
1605             GLU_MESA_DEPS='-l$(OSMESA_LIB)'
1606         else
1607             GLU_MESA_DEPS=""
1608         fi
1609     else
1610         # If static, empty GLU_LIB_DEPS and add libs for programs to link
1611         GLU_PC_REQ="gl"
1612         GLU_PC_LIB_PRIV="-lm"
1613         if test "$enable_static" = no; then
1614             GLU_LIB_DEPS="-lm"
1615             GLU_MESA_DEPS='-l$(GL_LIB)'
1616         else
1617             GLU_LIB_DEPS=""
1618             GLU_MESA_DEPS=""
1619         fi
1620     fi
1621 fi
1622 if test "$enable_static" = no; then
1623     GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
1624 fi
1625 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
1626 AC_SUBST([GLU_LIB_DEPS])
1627 AC_SUBST([GLU_MESA_DEPS])
1628 AC_SUBST([GLU_PC_REQ])
1629 AC_SUBST([GLU_PC_REQ_PRIV])
1630 AC_SUBST([GLU_PC_LIB_PRIV])
1631 AC_SUBST([GLU_PC_CFLAGS])
1632
1633 AC_SUBST([PROGRAM_DIRS])
1634
1635 dnl
1636 dnl Gallium configuration
1637 dnl
1638 if test "x$with_gallium_drivers" != x; then
1639     SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
1640 fi
1641
1642 AC_SUBST([LLVM_CFLAGS])
1643 AC_SUBST([LLVM_LIBS])
1644 AC_SUBST([LLVM_LDFLAGS])
1645 AC_SUBST([LLVM_VERSION])
1646
1647 case "x$enable_opengl$enable_gles1$enable_gles2" in
1648 x*yes*)
1649     EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1650     ;;
1651 esac
1652
1653 AC_SUBST([VG_LIB_DEPS])
1654 AC_SUBST([EGL_CLIENT_APIS])
1655
1656 AC_ARG_WITH([egl-platforms],
1657     [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1658         [comma delimited native platforms libEGL supports, e.g.
1659         "x11,drm" @<:@default=auto@:>@])],
1660     [with_egl_platforms="$withval"],
1661     [with_egl_platforms=yes])
1662
1663 EGL_PLATFORMS=""
1664 WAYLAND_EGL_LIB_DEPS=""
1665
1666 case "$with_egl_platforms" in
1667 yes)
1668     if test "x$enable_egl" = xyes; then
1669         EGL_PLATFORMS="x11"
1670     fi
1671     ;;
1672 *)
1673     if test "x$enable_egl" != xyes; then
1674         AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1675     fi
1676     # verify the requested driver directories exist
1677     egl_platforms=`IFS=', '; echo $with_egl_platforms`
1678     for plat in $egl_platforms; do
1679         test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \
1680             AC_MSG_ERROR([EGL platform '$plat' doesn't exist])
1681         if test "$plat" = "fbdev"; then
1682                 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev"
1683         fi
1684         if test "$plat" = "null"; then
1685                 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
1686         fi
1687         if test "$plat" = "wayland"; then
1688                 PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-server],, \
1689                                   [AC_MSG_ERROR([cannot find libwayland-client])])
1690                 WAYLAND_EGL_LIB_DEPS="$WAYLAND_LIBS $LIBDRM_LIBS"
1691                 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
1692         fi
1693         if test "$plat" = "drm" && test "x$enable_gbm" = "xno"; then
1694                 AC_MSG_ERROR([EGL platform drm needs gbm])
1695         fi
1696         case "$plat$have_libudev" in
1697                 waylandno|drmno)
1698                     AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;;
1699         esac
1700     done
1701     EGL_PLATFORMS="$egl_platforms"
1702     ;;
1703 esac
1704 AC_SUBST([EGL_PLATFORMS])
1705
1706 AC_SUBST([WAYLAND_EGL_LIB_DEPS])
1707 WAYLAND_EGL_PC_REQ_PRIV="wayland-client libdrm"
1708 WAYLAND_EGL_PC_LIB_PRIV=
1709 WAYLAND_EGL_PC_CFLAGS=
1710
1711 AC_SUBST([WAYLAND_EGL_PC_REQ_PRIV])
1712 AC_SUBST([WAYLAND_EGL_PC_LIB_PRIV])
1713 AC_SUBST([WAYLAND_EGL_PC_CFLAGS])
1714
1715
1716 AC_ARG_WITH([egl-driver-dir],
1717     [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1718                     [directory for EGL drivers [[default=${libdir}/egl]]])],
1719     [EGL_DRIVER_INSTALL_DIR="$withval"],
1720     [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1721 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1722
1723 AC_ARG_WITH([xorg-driver-dir],
1724     [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1725                     [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1726     [XORG_DRIVER_INSTALL_DIR="$withval"],
1727     [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1728 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1729
1730 AC_ARG_WITH([max-width],
1731     [AS_HELP_STRING([--with-max-width=N],
1732                     [Maximum framebuffer width (4096)])],
1733     [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1734      AS_IF([test "${withval}" -gt "4096"],
1735            [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1736 )
1737 AC_ARG_WITH([max-height],
1738     [AS_HELP_STRING([--with-max-height=N],
1739                     [Maximum framebuffer height (4096)])],
1740     [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1741      AS_IF([test "${withval}" -gt "4096"],
1742            [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1743 )
1744
1745 dnl
1746 dnl Gallium LLVM
1747 dnl
1748 AC_ARG_ENABLE([gallium-llvm],
1749     [AS_HELP_STRING([--enable-gallium-llvm],
1750         [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1751     [enable_gallium_llvm="$enableval"],
1752     [enable_gallium_llvm=auto])
1753 if test "x$with_gallium_drivers" = x; then
1754     enable_gallium_llvm=no
1755 fi
1756 if test "x$enable_gallium_llvm" = xauto; then
1757     case "$host_cpu" in
1758     i*86|x86_64) enable_gallium_llvm=yes;;
1759     esac
1760 fi
1761 if test "x$enable_gallium_llvm" = xyes; then
1762     AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1763
1764     if test "x$LLVM_CONFIG" != xno; then
1765         LLVM_VERSION=`$LLVM_CONFIG --version | sed 's/svn.*//g'`
1766         LLVM_CFLAGS=`$LLVM_CONFIG --cppflags|sed -e 's/-DNDEBUG\>//g' -e 's/-pedantic//g'`
1767         LLVM_LIBS="`$LLVM_CONFIG --libs`"
1768
1769         LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1770         DEFINES="$DEFINES -D__STDC_CONSTANT_MACROS"
1771         MESA_LLVM=1
1772     else
1773         MESA_LLVM=0
1774     fi
1775 else
1776     MESA_LLVM=0
1777 fi
1778
1779 dnl Directory for VDPAU libs
1780 AC_ARG_WITH([vdpau-libdir],
1781     [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1782         [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1783     [VDPAU_LIB_INSTALL_DIR="$withval"],
1784     [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1785 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
1786
1787 dnl Directory for VA libs
1788 AC_ARG_WITH([va-libdir],
1789     [AS_HELP_STRING([--with-va-libdir=DIR],
1790         [directory for the VA libraries @<:@default=${libdir}/va@:>@])],
1791     [VA_LIB_INSTALL_DIR="$withval"],
1792     [VA_LIB_INSTALL_DIR='${libdir}/va'])
1793 AC_SUBST([VA_LIB_INSTALL_DIR])
1794
1795 dnl
1796 dnl Gallium helper functions
1797 dnl
1798 gallium_check_st() {
1799     if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes ||
1800          test "x$HAVE_ST_XA" = xyes || test "x$HAVE_ST_XVMC" = xyes ||
1801          test "x$HAVE_ST_VDPAU" = xyes || test "x$HAVE_ST_VA" = xyes; then
1802          if test "x$have_libdrm" != xyes; then
1803             AC_MSG_ERROR([DRI or Xorg DDX requires libdrm >= $LIBDRM_REQUIRED])
1804          fi
1805          GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1806     fi
1807     if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1808          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1809     fi
1810     if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
1811          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1812     fi
1813     if test "x$HAVE_ST_XA" = xyes && test "x$4" != x; then
1814          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
1815     fi
1816     if test "x$HAVE_ST_XVMC" = xyes && test "x$5" != x; then
1817          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5"
1818          NEED_G3DVL_DRI="yes"
1819     fi
1820     if test "x$HAVE_ST_VDPAU" = xyes && test "x$6" != x; then
1821          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6"
1822          NEED_G3DVL_DRI="yes"
1823     fi
1824     if test "x$HAVE_ST_VA" = xyes && test "x$7" != x; then
1825          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $7"
1826          NEED_G3DVL_DRI="yes"
1827     fi
1828 }
1829
1830 gallium_require_llvm() {
1831     if test "x$MESA_LLVM" = x0; then
1832         case "$host_cpu" in
1833         i*86|x86_64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1834         esac
1835     fi
1836 }
1837
1838 dnl Gallium drivers
1839 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
1840 if test "x$with_gallium_drivers" != x; then
1841     gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1842     for driver in $gallium_drivers; do
1843         case "x$driver" in
1844         xsvga)
1845             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
1846             gallium_check_st "svga/drm" "dri-vmwgfx" "" "xa-vmwgfx"
1847             ;;
1848         xi915)
1849             PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1850             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe"
1851             if test "x$MESA_LLVM" = x1; then
1852                 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1853             fi
1854             GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1855             gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1856             ;;
1857         xr300)
1858             gallium_require_llvm "Gallium R300"
1859             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1860             gallium_check_st "radeon/drm" "dri-r300" "xorg-r300" "" "xvmc-r300" "vdpau-r300" "va-r300"
1861             ;;
1862         xr600)
1863             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1864             gallium_check_st "radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600" "va-r600"
1865             ;;
1866         xnouveau)
1867             PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1868             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50 nvc0"
1869             gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau" "" "xvmc-nouveau" "vdpau-nouveau"
1870             ;;
1871         xswrast)
1872             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe"
1873             if test "x$MESA_LLVM" = x1; then
1874                 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1875             fi
1876
1877             if test "x$HAVE_ST_DRI" = xyes; then
1878                 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1879             fi
1880             if test "x$HAVE_ST_VDPAU" = xyes; then
1881                 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS vdpau-softpipe"
1882             fi
1883             if test "x$HAVE_ST_XVMC" = xyes; then
1884                 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS xvmc-softpipe"
1885             fi
1886             if test "x$HAVE_ST_VA" = xyes; then
1887                 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS va-softpipe"
1888             fi
1889             if test "x$HAVE_ST_VDPAU" = xyes ||
1890                test "x$HAVE_ST_XVMC" = xyes ||
1891                test "x$HAVE_ST_VA" = xyes; then
1892                if test "x$HAVE_WINSYS_XLIB" != xyes; then
1893                   GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
1894                fi
1895             fi
1896             ;;
1897         *)
1898             AC_MSG_ERROR([Unknown Gallium driver: $driver])
1899             ;;
1900         esac
1901     done
1902 fi
1903
1904 if test "x$NEED_G3DVL_DRI" = xyes; then
1905     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS g3dvl/dri"
1906 fi
1907
1908 dnl prepend CORE_DIRS to SRC_DIRS
1909 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
1910
1911 dnl Restore LDFLAGS and CPPFLAGS
1912 LDFLAGS="$_SAVE_LDFLAGS"
1913 CPPFLAGS="$_SAVE_CPPFLAGS"
1914
1915 dnl Add user CFLAGS and CXXFLAGS
1916 CFLAGS="$CFLAGS $USER_CFLAGS"
1917 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
1918
1919 dnl Substitute the config
1920 AC_CONFIG_FILES([configs/autoconf
1921                 src/gbm/Makefile
1922                 src/gbm/main/gbm.pc
1923                 src/mesa/drivers/dri/dri.pc
1924                 src/mesa/drivers/dri/Makefile
1925                 src/mesa/drivers/dri/i915/Makefile
1926                 src/mesa/drivers/dri/i965/Makefile
1927                 src/mesa/drivers/dri/nouveau/Makefile
1928                 src/mesa/drivers/dri/r200/Makefile
1929                 src/mesa/drivers/dri/radeon/Makefile
1930                 src/mesa/drivers/dri/swrast/Makefile
1931                 tests/Makefile
1932                 tests/glx/Makefile])
1933
1934 dnl Replace the configs/current symlink
1935 AC_CONFIG_COMMANDS([configs],[
1936 if test -f configs/current || test -L configs/current; then
1937     rm -f configs/current
1938 fi
1939 ln -s autoconf configs/current
1940 ])
1941
1942 dnl Sort the dirs alphabetically
1943 GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1944 GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1945 GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1946 GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1947
1948 AC_OUTPUT
1949
1950 dnl
1951 dnl Output some configuration info for the user
1952 dnl
1953 echo ""
1954 echo "        prefix:          $prefix"
1955 echo "        exec_prefix:     $exec_prefix"
1956 echo "        libdir:          $libdir"
1957 echo "        includedir:      $includedir"
1958
1959 dnl API info
1960 echo ""
1961 echo "        OpenGL:          $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
1962 echo "        OpenVG:          $enable_openvg"
1963
1964 dnl Driver info
1965 echo ""
1966 if test "x$enable_osmesa" != xno; then
1967         echo "        OSMesa:          lib$OSMESA_LIB"
1968 else
1969         echo "        OSMesa:          no"
1970 fi
1971
1972 if test "x$enable_dri" != xno; then
1973         # cleanup the drivers var
1974         dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/  */ /;s/ *$//'`
1975         if test "x$DRI_DIRS" = x; then
1976             echo "        DRI drivers:     no"
1977         else
1978             echo "        DRI drivers:     $dri_dirs"
1979         fi
1980         echo "        DRI driver dir:  $DRI_DRIVER_INSTALL_DIR"
1981 fi
1982
1983 case "x$enable_glx$enable_xlib_glx" in
1984 xyesyes)
1985     echo "        GLX:             Xlib-based"
1986     ;;
1987 xyesno)
1988     echo "        GLX:             DRI-based"
1989     ;;
1990 *)
1991     echo "        GLX:             $enable_glx"
1992     ;;
1993 esac
1994
1995 echo ""
1996 echo "        GLU:             $enable_glu"
1997
1998 dnl EGL
1999 echo ""
2000 echo "        EGL:             $enable_egl"
2001 if test "$enable_egl" = yes; then
2002     echo "        EGL platforms:   $EGL_PLATFORMS"
2003
2004     egl_drivers=""
2005     for d in $EGL_DRIVERS_DIRS; do
2006         egl_drivers="$egl_drivers builtin:egl_$d"
2007     done
2008
2009     if test "x$HAVE_ST_EGL" = xyes; then
2010         echo "        EGL drivers:    ${egl_drivers} egl_gallium"
2011         echo "        EGL Gallium STs:$EGL_CLIENT_APIS"
2012     else
2013         echo "        EGL drivers:    $egl_drivers"
2014     fi
2015 fi
2016
2017 echo ""
2018 if test "x$MESA_LLVM" = x1; then
2019     echo "        llvm:            yes"
2020     echo "        llvm-config:     $LLVM_CONFIG"
2021     echo "        llvm-version:    $LLVM_VERSION"
2022 else
2023     echo "        llvm:            no"
2024 fi
2025
2026 echo ""
2027 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
2028     echo "        Gallium:         yes"
2029     echo "        Gallium dirs:    $GALLIUM_DIRS"
2030     echo "        Target dirs:     $GALLIUM_TARGET_DIRS"
2031     echo "        Winsys dirs:     $GALLIUM_WINSYS_DIRS"
2032     echo "        Driver dirs:     $GALLIUM_DRIVERS_DIRS"
2033     echo "        Trackers dirs:   $GALLIUM_STATE_TRACKERS_DIRS"
2034 else
2035     echo "        Gallium:         no"
2036 fi
2037
2038
2039 dnl Libraries
2040 echo ""
2041 echo "        Shared libs:     $enable_shared"
2042 echo "        Static libs:     $enable_static"
2043
2044 dnl Compiler options
2045 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2046 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2047     $SED 's/^ *//;s/  */ /;s/ *$//'`
2048 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2049     $SED 's/^ *//;s/  */ /;s/ *$//'`
2050 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/  */ /;s/ *$//'`
2051 echo ""
2052 echo "        CFLAGS:          $cflags"
2053 echo "        CXXFLAGS:        $cxxflags"
2054 echo "        Macros:          $defines"
2055 echo ""
2056 echo "        PYTHON2:         $PYTHON2"
2057
2058 echo ""
2059 echo "        Run '${MAKE-make}' to build Mesa"
2060 echo ""