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 dnl Our fallback install-sh is a symlink to minstall. Use the existing
37 dnl configuration in that case.
39 test "x$INSTALL" = "x$ac_install_sh" && INSTALL='$(MINSTALL)'
41 dnl We need a POSIX shell for parts of the build. Assume we have one
45 # Solaris /bin/sh is too old/non-POSIX compliant
46 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
51 dnl clang is mostly GCC-compatible, but its version is much lower,
52 dnl so we have to check for it.
53 AC_MSG_CHECKING([if compiling with clang])
56 [AC_LANG_PROGRAM([], [[
61 [CLANG=yes], [CLANG=no])
63 AC_MSG_RESULT([$CLANG])
65 dnl If we're using GCC, make sure that it is at least version 3.3.0. Older
66 dnl versions are explictly not supported.
67 if test "x$GCC" = xyes -a "x$CLANG" = xno; then
68 AC_MSG_CHECKING([whether gcc version is sufficient])
72 GCC_VERSION=`$CC -dumpversion`
73 if test $? -eq 0; then
74 major=`echo $GCC_VERSION | cut -d. -f1`
75 minor=`echo $GCC_VERSION | cut -d. -f1`
78 if test $major -lt 3 -o $major -eq 3 -a $minor -lt 3 ; then
80 AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.])
87 MKDEP_OPTIONS=-fdepend
88 dnl Ask gcc where it's keeping its secret headers
89 if test "x$GCC" = xyes; then
90 for dir in include include-fixed; do
91 GCC_INCLUDES=`$CC -print-file-name=$dir`
92 if test "x$GCC_INCLUDES" != x && \
93 test "$GCC_INCLUDES" != "$dir" && \
94 test -d "$GCC_INCLUDES"; then
95 MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
99 AC_SUBST([MKDEP_OPTIONS])
101 dnl Make sure the pkg-config macros are defined
102 m4_ifndef([PKG_PROG_PKG_CONFIG],
103 [m4_fatal([Could not locate the pkg-config autoconf macros.
104 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
105 are in a different location, try setting the environment variable
106 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
107 PKG_PROG_PKG_CONFIG()
109 dnl LIB_DIR - library basename
110 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
113 dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
114 _SAVE_LDFLAGS="$LDFLAGS"
115 AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker])
116 AC_SUBST([EXTRA_LIB_PATH])
118 dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
119 _SAVE_CPPFLAGS="$CPPFLAGS"
120 AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers])
121 AC_SUBST([X11_INCLUDES])
128 DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS"
131 DEFINES="$DEFINES -DPTHREADS -DSVR4"
134 DEFINES="$DEFINES -DPTHREADS"
138 dnl Add flags for gcc and g++
139 if test "x$GCC" = xyes; then
140 CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99"
141 if test "x$CLANG" = "xno"; then
142 CFLAGS="$CFLAGS -ffast-math"
145 # Enable -fvisibility=hidden if using a gcc that supports it
146 save_CFLAGS="$CFLAGS"
147 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
148 CFLAGS="$CFLAGS -fvisibility=hidden"
149 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
150 [CFLAGS="$save_CFLAGS" ; AC_MSG_RESULT([no])]);
152 # Work around aliasing bugs - developers should comment this out
153 CFLAGS="$CFLAGS -fno-strict-aliasing"
155 if test "x$GXX" = xyes; then
156 CXXFLAGS="$CXXFLAGS -Wall"
158 # Work around aliasing bugs - developers should comment this out
159 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
162 dnl These should be unnecessary, but let the user set them if they want
163 AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
164 Default is to use CFLAGS.])
165 AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
166 compiler. Default is to use CFLAGS.])
167 AC_SUBST([OPT_FLAGS])
168 AC_SUBST([ARCH_FLAGS])
171 dnl Hacks to enable 32 or 64 bit build
173 AC_ARG_ENABLE([32-bit],
174 [AS_HELP_STRING([--enable-32-bit],
175 [build 32-bit libraries @<:@default=auto@:>@])],
176 [enable_32bit="$enableval"],
179 if test "x$enable_32bit" = xyes; then
180 if test "x$GCC" = xyes; then
181 CFLAGS="$CFLAGS -m32"
182 ARCH_FLAGS="$ARCH_FLAGS -m32"
184 if test "x$GXX" = xyes; then
185 CXXFLAGS="$CXXFLAGS -m32"
188 AC_ARG_ENABLE([64-bit],
189 [AS_HELP_STRING([--enable-64-bit],
190 [build 64-bit libraries @<:@default=auto@:>@])],
191 [enable_64bit="$enableval"],
194 if test "x$enable_64bit" = xyes; then
195 if test "x$GCC" = xyes; then
196 CFLAGS="$CFLAGS -m64"
198 if test "x$GXX" = xyes; then
199 CXXFLAGS="$CXXFLAGS -m64"
204 dnl shared/static libraries, mimic libtool options
206 AC_ARG_ENABLE([static],
207 [AS_HELP_STRING([--enable-static],
208 [build static libraries @<:@default=disabled@:>@])],
209 [enable_static="$enableval"],
212 case "x$enable_static" in
214 x ) enable_static=no ;;
216 AC_MSG_ERROR([Static library option '$enable_static' is not a valid])
219 AC_ARG_ENABLE([shared],
220 [AS_HELP_STRING([--disable-shared],
221 [build shared libraries @<:@default=enabled@:>@])],
222 [enable_shared="$enableval"],
225 case "x$enable_shared" in
227 x ) enable_shared=yes ;;
229 AC_MSG_ERROR([Shared library option '$enable_shared' is not a valid])
233 dnl Can't have static and shared libraries, default to static if user
234 dnl explicitly requested. If both disabled, set to static since shared
235 dnl was explicitly requirested.
236 case "x$enable_static$enable_shared" in
238 AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
242 AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
250 AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
251 if test "$enable_static" = yes; then
252 MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
254 AC_SUBST([MKLIB_OPTIONS])
257 dnl other compiler options
259 AC_ARG_ENABLE([debug],
260 [AS_HELP_STRING([--enable-debug],
261 [use debug compiler flags and macros @<:@default=disabled@:>@])],
262 [enable_debug="$enableval"],
265 if test "x$enable_debug" = xyes; then
266 DEFINES="$DEFINES -DDEBUG"
267 if test "x$GCC" = xyes; then
270 if test "x$GXX" = xyes; then
271 CXXFLAGS="$CXXFLAGS -g"
278 LIB_PREFIX_GLOB='lib'
279 LIB_VERSION_SEPARATOR='.'
280 if test "$enable_static" = yes; then
285 LIB_EXTENSION='dylib' ;;
287 dnl prefix can be 'cyg' or 'lib'
288 LIB_PREFIX_GLOB='???'
289 LIB_VERSION_SEPARATOR='-'
290 LIB_EXTENSION='dll' ;;
294 LIB_EXTENSION='so' ;;
298 GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
299 GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
300 GLUT_LIB_NAME='lib$(GLUT_LIB).'${LIB_EXTENSION}
301 GLW_LIB_NAME='lib$(GLW_LIB).'${LIB_EXTENSION}
302 OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
303 EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
304 GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
305 GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION}
306 VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION}
308 GL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
309 GLU_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLU_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
310 GLUT_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLUT_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
311 GLW_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLW_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
312 OSMESA_LIB_GLOB=${LIB_PREFIX_GLOB}'$(OSMESA_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
313 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
314 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
315 GLESv1_CM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv1_CM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
316 GLESv2_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv2_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
317 VG_LIB_GLOB=${LIB_PREFIX_GLOB}'$(VG_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
319 AC_SUBST([GL_LIB_NAME])
320 AC_SUBST([GLU_LIB_NAME])
321 AC_SUBST([GLUT_LIB_NAME])
322 AC_SUBST([GLW_LIB_NAME])
323 AC_SUBST([OSMESA_LIB_NAME])
324 AC_SUBST([EGL_LIB_NAME])
325 AC_SUBST([GLESv1_CM_LIB_NAME])
326 AC_SUBST([GLESv2_LIB_NAME])
327 AC_SUBST([VG_LIB_NAME])
329 AC_SUBST([GL_LIB_GLOB])
330 AC_SUBST([GLU_LIB_GLOB])
331 AC_SUBST([GLUT_LIB_GLOB])
332 AC_SUBST([GLW_LIB_GLOB])
333 AC_SUBST([OSMESA_LIB_GLOB])
334 AC_SUBST([EGL_LIB_GLOB])
335 AC_SUBST([GLESv1_CM_LIB_GLOB])
336 AC_SUBST([GLESv2_LIB_GLOB])
337 AC_SUBST([VG_LIB_GLOB])
340 dnl Arch/platform-specific settings
343 [AS_HELP_STRING([--disable-asm],
344 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
345 [enable_asm="$enableval"],
352 AC_MSG_CHECKING([whether to enable assembly])
353 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
354 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
355 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
359 AC_MSG_RESULT([no, cross compiling])
363 # check for supported arches
364 if test "x$enable_asm" = xyes; then
368 linux* | *freebsd* | dragonfly*)
369 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
375 linux* | *freebsd* | dragonfly*)
376 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
398 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
399 MESA_ASM_SOURCES='$(X86_SOURCES)'
400 GLAPI_ASM_SOURCES='$(X86_API)'
401 AC_MSG_RESULT([yes, x86])
404 ASM_FLAGS="-DUSE_X86_64_ASM"
405 MESA_ASM_SOURCES='$(X86-64_SOURCES)'
406 GLAPI_ASM_SOURCES='$(X86-64_API)'
407 AC_MSG_RESULT([yes, x86_64])
410 ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM"
411 MESA_ASM_SOURCES='$(PPC_SOURCES)'
412 AC_MSG_RESULT([yes, ppc])
415 ASM_FLAGS="-DUSE_SPARC_ASM"
416 MESA_ASM_SOURCES='$(SPARC_SOURCES)'
417 GLAPI_ASM_SOURCES='$(SPARC_API)'
418 AC_MSG_RESULT([yes, sparc])
421 AC_MSG_RESULT([no, platform not supported])
425 AC_SUBST([ASM_FLAGS])
426 AC_SUBST([MESA_ASM_SOURCES])
427 AC_SUBST([GLAPI_ASM_SOURCES])
432 dnl Check to see if dlopen is in default libraries (like Solaris, which
433 dnl has it in libc), or if libdl is needed to get it.
434 AC_CHECK_FUNC([dlopen], [],
435 [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
436 AC_SUBST([DLOPEN_LIBS])
438 dnl See if posix_memalign is available
439 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
441 dnl SELinux awareness.
442 AC_ARG_ENABLE([selinux],
443 [AS_HELP_STRING([--enable-selinux],
444 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
445 [MESA_SELINUX="$enableval"],
447 if test "x$enable_selinux" = "xyes"; then
448 AC_CHECK_HEADER([selinux/selinux.h],[],
449 [AC_MSG_ERROR([SELinux headers not found])])
450 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
451 [AC_MSG_ERROR([SELinux library not found])])
452 SELINUX_LIBS="-lselinux"
453 DEFINES="$DEFINES -DMESA_SELINUX"
457 dnl Driver configuration. Options are xlib, dri and osmesa right now.
458 dnl More later: fbdev, ...
460 default_driver="xlib"
465 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
468 *freebsd* | dragonfly*)
470 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
475 AC_ARG_WITH([driver],
476 [AS_HELP_STRING([--with-driver=DRIVER],
477 [driver for Mesa: xlib,dri,osmesa @<:@default=dri when available, or xlib@:>@])],
478 [mesa_driver="$withval"],
479 [mesa_driver="$default_driver"])
480 dnl Check for valid option
481 case "x$mesa_driver" in
485 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
489 PKG_CHECK_MODULES([TALLOC], [talloc])
490 AC_SUBST([TALLOC_LIBS])
491 AC_SUBST([TALLOC_CFLAGS])
494 dnl Driver specific build directories
497 dnl this variable will be prepended to SRC_DIRS and is not exported
498 CORE_DIRS="mapi/glapi glsl mesa"
502 GALLIUM_DIRS="auxiliary drivers state_trackers"
503 GALLIUM_TARGET_DIRS=""
504 GALLIUM_WINSYS_DIRS="sw"
505 GALLIUM_DRIVERS_DIRS="softpipe failover galahad trace rbug identity"
506 GALLIUM_STATE_TRACKERS_DIRS=""
508 case "$mesa_driver" in
511 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
512 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
515 SRC_DIRS="$SRC_DIRS glx"
517 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib sw/dri"
525 AC_SUBST([DRIVER_DIRS])
526 AC_SUBST([GALLIUM_DIRS])
527 AC_SUBST([GALLIUM_TARGET_DIRS])
528 AC_SUBST([GALLIUM_WINSYS_DIRS])
529 AC_SUBST([GALLIUM_DRIVERS_DIRS])
530 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
531 AC_SUBST([MESA_LLVM])
534 dnl Find out if X is available. The variable have_x is set if libX11 is
535 dnl found to mimic AC_PATH_XTRA.
537 if test -n "$PKG_CONFIG"; then
538 AC_MSG_CHECKING([pkg-config files for X11 are available])
539 PKG_CHECK_EXISTS([x11],[
545 AC_MSG_RESULT([$x11_pkgconfig])
549 dnl Use the autoconf macro if no pkg-config files
550 if test "$x11_pkgconfig" = yes; then
551 PKG_CHECK_MODULES([X11], [x11])
554 test -z "$X11_CFLAGS" && X11_CFLAGS="$X_CFLAGS"
555 test -z "$X11_LIBS" && X11_LIBS="$X_LIBS -lX11"
556 AC_SUBST([X11_CFLAGS])
560 dnl Try to tell the user that the --x-* options are only used when
561 dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
562 m4_divert_once([HELP_BEGIN],
563 [These options are only used when the X libraries cannot be found by the
564 pkg-config utility.])
566 dnl We need X for xlib and dri, so bomb now if it's not found
567 case "$mesa_driver" in
569 if test "$no_x" = yes; then
570 AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver])
575 dnl XCB - this is only used for GLX right now
577 [AS_HELP_STRING([--enable-xcb],
578 [use XCB for GLX @<:@default=disabled@:>@])],
579 [enable_xcb="$enableval"],
581 if test "x$enable_xcb" = xyes; then
582 DEFINES="$DEFINES -DUSE_XCB"
588 dnl libGL configuration per driver
590 case "$mesa_driver" in
592 if test "$x11_pkgconfig" = yes; then
593 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
594 GL_PC_REQ_PRIV="x11 xext"
595 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
596 GL_LIB_DEPS="$XLIBGL_LIBS"
598 # should check these...
599 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
600 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
601 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
602 GL_PC_CFLAGS="$X11_INCLUDES"
604 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread $TALLOC_LIBS"
605 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread $TALLOC_LIBS"
607 # if static, move the external libraries to the programs
608 # and empty the libraries for libGL
609 if test "$enable_static" = yes; then
610 APP_LIB_DEPS="$APP_LIB_DEPS $GL_LIB_DEPS"
615 # DRI must be shared, I think
616 if test "$enable_static" = yes; then
617 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
621 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED])
622 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
623 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
624 GL_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED glproto >= $GLPROTO_REQUIRED"
625 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
627 # find the DRI deps for libGL
628 if test "$x11_pkgconfig" = yes; then
629 dri_modules="x11 xext xdamage xfixes"
631 # add xf86vidmode if available
632 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
633 if test "$HAVE_XF86VIDMODE" = yes ; then
634 dri_modules="$dri_modules xxf86vm"
637 # add xcb modules if necessary
638 if test "$enable_xcb" = yes; then
639 dri_modules="$dri_modules x11-xcb xcb-glx"
642 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
643 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
644 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
645 GL_LIB_DEPS="$DRIGL_LIBS"
647 # should check these...
648 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
649 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
650 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
651 GL_PC_CFLAGS="$X11_INCLUDES"
653 # XCB can only be used from pkg-config
654 if test "$enable_xcb" = yes; then
655 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
656 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
657 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
658 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
662 # need DRM libs, -lpthread, etc.
663 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
664 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
665 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
666 GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
667 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
668 GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
671 # No libGL for osmesa
675 AC_SUBST([GL_LIB_DEPS])
676 AC_SUBST([GL_PC_REQ_PRIV])
677 AC_SUBST([GL_PC_LIB_PRIV])
678 AC_SUBST([GL_PC_CFLAGS])
679 AC_SUBST([DRI_PC_REQ_PRIV])
680 AC_SUBST([GLESv1_CM_LIB_DEPS])
681 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
682 AC_SUBST([GLESv2_LIB_DEPS])
683 AC_SUBST([GLESv2_PC_LIB_PRIV])
686 AC_SUBST([HAVE_XF86VIDMODE])
691 if test "$mesa_driver" = xlib; then
692 DEFINES="$DEFINES -DUSE_XSHM"
698 AC_ARG_ENABLE([glx-tls],
699 [AS_HELP_STRING([--enable-glx-tls],
700 [enable TLS support in GLX @<:@default=disabled@:>@])],
701 [GLX_USE_TLS="$enableval"],
703 dnl Directory for DRI drivers
704 AC_ARG_WITH([dri-driverdir],
705 [AS_HELP_STRING([--with-dri-driverdir=DIR],
706 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
707 [DRI_DRIVER_INSTALL_DIR="$withval"],
708 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
709 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
710 dnl Extra search path for DRI drivers
711 AC_ARG_WITH([dri-searchpath],
712 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
713 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
714 [DRI_DRIVER_SEARCH_DIR="$withval"],
715 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
716 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
717 dnl Direct rendering or just indirect rendering
718 AC_ARG_ENABLE([driglx-direct],
719 [AS_HELP_STRING([--disable-driglx-direct],
720 [enable direct rendering in GLX and EGL for DRI @<:@default=enabled@:>@])],
721 [driglx_direct="$enableval"],
722 [driglx_direct="yes"])
723 dnl Which drivers to build - default is chosen by platform
724 AC_ARG_WITH([dri-drivers],
725 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
726 [comma delimited DRI drivers list, e.g.
727 "swrast,i965,radeon" @<:@default=auto@:>@])],
728 [with_dri_drivers="$withval"],
729 [with_dri_drivers=yes])
730 if test "x$with_dri_drivers" = x; then
734 dnl Determine which APIs to support
735 AC_ARG_ENABLE([opengl],
736 [AS_HELP_STRING([--disable-opengl],
737 [disable support for standard OpenGL API @<:@default=no@:>@])],
738 [enable_opengl="$enableval"],
740 AC_ARG_ENABLE([gles1],
741 [AS_HELP_STRING([--enable-gles1],
742 [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
743 [enable_gles1="$enableval"],
745 AC_ARG_ENABLE([gles2],
746 [AS_HELP_STRING([--enable-gles2],
747 [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
748 [enable_gles2="$enableval"],
750 AC_ARG_ENABLE([gles-overlay],
751 [AS_HELP_STRING([--enable-gles-overlay],
752 [build separate OpenGL ES only libraries @<:@default=no@:>@])],
753 [enable_gles_overlay="$enableval"],
754 [enable_gles_overlay=no])
758 if test "x$enable_opengl" = xno; then
759 API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
761 API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
763 if test "x$enable_gles1" = xyes; then
764 API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
766 if test "x$enable_gles2" = xyes; then
767 API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
769 if test "x$enable_gles_overlay" = xyes -o \
770 "x$enable_gles1" = xyes -o "x$enable_gles2" = xyes; then
771 CORE_DIRS="mapi/es1api mapi/es2api $CORE_DIRS"
772 if test "x$enable_gles_overlay" = xyes; then
776 AC_SUBST([API_DEFINES])
777 AC_SUBST([GLES_OVERLAY])
779 dnl If $with_dri_drivers is yes, directories will be added through
782 case "$with_dri_drivers" in
788 # verify the requested driver directories exist
789 dri_drivers=`IFS=', '; echo $with_dri_drivers`
790 for driver in $dri_drivers; do
791 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
792 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
794 DRI_DIRS="$dri_drivers"
798 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
799 if test "$mesa_driver" = dri; then
801 if test "x$GLX_USE_TLS" = xyes; then
802 DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS"
805 # Platform specific settings and drivers to build
808 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
809 if test "x$driglx_direct" = xyes; then
810 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
812 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
816 # sis is missing because they have not be converted to use
817 # the new interface. i810 are missing because there is no
818 # x86-64 system where they could *ever* be used.
819 if test "x$DRI_DIRS" = "xyes"; then
820 DRI_DIRS="i915 i965 mach64 mga r128 r200 r300 r600 radeon \
821 savage tdfx unichrome swrast"
825 # Build only the drivers for cards that exist on PowerPC.
826 # At some point MGA will be added, but not yet.
827 if test "x$DRI_DIRS" = "xyes"; then
828 DRI_DIRS="mach64 r128 r200 r300 r600 radeon tdfx swrast"
832 # Build only the drivers for cards that exist on sparc`
833 if test "x$DRI_DIRS" = "xyes"; then
834 DRI_DIRS="mach64 r128 r200 r300 r600 radeon swrast"
839 freebsd* | dragonfly*)
840 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
841 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
842 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
843 if test "x$driglx_direct" = xyes; then
844 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
846 if test "x$GXX" = xyes; then
847 CXXFLAGS="$CXXFLAGS -ansi -pedantic"
850 if test "x$DRI_DIRS" = "xyes"; then
851 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon tdfx \
852 unichrome savage sis swrast"
856 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
857 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
860 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
861 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
862 if test "x$driglx_direct" = xyes; then
863 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
869 if test "x$DRI_DIRS" = "xyes"; then
870 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon \
871 savage sis tdfx unichrome swrast"
874 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
880 [AS_HELP_STRING([--with-expat=DIR],
881 [expat install directory])],[
882 EXPAT_INCLUDES="-I$withval/include"
883 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
884 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
885 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
887 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
888 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
889 [AC_MSG_ERROR([Expat required for DRI.])])
891 # put all the necessary libs together
892 DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS $TALLOC_LIBS"
895 AC_SUBST([EXPAT_INCLUDES])
896 AC_SUBST([DRI_LIB_DEPS])
900 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= 2.4.21])
905 *radeon*|*r200*|*r300*|*r600*)
906 PKG_CHECK_MODULES([LIBDRM_RADEON],
907 [libdrm_radeon libdrm >= $LIBDRM_RADEON_REQUIRED],
908 HAVE_LIBDRM_RADEON=yes,
909 HAVE_LIBDRM_RADEON=no)
911 if test "$HAVE_LIBDRM_RADEON" = yes; then
912 RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS"
913 RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS
917 AC_SUBST([RADEON_CFLAGS])
918 AC_SUBST([RADEON_LDFLAGS])
922 dnl OSMesa configuration
924 if test "$mesa_driver" = xlib; then
925 default_gl_osmesa=yes
929 AC_ARG_ENABLE([gl-osmesa],
930 [AS_HELP_STRING([--enable-gl-osmesa],
931 [enable OSMesa with libGL @<:@default=enabled for xlib driver@:>@])],
932 [gl_osmesa="$enableval"],
933 [gl_osmesa="$default_gl_osmesa"])
934 if test "x$gl_osmesa" = xyes; then
935 if test "$mesa_driver" = osmesa; then
936 AC_MSG_ERROR([libGL is not available for OSMesa driver])
938 DRIVER_DIRS="$DRIVER_DIRS osmesa"
942 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
943 AC_ARG_WITH([osmesa-bits],
944 [AS_HELP_STRING([--with-osmesa-bits=BITS],
945 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
946 [osmesa_bits="$withval"],
948 if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
949 AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
952 case "x$osmesa_bits" in
957 OSMESA_LIB="OSMesa$osmesa_bits"
958 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
961 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
964 AC_SUBST([OSMESA_LIB])
966 case "$DRIVER_DIRS" in
968 # only link libraries with osmesa if shared
969 if test "$enable_static" = no; then
970 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS $TALLOC_LIBS"
975 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS $TALLOC_LIBS"
978 AC_SUBST([OSMESA_LIB_DEPS])
979 AC_SUBST([OSMESA_MESA_DEPS])
980 AC_SUBST([OSMESA_PC_REQ])
981 AC_SUBST([OSMESA_PC_LIB_PRIV])
984 dnl EGL configuration
987 [AS_HELP_STRING([--disable-egl],
988 [disable EGL library @<:@default=enabled@:>@])],
989 [enable_egl="$enableval"],
991 if test "x$enable_egl" = xyes; then
992 SRC_DIRS="$SRC_DIRS egl"
993 EGL_LIB_DEPS="$DLOPEN_LIBS -lpthread"
995 if test "$enable_static" != yes; then
996 # build egl_glx when libGL is built
997 if test "$mesa_driver" != osmesa; then
998 EGL_DRIVERS_DIRS="glx"
1001 if test "$mesa_driver" = dri; then
1002 # build egl_dri2 when xcb-dri2 is available
1003 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes],
1004 [have_xcb_dri2=yes],[have_xcb_dri2=no])
1005 PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1006 [have_libudev=yes],[have_libudev=no])
1008 if test "$have_xcb_dri2" = yes; then
1009 EGL_DRIVER_DRI2=dri2
1010 DEFINES="$DEFINES -DHAVE_XCB_DRI2"
1011 if test "$have_libudev" = yes; then
1012 DEFINES="$DEFINES -DHAVE_LIBUDEV"
1017 EGL_DRIVERS_DIRS="$EGL_DRIVERS_DIRS $EGL_DRIVER_DRI2"
1020 AC_SUBST([EGL_LIB_DEPS])
1021 AC_SUBST([EGL_DRIVERS_DIRS])
1024 dnl GLU configuration
1026 AC_ARG_ENABLE([glu],
1027 [AS_HELP_STRING([--disable-glu],
1028 [enable OpenGL Utility library @<:@default=enabled@:>@])],
1029 [enable_glu="$enableval"],
1031 if test "x$enable_glu" = xyes; then
1032 SRC_DIRS="$SRC_DIRS glu"
1034 case "$mesa_driver" in
1036 # Link libGLU to libOSMesa instead of libGL
1039 if test "$enable_static" = no; then
1040 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
1046 # If static, empty GLU_LIB_DEPS and add libs for programs to link
1048 GLU_PC_LIB_PRIV="-lm"
1049 if test "$enable_static" = no; then
1051 GLU_MESA_DEPS='-l$(GL_LIB)'
1055 APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
1060 if test "$enable_static" = no; then
1061 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
1063 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
1064 AC_SUBST([GLU_LIB_DEPS])
1065 AC_SUBST([GLU_MESA_DEPS])
1066 AC_SUBST([GLU_PC_REQ])
1067 AC_SUBST([GLU_PC_REQ_PRIV])
1068 AC_SUBST([GLU_PC_LIB_PRIV])
1069 AC_SUBST([GLU_PC_CFLAGS])
1072 dnl GLw configuration
1074 AC_ARG_ENABLE([glw],
1075 [AS_HELP_STRING([--disable-glw],
1076 [enable Xt/Motif widget library @<:@default=enabled@:>@])],
1077 [enable_glw="$enableval"],
1079 dnl Don't build GLw on osmesa
1080 if test "x$enable_glw" = xyes && test "$mesa_driver" = osmesa; then
1081 AC_MSG_WARN([Disabling GLw since the driver is OSMesa])
1084 AC_ARG_ENABLE([motif],
1085 [AS_HELP_STRING([--enable-motif],
1086 [use Motif widgets in GLw @<:@default=disabled@:>@])],
1087 [enable_motif="$enableval"],
1090 if test "x$enable_glw" = xyes; then
1091 SRC_DIRS="$SRC_DIRS glw"
1092 if test "$x11_pkgconfig" = yes; then
1093 PKG_CHECK_MODULES([GLW],[x11 xt])
1094 GLW_PC_REQ_PRIV="x11 xt"
1095 GLW_LIB_DEPS="$GLW_LIBS"
1097 # should check these...
1098 GLW_LIB_DEPS="$X_LIBS -lXt -lX11"
1099 GLW_PC_LIB_PRIV="$GLW_LIB_DEPS"
1100 GLW_PC_CFLAGS="$X11_INCLUDES"
1103 GLW_SOURCES="GLwDrawA.c"
1105 if test "x$enable_motif" = xyes; then
1106 GLW_SOURCES="$GLW_SOURCES GLwMDrawA.c"
1107 AC_PATH_PROG([MOTIF_CONFIG], [motif-config], [no])
1108 if test "x$MOTIF_CONFIG" != xno; then
1109 MOTIF_CFLAGS=`$MOTIF_CONFIG --cflags`
1110 MOTIF_LIBS=`$MOTIF_CONFIG --libs`
1112 AC_CHECK_HEADER([Xm/PrimitiveP.h], [],
1113 [AC_MSG_ERROR([Can't locate Motif headers])])
1114 AC_CHECK_LIB([Xm], [XmGetPixmap], [MOTIF_LIBS="-lXm"],
1115 [AC_MSG_ERROR([Can't locate Motif Xm library])])
1117 # MOTIF_LIBS is prepended to GLW_LIB_DEPS since Xm needs Xt/X11
1118 GLW_LIB_DEPS="$MOTIF_LIBS $GLW_LIB_DEPS"
1119 GLW_PC_LIB_PRIV="$MOTIF_LIBS $GLW_PC_LIB_PRIV"
1120 GLW_PC_CFLAGS="$MOTIF_CFLAGS $GLW_PC_CFLAGS"
1123 # If static, empty GLW_LIB_DEPS and add libs for programs to link
1124 GLW_PC_LIB_PRIV="$GLW_PC_LIB_PRIV"
1125 if test "$enable_static" = no; then
1126 GLW_MESA_DEPS='-l$(GL_LIB)'
1127 GLW_LIB_DEPS="$GLW_LIB_DEPS"
1129 APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
1134 AC_SUBST([GLW_LIB_DEPS])
1135 AC_SUBST([GLW_MESA_DEPS])
1136 AC_SUBST([GLW_SOURCES])
1137 AC_SUBST([MOTIF_CFLAGS])
1138 AC_SUBST([GLW_PC_REQ_PRIV])
1139 AC_SUBST([GLW_PC_LIB_PRIV])
1140 AC_SUBST([GLW_PC_CFLAGS])
1143 dnl GLUT configuration
1145 if test -f "$srcdir/include/GL/glut.h"; then
1150 AC_ARG_ENABLE([glut],
1151 [AS_HELP_STRING([--disable-glut],
1152 [enable GLUT library @<:@default=enabled if source available@:>@])],
1153 [enable_glut="$enableval"],
1154 [enable_glut="$default_glut"])
1156 dnl Can't build glut if GLU not available
1157 if test "x$enable_glu$enable_glut" = xnoyes; then
1158 AC_MSG_WARN([Disabling glut since GLU is disabled])
1161 dnl Don't build glut on osmesa
1162 if test "x$enable_glut" = xyes && test "$mesa_driver" = osmesa; then
1163 AC_MSG_WARN([Disabling glut since the driver is OSMesa])
1167 if test "x$enable_glut" = xyes; then
1168 SRC_DIRS="$SRC_DIRS glut/glx"
1169 if test "$x11_pkgconfig" = yes; then
1170 PKG_CHECK_MODULES([GLUT],[x11 xmu xi])
1171 GLUT_PC_REQ_PRIV="x11 xmu xi"
1172 GLUT_LIB_DEPS="$GLUT_LIBS"
1174 # should check these...
1175 GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
1176 GLUT_PC_LIB_PRIV="$GLUT_LIB_DEPS"
1177 GLUT_PC_CFLAGS="$X11_INCLUDES"
1179 if test "x$GCC" = xyes; then
1180 GLUT_CFLAGS="$GLUT_CFLAGS -fexceptions"
1182 GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
1183 GLUT_PC_LIB_PRIV="$GLUT_PC_LIB_PRIV -lm"
1185 # If static, empty GLUT_LIB_DEPS and add libs for programs to link
1186 if test "$enable_static" = no; then
1187 GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
1189 APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
1194 AC_SUBST([GLUT_LIB_DEPS])
1195 AC_SUBST([GLUT_MESA_DEPS])
1196 AC_SUBST([GLUT_CFLAGS])
1197 AC_SUBST([GLUT_PC_REQ_PRIV])
1198 AC_SUBST([GLUT_PC_LIB_PRIV])
1199 AC_SUBST([GLUT_PC_CFLAGS])
1202 dnl Program library dependencies
1203 dnl Only libm is added here if necessary as the libraries should
1204 dnl be pulled in by the linker
1206 if test "x$APP_LIB_DEPS" = x; then
1209 APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm"
1212 APP_LIB_DEPS="-lX11"
1219 AC_SUBST([APP_LIB_DEPS])
1220 AC_SUBST([PROGRAM_DIRS])
1223 dnl Gallium configuration
1225 AC_ARG_ENABLE([gallium],
1226 [AS_HELP_STRING([--disable-gallium],
1227 [build gallium @<:@default=enabled@:>@])],
1228 [enable_gallium="$enableval"],
1229 [enable_gallium=yes])
1230 if test "x$enable_gallium" = xyes; then
1231 SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
1232 AC_CHECK_HEADER([udis86.h], [HAS_UDIS86="yes"],
1234 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1237 AC_SUBST([LLVM_CFLAGS])
1238 AC_SUBST([LLVM_LIBS])
1239 AC_SUBST([LLVM_LDFLAGS])
1240 AC_SUBST([LLVM_VERSION])
1243 EGL_CLIENT_APIS='$(GL_LIB)'
1244 if test "x$enable_gles_overlay" = xyes; then
1245 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GLESv1_CM_LIB) $(GLESv2_LIB)'
1249 dnl Gallium state trackers configuration
1251 AC_ARG_WITH([state-trackers],
1252 [AS_HELP_STRING([--with-state-trackers@<:@=DIRS...@:>@],
1253 [comma delimited state_trackers list, e.g.
1254 "egl,glx" @<:@default=auto@:>@])],
1255 [with_state_trackers="$withval"],
1256 [with_state_trackers=yes])
1258 case "$with_state_trackers" in
1260 GALLIUM_STATE_TRACKERS_DIRS=""
1263 # look at what else is built
1264 case "$mesa_driver" in
1266 GALLIUM_STATE_TRACKERS_DIRS=glx
1269 GALLIUM_STATE_TRACKERS_DIRS="dri"
1271 if test "x$enable_egl" = xyes; then
1272 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS egl"
1275 # Have only tested st/xorg on 1.6.0 servers
1276 PKG_CHECK_MODULES(XORG, [xorg-server >= 1.6.0 libdrm >= $LIBDRM_XORG_REQUIRED libkms >= $LIBKMS_XORG_REQUIRED],
1277 HAVE_ST_XORG="yes"; GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg",
1283 # verify the requested state tracker exist
1285 _state_trackers=`IFS=', '; echo $with_state_trackers`
1286 for tracker in $_state_trackers; do
1289 if test "x$mesa_driver" != xdri; then
1290 AC_MSG_ERROR([cannot build dri state tracker without mesa driver set to dri])
1295 if test "x$enable_egl" != xyes; then
1296 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1301 PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1302 PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1303 PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1307 AC_MSG_WARN([state tracker 'es' has been replaced by --enable-gles-overlay])
1309 if test "x$enable_gles_overlay" != xyes; then
1310 if test "x$enable_gles1" != xyes -a "x$enable_gles2" != xyes; then
1311 CORE_DIRS="mapi/es1api mapi/es2api $CORE_DIRS"
1314 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GLESv1_CM_LIB) $(GLESv2_LIB)'
1319 CORE_DIRS="$CORE_DIRS mapi/vgapi"
1320 VG_LIB_DEPS="$VG_LIB_DEPS -lpthread"
1321 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1325 if test -n "$tracker"; then
1326 test -d "$srcdir/src/gallium/state_trackers/$tracker" || \
1327 AC_MSG_ERROR([state tracker '$tracker' doesn't exist])
1328 if test -n "$state_trackers"; then
1329 state_trackers="$state_trackers $tracker"
1331 state_trackers="$tracker"
1335 GALLIUM_STATE_TRACKERS_DIRS="$state_trackers"
1339 AC_SUBST([VG_LIB_DEPS])
1340 AC_SUBST([EGL_CLIENT_APIS])
1342 if test "x$HAVE_ST_EGL" = xyes; then
1343 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl"
1344 # define GLX_DIRECT_RENDERING even when the driver is not dri
1345 if test "x$mesa_driver" != xdri -a "x$driglx_direct" = xyes; then
1346 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1350 if test "x$HAVE_ST_XORG" = xyes; then
1351 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1352 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1353 HAVE_XEXTPROTO_71="no")
1356 AC_ARG_WITH([egl-platforms],
1357 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1358 [comma delimited native platforms libEGL supports, e.g.
1359 "x11,kms" @<:@default=auto@:>@])],
1360 [with_egl_platforms="$withval"],
1361 [with_egl_platforms=yes])
1362 AC_ARG_WITH([egl-displays],
1363 [AS_HELP_STRING([--with-egl-displays@<:@=DIRS...@:>@],
1364 [DEPRECATED. Use --with-egl-platforms instead])],
1365 [with_egl_platforms="$withval"])
1368 case "$with_egl_platforms" in
1370 if test "x$enable_egl" = xyes && test "x$mesa_driver" != xosmesa; then
1375 if test "x$enable_egl" != xyes; then
1376 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1378 # verify the requested driver directories exist
1379 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1380 for plat in $egl_platforms; do
1381 test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \
1382 AC_MSG_ERROR([EGL platform '$plat' does't exist])
1383 if test "$plat" = "fbdev"; then
1384 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev"
1387 EGL_PLATFORMS="$egl_platforms"
1390 AC_SUBST([EGL_PLATFORMS])
1392 AC_ARG_WITH([egl-driver-dir],
1393 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1394 [directory for EGL drivers [[default=${libdir}/egl]]])],
1395 [EGL_DRIVER_INSTALL_DIR="$withval"],
1396 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1397 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1399 AC_ARG_WITH([xorg-driver-dir],
1400 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1401 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1402 [XORG_DRIVER_INSTALL_DIR="$withval"],
1403 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1404 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1406 AC_ARG_WITH([max-width],
1407 [AS_HELP_STRING([--with-max-width=N],
1408 [Maximum framebuffer width (4096)])],
1409 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1410 AS_IF([test "${withval}" -gt "4096"],
1411 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1413 AC_ARG_WITH([max-height],
1414 [AS_HELP_STRING([--with-max-height=N],
1415 [Maximum framebuffer height (4096)])],
1416 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1417 AS_IF([test "${withval}" -gt "4096"],
1418 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1424 AC_ARG_ENABLE([gallium-llvm],
1425 [AS_HELP_STRING([--enable-gallium-llvm],
1426 [build gallium LLVM support @<:@default=disabled@:>@])],
1427 [enable_gallium_llvm="$enableval"],
1428 [enable_gallium_llvm=auto])
1429 if test "x$enable_gallium_llvm" = xyes; then
1430 if test "x$LLVM_CONFIG" != xno; then
1431 LLVM_VERSION=`$LLVM_CONFIG --version`
1432 LLVM_CFLAGS=`$LLVM_CONFIG --cflags`
1433 LLVM_LIBS="`$LLVM_CONFIG --libs jit interpreter nativecodegen bitwriter` -lstdc++"
1435 if test "x$HAS_UDIS86" != xno; then
1436 LLVM_LIBS="$LLVM_LIBS -ludis86"
1437 DEFINES="$DEFINES -DHAVE_UDIS86"
1439 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1440 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1441 DEFINES="$DEFINES -DGALLIUM_LLVMPIPE -D__STDC_CONSTANT_MACROS"
1451 dnl Gallium helper functions
1453 gallium_check_st() {
1454 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes; then
1455 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1457 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1458 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1460 if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
1461 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1467 dnl Gallium SVGA configuration
1469 AC_ARG_ENABLE([gallium-svga],
1470 [AS_HELP_STRING([--enable-gallium-svga],
1471 [build gallium SVGA @<:@default=disabled@:>@])],
1472 [enable_gallium_svga="$enableval"],
1473 [enable_gallium_svga=auto])
1474 if test "x$enable_gallium_svga" = xyes; then
1475 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1476 gallium_check_st "svga/drm" "dri-vmwgfx" "xorg-vmwgfx"
1477 elif test "x$enable_gallium_svga" = xauto; then
1478 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1482 dnl Gallium i915 configuration
1484 AC_ARG_ENABLE([gallium-i915],
1485 [AS_HELP_STRING([--enable-gallium-i915],
1486 [build gallium i915 @<:@default=disabled@:>@])],
1487 [enable_gallium_i915="$enableval"],
1488 [enable_gallium_i915=auto])
1489 if test "x$enable_gallium_i915" = xyes; then
1490 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1491 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915"
1492 gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1493 elif test "x$enable_gallium_i915" = xauto; then
1494 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1495 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915"
1499 dnl Gallium i965 configuration
1501 AC_ARG_ENABLE([gallium-i965],
1502 [AS_HELP_STRING([--enable-gallium-i965],
1503 [build gallium i965 @<:@default=disabled@:>@])],
1504 [enable_gallium_i965="$enableval"],
1505 [enable_gallium_i965=auto])
1506 if test "x$enable_gallium_i965" = xyes; then
1507 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i965"
1508 gallium_check_st "i965/drm" "dri-i965" "xorg-i965"
1509 elif test "x$enable_gallium_i965" = xauto; then
1510 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i965"
1514 dnl Gallium Radeon configuration
1516 AC_ARG_ENABLE([gallium-radeon],
1517 [AS_HELP_STRING([--enable-gallium-radeon],
1518 [build gallium radeon @<:@default=disabled@:>@])],
1519 [enable_gallium_radeon="$enableval"],
1520 [enable_gallium_radeon=auto])
1521 if test "x$enable_gallium_radeon" = xyes; then
1522 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1523 gallium_check_st "radeon/drm" "dri-r300" "xorg-radeon"
1524 elif test "x$enable_gallium_radeon" = xauto; then
1525 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1529 dnl Gallium Radeon r600g configuration
1531 AC_ARG_ENABLE([gallium-r600],
1532 [AS_HELP_STRING([--enable-gallium-r600],
1533 [build gallium radeon @<:@default=disabled@:>@])],
1534 [enable_gallium_r600="$enableval"],
1535 [enable_gallium_r600=auto])
1536 if test "x$enable_gallium_r600" = xyes; then
1537 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1538 gallium_check_st "r600/drm" "dri-r600"
1542 dnl Gallium Nouveau configuration
1544 AC_ARG_ENABLE([gallium-nouveau],
1545 [AS_HELP_STRING([--enable-gallium-nouveau],
1546 [build gallium nouveau @<:@default=disabled@:>@])],
1547 [enable_gallium_nouveau="$enableval"],
1548 [enable_gallium_nouveau=no])
1549 if test "x$enable_gallium_nouveau" = xyes; then
1550 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50"
1551 gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau"
1555 dnl Gallium swrast configuration
1557 AC_ARG_ENABLE([gallium-swrast],
1558 [AS_HELP_STRING([--enable-gallium-swrast],
1559 [build gallium swrast @<:@default=auto@:>@])],
1560 [enable_gallium_swrast="$enableval"],
1561 [enable_gallium_swrast=auto])
1562 if test "x$enable_gallium_swrast" = xyes || test "x$enable_gallium_swrast" = xauto; then
1563 if test "x$HAVE_ST_DRI" = xyes; then
1564 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1568 dnl prepend CORE_DIRS to SRC_DIRS
1569 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
1571 dnl Restore LDFLAGS and CPPFLAGS
1572 LDFLAGS="$_SAVE_LDFLAGS"
1573 CPPFLAGS="$_SAVE_CPPFLAGS"
1575 dnl Substitute the config
1576 AC_CONFIG_FILES([configs/autoconf])
1578 dnl Replace the configs/current symlink
1579 AC_CONFIG_COMMANDS([configs],[
1580 if test -f configs/current || test -L configs/current; then
1581 rm -f configs/current
1583 ln -s autoconf configs/current
1589 dnl Output some configuration info for the user
1592 echo " prefix: $prefix"
1593 echo " exec_prefix: $exec_prefix"
1594 echo " libdir: $libdir"
1595 echo " includedir: $includedir"
1599 echo " Driver: $mesa_driver"
1600 if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
1601 echo " OSMesa: lib$OSMESA_LIB"
1605 if test "$mesa_driver" = dri; then
1606 # cleanup the drivers var
1607 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1608 if test "x$DRI_DIRS" = x; then
1609 echo " DRI drivers: no"
1611 echo " DRI drivers: $dri_dirs"
1613 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
1615 echo " Use XCB: $enable_xcb"
1618 if test "x$MESA_LLVM" = x1; then
1620 echo " llvm-config: $LLVM_CONFIG"
1621 echo " llvm-version: $LLVM_VERSION"
1627 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
1628 echo " Gallium: yes"
1629 echo " Gallium dirs: $GALLIUM_DIRS"
1630 echo " Target dirs: $GALLIUM_TARGET_DIRS"
1631 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
1632 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
1633 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
1634 if test "x$HAVE_ST_EGL" = xyes; then
1635 echo " EGL client APIs: $EGL_CLIENT_APIS"
1643 echo " Shared libs: $enable_shared"
1644 echo " Static libs: $enable_static"
1645 if test "$enable_egl" = yes; then
1646 echo " EGL: $EGL_DRIVERS_DIRS"
1647 echo " EGL platforms: $EGL_PLATFORMS"
1651 echo " GLU: $enable_glu"
1652 echo " GLw: $enable_glw (Motif: $enable_motif)"
1653 echo " glut: $enable_glut"
1655 dnl Compiler options
1656 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
1657 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1658 $SED 's/^ *//;s/ */ /;s/ *$//'`
1659 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1660 $SED 's/^ *//;s/ */ /;s/ *$//'`
1661 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1663 echo " CFLAGS: $cflags"
1664 echo " CXXFLAGS: $cxxflags"
1665 echo " Macros: $defines"
1668 echo " Run '${MAKE-make}' to build Mesa"