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