OSDN Git Service

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