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