OSDN Git Service

Merge commit 'origin/master' into drm-gem
[android-x86/external-mesa.git] / configure.ac
1 dnl Process this file with autoconf to create configure.
2
3 AC_PREREQ([2.59])
4
5 dnl Versioning - scrape the version from configs/default
6 m4_define([mesa_version],
7     [m4_esyscmd([${MAKE-make} -s -f bin/version.mk version | tr -d '\n'])])
8 m4_ifval(mesa_version,[],[
9     m4_errprint([Error: Failed to get the Mesa version from the output of
10        running `make -f bin/version.mk version'
11 ])
12     m4_exit([1])
13 ])
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.3.1
22 DRI2PROTO_REQUIRED=1.1
23
24 dnl Check for progs
25 AC_PROG_CPP
26 AC_PROG_CC
27 AC_PROG_CXX
28 AC_CHECK_PROGS([MAKE], [gmake make])
29 AC_PATH_PROG([MKDEP], [makedepend])
30 AC_PATH_PROG([SED], [sed])
31
32 MKDEP_OPTIONS=-fdepend
33 dnl Ask gcc where it's keeping its secret headers
34 if test "x$GCC" = xyes; then
35     GCC_INCLUDES=`$CC -print-file-name=include`
36     if test "x$GCC_INCLUDES" != x; then
37         MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
38     fi
39 fi
40 AC_SUBST([MKDEP_OPTIONS])
41
42 dnl Make sure the pkg-config macros are defined
43 m4_ifdef([PKG_PROG_PKG_CONFIG],[],[
44     m4_errprint([Error: Could not locate the pkg-config autoconf macros.
45        These are usually located in /usr/share/aclocal/pkg.m4. If your
46        macros are in a different location, try setting the environment
47        variable ACLOCAL="aclocal -I/other/macro/dir" before running
48        autoreconf.
49 ])
50     m4_exit([1])
51 ])
52 PKG_PROG_PKG_CONFIG()
53
54 dnl LIB_DIR - library basename
55 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
56 AC_SUBST([LIB_DIR])
57
58 dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
59 _SAVE_LDFLAGS="$LDFLAGS"
60 AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker])
61 AC_SUBST([EXTRA_LIB_PATH])
62
63 dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
64 _SAVE_CPPFLAGS="$CPPFLAGS"
65 AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers])
66 AC_SUBST([X11_INCLUDES])
67
68 dnl Compiler macros
69 DEFINES=""
70 AC_SUBST([DEFINES])
71 case "$host_os" in
72 linux*)
73 if test "x$GCC" = xyes; then
74     DEFINES="$DEFINES -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_BSD_SOURCE"
75 fi
76     DEFINES="$DEFINES -D_SVID_SOURCE -D_GNU_SOURCE -DPTHREADS -DHAVE_POSIX_MEMALIGN"
77     ;;
78 esac
79
80 dnl Add flags for gcc and g++
81 if test "x$GCC" = xyes; then
82     CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99 -ffast-math"
83
84     # Work around aliasing bugs - developers should comment this out
85     CFLAGS="$CFLAGS -fno-strict-aliasing"
86 fi
87 if test "x$GXX" = xyes; then
88     CXXFLAGS="$CXXFLAGS -Wall"
89
90     # Work around aliasing bugs - developers should comment this out
91     CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
92 fi
93
94 dnl These should be unnecessary, but let the user set them if they want
95 AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
96     Default is to use CFLAGS.])
97 AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
98     compiler. Default is to use CFLAGS.])
99 AC_SUBST([OPT_FLAGS])
100 AC_SUBST([ARCH_FLAGS])
101
102 dnl
103 dnl Hacks to enable 32 or 64 bit build
104 dnl
105 AC_ARG_ENABLE([32-bit],
106     [AS_HELP_STRING([--enable-32-bit],
107         [build 32-bit libraries @<:@default=auto@:>@])],
108     [enable_32bit="$enableval"],
109     [enable_32bit=auto]
110 )
111 if test "x$enable_32bit" = xyes; then
112     if test "x$GCC" = xyes; then
113         CFLAGS="$CFLAGS -m32"
114     fi
115     if test "x$GXX" = xyes; then
116         CXXFLAGS="$CXXFLAGS -m32"
117     fi
118 fi
119 AC_ARG_ENABLE([64-bit],
120     [AS_HELP_STRING([--enable-64-bit],
121         [build 64-bit libraries @<:@default=auto@:>@])],
122     [enable_64bit="$enableval"],
123     [enable_64bit=auto]
124 )
125 if test "x$enable_64bit" = xyes; then
126     if test "x$GCC" = xyes; then
127         CFLAGS="$CFLAGS -m64"
128     fi
129     if test "x$GXX" = xyes; then
130         CXXFLAGS="$CXXFLAGS -m64"
131     fi
132 fi
133
134 dnl
135 dnl shared/static libraries, mimic libtool options
136 dnl
137 AC_ARG_ENABLE([static],
138     [AS_HELP_STRING([--enable-static],
139         [build static libraries @<:@default=disabled@:>@])],
140     [enable_static="$enableval"],
141     [enable_static=no]
142 )
143 case "x$enable_static" in
144 xyes|xno ) ;;
145 x ) enable_static=no ;;
146 * )
147     AC_MSG_ERROR([Static library option '$enable_static' is not a valid])
148     ;;
149 esac
150 AC_ARG_ENABLE([shared],
151     [AS_HELP_STRING([--disable-shared],
152         [build shared libraries @<:@default=enabled@:>@])],
153     [enable_shared="$enableval"],
154     [enable_shared=yes]
155 )
156 case "x$enable_shared" in
157 xyes|xno ) ;;
158 x ) enable_shared=yes ;;
159 * )
160     AC_MSG_ERROR([Shared library option '$enable_shared' is not a valid])
161     ;;
162 esac
163
164 dnl Can't have static and shared libraries, default to static if user
165 dnl explicitly requested. If both disabled, set to static since shared
166 dnl was explicitly requirested.
167 case "x$enable_static$enable_shared" in
168 xyesyes )
169     AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
170     enable_shared=no
171     ;;
172 xnono )
173     AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
174     enable_static=yes
175     ;;
176 esac
177
178 dnl
179 dnl mklib options
180 dnl
181 AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
182 if test "$enable_static" = yes; then
183     MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
184 fi
185 AC_SUBST([MKLIB_OPTIONS])
186
187 dnl
188 dnl other compiler options
189 dnl
190 AC_ARG_ENABLE([debug],
191     [AS_HELP_STRING([--enable-debug],
192         [use debug compiler flags and macros @<:@default=disabled@:>@])],
193     [enable_debug="$enableval"],
194     [enable_debug=no]
195 )
196 if test "x$enable_debug" = xyes; then
197     DEFINES="$DEFINES -DDEBUG"
198     if test "x$GCC" = xyes; then
199         CFLAGS="$CFLAGS -g"
200     fi
201     if test "x$GXX" = xyes; then
202         CXXFLAGS="$CXXFLAGS -g"
203     fi
204 fi
205
206 dnl
207 dnl library names
208 dnl
209 if test "$enable_static" = yes; then
210     GL_LIB_NAME='lib$(GL_LIB).a'
211     GLU_LIB_NAME='lib$(GLU_LIB).a'
212     GLUT_LIB_NAME='lib$(GLUT_LIB).a'
213     GLW_LIB_NAME='lib$(GLW_LIB).a'
214     OSMESA_LIB_NAME='lib$(OSMESA_LIB).a'
215 else
216     GL_LIB_NAME='lib$(GL_LIB).so'
217     GLU_LIB_NAME='lib$(GLU_LIB).so'
218     GLUT_LIB_NAME='lib$(GLUT_LIB).so'
219     GLW_LIB_NAME='lib$(GLW_LIB).so'
220     OSMESA_LIB_NAME='lib$(OSMESA_LIB).so'
221 fi
222 AC_SUBST([GL_LIB_NAME])
223 AC_SUBST([GLU_LIB_NAME])
224 AC_SUBST([GLUT_LIB_NAME])
225 AC_SUBST([GLW_LIB_NAME])
226 AC_SUBST([OSMESA_LIB_NAME])
227
228 dnl
229 dnl Arch/platform-specific settings
230 dnl
231 AC_ARG_ENABLE([asm],
232     [AS_HELP_STRING([--disable-asm],
233         [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
234     [enable_asm="$enableval"],
235     [enable_asm=yes]
236 )
237 asm_arch=""
238 ASM_FLAGS=""
239 ASM_SOURCES=""
240 ASM_API=""
241 AC_MSG_CHECKING([whether to enable assembly])
242 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
243 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
244 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
245     case "$host_cpu" in
246     i?86 | x86_64)
247         enable_asm=no
248         AC_MSG_RESULT([no, cross compiling])
249         ;;
250     esac
251 fi
252 # check for supported arches
253 if test "x$enable_asm" = xyes; then
254     case "$host_cpu" in
255     i?86)
256         case "$host_os" in
257         linux* | freebsd* | dragonfly*)
258             test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
259             ;;
260         esac
261         ;;
262     x86_64)
263         case "$host_os" in
264         linux* | freebsd* | dragonfly*)
265             test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
266             ;;
267         esac
268         ;;
269     powerpc)
270         case "$host_os" in
271         linux*)
272             asm_arch=ppc
273             ;;
274         esac
275         ;;
276     esac
277
278     case "$asm_arch" in
279     x86)
280         ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
281         ASM_SOURCES='$(X86_SOURCES)'
282         ASM_API='$(X86_API)'
283         AC_MSG_RESULT([yes, x86])
284         ;;
285     x86_64)
286         ASM_FLAGS="-DUSE_X86_64_ASM"
287         ASM_SOURCES='$(X86-64_SOURCES)'
288         ASM_API='$(X86-64_API)'
289         AC_MSG_RESULT([yes, x86_64])
290         ;;
291     ppc)
292         ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM"
293         ASM_SOURCES='$(PPC_SOURCES)'
294         AC_MSG_RESULT([yes, ppc])
295         ;;
296     *)
297         AC_MSG_RESULT([no, platform not supported])
298         ;;
299     esac
300 fi
301 AC_SUBST([ASM_FLAGS])
302 AC_SUBST([ASM_SOURCES])
303 AC_SUBST([ASM_API])
304
305 dnl PIC code macro
306 MESA_PIC_FLAGS
307
308 dnl Check to see if dlopen is in default libraries (like Solaris, which
309 dnl has it in libc), or if libdl is needed to get it.
310 AC_CHECK_FUNC([dlopen], [],
311     [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
312
313 dnl SELinux awareness.
314 AC_ARG_ENABLE([selinux],
315     [AS_HELP_STRING([--enable-selinux],
316         [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
317     [MESA_SELINUX="$enableval"],
318     [MESA_SELINUX=no])
319 if test "x$enable_selinux" = "xyes"; then
320     AC_CHECK_HEADER([selinux/selinux.h],[],
321                     [AC_MSG_ERROR([SELinux headers not found])])
322     AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
323                  [AC_MSG_ERROR([SELinux library not found])])
324     SELINUX_LIBS="-lselinux"
325     DEFINES="$DEFINES -DMESA_SELINUX"
326 fi
327
328
329 dnl
330 dnl Driver configuration. Options are xlib, dri and osmesa right now.
331 dnl More later: directfb, fbdev, ...
332 dnl
333 default_driver="xlib"
334
335 case "$host_os" in
336 linux*)
337     case "$host_cpu" in
338     i*86|x86_64|powerpc*) default_driver="dri";;
339     esac
340     ;;
341 freebsd* | dragonfly*)
342     case "$host_cpu" in
343     i*86|x86_64) default_driver="dri";;
344     esac
345     ;;
346 esac
347
348 AC_ARG_WITH([driver],
349     [AS_HELP_STRING([--with-driver=DRIVER],
350         [driver for Mesa: xlib,dri,osmesa @<:@default=dri when available, or xlib@:>@])],
351     [mesa_driver="$withval"],
352     [mesa_driver="$default_driver"])
353 dnl Check for valid option
354 case "x$mesa_driver" in
355 xxlib|xdri|xosmesa)
356     ;;
357 *)
358     AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
359     ;;
360 esac
361
362 dnl
363 dnl Driver specific build directories
364 dnl
365 SRC_DIRS="mesa"
366 GLU_DIRS="sgi"
367 WINDOW_SYSTEM=""
368 case "$mesa_driver" in
369 xlib)
370     DRIVER_DIRS="x11"
371     ;;
372 dri)
373     SRC_DIRS="glx/x11 $SRC_DIRS"
374     DRIVER_DIRS="dri"
375     WINDOW_SYSTEM="dri"
376     ;;
377 osmesa)
378     DRIVER_DIRS="osmesa"
379     ;;
380 esac
381 AC_SUBST([SRC_DIRS])
382 AC_SUBST([GLU_DIRS])
383 AC_SUBST([DRIVER_DIRS])
384 AC_SUBST([WINDOW_SYSTEM])
385
386 dnl
387 dnl User supplied program configuration
388 dnl
389 if test -d "$srcdir/progs/demos"; then
390     default_demos=yes
391 else
392     default_demos=no
393 fi
394 AC_ARG_WITH([demos],
395     [AS_HELP_STRING([--with-demos@<:@=DIRS...@:>@],
396         [optional comma delimited demo directories to build
397         @<:@default=auto if source available@:>@])],
398     [with_demos="$withval"],
399     [with_demos="$default_demos"])
400 if test "x$with_demos" = x; then
401     with_demos=no
402 fi
403
404 dnl If $with_demos is yes, directories will be added as libs available
405 PROGRAM_DIRS=""
406 case "$with_demos" in
407 no) ;;
408 yes)
409     # If the driver isn't osmesa, we have libGL and can build xdemos
410     if test "$mesa_driver" != osmesa; then
411         PROGRAM_DIRS="xdemos"
412     fi
413     ;;
414 *)
415     # verify the requested demos directories exist
416     demos=`IFS=,; echo $with_demos`
417     for demo in $demos; do
418         test -d "$srcdir/progs/$demo" || \
419             AC_MSG_ERROR([Program directory '$demo' doesn't exist])
420     done
421     PROGRAM_DIRS="$demos"
422     ;;
423 esac
424
425 dnl
426 dnl Find out if X is available. The variable have_x is set if libX11 is
427 dnl to mimic AC_PATH_XTRA.
428 dnl
429 if test -n "$PKG_CONFIG"; then
430     AC_MSG_CHECKING([pkg-config files for X11 are available])
431     PKG_CHECK_EXISTS([x11],[
432         x11_pkgconfig=yes
433         have_x=yes
434         ],[
435         x11_pkgconfig=no
436     ])
437     AC_MSG_RESULT([$x11_pkgconfig])
438 else
439     x11_pkgconfig=no
440 fi
441 dnl Use the autoconf macro if no pkg-config files
442 if test "$x11_pkgconfig" = no; then
443     AC_PATH_XTRA
444 fi
445
446 dnl We need X for xlib and dri, so bomb now if it's not found
447 case "$mesa_driver" in
448 xlib|dri)
449     if test "$no_x" = yes; then
450         AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver])
451     fi
452     ;;
453 esac
454
455 dnl XCB - this is only used for GLX right now
456 AC_ARG_ENABLE([xcb],
457     [AS_HELP_STRING([--enable-xcb],
458         [use XCB for GLX @<:@default=disabled@:>@])],
459     [enable_xcb="$enableval"],
460     [enable_xcb=no])
461 if test "x$enable_xcb" = xyes; then
462     DEFINES="$DEFINES -DUSE_XCB"
463 else
464     enable_xcb=no
465 fi
466
467 dnl
468 dnl libGL configuration per driver
469 dnl
470 case "$mesa_driver" in
471 xlib)
472     if test "$x11_pkgconfig" = yes; then
473         PKG_CHECK_MODULES([XLIBGL], [x11 xext])
474         X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
475         GL_LIB_DEPS="$XLIBGL_LIBS"
476     else
477         # should check these...
478         X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
479         GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
480     fi
481     GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread"
482
483     # if static, move the external libraries to the programs
484     # and empty the libraries for libGL
485     if test "$enable_static" = yes; then
486         APP_LIB_DEPS="$APP_LIB_DEPS $GL_LIB_DEPS"
487         GL_LIB_DEPS=""
488     fi
489     ;;
490 dri)
491     # DRI must be shared, I think
492     if test "$enable_static" = yes; then
493         AC_MSG_ERROR([Can't use static libraries for DRI drivers])
494     fi
495
496     # Check for libdrm
497     PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED])
498     PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
499
500     # find the DRI deps for libGL
501     if test "$x11_pkgconfig" = yes; then
502         # add xcb modules if necessary
503         dri_modules="x11 xext xxf86vm xdamage xfixes"
504         if test "$enable_xcb" = yes; then
505             dri_modules="$dri_modules x11-xcb xcb-glx"
506         fi
507
508         PKG_CHECK_MODULES([DRIGL], [$dri_modules])
509         X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
510         GL_LIB_DEPS="$DRIGL_LIBS"
511     else
512         # should check these...
513         X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
514         GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
515
516         # XCB can only be used from pkg-config
517         if test "$enable_xcb" = yes; then
518             PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
519             X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
520             GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
521         fi
522     fi
523
524     # need DRM libs, -lpthread, etc.
525     GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
526     ;;
527 osmesa)
528     # No libGL for osmesa
529     GL_LIB_DEPS=""
530     ;;
531 esac
532 AC_SUBST([GL_LIB_DEPS])
533
534 dnl
535 dnl More X11 setup
536 dnl
537 if test "$mesa_driver" = xlib; then
538     DEFINES="$DEFINES -DUSE_XSHM"
539 fi
540
541 dnl
542 dnl More DRI setup
543 dnl
544 AC_ARG_ENABLE([glx-tls],
545     [AS_HELP_STRING([--enable-glx-tls],
546         [enable TLS support in GLX @<:@default=disabled@:>@])],
547     [GLX_USE_TLS="$enableval"],
548     [GLX_USE_TLS=no])
549 dnl Directory for DRI drivers
550 AC_ARG_WITH([dri-driverdir],
551     [AS_HELP_STRING([--with-dri-driverdir=DIR],
552         [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
553     [DRI_DRIVER_INSTALL_DIR="$withval"],
554     [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
555 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
556 dnl Direct rendering or just indirect rendering
557 AC_ARG_ENABLE([driglx-direct],
558     [AS_HELP_STRING([--disable-driglx-direct],
559         [enable direct rendering in GLX for DRI @<:@default=enabled@:>@])],
560     [driglx_direct="$enableval"],
561     [driglx_direct="yes"])
562 dnl ttm support
563 AC_ARG_ENABLE([ttm-api],
564     [AS_HELP_STRING([--enable-ttm-api],
565         [enable TTM API users @<:@default=disabled@:>@])],
566     [ttmapi="$enableval"],
567     [ttmapi="no"])
568
569 if test "x$ttmapi" = "xyes"; then
570     save_CFLAGS=$CFLAGS
571     CFLAGS=$LIBDRM_CFLAGS
572     AC_CHECK_HEADERS([xf86mm.h],[],[AC_MSG_ERROR([xf86mm.h required for TTM.])],[#include "stdint.h"\n#include "drm.h"])
573     CFLAGS=$save_CFLAGS
574 fi
575
576 dnl Which drivers to build - default is chosen by platform
577 AC_ARG_WITH([dri-drivers],
578     [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
579         [comma delimited DRI drivers, e.g. "i965,radeon,nouveau" @<:@default=auto@:>@])],
580     [with_dri_drivers="$withval"],
581     [with_dri_drivers=yes])
582 if test "x$with_dri_drivers" = x; then
583     with_dri_drivers=no
584 fi
585
586 dnl If $with_dri_drivers is yes, directories will be added through
587 dnl platform checks
588 DRI_DIRS=""
589 case "$with_dri_drivers" in
590 no|yes) ;;
591 *)
592     # verify the requested driver directories exist
593     dri_drivers=`IFS=,; echo $with_dri_drivers`
594     for driver in $dri_drivers; do
595         test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
596             AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
597     done
598     DRI_DIRS="$dri_drivers"
599     ;;
600 esac
601
602 dnl Just default to no EGL for now
603 USING_EGL=0
604 AC_SUBST([USING_EGL])
605
606 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
607 if test "$mesa_driver" = dri; then
608     # Use TLS in GLX?
609     if test "x$GLX_USE_TLS" = xyes; then
610         DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS"
611     fi
612
613     if test "x$ttmapi" = xyes; then
614         DEFINES="$DEFINES -DTTM_API"
615     fi
616
617     if test "x$USING_EGL" = x1; then
618         PROGRAM_DIRS="egl"
619     fi
620
621     # Platform specific settings and drivers to build
622     case "$host_os" in
623     linux*)
624         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
625         DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
626         if test "x$driglx_direct" = xyes; then
627             DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
628         fi
629
630         case "$host_cpu" in
631         x86_64)
632             # ffb, gamma, and sis are missing because they have not be
633             # converted to use the new interface.  i810 are missing
634             # because there is no x86-64 system where they could *ever*
635             # be used.
636             if test "x$DRI_DIRS" = x; then
637                 DRI_DIRS="i915 i965 mach64 mga r128 r200 r300 radeon \
638                     savage tdfx unichrome swrast"
639             fi
640             ;;
641         powerpc*)
642             # Build only the drivers for cards that exist on PowerPC.
643             # At some point MGA will be added, but not yet.
644             if test "x$DRI_DIRS" = x; then
645                 DRI_DIRS="mach64 r128 r200 r300 radeon tdfx swrast"
646             fi
647             ;;
648         sparc*)
649             # Build only the drivers for cards that exist on sparc`
650             if test "x$DRI_DIRS" = x; then
651                 DRI_DIRS="mach64 r128 r200 r300 radeon ffb swrast"
652             fi
653             ;;
654         esac
655         ;;
656     freebsd* | dragonfly*)
657         DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
658         DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
659         DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
660         if test "x$driglx_direct" = xyes; then
661             DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
662         fi
663         if test "x$GXX" = xyes; then
664             CXXFLAGS="$CXXFLAGS -ansi -pedantic"
665         fi
666
667         # ffb and gamma are missing because they have not been converted
668         # to use the new interface.
669         if test "x$DRI_DIRS" = x; then
670             DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 radeon tdfx \
671                 unichrome savage sis swrast"
672         fi
673         ;;
674     esac
675
676     # default drivers
677     if test "x$DRI_DIRS" = x; then
678         DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 radeon s3v \
679             savage sis tdfx trident unichrome ffb swrast"
680     fi
681
682     DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/  */ /g'`
683
684     # Check for expat
685     EXPAT_INCLUDES=""
686     EXPAT_LIB=-lexpat
687     AC_ARG_WITH([expat],
688         [AS_HELP_STRING([--with-expat=DIR],
689             [expat install directory])],[
690         EXPAT_INCLUDES="-I$withval/include"
691         CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
692         LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
693         EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
694         ])
695     AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
696     AC_CHECK_LIB([expat],[XML_ParserCreate],[],
697         [AC_MSG_ERROR([Expat required for DRI.])])
698
699     # put all the necessary libs together
700     DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
701 fi
702 AC_SUBST([DRI_DIRS])
703 AC_SUBST([EXPAT_INCLUDES])
704 AC_SUBST([DRI_LIB_DEPS])
705
706 dnl
707 dnl OSMesa configuration
708 dnl
709 if test "$mesa_driver" = xlib; then
710     default_gl_osmesa=yes
711 else
712     default_gl_osmesa=no
713 fi
714 AC_ARG_ENABLE([gl-osmesa],
715     [AS_HELP_STRING([--enable-gl-osmesa],
716         [enable OSMesa on libGL @<:@default=enabled for xlib driver@:>@])],
717     [gl_osmesa="$enableval"],
718     [gl_osmesa="$default_gl_osmesa"])
719 if test "x$gl_osmesa" = xyes; then
720     if test "$mesa_driver" = osmesa; then
721         AC_MSG_ERROR([libGL is not available for OSMesa driver])
722     else
723         DRIVER_DIRS="$DRIVER_DIRS osmesa"
724     fi
725 fi
726
727 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
728 AC_ARG_WITH([osmesa-bits],
729     [AS_HELP_STRING([--with-osmesa-bits=BITS],
730         [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
731     [osmesa_bits="$withval"],
732     [osmesa_bits=8])
733 if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
734     AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
735     osmesa_bits=8
736 fi
737 case "x$osmesa_bits" in
738 x8)
739     OSMESA_LIB=OSMesa
740     ;;
741 x16|x32)
742     OSMESA_LIB="OSMesa$osmesa_bits"
743     DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
744     ;;
745 *)
746     AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
747     ;;
748 esac
749 AC_SUBST([OSMESA_LIB])
750
751 case "$mesa_driver" in
752 osmesa)
753     # only link librararies with osmesa if shared
754     if test "$enable_static" = no; then
755         OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS"
756     else
757         OSMESA_LIB_DEPS=""
758     fi
759     OSMESA_MESA_DEPS=""
760     ;;
761 *)
762     # Link OSMesa to libGL otherwise
763     OSMESA_LIB_DEPS=""
764     # only link librararies with osmesa if shared
765     if test "$enable_static" = no; then
766         OSMESA_MESA_DEPS='-l$(GL_LIB)'
767     else
768         OSMESA_MESA_DEPS=""
769     fi
770     ;;
771 esac
772 AC_SUBST([OSMESA_LIB_DEPS])
773 AC_SUBST([OSMESA_MESA_DEPS])
774
775 dnl
776 dnl GLU configuration
777 dnl
778 AC_ARG_ENABLE([glu],
779     [AS_HELP_STRING([--disable-glu],
780         [enable OpenGL Utility library @<:@default=enabled@:>@])],
781     [enable_glu="$enableval"],
782     [enable_glu=yes])
783 if test "x$enable_glu" = xyes; then
784     SRC_DIRS="$SRC_DIRS glu"
785
786     case "$mesa_driver" in
787     osmesa)
788         # If GLU is available and we have libOSMesa (not 16 or 32),
789         # we can build the osdemos
790         if test "$with_demos" = yes && test "$osmesa_bits" = 8; then
791             PROGRAM_DIRS="$PROGRAM_DIRS osdemos"
792         fi
793
794         # Link libGLU to libOSMesa instead of libGL
795         GLU_LIB_DEPS=""
796         if test "$enable_static" = no; then
797             GLU_MESA_DEPS='-l$(OSMESA_LIB)'
798         else
799             GLU_MESA_DEPS=""
800         fi
801         ;;
802     *)
803         # If static, empty GLU_LIB_DEPS and add libs for programs to link
804         if test "$enable_static" = no; then
805             GLU_LIB_DEPS="-lm"
806             GLU_MESA_DEPS='-l$(GL_LIB)'
807         else
808             GLU_LIB_DEPS=""
809             GLU_MESA_DEPS=""
810             APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
811         fi
812         ;;
813     esac
814 fi
815 AC_SUBST([GLU_LIB_DEPS])
816 AC_SUBST([GLU_MESA_DEPS])
817
818 dnl
819 dnl GLw configuration
820 dnl
821 AC_ARG_ENABLE([glw],
822     [AS_HELP_STRING([--disable-glw],
823         [enable Xt/Motif widget library @<:@default=enabled@:>@])],
824     [enable_glw="$enableval"],
825     [enable_glw=yes])
826 dnl Don't build GLw on osmesa
827 if test "x$enable_glw" = xyes && test "$mesa_driver" = osmesa; then
828     AC_MSG_WARN([Disabling GLw since the driver is OSMesa])
829     enable_glw=no
830 fi
831 if test "x$enable_glw" = xyes; then
832     SRC_DIRS="$SRC_DIRS glw"
833     if test "$x11_pkgconfig" = yes; then
834         PKG_CHECK_MODULES([GLW],[x11 xt])
835         GLW_LIB_DEPS="$GLW_LIBS"
836     else
837         # should check these...
838         GLW_LIB_DEPS="$X_LIBS -lX11 -lXt"
839     fi
840
841     # If static, empty GLW_LIB_DEPS and add libs for programs to link
842     if test "$enable_static" = no; then
843         GLW_MESA_DEPS='-l$(GL_LIB)'
844     else
845         APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
846         GLW_LIB_DEPS=""
847         GLW_MESA_DEPS=""
848     fi
849 fi
850 AC_SUBST([GLW_LIB_DEPS])
851 AC_SUBST([GLW_MESA_DEPS])
852
853 dnl
854 dnl GLUT configuration
855 dnl
856 if test -f "$srcdir/include/GL/glut.h"; then
857     default_glut=yes
858 else
859     default_glut=no
860 fi
861 AC_ARG_ENABLE([glut],
862     [AS_HELP_STRING([--disable-glut],
863         [enable GLUT library @<:@default=enabled if source available@:>@])],
864     [enable_glut="$enableval"],
865     [enable_glut="$default_glut"])
866
867 dnl Can't build glut if GLU not available
868 if test "x$enable_glu$enable_glut" = xnoyes; then
869     AC_MSG_WARN([Disabling glut since GLU is disabled])
870     enable_glut=no
871 fi
872 dnl Don't build glut on osmesa
873 if test "x$enable_glut" = xyes && test "$mesa_driver" = osmesa; then
874     AC_MSG_WARN([Disabling glut since the driver is OSMesa])
875     enable_glut=no
876 fi
877
878 if test "x$enable_glut" = xyes; then
879     SRC_DIRS="$SRC_DIRS glut/glx"
880     GLUT_CFLAGS=""
881     if test "x$GCC" = xyes; then
882         GLUT_CFLAGS="-fexceptions"
883     fi
884     if test "$x11_pkgconfig" = yes; then
885         PKG_CHECK_MODULES([GLUT],[x11 xmu xi])
886         GLUT_LIB_DEPS="$GLUT_LIBS"
887     else
888         # should check these...
889         GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
890     fi
891     GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
892
893     # If glut is available, we can build most programs
894     if test "$with_demos" = yes; then
895         PROGRAM_DIRS="$PROGRAM_DIRS demos redbook samples glsl"
896     fi
897
898     # If static, empty GLUT_LIB_DEPS and add libs for programs to link
899     if test "$enable_static" = no; then
900         GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
901     else
902         APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
903         GLUT_LIB_DEPS=""
904         GLUT_MESA_DEPS=""
905     fi
906 fi
907 AC_SUBST([GLUT_LIB_DEPS])
908 AC_SUBST([GLUT_MESA_DEPS])
909 AC_SUBST([GLUT_CFLAGS])
910
911 dnl
912 dnl Program library dependencies
913 dnl    Only libm is added here if necessary as the libraries should
914 dnl    be pulled in by the linker
915 dnl
916 if test "x$APP_LIB_DEPS" = x; then
917     APP_LIB_DEPS="-lm"
918 fi
919 AC_SUBST([APP_LIB_DEPS])
920 AC_SUBST([PROGRAM_DIRS])
921
922
923 dnl Restore LDFLAGS and CPPFLAGS
924 LDFLAGS="$_SAVE_LDFLAGS"
925 CPPFLAGS="$_SAVE_CPPFLAGS"
926
927 dnl Substitute the config
928 AC_CONFIG_FILES([configs/autoconf])
929
930 dnl Replace the configs/current symlink
931 AC_CONFIG_COMMANDS([configs],[
932 if test -f configs/current || test -L configs/current; then
933     rm -f configs/current
934 fi
935 ln -s autoconf configs/current
936 ])
937
938 AC_OUTPUT
939
940 dnl
941 dnl Output some configuration info for the user
942 dnl
943 echo ""
944 echo "        prefix:          $prefix"
945 echo "        exec_prefix:     $exec_prefix"
946 echo "        libdir:          $libdir"
947
948 dnl Driver info
949 echo ""
950 echo "        Driver:          $mesa_driver"
951 if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
952     echo "        OSMesa:          lib$OSMESA_LIB"
953 else
954     echo "        OSMesa:          no"
955 fi
956 if test "$mesa_driver" = dri; then
957     # cleanup the drivers var
958     dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/  */ /;s/ *$//'`
959     echo "        DRI drivers:     $dri_dirs"
960     echo "        DRI driver dir:  $DRI_DRIVER_INSTALL_DIR"
961     echo "        TTM API support: $ttmapi"
962 fi
963
964 dnl Libraries
965 echo ""
966 echo "        Shared libs:     $enable_shared"
967 echo "        Static libs:     $enable_static"
968 echo "        GLU:             $enable_glu"
969 echo "        GLw:             $enable_glw"
970 echo "        glut:            $enable_glut"
971
972 dnl Programs
973 # cleanup the programs var for display
974 program_dirs=`echo $PROGRAM_DIRS | $SED 's/^ *//;s/  */ /;s/ *$//'`
975 if test "x$program_dirs" = x; then
976     echo "        Demos:           no"
977 else
978     echo "        Demos:           $program_dirs"
979 fi
980
981 dnl Compiler options
982 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
983 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
984     $SED 's/^ *//;s/  */ /;s/ *$//'`
985 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
986     $SED 's/^ *//;s/  */ /;s/ *$//'`
987 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/  */ /;s/ *$//'`
988 echo ""
989 echo "        CFLAGS:          $cflags"
990 echo "        CXXFLAGS:        $cxxflags"
991 echo "        Macros:          $defines"
992
993 echo ""
994 echo "        Run '${MAKE-make}' to build Mesa"
995 echo ""