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