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