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