mesa: added version fields to GLcontext
[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
801 *radeon*|*r200*|*r300*|*r600*)
802 PKG_CHECK_MODULES([LIBDRM_RADEON],
803 [libdrm_radeon libdrm >= $LIBDRM_RADEON_REQUIRED],
804 HAVE_LIBDRM_RADEON=yes,
805 HAVE_LIBDRM_RADEON=no)
806
807 if test "$HAVE_LIBDRM_RADEON" = yes; then
808 RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS"
809 RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS
810 fi
811 ;;
812 esac
813 AC_SUBST([RADEON_CFLAGS])
814 AC_SUBST([RADEON_LDFLAGS])
815
816
817 dnl
818 dnl OSMesa configuration
819 dnl
820 if test "$mesa_driver" = xlib; then
821 default_gl_osmesa=yes
822 else
823 default_gl_osmesa=no
824 fi
825 AC_ARG_ENABLE([gl-osmesa],
826 [AS_HELP_STRING([--enable-gl-osmesa],
827 [enable OSMesa on libGL @<:@default=enabled for xlib driver@:>@])],
828 [gl_osmesa="$enableval"],
829 [gl_osmesa="$default_gl_osmesa"])
830 if test "x$gl_osmesa" = xyes; then
831 if test "$mesa_driver" = osmesa; then
832 AC_MSG_ERROR([libGL is not available for OSMesa driver])
833 else
834 DRIVER_DIRS="$DRIVER_DIRS osmesa"
835 fi
836 fi
837
838 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
839 AC_ARG_WITH([osmesa-bits],
840 [AS_HELP_STRING([--with-osmesa-bits=BITS],
841 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
842 [osmesa_bits="$withval"],
843 [osmesa_bits=8])
844 if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
845 AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
846 osmesa_bits=8
847 fi
848 case "x$osmesa_bits" in
849 x8)
850 OSMESA_LIB=OSMesa
851 ;;
852 x16|x32)
853 OSMESA_LIB="OSMesa$osmesa_bits"
854 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
855 ;;
856 *)
857 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
858 ;;
859 esac
860 AC_SUBST([OSMESA_LIB])
861
862 case "$mesa_driver" in
863 osmesa)
864 # only link libraries with osmesa if shared
865 if test "$enable_static" = no; then
866 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
867 else
868 OSMESA_LIB_DEPS=""
869 fi
870 OSMESA_MESA_DEPS=""
871 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
872 ;;
873 *)
874 # Link OSMesa to libGL otherwise
875 OSMESA_LIB_DEPS=""
876 # only link libraries with osmesa if shared
877 if test "$enable_static" = no; then
878 OSMESA_MESA_DEPS='-l$(GL_LIB)'
879 else
880 OSMESA_MESA_DEPS=""
881 fi
882 OSMESA_PC_REQ="gl"
883 ;;
884 esac
885 OSMESA_PC_LIB_PRIV="$OSMESA_PC_LIB_PRIV"
886 AC_SUBST([OSMESA_LIB_DEPS])
887 AC_SUBST([OSMESA_MESA_DEPS])
888 AC_SUBST([OSMESA_PC_REQ])
889 AC_SUBST([OSMESA_PC_LIB_PRIV])
890
891 dnl
892 dnl EGL configuration
893 dnl
894 AC_ARG_ENABLE([egl],
895 [AS_HELP_STRING([--disable-egl],
896 [disable EGL library @<:@default=enabled@:>@])],
897 [enable_egl="$enableval"],
898 [enable_egl=yes])
899 if test "x$enable_egl" = xyes; then
900 SRC_DIRS="$SRC_DIRS egl"
901
902 if test "$x11_pkgconfig" = yes; then
903 PKG_CHECK_MODULES([EGL], [x11])
904 EGL_LIB_DEPS="$EGL_LIBS"
905 else
906 # should check these...
907 EGL_LIB_DEPS="$X_LIBS -lX11"
908 fi
909 EGL_LIB_DEPS="$EGL_LIB_DEPS $DLOPEN_LIBS"
910 fi
911 AC_SUBST([EGL_LIB_DEPS])
912
913 dnl
914 dnl GLU configuration
915 dnl
916 AC_ARG_ENABLE([glu],
917 [AS_HELP_STRING([--disable-glu],
918 [enable OpenGL Utility library @<:@default=enabled@:>@])],
919 [enable_glu="$enableval"],
920 [enable_glu=yes])
921 if test "x$enable_glu" = xyes; then
922 SRC_DIRS="$SRC_DIRS glu"
923
924 case "$mesa_driver" in
925 osmesa)
926 # If GLU is available and we have libOSMesa (not 16 or 32),
927 # we can build the osdemos
928 if test "$with_demos" = yes && test "$osmesa_bits" = 8; then
929 PROGRAM_DIRS="$PROGRAM_DIRS osdemos"
930 fi
931
932 # Link libGLU to libOSMesa instead of libGL
933 GLU_LIB_DEPS=""
934 GLU_PC_REQ="osmesa"
935 if test "$enable_static" = no; then
936 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
937 else
938 GLU_MESA_DEPS=""
939 fi
940 ;;
941 *)
942 # If static, empty GLU_LIB_DEPS and add libs for programs to link
943 GLU_PC_REQ="gl"
944 GLU_PC_LIB_PRIV="-lm"
945 if test "$enable_static" = no; then
946 GLU_LIB_DEPS="-lm"
947 GLU_MESA_DEPS='-l$(GL_LIB)'
948 else
949 GLU_LIB_DEPS=""
950 GLU_MESA_DEPS=""
951 APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
952 fi
953 ;;
954 esac
955 fi
956 if test "$enable_static" = no; then
957 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
958 fi
959 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
960 AC_SUBST([GLU_LIB_DEPS])
961 AC_SUBST([GLU_MESA_DEPS])
962 AC_SUBST([GLU_PC_REQ])
963 AC_SUBST([GLU_PC_REQ_PRIV])
964 AC_SUBST([GLU_PC_LIB_PRIV])
965 AC_SUBST([GLU_PC_CFLAGS])
966
967 dnl
968 dnl GLw configuration
969 dnl
970 AC_ARG_ENABLE([glw],
971 [AS_HELP_STRING([--disable-glw],
972 [enable Xt/Motif widget library @<:@default=enabled@:>@])],
973 [enable_glw="$enableval"],
974 [enable_glw=yes])
975 dnl Don't build GLw on osmesa
976 if test "x$enable_glw" = xyes && test "$mesa_driver" = osmesa; then
977 AC_MSG_WARN([Disabling GLw since the driver is OSMesa])
978 enable_glw=no
979 fi
980 AC_ARG_ENABLE([motif],
981 [AS_HELP_STRING([--enable-motif],
982 [use Motif widgets in GLw @<:@default=disabled@:>@])],
983 [enable_motif="$enableval"],
984 [enable_motif=no])
985
986 if test "x$enable_glw" = xyes; then
987 SRC_DIRS="$SRC_DIRS glw"
988 if test "$x11_pkgconfig" = yes; then
989 PKG_CHECK_MODULES([GLW],[x11 xt])
990 GLW_PC_REQ_PRIV="x11 xt"
991 GLW_LIB_DEPS="$GLW_LIBS"
992 else
993 # should check these...
994 GLW_LIB_DEPS="$X_LIBS -lXt -lX11"
995 GLW_PC_LIB_PRIV="$GLW_LIB_DEPS"
996 GLW_PC_CFLAGS="$X11_INCLUDES"
997 fi
998
999 GLW_SOURCES="GLwDrawA.c"
1000 MOTIF_CFLAGS=
1001 if test "x$enable_motif" = xyes; then
1002 GLW_SOURCES="$GLW_SOURCES GLwMDrawA.c"
1003 AC_PATH_PROG([MOTIF_CONFIG], [motif-config], [no])
1004 if test "x$MOTIF_CONFIG" != xno; then
1005 MOTIF_CFLAGS=`$MOTIF_CONFIG --cflags`
1006 MOTIF_LIBS=`$MOTIF_CONFIG --libs`
1007 else
1008 AC_CHECK_HEADER([Xm/PrimitiveP.h], [],
1009 [AC_MSG_ERROR([Can't locate Motif headers])])
1010 AC_CHECK_LIB([Xm], [XmGetPixmap], [MOTIF_LIBS="-lXm"],
1011 [AC_MSG_ERROR([Can't locate Motif Xm library])])
1012 fi
1013 # MOTIF_LIBS is prepended to GLW_LIB_DEPS since Xm needs Xt/X11
1014 GLW_LIB_DEPS="$MOTIF_LIBS $GLW_LIB_DEPS"
1015 GLW_PC_LIB_PRIV="$MOTIF_LIBS $GLW_PC_LIB_PRIV"
1016 GLW_PC_CFLAGS="$MOTIF_CFLAGS $GLW_PC_CFLAGS"
1017 fi
1018
1019 # If static, empty GLW_LIB_DEPS and add libs for programs to link
1020 GLW_PC_LIB_PRIV="$GLW_PC_LIB_PRIV"
1021 if test "$enable_static" = no; then
1022 GLW_MESA_DEPS='-l$(GL_LIB)'
1023 GLW_LIB_DEPS="$GLW_LIB_DEPS"
1024 else
1025 APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
1026 GLW_LIB_DEPS=""
1027 GLW_MESA_DEPS=""
1028 fi
1029 fi
1030 AC_SUBST([GLW_LIB_DEPS])
1031 AC_SUBST([GLW_MESA_DEPS])
1032 AC_SUBST([GLW_SOURCES])
1033 AC_SUBST([MOTIF_CFLAGS])
1034 AC_SUBST([GLW_PC_REQ_PRIV])
1035 AC_SUBST([GLW_PC_LIB_PRIV])
1036 AC_SUBST([GLW_PC_CFLAGS])
1037
1038 dnl
1039 dnl GLUT configuration
1040 dnl
1041 if test -f "$srcdir/include/GL/glut.h"; then
1042 default_glut=yes
1043 else
1044 default_glut=no
1045 fi
1046 AC_ARG_ENABLE([glut],
1047 [AS_HELP_STRING([--disable-glut],
1048 [enable GLUT library @<:@default=enabled if source available@:>@])],
1049 [enable_glut="$enableval"],
1050 [enable_glut="$default_glut"])
1051
1052 dnl Can't build glut if GLU not available
1053 if test "x$enable_glu$enable_glut" = xnoyes; then
1054 AC_MSG_WARN([Disabling glut since GLU is disabled])
1055 enable_glut=no
1056 fi
1057 dnl Don't build glut on osmesa
1058 if test "x$enable_glut" = xyes && test "$mesa_driver" = osmesa; then
1059 AC_MSG_WARN([Disabling glut since the driver is OSMesa])
1060 enable_glut=no
1061 fi
1062
1063 if test "x$enable_glut" = xyes; then
1064 SRC_DIRS="$SRC_DIRS glut/glx"
1065 GLUT_CFLAGS=""
1066 if test "x$GCC" = xyes; then
1067 GLUT_CFLAGS="-fexceptions"
1068 fi
1069 if test "$x11_pkgconfig" = yes; then
1070 PKG_CHECK_MODULES([GLUT],[x11 xmu xi])
1071 GLUT_PC_REQ_PRIV="x11 xmu xi"
1072 GLUT_LIB_DEPS="$GLUT_LIBS"
1073 else
1074 # should check these...
1075 GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
1076 GLUT_PC_LIB_PRIV="$GLUT_LIB_DEPS"
1077 GLUT_PC_CFLAGS="$X11_INCLUDES"
1078 fi
1079 GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
1080 GLUT_PC_LIB_PRIV="$GLUT_PC_LIB_PRIV -lm"
1081
1082 # If glut is available, we can build most programs
1083 if test "$with_demos" = yes; then
1084 PROGRAM_DIRS="$PROGRAM_DIRS demos redbook samples glsl"
1085 fi
1086
1087 # If static, empty GLUT_LIB_DEPS and add libs for programs to link
1088 if test "$enable_static" = no; then
1089 GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
1090 else
1091 APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
1092 GLUT_LIB_DEPS=""
1093 GLUT_MESA_DEPS=""
1094 fi
1095 fi
1096 AC_SUBST([GLUT_LIB_DEPS])
1097 AC_SUBST([GLUT_MESA_DEPS])
1098 AC_SUBST([GLUT_CFLAGS])
1099 AC_SUBST([GLUT_PC_REQ_PRIV])
1100 AC_SUBST([GLUT_PC_LIB_PRIV])
1101 AC_SUBST([GLUT_PC_CFLAGS])
1102
1103 dnl
1104 dnl Program library dependencies
1105 dnl Only libm is added here if necessary as the libraries should
1106 dnl be pulled in by the linker
1107 dnl
1108 if test "x$APP_LIB_DEPS" = x; then
1109 case "$host_os" in
1110 solaris*)
1111 APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm"
1112 ;;
1113 cygwin*)
1114 APP_LIB_DEPS="-lX11"
1115 ;;
1116 *)
1117 APP_LIB_DEPS="-lm"
1118 ;;
1119 esac
1120 fi
1121 AC_SUBST([APP_LIB_DEPS])
1122 AC_SUBST([PROGRAM_DIRS])
1123
1124 dnl
1125 dnl Gallium configuration
1126 dnl
1127 AC_ARG_ENABLE([gallium],
1128 [AS_HELP_STRING([--disable-gallium],
1129 [build gallium @<:@default=enabled@:>@])],
1130 [enable_gallium="$enableval"],
1131 [enable_gallium=yes])
1132 if test "x$enable_gallium" = xyes; then
1133 SRC_DIRS="$SRC_DIRS gallium gallium/winsys"
1134 fi
1135
1136 dnl
1137 dnl Gallium state trackers configuration
1138 dnl
1139 AC_ARG_WITH([state-trackers],
1140 [AS_HELP_STRING([--with-state-trackers@<:@=DIRS...@:>@],
1141 [comma delimited state_trackers list, e.g.
1142 "egl,glx" @<:@default=auto@:>@])],
1143 [with_state_trackers="$withval"],
1144 [with_state_trackers=yes])
1145
1146 case "$with_state_trackers" in
1147 no)
1148 GALLIUM_STATE_TRACKERS_DIRS=""
1149 ;;
1150 yes)
1151 # look at what else is built
1152 case "$mesa_driver" in
1153 xlib)
1154 GALLIUM_STATE_TRACKERS_DIRS=glx
1155 ;;
1156 dri)
1157 GALLIUM_STATE_TRACKERS_DIRS="dri"
1158 if test "x$enable_egl" = xyes; then
1159 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS egl"
1160 fi
1161 # Have only tested st/xorg on 1.6.0 servers
1162 PKG_CHECK_MODULES(XORG, [xorg-server >= 1.6.0],
1163 HAVE_XORG="yes"; GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg",
1164 HAVE_XORG="no")
1165 ;;
1166 esac
1167 ;;
1168 *)
1169 # verify the requested state tracker exist
1170 state_trackers=`IFS=', '; echo $with_state_trackers`
1171 for tracker in $state_trackers; do
1172 test -d "$srcdir/src/gallium/state_trackers/$tracker" || \
1173 AC_MSG_ERROR([state tracker '$tracker' doesn't exist])
1174
1175 if test "$tracker" = egl && test "x$enable_egl" != xyes; then
1176 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1177 fi
1178 if test "$tracker" = xorg; then
1179 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1180 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1181 HAVE_XEXTPROTO_71="no")
1182 fi
1183 done
1184 GALLIUM_STATE_TRACKERS_DIRS="$state_trackers"
1185 ;;
1186 esac
1187
1188 AC_ARG_WITH([xorg-driver-dir],
1189 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1190 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1191 [XORG_DRIVER_INSTALL_DIR="$withval"],
1192 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1193 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1194
1195 AC_ARG_WITH([max-width],
1196 [AS_HELP_STRING([--with-max-width=N],
1197 [Maximum framebuffer width (4096)])],
1198 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1199 AS_IF([test "${withval}" -gt "4096"],
1200 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1201 )
1202 AC_ARG_WITH([max-height],
1203 [AS_HELP_STRING([--with-max-height=N],
1204 [Maximum framebuffer height (4096)])],
1205 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1206 AS_IF([test "${withval}" -gt "4096"],
1207 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1208 )
1209
1210 dnl
1211 dnl Gallium SVGA configuration
1212 dnl
1213 AC_ARG_ENABLE([gallium-svga],
1214 [AS_HELP_STRING([--enable-gallium-svga],
1215 [build gallium SVGA @<:@default=disabled@:>@])],
1216 [enable_gallium_svga="$enableval"],
1217 [enable_gallium_svga=auto])
1218 if test "x$enable_gallium_svga" = xyes; then
1219 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS vmware"
1220 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1221 elif test "x$enable_gallium_svga" = xauto; then
1222 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1223 fi
1224
1225 dnl
1226 dnl Gallium Intel configuration
1227 dnl
1228 AC_ARG_ENABLE([gallium-intel],
1229 [AS_HELP_STRING([--enable-gallium-intel],
1230 [build gallium intel @<:@default=disabled@:>@])],
1231 [enable_gallium_intel="$enableval"],
1232 [enable_gallium_intel=auto])
1233 if test "x$enable_gallium_intel" = xyes; then
1234 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS intel i965"
1235 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 i965"
1236 elif test "x$enable_gallium_intel" = xauto; then
1237 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 i965"
1238 fi
1239
1240 dnl
1241 dnl Gallium Radeon configuration
1242 dnl
1243 AC_ARG_ENABLE([gallium-radeon],
1244 [AS_HELP_STRING([--enable-gallium-radeon],
1245 [build gallium radeon @<:@default=disabled@:>@])],
1246 [enable_gallium_radeon="$enableval"],
1247 [enable_gallium_radeon=no])
1248 if test "x$enable_gallium_radeon" = xyes; then
1249 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS radeon"
1250 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1251 fi
1252
1253 dnl
1254 dnl Gallium Nouveau configuration
1255 dnl
1256 AC_ARG_ENABLE([gallium-nouveau],
1257 [AS_HELP_STRING([--enable-gallium-nouveau],
1258 [build gallium nouveau @<:@default=disabled@:>@])],
1259 [enable_gallium_nouveau="$enableval"],
1260 [enable_gallium_nouveau=no])
1261 if test "x$enable_gallium_nouveau" = xyes; then
1262 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS nouveau"
1263 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nv04 nv10 nv20 nv30 nv40 nv50"
1264 fi
1265
1266
1267 dnl Restore LDFLAGS and CPPFLAGS
1268 LDFLAGS="$_SAVE_LDFLAGS"
1269 CPPFLAGS="$_SAVE_CPPFLAGS"
1270
1271 dnl Substitute the config
1272 AC_CONFIG_FILES([configs/autoconf])
1273
1274 dnl Replace the configs/current symlink
1275 AC_CONFIG_COMMANDS([configs],[
1276 if test -f configs/current || test -L configs/current; then
1277 rm -f configs/current
1278 fi
1279 ln -s autoconf configs/current
1280 ])
1281
1282 AC_OUTPUT
1283
1284 dnl
1285 dnl Output some configuration info for the user
1286 dnl
1287 echo ""
1288 echo " prefix: $prefix"
1289 echo " exec_prefix: $exec_prefix"
1290 echo " libdir: $libdir"
1291 echo " includedir: $includedir"
1292
1293 dnl Driver info
1294 echo ""
1295 echo " Driver: $mesa_driver"
1296 if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
1297 echo " OSMesa: lib$OSMESA_LIB"
1298 else
1299 echo " OSMesa: no"
1300 fi
1301 if test "$mesa_driver" = dri; then
1302 # cleanup the drivers var
1303 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1304 if test "x$DRI_DIRS" = x; then
1305 echo " DRI drivers: no"
1306 else
1307 echo " DRI drivers: $dri_dirs"
1308 fi
1309 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
1310 fi
1311 echo " Use XCB: $enable_xcb"
1312
1313 echo ""
1314 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
1315 echo " Gallium: yes"
1316 echo " Gallium dirs: $GALLIUM_DIRS"
1317 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
1318 echo " Winsys drm dirs:$GALLIUM_WINSYS_DRM_DIRS"
1319 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
1320 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
1321 else
1322 echo " Gallium: no"
1323 fi
1324
1325 dnl Libraries
1326 echo ""
1327 echo " Shared libs: $enable_shared"
1328 echo " Static libs: $enable_static"
1329 echo " EGL: $enable_egl"
1330 echo " GLU: $enable_glu"
1331 echo " GLw: $enable_glw (Motif: $enable_motif)"
1332 echo " glut: $enable_glut"
1333
1334 dnl Programs
1335 # cleanup the programs var for display
1336 program_dirs=`echo $PROGRAM_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1337 if test "x$program_dirs" = x; then
1338 echo " Demos: no"
1339 else
1340 echo " Demos: $program_dirs"
1341 fi
1342
1343 dnl Compiler options
1344 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
1345 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1346 $SED 's/^ *//;s/ */ /;s/ *$//'`
1347 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1348 $SED 's/^ *//;s/ */ /;s/ *$//'`
1349 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1350 echo ""
1351 echo " CFLAGS: $cflags"
1352 echo " CXXFLAGS: $cxxflags"
1353 echo " Macros: $defines"
1354
1355 echo ""
1356 echo " Run '${MAKE-make}' to build Mesa"
1357 echo ""