st/mesa: Remove unnecessary headers from st_cb_drawpixels.c.
[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=1.99.3
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"
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="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_AUXILIARY_DIRS="rbug draw translate cso_cache pipebuffer tgsi sct rtasm util indices vl"
424 GALLIUM_DRIVERS_DIRS="softpipe failover trace identity"
425 GALLIUM_STATE_TRACKERS_DIRS=""
426
427 case "$mesa_driver" in
428 xlib)
429 DRIVER_DIRS="x11"
430 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS xlib"
431 ;;
432 dri)
433 SRC_DIRS="glx/x11 $SRC_DIRS"
434 DRIVER_DIRS="dri"
435 WINDOW_SYSTEM="dri"
436 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS drm"
437 ;;
438 osmesa)
439 DRIVER_DIRS="osmesa"
440 ;;
441 esac
442 AC_SUBST([SRC_DIRS])
443 AC_SUBST([GLU_DIRS])
444 AC_SUBST([DRIVER_DIRS])
445 AC_SUBST([WINDOW_SYSTEM])
446 AC_SUBST([GALLIUM_DIRS])
447 AC_SUBST([GALLIUM_WINSYS_DIRS])
448 AC_SUBST([GALLIUM_WINSYS_DRM_DIRS])
449 AC_SUBST([GALLIUM_DRIVERS_DIRS])
450 AC_SUBST([GALLIUM_AUXILIARY_DIRS])
451 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
452 AC_SUBST([RADEON_CFLAGS])
453 AC_SUBST([RADEON_LDFLAGS])
454
455 dnl
456 dnl User supplied program configuration
457 dnl
458 if test -d "$srcdir/progs/demos"; then
459 default_demos=yes
460 else
461 default_demos=no
462 fi
463 AC_ARG_WITH([demos],
464 [AS_HELP_STRING([--with-demos@<:@=DIRS...@:>@],
465 [optional comma delimited demo directories to build
466 @<:@default=auto if source available@:>@])],
467 [with_demos="$withval"],
468 [with_demos="$default_demos"])
469 if test "x$with_demos" = x; then
470 with_demos=no
471 fi
472
473 dnl If $with_demos is yes, directories will be added as libs available
474 PROGRAM_DIRS=""
475 case "$with_demos" in
476 no) ;;
477 yes)
478 # If the driver isn't osmesa, we have libGL and can build xdemos
479 if test "$mesa_driver" != osmesa; then
480 PROGRAM_DIRS="xdemos"
481 fi
482 ;;
483 *)
484 # verify the requested demos directories exist
485 demos=`IFS=,; echo $with_demos`
486 for demo in $demos; do
487 test -d "$srcdir/progs/$demo" || \
488 AC_MSG_ERROR([Program directory '$demo' doesn't exist])
489 done
490 PROGRAM_DIRS="$demos"
491 ;;
492 esac
493
494 dnl
495 dnl Find out if X is available. The variable have_x is set if libX11 is
496 dnl found to mimic AC_PATH_XTRA.
497 dnl
498 if test -n "$PKG_CONFIG"; then
499 AC_MSG_CHECKING([pkg-config files for X11 are available])
500 PKG_CHECK_EXISTS([x11],[
501 x11_pkgconfig=yes
502 have_x=yes
503 ],[
504 x11_pkgconfig=no
505 ])
506 AC_MSG_RESULT([$x11_pkgconfig])
507 else
508 x11_pkgconfig=no
509 fi
510 dnl Use the autoconf macro if no pkg-config files
511 if test "$x11_pkgconfig" = no; then
512 AC_PATH_XTRA
513 fi
514
515 dnl Try to tell the user that the --x-* options are only used when
516 dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
517 m4_divert_once([HELP_BEGIN],
518 [These options are only used when the X libraries cannot be found by the
519 pkg-config utility.])
520
521 dnl We need X for xlib and dri, so bomb now if it's not found
522 case "$mesa_driver" in
523 xlib|dri)
524 if test "$no_x" = yes; then
525 AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver])
526 fi
527 ;;
528 esac
529
530 dnl XCB - this is only used for GLX right now
531 AC_ARG_ENABLE([xcb],
532 [AS_HELP_STRING([--enable-xcb],
533 [use XCB for GLX @<:@default=disabled@:>@])],
534 [enable_xcb="$enableval"],
535 [enable_xcb=no])
536 if test "x$enable_xcb" = xyes; then
537 DEFINES="$DEFINES -DUSE_XCB"
538 else
539 enable_xcb=no
540 fi
541
542 dnl
543 dnl libGL configuration per driver
544 dnl
545 case "$mesa_driver" in
546 xlib)
547 if test "$x11_pkgconfig" = yes; then
548 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
549 GL_PC_REQ_PRIV="x11 xext"
550 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
551 GL_LIB_DEPS="$XLIBGL_LIBS"
552 else
553 # should check these...
554 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
555 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
556 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
557 GL_PC_CFLAGS="$X11_INCLUDES"
558 fi
559 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread"
560 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
561
562 # if static, move the external libraries to the programs
563 # and empty the libraries for libGL
564 if test "$enable_static" = yes; then
565 APP_LIB_DEPS="$APP_LIB_DEPS $GL_LIB_DEPS"
566 GL_LIB_DEPS=""
567 fi
568 ;;
569 dri)
570 # DRI must be shared, I think
571 if test "$enable_static" = yes; then
572 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
573 fi
574
575 # Check for libdrm
576 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED])
577 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
578 GL_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
579 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
580
581 PKG_CHECK_MODULES([LIBDRM_RADEON], [libdrm_radeon libdrm >= $LIBDRM_RADEON_REQUIRED], HAVE_LIBDRM_RADEON=yes, HAVE_LIBDRM_RADEON=no)
582
583 if test "$HAVE_LIBDRM_RADEON" = yes; then
584 RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS"
585 RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS
586 fi
587
588 # find the DRI deps for libGL
589 if test "$x11_pkgconfig" = yes; then
590 # add xcb modules if necessary
591 dri_modules="x11 xext xxf86vm xdamage xfixes"
592 if test "$enable_xcb" = yes; then
593 dri_modules="$dri_modules x11-xcb xcb-glx"
594 fi
595
596 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
597 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
598 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
599 GL_LIB_DEPS="$DRIGL_LIBS"
600 else
601 # should check these...
602 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
603 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
604 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
605 GL_PC_CFLAGS="$X11_INCLUDES"
606
607 # XCB can only be used from pkg-config
608 if test "$enable_xcb" = yes; then
609 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
610 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
611 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
612 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
613 fi
614 fi
615
616 # need DRM libs, -lpthread, etc.
617 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
618 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
619 ;;
620 osmesa)
621 # No libGL for osmesa
622 GL_LIB_DEPS=""
623 ;;
624 esac
625 AC_SUBST([GL_LIB_DEPS])
626 AC_SUBST([GL_PC_REQ_PRIV])
627 AC_SUBST([GL_PC_LIB_PRIV])
628 AC_SUBST([GL_PC_CFLAGS])
629 AC_SUBST([DRI_PC_REQ_PRIV])
630
631 dnl
632 dnl More X11 setup
633 dnl
634 if test "$mesa_driver" = xlib; then
635 DEFINES="$DEFINES -DUSE_XSHM"
636 fi
637
638 dnl
639 dnl More DRI setup
640 dnl
641 AC_ARG_ENABLE([glx-tls],
642 [AS_HELP_STRING([--enable-glx-tls],
643 [enable TLS support in GLX @<:@default=disabled@:>@])],
644 [GLX_USE_TLS="$enableval"],
645 [GLX_USE_TLS=no])
646 dnl Directory for DRI drivers
647 AC_ARG_WITH([dri-driverdir],
648 [AS_HELP_STRING([--with-dri-driverdir=DIR],
649 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
650 [DRI_DRIVER_INSTALL_DIR="$withval"],
651 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
652 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
653 dnl Extra search path for DRI drivers
654 AC_ARG_WITH([dri-searchpath],
655 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
656 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
657 [DRI_DRIVER_SEARCH_DIR="$withval"],
658 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
659 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
660 dnl Direct rendering or just indirect rendering
661 AC_ARG_ENABLE([driglx-direct],
662 [AS_HELP_STRING([--disable-driglx-direct],
663 [enable direct rendering in GLX for DRI @<:@default=enabled@:>@])],
664 [driglx_direct="$enableval"],
665 [driglx_direct="yes"])
666 dnl Which drivers to build - default is chosen by platform
667 AC_ARG_WITH([dri-drivers],
668 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
669 [comma delimited DRI drivers list, e.g.
670 "swrast,i965,radeon" @<:@default=auto@:>@])],
671 [with_dri_drivers="$withval"],
672 [with_dri_drivers=yes])
673 if test "x$with_dri_drivers" = x; then
674 with_dri_drivers=no
675 fi
676
677 dnl If $with_dri_drivers is yes, directories will be added through
678 dnl platform checks
679 DRI_DIRS=""
680 case "$with_dri_drivers" in
681 no) ;;
682 yes)
683 DRI_DIRS="yes"
684 ;;
685 *)
686 # verify the requested driver directories exist
687 dri_drivers=`IFS=', '; echo $with_dri_drivers`
688 for driver in $dri_drivers; do
689 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
690 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
691 done
692 DRI_DIRS="$dri_drivers"
693 ;;
694 esac
695
696 dnl Just default to no EGL for now
697 USING_EGL=0
698 AC_SUBST([USING_EGL])
699
700 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
701 if test "$mesa_driver" = dri; then
702 # Use TLS in GLX?
703 if test "x$GLX_USE_TLS" = xyes; then
704 DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS"
705 fi
706
707 if test "x$USING_EGL" = x1; then
708 PROGRAM_DIRS="egl"
709 fi
710
711 # Platform specific settings and drivers to build
712 case "$host_os" in
713 linux*)
714 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
715 if test "x$driglx_direct" = xyes; then
716 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
717 fi
718 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
719
720 case "$host_cpu" in
721 x86_64)
722 # ffb, gamma, and sis are missing because they have not be
723 # converted to use the new interface. i810 are missing
724 # because there is no x86-64 system where they could *ever*
725 # be used.
726 if test "x$DRI_DIRS" = "xyes"; then
727 DRI_DIRS="i915 i965 mach64 mga r128 r200 r300 r600 radeon \
728 savage tdfx unichrome swrast"
729 fi
730 ;;
731 powerpc*)
732 # Build only the drivers for cards that exist on PowerPC.
733 # At some point MGA will be added, but not yet.
734 if test "x$DRI_DIRS" = "xyes"; then
735 DRI_DIRS="mach64 r128 r200 r300 r600 radeon tdfx swrast"
736 fi
737 ;;
738 sparc*)
739 # Build only the drivers for cards that exist on sparc`
740 if test "x$DRI_DIRS" = "xyes"; then
741 DRI_DIRS="mach64 r128 r200 r300 r600 radeon ffb swrast"
742 fi
743 ;;
744 esac
745 ;;
746 freebsd* | dragonfly*)
747 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
748 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
749 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
750 if test "x$driglx_direct" = xyes; then
751 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
752 fi
753 if test "x$GXX" = xyes; then
754 CXXFLAGS="$CXXFLAGS -ansi -pedantic"
755 fi
756
757 # ffb and gamma are missing because they have not been converted
758 # to use the new interface.
759 if test "x$DRI_DIRS" = "xyes"; then
760 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon tdfx \
761 unichrome savage sis swrast"
762 fi
763 ;;
764 gnu*)
765 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
766 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
767 ;;
768 solaris*)
769 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
770 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
771 if test "x$driglx_direct" = xyes; then
772 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
773 fi
774 ;;
775 esac
776
777 # default drivers
778 if test "x$DRI_DIRS" = "xyes"; then
779 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon \
780 savage sis tdfx unichrome ffb swrast"
781 fi
782
783 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
784
785 # Check for expat
786 EXPAT_INCLUDES=""
787 EXPAT_LIB=-lexpat
788 AC_ARG_WITH([expat],
789 [AS_HELP_STRING([--with-expat=DIR],
790 [expat install directory])],[
791 EXPAT_INCLUDES="-I$withval/include"
792 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
793 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
794 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
795 ])
796 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
797 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
798 [AC_MSG_ERROR([Expat required for DRI.])])
799
800 # put all the necessary libs together
801 DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
802 fi
803 AC_SUBST([DRI_DIRS])
804 AC_SUBST([EXPAT_INCLUDES])
805 AC_SUBST([DRI_LIB_DEPS])
806
807 dnl
808 dnl OSMesa configuration
809 dnl
810 if test "$mesa_driver" = xlib; then
811 default_gl_osmesa=yes
812 else
813 default_gl_osmesa=no
814 fi
815 AC_ARG_ENABLE([gl-osmesa],
816 [AS_HELP_STRING([--enable-gl-osmesa],
817 [enable OSMesa on libGL @<:@default=enabled for xlib driver@:>@])],
818 [gl_osmesa="$enableval"],
819 [gl_osmesa="$default_gl_osmesa"])
820 if test "x$gl_osmesa" = xyes; then
821 if test "$mesa_driver" = osmesa; then
822 AC_MSG_ERROR([libGL is not available for OSMesa driver])
823 else
824 DRIVER_DIRS="$DRIVER_DIRS osmesa"
825 fi
826 fi
827
828 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
829 AC_ARG_WITH([osmesa-bits],
830 [AS_HELP_STRING([--with-osmesa-bits=BITS],
831 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
832 [osmesa_bits="$withval"],
833 [osmesa_bits=8])
834 if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
835 AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
836 osmesa_bits=8
837 fi
838 case "x$osmesa_bits" in
839 x8)
840 OSMESA_LIB=OSMesa
841 ;;
842 x16|x32)
843 OSMESA_LIB="OSMesa$osmesa_bits"
844 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
845 ;;
846 *)
847 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
848 ;;
849 esac
850 AC_SUBST([OSMESA_LIB])
851
852 case "$mesa_driver" in
853 osmesa)
854 # only link libraries with osmesa if shared
855 if test "$enable_static" = no; then
856 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
857 else
858 OSMESA_LIB_DEPS=""
859 fi
860 OSMESA_MESA_DEPS=""
861 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
862 ;;
863 *)
864 # Link OSMesa to libGL otherwise
865 OSMESA_LIB_DEPS=""
866 # only link libraries with osmesa if shared
867 if test "$enable_static" = no; then
868 OSMESA_MESA_DEPS='-l$(GL_LIB)'
869 else
870 OSMESA_MESA_DEPS=""
871 fi
872 OSMESA_PC_REQ="gl"
873 ;;
874 esac
875 OSMESA_PC_LIB_PRIV="$OSMESA_PC_LIB_PRIV"
876 AC_SUBST([OSMESA_LIB_DEPS])
877 AC_SUBST([OSMESA_MESA_DEPS])
878 AC_SUBST([OSMESA_PC_REQ])
879 AC_SUBST([OSMESA_PC_LIB_PRIV])
880
881 dnl
882 dnl EGL configuration
883 dnl
884 AC_ARG_ENABLE([egl],
885 [AS_HELP_STRING([--disable-egl],
886 [disable EGL library @<:@default=enabled@:>@])],
887 [enable_egl="$enableval"],
888 [enable_egl=yes])
889 if test "x$enable_egl" = xyes; then
890 SRC_DIRS="$SRC_DIRS egl"
891
892 if test "$x11_pkgconfig" = yes; then
893 PKG_CHECK_MODULES([EGL], [x11])
894 EGL_LIB_DEPS="$EGL_LIBS"
895 else
896 # should check these...
897 EGL_LIB_DEPS="$X_LIBS -lX11"
898 fi
899 EGL_LIB_DEPS="$EGL_LIB_DEPS $DLOPEN_LIBS"
900 fi
901 AC_SUBST([EGL_LIB_DEPS])
902
903 dnl
904 dnl GLU configuration
905 dnl
906 AC_ARG_ENABLE([glu],
907 [AS_HELP_STRING([--disable-glu],
908 [enable OpenGL Utility library @<:@default=enabled@:>@])],
909 [enable_glu="$enableval"],
910 [enable_glu=yes])
911 if test "x$enable_glu" = xyes; then
912 SRC_DIRS="$SRC_DIRS glu"
913
914 case "$mesa_driver" in
915 osmesa)
916 # If GLU is available and we have libOSMesa (not 16 or 32),
917 # we can build the osdemos
918 if test "$with_demos" = yes && test "$osmesa_bits" = 8; then
919 PROGRAM_DIRS="$PROGRAM_DIRS osdemos"
920 fi
921
922 # Link libGLU to libOSMesa instead of libGL
923 GLU_LIB_DEPS=""
924 GLU_PC_REQ="osmesa"
925 if test "$enable_static" = no; then
926 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
927 else
928 GLU_MESA_DEPS=""
929 fi
930 ;;
931 *)
932 # If static, empty GLU_LIB_DEPS and add libs for programs to link
933 GLU_PC_REQ="gl"
934 GLU_PC_LIB_PRIV="-lm"
935 if test "$enable_static" = no; then
936 GLU_LIB_DEPS="-lm"
937 GLU_MESA_DEPS='-l$(GL_LIB)'
938 else
939 GLU_LIB_DEPS=""
940 GLU_MESA_DEPS=""
941 APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
942 fi
943 ;;
944 esac
945 fi
946 if test "$enable_static" = no; then
947 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
948 fi
949 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
950 AC_SUBST([GLU_LIB_DEPS])
951 AC_SUBST([GLU_MESA_DEPS])
952 AC_SUBST([GLU_PC_REQ])
953 AC_SUBST([GLU_PC_REQ_PRIV])
954 AC_SUBST([GLU_PC_LIB_PRIV])
955 AC_SUBST([GLU_PC_CFLAGS])
956
957 dnl
958 dnl GLw configuration
959 dnl
960 AC_ARG_ENABLE([glw],
961 [AS_HELP_STRING([--disable-glw],
962 [enable Xt/Motif widget library @<:@default=enabled@:>@])],
963 [enable_glw="$enableval"],
964 [enable_glw=yes])
965 dnl Don't build GLw on osmesa
966 if test "x$enable_glw" = xyes && test "$mesa_driver" = osmesa; then
967 AC_MSG_WARN([Disabling GLw since the driver is OSMesa])
968 enable_glw=no
969 fi
970 AC_ARG_ENABLE([motif],
971 [AS_HELP_STRING([--enable-motif],
972 [use Motif widgets in GLw @<:@default=disabled@:>@])],
973 [enable_motif="$enableval"],
974 [enable_motif=no])
975
976 if test "x$enable_glw" = xyes; then
977 SRC_DIRS="$SRC_DIRS glw"
978 if test "$x11_pkgconfig" = yes; then
979 PKG_CHECK_MODULES([GLW],[x11 xt])
980 GLW_PC_REQ_PRIV="x11 xt"
981 GLW_LIB_DEPS="$GLW_LIBS"
982 else
983 # should check these...
984 GLW_LIB_DEPS="$X_LIBS -lXt -lX11"
985 GLW_PC_LIB_PRIV="$GLW_LIB_DEPS"
986 GLW_PC_CFLAGS="$X11_INCLUDES"
987 fi
988
989 GLW_SOURCES="GLwDrawA.c"
990 MOTIF_CFLAGS=
991 if test "x$enable_motif" = xyes; then
992 GLW_SOURCES="$GLW_SOURCES GLwMDrawA.c"
993 AC_PATH_PROG([MOTIF_CONFIG], [motif-config], [no])
994 if test "x$MOTIF_CONFIG" != xno; then
995 MOTIF_CFLAGS=`$MOTIF_CONFIG --cflags`
996 MOTIF_LIBS=`$MOTIF_CONFIG --libs`
997 else
998 AC_CHECK_HEADER([Xm/PrimitiveP.h], [],
999 [AC_MSG_ERROR([Can't locate Motif headers])])
1000 AC_CHECK_LIB([Xm], [XmGetPixmap], [MOTIF_LIBS="-lXm"],
1001 [AC_MSG_ERROR([Can't locate Motif Xm library])])
1002 fi
1003 # MOTIF_LIBS is prepended to GLW_LIB_DEPS since Xm needs Xt/X11
1004 GLW_LIB_DEPS="$MOTIF_LIBS $GLW_LIB_DEPS"
1005 GLW_PC_LIB_PRIV="$MOTIF_LIBS $GLW_PC_LIB_PRIV"
1006 GLW_PC_CFLAGS="$MOTIF_CFLAGS $GLW_PC_CFLAGS"
1007 fi
1008
1009 # If static, empty GLW_LIB_DEPS and add libs for programs to link
1010 GLW_PC_LIB_PRIV="$GLW_PC_LIB_PRIV"
1011 if test "$enable_static" = no; then
1012 GLW_MESA_DEPS='-l$(GL_LIB)'
1013 GLW_LIB_DEPS="$GLW_LIB_DEPS"
1014 else
1015 APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
1016 GLW_LIB_DEPS=""
1017 GLW_MESA_DEPS=""
1018 fi
1019 fi
1020 AC_SUBST([GLW_LIB_DEPS])
1021 AC_SUBST([GLW_MESA_DEPS])
1022 AC_SUBST([GLW_SOURCES])
1023 AC_SUBST([MOTIF_CFLAGS])
1024 AC_SUBST([GLW_PC_REQ_PRIV])
1025 AC_SUBST([GLW_PC_LIB_PRIV])
1026 AC_SUBST([GLW_PC_CFLAGS])
1027
1028 dnl
1029 dnl GLUT configuration
1030 dnl
1031 if test -f "$srcdir/include/GL/glut.h"; then
1032 default_glut=yes
1033 else
1034 default_glut=no
1035 fi
1036 AC_ARG_ENABLE([glut],
1037 [AS_HELP_STRING([--disable-glut],
1038 [enable GLUT library @<:@default=enabled if source available@:>@])],
1039 [enable_glut="$enableval"],
1040 [enable_glut="$default_glut"])
1041
1042 dnl Can't build glut if GLU not available
1043 if test "x$enable_glu$enable_glut" = xnoyes; then
1044 AC_MSG_WARN([Disabling glut since GLU is disabled])
1045 enable_glut=no
1046 fi
1047 dnl Don't build glut on osmesa
1048 if test "x$enable_glut" = xyes && test "$mesa_driver" = osmesa; then
1049 AC_MSG_WARN([Disabling glut since the driver is OSMesa])
1050 enable_glut=no
1051 fi
1052
1053 if test "x$enable_glut" = xyes; then
1054 SRC_DIRS="$SRC_DIRS glut/glx"
1055 GLUT_CFLAGS=""
1056 if test "x$GCC" = xyes; then
1057 GLUT_CFLAGS="-fexceptions"
1058 fi
1059 if test "$x11_pkgconfig" = yes; then
1060 PKG_CHECK_MODULES([GLUT],[x11 xmu xi])
1061 GLUT_PC_REQ_PRIV="x11 xmu xi"
1062 GLUT_LIB_DEPS="$GLUT_LIBS"
1063 else
1064 # should check these...
1065 GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
1066 GLUT_PC_LIB_PRIV="$GLUT_LIB_DEPS"
1067 GLUT_PC_CFLAGS="$X11_INCLUDES"
1068 fi
1069 GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
1070 GLUT_PC_LIB_PRIV="$GLUT_PC_LIB_PRIV -lm"
1071
1072 # If glut is available, we can build most programs
1073 if test "$with_demos" = yes; then
1074 PROGRAM_DIRS="$PROGRAM_DIRS demos redbook samples glsl"
1075 fi
1076
1077 # If static, empty GLUT_LIB_DEPS and add libs for programs to link
1078 if test "$enable_static" = no; then
1079 GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
1080 else
1081 APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
1082 GLUT_LIB_DEPS=""
1083 GLUT_MESA_DEPS=""
1084 fi
1085 fi
1086 AC_SUBST([GLUT_LIB_DEPS])
1087 AC_SUBST([GLUT_MESA_DEPS])
1088 AC_SUBST([GLUT_CFLAGS])
1089 AC_SUBST([GLUT_PC_REQ_PRIV])
1090 AC_SUBST([GLUT_PC_LIB_PRIV])
1091 AC_SUBST([GLUT_PC_CFLAGS])
1092
1093 dnl
1094 dnl Program library dependencies
1095 dnl Only libm is added here if necessary as the libraries should
1096 dnl be pulled in by the linker
1097 dnl
1098 if test "x$APP_LIB_DEPS" = x; then
1099 case "$host_os" in
1100 solaris*)
1101 APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm"
1102 ;;
1103 cygwin*)
1104 APP_LIB_DEPS="-lX11"
1105 ;;
1106 *)
1107 APP_LIB_DEPS="-lm"
1108 ;;
1109 esac
1110 fi
1111 AC_SUBST([APP_LIB_DEPS])
1112 AC_SUBST([PROGRAM_DIRS])
1113
1114 dnl
1115 dnl Gallium configuration
1116 dnl
1117 AC_ARG_ENABLE([gallium],
1118 [AS_HELP_STRING([--disable-gallium],
1119 [build gallium @<:@default=enabled@:>@])],
1120 [enable_gallium="$enableval"],
1121 [enable_gallium=yes])
1122 if test "x$enable_gallium" = xyes; then
1123 SRC_DIRS="$SRC_DIRS gallium gallium/winsys"
1124 fi
1125
1126 dnl
1127 dnl Gallium state trackers configuration
1128 dnl
1129 AC_ARG_WITH([state-trackers],
1130 [AS_HELP_STRING([--with-state-trackers@<:@=DIRS...@:>@],
1131 [comma delimited state_trackers list, e.g.
1132 "egl,glx" @<:@default=auto@:>@])],
1133 [with_state_trackers="$withval"],
1134 [with_state_trackers=yes])
1135
1136 case "$with_state_trackers" in
1137 no)
1138 GALLIUM_STATE_TRACKERS_DIRS=""
1139 ;;
1140 yes)
1141 # look at what else is built
1142 case "$mesa_driver" in
1143 xlib)
1144 GALLIUM_STATE_TRACKERS_DIRS=glx
1145 ;;
1146 dri)
1147 GALLIUM_STATE_TRACKERS_DIRS="dri"
1148 if test "x$enable_egl" = xyes; then
1149 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS egl"
1150 fi
1151 # Have only tested st/xorg on 1.6.0 servers
1152 PKG_CHECK_MODULES(XORG, [xorg-server >= 1.6.0],
1153 HAVE_XORG="yes"; GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg",
1154 HAVE_XORG="no")
1155 ;;
1156 esac
1157 ;;
1158 *)
1159 # verify the requested state tracker exist
1160 state_trackers=`IFS=', '; echo $with_state_trackers`
1161 for tracker in $state_trackers; do
1162 test -d "$srcdir/src/gallium/state_trackers/$tracker" || \
1163 AC_MSG_ERROR([state tracker '$tracker' doesn't exist])
1164
1165 if test "$tracker" = egl && test "x$enable_egl" != xyes; then
1166 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1167 fi
1168 if test "$tracker" = xorg; then
1169 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1170 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1171 HAVE_XEXTPROTO_71="no")
1172 fi
1173 done
1174 GALLIUM_STATE_TRACKERS_DIRS="$state_trackers"
1175 ;;
1176 esac
1177
1178 AC_ARG_WITH([xorg-driver-dir],
1179 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1180 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1181 [XORG_DRIVER_INSTALL_DIR="$withval"],
1182 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1183 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1184
1185 AC_ARG_WITH([max-width],
1186 [AS_HELP_STRING([--with-max-width=N],
1187 [Maximum framebuffer width (4096)])],
1188 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1189 AS_IF([test "${withval}" -gt "4096"],
1190 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1191 )
1192 AC_ARG_WITH([max-height],
1193 [AS_HELP_STRING([--with-max-height=N],
1194 [Maximum framebuffer height (4096)])],
1195 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1196 AS_IF([test "${withval}" -gt "4096"],
1197 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1198 )
1199
1200 dnl
1201 dnl Gallium SVGA configuration
1202 dnl
1203 AC_ARG_ENABLE([gallium-svga],
1204 [AS_HELP_STRING([--enable-gallium-svga],
1205 [build gallium SVGA @<:@default=disabled@:>@])],
1206 [enable_gallium_svga="$enableval"],
1207 [enable_gallium_svga=auto])
1208 if test "x$enable_gallium_svga" = xyes; then
1209 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS vmware"
1210 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1211 elif test "x$enable_gallium_svga" = xauto; then
1212 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1213 fi
1214
1215 dnl
1216 dnl Gallium Intel configuration
1217 dnl
1218 AC_ARG_ENABLE([gallium-intel],
1219 [AS_HELP_STRING([--enable-gallium-intel],
1220 [build gallium intel @<:@default=disabled@:>@])],
1221 [enable_gallium_intel="$enableval"],
1222 [enable_gallium_intel=auto])
1223 if test "x$enable_gallium_intel" = xyes; then
1224 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS intel"
1225 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915"
1226 elif test "x$enable_gallium_intel" = xauto; then
1227 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915"
1228 fi
1229
1230 dnl
1231 dnl Gallium Radeon configuration
1232 dnl
1233 AC_ARG_ENABLE([gallium-radeon],
1234 [AS_HELP_STRING([--enable-gallium-radeon],
1235 [build gallium radeon @<:@default=disabled@:>@])],
1236 [enable_gallium_radeon="$enableval"],
1237 [enable_gallium_radeon=no])
1238 if test "x$enable_gallium_radeon" = xyes; then
1239 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS radeon"
1240 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1241 fi
1242
1243 dnl
1244 dnl Gallium Nouveau configuration
1245 dnl
1246 AC_ARG_ENABLE([gallium-nouveau],
1247 [AS_HELP_STRING([--enable-gallium-nouveau],
1248 [build gallium nouveau @<:@default=disabled@:>@])],
1249 [enable_gallium_nouveau="$enableval"],
1250 [enable_gallium_nouveau=no])
1251 if test "x$enable_gallium_nouveau" = xyes; then
1252 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS nouveau"
1253 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nv04 nv10 nv20 nv30 nv40 nv50"
1254 fi
1255
1256
1257 dnl Restore LDFLAGS and CPPFLAGS
1258 LDFLAGS="$_SAVE_LDFLAGS"
1259 CPPFLAGS="$_SAVE_CPPFLAGS"
1260
1261 dnl Substitute the config
1262 AC_CONFIG_FILES([configs/autoconf])
1263
1264 dnl Replace the configs/current symlink
1265 AC_CONFIG_COMMANDS([configs],[
1266 if test -f configs/current || test -L configs/current; then
1267 rm -f configs/current
1268 fi
1269 ln -s autoconf configs/current
1270 ])
1271
1272 AC_OUTPUT
1273
1274 dnl
1275 dnl Output some configuration info for the user
1276 dnl
1277 echo ""
1278 echo " prefix: $prefix"
1279 echo " exec_prefix: $exec_prefix"
1280 echo " libdir: $libdir"
1281 echo " includedir: $includedir"
1282
1283 dnl Driver info
1284 echo ""
1285 echo " Driver: $mesa_driver"
1286 if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
1287 echo " OSMesa: lib$OSMESA_LIB"
1288 else
1289 echo " OSMesa: no"
1290 fi
1291 if test "$mesa_driver" = dri; then
1292 # cleanup the drivers var
1293 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1294 if test "x$DRI_DIRS" = x; then
1295 echo " DRI drivers: no"
1296 else
1297 echo " DRI drivers: $dri_dirs"
1298 fi
1299 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
1300 fi
1301 echo " Use XCB: $enable_xcb"
1302
1303 echo ""
1304 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
1305 echo " Gallium: yes"
1306 echo " Gallium dirs: $GALLIUM_DIRS"
1307 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
1308 echo " Winsys drm dirs:$GALLIUM_WINSYS_DRM_DIRS"
1309 echo " Auxiliary dirs: $GALLIUM_AUXILIARY_DIRS"
1310 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
1311 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
1312 else
1313 echo " Gallium: no"
1314 fi
1315
1316 dnl Libraries
1317 echo ""
1318 echo " Shared libs: $enable_shared"
1319 echo " Static libs: $enable_static"
1320 echo " EGL: $enable_egl"
1321 echo " GLU: $enable_glu"
1322 echo " GLw: $enable_glw (Motif: $enable_motif)"
1323 echo " glut: $enable_glut"
1324
1325 dnl Programs
1326 # cleanup the programs var for display
1327 program_dirs=`echo $PROGRAM_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1328 if test "x$program_dirs" = x; then
1329 echo " Demos: no"
1330 else
1331 echo " Demos: $program_dirs"
1332 fi
1333
1334 dnl Compiler options
1335 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
1336 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1337 $SED 's/^ *//;s/ */ /;s/ *$//'`
1338 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1339 $SED 's/^ *//;s/ */ /;s/ *$//'`
1340 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1341 echo ""
1342 echo " CFLAGS: $cflags"
1343 echo " CXXFLAGS: $cxxflags"
1344 echo " Macros: $defines"
1345
1346 echo ""
1347 echo " Run '${MAKE-make}' to build Mesa"
1348 echo ""