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