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