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 # add xcb modules if necessary
630 dri_modules="x11 xext xxf86vm xdamage xfixes"
631 if test "$enable_xcb" = yes; then
632 dri_modules="$dri_modules x11-xcb xcb-glx"
635 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
636 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
637 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
638 GL_LIB_DEPS="$DRIGL_LIBS"
640 # should check these...
641 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
642 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
643 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
644 GL_PC_CFLAGS="$X11_INCLUDES"
646 # XCB can only be used from pkg-config
647 if test "$enable_xcb" = yes; then
648 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
649 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
650 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
651 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
655 # need DRM libs, -lpthread, etc.
656 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
657 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
658 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
659 GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
660 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
661 GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
664 # No libGL for osmesa
668 AC_SUBST([GL_LIB_DEPS])
669 AC_SUBST([GL_PC_REQ_PRIV])
670 AC_SUBST([GL_PC_LIB_PRIV])
671 AC_SUBST([GL_PC_CFLAGS])
672 AC_SUBST([DRI_PC_REQ_PRIV])
673 AC_SUBST([GLESv1_CM_LIB_DEPS])
674 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
675 AC_SUBST([GLESv2_LIB_DEPS])
676 AC_SUBST([GLESv2_PC_LIB_PRIV])
682 if test "$mesa_driver" = xlib; then
683 DEFINES="$DEFINES -DUSE_XSHM"
689 AC_ARG_ENABLE([glx-tls],
690 [AS_HELP_STRING([--enable-glx-tls],
691 [enable TLS support in GLX @<:@default=disabled@:>@])],
692 [GLX_USE_TLS="$enableval"],
694 dnl Directory for DRI drivers
695 AC_ARG_WITH([dri-driverdir],
696 [AS_HELP_STRING([--with-dri-driverdir=DIR],
697 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
698 [DRI_DRIVER_INSTALL_DIR="$withval"],
699 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
700 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
701 dnl Extra search path for DRI drivers
702 AC_ARG_WITH([dri-searchpath],
703 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
704 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
705 [DRI_DRIVER_SEARCH_DIR="$withval"],
706 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
707 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
708 dnl Direct rendering or just indirect rendering
709 AC_ARG_ENABLE([driglx-direct],
710 [AS_HELP_STRING([--disable-driglx-direct],
711 [enable direct rendering in GLX and EGL for DRI @<:@default=enabled@:>@])],
712 [driglx_direct="$enableval"],
713 [driglx_direct="yes"])
714 dnl Which drivers to build - default is chosen by platform
715 AC_ARG_WITH([dri-drivers],
716 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
717 [comma delimited DRI drivers list, e.g.
718 "swrast,i965,radeon" @<:@default=auto@:>@])],
719 [with_dri_drivers="$withval"],
720 [with_dri_drivers=yes])
721 if test "x$with_dri_drivers" = x; then
725 dnl Determine which APIs to support
726 AC_ARG_ENABLE([opengl],
727 [AS_HELP_STRING([--disable-opengl],
728 [disable support for standard OpenGL API @<:@default=no@:>@])],
729 [enable_opengl="$enableval"],
731 AC_ARG_ENABLE([gles1],
732 [AS_HELP_STRING([--enable-gles1],
733 [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
734 [enable_gles1="$enableval"],
736 AC_ARG_ENABLE([gles2],
737 [AS_HELP_STRING([--enable-gles2],
738 [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
739 [enable_gles2="$enableval"],
741 AC_ARG_ENABLE([gles-overlay],
742 [AS_HELP_STRING([--enable-gles-overlay],
743 [build separate OpenGL ES only libraries @<:@default=no@:>@])],
744 [enable_gles_overlay="$enableval"],
745 [enable_gles_overlay=no])
749 if test "x$enable_opengl" = xno; then
750 API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
752 API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
754 if test "x$enable_gles1" = xyes; then
755 API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
757 if test "x$enable_gles2" = xyes; then
758 API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
760 if test "x$enable_gles_overlay" = xyes -o \
761 "x$enable_gles1" = xyes -o "x$enable_gles2" = xyes; then
762 CORE_DIRS="mapi/es1api mapi/es2api $CORE_DIRS"
763 if test "x$enable_gles_overlay" = xyes; then
767 AC_SUBST([API_DEFINES])
768 AC_SUBST([GLES_OVERLAY])
770 dnl If $with_dri_drivers is yes, directories will be added through
773 case "$with_dri_drivers" in
779 # verify the requested driver directories exist
780 dri_drivers=`IFS=', '; echo $with_dri_drivers`
781 for driver in $dri_drivers; do
782 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
783 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
785 DRI_DIRS="$dri_drivers"
789 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
790 if test "$mesa_driver" = dri; then
792 if test "x$GLX_USE_TLS" = xyes; then
793 DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS"
796 # Platform specific settings and drivers to build
799 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
800 if test "x$driglx_direct" = xyes; then
801 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
803 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
807 # sis is missing because they have not be converted to use
808 # the new interface. i810 are missing because there is no
809 # x86-64 system where they could *ever* be used.
810 if test "x$DRI_DIRS" = "xyes"; then
811 DRI_DIRS="i915 i965 mach64 mga r128 r200 r300 r600 radeon \
812 savage tdfx unichrome swrast"
816 # Build only the drivers for cards that exist on PowerPC.
817 # At some point MGA will be added, but not yet.
818 if test "x$DRI_DIRS" = "xyes"; then
819 DRI_DIRS="mach64 r128 r200 r300 r600 radeon tdfx swrast"
823 # Build only the drivers for cards that exist on sparc`
824 if test "x$DRI_DIRS" = "xyes"; then
825 DRI_DIRS="mach64 r128 r200 r300 r600 radeon swrast"
830 freebsd* | dragonfly*)
831 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
832 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
833 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
834 if test "x$driglx_direct" = xyes; then
835 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
837 if test "x$GXX" = xyes; then
838 CXXFLAGS="$CXXFLAGS -ansi -pedantic"
841 if test "x$DRI_DIRS" = "xyes"; then
842 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon tdfx \
843 unichrome savage sis swrast"
847 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
848 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
851 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
852 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
853 if test "x$driglx_direct" = xyes; then
854 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
860 if test "x$DRI_DIRS" = "xyes"; then
861 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon \
862 savage sis tdfx unichrome swrast"
865 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
871 [AS_HELP_STRING([--with-expat=DIR],
872 [expat install directory])],[
873 EXPAT_INCLUDES="-I$withval/include"
874 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
875 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
876 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
878 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
879 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
880 [AC_MSG_ERROR([Expat required for DRI.])])
882 # put all the necessary libs together
883 DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS $TALLOC_LIBS"
886 AC_SUBST([EXPAT_INCLUDES])
887 AC_SUBST([DRI_LIB_DEPS])
891 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= 2.4.21])
896 *radeon*|*r200*|*r300*|*r600*)
897 PKG_CHECK_MODULES([LIBDRM_RADEON],
898 [libdrm_radeon libdrm >= $LIBDRM_RADEON_REQUIRED],
899 HAVE_LIBDRM_RADEON=yes,
900 HAVE_LIBDRM_RADEON=no)
902 if test "$HAVE_LIBDRM_RADEON" = yes; then
903 RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS"
904 RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS
908 AC_SUBST([RADEON_CFLAGS])
909 AC_SUBST([RADEON_LDFLAGS])
913 dnl OSMesa configuration
915 if test "$mesa_driver" = xlib; then
916 default_gl_osmesa=yes
920 AC_ARG_ENABLE([gl-osmesa],
921 [AS_HELP_STRING([--enable-gl-osmesa],
922 [enable OSMesa with libGL @<:@default=enabled for xlib driver@:>@])],
923 [gl_osmesa="$enableval"],
924 [gl_osmesa="$default_gl_osmesa"])
925 if test "x$gl_osmesa" = xyes; then
926 if test "$mesa_driver" = osmesa; then
927 AC_MSG_ERROR([libGL is not available for OSMesa driver])
929 DRIVER_DIRS="$DRIVER_DIRS osmesa"
933 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
934 AC_ARG_WITH([osmesa-bits],
935 [AS_HELP_STRING([--with-osmesa-bits=BITS],
936 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
937 [osmesa_bits="$withval"],
939 if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
940 AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
943 case "x$osmesa_bits" in
948 OSMESA_LIB="OSMesa$osmesa_bits"
949 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
952 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
955 AC_SUBST([OSMESA_LIB])
957 case "$DRIVER_DIRS" in
959 # only link libraries with osmesa if shared
960 if test "$enable_static" = no; then
961 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS $TALLOC_LIBS"
966 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS $TALLOC_LIBS"
969 AC_SUBST([OSMESA_LIB_DEPS])
970 AC_SUBST([OSMESA_MESA_DEPS])
971 AC_SUBST([OSMESA_PC_REQ])
972 AC_SUBST([OSMESA_PC_LIB_PRIV])
975 dnl EGL configuration
978 [AS_HELP_STRING([--disable-egl],
979 [disable EGL library @<:@default=enabled@:>@])],
980 [enable_egl="$enableval"],
982 if test "x$enable_egl" = xyes; then
983 SRC_DIRS="$SRC_DIRS egl"
984 EGL_LIB_DEPS="$DLOPEN_LIBS -lpthread"
986 if test "$enable_static" != yes; then
987 # build egl_glx when libGL is built
988 if test "$mesa_driver" != osmesa; then
989 EGL_DRIVERS_DIRS="glx"
992 if test "$mesa_driver" = dri; then
993 # build egl_dri2 when xcb-dri2 is available
994 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes],
995 [have_xcb_dri2=yes],[have_xcb_dri2=no])
996 PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
997 [have_libudev=yes],[have_libudev=no])
999 if test "$have_xcb_dri2" = yes; then
1000 EGL_DRIVER_DRI2=dri2
1001 DEFINES="$DEFINES -DHAVE_XCB_DRI2"
1002 if test "$have_libudev" = yes; then
1003 DEFINES="$DEFINES -DHAVE_LIBUDEV"
1008 EGL_DRIVERS_DIRS="$EGL_DRIVERS_DIRS $EGL_DRIVER_DRI2"
1011 AC_SUBST([EGL_LIB_DEPS])
1012 AC_SUBST([EGL_DRIVERS_DIRS])
1015 dnl GLU configuration
1017 AC_ARG_ENABLE([glu],
1018 [AS_HELP_STRING([--disable-glu],
1019 [enable OpenGL Utility library @<:@default=enabled@:>@])],
1020 [enable_glu="$enableval"],
1022 if test "x$enable_glu" = xyes; then
1023 SRC_DIRS="$SRC_DIRS glu"
1025 case "$mesa_driver" in
1027 # Link libGLU to libOSMesa instead of libGL
1030 if test "$enable_static" = no; then
1031 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
1037 # If static, empty GLU_LIB_DEPS and add libs for programs to link
1039 GLU_PC_LIB_PRIV="-lm"
1040 if test "$enable_static" = no; then
1042 GLU_MESA_DEPS='-l$(GL_LIB)'
1046 APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
1051 if test "$enable_static" = no; then
1052 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
1054 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
1055 AC_SUBST([GLU_LIB_DEPS])
1056 AC_SUBST([GLU_MESA_DEPS])
1057 AC_SUBST([GLU_PC_REQ])
1058 AC_SUBST([GLU_PC_REQ_PRIV])
1059 AC_SUBST([GLU_PC_LIB_PRIV])
1060 AC_SUBST([GLU_PC_CFLAGS])
1063 dnl GLw configuration
1065 AC_ARG_ENABLE([glw],
1066 [AS_HELP_STRING([--disable-glw],
1067 [enable Xt/Motif widget library @<:@default=enabled@:>@])],
1068 [enable_glw="$enableval"],
1070 dnl Don't build GLw on osmesa
1071 if test "x$enable_glw" = xyes && test "$mesa_driver" = osmesa; then
1072 AC_MSG_WARN([Disabling GLw since the driver is OSMesa])
1075 AC_ARG_ENABLE([motif],
1076 [AS_HELP_STRING([--enable-motif],
1077 [use Motif widgets in GLw @<:@default=disabled@:>@])],
1078 [enable_motif="$enableval"],
1081 if test "x$enable_glw" = xyes; then
1082 SRC_DIRS="$SRC_DIRS glw"
1083 if test "$x11_pkgconfig" = yes; then
1084 PKG_CHECK_MODULES([GLW],[x11 xt])
1085 GLW_PC_REQ_PRIV="x11 xt"
1086 GLW_LIB_DEPS="$GLW_LIBS"
1088 # should check these...
1089 GLW_LIB_DEPS="$X_LIBS -lXt -lX11"
1090 GLW_PC_LIB_PRIV="$GLW_LIB_DEPS"
1091 GLW_PC_CFLAGS="$X11_INCLUDES"
1094 GLW_SOURCES="GLwDrawA.c"
1096 if test "x$enable_motif" = xyes; then
1097 GLW_SOURCES="$GLW_SOURCES GLwMDrawA.c"
1098 AC_PATH_PROG([MOTIF_CONFIG], [motif-config], [no])
1099 if test "x$MOTIF_CONFIG" != xno; then
1100 MOTIF_CFLAGS=`$MOTIF_CONFIG --cflags`
1101 MOTIF_LIBS=`$MOTIF_CONFIG --libs`
1103 AC_CHECK_HEADER([Xm/PrimitiveP.h], [],
1104 [AC_MSG_ERROR([Can't locate Motif headers])])
1105 AC_CHECK_LIB([Xm], [XmGetPixmap], [MOTIF_LIBS="-lXm"],
1106 [AC_MSG_ERROR([Can't locate Motif Xm library])])
1108 # MOTIF_LIBS is prepended to GLW_LIB_DEPS since Xm needs Xt/X11
1109 GLW_LIB_DEPS="$MOTIF_LIBS $GLW_LIB_DEPS"
1110 GLW_PC_LIB_PRIV="$MOTIF_LIBS $GLW_PC_LIB_PRIV"
1111 GLW_PC_CFLAGS="$MOTIF_CFLAGS $GLW_PC_CFLAGS"
1114 # If static, empty GLW_LIB_DEPS and add libs for programs to link
1115 GLW_PC_LIB_PRIV="$GLW_PC_LIB_PRIV"
1116 if test "$enable_static" = no; then
1117 GLW_MESA_DEPS='-l$(GL_LIB)'
1118 GLW_LIB_DEPS="$GLW_LIB_DEPS"
1120 APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
1125 AC_SUBST([GLW_LIB_DEPS])
1126 AC_SUBST([GLW_MESA_DEPS])
1127 AC_SUBST([GLW_SOURCES])
1128 AC_SUBST([MOTIF_CFLAGS])
1129 AC_SUBST([GLW_PC_REQ_PRIV])
1130 AC_SUBST([GLW_PC_LIB_PRIV])
1131 AC_SUBST([GLW_PC_CFLAGS])
1134 dnl GLUT configuration
1136 if test -f "$srcdir/include/GL/glut.h"; then
1141 AC_ARG_ENABLE([glut],
1142 [AS_HELP_STRING([--disable-glut],
1143 [enable GLUT library @<:@default=enabled if source available@:>@])],
1144 [enable_glut="$enableval"],
1145 [enable_glut="$default_glut"])
1147 dnl Can't build glut if GLU not available
1148 if test "x$enable_glu$enable_glut" = xnoyes; then
1149 AC_MSG_WARN([Disabling glut since GLU is disabled])
1152 dnl Don't build glut on osmesa
1153 if test "x$enable_glut" = xyes && test "$mesa_driver" = osmesa; then
1154 AC_MSG_WARN([Disabling glut since the driver is OSMesa])
1158 if test "x$enable_glut" = xyes; then
1159 SRC_DIRS="$SRC_DIRS glut/glx"
1160 if test "$x11_pkgconfig" = yes; then
1161 PKG_CHECK_MODULES([GLUT],[x11 xmu xi])
1162 GLUT_PC_REQ_PRIV="x11 xmu xi"
1163 GLUT_LIB_DEPS="$GLUT_LIBS"
1165 # should check these...
1166 GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
1167 GLUT_PC_LIB_PRIV="$GLUT_LIB_DEPS"
1168 GLUT_PC_CFLAGS="$X11_INCLUDES"
1170 if test "x$GCC" = xyes; then
1171 GLUT_CFLAGS="$GLUT_CFLAGS -fexceptions"
1173 GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
1174 GLUT_PC_LIB_PRIV="$GLUT_PC_LIB_PRIV -lm"
1176 # If static, empty GLUT_LIB_DEPS and add libs for programs to link
1177 if test "$enable_static" = no; then
1178 GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
1180 APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
1185 AC_SUBST([GLUT_LIB_DEPS])
1186 AC_SUBST([GLUT_MESA_DEPS])
1187 AC_SUBST([GLUT_CFLAGS])
1188 AC_SUBST([GLUT_PC_REQ_PRIV])
1189 AC_SUBST([GLUT_PC_LIB_PRIV])
1190 AC_SUBST([GLUT_PC_CFLAGS])
1193 dnl Program library dependencies
1194 dnl Only libm is added here if necessary as the libraries should
1195 dnl be pulled in by the linker
1197 if test "x$APP_LIB_DEPS" = x; then
1200 APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm"
1203 APP_LIB_DEPS="-lX11"
1210 AC_SUBST([APP_LIB_DEPS])
1211 AC_SUBST([PROGRAM_DIRS])
1214 dnl Gallium configuration
1216 AC_ARG_ENABLE([gallium],
1217 [AS_HELP_STRING([--disable-gallium],
1218 [build gallium @<:@default=enabled@:>@])],
1219 [enable_gallium="$enableval"],
1220 [enable_gallium=yes])
1221 if test "x$enable_gallium" = xyes; then
1222 SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
1223 AC_CHECK_HEADER([udis86.h], [HAS_UDIS86="yes"],
1225 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1228 AC_SUBST([LLVM_CFLAGS])
1229 AC_SUBST([LLVM_LIBS])
1230 AC_SUBST([LLVM_LDFLAGS])
1231 AC_SUBST([LLVM_VERSION])
1234 EGL_CLIENT_APIS='$(GL_LIB)'
1235 if test "x$enable_gles_overlay" = xyes; then
1236 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GLESv1_CM_LIB) $(GLESv2_LIB)'
1240 dnl Gallium state trackers configuration
1242 AC_ARG_WITH([state-trackers],
1243 [AS_HELP_STRING([--with-state-trackers@<:@=DIRS...@:>@],
1244 [comma delimited state_trackers list, e.g.
1245 "egl,glx" @<:@default=auto@:>@])],
1246 [with_state_trackers="$withval"],
1247 [with_state_trackers=yes])
1249 case "$with_state_trackers" in
1251 GALLIUM_STATE_TRACKERS_DIRS=""
1254 # look at what else is built
1255 case "$mesa_driver" in
1257 GALLIUM_STATE_TRACKERS_DIRS=glx
1260 GALLIUM_STATE_TRACKERS_DIRS="dri"
1262 if test "x$enable_egl" = xyes; then
1263 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS egl"
1266 # Have only tested st/xorg on 1.6.0 servers
1267 PKG_CHECK_MODULES(XORG, [xorg-server >= 1.6.0 libdrm >= $LIBDRM_XORG_REQUIRED libkms >= $LIBKMS_XORG_REQUIRED],
1268 HAVE_ST_XORG="yes"; GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg",
1274 # verify the requested state tracker exist
1276 _state_trackers=`IFS=', '; echo $with_state_trackers`
1277 for tracker in $_state_trackers; do
1280 if test "x$mesa_driver" != xdri; then
1281 AC_MSG_ERROR([cannot build dri state tracker without mesa driver set to dri])
1286 if test "x$enable_egl" != xyes; then
1287 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1292 PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1293 PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1294 PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1298 AC_MSG_WARN([state tracker 'es' has been replaced by --enable-gles-overlay])
1300 if test "x$enable_gles_overlay" != xyes; then
1301 if test "x$enable_gles1" != xyes -a "x$enable_gles2" != xyes; then
1302 CORE_DIRS="mapi/es1api mapi/es2api $CORE_DIRS"
1305 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GLESv1_CM_LIB) $(GLESv2_LIB)'
1310 CORE_DIRS="$CORE_DIRS mapi/vgapi"
1311 VG_LIB_DEPS="$VG_LIB_DEPS -lpthread"
1312 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1316 if test -n "$tracker"; then
1317 test -d "$srcdir/src/gallium/state_trackers/$tracker" || \
1318 AC_MSG_ERROR([state tracker '$tracker' doesn't exist])
1319 if test -n "$state_trackers"; then
1320 state_trackers="$state_trackers $tracker"
1322 state_trackers="$tracker"
1326 GALLIUM_STATE_TRACKERS_DIRS="$state_trackers"
1330 AC_SUBST([VG_LIB_DEPS])
1331 AC_SUBST([EGL_CLIENT_APIS])
1333 if test "x$HAVE_ST_EGL" = xyes; then
1334 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl"
1335 # define GLX_DIRECT_RENDERING even when the driver is not dri
1336 if test "x$mesa_driver" != xdri -a "x$driglx_direct" = xyes; then
1337 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1341 if test "x$HAVE_ST_XORG" = xyes; then
1342 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1343 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1344 HAVE_XEXTPROTO_71="no")
1347 AC_ARG_WITH([egl-platforms],
1348 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1349 [comma delimited native platforms libEGL supports, e.g.
1350 "x11,kms" @<:@default=auto@:>@])],
1351 [with_egl_platforms="$withval"],
1352 [with_egl_platforms=yes])
1353 AC_ARG_WITH([egl-displays],
1354 [AS_HELP_STRING([--with-egl-displays@<:@=DIRS...@:>@],
1355 [DEPRECATED. Use --with-egl-platforms instead])],
1356 [with_egl_platforms="$withval"])
1359 case "$with_egl_platforms" in
1361 if test "x$enable_egl" = xyes && test "x$mesa_driver" != xosmesa; then
1366 if test "x$enable_egl" != xyes; then
1367 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1369 # verify the requested driver directories exist
1370 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1371 for plat in $egl_platforms; do
1372 test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \
1373 AC_MSG_ERROR([EGL platform '$plat' does't exist])
1374 if test "$plat" = "fbdev"; then
1375 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev"
1378 EGL_PLATFORMS="$egl_platforms"
1381 AC_SUBST([EGL_PLATFORMS])
1383 AC_ARG_WITH([egl-driver-dir],
1384 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1385 [directory for EGL drivers [[default=${libdir}/egl]]])],
1386 [EGL_DRIVER_INSTALL_DIR="$withval"],
1387 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1388 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1390 AC_ARG_WITH([xorg-driver-dir],
1391 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1392 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1393 [XORG_DRIVER_INSTALL_DIR="$withval"],
1394 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1395 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1397 AC_ARG_WITH([max-width],
1398 [AS_HELP_STRING([--with-max-width=N],
1399 [Maximum framebuffer width (4096)])],
1400 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1401 AS_IF([test "${withval}" -gt "4096"],
1402 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1404 AC_ARG_WITH([max-height],
1405 [AS_HELP_STRING([--with-max-height=N],
1406 [Maximum framebuffer height (4096)])],
1407 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1408 AS_IF([test "${withval}" -gt "4096"],
1409 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1415 AC_ARG_ENABLE([gallium-llvm],
1416 [AS_HELP_STRING([--enable-gallium-llvm],
1417 [build gallium LLVM support @<:@default=disabled@:>@])],
1418 [enable_gallium_llvm="$enableval"],
1419 [enable_gallium_llvm=auto])
1420 if test "x$enable_gallium_llvm" = xyes; then
1421 if test "x$LLVM_CONFIG" != xno; then
1422 LLVM_VERSION=`$LLVM_CONFIG --version`
1423 LLVM_CFLAGS=`$LLVM_CONFIG --cflags`
1424 LLVM_LIBS="`$LLVM_CONFIG --libs jit interpreter nativecodegen bitwriter` -lstdc++"
1426 if test "x$HAS_UDIS86" != xno; then
1427 LLVM_LIBS="$LLVM_LIBS -ludis86"
1428 DEFINES="$DEFINES -DHAVE_UDIS86"
1430 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1431 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1432 DEFINES="$DEFINES -DGALLIUM_LLVMPIPE -D__STDC_CONSTANT_MACROS"
1442 dnl Gallium helper functions
1444 gallium_check_st() {
1445 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes; then
1446 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1448 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1449 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1451 if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
1452 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1458 dnl Gallium SVGA configuration
1460 AC_ARG_ENABLE([gallium-svga],
1461 [AS_HELP_STRING([--enable-gallium-svga],
1462 [build gallium SVGA @<:@default=disabled@:>@])],
1463 [enable_gallium_svga="$enableval"],
1464 [enable_gallium_svga=auto])
1465 if test "x$enable_gallium_svga" = xyes; then
1466 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1467 gallium_check_st "svga/drm" "dri-vmwgfx" "xorg-vmwgfx"
1468 elif test "x$enable_gallium_svga" = xauto; then
1469 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1473 dnl Gallium i915 configuration
1475 AC_ARG_ENABLE([gallium-i915],
1476 [AS_HELP_STRING([--enable-gallium-i915],
1477 [build gallium i915 @<:@default=disabled@:>@])],
1478 [enable_gallium_i915="$enableval"],
1479 [enable_gallium_i915=auto])
1480 if test "x$enable_gallium_i915" = xyes; then
1481 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1482 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915"
1483 gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1484 elif test "x$enable_gallium_i915" = xauto; then
1485 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1486 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915"
1490 dnl Gallium i965 configuration
1492 AC_ARG_ENABLE([gallium-i965],
1493 [AS_HELP_STRING([--enable-gallium-i965],
1494 [build gallium i965 @<:@default=disabled@:>@])],
1495 [enable_gallium_i965="$enableval"],
1496 [enable_gallium_i965=auto])
1497 if test "x$enable_gallium_i965" = xyes; then
1498 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i965"
1499 gallium_check_st "i965/drm" "dri-i965" "xorg-i965"
1500 elif test "x$enable_gallium_i965" = xauto; then
1501 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i965"
1505 dnl Gallium Radeon configuration
1507 AC_ARG_ENABLE([gallium-radeon],
1508 [AS_HELP_STRING([--enable-gallium-radeon],
1509 [build gallium radeon @<:@default=disabled@:>@])],
1510 [enable_gallium_radeon="$enableval"],
1511 [enable_gallium_radeon=auto])
1512 if test "x$enable_gallium_radeon" = xyes; then
1513 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1514 gallium_check_st "radeon/drm" "dri-r300" "xorg-radeon"
1515 elif test "x$enable_gallium_radeon" = xauto; then
1516 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1520 dnl Gallium Radeon r600g configuration
1522 AC_ARG_ENABLE([gallium-r600],
1523 [AS_HELP_STRING([--enable-gallium-r600],
1524 [build gallium radeon @<:@default=disabled@:>@])],
1525 [enable_gallium_r600="$enableval"],
1526 [enable_gallium_r600=auto])
1527 if test "x$enable_gallium_r600" = xyes; then
1528 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1529 gallium_check_st "r600/drm" "dri-r600"
1533 dnl Gallium Nouveau configuration
1535 AC_ARG_ENABLE([gallium-nouveau],
1536 [AS_HELP_STRING([--enable-gallium-nouveau],
1537 [build gallium nouveau @<:@default=disabled@:>@])],
1538 [enable_gallium_nouveau="$enableval"],
1539 [enable_gallium_nouveau=no])
1540 if test "x$enable_gallium_nouveau" = xyes; then
1541 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50"
1542 gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau"
1546 dnl Gallium swrast configuration
1548 AC_ARG_ENABLE([gallium-swrast],
1549 [AS_HELP_STRING([--enable-gallium-swrast],
1550 [build gallium swrast @<:@default=auto@:>@])],
1551 [enable_gallium_swrast="$enableval"],
1552 [enable_gallium_swrast=auto])
1553 if test "x$enable_gallium_swrast" = xyes || test "x$enable_gallium_swrast" = xauto; then
1554 if test "x$HAVE_ST_DRI" = xyes; then
1555 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1559 dnl prepend CORE_DIRS to SRC_DIRS
1560 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
1562 dnl Restore LDFLAGS and CPPFLAGS
1563 LDFLAGS="$_SAVE_LDFLAGS"
1564 CPPFLAGS="$_SAVE_CPPFLAGS"
1566 dnl Substitute the config
1567 AC_CONFIG_FILES([configs/autoconf])
1569 dnl Replace the configs/current symlink
1570 AC_CONFIG_COMMANDS([configs],[
1571 if test -f configs/current || test -L configs/current; then
1572 rm -f configs/current
1574 ln -s autoconf configs/current
1580 dnl Output some configuration info for the user
1583 echo " prefix: $prefix"
1584 echo " exec_prefix: $exec_prefix"
1585 echo " libdir: $libdir"
1586 echo " includedir: $includedir"
1590 echo " Driver: $mesa_driver"
1591 if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
1592 echo " OSMesa: lib$OSMESA_LIB"
1596 if test "$mesa_driver" = dri; then
1597 # cleanup the drivers var
1598 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1599 if test "x$DRI_DIRS" = x; then
1600 echo " DRI drivers: no"
1602 echo " DRI drivers: $dri_dirs"
1604 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
1606 echo " Use XCB: $enable_xcb"
1609 if test "x$MESA_LLVM" = x1; then
1611 echo " llvm-config: $LLVM_CONFIG"
1612 echo " llvm-version: $LLVM_VERSION"
1618 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
1619 echo " Gallium: yes"
1620 echo " Gallium dirs: $GALLIUM_DIRS"
1621 echo " Target dirs: $GALLIUM_TARGET_DIRS"
1622 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
1623 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
1624 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
1625 if test "x$HAVE_ST_EGL" = xyes; then
1626 echo " EGL client APIs: $EGL_CLIENT_APIS"
1634 echo " Shared libs: $enable_shared"
1635 echo " Static libs: $enable_static"
1636 if test "$enable_egl" = yes; then
1637 echo " EGL: $EGL_DRIVERS_DIRS"
1638 echo " EGL platforms: $EGL_PLATFORMS"
1642 echo " GLU: $enable_glu"
1643 echo " GLw: $enable_glw (Motif: $enable_motif)"
1644 echo " glut: $enable_glut"
1646 dnl Compiler options
1647 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
1648 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1649 $SED 's/^ *//;s/ */ /;s/ *$//'`
1650 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1651 $SED 's/^ *//;s/ */ /;s/ *$//'`
1652 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1654 echo " CFLAGS: $cflags"
1655 echo " CXXFLAGS: $cxxflags"
1656 echo " Macros: $defines"
1659 echo " Run '${MAKE-make}' to build Mesa"