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