Merge branch 'master' into pipe-video
[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' | tr -d '\r'])])
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=2.1
24 GLPROTO_REQUIRED=1.4.11
25 LIBDRM_XORG_REQUIRED=2.4.17
26 LIBKMS_XORG_REQUIRED=1.0.0
27
28 dnl Check for progs
29 AC_PROG_CPP
30 AC_PROG_CC
31 AC_PROG_CXX
32 AC_CHECK_PROGS([MAKE], [gmake make])
33 AC_PATH_PROG([MKDEP], [makedepend])
34 AC_PATH_PROG([SED], [sed])
35
36 if test "x$MKDEP" = "x"; then
37 AC_MSG_ERROR([makedepend is required to build Mesa])
38 fi
39
40 dnl Our fallback install-sh is a symlink to minstall. Use the existing
41 dnl configuration in that case.
42 AC_PROG_INSTALL
43 test "x$INSTALL" = "x$ac_install_sh" && INSTALL='$(MINSTALL)'
44
45 dnl We need a POSIX shell for parts of the build. Assume we have one
46 dnl in most cases.
47 case "$host_os" in
48 solaris*)
49 # Solaris /bin/sh is too old/non-POSIX compliant
50 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
51 SHELL="$POSIX_SHELL"
52 ;;
53 esac
54
55 dnl clang is mostly GCC-compatible, but its version is much lower,
56 dnl so we have to check for it.
57 AC_MSG_CHECKING([if compiling with clang])
58
59 AC_COMPILE_IFELSE(
60 [AC_LANG_PROGRAM([], [[
61 #ifndef __clang__
62 not clang
63 #endif
64 ]])],
65 [CLANG=yes], [CLANG=no])
66
67 AC_MSG_RESULT([$CLANG])
68
69 dnl If we're using GCC, make sure that it is at least version 3.3.0. Older
70 dnl versions are explictly not supported.
71 if test "x$GCC" = xyes -a "x$CLANG" = xno; then
72 AC_MSG_CHECKING([whether gcc version is sufficient])
73 major=0
74 minor=0
75
76 GCC_VERSION=`$CC -dumpversion`
77 if test $? -eq 0; then
78 major=`echo $GCC_VERSION | cut -d. -f1`
79 minor=`echo $GCC_VERSION | cut -d. -f1`
80 fi
81
82 if test $major -lt 3 -o $major -eq 3 -a $minor -lt 3 ; then
83 AC_MSG_RESULT([no])
84 AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.])
85 else
86 AC_MSG_RESULT([yes])
87 fi
88 fi
89
90
91 MKDEP_OPTIONS=-fdepend
92 dnl Ask gcc where it's keeping its secret headers
93 if test "x$GCC" = xyes; then
94 for dir in include include-fixed; do
95 GCC_INCLUDES=`$CC -print-file-name=$dir`
96 if test "x$GCC_INCLUDES" != x && \
97 test "$GCC_INCLUDES" != "$dir" && \
98 test -d "$GCC_INCLUDES"; then
99 MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
100 fi
101 done
102 fi
103 AC_SUBST([MKDEP_OPTIONS])
104
105 dnl Make sure the pkg-config macros are defined
106 m4_ifndef([PKG_PROG_PKG_CONFIG],
107 [m4_fatal([Could not locate the pkg-config autoconf macros.
108 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
109 are in a different location, try setting the environment variable
110 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
111 PKG_PROG_PKG_CONFIG()
112
113 dnl LIB_DIR - library basename
114 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
115 AC_SUBST([LIB_DIR])
116
117 dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
118 _SAVE_LDFLAGS="$LDFLAGS"
119 AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker])
120 AC_SUBST([EXTRA_LIB_PATH])
121
122 dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
123 _SAVE_CPPFLAGS="$CPPFLAGS"
124 AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers])
125 AC_SUBST([X11_INCLUDES])
126
127 dnl Compiler macros
128 DEFINES=""
129 AC_SUBST([DEFINES])
130 case "$host_os" in
131 linux*|*-gnu*|gnu*)
132 DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS"
133 ;;
134 solaris*)
135 DEFINES="$DEFINES -DPTHREADS -DSVR4"
136 ;;
137 cygwin*)
138 DEFINES="$DEFINES -DPTHREADS"
139 ;;
140 esac
141
142 dnl Add flags for gcc and g++
143 if test "x$GCC" = xyes; then
144 CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99"
145 if test "x$CLANG" = "xno"; then
146 CFLAGS="$CFLAGS -ffast-math"
147 fi
148
149 # Enable -fvisibility=hidden if using a gcc that supports it
150 save_CFLAGS="$CFLAGS"
151 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
152 CFLAGS="$CFLAGS -fvisibility=hidden"
153 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
154 [CFLAGS="$save_CFLAGS" ; AC_MSG_RESULT([no])]);
155
156 # Work around aliasing bugs - developers should comment this out
157 CFLAGS="$CFLAGS -fno-strict-aliasing"
158 fi
159 if test "x$GXX" = xyes; then
160 CXXFLAGS="$CXXFLAGS -Wall"
161
162 # Enable -fvisibility=hidden if using a gcc that supports it
163 save_CXXFLAGS="$CXXFLAGS"
164 AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
165 CXXFLAGS="$CXXFLAGS -fvisibility=hidden"
166 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
167 [CXXFLAGS="$save_CXXFLAGS" ; AC_MSG_RESULT([no])]);
168
169 # Work around aliasing bugs - developers should comment this out
170 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
171 fi
172
173 dnl These should be unnecessary, but let the user set them if they want
174 AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
175 Default is to use CFLAGS.])
176 AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
177 compiler. Default is to use CFLAGS.])
178 AC_SUBST([OPT_FLAGS])
179 AC_SUBST([ARCH_FLAGS])
180
181 dnl
182 dnl Hacks to enable 32 or 64 bit build
183 dnl
184 AC_ARG_ENABLE([32-bit],
185 [AS_HELP_STRING([--enable-32-bit],
186 [build 32-bit libraries @<:@default=auto@:>@])],
187 [enable_32bit="$enableval"],
188 [enable_32bit=auto]
189 )
190 if test "x$enable_32bit" = xyes; then
191 if test "x$GCC" = xyes; then
192 CFLAGS="$CFLAGS -m32"
193 ARCH_FLAGS="$ARCH_FLAGS -m32"
194 fi
195 if test "x$GXX" = xyes; then
196 CXXFLAGS="$CXXFLAGS -m32"
197 fi
198 fi
199 AC_ARG_ENABLE([64-bit],
200 [AS_HELP_STRING([--enable-64-bit],
201 [build 64-bit libraries @<:@default=auto@:>@])],
202 [enable_64bit="$enableval"],
203 [enable_64bit=auto]
204 )
205 if test "x$enable_64bit" = xyes; then
206 if test "x$GCC" = xyes; then
207 CFLAGS="$CFLAGS -m64"
208 fi
209 if test "x$GXX" = xyes; then
210 CXXFLAGS="$CXXFLAGS -m64"
211 fi
212 fi
213
214 dnl
215 dnl shared/static libraries, mimic libtool options
216 dnl
217 AC_ARG_ENABLE([static],
218 [AS_HELP_STRING([--enable-static],
219 [build static libraries @<:@default=disabled@:>@])],
220 [enable_static="$enableval"],
221 [enable_static=no]
222 )
223 case "x$enable_static" in
224 xyes|xno ) ;;
225 x ) enable_static=no ;;
226 * )
227 AC_MSG_ERROR([Static library option '$enable_static' is not a valid])
228 ;;
229 esac
230 AC_ARG_ENABLE([shared],
231 [AS_HELP_STRING([--disable-shared],
232 [build shared libraries @<:@default=enabled@:>@])],
233 [enable_shared="$enableval"],
234 [enable_shared=yes]
235 )
236 case "x$enable_shared" in
237 xyes|xno ) ;;
238 x ) enable_shared=yes ;;
239 * )
240 AC_MSG_ERROR([Shared library option '$enable_shared' is not a valid])
241 ;;
242 esac
243
244 dnl Can't have static and shared libraries, default to static if user
245 dnl explicitly requested. If both disabled, set to static since shared
246 dnl was explicitly requirested.
247 case "x$enable_static$enable_shared" in
248 xyesyes )
249 AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
250 enable_shared=no
251 ;;
252 xnono )
253 AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
254 enable_static=yes
255 ;;
256 esac
257
258 dnl
259 dnl mklib options
260 dnl
261 AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
262 if test "$enable_static" = yes; then
263 MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
264 fi
265 AC_SUBST([MKLIB_OPTIONS])
266
267 dnl
268 dnl other compiler options
269 dnl
270 AC_ARG_ENABLE([debug],
271 [AS_HELP_STRING([--enable-debug],
272 [use debug compiler flags and macros @<:@default=disabled@:>@])],
273 [enable_debug="$enableval"],
274 [enable_debug=no]
275 )
276 if test "x$enable_debug" = xyes; then
277 DEFINES="$DEFINES -DDEBUG"
278 if test "x$GCC" = xyes; then
279 CFLAGS="$CFLAGS -g"
280 fi
281 if test "x$GXX" = xyes; then
282 CXXFLAGS="$CXXFLAGS -g"
283 fi
284 fi
285
286 dnl
287 dnl library names
288 dnl
289 LIB_PREFIX_GLOB='lib'
290 LIB_VERSION_SEPARATOR='.'
291 if test "$enable_static" = yes; then
292 LIB_EXTENSION='a'
293 else
294 case "$host_os" in
295 darwin* )
296 LIB_EXTENSION='dylib' ;;
297 cygwin* )
298 dnl prefix can be 'cyg' or 'lib'
299 LIB_PREFIX_GLOB='???'
300 LIB_VERSION_SEPARATOR='-'
301 LIB_EXTENSION='dll' ;;
302 aix* )
303 LIB_EXTENSION='a' ;;
304 * )
305 LIB_EXTENSION='so' ;;
306 esac
307 fi
308
309 GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
310 GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
311 GLUT_LIB_NAME='lib$(GLUT_LIB).'${LIB_EXTENSION}
312 GLW_LIB_NAME='lib$(GLW_LIB).'${LIB_EXTENSION}
313 OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
314 EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
315 GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
316 GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION}
317 VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION}
318
319 GL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
320 GLU_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLU_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
321 GLUT_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLUT_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
322 GLW_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLW_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
323 OSMESA_LIB_GLOB=${LIB_PREFIX_GLOB}'$(OSMESA_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
324 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
325 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
326 GLESv1_CM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv1_CM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
327 GLESv2_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv2_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
328 VG_LIB_GLOB=${LIB_PREFIX_GLOB}'$(VG_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
329
330 AC_SUBST([GL_LIB_NAME])
331 AC_SUBST([GLU_LIB_NAME])
332 AC_SUBST([GLUT_LIB_NAME])
333 AC_SUBST([GLW_LIB_NAME])
334 AC_SUBST([OSMESA_LIB_NAME])
335 AC_SUBST([EGL_LIB_NAME])
336 AC_SUBST([GLESv1_CM_LIB_NAME])
337 AC_SUBST([GLESv2_LIB_NAME])
338 AC_SUBST([VG_LIB_NAME])
339
340 AC_SUBST([GL_LIB_GLOB])
341 AC_SUBST([GLU_LIB_GLOB])
342 AC_SUBST([GLUT_LIB_GLOB])
343 AC_SUBST([GLW_LIB_GLOB])
344 AC_SUBST([OSMESA_LIB_GLOB])
345 AC_SUBST([EGL_LIB_GLOB])
346 AC_SUBST([GLESv1_CM_LIB_GLOB])
347 AC_SUBST([GLESv2_LIB_GLOB])
348 AC_SUBST([VG_LIB_GLOB])
349
350 dnl
351 dnl Arch/platform-specific settings
352 dnl
353 AC_ARG_ENABLE([asm],
354 [AS_HELP_STRING([--disable-asm],
355 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
356 [enable_asm="$enableval"],
357 [enable_asm=yes]
358 )
359 asm_arch=""
360 ASM_FLAGS=""
361 MESA_ASM_SOURCES=""
362 GLAPI_ASM_SOURCES=""
363 AC_MSG_CHECKING([whether to enable assembly])
364 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
365 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
366 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
367 case "$host_cpu" in
368 i?86 | x86_64)
369 enable_asm=no
370 AC_MSG_RESULT([no, cross compiling])
371 ;;
372 esac
373 fi
374 # check for supported arches
375 if test "x$enable_asm" = xyes; then
376 case "$host_cpu" in
377 i?86)
378 case "$host_os" in
379 linux* | *freebsd* | dragonfly*)
380 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
381 ;;
382 esac
383 ;;
384 x86_64)
385 case "$host_os" in
386 linux* | *freebsd* | dragonfly*)
387 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
388 ;;
389 esac
390 ;;
391 powerpc)
392 case "$host_os" in
393 linux*)
394 asm_arch=ppc
395 ;;
396 esac
397 ;;
398 sparc*)
399 case "$host_os" in
400 linux*)
401 asm_arch=sparc
402 ;;
403 esac
404 ;;
405 esac
406
407 case "$asm_arch" in
408 x86)
409 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
410 MESA_ASM_SOURCES='$(X86_SOURCES)'
411 GLAPI_ASM_SOURCES='$(X86_API)'
412 AC_MSG_RESULT([yes, x86])
413 ;;
414 x86_64)
415 ASM_FLAGS="-DUSE_X86_64_ASM"
416 MESA_ASM_SOURCES='$(X86-64_SOURCES)'
417 GLAPI_ASM_SOURCES='$(X86-64_API)'
418 AC_MSG_RESULT([yes, x86_64])
419 ;;
420 ppc)
421 ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM"
422 MESA_ASM_SOURCES='$(PPC_SOURCES)'
423 AC_MSG_RESULT([yes, ppc])
424 ;;
425 sparc)
426 ASM_FLAGS="-DUSE_SPARC_ASM"
427 MESA_ASM_SOURCES='$(SPARC_SOURCES)'
428 GLAPI_ASM_SOURCES='$(SPARC_API)'
429 AC_MSG_RESULT([yes, sparc])
430 ;;
431 *)
432 AC_MSG_RESULT([no, platform not supported])
433 ;;
434 esac
435 fi
436 AC_SUBST([ASM_FLAGS])
437 AC_SUBST([MESA_ASM_SOURCES])
438 AC_SUBST([GLAPI_ASM_SOURCES])
439
440 dnl PIC code macro
441 MESA_PIC_FLAGS
442
443 dnl Check to see if dlopen is in default libraries (like Solaris, which
444 dnl has it in libc), or if libdl is needed to get it.
445 AC_CHECK_FUNC([dlopen], [],
446 [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
447 AC_SUBST([DLOPEN_LIBS])
448
449 dnl See if posix_memalign is available
450 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
451
452 dnl SELinux awareness.
453 AC_ARG_ENABLE([selinux],
454 [AS_HELP_STRING([--enable-selinux],
455 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
456 [MESA_SELINUX="$enableval"],
457 [MESA_SELINUX=no])
458 if test "x$enable_selinux" = "xyes"; then
459 AC_CHECK_HEADER([selinux/selinux.h],[],
460 [AC_MSG_ERROR([SELinux headers not found])])
461 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
462 [AC_MSG_ERROR([SELinux library not found])])
463 SELINUX_LIBS="-lselinux"
464 DEFINES="$DEFINES -DMESA_SELINUX"
465 fi
466
467 dnl
468 dnl Driver configuration. Options are xlib, dri and osmesa right now.
469 dnl More later: fbdev, ...
470 dnl
471 default_driver="xlib"
472
473 case "$host_os" in
474 linux*)
475 case "$host_cpu" in
476 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
477 esac
478 ;;
479 *freebsd* | dragonfly*)
480 case "$host_cpu" in
481 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
482 esac
483 ;;
484 esac
485
486 AC_ARG_WITH([driver],
487 [AS_HELP_STRING([--with-driver=DRIVER],
488 [driver for Mesa: xlib,dri,osmesa @<:@default=dri when available, or xlib@:>@])],
489 [mesa_driver="$withval"],
490 [mesa_driver="$default_driver"])
491 dnl Check for valid option
492 case "x$mesa_driver" in
493 xxlib|xdri|xosmesa)
494 ;;
495 *)
496 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
497 ;;
498 esac
499
500 PKG_CHECK_MODULES([TALLOC], [talloc])
501 AC_SUBST([TALLOC_LIBS])
502 AC_SUBST([TALLOC_CFLAGS])
503
504 dnl
505 dnl Driver specific build directories
506 dnl
507
508 dnl this variable will be prepended to SRC_DIRS and is not exported
509 CORE_DIRS="mapi/glapi glsl mesa"
510
511 SRC_DIRS=""
512 GLU_DIRS="sgi"
513 GALLIUM_DIRS="auxiliary drivers state_trackers"
514 GALLIUM_TARGET_DIRS=""
515 GALLIUM_WINSYS_DIRS="sw"
516 GALLIUM_DRIVERS_DIRS="softpipe failover galahad trace rbug identity"
517 GALLIUM_STATE_TRACKERS_DIRS=""
518
519 case "$mesa_driver" in
520 xlib)
521 DRIVER_DIRS="x11"
522 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
523 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
524 ;;
525 dri)
526 SRC_DIRS="$SRC_DIRS glx"
527 DRIVER_DIRS="dri"
528 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib sw/dri"
529 ;;
530 osmesa)
531 DRIVER_DIRS="osmesa"
532 ;;
533 esac
534 AC_SUBST([SRC_DIRS])
535 AC_SUBST([GLU_DIRS])
536 AC_SUBST([DRIVER_DIRS])
537 AC_SUBST([GALLIUM_DIRS])
538 AC_SUBST([GALLIUM_TARGET_DIRS])
539 AC_SUBST([GALLIUM_WINSYS_DIRS])
540 AC_SUBST([GALLIUM_DRIVERS_DIRS])
541 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
542 AC_SUBST([MESA_LLVM])
543
544 dnl
545 dnl Find out if X is available. The variable have_x is set if libX11 is
546 dnl found to mimic AC_PATH_XTRA.
547 dnl
548 if test -n "$PKG_CONFIG"; then
549 AC_MSG_CHECKING([pkg-config files for X11 are available])
550 PKG_CHECK_EXISTS([x11],[
551 x11_pkgconfig=yes
552 have_x=yes
553 ],[
554 x11_pkgconfig=no
555 ])
556 AC_MSG_RESULT([$x11_pkgconfig])
557 else
558 x11_pkgconfig=no
559 fi
560 dnl Use the autoconf macro if no pkg-config files
561 if test "$x11_pkgconfig" = yes; then
562 PKG_CHECK_MODULES([X11], [x11])
563 else
564 AC_PATH_XTRA
565 test -z "$X11_CFLAGS" && X11_CFLAGS="$X_CFLAGS"
566 test -z "$X11_LIBS" && X11_LIBS="$X_LIBS -lX11"
567 AC_SUBST([X11_CFLAGS])
568 AC_SUBST([X11_LIBS])
569 fi
570
571 dnl Try to tell the user that the --x-* options are only used when
572 dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
573 m4_divert_once([HELP_BEGIN],
574 [These options are only used when the X libraries cannot be found by the
575 pkg-config utility.])
576
577 dnl We need X for xlib and dri, so bomb now if it's not found
578 case "$mesa_driver" in
579 xlib|dri)
580 if test "$no_x" = yes; then
581 AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver])
582 fi
583 ;;
584 esac
585
586 dnl XCB - this is only used for GLX right now
587 AC_ARG_ENABLE([xcb],
588 [AS_HELP_STRING([--enable-xcb],
589 [use XCB for GLX @<:@default=disabled@:>@])],
590 [enable_xcb="$enableval"],
591 [enable_xcb=no])
592 if test "x$enable_xcb" = xyes; then
593 DEFINES="$DEFINES -DUSE_XCB"
594 else
595 enable_xcb=no
596 fi
597
598 dnl
599 dnl libGL configuration per driver
600 dnl
601 case "$mesa_driver" in
602 xlib)
603 if test "$x11_pkgconfig" = yes; then
604 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
605 GL_PC_REQ_PRIV="x11 xext"
606 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
607 GL_LIB_DEPS="$XLIBGL_LIBS"
608 else
609 # should check these...
610 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
611 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
612 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
613 GL_PC_CFLAGS="$X11_INCLUDES"
614 fi
615 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread $TALLOC_LIBS"
616 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread $TALLOC_LIBS"
617
618 # if static, move the external libraries to the programs
619 # and empty the libraries for libGL
620 if test "$enable_static" = yes; then
621 APP_LIB_DEPS="$APP_LIB_DEPS $GL_LIB_DEPS"
622 GL_LIB_DEPS=""
623 fi
624 ;;
625 dri)
626 # DRI must be shared, I think
627 if test "$enable_static" = yes; then
628 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
629 fi
630
631 # Check for libdrm
632 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED])
633 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
634 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
635 GL_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED glproto >= $GLPROTO_REQUIRED"
636 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
637
638 # find the DRI deps for libGL
639 if test "$x11_pkgconfig" = yes; then
640 dri_modules="x11 xext xdamage xfixes"
641
642 # add xf86vidmode if available
643 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
644 if test "$HAVE_XF86VIDMODE" = yes ; then
645 dri_modules="$dri_modules xxf86vm"
646 fi
647
648 # add xcb modules if necessary
649 if test "$enable_xcb" = yes; then
650 dri_modules="$dri_modules x11-xcb xcb-glx"
651 fi
652
653 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
654 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
655 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
656 GL_LIB_DEPS="$DRIGL_LIBS"
657 else
658 # should check these...
659 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
660 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
661 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
662 GL_PC_CFLAGS="$X11_INCLUDES"
663
664 # XCB can only be used from pkg-config
665 if test "$enable_xcb" = yes; then
666 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
667 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
668 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
669 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
670 fi
671 fi
672
673 # need DRM libs, -lpthread, etc.
674 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
675 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
676 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
677 GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
678 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
679 GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
680 ;;
681 osmesa)
682 # No libGL for osmesa
683 GL_LIB_DEPS=""
684 ;;
685 esac
686 AC_SUBST([GL_LIB_DEPS])
687 AC_SUBST([GL_PC_REQ_PRIV])
688 AC_SUBST([GL_PC_LIB_PRIV])
689 AC_SUBST([GL_PC_CFLAGS])
690 AC_SUBST([DRI_PC_REQ_PRIV])
691 AC_SUBST([GLESv1_CM_LIB_DEPS])
692 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
693 AC_SUBST([GLESv2_LIB_DEPS])
694 AC_SUBST([GLESv2_PC_LIB_PRIV])
695
696
697 AC_SUBST([HAVE_XF86VIDMODE])
698
699 PKG_CHECK_MODULES([LIBDRM_RADEON],
700 [libdrm_radeon libdrm >= $LIBDRM_RADEON_REQUIRED],
701 HAVE_LIBDRM_RADEON=yes,
702 HAVE_LIBDRM_RADEON=no)
703
704 dnl
705 dnl More X11 setup
706 dnl
707 if test "$mesa_driver" = xlib; then
708 DEFINES="$DEFINES -DUSE_XSHM"
709 fi
710
711 dnl
712 dnl More DRI setup
713 dnl
714 AC_ARG_ENABLE([glx-tls],
715 [AS_HELP_STRING([--enable-glx-tls],
716 [enable TLS support in GLX @<:@default=disabled@:>@])],
717 [GLX_USE_TLS="$enableval"],
718 [GLX_USE_TLS=no])
719 dnl Directory for DRI drivers
720 AC_ARG_WITH([dri-driverdir],
721 [AS_HELP_STRING([--with-dri-driverdir=DIR],
722 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
723 [DRI_DRIVER_INSTALL_DIR="$withval"],
724 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
725 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
726 dnl Extra search path for DRI drivers
727 AC_ARG_WITH([dri-searchpath],
728 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
729 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
730 [DRI_DRIVER_SEARCH_DIR="$withval"],
731 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
732 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
733 dnl Direct rendering or just indirect rendering
734 AC_ARG_ENABLE([driglx-direct],
735 [AS_HELP_STRING([--disable-driglx-direct],
736 [enable direct rendering in GLX and EGL for DRI @<:@default=enabled@:>@])],
737 [driglx_direct="$enableval"],
738 [driglx_direct="yes"])
739 dnl Which drivers to build - default is chosen by platform
740 AC_ARG_WITH([dri-drivers],
741 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
742 [comma delimited DRI drivers list, e.g.
743 "swrast,i965,radeon" @<:@default=auto@:>@])],
744 [with_dri_drivers="$withval"],
745 [with_dri_drivers=yes])
746 if test "x$with_dri_drivers" = x; then
747 with_dri_drivers=no
748 fi
749
750 dnl Determine which APIs to support
751 AC_ARG_ENABLE([opengl],
752 [AS_HELP_STRING([--disable-opengl],
753 [disable support for standard OpenGL API @<:@default=no@:>@])],
754 [enable_opengl="$enableval"],
755 [enable_opengl=yes])
756 AC_ARG_ENABLE([gles1],
757 [AS_HELP_STRING([--enable-gles1],
758 [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
759 [enable_gles1="$enableval"],
760 [enable_gles1=no])
761 AC_ARG_ENABLE([gles2],
762 [AS_HELP_STRING([--enable-gles2],
763 [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
764 [enable_gles2="$enableval"],
765 [enable_gles2=no])
766 AC_ARG_ENABLE([gles-overlay],
767 [AS_HELP_STRING([--enable-gles-overlay],
768 [build separate OpenGL ES only libraries @<:@default=no@:>@])],
769 [enable_gles_overlay="$enableval"],
770 [enable_gles_overlay=no])
771
772 API_DEFINES=""
773 GLES_OVERLAY=0
774 if test "x$enable_opengl" = xno; then
775 API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
776 else
777 API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
778 fi
779 if test "x$enable_gles1" = xyes; then
780 API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
781 fi
782 if test "x$enable_gles2" = xyes; then
783 API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
784 fi
785 if test "x$enable_gles_overlay" = xyes -o \
786 "x$enable_gles1" = xyes -o "x$enable_gles2" = xyes; then
787 CORE_DIRS="mapi/es1api mapi/es2api $CORE_DIRS"
788 if test "x$enable_gles_overlay" = xyes; then
789 GLES_OVERLAY=1
790 fi
791 fi
792 AC_SUBST([API_DEFINES])
793 AC_SUBST([GLES_OVERLAY])
794
795 dnl If $with_dri_drivers is yes, directories will be added through
796 dnl platform checks
797 DRI_DIRS=""
798 case "$with_dri_drivers" in
799 no) ;;
800 yes)
801 DRI_DIRS="yes"
802 ;;
803 *)
804 # verify the requested driver directories exist
805 dri_drivers=`IFS=', '; echo $with_dri_drivers`
806 for driver in $dri_drivers; do
807 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
808 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
809 done
810 DRI_DIRS="$dri_drivers"
811 ;;
812 esac
813
814 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
815 if test "$mesa_driver" = dri; then
816 # Use TLS in GLX?
817 if test "x$GLX_USE_TLS" = xyes; then
818 DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS"
819 fi
820
821 # Platform specific settings and drivers to build
822 case "$host_os" in
823 linux*)
824 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
825 if test "x$driglx_direct" = xyes; then
826 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
827 fi
828 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
829
830 case "$host_cpu" in
831 x86_64)
832 # sis is missing because they have not be converted to use
833 # the new interface. i810 are missing because there is no
834 # x86-64 system where they could *ever* be used.
835 if test "x$DRI_DIRS" = "xyes"; then
836 DRI_DIRS="i915 i965 mach64 mga r128 r200 r300 r600 radeon \
837 savage tdfx unichrome swrast"
838 fi
839 ;;
840 powerpc*)
841 # Build only the drivers for cards that exist on PowerPC.
842 # At some point MGA will be added, but not yet.
843 if test "x$DRI_DIRS" = "xyes"; then
844 DRI_DIRS="mach64 r128 r200 r300 r600 radeon tdfx swrast"
845 fi
846 ;;
847 sparc*)
848 # Build only the drivers for cards that exist on sparc`
849 if test "x$DRI_DIRS" = "xyes"; then
850 DRI_DIRS="mach64 r128 r200 r300 r600 radeon swrast"
851 fi
852 ;;
853 esac
854 ;;
855 freebsd* | dragonfly*)
856 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
857 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
858 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
859 if test "x$driglx_direct" = xyes; then
860 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
861 fi
862 if test "x$GXX" = xyes; then
863 CXXFLAGS="$CXXFLAGS -ansi -pedantic"
864 fi
865
866 if test "x$DRI_DIRS" = "xyes"; then
867 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon tdfx \
868 unichrome savage sis swrast"
869 fi
870 ;;
871 gnu*)
872 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
873 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
874 ;;
875 solaris*)
876 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
877 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
878 if test "x$driglx_direct" = xyes; then
879 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
880 fi
881 ;;
882 esac
883
884 # default drivers
885 if test "x$DRI_DIRS" = "xyes"; then
886 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon \
887 savage sis tdfx unichrome swrast"
888 fi
889
890 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
891
892 # Check for expat
893 EXPAT_INCLUDES=""
894 EXPAT_LIB=-lexpat
895 AC_ARG_WITH([expat],
896 [AS_HELP_STRING([--with-expat=DIR],
897 [expat install directory])],[
898 EXPAT_INCLUDES="-I$withval/include"
899 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
900 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
901 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
902 ])
903 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
904 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
905 [AC_MSG_ERROR([Expat required for DRI.])])
906
907 # put all the necessary libs together
908 DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS $TALLOC_LIBS"
909 fi
910 AC_SUBST([DRI_DIRS])
911 AC_SUBST([EXPAT_INCLUDES])
912 AC_SUBST([DRI_LIB_DEPS])
913
914 case $DRI_DIRS in
915 *i915*|*i965*)
916 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= 2.4.21])
917 ;;
918 esac
919
920 case $DRI_DIRS in
921 *radeon*|*r200*|*r300*|*r600*)
922 if test "x$HAVE_LIBDRM_RADEON" = xyes; then
923 RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS"
924 RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS
925 fi
926 ;;
927 esac
928 AC_SUBST([RADEON_CFLAGS])
929 AC_SUBST([RADEON_LDFLAGS])
930
931
932 dnl
933 dnl OSMesa configuration
934 dnl
935 if test "$mesa_driver" = xlib; then
936 default_gl_osmesa=yes
937 else
938 default_gl_osmesa=no
939 fi
940 AC_ARG_ENABLE([gl-osmesa],
941 [AS_HELP_STRING([--enable-gl-osmesa],
942 [enable OSMesa with libGL @<:@default=enabled for xlib driver@:>@])],
943 [gl_osmesa="$enableval"],
944 [gl_osmesa="$default_gl_osmesa"])
945 if test "x$gl_osmesa" = xyes; then
946 if test "$mesa_driver" = osmesa; then
947 AC_MSG_ERROR([libGL is not available for OSMesa driver])
948 else
949 DRIVER_DIRS="$DRIVER_DIRS osmesa"
950 fi
951 fi
952
953 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
954 AC_ARG_WITH([osmesa-bits],
955 [AS_HELP_STRING([--with-osmesa-bits=BITS],
956 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
957 [osmesa_bits="$withval"],
958 [osmesa_bits=8])
959 if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
960 AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
961 osmesa_bits=8
962 fi
963 case "x$osmesa_bits" in
964 x8)
965 OSMESA_LIB=OSMesa
966 ;;
967 x16|x32)
968 OSMESA_LIB="OSMesa$osmesa_bits"
969 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
970 ;;
971 *)
972 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
973 ;;
974 esac
975 AC_SUBST([OSMESA_LIB])
976
977 case "$DRIVER_DIRS" in
978 *osmesa*)
979 # only link libraries with osmesa if shared
980 if test "$enable_static" = no; then
981 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS $TALLOC_LIBS"
982 else
983 OSMESA_LIB_DEPS=""
984 fi
985 OSMESA_MESA_DEPS=""
986 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS $TALLOC_LIBS"
987 ;;
988 esac
989 AC_SUBST([OSMESA_LIB_DEPS])
990 AC_SUBST([OSMESA_MESA_DEPS])
991 AC_SUBST([OSMESA_PC_REQ])
992 AC_SUBST([OSMESA_PC_LIB_PRIV])
993
994 dnl
995 dnl EGL configuration
996 dnl
997 AC_ARG_ENABLE([egl],
998 [AS_HELP_STRING([--disable-egl],
999 [disable EGL library @<:@default=enabled@:>@])],
1000 [enable_egl="$enableval"],
1001 [enable_egl=yes])
1002 if test "x$enable_egl" = xyes; then
1003 SRC_DIRS="$SRC_DIRS egl"
1004 EGL_LIB_DEPS="$DLOPEN_LIBS -lpthread"
1005 EGL_DRIVERS_DIRS=""
1006 if test "$enable_static" != yes; then
1007 # build egl_glx when libGL is built
1008 if test "$mesa_driver" != osmesa; then
1009 EGL_DRIVERS_DIRS="glx"
1010 fi
1011
1012 if test "$mesa_driver" = dri; then
1013 # build egl_dri2 when xcb-dri2 is available
1014 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes],
1015 [have_xcb_dri2=yes],[have_xcb_dri2=no])
1016 PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1017 [have_libudev=yes],[have_libudev=no])
1018
1019 if test "$have_xcb_dri2" = yes; then
1020 EGL_DRIVER_DRI2=dri2
1021 DEFINES="$DEFINES -DHAVE_XCB_DRI2"
1022 if test "$have_libudev" = yes; then
1023 DEFINES="$DEFINES -DHAVE_LIBUDEV"
1024 fi
1025 fi
1026 fi
1027
1028 EGL_DRIVERS_DIRS="$EGL_DRIVERS_DIRS $EGL_DRIVER_DRI2"
1029 fi
1030 fi
1031 AC_SUBST([EGL_LIB_DEPS])
1032 AC_SUBST([EGL_DRIVERS_DIRS])
1033
1034 dnl
1035 dnl GLU configuration
1036 dnl
1037 AC_ARG_ENABLE([glu],
1038 [AS_HELP_STRING([--disable-glu],
1039 [enable OpenGL Utility library @<:@default=enabled@:>@])],
1040 [enable_glu="$enableval"],
1041 [enable_glu=yes])
1042 if test "x$enable_glu" = xyes; then
1043 SRC_DIRS="$SRC_DIRS glu"
1044
1045 case "$mesa_driver" in
1046 osmesa)
1047 # Link libGLU to libOSMesa instead of libGL
1048 GLU_LIB_DEPS=""
1049 GLU_PC_REQ="osmesa"
1050 if test "$enable_static" = no; then
1051 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
1052 else
1053 GLU_MESA_DEPS=""
1054 fi
1055 ;;
1056 *)
1057 # If static, empty GLU_LIB_DEPS and add libs for programs to link
1058 GLU_PC_REQ="gl"
1059 GLU_PC_LIB_PRIV="-lm"
1060 if test "$enable_static" = no; then
1061 GLU_LIB_DEPS="-lm"
1062 GLU_MESA_DEPS='-l$(GL_LIB)'
1063 else
1064 GLU_LIB_DEPS=""
1065 GLU_MESA_DEPS=""
1066 APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
1067 fi
1068 ;;
1069 esac
1070 fi
1071 if test "$enable_static" = no; then
1072 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
1073 fi
1074 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
1075 AC_SUBST([GLU_LIB_DEPS])
1076 AC_SUBST([GLU_MESA_DEPS])
1077 AC_SUBST([GLU_PC_REQ])
1078 AC_SUBST([GLU_PC_REQ_PRIV])
1079 AC_SUBST([GLU_PC_LIB_PRIV])
1080 AC_SUBST([GLU_PC_CFLAGS])
1081
1082 dnl
1083 dnl GLw configuration
1084 dnl
1085 AC_ARG_ENABLE([glw],
1086 [AS_HELP_STRING([--disable-glw],
1087 [enable Xt/Motif widget library @<:@default=enabled@:>@])],
1088 [enable_glw="$enableval"],
1089 [enable_glw=yes])
1090 dnl Don't build GLw on osmesa
1091 if test "x$enable_glw" = xyes && test "$mesa_driver" = osmesa; then
1092 AC_MSG_WARN([Disabling GLw since the driver is OSMesa])
1093 enable_glw=no
1094 fi
1095 AC_ARG_ENABLE([motif],
1096 [AS_HELP_STRING([--enable-motif],
1097 [use Motif widgets in GLw @<:@default=disabled@:>@])],
1098 [enable_motif="$enableval"],
1099 [enable_motif=no])
1100
1101 if test "x$enable_glw" = xyes; then
1102 SRC_DIRS="$SRC_DIRS glw"
1103 if test "$x11_pkgconfig" = yes; then
1104 PKG_CHECK_MODULES([GLW],[x11 xt])
1105 GLW_PC_REQ_PRIV="x11 xt"
1106 GLW_LIB_DEPS="$GLW_LIBS"
1107 else
1108 # should check these...
1109 GLW_LIB_DEPS="$X_LIBS -lXt -lX11"
1110 GLW_PC_LIB_PRIV="$GLW_LIB_DEPS"
1111 GLW_PC_CFLAGS="$X11_INCLUDES"
1112 fi
1113
1114 GLW_SOURCES="GLwDrawA.c"
1115 MOTIF_CFLAGS=
1116 if test "x$enable_motif" = xyes; then
1117 GLW_SOURCES="$GLW_SOURCES GLwMDrawA.c"
1118 AC_PATH_PROG([MOTIF_CONFIG], [motif-config], [no])
1119 if test "x$MOTIF_CONFIG" != xno; then
1120 MOTIF_CFLAGS=`$MOTIF_CONFIG --cflags`
1121 MOTIF_LIBS=`$MOTIF_CONFIG --libs`
1122 else
1123 AC_CHECK_HEADER([Xm/PrimitiveP.h], [],
1124 [AC_MSG_ERROR([Can't locate Motif headers])])
1125 AC_CHECK_LIB([Xm], [XmGetPixmap], [MOTIF_LIBS="-lXm"],
1126 [AC_MSG_ERROR([Can't locate Motif Xm library])])
1127 fi
1128 # MOTIF_LIBS is prepended to GLW_LIB_DEPS since Xm needs Xt/X11
1129 GLW_LIB_DEPS="$MOTIF_LIBS $GLW_LIB_DEPS"
1130 GLW_PC_LIB_PRIV="$MOTIF_LIBS $GLW_PC_LIB_PRIV"
1131 GLW_PC_CFLAGS="$MOTIF_CFLAGS $GLW_PC_CFLAGS"
1132 fi
1133
1134 # If static, empty GLW_LIB_DEPS and add libs for programs to link
1135 GLW_PC_LIB_PRIV="$GLW_PC_LIB_PRIV"
1136 if test "$enable_static" = no; then
1137 GLW_MESA_DEPS='-l$(GL_LIB)'
1138 GLW_LIB_DEPS="$GLW_LIB_DEPS"
1139 else
1140 APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
1141 GLW_LIB_DEPS=""
1142 GLW_MESA_DEPS=""
1143 fi
1144 fi
1145 AC_SUBST([GLW_LIB_DEPS])
1146 AC_SUBST([GLW_MESA_DEPS])
1147 AC_SUBST([GLW_SOURCES])
1148 AC_SUBST([MOTIF_CFLAGS])
1149 AC_SUBST([GLW_PC_REQ_PRIV])
1150 AC_SUBST([GLW_PC_LIB_PRIV])
1151 AC_SUBST([GLW_PC_CFLAGS])
1152
1153 dnl
1154 dnl GLUT configuration
1155 dnl
1156 if test -f "$srcdir/include/GL/glut.h"; then
1157 default_glut=yes
1158 else
1159 default_glut=no
1160 fi
1161 AC_ARG_ENABLE([glut],
1162 [AS_HELP_STRING([--disable-glut],
1163 [enable GLUT library @<:@default=enabled if source available@:>@])],
1164 [enable_glut="$enableval"],
1165 [enable_glut="$default_glut"])
1166
1167 dnl Can't build glut if GLU not available
1168 if test "x$enable_glu$enable_glut" = xnoyes; then
1169 AC_MSG_WARN([Disabling glut since GLU is disabled])
1170 enable_glut=no
1171 fi
1172 dnl Don't build glut on osmesa
1173 if test "x$enable_glut" = xyes && test "$mesa_driver" = osmesa; then
1174 AC_MSG_WARN([Disabling glut since the driver is OSMesa])
1175 enable_glut=no
1176 fi
1177
1178 if test "x$enable_glut" = xyes; then
1179 SRC_DIRS="$SRC_DIRS glut/glx"
1180 if test "$x11_pkgconfig" = yes; then
1181 PKG_CHECK_MODULES([GLUT],[x11 xmu xi])
1182 GLUT_PC_REQ_PRIV="x11 xmu xi"
1183 GLUT_LIB_DEPS="$GLUT_LIBS"
1184 else
1185 # should check these...
1186 GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
1187 GLUT_PC_LIB_PRIV="$GLUT_LIB_DEPS"
1188 GLUT_PC_CFLAGS="$X11_INCLUDES"
1189 fi
1190 if test "x$GCC" = xyes; then
1191 GLUT_CFLAGS="$GLUT_CFLAGS -fexceptions"
1192 fi
1193 GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
1194 GLUT_PC_LIB_PRIV="$GLUT_PC_LIB_PRIV -lm"
1195
1196 # If static, empty GLUT_LIB_DEPS and add libs for programs to link
1197 if test "$enable_static" = no; then
1198 GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
1199 else
1200 APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
1201 GLUT_LIB_DEPS=""
1202 GLUT_MESA_DEPS=""
1203 fi
1204 fi
1205 AC_SUBST([GLUT_LIB_DEPS])
1206 AC_SUBST([GLUT_MESA_DEPS])
1207 AC_SUBST([GLUT_CFLAGS])
1208 AC_SUBST([GLUT_PC_REQ_PRIV])
1209 AC_SUBST([GLUT_PC_LIB_PRIV])
1210 AC_SUBST([GLUT_PC_CFLAGS])
1211
1212 dnl
1213 dnl Program library dependencies
1214 dnl Only libm is added here if necessary as the libraries should
1215 dnl be pulled in by the linker
1216 dnl
1217 if test "x$APP_LIB_DEPS" = x; then
1218 case "$host_os" in
1219 solaris*)
1220 APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm"
1221 ;;
1222 cygwin*)
1223 APP_LIB_DEPS="-lX11"
1224 ;;
1225 *)
1226 APP_LIB_DEPS="-lm"
1227 ;;
1228 esac
1229 fi
1230 AC_SUBST([APP_LIB_DEPS])
1231 AC_SUBST([PROGRAM_DIRS])
1232
1233 dnl
1234 dnl Gallium configuration
1235 dnl
1236 AC_ARG_ENABLE([gallium],
1237 [AS_HELP_STRING([--disable-gallium],
1238 [build gallium @<:@default=enabled@:>@])],
1239 [enable_gallium="$enableval"],
1240 [enable_gallium=yes])
1241 if test "x$enable_gallium" = xyes; then
1242 SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
1243 AC_CHECK_HEADER([udis86.h], [HAS_UDIS86="yes"],
1244 [HAS_UDIS86="no"])
1245 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1246 fi
1247
1248 AC_SUBST([LLVM_CFLAGS])
1249 AC_SUBST([LLVM_LIBS])
1250 AC_SUBST([LLVM_LDFLAGS])
1251 AC_SUBST([LLVM_VERSION])
1252
1253 VG_LIB_DEPS=""
1254 EGL_CLIENT_APIS='$(GL_LIB)'
1255 if test "x$enable_gles_overlay" = xyes; then
1256 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GLESv1_CM_LIB) $(GLESv2_LIB)'
1257 fi
1258
1259 dnl
1260 dnl Gallium state trackers configuration
1261 dnl
1262 AC_ARG_WITH([state-trackers],
1263 [AS_HELP_STRING([--with-state-trackers@<:@=DIRS...@:>@],
1264 [comma delimited state_trackers list, e.g.
1265 "egl,glx" @<:@default=auto@:>@])],
1266 [with_state_trackers="$withval"],
1267 [with_state_trackers=yes])
1268
1269 case "$with_state_trackers" in
1270 no)
1271 GALLIUM_STATE_TRACKERS_DIRS=""
1272 ;;
1273 yes)
1274 # look at what else is built
1275 case "$mesa_driver" in
1276 xlib)
1277 GALLIUM_STATE_TRACKERS_DIRS=glx
1278 ;;
1279 dri)
1280 GALLIUM_STATE_TRACKERS_DIRS="dri"
1281 HAVE_ST_DRI="yes"
1282 if test "x$enable_egl" = xyes; then
1283 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS egl"
1284 HAVE_ST_EGL="yes"
1285 fi
1286 # Have only tested st/xorg on 1.6.0 servers
1287 PKG_CHECK_MODULES(XORG, [xorg-server >= 1.6.0 libdrm >= $LIBDRM_XORG_REQUIRED libkms >= $LIBKMS_XORG_REQUIRED],
1288 HAVE_ST_XORG="yes"; GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg",
1289 HAVE_ST_XORG="no")
1290 ;;
1291 esac
1292 ;;
1293 *)
1294 # verify the requested state tracker exist
1295 state_trackers=""
1296 _state_trackers=`IFS=', '; echo $with_state_trackers`
1297 for tracker in $_state_trackers; do
1298 case "$tracker" in
1299 dri)
1300 if test "x$mesa_driver" != xdri; then
1301 AC_MSG_ERROR([cannot build dri state tracker without mesa driver set to dri])
1302 fi
1303 HAVE_ST_DRI="yes"
1304 ;;
1305 egl)
1306 if test "x$enable_egl" != xyes; then
1307 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1308 fi
1309 HAVE_ST_EGL="yes"
1310 ;;
1311 xorg)
1312 PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1313 PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1314 PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1315 HAVE_ST_XORG="yes"
1316 ;;
1317 es)
1318 AC_MSG_WARN([state tracker 'es' has been replaced by --enable-gles-overlay])
1319
1320 if test "x$enable_gles_overlay" != xyes; then
1321 if test "x$enable_gles1" != xyes -a "x$enable_gles2" != xyes; then
1322 CORE_DIRS="mapi/es1api mapi/es2api $CORE_DIRS"
1323 fi
1324 GLES_OVERLAY=1
1325 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GLESv1_CM_LIB) $(GLESv2_LIB)'
1326 fi
1327 tracker=""
1328 ;;
1329 vega)
1330 CORE_DIRS="$CORE_DIRS mapi/vgapi"
1331 VG_LIB_DEPS="$VG_LIB_DEPS -lpthread"
1332 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1333 ;;
1334 xorg/xvmc)
1335 # Check for xvmc?
1336 if test "x$enable_gallium_g3dvl" != xyes; then
1337 AC_MSG_ERROR([cannot build XvMC state tracker without --enable-gallium-g3dvl])
1338 fi
1339 HAVE_ST_XVMC="yes"
1340 ;;
1341 vdpau)
1342 # Check for libvdpau?
1343 if test "x$enable_gallium_g3dvl" != xyes; then
1344 AC_MSG_ERROR([cannot build vdpau state tracker without --enable-gallium-g3dvl])
1345 fi
1346 HAVE_ST_VDPAU="yes"
1347 ;;
1348 esac
1349
1350 if test -n "$tracker"; then
1351 test -d "$srcdir/src/gallium/state_trackers/$tracker" || \
1352 AC_MSG_ERROR([state tracker '$tracker' doesn't exist])
1353 if test -n "$state_trackers"; then
1354 state_trackers="$state_trackers $tracker"
1355 else
1356 state_trackers="$tracker"
1357 fi
1358 fi
1359 done
1360 GALLIUM_STATE_TRACKERS_DIRS="$state_trackers"
1361 ;;
1362 esac
1363
1364 AC_SUBST([VG_LIB_DEPS])
1365 AC_SUBST([EGL_CLIENT_APIS])
1366
1367 if test "x$HAVE_ST_EGL" = xyes; then
1368 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl"
1369 # define GLX_DIRECT_RENDERING even when the driver is not dri
1370 if test "x$mesa_driver" != xdri -a "x$driglx_direct" = xyes; then
1371 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1372 fi
1373 fi
1374
1375 if test "x$HAVE_ST_XORG" = xyes; then
1376 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1377 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1378 HAVE_XEXTPROTO_71="no")
1379 fi
1380
1381 AC_ARG_WITH([egl-platforms],
1382 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1383 [comma delimited native platforms libEGL supports, e.g.
1384 "x11,drm" @<:@default=auto@:>@])],
1385 [with_egl_platforms="$withval"],
1386 [with_egl_platforms=yes])
1387 AC_ARG_WITH([egl-displays],
1388 [AS_HELP_STRING([--with-egl-displays@<:@=DIRS...@:>@],
1389 [DEPRECATED. Use --with-egl-platforms instead])],
1390 [with_egl_platforms="$withval"])
1391
1392 EGL_PLATFORMS=""
1393 case "$with_egl_platforms" in
1394 yes)
1395 if test "x$enable_egl" = xyes && test "x$mesa_driver" != xosmesa; then
1396 EGL_PLATFORMS="x11"
1397 if test "$mesa_driver" = dri; then
1398 EGL_PLATFORMS="$EGL_PLATFORMS drm"
1399 fi
1400 fi
1401 ;;
1402 *)
1403 if test "x$enable_egl" != xyes; then
1404 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1405 fi
1406 # verify the requested driver directories exist
1407 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1408 for plat in $egl_platforms; do
1409 test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \
1410 AC_MSG_ERROR([EGL platform '$plat' does't exist])
1411 if test "$plat" = "fbdev"; then
1412 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev"
1413 fi
1414 done
1415 EGL_PLATFORMS="$egl_platforms"
1416 ;;
1417 esac
1418 AC_SUBST([EGL_PLATFORMS])
1419
1420 AC_ARG_WITH([egl-driver-dir],
1421 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1422 [directory for EGL drivers [[default=${libdir}/egl]]])],
1423 [EGL_DRIVER_INSTALL_DIR="$withval"],
1424 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1425 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1426
1427 AC_ARG_WITH([xorg-driver-dir],
1428 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1429 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1430 [XORG_DRIVER_INSTALL_DIR="$withval"],
1431 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1432 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1433
1434 AC_ARG_WITH([max-width],
1435 [AS_HELP_STRING([--with-max-width=N],
1436 [Maximum framebuffer width (4096)])],
1437 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1438 AS_IF([test "${withval}" -gt "4096"],
1439 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1440 )
1441 AC_ARG_WITH([max-height],
1442 [AS_HELP_STRING([--with-max-height=N],
1443 [Maximum framebuffer height (4096)])],
1444 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1445 AS_IF([test "${withval}" -gt "4096"],
1446 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1447 )
1448
1449 dnl
1450 dnl Gallium LLVM
1451 dnl
1452 AC_ARG_ENABLE([gallium-llvm],
1453 [AS_HELP_STRING([--enable-gallium-llvm],
1454 [build gallium LLVM support @<:@default=disabled@:>@])],
1455 [enable_gallium_llvm="$enableval"],
1456 [enable_gallium_llvm=auto])
1457 if test "x$enable_gallium_llvm" = xyes; then
1458 if test "x$LLVM_CONFIG" != xno; then
1459 LLVM_VERSION=`$LLVM_CONFIG --version`
1460 LLVM_CFLAGS=`$LLVM_CONFIG --cflags`
1461 LLVM_LIBS="`$LLVM_CONFIG --libs jit interpreter nativecodegen bitwriter` -lstdc++"
1462
1463 if test "x$HAS_UDIS86" != xno; then
1464 LLVM_LIBS="$LLVM_LIBS -ludis86"
1465 DEFINES="$DEFINES -DHAVE_UDIS86"
1466 fi
1467 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1468 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1469 DEFINES="$DEFINES -DGALLIUM_LLVMPIPE -D__STDC_CONSTANT_MACROS"
1470 MESA_LLVM=1
1471 else
1472 MESA_LLVM=0
1473 fi
1474 else
1475 MESA_LLVM=0
1476 fi
1477
1478 dnl
1479 dnl Gallium helper functions
1480 dnl
1481 gallium_check_st() {
1482 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_EGL" = xyes || test "x$HAVE_ST_XORG" = xyes || test "x$HAVE_ST_XVMC" = xyes || test "x$HAVE_ST_VDPAU" = xyes; then
1483 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1484 fi
1485 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1486 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1487 fi
1488 if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
1489 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1490 fi
1491 if test "x$HAVE_ST_XORG" = xyes && test "x$4" != x; then
1492 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
1493 fi
1494 if test "x$HAVE_ST_XVMC" = xyes && test "x$5" != x; then
1495 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5"
1496 fi
1497 if test "x$HAVE_ST_VDPAU" = xyes && test "x$6" != x; then
1498 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6"
1499 fi
1500 }
1501
1502
1503 dnl
1504 dnl Gallium SVGA configuration
1505 dnl
1506 AC_ARG_ENABLE([gallium-svga],
1507 [AS_HELP_STRING([--enable-gallium-svga],
1508 [build gallium SVGA @<:@default=disabled@:>@])],
1509 [enable_gallium_svga="$enableval"],
1510 [enable_gallium_svga=auto])
1511 if test "x$enable_gallium_svga" = xyes; then
1512 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1513 gallium_check_st "svga/drm" "dri-vmwgfx" "xorg-vmwgfx"
1514 elif test "x$enable_gallium_svga" = xauto; then
1515 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1516 fi
1517
1518 dnl
1519 dnl Gallium i915 configuration
1520 dnl
1521 AC_ARG_ENABLE([gallium-i915],
1522 [AS_HELP_STRING([--enable-gallium-i915],
1523 [build gallium i915 @<:@default=disabled@:>@])],
1524 [enable_gallium_i915="$enableval"],
1525 [enable_gallium_i915=auto])
1526 if test "x$enable_gallium_i915" = xyes; then
1527 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1528 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915"
1529 gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1530 elif test "x$enable_gallium_i915" = xauto; then
1531 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1532 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915"
1533 fi
1534
1535 dnl
1536 dnl Gallium i965 configuration
1537 dnl
1538 AC_ARG_ENABLE([gallium-i965],
1539 [AS_HELP_STRING([--enable-gallium-i965],
1540 [build gallium i965 @<:@default=disabled@:>@])],
1541 [enable_gallium_i965="$enableval"],
1542 [enable_gallium_i965=auto])
1543 if test "x$enable_gallium_i965" = xyes; then
1544 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i965"
1545 gallium_check_st "i965/drm" "dri-i965" "xorg-i965"
1546 elif test "x$enable_gallium_i965" = xauto; then
1547 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i965"
1548 fi
1549
1550 dnl
1551 dnl Gallium Radeon r300g configuration
1552 dnl
1553 AC_ARG_ENABLE([gallium-radeon],
1554 [AS_HELP_STRING([--enable-gallium-radeon],
1555 [build gallium radeon @<:@default=disabled@:>@])],
1556 [enable_gallium_radeon="$enableval"],
1557 [enable_gallium_radeon=auto])
1558 if test "x$enable_gallium_radeon" = xauto; then
1559 if test "x$HAVE_LIBDRM_RADEON" = xyes; then
1560 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1561 gallium_check_st "radeon/drm" "dri-r300"
1562 else
1563 AC_MSG_WARN([libdrm_radeon is missing, not building gallium-radeon (r300)])
1564 fi
1565 fi
1566 if test "x$enable_gallium_radeon" = xyes; then
1567 if test "x$HAVE_LIBDRM_RADEON" = xyes; then
1568 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1569 gallium_check_st "radeon/drm" "dri-r300" "xorg-radeon"
1570 else
1571 AC_MSG_ERROR([libdrm_radeon is missing, cannot build gallium-radeon (r300)])
1572 fi
1573 fi
1574
1575 dnl
1576 dnl Gallium Radeon r600g configuration
1577 dnl
1578 AC_ARG_ENABLE([gallium-r600],
1579 [AS_HELP_STRING([--enable-gallium-r600],
1580 [build gallium radeon @<:@default=disabled@:>@])],
1581 [enable_gallium_r600="$enableval"],
1582 [enable_gallium_r600=auto])
1583 if test "x$enable_gallium_r600" = xyes; then
1584 if test "x$HAVE_LIBDRM_RADEON" = xyes; then
1585 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1586 gallium_check_st "r600/drm" "dri-r600"
1587 else
1588 AC_MSG_ERROR([libdrm_radeon is missing, cannot build gallium-r600])
1589 fi
1590 fi
1591
1592 dnl
1593 dnl Gallium Nouveau configuration
1594 dnl
1595 AC_ARG_ENABLE([gallium-nouveau],
1596 [AS_HELP_STRING([--enable-gallium-nouveau],
1597 [build gallium nouveau @<:@default=disabled@:>@])],
1598 [enable_gallium_nouveau="$enableval"],
1599 [enable_gallium_nouveau=no])
1600 if test "x$enable_gallium_nouveau" = xyes; then
1601 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50"
1602 gallium_check_st "nouveau/drm" "dri-nouveau" "egl-nouveau" "xorg-nouveau" "xvmc-nouveau"
1603 fi
1604
1605 dnl
1606 dnl Gallium G3DVL configuration
1607 dnl
1608 AC_ARG_ENABLE([gallium-g3dvl],
1609 [AS_HELP_STRING([--enable-gallium-g3dvl],
1610 [build gallium g3dvl @<:@default=disabled@:>@])],
1611 [enable_gallium_g3dvl="$enableval"],
1612 [enable_gallium_g3dvl=no])
1613 if test "x$enable_gallium_g3dvl" = xyes; then
1614 case "$mesa_driver" in
1615 xlib)
1616 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS vdpau-softpipe"
1617 ;;
1618 dri)
1619 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS g3dvl/dri"
1620 ;;
1621 esac
1622 fi
1623 dnl Directory for VDPAU libs
1624 AC_ARG_WITH([vdpau-libdir],
1625 [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1626 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1627 [VDPAU_LIB_INSTALL_DIR="$withval"],
1628 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1629 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
1630
1631 dnl
1632 dnl Gallium swrast configuration
1633 dnl
1634 AC_ARG_ENABLE([gallium-swrast],
1635 [AS_HELP_STRING([--enable-gallium-swrast],
1636 [build gallium swrast @<:@default=auto@:>@])],
1637 [enable_gallium_swrast="$enableval"],
1638 [enable_gallium_swrast=auto])
1639 if test "x$enable_gallium_swrast" = xyes || test "x$enable_gallium_swrast" = xauto; then
1640 if test "x$HAVE_ST_DRI" = xyes; then
1641 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1642 fi
1643 fi
1644
1645 dnl prepend CORE_DIRS to SRC_DIRS
1646 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
1647
1648 dnl Restore LDFLAGS and CPPFLAGS
1649 LDFLAGS="$_SAVE_LDFLAGS"
1650 CPPFLAGS="$_SAVE_CPPFLAGS"
1651
1652 dnl Substitute the config
1653 AC_CONFIG_FILES([configs/autoconf])
1654
1655 dnl Replace the configs/current symlink
1656 AC_CONFIG_COMMANDS([configs],[
1657 if test -f configs/current || test -L configs/current; then
1658 rm -f configs/current
1659 fi
1660 ln -s autoconf configs/current
1661 ])
1662
1663 AC_OUTPUT
1664
1665 dnl
1666 dnl Output some configuration info for the user
1667 dnl
1668 echo ""
1669 echo " prefix: $prefix"
1670 echo " exec_prefix: $exec_prefix"
1671 echo " libdir: $libdir"
1672 echo " includedir: $includedir"
1673
1674 dnl Driver info
1675 echo ""
1676 echo " Driver: $mesa_driver"
1677 if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
1678 echo " OSMesa: lib$OSMESA_LIB"
1679 else
1680 echo " OSMesa: no"
1681 fi
1682 if test "$mesa_driver" = dri; then
1683 # cleanup the drivers var
1684 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1685 if test "x$DRI_DIRS" = x; then
1686 echo " DRI drivers: no"
1687 else
1688 echo " DRI drivers: $dri_dirs"
1689 fi
1690 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
1691 fi
1692 echo " Use XCB: $enable_xcb"
1693
1694 echo ""
1695 if test "x$MESA_LLVM" = x1; then
1696 echo " llvm: yes"
1697 echo " llvm-config: $LLVM_CONFIG"
1698 echo " llvm-version: $LLVM_VERSION"
1699 else
1700 echo " llvm: no"
1701 fi
1702
1703 echo ""
1704 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
1705 echo " Gallium: yes"
1706 echo " Gallium dirs: $GALLIUM_DIRS"
1707 echo " Target dirs: $GALLIUM_TARGET_DIRS"
1708 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
1709 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
1710 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
1711 if test "x$HAVE_ST_EGL" = xyes; then
1712 echo " EGL client APIs: $EGL_CLIENT_APIS"
1713 fi
1714 else
1715 echo " Gallium: no"
1716 fi
1717
1718 dnl Libraries
1719 echo ""
1720 echo " Shared libs: $enable_shared"
1721 echo " Static libs: $enable_static"
1722 if test "$enable_egl" = yes; then
1723 echo " EGL: $EGL_DRIVERS_DIRS"
1724 echo " EGL platforms: $EGL_PLATFORMS"
1725 else
1726 echo " EGL: no"
1727 fi
1728 echo " GLU: $enable_glu"
1729 echo " GLw: $enable_glw (Motif: $enable_motif)"
1730 echo " glut: $enable_glut"
1731
1732 dnl Compiler options
1733 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
1734 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1735 $SED 's/^ *//;s/ */ /;s/ *$//'`
1736 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1737 $SED 's/^ *//;s/ */ /;s/ *$//'`
1738 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1739 echo ""
1740 echo " CFLAGS: $cflags"
1741 echo " CXXFLAGS: $cxxflags"
1742 echo " Macros: $defines"
1743
1744 echo ""
1745 echo " Run '${MAKE-make}' to build Mesa"
1746 echo ""