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