OSDN Git Service

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