Merge branch 'mesa_7_7_branch'
[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'])])
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.15
22 LIBDRM_RADEON_REQUIRED=2.4.17
23 DRI2PROTO_REQUIRED=2.2
24 GLPROTO_REQUIRED=1.4.11
25
26 dnl Check for progs
27 AC_PROG_CPP
28 AC_PROG_CC
29 AC_PROG_CXX
30 AC_CHECK_PROGS([MAKE], [gmake make])
31 AC_PATH_PROG([MKDEP], [makedepend])
32 AC_PATH_PROG([SED], [sed])
33
34 dnl Our fallback install-sh is a symlink to minstall. Use the existing
35 dnl configuration in that case.
36 AC_PROG_INSTALL
37 test "x$INSTALL" = "x$ac_install_sh" && INSTALL='$(MINSTALL)'
38
39 dnl We need a POSIX shell for parts of the build. Assume we have one
40 dnl in most cases.
41 case "$host_os" in
42 solaris*)
43     # Solaris /bin/sh is too old/non-POSIX compliant
44     AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
45     SHELL="$POSIX_SHELL"
46     ;;
47 esac
48
49 MKDEP_OPTIONS=-fdepend
50 dnl Ask gcc where it's keeping its secret headers
51 if test "x$GCC" = xyes; then
52     for dir in include include-fixed; do
53         GCC_INCLUDES=`$CC -print-file-name=$dir`
54         if test "x$GCC_INCLUDES" != x && \
55            test "$GCC_INCLUDES" != "$dir" && \
56            test -d "$GCC_INCLUDES"; then
57             MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
58         fi
59     done
60 fi
61 AC_SUBST([MKDEP_OPTIONS])
62
63 dnl Make sure the pkg-config macros are defined
64 m4_ifndef([PKG_PROG_PKG_CONFIG],
65     [m4_fatal([Could not locate the pkg-config autoconf macros.
66   These are usually located in /usr/share/aclocal/pkg.m4. If your macros
67   are in a different location, try setting the environment variable
68   ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
69 PKG_PROG_PKG_CONFIG()
70
71 dnl LIB_DIR - library basename
72 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
73 AC_SUBST([LIB_DIR])
74
75 dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
76 _SAVE_LDFLAGS="$LDFLAGS"
77 AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker])
78 AC_SUBST([EXTRA_LIB_PATH])
79
80 dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
81 _SAVE_CPPFLAGS="$CPPFLAGS"
82 AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers])
83 AC_SUBST([X11_INCLUDES])
84
85 dnl Compiler macros
86 DEFINES=""
87 AC_SUBST([DEFINES])
88 case "$host_os" in
89 linux*|*-gnu*|gnu*)
90     DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS"
91     ;;
92 solaris*)
93     DEFINES="$DEFINES -DPTHREADS -DSVR4"
94     ;;
95 esac
96
97 dnl Add flags for gcc and g++
98 if test "x$GCC" = xyes; then
99     CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99 -ffast-math -fvisibility=hidden"
100
101     # Work around aliasing bugs - developers should comment this out
102     CFLAGS="$CFLAGS -fno-strict-aliasing"
103 fi
104 if test "x$GXX" = xyes; then
105     CXXFLAGS="$CXXFLAGS -Wall"
106
107     # Work around aliasing bugs - developers should comment this out
108     CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
109 fi
110
111 dnl These should be unnecessary, but let the user set them if they want
112 AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
113     Default is to use CFLAGS.])
114 AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
115     compiler. Default is to use CFLAGS.])
116 AC_SUBST([OPT_FLAGS])
117 AC_SUBST([ARCH_FLAGS])
118
119 dnl
120 dnl Hacks to enable 32 or 64 bit build
121 dnl
122 AC_ARG_ENABLE([32-bit],
123     [AS_HELP_STRING([--enable-32-bit],
124         [build 32-bit libraries @<:@default=auto@:>@])],
125     [enable_32bit="$enableval"],
126     [enable_32bit=auto]
127 )
128 if test "x$enable_32bit" = xyes; then
129     if test "x$GCC" = xyes; then
130         CFLAGS="$CFLAGS -m32"
131         ARCH_FLAGS="$ARCH_FLAGS -m32"
132     fi
133     if test "x$GXX" = xyes; then
134         CXXFLAGS="$CXXFLAGS -m32"
135     fi
136 fi
137 AC_ARG_ENABLE([64-bit],
138     [AS_HELP_STRING([--enable-64-bit],
139         [build 64-bit libraries @<:@default=auto@:>@])],
140     [enable_64bit="$enableval"],
141     [enable_64bit=auto]
142 )
143 if test "x$enable_64bit" = xyes; then
144     if test "x$GCC" = xyes; then
145         CFLAGS="$CFLAGS -m64"
146     fi
147     if test "x$GXX" = xyes; then
148         CXXFLAGS="$CXXFLAGS -m64"
149     fi
150 fi
151
152 dnl
153 dnl shared/static libraries, mimic libtool options
154 dnl
155 AC_ARG_ENABLE([static],
156     [AS_HELP_STRING([--enable-static],
157         [build static libraries @<:@default=disabled@:>@])],
158     [enable_static="$enableval"],
159     [enable_static=no]
160 )
161 case "x$enable_static" in
162 xyes|xno ) ;;
163 x ) enable_static=no ;;
164 * )
165     AC_MSG_ERROR([Static library option '$enable_static' is not a valid])
166     ;;
167 esac
168 AC_ARG_ENABLE([shared],
169     [AS_HELP_STRING([--disable-shared],
170         [build shared libraries @<:@default=enabled@:>@])],
171     [enable_shared="$enableval"],
172     [enable_shared=yes]
173 )
174 case "x$enable_shared" in
175 xyes|xno ) ;;
176 x ) enable_shared=yes ;;
177 * )
178     AC_MSG_ERROR([Shared library option '$enable_shared' is not a valid])
179     ;;
180 esac
181
182 dnl Can't have static and shared libraries, default to static if user
183 dnl explicitly requested. If both disabled, set to static since shared
184 dnl was explicitly requirested.
185 case "x$enable_static$enable_shared" in
186 xyesyes )
187     AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
188     enable_shared=no
189     ;;
190 xnono )
191     AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
192     enable_static=yes
193     ;;
194 esac
195
196 dnl
197 dnl mklib options
198 dnl
199 AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
200 if test "$enable_static" = yes; then
201     MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
202 fi
203 AC_SUBST([MKLIB_OPTIONS])
204
205 dnl
206 dnl other compiler options
207 dnl
208 AC_ARG_ENABLE([debug],
209     [AS_HELP_STRING([--enable-debug],
210         [use debug compiler flags and macros @<:@default=disabled@:>@])],
211     [enable_debug="$enableval"],
212     [enable_debug=no]
213 )
214 if test "x$enable_debug" = xyes; then
215     DEFINES="$DEFINES -DDEBUG"
216     if test "x$GCC" = xyes; then
217         CFLAGS="$CFLAGS -g"
218     fi
219     if test "x$GXX" = xyes; then
220         CXXFLAGS="$CXXFLAGS -g"
221     fi
222 fi
223
224 dnl
225 dnl library names
226 dnl
227 if test "$enable_static" = yes; then
228     LIB_EXTENSION='a'
229 else
230     case "$host_os" in
231     darwin* )
232         LIB_EXTENSION='dylib' ;;
233     cygwin* )
234         LIB_EXTENSION='dll' ;;
235     aix* )
236         LIB_EXTENSION='a' ;;
237     * )
238         LIB_EXTENSION='so' ;;
239     esac
240 fi
241
242 GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
243 GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
244 GLUT_LIB_NAME='lib$(GLUT_LIB).'${LIB_EXTENSION}
245 GLW_LIB_NAME='lib$(GLW_LIB).'${LIB_EXTENSION}
246 OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
247 EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
248
249 GL_LIB_GLOB='lib$(GL_LIB).*'${LIB_EXTENSION}'*'
250 GLU_LIB_GLOB='lib$(GLU_LIB).*'${LIB_EXTENSION}'*'
251 GLUT_LIB_GLOB='lib$(GLUT_LIB).*'${LIB_EXTENSION}'*'
252 GLW_LIB_GLOB='lib$(GLW_LIB).*'${LIB_EXTENSION}'*'
253 OSMESA_LIB_GLOB='lib$(OSMESA_LIB).*'${LIB_EXTENSION}'*'
254 EGL_LIB_GLOB='lib$(EGL_LIB).*'${LIB_EXTENSION}'*'
255
256 AC_SUBST([GL_LIB_NAME])
257 AC_SUBST([GLU_LIB_NAME])
258 AC_SUBST([GLUT_LIB_NAME])
259 AC_SUBST([GLW_LIB_NAME])
260 AC_SUBST([OSMESA_LIB_NAME])
261 AC_SUBST([EGL_LIB_NAME])
262
263 AC_SUBST([GL_LIB_GLOB])
264 AC_SUBST([GLU_LIB_GLOB])
265 AC_SUBST([GLUT_LIB_GLOB])
266 AC_SUBST([GLW_LIB_GLOB])
267 AC_SUBST([OSMESA_LIB_GLOB])
268 AC_SUBST([EGL_LIB_GLOB])
269
270 dnl
271 dnl Arch/platform-specific settings
272 dnl
273 AC_ARG_ENABLE([asm],
274     [AS_HELP_STRING([--disable-asm],
275         [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
276     [enable_asm="$enableval"],
277     [enable_asm=yes]
278 )
279 asm_arch=""
280 ASM_FLAGS=""
281 MESA_ASM_SOURCES=""
282 GLAPI_ASM_SOURCES=""
283 AC_MSG_CHECKING([whether to enable assembly])
284 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
285 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
286 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
287     case "$host_cpu" in
288     i?86 | x86_64)
289         enable_asm=no
290         AC_MSG_RESULT([no, cross compiling])
291         ;;
292     esac
293 fi
294 # check for supported arches
295 if test "x$enable_asm" = xyes; then
296     case "$host_cpu" in
297     i?86)
298         case "$host_os" in
299         linux* | *freebsd* | dragonfly*)
300             test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
301             ;;
302         esac
303         ;;
304     x86_64)
305         case "$host_os" in
306         linux* | *freebsd* | dragonfly*)
307             test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
308             ;;
309         esac
310         ;;
311     powerpc)
312         case "$host_os" in
313         linux*)
314             asm_arch=ppc
315             ;;
316         esac
317         ;;
318     sparc*)
319         case "$host_os" in
320         linux*)
321             asm_arch=sparc
322             ;;
323         esac
324         ;;
325     esac
326
327     case "$asm_arch" in
328     x86)
329         ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
330         MESA_ASM_SOURCES='$(X86_SOURCES)'
331         GLAPI_ASM_SOURCES='$(X86_API)'
332         AC_MSG_RESULT([yes, x86])
333         ;;
334     x86_64)
335         ASM_FLAGS="-DUSE_X86_64_ASM"
336         MESA_ASM_SOURCES='$(X86-64_SOURCES)'
337         GLAPI_ASM_SOURCES='$(X86-64_API)'
338         AC_MSG_RESULT([yes, x86_64])
339         ;;
340     ppc)
341         ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM"
342         MESA_ASM_SOURCES='$(PPC_SOURCES)'
343         AC_MSG_RESULT([yes, ppc])
344         ;;
345     sparc)
346         ASM_FLAGS="-DUSE_SPARC_ASM"
347         MESA_ASM_SOURCES='$(SPARC_SOURCES)'
348         GLAPI_ASM_SOURCES='$(SPARC_API)'
349         AC_MSG_RESULT([yes, sparc])
350         ;;
351     *)
352         AC_MSG_RESULT([no, platform not supported])
353         ;;
354     esac
355 fi
356 AC_SUBST([ASM_FLAGS])
357 AC_SUBST([MESA_ASM_SOURCES])
358 AC_SUBST([GLAPI_ASM_SOURCES])
359
360 dnl PIC code macro
361 MESA_PIC_FLAGS
362
363 dnl Check to see if dlopen is in default libraries (like Solaris, which
364 dnl has it in libc), or if libdl is needed to get it.
365 AC_CHECK_FUNC([dlopen], [],
366     [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
367
368 dnl See if posix_memalign is available
369 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
370
371 dnl SELinux awareness.
372 AC_ARG_ENABLE([selinux],
373     [AS_HELP_STRING([--enable-selinux],
374         [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
375     [MESA_SELINUX="$enableval"],
376     [MESA_SELINUX=no])
377 if test "x$enable_selinux" = "xyes"; then
378     AC_CHECK_HEADER([selinux/selinux.h],[],
379                     [AC_MSG_ERROR([SELinux headers not found])])
380     AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
381                  [AC_MSG_ERROR([SELinux library not found])])
382     SELINUX_LIBS="-lselinux"
383     DEFINES="$DEFINES -DMESA_SELINUX"
384 fi
385
386 dnl
387 dnl Driver configuration. Options are xlib, dri and osmesa right now.
388 dnl More later: directfb, fbdev, ...
389 dnl
390 default_driver="xlib"
391
392 case "$host_os" in
393 linux*)
394     case "$host_cpu" in
395     i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
396     esac
397     ;;
398 *freebsd* | dragonfly*)
399     case "$host_cpu" in
400     i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
401     esac
402     ;;
403 esac
404
405 AC_ARG_WITH([driver],
406     [AS_HELP_STRING([--with-driver=DRIVER],
407         [driver for Mesa: xlib,dri,osmesa @<:@default=dri when available, or xlib@:>@])],
408     [mesa_driver="$withval"],
409     [mesa_driver="$default_driver"])
410 dnl Check for valid option
411 case "x$mesa_driver" in
412 xxlib|xdri|xosmesa)
413     ;;
414 *)
415     AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
416     ;;
417 esac
418
419 dnl
420 dnl Driver specific build directories
421 dnl
422 SRC_DIRS="glsl mesa glew"
423 GLU_DIRS="sgi"
424 WINDOW_SYSTEM=""
425 GALLIUM_DIRS="auxiliary drivers state_trackers"
426 GALLIUM_WINSYS_DIRS=""
427 GALLIUM_WINSYS_DRM_DIRS=""
428 GALLIUM_DRIVERS_DIRS="softpipe failover trace identity"
429 GALLIUM_STATE_TRACKERS_DIRS=""
430
431 case "$mesa_driver" in
432 xlib)
433     DRIVER_DIRS="x11"
434     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS xlib"
435     ;;
436 dri)
437     SRC_DIRS="glx/x11 $SRC_DIRS"
438     DRIVER_DIRS="dri"
439     WINDOW_SYSTEM="dri"
440     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS drm"
441     ;;
442 osmesa)
443     DRIVER_DIRS="osmesa"
444     ;;
445 esac
446 AC_SUBST([SRC_DIRS])
447 AC_SUBST([GLU_DIRS])
448 AC_SUBST([DRIVER_DIRS])
449 AC_SUBST([WINDOW_SYSTEM])
450 AC_SUBST([GALLIUM_DIRS])
451 AC_SUBST([GALLIUM_WINSYS_DIRS])
452 AC_SUBST([GALLIUM_WINSYS_DRM_DIRS])
453 AC_SUBST([GALLIUM_DRIVERS_DIRS])
454 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
455
456 dnl
457 dnl User supplied program configuration
458 dnl
459 if test -d "$srcdir/progs/demos"; then
460     default_demos=yes
461 else
462     default_demos=no
463 fi
464 AC_ARG_WITH([demos],
465     [AS_HELP_STRING([--with-demos@<:@=DIRS...@:>@],
466         [optional comma delimited demo directories to build
467         @<:@default=auto if source available@:>@])],
468     [with_demos="$withval"],
469     [with_demos="$default_demos"])
470 if test "x$with_demos" = x; then
471     with_demos=no
472 fi
473
474 dnl If $with_demos is yes, directories will be added as libs available
475 PROGRAM_DIRS=""
476 case "$with_demos" in
477 no) ;;
478 yes)
479     # If the driver isn't osmesa, we have libGL and can build xdemos
480     if test "$mesa_driver" != osmesa; then
481         PROGRAM_DIRS="xdemos"
482     fi
483     ;;
484 *)
485     # verify the requested demos directories exist
486     demos=`IFS=,; echo $with_demos`
487     for demo in $demos; do
488         test -d "$srcdir/progs/$demo" || \
489             AC_MSG_ERROR([Program directory '$demo' doesn't exist])
490     done
491     PROGRAM_DIRS="$demos"
492     ;;
493 esac
494
495 dnl
496 dnl Find out if X is available. The variable have_x is set if libX11 is
497 dnl found to mimic AC_PATH_XTRA.
498 dnl
499 if test -n "$PKG_CONFIG"; then
500     AC_MSG_CHECKING([pkg-config files for X11 are available])
501     PKG_CHECK_EXISTS([x11],[
502         x11_pkgconfig=yes
503         have_x=yes
504         ],[
505         x11_pkgconfig=no
506     ])
507     AC_MSG_RESULT([$x11_pkgconfig])
508 else
509     x11_pkgconfig=no
510 fi
511 dnl Use the autoconf macro if no pkg-config files
512 if test "$x11_pkgconfig" = no; then
513     AC_PATH_XTRA
514 fi
515
516 dnl Try to tell the user that the --x-* options are only used when
517 dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
518 m4_divert_once([HELP_BEGIN],
519 [These options are only used when the X libraries cannot be found by the
520 pkg-config utility.])
521
522 dnl We need X for xlib and dri, so bomb now if it's not found
523 case "$mesa_driver" in
524 xlib|dri)
525     if test "$no_x" = yes; then
526         AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver])
527     fi
528     ;;
529 esac
530
531 dnl XCB - this is only used for GLX right now
532 AC_ARG_ENABLE([xcb],
533     [AS_HELP_STRING([--enable-xcb],
534         [use XCB for GLX @<:@default=disabled@:>@])],
535     [enable_xcb="$enableval"],
536     [enable_xcb=no])
537 if test "x$enable_xcb" = xyes; then
538     DEFINES="$DEFINES -DUSE_XCB"
539 else
540     enable_xcb=no
541 fi
542
543 dnl
544 dnl libGL configuration per driver
545 dnl
546 case "$mesa_driver" in
547 xlib)
548     if test "$x11_pkgconfig" = yes; then
549         PKG_CHECK_MODULES([XLIBGL], [x11 xext])
550         GL_PC_REQ_PRIV="x11 xext"
551         X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
552         GL_LIB_DEPS="$XLIBGL_LIBS"
553     else
554         # should check these...
555         X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
556         GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
557         GL_PC_LIB_PRIV="$GL_LIB_DEPS"
558         GL_PC_CFLAGS="$X11_INCLUDES"
559     fi
560     GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread"
561     GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
562
563     # if static, move the external libraries to the programs
564     # and empty the libraries for libGL
565     if test "$enable_static" = yes; then
566         APP_LIB_DEPS="$APP_LIB_DEPS $GL_LIB_DEPS"
567         GL_LIB_DEPS=""
568     fi
569     ;;
570 dri)
571     # DRI must be shared, I think
572     if test "$enable_static" = yes; then
573         AC_MSG_ERROR([Can't use static libraries for DRI drivers])
574     fi
575
576     # Check for libdrm
577     PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED])
578     PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
579     PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
580     GL_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED glproto >= $GLPROTO_REQUIRED"
581     DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
582
583     # find the DRI deps for libGL
584     if test "$x11_pkgconfig" = yes; then
585         # add xcb modules if necessary
586         dri_modules="x11 xext xxf86vm xdamage xfixes"
587         if test "$enable_xcb" = yes; then
588             dri_modules="$dri_modules x11-xcb xcb-glx"
589         fi
590
591         PKG_CHECK_MODULES([DRIGL], [$dri_modules])
592         GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
593         X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
594         GL_LIB_DEPS="$DRIGL_LIBS"
595     else
596         # should check these...
597         X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
598         GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
599         GL_PC_LIB_PRIV="$GL_LIB_DEPS"
600         GL_PC_CFLAGS="$X11_INCLUDES"
601
602         # XCB can only be used from pkg-config
603         if test "$enable_xcb" = yes; then
604             PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
605             GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
606             X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
607             GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
608         fi
609     fi
610
611     # need DRM libs, -lpthread, etc.
612     GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
613     GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
614     ;;
615 osmesa)
616     # No libGL for osmesa
617     GL_LIB_DEPS=""
618     ;;
619 esac
620 AC_SUBST([GL_LIB_DEPS])
621 AC_SUBST([GL_PC_REQ_PRIV])
622 AC_SUBST([GL_PC_LIB_PRIV])
623 AC_SUBST([GL_PC_CFLAGS])
624 AC_SUBST([DRI_PC_REQ_PRIV])
625
626 dnl
627 dnl More X11 setup
628 dnl
629 if test "$mesa_driver" = xlib; then
630     DEFINES="$DEFINES -DUSE_XSHM"
631 fi
632
633 dnl
634 dnl More DRI setup
635 dnl
636 AC_ARG_ENABLE([glx-tls],
637     [AS_HELP_STRING([--enable-glx-tls],
638         [enable TLS support in GLX @<:@default=disabled@:>@])],
639     [GLX_USE_TLS="$enableval"],
640     [GLX_USE_TLS=no])
641 dnl Directory for DRI drivers
642 AC_ARG_WITH([dri-driverdir],
643     [AS_HELP_STRING([--with-dri-driverdir=DIR],
644         [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
645     [DRI_DRIVER_INSTALL_DIR="$withval"],
646     [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
647 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
648 dnl Extra search path for DRI drivers
649 AC_ARG_WITH([dri-searchpath],
650     [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
651         [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
652     [DRI_DRIVER_SEARCH_DIR="$withval"],
653     [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
654 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
655 dnl Direct rendering or just indirect rendering
656 AC_ARG_ENABLE([driglx-direct],
657     [AS_HELP_STRING([--disable-driglx-direct],
658         [enable direct rendering in GLX for DRI @<:@default=enabled@:>@])],
659     [driglx_direct="$enableval"],
660     [driglx_direct="yes"])
661 dnl Which drivers to build - default is chosen by platform
662 AC_ARG_WITH([dri-drivers],
663     [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
664         [comma delimited DRI drivers list, e.g.
665         "swrast,i965,radeon" @<:@default=auto@:>@])],
666     [with_dri_drivers="$withval"],
667     [with_dri_drivers=yes])
668 if test "x$with_dri_drivers" = x; then
669     with_dri_drivers=no
670 fi
671
672 dnl If $with_dri_drivers is yes, directories will be added through
673 dnl platform checks
674 DRI_DIRS=""
675 case "$with_dri_drivers" in
676 no) ;;
677 yes)
678     DRI_DIRS="yes"
679     ;;
680 *)
681     # verify the requested driver directories exist
682     dri_drivers=`IFS=', '; echo $with_dri_drivers`
683     for driver in $dri_drivers; do
684         test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
685             AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
686     done
687     DRI_DIRS="$dri_drivers"
688     ;;
689 esac
690
691 dnl Just default to no EGL for now
692 USING_EGL=0
693 AC_SUBST([USING_EGL])
694
695 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
696 if test "$mesa_driver" = dri; then
697     # Use TLS in GLX?
698     if test "x$GLX_USE_TLS" = xyes; then
699         DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS"
700     fi
701
702     if test "x$USING_EGL" = x1; then
703         PROGRAM_DIRS="egl"
704     fi
705
706     # Platform specific settings and drivers to build
707     case "$host_os" in
708     linux*)
709         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
710         if test "x$driglx_direct" = xyes; then
711             DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
712         fi
713         DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
714
715         case "$host_cpu" in
716         x86_64)
717             # ffb, gamma, and sis are missing because they have not be
718             # converted to use the new interface.  i810 are missing
719             # because there is no x86-64 system where they could *ever*
720             # be used.
721             if test "x$DRI_DIRS" = "xyes"; then
722                 DRI_DIRS="i915 i965 mach64 mga r128 r200 r300 r600 radeon \
723                     savage tdfx unichrome swrast"
724             fi
725             ;;
726         powerpc*)
727             # Build only the drivers for cards that exist on PowerPC.
728             # At some point MGA will be added, but not yet.
729             if test "x$DRI_DIRS" = "xyes"; then
730                 DRI_DIRS="mach64 r128 r200 r300 r600 radeon tdfx swrast"
731             fi
732             ;;
733         sparc*)
734             # Build only the drivers for cards that exist on sparc`
735             if test "x$DRI_DIRS" = "xyes"; then
736                 DRI_DIRS="mach64 r128 r200 r300 r600 radeon ffb swrast"
737             fi
738             ;;
739         esac
740         ;;
741     freebsd* | dragonfly*)
742         DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
743         DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
744         DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
745         if test "x$driglx_direct" = xyes; then
746             DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
747         fi
748         if test "x$GXX" = xyes; then
749             CXXFLAGS="$CXXFLAGS -ansi -pedantic"
750         fi
751
752         # ffb and gamma are missing because they have not been converted
753         # to use the new interface.
754         if test "x$DRI_DIRS" = "xyes"; then
755             DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon tdfx \
756                 unichrome savage sis swrast"
757         fi
758         ;;
759     gnu*)
760         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
761         DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
762         ;;
763     solaris*)
764         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
765         DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
766         if test "x$driglx_direct" = xyes; then
767             DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
768         fi
769         ;;
770     esac
771
772     # default drivers
773     if test "x$DRI_DIRS" = "xyes"; then
774         DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon \
775             savage sis tdfx unichrome ffb swrast"
776     fi
777
778     DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/  */ /g'`
779
780     # Check for expat
781     EXPAT_INCLUDES=""
782     EXPAT_LIB=-lexpat
783     AC_ARG_WITH([expat],
784         [AS_HELP_STRING([--with-expat=DIR],
785             [expat install directory])],[
786         EXPAT_INCLUDES="-I$withval/include"
787         CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
788         LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
789         EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
790         ])
791     AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
792     AC_CHECK_LIB([expat],[XML_ParserCreate],[],
793         [AC_MSG_ERROR([Expat required for DRI.])])
794
795     # put all the necessary libs together
796     DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
797 fi
798 AC_SUBST([DRI_DIRS])
799 AC_SUBST([EXPAT_INCLUDES])
800 AC_SUBST([DRI_LIB_DEPS])
801
802 case $DRI_DIRS in
803 *i915*|*i965*)
804     PKG_CHECK_MODULES([INTEL], [libdrm_intel])
805     ;;
806 esac
807
808 case $DRI_DIRS in
809 *radeon*|*r200*|*r300*|*r600*)
810     PKG_CHECK_MODULES([LIBDRM_RADEON],
811                       [libdrm_radeon libdrm >= $LIBDRM_RADEON_REQUIRED],
812                       HAVE_LIBDRM_RADEON=yes,
813                       HAVE_LIBDRM_RADEON=no)
814
815     if test "$HAVE_LIBDRM_RADEON" = yes; then
816         RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS"
817         RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS
818     fi
819     ;;
820 esac
821 AC_SUBST([RADEON_CFLAGS])
822 AC_SUBST([RADEON_LDFLAGS])
823
824
825 dnl
826 dnl OSMesa configuration
827 dnl
828 if test "$mesa_driver" = xlib; then
829     default_gl_osmesa=yes
830 else
831     default_gl_osmesa=no
832 fi
833 AC_ARG_ENABLE([gl-osmesa],
834     [AS_HELP_STRING([--enable-gl-osmesa],
835         [enable OSMesa on libGL @<:@default=enabled for xlib driver@:>@])],
836     [gl_osmesa="$enableval"],
837     [gl_osmesa="$default_gl_osmesa"])
838 if test "x$gl_osmesa" = xyes; then
839     if test "$mesa_driver" = osmesa; then
840         AC_MSG_ERROR([libGL is not available for OSMesa driver])
841     else
842         DRIVER_DIRS="$DRIVER_DIRS osmesa"
843     fi
844 fi
845
846 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
847 AC_ARG_WITH([osmesa-bits],
848     [AS_HELP_STRING([--with-osmesa-bits=BITS],
849         [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
850     [osmesa_bits="$withval"],
851     [osmesa_bits=8])
852 if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
853     AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
854     osmesa_bits=8
855 fi
856 case "x$osmesa_bits" in
857 x8)
858     OSMESA_LIB=OSMesa
859     ;;
860 x16|x32)
861     OSMESA_LIB="OSMesa$osmesa_bits"
862     DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
863     ;;
864 *)
865     AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
866     ;;
867 esac
868 AC_SUBST([OSMESA_LIB])
869
870 case "$mesa_driver" in
871 osmesa)
872     # only link libraries with osmesa if shared
873     if test "$enable_static" = no; then
874         OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
875     else
876         OSMESA_LIB_DEPS=""
877     fi
878     OSMESA_MESA_DEPS=""
879     OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
880     ;;
881 *)
882     # Link OSMesa to libGL otherwise
883     OSMESA_LIB_DEPS=""
884     # only link libraries with osmesa if shared
885     if test "$enable_static" = no; then
886         OSMESA_MESA_DEPS='-l$(GL_LIB)'
887     else
888         OSMESA_MESA_DEPS=""
889     fi
890     OSMESA_PC_REQ="gl"
891     ;;
892 esac
893 OSMESA_PC_LIB_PRIV="$OSMESA_PC_LIB_PRIV"
894 AC_SUBST([OSMESA_LIB_DEPS])
895 AC_SUBST([OSMESA_MESA_DEPS])
896 AC_SUBST([OSMESA_PC_REQ])
897 AC_SUBST([OSMESA_PC_LIB_PRIV])
898
899 dnl
900 dnl EGL configuration
901 dnl
902 AC_ARG_ENABLE([egl],
903     [AS_HELP_STRING([--disable-egl],
904         [disable EGL library @<:@default=enabled@:>@])],
905     [enable_egl="$enableval"],
906     [enable_egl=yes])
907 if test "x$enable_egl" = xyes; then
908     SRC_DIRS="$SRC_DIRS egl"
909     EGL_LIB_DEPS="$DLOPEN_LIBS -lpthread"
910     EGL_DRIVERS_DIRS=""
911     if test "$enable_static" != yes && test "$mesa_driver" != osmesa; then
912         # build egl_glx when libGL is built
913         EGL_DRIVERS_DIRS="glx"
914     fi
915 fi
916 AC_SUBST([EGL_LIB_DEPS])
917 AC_SUBST([EGL_DRIVERS_DIRS])
918
919 dnl
920 dnl GLU configuration
921 dnl
922 AC_ARG_ENABLE([glu],
923     [AS_HELP_STRING([--disable-glu],
924         [enable OpenGL Utility library @<:@default=enabled@:>@])],
925     [enable_glu="$enableval"],
926     [enable_glu=yes])
927 if test "x$enable_glu" = xyes; then
928     SRC_DIRS="$SRC_DIRS glu"
929
930     case "$mesa_driver" in
931     osmesa)
932         # If GLU is available and we have libOSMesa (not 16 or 32),
933         # we can build the osdemos
934         if test "$with_demos" = yes && test "$osmesa_bits" = 8; then
935             PROGRAM_DIRS="$PROGRAM_DIRS osdemos"
936         fi
937
938         # Link libGLU to libOSMesa instead of libGL
939         GLU_LIB_DEPS=""
940         GLU_PC_REQ="osmesa"
941         if test "$enable_static" = no; then
942             GLU_MESA_DEPS='-l$(OSMESA_LIB)'
943         else
944             GLU_MESA_DEPS=""
945         fi
946         ;;
947     *)
948         # If static, empty GLU_LIB_DEPS and add libs for programs to link
949         GLU_PC_REQ="gl"
950         GLU_PC_LIB_PRIV="-lm"
951         if test "$enable_static" = no; then
952             GLU_LIB_DEPS="-lm"
953             GLU_MESA_DEPS='-l$(GL_LIB)'
954         else
955             GLU_LIB_DEPS=""
956             GLU_MESA_DEPS=""
957             APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
958         fi
959         ;;
960     esac
961 fi
962 if test "$enable_static" = no; then
963     GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
964 fi
965 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
966 AC_SUBST([GLU_LIB_DEPS])
967 AC_SUBST([GLU_MESA_DEPS])
968 AC_SUBST([GLU_PC_REQ])
969 AC_SUBST([GLU_PC_REQ_PRIV])
970 AC_SUBST([GLU_PC_LIB_PRIV])
971 AC_SUBST([GLU_PC_CFLAGS])
972
973 dnl
974 dnl GLw configuration
975 dnl
976 AC_ARG_ENABLE([glw],
977     [AS_HELP_STRING([--disable-glw],
978         [enable Xt/Motif widget library @<:@default=enabled@:>@])],
979     [enable_glw="$enableval"],
980     [enable_glw=yes])
981 dnl Don't build GLw on osmesa
982 if test "x$enable_glw" = xyes && test "$mesa_driver" = osmesa; then
983     AC_MSG_WARN([Disabling GLw since the driver is OSMesa])
984     enable_glw=no
985 fi
986 AC_ARG_ENABLE([motif],
987     [AS_HELP_STRING([--enable-motif],
988         [use Motif widgets in GLw @<:@default=disabled@:>@])],
989     [enable_motif="$enableval"],
990     [enable_motif=no])
991
992 if test "x$enable_glw" = xyes; then
993     SRC_DIRS="$SRC_DIRS glw"
994     if test "$x11_pkgconfig" = yes; then
995         PKG_CHECK_MODULES([GLW],[x11 xt])
996         GLW_PC_REQ_PRIV="x11 xt"
997         GLW_LIB_DEPS="$GLW_LIBS"
998     else
999         # should check these...
1000         GLW_LIB_DEPS="$X_LIBS -lXt -lX11"
1001         GLW_PC_LIB_PRIV="$GLW_LIB_DEPS"
1002         GLW_PC_CFLAGS="$X11_INCLUDES"
1003     fi
1004
1005     GLW_SOURCES="GLwDrawA.c"
1006     MOTIF_CFLAGS=
1007     if test "x$enable_motif" = xyes; then
1008         GLW_SOURCES="$GLW_SOURCES GLwMDrawA.c"
1009         AC_PATH_PROG([MOTIF_CONFIG], [motif-config], [no])
1010         if test "x$MOTIF_CONFIG" != xno; then
1011             MOTIF_CFLAGS=`$MOTIF_CONFIG --cflags`
1012             MOTIF_LIBS=`$MOTIF_CONFIG --libs`
1013         else
1014             AC_CHECK_HEADER([Xm/PrimitiveP.h], [],
1015                 [AC_MSG_ERROR([Can't locate Motif headers])])
1016             AC_CHECK_LIB([Xm], [XmGetPixmap], [MOTIF_LIBS="-lXm"],
1017                 [AC_MSG_ERROR([Can't locate Motif Xm library])])
1018         fi
1019         # MOTIF_LIBS is prepended to GLW_LIB_DEPS since Xm needs Xt/X11
1020         GLW_LIB_DEPS="$MOTIF_LIBS $GLW_LIB_DEPS"
1021         GLW_PC_LIB_PRIV="$MOTIF_LIBS $GLW_PC_LIB_PRIV"
1022         GLW_PC_CFLAGS="$MOTIF_CFLAGS $GLW_PC_CFLAGS"
1023     fi
1024
1025     # If static, empty GLW_LIB_DEPS and add libs for programs to link
1026     GLW_PC_LIB_PRIV="$GLW_PC_LIB_PRIV"
1027     if test "$enable_static" = no; then
1028         GLW_MESA_DEPS='-l$(GL_LIB)'
1029         GLW_LIB_DEPS="$GLW_LIB_DEPS"
1030     else
1031         APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
1032         GLW_LIB_DEPS=""
1033         GLW_MESA_DEPS=""
1034     fi
1035 fi
1036 AC_SUBST([GLW_LIB_DEPS])
1037 AC_SUBST([GLW_MESA_DEPS])
1038 AC_SUBST([GLW_SOURCES])
1039 AC_SUBST([MOTIF_CFLAGS])
1040 AC_SUBST([GLW_PC_REQ_PRIV])
1041 AC_SUBST([GLW_PC_LIB_PRIV])
1042 AC_SUBST([GLW_PC_CFLAGS])
1043
1044 dnl
1045 dnl GLUT configuration
1046 dnl
1047 if test -f "$srcdir/include/GL/glut.h"; then
1048     default_glut=yes
1049 else
1050     default_glut=no
1051 fi
1052 AC_ARG_ENABLE([glut],
1053     [AS_HELP_STRING([--disable-glut],
1054         [enable GLUT library @<:@default=enabled if source available@:>@])],
1055     [enable_glut="$enableval"],
1056     [enable_glut="$default_glut"])
1057
1058 dnl Can't build glut if GLU not available
1059 if test "x$enable_glu$enable_glut" = xnoyes; then
1060     AC_MSG_WARN([Disabling glut since GLU is disabled])
1061     enable_glut=no
1062 fi
1063 dnl Don't build glut on osmesa
1064 if test "x$enable_glut" = xyes && test "$mesa_driver" = osmesa; then
1065     AC_MSG_WARN([Disabling glut since the driver is OSMesa])
1066     enable_glut=no
1067 fi
1068
1069 if test "x$enable_glut" = xyes; then
1070     SRC_DIRS="$SRC_DIRS glut/glx"
1071     GLUT_CFLAGS=""
1072     if test "x$GCC" = xyes; then
1073         GLUT_CFLAGS="-fexceptions"
1074     fi
1075     if test "$x11_pkgconfig" = yes; then
1076         PKG_CHECK_MODULES([GLUT],[x11 xmu xi])
1077         GLUT_PC_REQ_PRIV="x11 xmu xi"
1078         GLUT_LIB_DEPS="$GLUT_LIBS"
1079     else
1080         # should check these...
1081         GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
1082         GLUT_PC_LIB_PRIV="$GLUT_LIB_DEPS"
1083         GLUT_PC_CFLAGS="$X11_INCLUDES"
1084     fi
1085     GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
1086     GLUT_PC_LIB_PRIV="$GLUT_PC_LIB_PRIV -lm"
1087
1088     # If glut is available, we can build most programs
1089     if test "$with_demos" = yes; then
1090         PROGRAM_DIRS="$PROGRAM_DIRS demos redbook samples glsl"
1091     fi
1092
1093     # If static, empty GLUT_LIB_DEPS and add libs for programs to link
1094     if test "$enable_static" = no; then
1095         GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
1096     else
1097         APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
1098         GLUT_LIB_DEPS=""
1099         GLUT_MESA_DEPS=""
1100     fi
1101 fi
1102 AC_SUBST([GLUT_LIB_DEPS])
1103 AC_SUBST([GLUT_MESA_DEPS])
1104 AC_SUBST([GLUT_CFLAGS])
1105 AC_SUBST([GLUT_PC_REQ_PRIV])
1106 AC_SUBST([GLUT_PC_LIB_PRIV])
1107 AC_SUBST([GLUT_PC_CFLAGS])
1108
1109 dnl
1110 dnl Program library dependencies
1111 dnl    Only libm is added here if necessary as the libraries should
1112 dnl    be pulled in by the linker
1113 dnl
1114 if test "x$APP_LIB_DEPS" = x; then
1115     case "$host_os" in
1116     solaris*)
1117         APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm"
1118         ;;
1119     cygwin*)
1120         APP_LIB_DEPS="-lX11"
1121         ;;
1122     *)
1123         APP_LIB_DEPS="-lm"
1124         ;;
1125     esac
1126 fi
1127 AC_SUBST([APP_LIB_DEPS])
1128 AC_SUBST([PROGRAM_DIRS])
1129
1130 dnl
1131 dnl Gallium configuration
1132 dnl
1133 AC_ARG_ENABLE([gallium],
1134     [AS_HELP_STRING([--disable-gallium],
1135         [build gallium @<:@default=enabled@:>@])],
1136     [enable_gallium="$enableval"],
1137     [enable_gallium=yes])
1138 if test "x$enable_gallium" = xyes; then
1139     SRC_DIRS="$SRC_DIRS gallium gallium/winsys"
1140 fi
1141
1142 dnl
1143 dnl Gallium state trackers configuration
1144 dnl
1145 AC_ARG_WITH([state-trackers],
1146     [AS_HELP_STRING([--with-state-trackers@<:@=DIRS...@:>@],
1147         [comma delimited state_trackers list, e.g.
1148         "egl,glx" @<:@default=auto@:>@])],
1149     [with_state_trackers="$withval"],
1150     [with_state_trackers=yes])
1151
1152 case "$with_state_trackers" in
1153 no)
1154     GALLIUM_STATE_TRACKERS_DIRS=""
1155     ;;
1156 yes)
1157     # look at what else is built
1158     case "$mesa_driver" in
1159     xlib)
1160         GALLIUM_STATE_TRACKERS_DIRS=glx
1161         ;;
1162     dri)
1163         GALLIUM_STATE_TRACKERS_DIRS="dri"
1164         if test "x$enable_egl" = xyes; then
1165             GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS egl egl_g3d"
1166         fi
1167         # Have only tested st/xorg on 1.6.0 servers
1168         PKG_CHECK_MODULES(XORG, [xorg-server >= 1.6.0],
1169             HAVE_XORG="yes"; GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg",
1170             HAVE_XORG="no")
1171         ;;
1172     esac
1173     ;;
1174 *)
1175     # verify the requested state tracker exist
1176     state_trackers=`IFS=', '; echo $with_state_trackers`
1177     for tracker in $state_trackers; do
1178         test -d "$srcdir/src/gallium/state_trackers/$tracker" || \
1179             AC_MSG_ERROR([state tracker '$tracker' doesn't exist])
1180
1181         if test "$tracker" = egl && test "x$enable_egl" != xyes; then
1182             AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1183         fi
1184         if test "$tracker" = xorg; then
1185             PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1186                   HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1187                   HAVE_XEXTPROTO_71="no")
1188         fi
1189     done
1190     GALLIUM_STATE_TRACKERS_DIRS="$state_trackers"
1191     ;;
1192 esac
1193
1194 AC_ARG_WITH([egl-displays],
1195     [AS_HELP_STRING([--with-egl-displays@<:@=DIRS...@:>@],
1196         [comma delimited native displays libEGL supports, e.g.
1197         "x11,kms" @<:@default=auto@:>@])],
1198     [with_egl_displays="$withval"],
1199     [with_egl_displays=yes])
1200
1201 EGL_DISPLAYS=""
1202 case "$with_egl_displays" in
1203 yes)
1204     if test "x$enable_egl" = xyes && test "x$mesa_driver" != xosmesa; then
1205         EGL_DISPLAYS="x11"
1206     fi
1207     ;;
1208 *)
1209     if test "x$enable_egl" != xyes; then
1210         AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1211     fi
1212     # verify the requested driver directories exist
1213     egl_displays=`IFS=', '; echo $with_egl_displays`
1214     for dpy in $egl_displays; do
1215         test -d "$srcdir/src/gallium/state_trackers/egl_g3d/$dpy" || \
1216             AC_MSG_ERROR([EGL display '$dpy' does't exist])
1217     done
1218     EGL_DISPLAYS="$egl_displays"
1219     ;;
1220 esac
1221 AC_SUBST([EGL_DISPLAYS])
1222
1223 AC_ARG_WITH([xorg-driver-dir],
1224     [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1225                     [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1226     [XORG_DRIVER_INSTALL_DIR="$withval"],
1227     [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1228 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1229
1230 AC_ARG_WITH([max-width],
1231     [AS_HELP_STRING([--with-max-width=N],
1232                     [Maximum framebuffer width (4096)])],
1233     [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1234      AS_IF([test "${withval}" -gt "4096"],
1235            [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1236 )
1237 AC_ARG_WITH([max-height],
1238     [AS_HELP_STRING([--with-max-height=N],
1239                     [Maximum framebuffer height (4096)])],
1240     [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1241      AS_IF([test "${withval}" -gt "4096"],
1242            [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1243 )
1244
1245 dnl
1246 dnl Gallium SVGA configuration
1247 dnl
1248 AC_ARG_ENABLE([gallium-svga],
1249     [AS_HELP_STRING([--enable-gallium-svga],
1250         [build gallium SVGA @<:@default=disabled@:>@])],
1251     [enable_gallium_svga="$enableval"],
1252     [enable_gallium_svga=auto])
1253 if test "x$enable_gallium_svga" = xyes; then
1254     GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS vmware"
1255     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1256 elif test "x$enable_gallium_svga" = xauto; then
1257     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1258 fi
1259
1260 dnl
1261 dnl Gallium Intel configuration
1262 dnl
1263 AC_ARG_ENABLE([gallium-intel],
1264     [AS_HELP_STRING([--enable-gallium-intel],
1265         [build gallium intel @<:@default=disabled@:>@])],
1266     [enable_gallium_intel="$enableval"],
1267     [enable_gallium_intel=auto])
1268 if test "x$enable_gallium_intel" = xyes; then
1269     GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS intel i965"
1270     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 i965"
1271 elif test "x$enable_gallium_intel" = xauto; then
1272     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 i965"
1273 fi
1274
1275 dnl
1276 dnl Gallium Radeon configuration
1277 dnl
1278 AC_ARG_ENABLE([gallium-radeon],
1279     [AS_HELP_STRING([--enable-gallium-radeon],
1280         [build gallium radeon @<:@default=disabled@:>@])],
1281     [enable_gallium_radeon="$enableval"],
1282     [enable_gallium_radeon=no])
1283 if test "x$enable_gallium_radeon" = xyes; then
1284     GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS radeon"
1285     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1286 fi
1287
1288 dnl
1289 dnl Gallium Nouveau configuration
1290 dnl
1291 AC_ARG_ENABLE([gallium-nouveau],
1292     [AS_HELP_STRING([--enable-gallium-nouveau],
1293         [build gallium nouveau @<:@default=disabled@:>@])],
1294     [enable_gallium_nouveau="$enableval"],
1295     [enable_gallium_nouveau=no])
1296 if test "x$enable_gallium_nouveau" = xyes; then
1297     GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS nouveau"
1298     GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nv04 nv10 nv20 nv30 nv40 nv50"
1299 fi
1300
1301
1302 dnl Restore LDFLAGS and CPPFLAGS
1303 LDFLAGS="$_SAVE_LDFLAGS"
1304 CPPFLAGS="$_SAVE_CPPFLAGS"
1305
1306 dnl Substitute the config
1307 AC_CONFIG_FILES([configs/autoconf])
1308
1309 dnl Replace the configs/current symlink
1310 AC_CONFIG_COMMANDS([configs],[
1311 if test -f configs/current || test -L configs/current; then
1312     rm -f configs/current
1313 fi
1314 ln -s autoconf configs/current
1315 ])
1316
1317 AC_OUTPUT
1318
1319 dnl
1320 dnl Output some configuration info for the user
1321 dnl
1322 echo ""
1323 echo "        prefix:          $prefix"
1324 echo "        exec_prefix:     $exec_prefix"
1325 echo "        libdir:          $libdir"
1326 echo "        includedir:      $includedir"
1327
1328 dnl Driver info
1329 echo ""
1330 echo "        Driver:          $mesa_driver"
1331 if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
1332     echo "        OSMesa:          lib$OSMESA_LIB"
1333 else
1334     echo "        OSMesa:          no"
1335 fi
1336 if test "$mesa_driver" = dri; then
1337     # cleanup the drivers var
1338     dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/  */ /;s/ *$//'`
1339 if test "x$DRI_DIRS" = x; then
1340     echo "        DRI drivers:     no"
1341 else
1342     echo "        DRI drivers:     $dri_dirs"
1343 fi
1344     echo "        DRI driver dir:  $DRI_DRIVER_INSTALL_DIR"
1345 fi
1346 echo "        Use XCB:         $enable_xcb"
1347
1348 echo ""
1349 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
1350     echo "        Gallium:         yes"
1351     echo "        Gallium dirs:    $GALLIUM_DIRS"
1352     echo "        Winsys dirs:     $GALLIUM_WINSYS_DIRS"
1353     echo "        Winsys drm dirs:$GALLIUM_WINSYS_DRM_DIRS"
1354     echo "        Driver dirs:     $GALLIUM_DRIVERS_DIRS"
1355     echo "        Trackers dirs:   $GALLIUM_STATE_TRACKERS_DIRS"
1356 else
1357     echo "        Gallium:         no"
1358 fi
1359
1360 dnl Libraries
1361 echo ""
1362 echo "        Shared libs:     $enable_shared"
1363 echo "        Static libs:     $enable_static"
1364 echo "        EGL:             $enable_egl"
1365 echo "        GLU:             $enable_glu"
1366 echo "        GLw:             $enable_glw (Motif: $enable_motif)"
1367 echo "        glut:            $enable_glut"
1368
1369 dnl Programs
1370 # cleanup the programs var for display
1371 program_dirs=`echo $PROGRAM_DIRS | $SED 's/^ *//;s/  */ /;s/ *$//'`
1372 if test "x$program_dirs" = x; then
1373     echo "        Demos:           no"
1374 else
1375     echo "        Demos:           $program_dirs"
1376 fi
1377
1378 dnl Compiler options
1379 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
1380 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1381     $SED 's/^ *//;s/  */ /;s/ *$//'`
1382 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1383     $SED 's/^ *//;s/  */ /;s/ *$//'`
1384 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/  */ /;s/ *$//'`
1385 echo ""
1386 echo "        CFLAGS:          $cflags"
1387 echo "        CXXFLAGS:        $cxxflags"
1388 echo "        Macros:          $defines"
1389
1390 echo ""
1391 echo "        Run '${MAKE-make}' to build Mesa"
1392 echo ""