OSDN Git Service

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