python: Integrate with llvmpipe if possible.
[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 EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
247
248 GL_LIB_GLOB='lib$(GL_LIB).*'${LIB_EXTENSION}'*'
249 GLU_LIB_GLOB='lib$(GLU_LIB).*'${LIB_EXTENSION}'*'
250 GLUT_LIB_GLOB='lib$(GLUT_LIB).*'${LIB_EXTENSION}'*'
251 GLW_LIB_GLOB='lib$(GLW_LIB).*'${LIB_EXTENSION}'*'
252 OSMESA_LIB_GLOB='lib$(OSMESA_LIB).*'${LIB_EXTENSION}'*'
253 EGL_LIB_GLOB='lib$(EGL_LIB).*'${LIB_EXTENSION}'*'
254
255 AC_SUBST([GL_LIB_NAME])
256 AC_SUBST([GLU_LIB_NAME])
257 AC_SUBST([GLUT_LIB_NAME])
258 AC_SUBST([GLW_LIB_NAME])
259 AC_SUBST([OSMESA_LIB_NAME])
260 AC_SUBST([EGL_LIB_NAME])
261
262 AC_SUBST([GL_LIB_GLOB])
263 AC_SUBST([GLU_LIB_GLOB])
264 AC_SUBST([GLUT_LIB_GLOB])
265 AC_SUBST([GLW_LIB_GLOB])
266 AC_SUBST([OSMESA_LIB_GLOB])
267 AC_SUBST([EGL_LIB_GLOB])
268
269 dnl
270 dnl Arch/platform-specific settings
271 dnl
272 AC_ARG_ENABLE([asm],
273 [AS_HELP_STRING([--disable-asm],
274 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
275 [enable_asm="$enableval"],
276 [enable_asm=yes]
277 )
278 asm_arch=""
279 ASM_FLAGS=""
280 MESA_ASM_SOURCES=""
281 GLAPI_ASM_SOURCES=""
282 AC_MSG_CHECKING([whether to enable assembly])
283 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
284 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
285 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
286 case "$host_cpu" in
287 i?86 | x86_64)
288 enable_asm=no
289 AC_MSG_RESULT([no, cross compiling])
290 ;;
291 esac
292 fi
293 # check for supported arches
294 if test "x$enable_asm" = xyes; then
295 case "$host_cpu" in
296 i?86)
297 case "$host_os" in
298 linux* | *freebsd* | dragonfly*)
299 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
300 ;;
301 esac
302 ;;
303 x86_64)
304 case "$host_os" in
305 linux* | *freebsd* | dragonfly*)
306 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
307 ;;
308 esac
309 ;;
310 powerpc)
311 case "$host_os" in
312 linux*)
313 asm_arch=ppc
314 ;;
315 esac
316 ;;
317 sparc*)
318 case "$host_os" in
319 linux*)
320 asm_arch=sparc
321 ;;
322 esac
323 ;;
324 esac
325
326 case "$asm_arch" in
327 x86)
328 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
329 MESA_ASM_SOURCES='$(X86_SOURCES)'
330 GLAPI_ASM_SOURCES='$(X86_API)'
331 AC_MSG_RESULT([yes, x86])
332 ;;
333 x86_64)
334 ASM_FLAGS="-DUSE_X86_64_ASM"
335 MESA_ASM_SOURCES='$(X86-64_SOURCES)'
336 GLAPI_ASM_SOURCES='$(X86-64_API)'
337 AC_MSG_RESULT([yes, x86_64])
338 ;;
339 ppc)
340 ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM"
341 MESA_ASM_SOURCES='$(PPC_SOURCES)'
342 AC_MSG_RESULT([yes, ppc])
343 ;;
344 sparc)
345 ASM_FLAGS="-DUSE_SPARC_ASM"
346 MESA_ASM_SOURCES='$(SPARC_SOURCES)'
347 GLAPI_ASM_SOURCES='$(SPARC_API)'
348 AC_MSG_RESULT([yes, sparc])
349 ;;
350 *)
351 AC_MSG_RESULT([no, platform not supported])
352 ;;
353 esac
354 fi
355 AC_SUBST([ASM_FLAGS])
356 AC_SUBST([MESA_ASM_SOURCES])
357 AC_SUBST([GLAPI_ASM_SOURCES])
358
359 dnl PIC code macro
360 MESA_PIC_FLAGS
361
362 dnl Check to see if dlopen is in default libraries (like Solaris, which
363 dnl has it in libc), or if libdl is needed to get it.
364 AC_CHECK_FUNC([dlopen], [],
365 [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
366
367 dnl See if posix_memalign is available
368 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
369
370 dnl SELinux awareness.
371 AC_ARG_ENABLE([selinux],
372 [AS_HELP_STRING([--enable-selinux],
373 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
374 [MESA_SELINUX="$enableval"],
375 [MESA_SELINUX=no])
376 if test "x$enable_selinux" = "xyes"; then
377 AC_CHECK_HEADER([selinux/selinux.h],[],
378 [AC_MSG_ERROR([SELinux headers not found])])
379 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
380 [AC_MSG_ERROR([SELinux library not found])])
381 SELINUX_LIBS="-lselinux"
382 DEFINES="$DEFINES -DMESA_SELINUX"
383 fi
384
385 dnl
386 dnl Driver configuration. Options are xlib, dri and osmesa right now.
387 dnl More later: directfb, fbdev, ...
388 dnl
389 default_driver="xlib"
390
391 case "$host_os" in
392 linux*)
393 case "$host_cpu" in
394 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
395 esac
396 ;;
397 *freebsd* | dragonfly*)
398 case "$host_cpu" in
399 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
400 esac
401 ;;
402 esac
403
404 AC_ARG_WITH([driver],
405 [AS_HELP_STRING([--with-driver=DRIVER],
406 [driver for Mesa: xlib,dri,osmesa @<:@default=dri when available, or xlib@:>@])],
407 [mesa_driver="$withval"],
408 [mesa_driver="$default_driver"])
409 dnl Check for valid option
410 case "x$mesa_driver" in
411 xxlib|xdri|xosmesa)
412 ;;
413 *)
414 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
415 ;;
416 esac
417
418 dnl
419 dnl Driver specific build directories
420 dnl
421 SRC_DIRS="glsl mesa glew"
422 GLU_DIRS="sgi"
423 WINDOW_SYSTEM=""
424 GALLIUM_DIRS="auxiliary drivers state_trackers"
425 GALLIUM_WINSYS_DIRS=""
426 GALLIUM_WINSYS_DRM_DIRS=""
427 GALLIUM_DRIVERS_DIRS="softpipe failover trace identity"
428 GALLIUM_STATE_TRACKERS_DIRS=""
429
430 case "$mesa_driver" in
431 xlib)
432 DRIVER_DIRS="x11"
433 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS xlib"
434 ;;
435 dri)
436 SRC_DIRS="glx/x11 $SRC_DIRS"
437 DRIVER_DIRS="dri"
438 WINDOW_SYSTEM="dri"
439 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS drm"
440 ;;
441 osmesa)
442 DRIVER_DIRS="osmesa"
443 ;;
444 esac
445 AC_SUBST([SRC_DIRS])
446 AC_SUBST([GLU_DIRS])
447 AC_SUBST([DRIVER_DIRS])
448 AC_SUBST([WINDOW_SYSTEM])
449 AC_SUBST([GALLIUM_DIRS])
450 AC_SUBST([GALLIUM_WINSYS_DIRS])
451 AC_SUBST([GALLIUM_WINSYS_DRM_DIRS])
452 AC_SUBST([GALLIUM_DRIVERS_DIRS])
453 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
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 # find the DRI deps for libGL
582 if test "$x11_pkgconfig" = yes; then
583 # add xcb modules if necessary
584 dri_modules="x11 xext xxf86vm xdamage xfixes"
585 if test "$enable_xcb" = yes; then
586 dri_modules="$dri_modules x11-xcb xcb-glx"
587 fi
588
589 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
590 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
591 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
592 GL_LIB_DEPS="$DRIGL_LIBS"
593 else
594 # should check these...
595 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
596 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
597 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
598 GL_PC_CFLAGS="$X11_INCLUDES"
599
600 # XCB can only be used from pkg-config
601 if test "$enable_xcb" = yes; then
602 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
603 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
604 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
605 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
606 fi
607 fi
608
609 # need DRM libs, -lpthread, etc.
610 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
611 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
612 ;;
613 osmesa)
614 # No libGL for osmesa
615 GL_LIB_DEPS=""
616 ;;
617 esac
618 AC_SUBST([GL_LIB_DEPS])
619 AC_SUBST([GL_PC_REQ_PRIV])
620 AC_SUBST([GL_PC_LIB_PRIV])
621 AC_SUBST([GL_PC_CFLAGS])
622 AC_SUBST([DRI_PC_REQ_PRIV])
623
624 dnl
625 dnl More X11 setup
626 dnl
627 if test "$mesa_driver" = xlib; then
628 DEFINES="$DEFINES -DUSE_XSHM"
629 fi
630
631 dnl
632 dnl More DRI setup
633 dnl
634 AC_ARG_ENABLE([glx-tls],
635 [AS_HELP_STRING([--enable-glx-tls],
636 [enable TLS support in GLX @<:@default=disabled@:>@])],
637 [GLX_USE_TLS="$enableval"],
638 [GLX_USE_TLS=no])
639 dnl Directory for DRI drivers
640 AC_ARG_WITH([dri-driverdir],
641 [AS_HELP_STRING([--with-dri-driverdir=DIR],
642 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
643 [DRI_DRIVER_INSTALL_DIR="$withval"],
644 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
645 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
646 dnl Extra search path for DRI drivers
647 AC_ARG_WITH([dri-searchpath],
648 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
649 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
650 [DRI_DRIVER_SEARCH_DIR="$withval"],
651 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
652 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
653 dnl Direct rendering or just indirect rendering
654 AC_ARG_ENABLE([driglx-direct],
655 [AS_HELP_STRING([--disable-driglx-direct],
656 [enable direct rendering in GLX for DRI @<:@default=enabled@:>@])],
657 [driglx_direct="$enableval"],
658 [driglx_direct="yes"])
659 dnl Which drivers to build - default is chosen by platform
660 AC_ARG_WITH([dri-drivers],
661 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
662 [comma delimited DRI drivers list, e.g.
663 "swrast,i965,radeon" @<:@default=auto@:>@])],
664 [with_dri_drivers="$withval"],
665 [with_dri_drivers=yes])
666 if test "x$with_dri_drivers" = x; then
667 with_dri_drivers=no
668 fi
669
670 dnl If $with_dri_drivers is yes, directories will be added through
671 dnl platform checks
672 DRI_DIRS=""
673 case "$with_dri_drivers" in
674 no) ;;
675 yes)
676 DRI_DIRS="yes"
677 ;;
678 *)
679 # verify the requested driver directories exist
680 dri_drivers=`IFS=', '; echo $with_dri_drivers`
681 for driver in $dri_drivers; do
682 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
683 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
684 done
685 DRI_DIRS="$dri_drivers"
686 ;;
687 esac
688
689 dnl Just default to no EGL for now
690 USING_EGL=0
691 AC_SUBST([USING_EGL])
692
693 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
694 if test "$mesa_driver" = dri; then
695 # Use TLS in GLX?
696 if test "x$GLX_USE_TLS" = xyes; then
697 DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS"
698 fi
699
700 if test "x$USING_EGL" = x1; then
701 PROGRAM_DIRS="egl"
702 fi
703
704 # Platform specific settings and drivers to build
705 case "$host_os" in
706 linux*)
707 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
708 if test "x$driglx_direct" = xyes; then
709 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
710 fi
711 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
712
713 case "$host_cpu" in
714 x86_64)
715 # ffb, gamma, and sis are missing because they have not be
716 # converted to use the new interface. i810 are missing
717 # because there is no x86-64 system where they could *ever*
718 # be used.
719 if test "x$DRI_DIRS" = "xyes"; then
720 DRI_DIRS="i915 i965 mach64 mga r128 r200 r300 r600 radeon \
721 savage tdfx unichrome swrast"
722 fi
723 ;;
724 powerpc*)
725 # Build only the drivers for cards that exist on PowerPC.
726 # At some point MGA will be added, but not yet.
727 if test "x$DRI_DIRS" = "xyes"; then
728 DRI_DIRS="mach64 r128 r200 r300 r600 radeon tdfx swrast"
729 fi
730 ;;
731 sparc*)
732 # Build only the drivers for cards that exist on sparc`
733 if test "x$DRI_DIRS" = "xyes"; then
734 DRI_DIRS="mach64 r128 r200 r300 r600 radeon ffb swrast"
735 fi
736 ;;
737 esac
738 ;;
739 freebsd* | dragonfly*)
740 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
741 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
742 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
743 if test "x$driglx_direct" = xyes; then
744 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
745 fi
746 if test "x$GXX" = xyes; then
747 CXXFLAGS="$CXXFLAGS -ansi -pedantic"
748 fi
749
750 # ffb and gamma are missing because they have not been converted
751 # to use the new interface.
752 if test "x$DRI_DIRS" = "xyes"; then
753 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon tdfx \
754 unichrome savage sis swrast"
755 fi
756 ;;
757 gnu*)
758 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
759 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
760 ;;
761 solaris*)
762 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
763 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
764 if test "x$driglx_direct" = xyes; then
765 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
766 fi
767 ;;
768 esac
769
770 # default drivers
771 if test "x$DRI_DIRS" = "xyes"; then
772 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon \
773 savage sis tdfx unichrome ffb swrast"
774 fi
775
776 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
777
778 # Check for expat
779 EXPAT_INCLUDES=""
780 EXPAT_LIB=-lexpat
781 AC_ARG_WITH([expat],
782 [AS_HELP_STRING([--with-expat=DIR],
783 [expat install directory])],[
784 EXPAT_INCLUDES="-I$withval/include"
785 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
786 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
787 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
788 ])
789 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
790 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
791 [AC_MSG_ERROR([Expat required for DRI.])])
792
793 # put all the necessary libs together
794 DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
795 fi
796 AC_SUBST([DRI_DIRS])
797 AC_SUBST([EXPAT_INCLUDES])
798 AC_SUBST([DRI_LIB_DEPS])
799
800 case $DRI_DIRS in
801 *i915*|*i965*)
802 PKG_CHECK_MODULES([INTEL], [libdrm_intel])
803 ;;
804 esac
805
806 case $DRI_DIRS in
807 *radeon*|*r200*|*r300*|*r600*)
808 PKG_CHECK_MODULES([LIBDRM_RADEON],
809 [libdrm_radeon libdrm >= $LIBDRM_RADEON_REQUIRED],
810 HAVE_LIBDRM_RADEON=yes,
811 HAVE_LIBDRM_RADEON=no)
812
813 if test "$HAVE_LIBDRM_RADEON" = yes; then
814 RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS"
815 RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS
816 fi
817 ;;
818 esac
819 AC_SUBST([RADEON_CFLAGS])
820 AC_SUBST([RADEON_LDFLAGS])
821
822
823 dnl
824 dnl OSMesa configuration
825 dnl
826 if test "$mesa_driver" = xlib; then
827 default_gl_osmesa=yes
828 else
829 default_gl_osmesa=no
830 fi
831 AC_ARG_ENABLE([gl-osmesa],
832 [AS_HELP_STRING([--enable-gl-osmesa],
833 [enable OSMesa on libGL @<:@default=enabled for xlib driver@:>@])],
834 [gl_osmesa="$enableval"],
835 [gl_osmesa="$default_gl_osmesa"])
836 if test "x$gl_osmesa" = xyes; then
837 if test "$mesa_driver" = osmesa; then
838 AC_MSG_ERROR([libGL is not available for OSMesa driver])
839 else
840 DRIVER_DIRS="$DRIVER_DIRS osmesa"
841 fi
842 fi
843
844 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
845 AC_ARG_WITH([osmesa-bits],
846 [AS_HELP_STRING([--with-osmesa-bits=BITS],
847 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
848 [osmesa_bits="$withval"],
849 [osmesa_bits=8])
850 if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
851 AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
852 osmesa_bits=8
853 fi
854 case "x$osmesa_bits" in
855 x8)
856 OSMESA_LIB=OSMesa
857 ;;
858 x16|x32)
859 OSMESA_LIB="OSMesa$osmesa_bits"
860 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
861 ;;
862 *)
863 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
864 ;;
865 esac
866 AC_SUBST([OSMESA_LIB])
867
868 case "$mesa_driver" in
869 osmesa)
870 # only link libraries with osmesa if shared
871 if test "$enable_static" = no; then
872 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
873 else
874 OSMESA_LIB_DEPS=""
875 fi
876 OSMESA_MESA_DEPS=""
877 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
878 ;;
879 *)
880 # Link OSMesa to libGL otherwise
881 OSMESA_LIB_DEPS=""
882 # only link libraries with osmesa if shared
883 if test "$enable_static" = no; then
884 OSMESA_MESA_DEPS='-l$(GL_LIB)'
885 else
886 OSMESA_MESA_DEPS=""
887 fi
888 OSMESA_PC_REQ="gl"
889 ;;
890 esac
891 OSMESA_PC_LIB_PRIV="$OSMESA_PC_LIB_PRIV"
892 AC_SUBST([OSMESA_LIB_DEPS])
893 AC_SUBST([OSMESA_MESA_DEPS])
894 AC_SUBST([OSMESA_PC_REQ])
895 AC_SUBST([OSMESA_PC_LIB_PRIV])
896
897 dnl
898 dnl EGL configuration
899 dnl
900 AC_ARG_ENABLE([egl],
901 [AS_HELP_STRING([--disable-egl],
902 [disable EGL library @<:@default=enabled@:>@])],
903 [enable_egl="$enableval"],
904 [enable_egl=yes])
905 if test "x$enable_egl" = xyes; then
906 SRC_DIRS="$SRC_DIRS egl"
907 EGL_LIB_DEPS="$DLOPEN_LIBS -lpthread"
908 EGL_DRIVERS_DIRS=""
909 if test "$enable_static" != yes && test "$mesa_driver" != osmesa; then
910 # build egl_glx when libGL is built
911 EGL_DRIVERS_DIRS="glx"
912 fi
913 fi
914 AC_SUBST([EGL_LIB_DEPS])
915 AC_SUBST([EGL_DRIVERS_DIRS])
916
917 dnl
918 dnl GLU configuration
919 dnl
920 AC_ARG_ENABLE([glu],
921 [AS_HELP_STRING([--disable-glu],
922 [enable OpenGL Utility library @<:@default=enabled@:>@])],
923 [enable_glu="$enableval"],
924 [enable_glu=yes])
925 if test "x$enable_glu" = xyes; then
926 SRC_DIRS="$SRC_DIRS glu"
927
928 case "$mesa_driver" in
929 osmesa)
930 # If GLU is available and we have libOSMesa (not 16 or 32),
931 # we can build the osdemos
932 if test "$with_demos" = yes && test "$osmesa_bits" = 8; then
933 PROGRAM_DIRS="$PROGRAM_DIRS osdemos"
934 fi
935
936 # Link libGLU to libOSMesa instead of libGL
937 GLU_LIB_DEPS=""
938 GLU_PC_REQ="osmesa"
939 if test "$enable_static" = no; then
940 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
941 else
942 GLU_MESA_DEPS=""
943 fi
944 ;;
945 *)
946 # If static, empty GLU_LIB_DEPS and add libs for programs to link
947 GLU_PC_REQ="gl"
948 GLU_PC_LIB_PRIV="-lm"
949 if test "$enable_static" = no; then
950 GLU_LIB_DEPS="-lm"
951 GLU_MESA_DEPS='-l$(GL_LIB)'
952 else
953 GLU_LIB_DEPS=""
954 GLU_MESA_DEPS=""
955 APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
956 fi
957 ;;
958 esac
959 fi
960 if test "$enable_static" = no; then
961 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
962 fi
963 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
964 AC_SUBST([GLU_LIB_DEPS])
965 AC_SUBST([GLU_MESA_DEPS])
966 AC_SUBST([GLU_PC_REQ])
967 AC_SUBST([GLU_PC_REQ_PRIV])
968 AC_SUBST([GLU_PC_LIB_PRIV])
969 AC_SUBST([GLU_PC_CFLAGS])
970
971 dnl
972 dnl GLw configuration
973 dnl
974 AC_ARG_ENABLE([glw],
975 [AS_HELP_STRING([--disable-glw],
976 [enable Xt/Motif widget library @<:@default=enabled@:>@])],
977 [enable_glw="$enableval"],
978 [enable_glw=yes])
979 dnl Don't build GLw on osmesa
980 if test "x$enable_glw" = xyes && test "$mesa_driver" = osmesa; then
981 AC_MSG_WARN([Disabling GLw since the driver is OSMesa])
982 enable_glw=no
983 fi
984 AC_ARG_ENABLE([motif],
985 [AS_HELP_STRING([--enable-motif],
986 [use Motif widgets in GLw @<:@default=disabled@:>@])],
987 [enable_motif="$enableval"],
988 [enable_motif=no])
989
990 if test "x$enable_glw" = xyes; then
991 SRC_DIRS="$SRC_DIRS glw"
992 if test "$x11_pkgconfig" = yes; then
993 PKG_CHECK_MODULES([GLW],[x11 xt])
994 GLW_PC_REQ_PRIV="x11 xt"
995 GLW_LIB_DEPS="$GLW_LIBS"
996 else
997 # should check these...
998 GLW_LIB_DEPS="$X_LIBS -lXt -lX11"
999 GLW_PC_LIB_PRIV="$GLW_LIB_DEPS"
1000 GLW_PC_CFLAGS="$X11_INCLUDES"
1001 fi
1002
1003 GLW_SOURCES="GLwDrawA.c"
1004 MOTIF_CFLAGS=
1005 if test "x$enable_motif" = xyes; then
1006 GLW_SOURCES="$GLW_SOURCES GLwMDrawA.c"
1007 AC_PATH_PROG([MOTIF_CONFIG], [motif-config], [no])
1008 if test "x$MOTIF_CONFIG" != xno; then
1009 MOTIF_CFLAGS=`$MOTIF_CONFIG --cflags`
1010 MOTIF_LIBS=`$MOTIF_CONFIG --libs`
1011 else
1012 AC_CHECK_HEADER([Xm/PrimitiveP.h], [],
1013 [AC_MSG_ERROR([Can't locate Motif headers])])
1014 AC_CHECK_LIB([Xm], [XmGetPixmap], [MOTIF_LIBS="-lXm"],
1015 [AC_MSG_ERROR([Can't locate Motif Xm library])])
1016 fi
1017 # MOTIF_LIBS is prepended to GLW_LIB_DEPS since Xm needs Xt/X11
1018 GLW_LIB_DEPS="$MOTIF_LIBS $GLW_LIB_DEPS"
1019 GLW_PC_LIB_PRIV="$MOTIF_LIBS $GLW_PC_LIB_PRIV"
1020 GLW_PC_CFLAGS="$MOTIF_CFLAGS $GLW_PC_CFLAGS"
1021 fi
1022
1023 # If static, empty GLW_LIB_DEPS and add libs for programs to link
1024 GLW_PC_LIB_PRIV="$GLW_PC_LIB_PRIV"
1025 if test "$enable_static" = no; then
1026 GLW_MESA_DEPS='-l$(GL_LIB)'
1027 GLW_LIB_DEPS="$GLW_LIB_DEPS"
1028 else
1029 APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
1030 GLW_LIB_DEPS=""
1031 GLW_MESA_DEPS=""
1032 fi
1033 fi
1034 AC_SUBST([GLW_LIB_DEPS])
1035 AC_SUBST([GLW_MESA_DEPS])
1036 AC_SUBST([GLW_SOURCES])
1037 AC_SUBST([MOTIF_CFLAGS])
1038 AC_SUBST([GLW_PC_REQ_PRIV])
1039 AC_SUBST([GLW_PC_LIB_PRIV])
1040 AC_SUBST([GLW_PC_CFLAGS])
1041
1042 dnl
1043 dnl GLUT configuration
1044 dnl
1045 if test -f "$srcdir/include/GL/glut.h"; then
1046 default_glut=yes
1047 else
1048 default_glut=no
1049 fi
1050 AC_ARG_ENABLE([glut],
1051 [AS_HELP_STRING([--disable-glut],
1052 [enable GLUT library @<:@default=enabled if source available@:>@])],
1053 [enable_glut="$enableval"],
1054 [enable_glut="$default_glut"])
1055
1056 dnl Can't build glut if GLU not available
1057 if test "x$enable_glu$enable_glut" = xnoyes; then
1058 AC_MSG_WARN([Disabling glut since GLU is disabled])
1059 enable_glut=no
1060 fi
1061 dnl Don't build glut on osmesa
1062 if test "x$enable_glut" = xyes && test "$mesa_driver" = osmesa; then
1063 AC_MSG_WARN([Disabling glut since the driver is OSMesa])
1064 enable_glut=no
1065 fi
1066
1067 if test "x$enable_glut" = xyes; then
1068 SRC_DIRS="$SRC_DIRS glut/glx"
1069 GLUT_CFLAGS=""
1070 if test "x$GCC" = xyes; then
1071 GLUT_CFLAGS="-fexceptions"
1072 fi
1073 if test "$x11_pkgconfig" = yes; then
1074 PKG_CHECK_MODULES([GLUT],[x11 xmu xi])
1075 GLUT_PC_REQ_PRIV="x11 xmu xi"
1076 GLUT_LIB_DEPS="$GLUT_LIBS"
1077 else
1078 # should check these...
1079 GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
1080 GLUT_PC_LIB_PRIV="$GLUT_LIB_DEPS"
1081 GLUT_PC_CFLAGS="$X11_INCLUDES"
1082 fi
1083 GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
1084 GLUT_PC_LIB_PRIV="$GLUT_PC_LIB_PRIV -lm"
1085
1086 # If glut is available, we can build most programs
1087 if test "$with_demos" = yes; then
1088 PROGRAM_DIRS="$PROGRAM_DIRS demos redbook samples glsl"
1089 fi
1090
1091 # If static, empty GLUT_LIB_DEPS and add libs for programs to link
1092 if test "$enable_static" = no; then
1093 GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
1094 else
1095 APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
1096 GLUT_LIB_DEPS=""
1097 GLUT_MESA_DEPS=""
1098 fi
1099 fi
1100 AC_SUBST([GLUT_LIB_DEPS])
1101 AC_SUBST([GLUT_MESA_DEPS])
1102 AC_SUBST([GLUT_CFLAGS])
1103 AC_SUBST([GLUT_PC_REQ_PRIV])
1104 AC_SUBST([GLUT_PC_LIB_PRIV])
1105 AC_SUBST([GLUT_PC_CFLAGS])
1106
1107 dnl
1108 dnl Program library dependencies
1109 dnl Only libm is added here if necessary as the libraries should
1110 dnl be pulled in by the linker
1111 dnl
1112 if test "x$APP_LIB_DEPS" = x; then
1113 case "$host_os" in
1114 solaris*)
1115 APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm"
1116 ;;
1117 cygwin*)
1118 APP_LIB_DEPS="-lX11"
1119 ;;
1120 *)
1121 APP_LIB_DEPS="-lm"
1122 ;;
1123 esac
1124 fi
1125 AC_SUBST([APP_LIB_DEPS])
1126 AC_SUBST([PROGRAM_DIRS])
1127
1128 dnl
1129 dnl Gallium configuration
1130 dnl
1131 AC_ARG_ENABLE([gallium],
1132 [AS_HELP_STRING([--disable-gallium],
1133 [build gallium @<:@default=enabled@:>@])],
1134 [enable_gallium="$enableval"],
1135 [enable_gallium=yes])
1136 if test "x$enable_gallium" = xyes; then
1137 SRC_DIRS="$SRC_DIRS gallium gallium/winsys"
1138 fi
1139
1140 dnl
1141 dnl Gallium state trackers configuration
1142 dnl
1143 AC_ARG_WITH([state-trackers],
1144 [AS_HELP_STRING([--with-state-trackers@<:@=DIRS...@:>@],
1145 [comma delimited state_trackers list, e.g.
1146 "egl,glx" @<:@default=auto@:>@])],
1147 [with_state_trackers="$withval"],
1148 [with_state_trackers=yes])
1149
1150 case "$with_state_trackers" in
1151 no)
1152 GALLIUM_STATE_TRACKERS_DIRS=""
1153 ;;
1154 yes)
1155 # look at what else is built
1156 case "$mesa_driver" in
1157 xlib)
1158 GALLIUM_STATE_TRACKERS_DIRS=glx
1159 ;;
1160 dri)
1161 GALLIUM_STATE_TRACKERS_DIRS="dri"
1162 if test "x$enable_egl" = xyes; then
1163 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS egl"
1164 fi
1165 # Have only tested st/xorg on 1.6.0 servers
1166 PKG_CHECK_MODULES(XORG, [xorg-server >= 1.6.0],
1167 HAVE_XORG="yes"; GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg",
1168 HAVE_XORG="no")
1169 ;;
1170 esac
1171 ;;
1172 *)
1173 # verify the requested state tracker exist
1174 state_trackers=`IFS=', '; echo $with_state_trackers`
1175 for tracker in $state_trackers; do
1176 test -d "$srcdir/src/gallium/state_trackers/$tracker" || \
1177 AC_MSG_ERROR([state tracker '$tracker' doesn't exist])
1178
1179 if test "$tracker" = egl && test "x$enable_egl" != xyes; then
1180 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1181 fi
1182 if test "$tracker" = xorg; then
1183 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1184 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1185 HAVE_XEXTPROTO_71="no")
1186 fi
1187 done
1188 GALLIUM_STATE_TRACKERS_DIRS="$state_trackers"
1189 ;;
1190 esac
1191
1192 AC_ARG_WITH([xorg-driver-dir],
1193 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1194 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1195 [XORG_DRIVER_INSTALL_DIR="$withval"],
1196 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1197 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1198
1199 AC_ARG_WITH([max-width],
1200 [AS_HELP_STRING([--with-max-width=N],
1201 [Maximum framebuffer width (4096)])],
1202 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1203 AS_IF([test "${withval}" -gt "4096"],
1204 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1205 )
1206 AC_ARG_WITH([max-height],
1207 [AS_HELP_STRING([--with-max-height=N],
1208 [Maximum framebuffer height (4096)])],
1209 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1210 AS_IF([test "${withval}" -gt "4096"],
1211 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1212 )
1213
1214 dnl
1215 dnl Gallium SVGA configuration
1216 dnl
1217 AC_ARG_ENABLE([gallium-svga],
1218 [AS_HELP_STRING([--enable-gallium-svga],
1219 [build gallium SVGA @<:@default=disabled@:>@])],
1220 [enable_gallium_svga="$enableval"],
1221 [enable_gallium_svga=auto])
1222 if test "x$enable_gallium_svga" = xyes; then
1223 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS vmware"
1224 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1225 elif test "x$enable_gallium_svga" = xauto; then
1226 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1227 fi
1228
1229 dnl
1230 dnl Gallium Intel configuration
1231 dnl
1232 AC_ARG_ENABLE([gallium-intel],
1233 [AS_HELP_STRING([--enable-gallium-intel],
1234 [build gallium intel @<:@default=disabled@:>@])],
1235 [enable_gallium_intel="$enableval"],
1236 [enable_gallium_intel=auto])
1237 if test "x$enable_gallium_intel" = xyes; then
1238 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS intel i965"
1239 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 i965"
1240 elif test "x$enable_gallium_intel" = xauto; then
1241 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 i965"
1242 fi
1243
1244 dnl
1245 dnl Gallium Radeon configuration
1246 dnl
1247 AC_ARG_ENABLE([gallium-radeon],
1248 [AS_HELP_STRING([--enable-gallium-radeon],
1249 [build gallium radeon @<:@default=disabled@:>@])],
1250 [enable_gallium_radeon="$enableval"],
1251 [enable_gallium_radeon=no])
1252 if test "x$enable_gallium_radeon" = xyes; then
1253 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS radeon"
1254 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1255 fi
1256
1257 dnl
1258 dnl Gallium Nouveau configuration
1259 dnl
1260 AC_ARG_ENABLE([gallium-nouveau],
1261 [AS_HELP_STRING([--enable-gallium-nouveau],
1262 [build gallium nouveau @<:@default=disabled@:>@])],
1263 [enable_gallium_nouveau="$enableval"],
1264 [enable_gallium_nouveau=no])
1265 if test "x$enable_gallium_nouveau" = xyes; then
1266 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS nouveau"
1267 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nv04 nv10 nv20 nv30 nv40 nv50"
1268 fi
1269
1270
1271 dnl Restore LDFLAGS and CPPFLAGS
1272 LDFLAGS="$_SAVE_LDFLAGS"
1273 CPPFLAGS="$_SAVE_CPPFLAGS"
1274
1275 dnl Substitute the config
1276 AC_CONFIG_FILES([configs/autoconf])
1277
1278 dnl Replace the configs/current symlink
1279 AC_CONFIG_COMMANDS([configs],[
1280 if test -f configs/current || test -L configs/current; then
1281 rm -f configs/current
1282 fi
1283 ln -s autoconf configs/current
1284 ])
1285
1286 AC_OUTPUT
1287
1288 dnl
1289 dnl Output some configuration info for the user
1290 dnl
1291 echo ""
1292 echo " prefix: $prefix"
1293 echo " exec_prefix: $exec_prefix"
1294 echo " libdir: $libdir"
1295 echo " includedir: $includedir"
1296
1297 dnl Driver info
1298 echo ""
1299 echo " Driver: $mesa_driver"
1300 if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
1301 echo " OSMesa: lib$OSMESA_LIB"
1302 else
1303 echo " OSMesa: no"
1304 fi
1305 if test "$mesa_driver" = dri; then
1306 # cleanup the drivers var
1307 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1308 if test "x$DRI_DIRS" = x; then
1309 echo " DRI drivers: no"
1310 else
1311 echo " DRI drivers: $dri_dirs"
1312 fi
1313 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
1314 fi
1315 echo " Use XCB: $enable_xcb"
1316
1317 echo ""
1318 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
1319 echo " Gallium: yes"
1320 echo " Gallium dirs: $GALLIUM_DIRS"
1321 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
1322 echo " Winsys drm dirs:$GALLIUM_WINSYS_DRM_DIRS"
1323 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
1324 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
1325 else
1326 echo " Gallium: no"
1327 fi
1328
1329 dnl Libraries
1330 echo ""
1331 echo " Shared libs: $enable_shared"
1332 echo " Static libs: $enable_static"
1333 echo " EGL: $enable_egl"
1334 echo " GLU: $enable_glu"
1335 echo " GLw: $enable_glw (Motif: $enable_motif)"
1336 echo " glut: $enable_glut"
1337
1338 dnl Programs
1339 # cleanup the programs var for display
1340 program_dirs=`echo $PROGRAM_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1341 if test "x$program_dirs" = x; then
1342 echo " Demos: no"
1343 else
1344 echo " Demos: $program_dirs"
1345 fi
1346
1347 dnl Compiler options
1348 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
1349 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1350 $SED 's/^ *//;s/ */ /;s/ *$//'`
1351 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1352 $SED 's/^ *//;s/ */ /;s/ *$//'`
1353 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1354 echo ""
1355 echo " CFLAGS: $cflags"
1356 echo " CXXFLAGS: $cxxflags"
1357 echo " Macros: $defines"
1358
1359 echo ""
1360 echo " Run '${MAKE-make}' to build Mesa"
1361 echo ""