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