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