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