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