OSDN Git Service

configure.ac: add option --with-gallium-drivers=DIRS
[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([gles-overlay],
527     [AS_HELP_STRING([--enable-gles-overlay],
528         [DEPRECATED.  Same as --enable-gles1 and --enable-gles2])],
529     [enable_gles1="$enableval"; enable_gles2="$enableval"],
530     [])
531 AC_ARG_ENABLE([openvg],
532     [AS_HELP_STRING([--enable-openvg],
533         [enable support for OpenVG API @<:@default=no@:>@])],
534     [enable_openvg="$enableval"],
535     [enable_openvg=no])
536 AC_ARG_ENABLE([xorg],
537     [AS_HELP_STRING([--enable-xorg],
538         [enable support for X.Org DDX API @<:@default=no@:>@])],
539     [enable_xorg="$enableval"],
540     [enable_xorg=no])
541 AC_ARG_ENABLE([d3d1x],
542     [AS_HELP_STRING([--enable-d3d1x],
543         [enable support for Direct3D 10 & 11 low-level API @<:@default=no@:>@])],
544     [enable_d3d1x="$enableval"],
545     [enable_d3d1x=no])
546 AC_ARG_ENABLE([egl],
547     [AS_HELP_STRING([--disable-egl],
548         [disable EGL library @<:@default=enabled@:>@])],
549     [enable_egl="$enableval"],
550     [enable_egl=yes])
551
552 # Option for Gallium drivers
553 GALLIUM_DRIVERS_DEFAULT="r300,swrast"
554
555 AC_ARG_WITH([gallium-drivers],
556     [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
557         [comma delimited Gallium drivers list, e.g.
558         "i915,i965,nouveau,r300,r600,svga,swrast"
559         @<:@default=r300,swrast@:>@])],
560     [with_gallium_drivers="$withval"],
561     [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
562
563 if test "x$enable_opengl" = xno -a \
564         "x$enable_gles1" = xno -a \
565         "x$enable_gles2" = xno -a \
566         "x$enable_openvg" = xno -a \
567         "x$enable_xorg" = xno -a \
568         "x$enable_d3d1x" = xno; then
569     AC_MSG_ERROR([at least one API should be enabled])
570 fi
571
572 API_DEFINES=""
573 if test "x$enable_opengl" = xno; then
574     API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
575 else
576     API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
577 fi
578 if test "x$enable_gles1" = xyes; then
579     API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
580 fi
581 if test "x$enable_gles2" = xyes; then
582     API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
583 fi
584 AC_SUBST([API_DEFINES])
585
586 AC_ARG_ENABLE([shared-glapi],
587     [AS_HELP_STRING([--enable-shared-glapi],
588         [EXPERIMENTAL.  Enable shared glapi for OpenGL @<:@default=no@:>@])],
589     [enable_shared_glapi="$enableval"],
590     [enable_shared_glapi=no])
591
592 SHARED_GLAPI="0"
593 if test "x$enable_shared_glapi" = xyes; then
594     SHARED_GLAPI="1"
595 fi
596 AC_SUBST([SHARED_GLAPI])
597
598 dnl
599 dnl Driver configuration. Options are xlib, dri and osmesa right now.
600 dnl More later: fbdev, ...
601 dnl
602 default_driver="xlib"
603
604 case "$host_os" in
605 linux*)
606     case "$host_cpu" in
607     i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
608     esac
609     ;;
610 *freebsd* | dragonfly* | *netbsd*)
611     case "$host_cpu" in
612     i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
613     esac
614     ;;
615 esac
616
617 if test "x$enable_opengl" = xno; then
618     default_driver="no"
619 fi
620
621 AC_ARG_WITH([driver],
622     [AS_HELP_STRING([--with-driver=DRIVER],
623         [driver for Mesa: xlib,dri,osmesa @<:@default=dri when available, or xlib@:>@])],
624     [mesa_driver="$withval"],
625     [mesa_driver="$default_driver"])
626 dnl Check for valid option
627 case "x$mesa_driver" in
628 xxlib|xdri|xosmesa)
629     if test "x$enable_opengl" = xno; then
630         AC_MSG_ERROR([Driver '$mesa_driver' requires OpenGL enabled])
631     fi
632     ;;
633 xno)
634     ;;
635 *)
636     AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
637     ;;
638 esac
639
640 dnl
641 dnl Driver specific build directories
642 dnl
643
644 dnl this variable will be prepended to SRC_DIRS and is not exported
645 CORE_DIRS=""
646
647 SRC_DIRS=""
648 GLU_DIRS="sgi"
649 GALLIUM_DIRS="auxiliary drivers state_trackers"
650 GALLIUM_TARGET_DIRS=""
651 GALLIUM_WINSYS_DIRS="sw"
652 GALLIUM_DRIVERS_DIRS="softpipe failover galahad trace rbug noop identity"
653 GALLIUM_STATE_TRACKERS_DIRS=""
654
655 # build shared-glapi if enabled for OpenGL or if OpenGL ES is enabled
656 case "x$enable_shared_glapi$enable_gles1$enable_gles2" in
657 x*yes*)
658     CORE_DIRS="$CORE_DIRS mapi/shared-glapi"
659     ;;
660 esac
661
662 # build glapi if OpenGL is enabled
663 if test "x$enable_opengl" = xyes; then
664     CORE_DIRS="$CORE_DIRS mapi/glapi"
665 fi
666
667 # build es1api if OpenGL ES 1.x is enabled
668 if test "x$enable_gles1" = xyes; then
669     CORE_DIRS="$CORE_DIRS mapi/es1api"
670 fi
671
672 # build es2api if OpenGL ES 2.x is enabled
673 if test "x$enable_gles2" = xyes; then
674     CORE_DIRS="$CORE_DIRS mapi/es2api"
675 fi
676
677 # build glsl and mesa if OpenGL or OpenGL ES is enabled
678 case "x$enable_opengl$enable_gles1$enable_gles2" in
679 x*yes*)
680     CORE_DIRS="$CORE_DIRS glsl mesa"
681     ;;
682 esac
683
684 case "$mesa_driver" in
685 xlib)
686     DRIVER_DIRS="x11"
687     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
688     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
689     GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS"
690     ;;
691 dri)
692     SRC_DIRS="$SRC_DIRS glx"
693     DRIVER_DIRS="dri"
694     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib sw/dri"
695     GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
696     HAVE_ST_DRI="yes"
697     ;;
698 osmesa)
699     DRIVER_DIRS="osmesa"
700     ;;
701 no)
702     DRIVER_DRIS=""
703     ;;
704 esac
705 AC_SUBST([SRC_DIRS])
706 AC_SUBST([GLU_DIRS])
707 AC_SUBST([DRIVER_DIRS])
708 AC_SUBST([GALLIUM_DIRS])
709 AC_SUBST([GALLIUM_TARGET_DIRS])
710 AC_SUBST([GALLIUM_WINSYS_DIRS])
711 AC_SUBST([GALLIUM_DRIVERS_DIRS])
712 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
713 AC_SUBST([MESA_LLVM])
714
715 dnl
716 dnl Find out if X is available. The variable have_x is set if libX11 is
717 dnl found to mimic AC_PATH_XTRA.
718 dnl
719 if test -n "$PKG_CONFIG"; then
720     AC_MSG_CHECKING([pkg-config files for X11 are available])
721     PKG_CHECK_EXISTS([x11],[
722         x11_pkgconfig=yes
723         have_x=yes
724         ],[
725         x11_pkgconfig=no
726     ])
727     AC_MSG_RESULT([$x11_pkgconfig])
728 else
729     x11_pkgconfig=no
730 fi
731 dnl Use the autoconf macro if no pkg-config files
732 if test "$x11_pkgconfig" = yes; then
733     PKG_CHECK_MODULES([X11], [x11])
734 else
735     AC_PATH_XTRA
736     test -z "$X11_CFLAGS" && X11_CFLAGS="$X_CFLAGS"
737     test -z "$X11_LIBS" && X11_LIBS="$X_LIBS -lX11"
738     AC_SUBST([X11_CFLAGS])
739     AC_SUBST([X11_LIBS])
740 fi
741
742 dnl Try to tell the user that the --x-* options are only used when
743 dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
744 m4_divert_once([HELP_BEGIN],
745 [These options are only used when the X libraries cannot be found by the
746 pkg-config utility.])
747
748 dnl We need X for xlib and dri, so bomb now if it's not found
749 case "$mesa_driver" in
750 xlib|dri)
751     if test "$no_x" = yes; then
752         AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver])
753     fi
754     ;;
755 esac
756
757 dnl XCB - this is only used for GLX right now
758 AC_ARG_ENABLE([xcb],
759     [AS_HELP_STRING([--enable-xcb],
760         [use XCB for GLX @<:@default=disabled@:>@])],
761     [enable_xcb="$enableval"],
762     [enable_xcb=no])
763 if test "x$enable_xcb" = xyes; then
764     DEFINES="$DEFINES -DUSE_XCB"
765 else
766     enable_xcb=no
767 fi
768
769 dnl Direct rendering or just indirect rendering
770 case "$host_os" in
771 gnu*)
772     dnl Disable by default on GNU/Hurd
773     driglx_direct_default="no"
774     ;;
775 cygwin*)
776     dnl Disable by default on cygwin
777     driglx_direct_default="no"
778     ;;
779 *)
780     driglx_direct_default="yes"
781     ;;
782 esac
783 AC_ARG_ENABLE([driglx-direct],
784     [AS_HELP_STRING([--disable-driglx-direct],
785         [enable direct rendering in GLX and EGL for DRI \
786             @<:@default=auto@:>@])],
787     [driglx_direct="$enableval"],
788     [driglx_direct="$driglx_direct_default"])
789
790 dnl
791 dnl libGL configuration per driver
792 dnl
793 case "$mesa_driver" in
794 xlib)
795     if test "$x11_pkgconfig" = yes; then
796         PKG_CHECK_MODULES([XLIBGL], [x11 xext])
797         GL_PC_REQ_PRIV="x11 xext"
798         X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
799         GL_LIB_DEPS="$XLIBGL_LIBS"
800     else
801         # should check these...
802         X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
803         GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
804         GL_PC_LIB_PRIV="$GL_LIB_DEPS"
805         GL_PC_CFLAGS="$X11_INCLUDES"
806     fi
807     GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread"
808     GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
809
810     # if static, move the external libraries to the programs
811     # and empty the libraries for libGL
812     if test "$enable_static" = yes; then
813         APP_LIB_DEPS="$APP_LIB_DEPS $GL_LIB_DEPS"
814         GL_LIB_DEPS=""
815     fi
816     ;;
817 dri|no) # these checks are still desired when there is no mesa_driver
818     # DRI must be shared, I think
819     if test "$enable_static" = yes; then
820         AC_MSG_ERROR([Can't use static libraries for DRI drivers])
821     fi
822
823     PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
824     GL_PC_REQ_PRIV="glproto >= $GLPROTO_REQUIRED"
825     DRI_PC_REQ_PRIV=""
826
827     if test x"$driglx_direct" = xyes; then
828         # Check for libdrm
829         PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED])
830         PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
831         GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
832         DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
833     fi
834
835     # find the DRI deps for libGL
836     if test "$x11_pkgconfig" = yes; then
837         dri_modules="x11 xext xdamage xfixes"
838
839         # add xf86vidmode if available
840         PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
841         if test "$HAVE_XF86VIDMODE" = yes ; then
842             dri_modules="$dri_modules xxf86vm"
843         fi
844
845         # add xcb modules if necessary
846         if test "$enable_xcb" = yes; then
847             dri_modules="$dri_modules x11-xcb xcb-glx"
848         fi
849
850         PKG_CHECK_MODULES([DRIGL], [$dri_modules])
851         GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
852         X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
853         GL_LIB_DEPS="$DRIGL_LIBS"
854     else
855         # should check these...
856         X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
857         GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
858         GL_PC_LIB_PRIV="$GL_LIB_DEPS"
859         GL_PC_CFLAGS="$X11_INCLUDES"
860
861         # XCB can only be used from pkg-config
862         if test "$enable_xcb" = yes; then
863             PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
864             GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
865             X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
866             GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
867         fi
868     fi
869
870     # need DRM libs, -lpthread, etc.
871     GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
872     GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
873     GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
874     GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
875     GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
876     GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
877     ;;
878 osmesa)
879     # No libGL for osmesa
880     GL_LIB_DEPS=""
881     ;;
882 esac
883 AC_SUBST([GL_LIB_DEPS])
884 AC_SUBST([GL_PC_REQ_PRIV])
885 AC_SUBST([GL_PC_LIB_PRIV])
886 AC_SUBST([GL_PC_CFLAGS])
887 AC_SUBST([DRI_PC_REQ_PRIV])
888 AC_SUBST([GLESv1_CM_LIB_DEPS])
889 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
890 AC_SUBST([GLESv2_LIB_DEPS])
891 AC_SUBST([GLESv2_PC_LIB_PRIV])
892
893 GLAPI_LIB_DEPS="-lpthread"
894 AC_SUBST([GLAPI_LIB_DEPS])
895
896
897 dnl Setup default DRI CFLAGS
898 DRI_CFLAGS='$(CFLAGS)'
899 DRI_CXXFLAGS='$(CXXFLAGS)'
900 DRI_LIB_DEPS='$(TOP)/src/mesa/libmesa.a'
901 MESA_MODULES='$(TOP)/src/mesa/libmesa.a'
902
903 AC_ARG_ENABLE([shared-dricore],
904     [AS_HELP_STRING([--enable-shared-dricore],
905         [link DRI modules with shared core DRI routines @<:@default=disabled@:>@])],
906     [enable_dricore="$enableval"],
907     [enable_dricore=no])
908 if test "$mesa_driver" = dri ; then
909    if test "$enable_dricore" = yes ; then
910       if test "$GCC$GXX" != yesyes ; then
911          AC_MSG_WARN([Shared dricore requires GCC-compatible rpath handling.  Disabling shared dricore])
912          enable_dricore=no
913       else
914          DRICORE_GLSL_LIBS='$(TOP)/$(LIB_DIR)/libglsl.so'
915          DRICORE_LIBS='$(TOP)/$(LIB_DIR)/libdricore.so'
916          DRICORE_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -lglsl'
917          DRI_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore -lglsl'
918          DRI_CFLAGS='$(CFLAGS_NOVISIBILITY) -DUSE_DRICORE'
919          DRI_CXXFLAGS='$(CXXFLAGS_NOVISIBILITY) -DUSE_DRICORE'
920          MESA_MODULES='$(DRICORE_LIBS) $(DRICORE_GLSL_LIBS)'
921       fi
922    fi
923 fi
924 AC_SUBST([DRICORE_LIBS])
925 AC_SUBST([DRICORE_GLSL_LIBS])
926 AC_SUBST([DRICORE_LIB_DEPS])
927 AC_SUBST([DRI_CXXFLAGS])
928 AC_SUBST([DRI_CFLAGS])
929 AC_SUBST([MESA_MODULES])
930
931 AC_SUBST([HAVE_XF86VIDMODE])
932
933 PKG_CHECK_MODULES([LIBDRM_RADEON],
934                   [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED],
935                   HAVE_LIBDRM_RADEON=yes,
936                   HAVE_LIBDRM_RADEON=no)
937
938 dnl
939 dnl More X11 setup
940 dnl
941 if test "$mesa_driver" = xlib; then
942     DEFINES="$DEFINES -DUSE_XSHM"
943 fi
944
945 dnl
946 dnl TLS detection
947 dnl
948
949 AC_ARG_ENABLE([glx-tls],
950     [AS_HELP_STRING([--enable-glx-tls],
951         [enable TLS support in GLX @<:@default=disabled@:>@])],
952     [GLX_USE_TLS="$enableval"],
953     [GLX_USE_TLS=no])
954 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
955
956 AS_IF([test "x$GLX_USE_TLS" = xyes],
957       [DEFINES="${DEFINES} -DGLX_USE_TLS -DPTHREADS"])
958
959 dnl
960 dnl More DRI setup
961 dnl
962 dnl Directory for DRI drivers
963 AC_ARG_WITH([dri-driverdir],
964     [AS_HELP_STRING([--with-dri-driverdir=DIR],
965         [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
966     [DRI_DRIVER_INSTALL_DIR="$withval"],
967     [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
968 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
969 dnl Extra search path for DRI drivers
970 AC_ARG_WITH([dri-searchpath],
971     [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
972         [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
973     [DRI_DRIVER_SEARCH_DIR="$withval"],
974     [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
975 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
976 dnl Which drivers to build - default is chosen by platform
977 AC_ARG_WITH([dri-drivers],
978     [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
979         [comma delimited DRI drivers list, e.g.
980         "swrast,i965,radeon" @<:@default=auto@:>@])],
981     [with_dri_drivers="$withval"],
982     [with_dri_drivers=yes])
983 if test "x$with_dri_drivers" = x; then
984     with_dri_drivers=no
985 fi
986
987 dnl If $with_dri_drivers is yes, directories will be added through
988 dnl platform checks
989 DRI_DIRS=""
990 case "$with_dri_drivers" in
991 no) ;;
992 yes)
993     DRI_DIRS="yes"
994     ;;
995 *)
996     # verify the requested driver directories exist
997     dri_drivers=`IFS=', '; echo $with_dri_drivers`
998     for driver in $dri_drivers; do
999         test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
1000             AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
1001     done
1002     DRI_DIRS="$dri_drivers"
1003     ;;
1004 esac
1005
1006 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
1007 if test "$mesa_driver" = dri -o "$mesa_driver" = no; then
1008     # Platform specific settings and drivers to build
1009     case "$host_os" in
1010     linux*)
1011         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1012         if test "x$driglx_direct" = xyes; then
1013             DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1014         fi
1015         DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
1016
1017         case "$host_cpu" in
1018         x86_64)
1019             # sis is missing because they have not be converted to use
1020             # the new interface.  i810 are missing because there is no
1021             # x86-64 system where they could *ever* be used.
1022             if test "x$DRI_DIRS" = "xyes"; then
1023                 DRI_DIRS="i915 i965 mach64 mga nouveau r128 r200 r300 r600 \
1024                     radeon savage tdfx unichrome swrast"
1025             fi
1026             ;;
1027         powerpc*)
1028             # Build only the drivers for cards that exist on PowerPC.
1029             # At some point MGA will be added, but not yet.
1030             if test "x$DRI_DIRS" = "xyes"; then
1031                 DRI_DIRS="mach64 r128 r200 r300 r600 radeon tdfx swrast"
1032             fi
1033             ;;
1034         sparc*)
1035             # Build only the drivers for cards that exist on sparc`
1036             if test "x$DRI_DIRS" = "xyes"; then
1037                 DRI_DIRS="mach64 r128 r200 r300 r600 radeon swrast"
1038             fi
1039             ;;
1040         esac
1041         ;;
1042     freebsd* | dragonfly* | *netbsd*)
1043         DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
1044         DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
1045         DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1046         if test "x$driglx_direct" = xyes; then
1047             DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1048         fi
1049
1050         if test "x$DRI_DIRS" = "xyes"; then
1051             DRI_DIRS="i810 i915 i965 mach64 mga nouveau r128 r200 r300 r600 \
1052                 radeon tdfx unichrome savage sis swrast"
1053         fi
1054         ;;
1055     gnu*)
1056         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1057         DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
1058         ;;
1059     solaris*)
1060         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1061         DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1062         if test "x$driglx_direct" = xyes; then
1063             DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1064         fi
1065         ;;
1066     cygwin*)
1067         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1068         DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1069         if test "x$driglx_direct" = xyes; then
1070             DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1071         fi
1072         if test "x$DRI_DIRS" = "xyes"; then
1073             DRI_DIRS="swrast"
1074         fi
1075         ;;
1076     esac
1077
1078     # default drivers
1079     if test "x$DRI_DIRS" = "xyes"; then
1080         DRI_DIRS="i810 i915 i965 mach64 mga nouveau r128 r200 r300 r600 radeon \
1081             savage sis tdfx unichrome swrast"
1082     fi
1083
1084     DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/  */ /g'`
1085
1086     # Check for expat
1087     if test "$mesa_driver" = dri; then
1088         EXPAT_INCLUDES=""
1089         EXPAT_LIB=-lexpat
1090         AC_ARG_WITH([expat],
1091             [AS_HELP_STRING([--with-expat=DIR],
1092                 [expat install directory])],[
1093             EXPAT_INCLUDES="-I$withval/include"
1094             CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
1095             LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
1096             EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
1097             ])
1098         AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
1099         AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1100             [AC_MSG_ERROR([Expat required for DRI.])])
1101     fi
1102
1103     # put all the necessary libs together, including possibly libdricore
1104     DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
1105 fi
1106 AC_SUBST([DRI_DIRS])
1107 AC_SUBST([EXPAT_INCLUDES])
1108 AC_SUBST([DRI_LIB_DEPS])
1109
1110 case $DRI_DIRS in
1111 *i915*|*i965*)
1112     PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1113     ;;
1114 esac
1115
1116 case $DRI_DIRS in
1117 *nouveau*)
1118     PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1119     ;;
1120 esac
1121
1122 case $DRI_DIRS in
1123 *radeon*|*r200*|*r300*|*r600*)
1124     if test "x$HAVE_LIBDRM_RADEON" = xyes; then
1125         RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS"
1126         RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS
1127     fi
1128     ;;
1129 esac
1130 AC_SUBST([RADEON_CFLAGS])
1131 AC_SUBST([RADEON_LDFLAGS])
1132
1133
1134 dnl
1135 dnl OSMesa configuration
1136 dnl
1137 if test "$mesa_driver" = xlib; then
1138     default_gl_osmesa=yes
1139 else
1140     default_gl_osmesa=no
1141 fi
1142 AC_ARG_ENABLE([gl-osmesa],
1143     [AS_HELP_STRING([--enable-gl-osmesa],
1144         [enable OSMesa with libGL @<:@default=enabled for xlib driver@:>@])],
1145     [gl_osmesa="$enableval"],
1146     [gl_osmesa="$default_gl_osmesa"])
1147 if test "x$gl_osmesa" = xyes; then
1148     if test "x$enable_opengl" = xno; then
1149         AC_MSG_ERROR([OpenGL is not available for OSMesa driver])
1150     fi
1151     if test "$mesa_driver" = osmesa; then
1152         AC_MSG_ERROR([libGL is not available for OSMesa driver])
1153     else
1154         DRIVER_DIRS="$DRIVER_DIRS osmesa"
1155     fi
1156 fi
1157
1158 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1159 AC_ARG_WITH([osmesa-bits],
1160     [AS_HELP_STRING([--with-osmesa-bits=BITS],
1161         [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1162     [osmesa_bits="$withval"],
1163     [osmesa_bits=8])
1164 if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
1165     AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
1166     osmesa_bits=8
1167 fi
1168 case "x$osmesa_bits" in
1169 x8)
1170     OSMESA_LIB=OSMesa
1171     ;;
1172 x16|x32)
1173     OSMESA_LIB="OSMesa$osmesa_bits"
1174     DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1175     ;;
1176 *)
1177     AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1178     ;;
1179 esac
1180 AC_SUBST([OSMESA_LIB])
1181
1182 case "$DRIVER_DIRS" in
1183 *osmesa*)
1184     # only link libraries with osmesa if shared
1185     if test "$enable_static" = no; then
1186         OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1187     else
1188         OSMESA_LIB_DEPS=""
1189     fi
1190     OSMESA_MESA_DEPS=""
1191     OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1192     ;;
1193 esac
1194 AC_SUBST([OSMESA_LIB_DEPS])
1195 AC_SUBST([OSMESA_MESA_DEPS])
1196 AC_SUBST([OSMESA_PC_REQ])
1197 AC_SUBST([OSMESA_PC_LIB_PRIV])
1198
1199 dnl
1200 dnl EGL configuration
1201 dnl
1202 EGL_CLIENT_APIS=""
1203
1204 if test "x$enable_egl" = xno; then
1205     if test "x$mesa_driver" = xno; then
1206         AC_MSG_ERROR([cannot disable EGL when there is no mesa driver])
1207     fi
1208 fi
1209 if test "x$enable_egl" = xyes; then
1210     SRC_DIRS="$SRC_DIRS egl"
1211     EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS -lpthread"
1212     EGL_DRIVERS_DIRS=""
1213     GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
1214     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl"
1215     HAVE_ST_EGL="yes"
1216
1217     if test "$enable_static" != yes; then
1218         # build egl_glx when libGL is built
1219         if test "$mesa_driver" = xlib -o "$mesa_driver" = dri; then
1220             EGL_DRIVERS_DIRS="glx"
1221         fi
1222
1223         PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1224                           [have_libudev=yes],[have_libudev=no])
1225         if test "$have_libudev" = yes; then
1226             DEFINES="$DEFINES -DHAVE_LIBUDEV"
1227         fi
1228         if test "$mesa_driver" = dri; then
1229             # build egl_dri2 when xcb-dri2 is available
1230             PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes],
1231                           [have_xcb_dri2=yes],[have_xcb_dri2=no])
1232             
1233             if test "$have_xcb_dri2" = yes; then
1234                 EGL_DRIVER_DRI2=dri2
1235                 DEFINES="$DEFINES -DHAVE_XCB_DRI2"
1236                 # workaround a bug in xcb-dri2 generated by xcb-proto 1.6
1237                 AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [],
1238                           [DEFINES="$DEFINES -DXCB_DRI2_CONNECT_DEVICE_NAME_BROKEN"])
1239             fi
1240         fi
1241
1242         EGL_DRIVERS_DIRS="$EGL_DRIVERS_DIRS $EGL_DRIVER_DRI2"
1243     fi
1244 fi
1245 AC_SUBST([EGL_LIB_DEPS])
1246 AC_SUBST([EGL_DRIVERS_DIRS])
1247
1248 dnl
1249 dnl X.Org DDX configuration
1250 dnl
1251 if test "x$enable_xorg" = xyes; then
1252     PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1253     PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1254     PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1255     PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1256         HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1257         HAVE_XEXTPROTO_71="no")
1258     GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS"
1259     HAVE_ST_XORG=yes
1260 fi
1261
1262 dnl
1263 dnl OpenVG configuration
1264 dnl
1265 VG_LIB_DEPS=""
1266
1267 if test "x$enable_openvg" = xyes; then
1268     if test "x$enable_egl" = xno; then
1269         AC_MSG_ERROR([cannot enable OpenVG without EGL])
1270     fi
1271     if test "x$with_gallium_drivers" = x; then
1272         AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1273     fi
1274
1275     EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1276     VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS -lpthread"
1277     CORE_DIRS="$CORE_DIRS mapi/vgapi"
1278     GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1279     HAVE_ST_VEGA=yes
1280 fi
1281
1282 dnl
1283 dnl D3D1X configuration
1284 dnl
1285
1286 if test "x$enable_d3d1x" = xyes; then
1287     if test "x$with_gallium_drivers" = x; then
1288         AC_MSG_ERROR([cannot enable D3D1X without Gallium])
1289     fi
1290
1291     GALLIUM_STATE_TRACKERS_DIRS="d3d1x $GALLIUM_STATE_TRACKERS_DIRS"
1292     HAVE_ST_D3D1X=yes
1293 fi
1294
1295 dnl
1296 dnl GLU configuration
1297 dnl
1298 AC_ARG_ENABLE([glu],
1299     [AS_HELP_STRING([--disable-glu],
1300         [enable OpenGL Utility library @<:@default=enabled@:>@])],
1301     [enable_glu="$enableval"],
1302     [enable_glu=yes])
1303
1304 if test "x$enable_glu" = xyes -a "x$mesa_driver" = xno; then
1305     AC_MSG_NOTICE([Disabling GLU since there is no OpenGL driver])
1306     enable_glu=no
1307 fi
1308
1309 if test "x$enable_glu" = xyes; then
1310     SRC_DIRS="$SRC_DIRS glu"
1311
1312     case "$mesa_driver" in
1313     osmesa)
1314         # Link libGLU to libOSMesa instead of libGL
1315         GLU_LIB_DEPS=""
1316         GLU_PC_REQ="osmesa"
1317         if test "$enable_static" = no; then
1318             GLU_MESA_DEPS='-l$(OSMESA_LIB)'
1319         else
1320             GLU_MESA_DEPS=""
1321         fi
1322         ;;
1323     *)
1324         # If static, empty GLU_LIB_DEPS and add libs for programs to link
1325         GLU_PC_REQ="gl"
1326         GLU_PC_LIB_PRIV="-lm"
1327         if test "$enable_static" = no; then
1328             GLU_LIB_DEPS="-lm"
1329             GLU_MESA_DEPS='-l$(GL_LIB)'
1330         else
1331             GLU_LIB_DEPS=""
1332             GLU_MESA_DEPS=""
1333             APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
1334         fi
1335         ;;
1336     esac
1337 fi
1338 if test "$enable_static" = no; then
1339     GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
1340 fi
1341 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
1342 AC_SUBST([GLU_LIB_DEPS])
1343 AC_SUBST([GLU_MESA_DEPS])
1344 AC_SUBST([GLU_PC_REQ])
1345 AC_SUBST([GLU_PC_REQ_PRIV])
1346 AC_SUBST([GLU_PC_LIB_PRIV])
1347 AC_SUBST([GLU_PC_CFLAGS])
1348
1349 dnl
1350 dnl GLw configuration
1351 dnl
1352 AC_ARG_ENABLE([glw],
1353     [AS_HELP_STRING([--disable-glw],
1354         [enable Xt/Motif widget library @<:@default=enabled@:>@])],
1355     [enable_glw="$enableval"],
1356     [enable_glw=yes])
1357 dnl Don't build GLw on osmesa
1358 if test "x$enable_glw" = xyes; then
1359     case "$mesa_driver" in
1360     osmesa|no)
1361         AC_MSG_NOTICE([Disabling GLw since there is no OpenGL driver])
1362         enable_glw=no
1363         ;;
1364     esac
1365 fi
1366 AC_ARG_ENABLE([motif],
1367     [AS_HELP_STRING([--enable-motif],
1368         [use Motif widgets in GLw @<:@default=disabled@:>@])],
1369     [enable_motif="$enableval"],
1370     [enable_motif=no])
1371
1372 if test "x$enable_glw" = xyes; then
1373     SRC_DIRS="$SRC_DIRS glw"
1374     if test "$x11_pkgconfig" = yes; then
1375         PKG_CHECK_MODULES([GLW],[x11 xt])
1376         GLW_PC_REQ_PRIV="x11 xt"
1377         GLW_LIB_DEPS="$GLW_LIBS"
1378     else
1379         # should check these...
1380         GLW_LIB_DEPS="$X_LIBS -lXt -lX11"
1381         GLW_PC_LIB_PRIV="$GLW_LIB_DEPS"
1382         GLW_PC_CFLAGS="$X11_INCLUDES"
1383     fi
1384
1385     GLW_SOURCES="GLwDrawA.c"
1386     MOTIF_CFLAGS=
1387     if test "x$enable_motif" = xyes; then
1388         GLW_SOURCES="$GLW_SOURCES GLwMDrawA.c"
1389         AC_PATH_PROG([MOTIF_CONFIG], [motif-config], [no])
1390         if test "x$MOTIF_CONFIG" != xno; then
1391             MOTIF_CFLAGS=`$MOTIF_CONFIG --cflags`
1392             MOTIF_LIBS=`$MOTIF_CONFIG --libs`
1393         else
1394             AC_CHECK_HEADER([Xm/PrimitiveP.h], [],
1395                 [AC_MSG_ERROR([Can't locate Motif headers])])
1396             AC_CHECK_LIB([Xm], [XmGetPixmap], [MOTIF_LIBS="-lXm"],
1397                 [AC_MSG_ERROR([Can't locate Motif Xm library])])
1398         fi
1399         # MOTIF_LIBS is prepended to GLW_LIB_DEPS since Xm needs Xt/X11
1400         GLW_LIB_DEPS="$MOTIF_LIBS $GLW_LIB_DEPS"
1401         GLW_PC_LIB_PRIV="$MOTIF_LIBS $GLW_PC_LIB_PRIV"
1402         GLW_PC_CFLAGS="$MOTIF_CFLAGS $GLW_PC_CFLAGS"
1403     fi
1404
1405     # If static, empty GLW_LIB_DEPS and add libs for programs to link
1406     GLW_PC_LIB_PRIV="$GLW_PC_LIB_PRIV"
1407     if test "$enable_static" = no; then
1408         GLW_MESA_DEPS='-l$(GL_LIB)'
1409         GLW_LIB_DEPS="$GLW_LIB_DEPS"
1410     else
1411         APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
1412         GLW_LIB_DEPS=""
1413         GLW_MESA_DEPS=""
1414     fi
1415 fi
1416 AC_SUBST([GLW_LIB_DEPS])
1417 AC_SUBST([GLW_MESA_DEPS])
1418 AC_SUBST([GLW_SOURCES])
1419 AC_SUBST([MOTIF_CFLAGS])
1420 AC_SUBST([GLW_PC_REQ_PRIV])
1421 AC_SUBST([GLW_PC_LIB_PRIV])
1422 AC_SUBST([GLW_PC_CFLAGS])
1423
1424 dnl
1425 dnl GLUT configuration
1426 dnl
1427 if test -f "$srcdir/include/GL/glut.h"; then
1428     default_glut=yes
1429 else
1430     default_glut=no
1431 fi
1432 AC_ARG_ENABLE([glut],
1433     [AS_HELP_STRING([--disable-glut],
1434         [enable GLUT library @<:@default=enabled if source available@:>@])],
1435     [enable_glut="$enableval"],
1436     [enable_glut="$default_glut"])
1437
1438 dnl Don't build glut on osmesa
1439 if test "x$enable_glut" = xyes; then
1440     case "$mesa_driver" in
1441     osmesa|no)
1442         AC_MSG_NOTICE([Disabling glut since there is no OpenGL driver])
1443         enable_glut=no
1444         ;;
1445     esac
1446 fi
1447 dnl Can't build glut if GLU not available
1448 if test "x$enable_glu$enable_glut" = xnoyes; then
1449     AC_MSG_WARN([Disabling glut since GLU is disabled])
1450     enable_glut=no
1451 fi
1452
1453 if test "x$enable_glut" = xyes; then
1454     SRC_DIRS="$SRC_DIRS glut/glx"
1455     if test "$x11_pkgconfig" = yes; then
1456         PKG_CHECK_MODULES([GLUT],[x11 xmu xi])
1457         GLUT_PC_REQ_PRIV="x11 xmu xi"
1458         GLUT_LIB_DEPS="$GLUT_LIBS"
1459     else
1460         # should check these...
1461         GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
1462         GLUT_PC_LIB_PRIV="$GLUT_LIB_DEPS"
1463         GLUT_PC_CFLAGS="$X11_INCLUDES"
1464     fi
1465     if test "x$GCC" = xyes; then
1466         GLUT_CFLAGS="$GLUT_CFLAGS -fexceptions"
1467     fi
1468     GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
1469     GLUT_PC_LIB_PRIV="$GLUT_PC_LIB_PRIV -lm"
1470
1471     # If static, empty GLUT_LIB_DEPS and add libs for programs to link
1472     if test "$enable_static" = no; then
1473         GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
1474     else
1475         APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
1476         GLUT_LIB_DEPS=""
1477         GLUT_MESA_DEPS=""
1478     fi
1479 fi
1480 AC_SUBST([GLUT_LIB_DEPS])
1481 AC_SUBST([GLUT_MESA_DEPS])
1482 AC_SUBST([GLUT_CFLAGS])
1483 AC_SUBST([GLUT_PC_REQ_PRIV])
1484 AC_SUBST([GLUT_PC_LIB_PRIV])
1485 AC_SUBST([GLUT_PC_CFLAGS])
1486
1487 dnl
1488 dnl Program library dependencies
1489 dnl    Only libm is added here if necessary as the libraries should
1490 dnl    be pulled in by the linker
1491 dnl
1492 if test "x$APP_LIB_DEPS" = x; then
1493     case "$host_os" in
1494     solaris*)
1495         APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm"
1496         ;;
1497     cygwin*)
1498         APP_LIB_DEPS="-lX11"
1499         ;;
1500     *)
1501         APP_LIB_DEPS="-lm"
1502         ;;
1503     esac
1504 fi
1505 AC_SUBST([APP_LIB_DEPS])
1506 AC_SUBST([PROGRAM_DIRS])
1507
1508 dnl
1509 dnl Gallium configuration
1510 dnl
1511 if test "x$with_gallium_drivers" != x; then
1512     SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
1513     AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1514 fi
1515
1516 AC_SUBST([LLVM_CFLAGS])
1517 AC_SUBST([LLVM_LIBS])
1518 AC_SUBST([LLVM_LDFLAGS])
1519 AC_SUBST([LLVM_VERSION])
1520
1521
1522
1523 case "x$enable_opengl$enable_gles1$enable_gles2" in
1524 x*yes*)
1525     EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1526     ;;
1527 esac
1528
1529 AC_SUBST([VG_LIB_DEPS])
1530 AC_SUBST([EGL_CLIENT_APIS])
1531
1532 AC_ARG_WITH([egl-platforms],
1533     [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1534         [comma delimited native platforms libEGL supports, e.g.
1535         "x11,drm" @<:@default=auto@:>@])],
1536     [with_egl_platforms="$withval"],
1537     [with_egl_platforms=yes])
1538 AC_ARG_WITH([egl-displays],
1539     [AS_HELP_STRING([--with-egl-displays@<:@=DIRS...@:>@],
1540         [DEPRECATED.  Use --with-egl-platforms instead])],
1541     [with_egl_platforms="$withval"])
1542
1543 EGL_PLATFORMS=""
1544 WAYLAND_EGL_LIB_DEPS=""
1545
1546 case "$with_egl_platforms" in
1547 yes)
1548     if test "x$enable_egl" = xyes && test "x$mesa_driver" != xosmesa; then
1549         EGL_PLATFORMS="x11"
1550         if test "$mesa_driver" = dri; then
1551             EGL_PLATFORMS="$EGL_PLATFORMS drm"
1552         fi
1553     fi
1554     ;;
1555 *)
1556     if test "x$enable_egl" != xyes; then
1557         AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1558     fi
1559     # verify the requested driver directories exist
1560     egl_platforms=`IFS=', '; echo $with_egl_platforms`
1561     for plat in $egl_platforms; do
1562         test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \
1563             AC_MSG_ERROR([EGL platform '$plat' doesn't exist])
1564         if test "$plat" = "fbdev"; then
1565                 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev"
1566         fi
1567         if test "$plat" = "wayland"; then
1568                 PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-server],, \
1569                                   [AC_MSG_ERROR([cannot find libwayland-client])])
1570                 WAYLAND_EGL_LIB_DEPS="$WAYLAND_LIBS $LIBDRM_LIBS"
1571                 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
1572         fi
1573     done
1574     EGL_PLATFORMS="$egl_platforms"
1575     ;;
1576 esac
1577 AC_SUBST([EGL_PLATFORMS])
1578
1579 AC_SUBST([WAYLAND_EGL_LIB_DEPS])
1580 WAYLAND_EGL_PC_REQ_PRIV="wayland-client libdrm"
1581 WAYLAND_EGL_PC_LIB_PRIV=
1582 WAYLAND_EGL_PC_CFLAGS=
1583
1584 AC_SUBST([WAYLAND_EGL_PC_REQ_PRIV])
1585 AC_SUBST([WAYLAND_EGL_PC_LIB_PRIV])
1586 AC_SUBST([WAYLAND_EGL_PC_CFLAGS])
1587
1588
1589 AC_ARG_WITH([egl-driver-dir],
1590     [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1591                     [directory for EGL drivers [[default=${libdir}/egl]]])],
1592     [EGL_DRIVER_INSTALL_DIR="$withval"],
1593     [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1594 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1595
1596 AC_ARG_WITH([xorg-driver-dir],
1597     [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1598                     [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1599     [XORG_DRIVER_INSTALL_DIR="$withval"],
1600     [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1601 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1602
1603 AC_ARG_WITH([max-width],
1604     [AS_HELP_STRING([--with-max-width=N],
1605                     [Maximum framebuffer width (4096)])],
1606     [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1607      AS_IF([test "${withval}" -gt "4096"],
1608            [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1609 )
1610 AC_ARG_WITH([max-height],
1611     [AS_HELP_STRING([--with-max-height=N],
1612                     [Maximum framebuffer height (4096)])],
1613     [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1614      AS_IF([test "${withval}" -gt "4096"],
1615            [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1616 )
1617
1618 dnl
1619 dnl Gallium LLVM
1620 dnl
1621 AC_ARG_ENABLE([gallium-llvm],
1622     [AS_HELP_STRING([--enable-gallium-llvm],
1623         [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1624     [enable_gallium_llvm="$enableval"],
1625     [enable_gallium_llvm=auto])
1626 if test "x$with_gallium_drivers" = x; then
1627     enable_gallium_llvm=no
1628 fi
1629 if test "x$enable_gallium_llvm" = xauto; then
1630     case "$host_cpu" in
1631     i*86|x86_64) enable_gallium_llvm=yes;;
1632     esac
1633 fi
1634 if test "x$enable_gallium_llvm" = xyes; then
1635     if test "x$LLVM_CONFIG" != xno; then
1636         LLVM_VERSION=`$LLVM_CONFIG --version`
1637         LLVM_CFLAGS=`$LLVM_CONFIG --cppflags`
1638         LLVM_LIBS="`$LLVM_CONFIG --libs` -lstdc++"
1639
1640         LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1641         GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1642         DEFINES="$DEFINES -DGALLIUM_LLVMPIPE -D__STDC_CONSTANT_MACROS"
1643         MESA_LLVM=1
1644     else
1645         MESA_LLVM=0
1646     fi
1647 else
1648     MESA_LLVM=0
1649 fi
1650
1651 dnl
1652 dnl Gallium helper functions
1653 dnl
1654 gallium_check_st() {
1655     if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes; then
1656          GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1657     fi
1658     if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1659          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1660     fi
1661     if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
1662          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1663     fi
1664 }
1665
1666 gallium_require_llvm() {
1667     if test "x$MESA_LLVM" = x0; then
1668         case "$host_cpu" in
1669         i*86|x86_64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1670         esac
1671     fi
1672 }
1673
1674 dnl Gallium drivers
1675 if test "x$with_gallium_drivers" != x; then
1676     # This is for compile-testing
1677     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 i965 r300 svga"
1678     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1679
1680     gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1681     for driver in $gallium_drivers; do
1682         case "x$driver" in
1683         xsvga)
1684             gallium_check_st "svga/drm" "dri-vmwgfx" "xorg-vmwgfx"
1685             ;;
1686         xi915)
1687             gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1688             ;;
1689         xi965)
1690             gallium_check_st "i965/drm" "dri-i965" "xorg-i965"
1691             ;;
1692         xr300)
1693             gallium_require_llvm "Gallium R300"
1694             gallium_check_st "radeon/drm" "dri-r300" "xorg-r300"
1695             ;;
1696         xr600)
1697             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1698             gallium_check_st "r600/drm" "dri-r600"
1699             ;;
1700         xnouveau)
1701             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50 nvc0"
1702             gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau"
1703             ;;
1704         xswrast)
1705             if test "x$HAVE_ST_DRI" = xyes; then
1706                 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1707             fi
1708             ;;
1709         *)
1710             AC_MSG_ERROR([Unknown Gallium driver: $driver])
1711             ;;
1712         esac
1713     done
1714 fi
1715
1716 dnl prepend CORE_DIRS to SRC_DIRS
1717 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
1718
1719 dnl Restore LDFLAGS and CPPFLAGS
1720 LDFLAGS="$_SAVE_LDFLAGS"
1721 CPPFLAGS="$_SAVE_CPPFLAGS"
1722
1723 dnl Substitute the config
1724 AC_CONFIG_FILES([configs/autoconf])
1725
1726 dnl Replace the configs/current symlink
1727 AC_CONFIG_COMMANDS([configs],[
1728 if test -f configs/current || test -L configs/current; then
1729     rm -f configs/current
1730 fi
1731 ln -s autoconf configs/current
1732 ])
1733
1734 AC_OUTPUT
1735
1736 dnl
1737 dnl Output some configuration info for the user
1738 dnl
1739 echo ""
1740 echo "        prefix:          $prefix"
1741 echo "        exec_prefix:     $exec_prefix"
1742 echo "        libdir:          $libdir"
1743 echo "        includedir:      $includedir"
1744
1745 dnl API info
1746 echo ""
1747 echo "        OpenGL:          $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
1748 echo "        OpenVG:          $enable_openvg"
1749
1750 dnl Driver info
1751 echo ""
1752 echo "        Driver:          $mesa_driver"
1753 if test "$mesa_driver" != no; then
1754     if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
1755         echo "        OSMesa:          lib$OSMESA_LIB"
1756     else
1757         echo "        OSMesa:          no"
1758     fi
1759     if test "$mesa_driver" = dri; then
1760         # cleanup the drivers var
1761         dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/  */ /;s/ *$//'`
1762         if test "x$DRI_DIRS" = x; then
1763             echo "        DRI drivers:     no"
1764         else
1765             echo "        DRI drivers:     $dri_dirs"
1766         fi
1767         echo "        DRI driver dir:  $DRI_DRIVER_INSTALL_DIR"
1768         echo "        Use XCB:         $enable_xcb"
1769         echo "        Shared dricore:  $enable_dricore"
1770     fi
1771 fi
1772 echo ""
1773 echo "        GLU:             $enable_glu"
1774 echo "        GLw:             $enable_glw (Motif: $enable_motif)"
1775 echo "        glut:            $enable_glut"
1776
1777 dnl EGL
1778 echo ""
1779 echo "        EGL:             $enable_egl"
1780 if test "$enable_egl" = yes; then
1781     echo "        EGL platforms:   $EGL_PLATFORMS"
1782
1783     egl_drivers=""
1784     for d in $EGL_DRIVERS_DIRS; do
1785         egl_drivers="$egl_drivers builtin:egl_$d"
1786     done
1787
1788     if test "$enable_gallium" = yes -a "$HAVE_ST_EGL" = yes; then
1789         echo "        EGL drivers:    ${egl_drivers} egl_gallium"
1790         echo "        EGL Gallium STs:$EGL_CLIENT_APIS"
1791     else
1792         echo "        EGL drivers:    $egl_drivers"
1793     fi
1794 fi
1795
1796 echo ""
1797 if test "x$MESA_LLVM" = x1; then
1798     echo "        llvm:            yes"
1799     echo "        llvm-config:     $LLVM_CONFIG"
1800     echo "        llvm-version:    $LLVM_VERSION"
1801 else
1802     echo "        llvm:            no"
1803 fi
1804
1805 echo ""
1806 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
1807     echo "        Gallium:         yes"
1808     echo "        Gallium dirs:    $GALLIUM_DIRS"
1809     echo "        Target dirs:     $GALLIUM_TARGET_DIRS"
1810     echo "        Winsys dirs:     $GALLIUM_WINSYS_DIRS"
1811     echo "        Driver dirs:     $GALLIUM_DRIVERS_DIRS"
1812     echo "        Trackers dirs:   $GALLIUM_STATE_TRACKERS_DIRS"
1813 else
1814     echo "        Gallium:         no"
1815 fi
1816
1817 dnl Libraries
1818 echo ""
1819 echo "        Shared libs:     $enable_shared"
1820 echo "        Static libs:     $enable_static"
1821
1822 dnl Compiler options
1823 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
1824 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1825     $SED 's/^ *//;s/  */ /;s/ *$//'`
1826 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1827     $SED 's/^ *//;s/  */ /;s/ *$//'`
1828 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/  */ /;s/ *$//'`
1829 echo ""
1830 echo "        CFLAGS:          $cflags"
1831 echo "        CXXFLAGS:        $cxxflags"
1832 echo "        Macros:          $defines"
1833 echo ""
1834 echo "        PYTHON2:         $PYTHON2"
1835
1836 echo ""
1837 echo "        Run '${MAKE-make}' to build Mesa"
1838 echo ""