1 dnl Process this file with autoconf to create configure.
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`])])
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.])
15 AC_INIT([Mesa],[mesa_version],
16 [https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa])
17 AC_CONFIG_AUX_DIR([bin])
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
32 AC_CHECK_PROGS([MAKE], [gmake make])
33 AC_PATH_PROG([MKDEP], [makedepend])
34 AC_PATH_PROG([SED], [sed])
36 if test "x$MKDEP" = "x"; then
37 AC_MSG_ERROR([makedepend is required to build Mesa])
40 dnl Our fallback install-sh is a symlink to minstall. Use the existing
41 dnl configuration in that case.
43 test "x$INSTALL" = "x$ac_install_sh" && INSTALL='$(MINSTALL)'
45 dnl We need a POSIX shell for parts of the build. Assume we have one
49 # Solaris /bin/sh is too old/non-POSIX compliant
50 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
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])
60 [AC_LANG_PROGRAM([], [[
65 [CLANG=yes], [CLANG=no])
67 AC_MSG_RESULT([$CLANG])
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])
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`
82 if test $major -lt 3 -o $major -eq 3 -a $minor -lt 3 ; then
84 AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.])
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"
103 AC_SUBST([MKDEP_OPTIONS])
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()
113 dnl LIB_DIR - library basename
114 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
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])
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])
132 DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS"
135 DEFINES="$DEFINES -DPTHREADS -DSVR4"
138 DEFINES="$DEFINES -DPTHREADS"
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"
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])]);
156 # Work around aliasing bugs - developers should comment this out
157 CFLAGS="$CFLAGS -fno-strict-aliasing"
159 if test "x$GXX" = xyes; then
160 CXXFLAGS="$CXXFLAGS -Wall"
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])]);
169 # Work around aliasing bugs - developers should comment this out
170 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
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])
182 dnl Hacks to enable 32 or 64 bit build
184 AC_ARG_ENABLE([32-bit],
185 [AS_HELP_STRING([--enable-32-bit],
186 [build 32-bit libraries @<:@default=auto@:>@])],
187 [enable_32bit="$enableval"],
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"
195 if test "x$GXX" = xyes; then
196 CXXFLAGS="$CXXFLAGS -m32"
199 AC_ARG_ENABLE([64-bit],
200 [AS_HELP_STRING([--enable-64-bit],
201 [build 64-bit libraries @<:@default=auto@:>@])],
202 [enable_64bit="$enableval"],
205 if test "x$enable_64bit" = xyes; then
206 if test "x$GCC" = xyes; then
207 CFLAGS="$CFLAGS -m64"
209 if test "x$GXX" = xyes; then
210 CXXFLAGS="$CXXFLAGS -m64"
215 dnl shared/static libraries, mimic libtool options
217 AC_ARG_ENABLE([static],
218 [AS_HELP_STRING([--enable-static],
219 [build static libraries @<:@default=disabled@:>@])],
220 [enable_static="$enableval"],
223 case "x$enable_static" in
225 x ) enable_static=no ;;
227 AC_MSG_ERROR([Static library option '$enable_static' is not a valid])
230 AC_ARG_ENABLE([shared],
231 [AS_HELP_STRING([--disable-shared],
232 [build shared libraries @<:@default=enabled@:>@])],
233 [enable_shared="$enableval"],
236 case "x$enable_shared" in
238 x ) enable_shared=yes ;;
240 AC_MSG_ERROR([Shared library option '$enable_shared' is not a valid])
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
249 AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
253 AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
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"
265 AC_SUBST([MKLIB_OPTIONS])
268 dnl other compiler options
270 AC_ARG_ENABLE([debug],
271 [AS_HELP_STRING([--enable-debug],
272 [use debug compiler flags and macros @<:@default=disabled@:>@])],
273 [enable_debug="$enableval"],
276 if test "x$enable_debug" = xyes; then
277 DEFINES="$DEFINES -DDEBUG"
278 if test "x$GCC" = xyes; then
281 if test "x$GXX" = xyes; then
282 CXXFLAGS="$CXXFLAGS -g"
289 LIB_PREFIX_GLOB='lib'
290 LIB_VERSION_SEPARATOR='.'
291 if test "$enable_static" = yes; then
296 LIB_EXTENSION='dylib' ;;
298 dnl prefix can be 'cyg' or 'lib'
299 LIB_PREFIX_GLOB='???'
300 LIB_VERSION_SEPARATOR='-'
301 LIB_EXTENSION='dll' ;;
305 LIB_EXTENSION='so' ;;
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}
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}'*'
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])
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])
351 dnl Arch/platform-specific settings
354 [AS_HELP_STRING([--disable-asm],
355 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
356 [enable_asm="$enableval"],
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
370 AC_MSG_RESULT([no, cross compiling])
374 # check for supported arches
375 if test "x$enable_asm" = xyes; then
379 linux* | *freebsd* | dragonfly*)
380 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
386 linux* | *freebsd* | dragonfly*)
387 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
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])
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])
421 ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM"
422 MESA_ASM_SOURCES='$(PPC_SOURCES)'
423 AC_MSG_RESULT([yes, ppc])
426 ASM_FLAGS="-DUSE_SPARC_ASM"
427 MESA_ASM_SOURCES='$(SPARC_SOURCES)'
428 GLAPI_ASM_SOURCES='$(SPARC_API)'
429 AC_MSG_RESULT([yes, sparc])
432 AC_MSG_RESULT([no, platform not supported])
436 AC_SUBST([ASM_FLAGS])
437 AC_SUBST([MESA_ASM_SOURCES])
438 AC_SUBST([GLAPI_ASM_SOURCES])
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])
449 dnl See if posix_memalign is available
450 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
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"],
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"
468 dnl Driver configuration. Options are xlib, dri and osmesa right now.
469 dnl More later: fbdev, ...
471 default_driver="xlib"
476 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
479 *freebsd* | dragonfly*)
481 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
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
496 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
500 PKG_CHECK_MODULES([TALLOC], [talloc])
501 AC_SUBST([TALLOC_LIBS])
502 AC_SUBST([TALLOC_CFLAGS])
505 dnl Driver specific build directories
508 dnl this variable will be prepended to SRC_DIRS and is not exported
509 CORE_DIRS="mapi/glapi glsl mesa"
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=""
519 case "$mesa_driver" in
522 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
523 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
526 SRC_DIRS="$SRC_DIRS glx"
528 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib sw/dri"
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])
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.
548 if test -n "$PKG_CONFIG"; then
549 AC_MSG_CHECKING([pkg-config files for X11 are available])
550 PKG_CHECK_EXISTS([x11],[
556 AC_MSG_RESULT([$x11_pkgconfig])
560 dnl Use the autoconf macro if no pkg-config files
561 if test "$x11_pkgconfig" = yes; then
562 PKG_CHECK_MODULES([X11], [x11])
565 test -z "$X11_CFLAGS" && X11_CFLAGS="$X_CFLAGS"
566 test -z "$X11_LIBS" && X11_LIBS="$X_LIBS -lX11"
567 AC_SUBST([X11_CFLAGS])
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.])
577 dnl We need X for xlib and dri, so bomb now if it's not found
578 case "$mesa_driver" in
580 if test "$no_x" = yes; then
581 AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver])
586 dnl XCB - this is only used for GLX right now
588 [AS_HELP_STRING([--enable-xcb],
589 [use XCB for GLX @<:@default=disabled@:>@])],
590 [enable_xcb="$enableval"],
592 if test "x$enable_xcb" = xyes; then
593 DEFINES="$DEFINES -DUSE_XCB"
599 dnl libGL configuration per driver
601 case "$mesa_driver" in
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"
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"
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"
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"
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])
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"
638 # find the DRI deps for libGL
639 if test "$x11_pkgconfig" = yes; then
640 dri_modules="x11 xext xdamage xfixes"
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"
648 # add xcb modules if necessary
649 if test "$enable_xcb" = yes; then
650 dri_modules="$dri_modules x11-xcb xcb-glx"
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"
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"
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"
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"
682 # No libGL for osmesa
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])
697 AC_SUBST([HAVE_XF86VIDMODE])
699 PKG_CHECK_MODULES([LIBDRM_RADEON],
700 [libdrm_radeon libdrm >= $LIBDRM_RADEON_REQUIRED],
701 HAVE_LIBDRM_RADEON=yes,
702 HAVE_LIBDRM_RADEON=no)
707 if test "$mesa_driver" = xlib; then
708 DEFINES="$DEFINES -DUSE_XSHM"
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"],
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
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"],
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"],
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"],
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])
774 if test "x$enable_opengl" = xno; then
775 API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
777 API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
779 if test "x$enable_gles1" = xyes; then
780 API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
782 if test "x$enable_gles2" = xyes; then
783 API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
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
792 AC_SUBST([API_DEFINES])
793 AC_SUBST([GLES_OVERLAY])
795 dnl If $with_dri_drivers is yes, directories will be added through
798 case "$with_dri_drivers" in
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])
810 DRI_DIRS="$dri_drivers"
814 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
815 if test "$mesa_driver" = dri; then
817 if test "x$GLX_USE_TLS" = xyes; then
818 DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS"
821 # Platform specific settings and drivers to build
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"
828 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
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"
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"
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"
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"
862 if test "x$GXX" = xyes; then
863 CXXFLAGS="$CXXFLAGS -ansi -pedantic"
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"
872 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
873 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
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"
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"
890 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
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"
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.])])
907 # put all the necessary libs together
908 DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS $TALLOC_LIBS"
911 AC_SUBST([EXPAT_INCLUDES])
912 AC_SUBST([DRI_LIB_DEPS])
916 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= 2.4.21])
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
928 AC_SUBST([RADEON_CFLAGS])
929 AC_SUBST([RADEON_LDFLAGS])
933 dnl OSMesa configuration
935 if test "$mesa_driver" = xlib; then
936 default_gl_osmesa=yes
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])
949 DRIVER_DIRS="$DRIVER_DIRS osmesa"
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"],
959 if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
960 AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
963 case "x$osmesa_bits" in
968 OSMESA_LIB="OSMesa$osmesa_bits"
969 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
972 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
975 AC_SUBST([OSMESA_LIB])
977 case "$DRIVER_DIRS" in
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"
986 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS $TALLOC_LIBS"
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])
995 dnl EGL configuration
998 [AS_HELP_STRING([--disable-egl],
999 [disable EGL library @<:@default=enabled@:>@])],
1000 [enable_egl="$enableval"],
1002 if test "x$enable_egl" = xyes; then
1003 SRC_DIRS="$SRC_DIRS egl"
1004 EGL_LIB_DEPS="$DLOPEN_LIBS -lpthread"
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"
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])
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"
1028 EGL_DRIVERS_DIRS="$EGL_DRIVERS_DIRS $EGL_DRIVER_DRI2"
1031 AC_SUBST([EGL_LIB_DEPS])
1032 AC_SUBST([EGL_DRIVERS_DIRS])
1035 dnl GLU configuration
1037 AC_ARG_ENABLE([glu],
1038 [AS_HELP_STRING([--disable-glu],
1039 [enable OpenGL Utility library @<:@default=enabled@:>@])],
1040 [enable_glu="$enableval"],
1042 if test "x$enable_glu" = xyes; then
1043 SRC_DIRS="$SRC_DIRS glu"
1045 case "$mesa_driver" in
1047 # Link libGLU to libOSMesa instead of libGL
1050 if test "$enable_static" = no; then
1051 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
1057 # If static, empty GLU_LIB_DEPS and add libs for programs to link
1059 GLU_PC_LIB_PRIV="-lm"
1060 if test "$enable_static" = no; then
1062 GLU_MESA_DEPS='-l$(GL_LIB)'
1066 APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
1071 if test "$enable_static" = no; then
1072 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
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])
1083 dnl GLw configuration
1085 AC_ARG_ENABLE([glw],
1086 [AS_HELP_STRING([--disable-glw],
1087 [enable Xt/Motif widget library @<:@default=enabled@:>@])],
1088 [enable_glw="$enableval"],
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])
1095 AC_ARG_ENABLE([motif],
1096 [AS_HELP_STRING([--enable-motif],
1097 [use Motif widgets in GLw @<:@default=disabled@:>@])],
1098 [enable_motif="$enableval"],
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"
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"
1114 GLW_SOURCES="GLwDrawA.c"
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`
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])])
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"
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"
1140 APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
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])
1154 dnl GLUT configuration
1156 if test -f "$srcdir/include/GL/glut.h"; then
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"])
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])
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])
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"
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"
1190 if test "x$GCC" = xyes; then
1191 GLUT_CFLAGS="$GLUT_CFLAGS -fexceptions"
1193 GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
1194 GLUT_PC_LIB_PRIV="$GLUT_PC_LIB_PRIV -lm"
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)'
1200 APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
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])
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
1217 if test "x$APP_LIB_DEPS" = x; then
1220 APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm"
1223 APP_LIB_DEPS="-lX11"
1230 AC_SUBST([APP_LIB_DEPS])
1231 AC_SUBST([PROGRAM_DIRS])
1234 dnl Gallium configuration
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"],
1245 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1248 AC_SUBST([LLVM_CFLAGS])
1249 AC_SUBST([LLVM_LIBS])
1250 AC_SUBST([LLVM_LDFLAGS])
1251 AC_SUBST([LLVM_VERSION])
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)'
1260 dnl Gallium state trackers configuration
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])
1269 case "$with_state_trackers" in
1271 GALLIUM_STATE_TRACKERS_DIRS=""
1274 # look at what else is built
1275 case "$mesa_driver" in
1277 GALLIUM_STATE_TRACKERS_DIRS=glx
1280 GALLIUM_STATE_TRACKERS_DIRS="dri"
1282 if test "x$enable_egl" = xyes; then
1283 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS egl"
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",
1294 # verify the requested state tracker exist
1296 _state_trackers=`IFS=', '; echo $with_state_trackers`
1297 for tracker in $_state_trackers; do
1300 if test "x$mesa_driver" != xdri; then
1301 AC_MSG_ERROR([cannot build dri state tracker without mesa driver set to dri])
1306 if test "x$enable_egl" != xyes; then
1307 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
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])
1318 AC_MSG_WARN([state tracker 'es' has been replaced by --enable-gles-overlay])
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"
1325 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GLESv1_CM_LIB) $(GLESv2_LIB)'
1330 CORE_DIRS="$CORE_DIRS mapi/vgapi"
1331 VG_LIB_DEPS="$VG_LIB_DEPS -lpthread"
1332 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1336 if test -n "$tracker"; then
1337 test -d "$srcdir/src/gallium/state_trackers/$tracker" || \
1338 AC_MSG_ERROR([state tracker '$tracker' doesn't exist])
1339 if test -n "$state_trackers"; then
1340 state_trackers="$state_trackers $tracker"
1342 state_trackers="$tracker"
1346 GALLIUM_STATE_TRACKERS_DIRS="$state_trackers"
1350 AC_SUBST([VG_LIB_DEPS])
1351 AC_SUBST([EGL_CLIENT_APIS])
1353 if test "x$HAVE_ST_EGL" = xyes; then
1354 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl"
1355 # define GLX_DIRECT_RENDERING even when the driver is not dri
1356 if test "x$mesa_driver" != xdri -a "x$driglx_direct" = xyes; then
1357 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1361 if test "x$HAVE_ST_XORG" = xyes; then
1362 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1363 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1364 HAVE_XEXTPROTO_71="no")
1367 AC_ARG_WITH([egl-platforms],
1368 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1369 [comma delimited native platforms libEGL supports, e.g.
1370 "x11,drm" @<:@default=auto@:>@])],
1371 [with_egl_platforms="$withval"],
1372 [with_egl_platforms=yes])
1373 AC_ARG_WITH([egl-displays],
1374 [AS_HELP_STRING([--with-egl-displays@<:@=DIRS...@:>@],
1375 [DEPRECATED. Use --with-egl-platforms instead])],
1376 [with_egl_platforms="$withval"])
1379 case "$with_egl_platforms" in
1381 if test "x$enable_egl" = xyes && test "x$mesa_driver" != xosmesa; then
1383 if test "$mesa_driver" = dri; then
1384 EGL_PLATFORMS="$EGL_PLATFORMS drm"
1389 if test "x$enable_egl" != xyes; then
1390 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1392 # verify the requested driver directories exist
1393 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1394 for plat in $egl_platforms; do
1395 test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \
1396 AC_MSG_ERROR([EGL platform '$plat' does't exist])
1397 if test "$plat" = "fbdev"; then
1398 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev"
1401 EGL_PLATFORMS="$egl_platforms"
1404 AC_SUBST([EGL_PLATFORMS])
1406 AC_ARG_WITH([egl-driver-dir],
1407 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1408 [directory for EGL drivers [[default=${libdir}/egl]]])],
1409 [EGL_DRIVER_INSTALL_DIR="$withval"],
1410 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1411 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1413 AC_ARG_WITH([xorg-driver-dir],
1414 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1415 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1416 [XORG_DRIVER_INSTALL_DIR="$withval"],
1417 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1418 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1420 AC_ARG_WITH([max-width],
1421 [AS_HELP_STRING([--with-max-width=N],
1422 [Maximum framebuffer width (4096)])],
1423 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1424 AS_IF([test "${withval}" -gt "4096"],
1425 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1427 AC_ARG_WITH([max-height],
1428 [AS_HELP_STRING([--with-max-height=N],
1429 [Maximum framebuffer height (4096)])],
1430 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1431 AS_IF([test "${withval}" -gt "4096"],
1432 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1438 AC_ARG_ENABLE([gallium-llvm],
1439 [AS_HELP_STRING([--enable-gallium-llvm],
1440 [build gallium LLVM support @<:@default=disabled@:>@])],
1441 [enable_gallium_llvm="$enableval"],
1442 [enable_gallium_llvm=auto])
1443 if test "x$enable_gallium_llvm" = xyes; then
1444 if test "x$LLVM_CONFIG" != xno; then
1445 LLVM_VERSION=`$LLVM_CONFIG --version`
1446 LLVM_CFLAGS=`$LLVM_CONFIG --cflags`
1447 LLVM_LIBS="`$LLVM_CONFIG --libs jit interpreter nativecodegen bitwriter` -lstdc++"
1449 if test "x$HAS_UDIS86" != xno; then
1450 LLVM_LIBS="$LLVM_LIBS -ludis86"
1451 DEFINES="$DEFINES -DHAVE_UDIS86"
1453 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1454 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1455 DEFINES="$DEFINES -DGALLIUM_LLVMPIPE -D__STDC_CONSTANT_MACROS"
1465 dnl Gallium helper functions
1467 gallium_check_st() {
1468 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes; then
1469 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1471 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1472 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1474 if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
1475 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1481 dnl Gallium SVGA configuration
1483 AC_ARG_ENABLE([gallium-svga],
1484 [AS_HELP_STRING([--enable-gallium-svga],
1485 [build gallium SVGA @<:@default=disabled@:>@])],
1486 [enable_gallium_svga="$enableval"],
1487 [enable_gallium_svga=auto])
1488 if test "x$enable_gallium_svga" = xyes; then
1489 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1490 gallium_check_st "svga/drm" "dri-vmwgfx" "xorg-vmwgfx"
1491 elif test "x$enable_gallium_svga" = xauto; then
1492 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1496 dnl Gallium i915 configuration
1498 AC_ARG_ENABLE([gallium-i915],
1499 [AS_HELP_STRING([--enable-gallium-i915],
1500 [build gallium i915 @<:@default=disabled@:>@])],
1501 [enable_gallium_i915="$enableval"],
1502 [enable_gallium_i915=auto])
1503 if test "x$enable_gallium_i915" = xyes; then
1504 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1505 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915"
1506 gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1507 elif test "x$enable_gallium_i915" = xauto; then
1508 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1509 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915"
1513 dnl Gallium i965 configuration
1515 AC_ARG_ENABLE([gallium-i965],
1516 [AS_HELP_STRING([--enable-gallium-i965],
1517 [build gallium i965 @<:@default=disabled@:>@])],
1518 [enable_gallium_i965="$enableval"],
1519 [enable_gallium_i965=auto])
1520 if test "x$enable_gallium_i965" = xyes; then
1521 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i965"
1522 gallium_check_st "i965/drm" "dri-i965" "xorg-i965"
1523 elif test "x$enable_gallium_i965" = xauto; then
1524 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i965"
1528 dnl Gallium Radeon r300g configuration
1530 AC_ARG_ENABLE([gallium-radeon],
1531 [AS_HELP_STRING([--enable-gallium-radeon],
1532 [build gallium radeon @<:@default=disabled@:>@])],
1533 [enable_gallium_radeon="$enableval"],
1534 [enable_gallium_radeon=auto])
1535 if test "x$enable_gallium_radeon" = xauto; then
1536 if test "x$HAVE_LIBDRM_RADEON" = xyes; then
1537 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1538 gallium_check_st "radeon/drm" "dri-r300"
1540 AC_MSG_WARN([libdrm_radeon is missing, not building gallium-radeon (r300)])
1543 if test "x$enable_gallium_radeon" = xyes; then
1544 if test "x$HAVE_LIBDRM_RADEON" = xyes; then
1545 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1546 gallium_check_st "radeon/drm" "dri-r300" "xorg-radeon"
1548 AC_MSG_ERROR([libdrm_radeon is missing, cannot build gallium-radeon (r300)])
1553 dnl Gallium Radeon r600g configuration
1555 AC_ARG_ENABLE([gallium-r600],
1556 [AS_HELP_STRING([--enable-gallium-r600],
1557 [build gallium radeon @<:@default=disabled@:>@])],
1558 [enable_gallium_r600="$enableval"],
1559 [enable_gallium_r600=auto])
1560 if test "x$enable_gallium_r600" = xyes; then
1561 if test "x$HAVE_LIBDRM_RADEON" = xyes; then
1562 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1563 gallium_check_st "r600/drm" "dri-r600"
1565 AC_MSG_ERROR([libdrm_radeon is missing, cannot build gallium-r600])
1570 dnl Gallium Nouveau configuration
1572 AC_ARG_ENABLE([gallium-nouveau],
1573 [AS_HELP_STRING([--enable-gallium-nouveau],
1574 [build gallium nouveau @<:@default=disabled@:>@])],
1575 [enable_gallium_nouveau="$enableval"],
1576 [enable_gallium_nouveau=no])
1577 if test "x$enable_gallium_nouveau" = xyes; then
1578 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50"
1579 gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau"
1583 dnl Gallium swrast configuration
1585 AC_ARG_ENABLE([gallium-swrast],
1586 [AS_HELP_STRING([--enable-gallium-swrast],
1587 [build gallium swrast @<:@default=auto@:>@])],
1588 [enable_gallium_swrast="$enableval"],
1589 [enable_gallium_swrast=auto])
1590 if test "x$enable_gallium_swrast" = xyes || test "x$enable_gallium_swrast" = xauto; then
1591 if test "x$HAVE_ST_DRI" = xyes; then
1592 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1596 dnl prepend CORE_DIRS to SRC_DIRS
1597 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
1599 dnl Restore LDFLAGS and CPPFLAGS
1600 LDFLAGS="$_SAVE_LDFLAGS"
1601 CPPFLAGS="$_SAVE_CPPFLAGS"
1603 dnl Substitute the config
1604 AC_CONFIG_FILES([configs/autoconf])
1606 dnl Replace the configs/current symlink
1607 AC_CONFIG_COMMANDS([configs],[
1608 if test -f configs/current || test -L configs/current; then
1609 rm -f configs/current
1611 ln -s autoconf configs/current
1617 dnl Output some configuration info for the user
1620 echo " prefix: $prefix"
1621 echo " exec_prefix: $exec_prefix"
1622 echo " libdir: $libdir"
1623 echo " includedir: $includedir"
1627 echo " Driver: $mesa_driver"
1628 if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
1629 echo " OSMesa: lib$OSMESA_LIB"
1633 if test "$mesa_driver" = dri; then
1634 # cleanup the drivers var
1635 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1636 if test "x$DRI_DIRS" = x; then
1637 echo " DRI drivers: no"
1639 echo " DRI drivers: $dri_dirs"
1641 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
1643 echo " Use XCB: $enable_xcb"
1646 if test "x$MESA_LLVM" = x1; then
1648 echo " llvm-config: $LLVM_CONFIG"
1649 echo " llvm-version: $LLVM_VERSION"
1655 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
1656 echo " Gallium: yes"
1657 echo " Gallium dirs: $GALLIUM_DIRS"
1658 echo " Target dirs: $GALLIUM_TARGET_DIRS"
1659 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
1660 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
1661 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
1662 if test "x$HAVE_ST_EGL" = xyes; then
1663 echo " EGL client APIs: $EGL_CLIENT_APIS"
1671 echo " Shared libs: $enable_shared"
1672 echo " Static libs: $enable_static"
1673 if test "$enable_egl" = yes; then
1674 echo " EGL: $EGL_DRIVERS_DIRS"
1675 echo " EGL platforms: $EGL_PLATFORMS"
1679 echo " GLU: $enable_glu"
1680 echo " GLw: $enable_glw (Motif: $enable_motif)"
1681 echo " glut: $enable_glut"
1683 dnl Compiler options
1684 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
1685 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1686 $SED 's/^ *//;s/ */ /;s/ *$//'`
1687 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1688 $SED 's/^ *//;s/ */ /;s/ *$//'`
1689 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1691 echo " CFLAGS: $cflags"
1692 echo " CXXFLAGS: $cxxflags"
1693 echo " Macros: $defines"
1696 echo " Run '${MAKE-make}' to build Mesa"