OSDN Git Service

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