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 if test "$enable_static" = yes; then
283 LIB_EXTENSION='dylib' ;;
285 LIB_EXTENSION='dll.a' ;;
289 LIB_EXTENSION='so' ;;
293 GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
294 GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
295 GLUT_LIB_NAME='lib$(GLUT_LIB).'${LIB_EXTENSION}
296 GLW_LIB_NAME='lib$(GLW_LIB).'${LIB_EXTENSION}
297 OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
298 EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
299 GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
300 GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION}
301 VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION}
303 GL_LIB_GLOB='lib$(GL_LIB).*'${LIB_EXTENSION}'*'
304 GLU_LIB_GLOB='lib$(GLU_LIB).*'${LIB_EXTENSION}'*'
305 GLUT_LIB_GLOB='lib$(GLUT_LIB).*'${LIB_EXTENSION}'*'
306 GLW_LIB_GLOB='lib$(GLW_LIB).*'${LIB_EXTENSION}'*'
307 OSMESA_LIB_GLOB='lib$(OSMESA_LIB).*'${LIB_EXTENSION}'*'
308 EGL_LIB_GLOB='lib$(EGL_LIB).*'${LIB_EXTENSION}'*'
309 GLESv1_CM_LIB_GLOB='lib$(GLESv1_CM_LIB).*'${LIB_EXTENSION}'*'
310 GLESv2_LIB_GLOB='lib$(GLESv2_LIB).*'${LIB_EXTENSION}'*'
311 VG_LIB_GLOB='lib$(VG_LIB).*'${LIB_EXTENSION}'*'
313 AC_SUBST([GL_LIB_NAME])
314 AC_SUBST([GLU_LIB_NAME])
315 AC_SUBST([GLUT_LIB_NAME])
316 AC_SUBST([GLW_LIB_NAME])
317 AC_SUBST([OSMESA_LIB_NAME])
318 AC_SUBST([EGL_LIB_NAME])
319 AC_SUBST([GLESv1_CM_LIB_NAME])
320 AC_SUBST([GLESv2_LIB_NAME])
321 AC_SUBST([VG_LIB_NAME])
323 AC_SUBST([GL_LIB_GLOB])
324 AC_SUBST([GLU_LIB_GLOB])
325 AC_SUBST([GLUT_LIB_GLOB])
326 AC_SUBST([GLW_LIB_GLOB])
327 AC_SUBST([OSMESA_LIB_GLOB])
328 AC_SUBST([EGL_LIB_GLOB])
329 AC_SUBST([GLESv1_CM_LIB_GLOB])
330 AC_SUBST([GLESv2_LIB_GLOB])
331 AC_SUBST([VG_LIB_GLOB])
334 dnl Arch/platform-specific settings
337 [AS_HELP_STRING([--disable-asm],
338 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
339 [enable_asm="$enableval"],
346 AC_MSG_CHECKING([whether to enable assembly])
347 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
348 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
349 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
353 AC_MSG_RESULT([no, cross compiling])
357 # check for supported arches
358 if test "x$enable_asm" = xyes; then
362 linux* | *freebsd* | dragonfly*)
363 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
369 linux* | *freebsd* | dragonfly*)
370 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
392 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
393 MESA_ASM_SOURCES='$(X86_SOURCES)'
394 GLAPI_ASM_SOURCES='$(X86_API)'
395 AC_MSG_RESULT([yes, x86])
398 ASM_FLAGS="-DUSE_X86_64_ASM"
399 MESA_ASM_SOURCES='$(X86-64_SOURCES)'
400 GLAPI_ASM_SOURCES='$(X86-64_API)'
401 AC_MSG_RESULT([yes, x86_64])
404 ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM"
405 MESA_ASM_SOURCES='$(PPC_SOURCES)'
406 AC_MSG_RESULT([yes, ppc])
409 ASM_FLAGS="-DUSE_SPARC_ASM"
410 MESA_ASM_SOURCES='$(SPARC_SOURCES)'
411 GLAPI_ASM_SOURCES='$(SPARC_API)'
412 AC_MSG_RESULT([yes, sparc])
415 AC_MSG_RESULT([no, platform not supported])
419 AC_SUBST([ASM_FLAGS])
420 AC_SUBST([MESA_ASM_SOURCES])
421 AC_SUBST([GLAPI_ASM_SOURCES])
426 dnl Check to see if dlopen is in default libraries (like Solaris, which
427 dnl has it in libc), or if libdl is needed to get it.
428 AC_CHECK_FUNC([dlopen], [],
429 [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
430 AC_SUBST([DLOPEN_LIBS])
432 dnl See if posix_memalign is available
433 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
435 dnl SELinux awareness.
436 AC_ARG_ENABLE([selinux],
437 [AS_HELP_STRING([--enable-selinux],
438 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
439 [MESA_SELINUX="$enableval"],
441 if test "x$enable_selinux" = "xyes"; then
442 AC_CHECK_HEADER([selinux/selinux.h],[],
443 [AC_MSG_ERROR([SELinux headers not found])])
444 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
445 [AC_MSG_ERROR([SELinux library not found])])
446 SELINUX_LIBS="-lselinux"
447 DEFINES="$DEFINES -DMESA_SELINUX"
451 dnl Driver configuration. Options are xlib, dri and osmesa right now.
452 dnl More later: fbdev, ...
454 default_driver="xlib"
459 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
462 *freebsd* | dragonfly*)
464 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
469 AC_ARG_WITH([driver],
470 [AS_HELP_STRING([--with-driver=DRIVER],
471 [driver for Mesa: xlib,dri,osmesa @<:@default=dri when available, or xlib@:>@])],
472 [mesa_driver="$withval"],
473 [mesa_driver="$default_driver"])
474 dnl Check for valid option
475 case "x$mesa_driver" in
479 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
483 PKG_CHECK_MODULES([TALLOC], [talloc])
484 AC_SUBST([TALLOC_LIBS])
485 AC_SUBST([TALLOC_CFLAGS])
488 dnl Driver specific build directories
491 dnl this variable will be prepended to SRC_DIRS and is not exported
492 CORE_DIRS="mapi/glapi glsl mesa"
496 GALLIUM_DIRS="auxiliary drivers state_trackers"
497 GALLIUM_TARGET_DIRS=""
498 GALLIUM_WINSYS_DIRS="sw"
499 GALLIUM_DRIVERS_DIRS="softpipe failover galahad trace rbug identity"
500 GALLIUM_STATE_TRACKERS_DIRS=""
502 case "$mesa_driver" in
505 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
506 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
509 SRC_DIRS="$SRC_DIRS glx"
511 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib sw/dri"
519 AC_SUBST([DRIVER_DIRS])
520 AC_SUBST([GALLIUM_DIRS])
521 AC_SUBST([GALLIUM_TARGET_DIRS])
522 AC_SUBST([GALLIUM_WINSYS_DIRS])
523 AC_SUBST([GALLIUM_DRIVERS_DIRS])
524 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
525 AC_SUBST([MESA_LLVM])
528 dnl Find out if X is available. The variable have_x is set if libX11 is
529 dnl found to mimic AC_PATH_XTRA.
531 if test -n "$PKG_CONFIG"; then
532 AC_MSG_CHECKING([pkg-config files for X11 are available])
533 PKG_CHECK_EXISTS([x11],[
539 AC_MSG_RESULT([$x11_pkgconfig])
543 dnl Use the autoconf macro if no pkg-config files
544 if test "$x11_pkgconfig" = yes; then
545 PKG_CHECK_MODULES([X11], [x11])
548 test -z "$X11_CFLAGS" && X11_CFLAGS="$X_CFLAGS"
549 test -z "$X11_LIBS" && X11_LIBS="$X_LIBS -lX11"
550 AC_SUBST([X11_CFLAGS])
554 dnl Try to tell the user that the --x-* options are only used when
555 dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
556 m4_divert_once([HELP_BEGIN],
557 [These options are only used when the X libraries cannot be found by the
558 pkg-config utility.])
560 dnl We need X for xlib and dri, so bomb now if it's not found
561 case "$mesa_driver" in
563 if test "$no_x" = yes; then
564 AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver])
569 dnl XCB - this is only used for GLX right now
571 [AS_HELP_STRING([--enable-xcb],
572 [use XCB for GLX @<:@default=disabled@:>@])],
573 [enable_xcb="$enableval"],
575 if test "x$enable_xcb" = xyes; then
576 DEFINES="$DEFINES -DUSE_XCB"
582 dnl libGL configuration per driver
584 case "$mesa_driver" in
586 if test "$x11_pkgconfig" = yes; then
587 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
588 GL_PC_REQ_PRIV="x11 xext"
589 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
590 GL_LIB_DEPS="$XLIBGL_LIBS"
592 # should check these...
593 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
594 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
595 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
596 GL_PC_CFLAGS="$X11_INCLUDES"
598 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread $TALLOC_LIBS"
599 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread $TALLOC_LIBS"
601 # if static, move the external libraries to the programs
602 # and empty the libraries for libGL
603 if test "$enable_static" = yes; then
604 APP_LIB_DEPS="$APP_LIB_DEPS $GL_LIB_DEPS"
609 # DRI must be shared, I think
610 if test "$enable_static" = yes; then
611 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
615 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED])
616 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
617 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
618 GL_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED glproto >= $GLPROTO_REQUIRED"
619 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
621 # find the DRI deps for libGL
622 if test "$x11_pkgconfig" = yes; then
623 # add xcb modules if necessary
624 dri_modules="x11 xext xxf86vm xdamage xfixes"
625 if test "$enable_xcb" = yes; then
626 dri_modules="$dri_modules x11-xcb xcb-glx"
629 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
630 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
631 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
632 GL_LIB_DEPS="$DRIGL_LIBS"
634 # should check these...
635 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
636 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
637 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
638 GL_PC_CFLAGS="$X11_INCLUDES"
640 # XCB can only be used from pkg-config
641 if test "$enable_xcb" = yes; then
642 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
643 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
644 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
645 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
649 # need DRM libs, -lpthread, etc.
650 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
651 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
652 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
653 GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
654 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
655 GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
658 # No libGL for osmesa
662 AC_SUBST([GL_LIB_DEPS])
663 AC_SUBST([GL_PC_REQ_PRIV])
664 AC_SUBST([GL_PC_LIB_PRIV])
665 AC_SUBST([GL_PC_CFLAGS])
666 AC_SUBST([DRI_PC_REQ_PRIV])
667 AC_SUBST([GLESv1_CM_LIB_DEPS])
668 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
669 AC_SUBST([GLESv2_LIB_DEPS])
670 AC_SUBST([GLESv2_PC_LIB_PRIV])
676 if test "$mesa_driver" = xlib; then
677 DEFINES="$DEFINES -DUSE_XSHM"
683 AC_ARG_ENABLE([glx-tls],
684 [AS_HELP_STRING([--enable-glx-tls],
685 [enable TLS support in GLX @<:@default=disabled@:>@])],
686 [GLX_USE_TLS="$enableval"],
688 dnl Directory for DRI drivers
689 AC_ARG_WITH([dri-driverdir],
690 [AS_HELP_STRING([--with-dri-driverdir=DIR],
691 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
692 [DRI_DRIVER_INSTALL_DIR="$withval"],
693 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
694 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
695 dnl Extra search path for DRI drivers
696 AC_ARG_WITH([dri-searchpath],
697 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
698 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
699 [DRI_DRIVER_SEARCH_DIR="$withval"],
700 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
701 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
702 dnl Direct rendering or just indirect rendering
703 AC_ARG_ENABLE([driglx-direct],
704 [AS_HELP_STRING([--disable-driglx-direct],
705 [enable direct rendering in GLX and EGL for DRI @<:@default=enabled@:>@])],
706 [driglx_direct="$enableval"],
707 [driglx_direct="yes"])
708 dnl Which drivers to build - default is chosen by platform
709 AC_ARG_WITH([dri-drivers],
710 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
711 [comma delimited DRI drivers list, e.g.
712 "swrast,i965,radeon" @<:@default=auto@:>@])],
713 [with_dri_drivers="$withval"],
714 [with_dri_drivers=yes])
715 if test "x$with_dri_drivers" = x; then
719 dnl Determine which APIs to support
720 AC_ARG_ENABLE([opengl],
721 [AS_HELP_STRING([--disable-opengl],
722 [disable support for standard OpenGL API @<:@default=no@:>@])],
723 [enable_opengl="$enableval"],
725 AC_ARG_ENABLE([gles1],
726 [AS_HELP_STRING([--enable-gles1],
727 [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
728 [enable_gles1="$enableval"],
730 AC_ARG_ENABLE([gles2],
731 [AS_HELP_STRING([--enable-gles2],
732 [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
733 [enable_gles2="$enableval"],
735 AC_ARG_ENABLE([gles-overlay],
736 [AS_HELP_STRING([--enable-gles-overlay],
737 [build separate OpenGL ES only libraries @<:@default=no@:>@])],
738 [enable_gles_overlay="$enableval"],
739 [enable_gles_overlay=no])
743 if test "x$enable_opengl" = xno; then
744 API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
746 API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
748 if test "x$enable_gles1" = xyes; then
749 API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
751 if test "x$enable_gles2" = xyes; then
752 API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
754 if test "x$enable_gles_overlay" = xyes -o \
755 "x$enable_gles1" = xyes -o "x$enable_gles2" = xyes; then
756 CORE_DIRS="mapi/es1api mapi/es2api $CORE_DIRS"
757 if test "x$enable_gles_overlay" = xyes; then
761 AC_SUBST([API_DEFINES])
762 AC_SUBST([GLES_OVERLAY])
764 dnl If $with_dri_drivers is yes, directories will be added through
767 case "$with_dri_drivers" in
773 # verify the requested driver directories exist
774 dri_drivers=`IFS=', '; echo $with_dri_drivers`
775 for driver in $dri_drivers; do
776 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
777 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
779 DRI_DIRS="$dri_drivers"
783 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
784 if test "$mesa_driver" = dri; then
786 if test "x$GLX_USE_TLS" = xyes; then
787 DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS"
790 # Platform specific settings and drivers to build
793 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
794 if test "x$driglx_direct" = xyes; then
795 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
797 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
801 # sis is missing because they have not be converted to use
802 # the new interface. i810 are missing because there is no
803 # x86-64 system where they could *ever* be used.
804 if test "x$DRI_DIRS" = "xyes"; then
805 DRI_DIRS="i915 i965 mach64 mga r128 r200 r300 r600 radeon \
806 savage tdfx unichrome swrast"
810 # Build only the drivers for cards that exist on PowerPC.
811 # At some point MGA will be added, but not yet.
812 if test "x$DRI_DIRS" = "xyes"; then
813 DRI_DIRS="mach64 r128 r200 r300 r600 radeon tdfx swrast"
817 # Build only the drivers for cards that exist on sparc`
818 if test "x$DRI_DIRS" = "xyes"; then
819 DRI_DIRS="mach64 r128 r200 r300 r600 radeon swrast"
824 freebsd* | dragonfly*)
825 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
826 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
827 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
828 if test "x$driglx_direct" = xyes; then
829 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
831 if test "x$GXX" = xyes; then
832 CXXFLAGS="$CXXFLAGS -ansi -pedantic"
835 if test "x$DRI_DIRS" = "xyes"; then
836 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon tdfx \
837 unichrome savage sis swrast"
841 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
842 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
845 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
846 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
847 if test "x$driglx_direct" = xyes; then
848 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
854 if test "x$DRI_DIRS" = "xyes"; then
855 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon \
856 savage sis tdfx unichrome swrast"
859 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
865 [AS_HELP_STRING([--with-expat=DIR],
866 [expat install directory])],[
867 EXPAT_INCLUDES="-I$withval/include"
868 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
869 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
870 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
872 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
873 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
874 [AC_MSG_ERROR([Expat required for DRI.])])
876 # put all the necessary libs together
877 DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS $TALLOC_LIBS"
880 AC_SUBST([EXPAT_INCLUDES])
881 AC_SUBST([DRI_LIB_DEPS])
885 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= 2.4.21])
890 *radeon*|*r200*|*r300*|*r600*)
891 PKG_CHECK_MODULES([LIBDRM_RADEON],
892 [libdrm_radeon libdrm >= $LIBDRM_RADEON_REQUIRED],
893 HAVE_LIBDRM_RADEON=yes,
894 HAVE_LIBDRM_RADEON=no)
896 if test "$HAVE_LIBDRM_RADEON" = yes; then
897 RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS"
898 RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS
902 AC_SUBST([RADEON_CFLAGS])
903 AC_SUBST([RADEON_LDFLAGS])
907 dnl OSMesa configuration
909 if test "$mesa_driver" = xlib; then
910 default_gl_osmesa=yes
914 AC_ARG_ENABLE([gl-osmesa],
915 [AS_HELP_STRING([--enable-gl-osmesa],
916 [enable OSMesa with libGL @<:@default=enabled for xlib driver@:>@])],
917 [gl_osmesa="$enableval"],
918 [gl_osmesa="$default_gl_osmesa"])
919 if test "x$gl_osmesa" = xyes; then
920 if test "$mesa_driver" = osmesa; then
921 AC_MSG_ERROR([libGL is not available for OSMesa driver])
923 DRIVER_DIRS="$DRIVER_DIRS osmesa"
927 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
928 AC_ARG_WITH([osmesa-bits],
929 [AS_HELP_STRING([--with-osmesa-bits=BITS],
930 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
931 [osmesa_bits="$withval"],
933 if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
934 AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
937 case "x$osmesa_bits" in
942 OSMESA_LIB="OSMesa$osmesa_bits"
943 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
946 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
949 AC_SUBST([OSMESA_LIB])
951 case "$DRIVER_DIRS" in
953 # only link libraries with osmesa if shared
954 if test "$enable_static" = no; then
955 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS $TALLOC_LIBS"
960 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS $TALLOC_LIBS"
963 AC_SUBST([OSMESA_LIB_DEPS])
964 AC_SUBST([OSMESA_MESA_DEPS])
965 AC_SUBST([OSMESA_PC_REQ])
966 AC_SUBST([OSMESA_PC_LIB_PRIV])
969 dnl EGL configuration
972 [AS_HELP_STRING([--disable-egl],
973 [disable EGL library @<:@default=enabled@:>@])],
974 [enable_egl="$enableval"],
976 if test "x$enable_egl" = xyes; then
977 SRC_DIRS="$SRC_DIRS egl"
978 EGL_LIB_DEPS="$DLOPEN_LIBS -lpthread"
980 if test "$enable_static" != yes; then
981 # build egl_glx when libGL is built
982 if test "$mesa_driver" != osmesa; then
983 EGL_DRIVERS_DIRS="glx"
986 if test "$mesa_driver" = dri; then
987 # build egl_dri2 when xcb-dri2 is available
988 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes],
989 [have_xcb_dri2=yes],[have_xcb_dri2=no])
990 PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
991 [have_libudev=yes],[have_libudev=no])
993 if test "$have_xcb_dri2" = yes; then
995 DEFINES="$DEFINES -DHAVE_XCB_DRI2"
996 if test "$have_libudev" = yes; then
997 DEFINES="$DEFINES -DHAVE_LIBUDEV"
1002 EGL_DRIVERS_DIRS="$EGL_DRIVERS_DIRS $EGL_DRIVER_DRI2"
1005 AC_SUBST([EGL_LIB_DEPS])
1006 AC_SUBST([EGL_DRIVERS_DIRS])
1009 dnl GLU configuration
1011 AC_ARG_ENABLE([glu],
1012 [AS_HELP_STRING([--disable-glu],
1013 [enable OpenGL Utility library @<:@default=enabled@:>@])],
1014 [enable_glu="$enableval"],
1016 if test "x$enable_glu" = xyes; then
1017 SRC_DIRS="$SRC_DIRS glu"
1019 case "$mesa_driver" in
1021 # Link libGLU to libOSMesa instead of libGL
1024 if test "$enable_static" = no; then
1025 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
1031 # If static, empty GLU_LIB_DEPS and add libs for programs to link
1033 GLU_PC_LIB_PRIV="-lm"
1034 if test "$enable_static" = no; then
1036 GLU_MESA_DEPS='-l$(GL_LIB)'
1040 APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
1045 if test "$enable_static" = no; then
1046 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
1048 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
1049 AC_SUBST([GLU_LIB_DEPS])
1050 AC_SUBST([GLU_MESA_DEPS])
1051 AC_SUBST([GLU_PC_REQ])
1052 AC_SUBST([GLU_PC_REQ_PRIV])
1053 AC_SUBST([GLU_PC_LIB_PRIV])
1054 AC_SUBST([GLU_PC_CFLAGS])
1057 dnl GLw configuration
1059 AC_ARG_ENABLE([glw],
1060 [AS_HELP_STRING([--disable-glw],
1061 [enable Xt/Motif widget library @<:@default=enabled@:>@])],
1062 [enable_glw="$enableval"],
1064 dnl Don't build GLw on osmesa
1065 if test "x$enable_glw" = xyes && test "$mesa_driver" = osmesa; then
1066 AC_MSG_WARN([Disabling GLw since the driver is OSMesa])
1069 AC_ARG_ENABLE([motif],
1070 [AS_HELP_STRING([--enable-motif],
1071 [use Motif widgets in GLw @<:@default=disabled@:>@])],
1072 [enable_motif="$enableval"],
1075 if test "x$enable_glw" = xyes; then
1076 SRC_DIRS="$SRC_DIRS glw"
1077 if test "$x11_pkgconfig" = yes; then
1078 PKG_CHECK_MODULES([GLW],[x11 xt])
1079 GLW_PC_REQ_PRIV="x11 xt"
1080 GLW_LIB_DEPS="$GLW_LIBS"
1082 # should check these...
1083 GLW_LIB_DEPS="$X_LIBS -lXt -lX11"
1084 GLW_PC_LIB_PRIV="$GLW_LIB_DEPS"
1085 GLW_PC_CFLAGS="$X11_INCLUDES"
1088 GLW_SOURCES="GLwDrawA.c"
1090 if test "x$enable_motif" = xyes; then
1091 GLW_SOURCES="$GLW_SOURCES GLwMDrawA.c"
1092 AC_PATH_PROG([MOTIF_CONFIG], [motif-config], [no])
1093 if test "x$MOTIF_CONFIG" != xno; then
1094 MOTIF_CFLAGS=`$MOTIF_CONFIG --cflags`
1095 MOTIF_LIBS=`$MOTIF_CONFIG --libs`
1097 AC_CHECK_HEADER([Xm/PrimitiveP.h], [],
1098 [AC_MSG_ERROR([Can't locate Motif headers])])
1099 AC_CHECK_LIB([Xm], [XmGetPixmap], [MOTIF_LIBS="-lXm"],
1100 [AC_MSG_ERROR([Can't locate Motif Xm library])])
1102 # MOTIF_LIBS is prepended to GLW_LIB_DEPS since Xm needs Xt/X11
1103 GLW_LIB_DEPS="$MOTIF_LIBS $GLW_LIB_DEPS"
1104 GLW_PC_LIB_PRIV="$MOTIF_LIBS $GLW_PC_LIB_PRIV"
1105 GLW_PC_CFLAGS="$MOTIF_CFLAGS $GLW_PC_CFLAGS"
1108 # If static, empty GLW_LIB_DEPS and add libs for programs to link
1109 GLW_PC_LIB_PRIV="$GLW_PC_LIB_PRIV"
1110 if test "$enable_static" = no; then
1111 GLW_MESA_DEPS='-l$(GL_LIB)'
1112 GLW_LIB_DEPS="$GLW_LIB_DEPS"
1114 APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
1119 AC_SUBST([GLW_LIB_DEPS])
1120 AC_SUBST([GLW_MESA_DEPS])
1121 AC_SUBST([GLW_SOURCES])
1122 AC_SUBST([MOTIF_CFLAGS])
1123 AC_SUBST([GLW_PC_REQ_PRIV])
1124 AC_SUBST([GLW_PC_LIB_PRIV])
1125 AC_SUBST([GLW_PC_CFLAGS])
1128 dnl GLUT configuration
1130 if test -f "$srcdir/include/GL/glut.h"; then
1135 AC_ARG_ENABLE([glut],
1136 [AS_HELP_STRING([--disable-glut],
1137 [enable GLUT library @<:@default=enabled if source available@:>@])],
1138 [enable_glut="$enableval"],
1139 [enable_glut="$default_glut"])
1141 dnl Can't build glut if GLU not available
1142 if test "x$enable_glu$enable_glut" = xnoyes; then
1143 AC_MSG_WARN([Disabling glut since GLU is disabled])
1146 dnl Don't build glut on osmesa
1147 if test "x$enable_glut" = xyes && test "$mesa_driver" = osmesa; then
1148 AC_MSG_WARN([Disabling glut since the driver is OSMesa])
1152 if test "x$enable_glut" = xyes; then
1153 SRC_DIRS="$SRC_DIRS glut/glx"
1154 if test "$x11_pkgconfig" = yes; then
1155 PKG_CHECK_MODULES([GLUT],[x11 xmu xi])
1156 GLUT_PC_REQ_PRIV="x11 xmu xi"
1157 GLUT_LIB_DEPS="$GLUT_LIBS"
1159 # should check these...
1160 GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
1161 GLUT_PC_LIB_PRIV="$GLUT_LIB_DEPS"
1162 GLUT_PC_CFLAGS="$X11_INCLUDES"
1164 if test "x$GCC" = xyes; then
1165 GLUT_CFLAGS="$GLUT_CFLAGS -fexceptions"
1167 GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
1168 GLUT_PC_LIB_PRIV="$GLUT_PC_LIB_PRIV -lm"
1170 # If static, empty GLUT_LIB_DEPS and add libs for programs to link
1171 if test "$enable_static" = no; then
1172 GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
1174 APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
1179 AC_SUBST([GLUT_LIB_DEPS])
1180 AC_SUBST([GLUT_MESA_DEPS])
1181 AC_SUBST([GLUT_CFLAGS])
1182 AC_SUBST([GLUT_PC_REQ_PRIV])
1183 AC_SUBST([GLUT_PC_LIB_PRIV])
1184 AC_SUBST([GLUT_PC_CFLAGS])
1187 dnl Program library dependencies
1188 dnl Only libm is added here if necessary as the libraries should
1189 dnl be pulled in by the linker
1191 if test "x$APP_LIB_DEPS" = x; then
1194 APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm"
1197 APP_LIB_DEPS="-lX11"
1204 AC_SUBST([APP_LIB_DEPS])
1205 AC_SUBST([PROGRAM_DIRS])
1208 dnl Gallium configuration
1210 AC_ARG_ENABLE([gallium],
1211 [AS_HELP_STRING([--disable-gallium],
1212 [build gallium @<:@default=enabled@:>@])],
1213 [enable_gallium="$enableval"],
1214 [enable_gallium=yes])
1215 if test "x$enable_gallium" = xyes; then
1216 SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
1217 AC_CHECK_HEADER([udis86.h], [HAS_UDIS86="yes"],
1219 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1222 AC_SUBST([LLVM_CFLAGS])
1223 AC_SUBST([LLVM_LIBS])
1224 AC_SUBST([LLVM_LDFLAGS])
1225 AC_SUBST([LLVM_VERSION])
1228 EGL_CLIENT_APIS='$(GL_LIB)'
1229 if test "x$enable_gles_overlay" = xyes; then
1230 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GLESv1_CM_LIB) $(GLESv2_LIB)'
1234 dnl Gallium state trackers configuration
1236 AC_ARG_WITH([state-trackers],
1237 [AS_HELP_STRING([--with-state-trackers@<:@=DIRS...@:>@],
1238 [comma delimited state_trackers list, e.g.
1239 "egl,glx" @<:@default=auto@:>@])],
1240 [with_state_trackers="$withval"],
1241 [with_state_trackers=yes])
1243 case "$with_state_trackers" in
1245 GALLIUM_STATE_TRACKERS_DIRS=""
1248 # look at what else is built
1249 case "$mesa_driver" in
1251 GALLIUM_STATE_TRACKERS_DIRS=glx
1254 GALLIUM_STATE_TRACKERS_DIRS="dri"
1256 if test "x$enable_egl" = xyes; then
1257 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS egl"
1260 # Have only tested st/xorg on 1.6.0 servers
1261 PKG_CHECK_MODULES(XORG, [xorg-server >= 1.6.0 libdrm >= $LIBDRM_XORG_REQUIRED libkms >= $LIBKMS_XORG_REQUIRED],
1262 HAVE_ST_XORG="yes"; GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg",
1268 # verify the requested state tracker exist
1270 _state_trackers=`IFS=', '; echo $with_state_trackers`
1271 for tracker in $_state_trackers; do
1274 if test "x$mesa_driver" != xdri; then
1275 AC_MSG_ERROR([cannot build dri state tracker without mesa driver set to dri])
1280 if test "x$enable_egl" != xyes; then
1281 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1286 PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1287 PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1288 PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1292 AC_MSG_WARN([state tracker 'es' has been replaced by --enable-gles-overlay])
1294 if test "x$enable_gles_overlay" != xyes; then
1295 if test "x$enable_gles1" != xyes -a "x$enable_gles2" != xyes; then
1296 CORE_DIRS="mapi/es1api mapi/es2api $CORE_DIRS"
1299 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GLESv1_CM_LIB) $(GLESv2_LIB)'
1304 CORE_DIRS="$CORE_DIRS mapi/vgapi"
1305 VG_LIB_DEPS="$VG_LIB_DEPS -lpthread"
1306 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1310 if test -n "$tracker"; then
1311 test -d "$srcdir/src/gallium/state_trackers/$tracker" || \
1312 AC_MSG_ERROR([state tracker '$tracker' doesn't exist])
1313 if test -n "$state_trackers"; then
1314 state_trackers="$state_trackers $tracker"
1316 state_trackers="$tracker"
1320 GALLIUM_STATE_TRACKERS_DIRS="$state_trackers"
1324 AC_SUBST([VG_LIB_DEPS])
1325 AC_SUBST([EGL_CLIENT_APIS])
1327 if test "x$HAVE_ST_EGL" = xyes; then
1328 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl"
1329 # define GLX_DIRECT_RENDERING even when the driver is not dri
1330 if test "x$mesa_driver" != xdri -a "x$driglx_direct" = xyes; then
1331 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1335 if test "x$HAVE_ST_XORG" = xyes; then
1336 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1337 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1338 HAVE_XEXTPROTO_71="no")
1341 AC_ARG_WITH([egl-platforms],
1342 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1343 [comma delimited native platforms libEGL supports, e.g.
1344 "x11,kms" @<:@default=auto@:>@])],
1345 [with_egl_platforms="$withval"],
1346 [with_egl_platforms=yes])
1347 AC_ARG_WITH([egl-displays],
1348 [AS_HELP_STRING([--with-egl-displays@<:@=DIRS...@:>@],
1349 [DEPRECATED. Use --with-egl-platforms instead])],
1350 [with_egl_platforms="$withval"])
1353 case "$with_egl_platforms" in
1355 if test "x$enable_egl" = xyes && test "x$mesa_driver" != xosmesa; then
1360 if test "x$enable_egl" != xyes; then
1361 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1363 # verify the requested driver directories exist
1364 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1365 for plat in $egl_platforms; do
1366 test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \
1367 AC_MSG_ERROR([EGL platform '$plat' does't exist])
1368 if test "$plat" = "fbdev"; then
1369 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev"
1372 EGL_PLATFORMS="$egl_platforms"
1375 AC_SUBST([EGL_PLATFORMS])
1377 AC_ARG_WITH([egl-driver-dir],
1378 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1379 [directory for EGL drivers [[default=${libdir}/egl]]])],
1380 [EGL_DRIVER_INSTALL_DIR="$withval"],
1381 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1382 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1384 AC_ARG_WITH([xorg-driver-dir],
1385 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1386 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1387 [XORG_DRIVER_INSTALL_DIR="$withval"],
1388 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1389 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1391 AC_ARG_WITH([max-width],
1392 [AS_HELP_STRING([--with-max-width=N],
1393 [Maximum framebuffer width (4096)])],
1394 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1395 AS_IF([test "${withval}" -gt "4096"],
1396 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1398 AC_ARG_WITH([max-height],
1399 [AS_HELP_STRING([--with-max-height=N],
1400 [Maximum framebuffer height (4096)])],
1401 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1402 AS_IF([test "${withval}" -gt "4096"],
1403 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1409 AC_ARG_ENABLE([gallium-llvm],
1410 [AS_HELP_STRING([--enable-gallium-llvm],
1411 [build gallium LLVM support @<:@default=disabled@:>@])],
1412 [enable_gallium_llvm="$enableval"],
1413 [enable_gallium_llvm=auto])
1414 if test "x$enable_gallium_llvm" = xyes; then
1415 if test "x$LLVM_CONFIG" != xno; then
1416 LLVM_VERSION=`$LLVM_CONFIG --version`
1417 LLVM_CFLAGS=`$LLVM_CONFIG --cflags`
1418 LLVM_LIBS="`$LLVM_CONFIG --libs jit interpreter nativecodegen bitwriter` -lstdc++"
1420 if test "x$HAS_UDIS86" != xno; then
1421 LLVM_LIBS="$LLVM_LIBS -ludis86"
1422 DEFINES="$DEFINES -DHAVE_UDIS86"
1424 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1425 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1426 DEFINES="$DEFINES -DGALLIUM_LLVMPIPE -D__STDC_CONSTANT_MACROS"
1436 dnl Gallium helper functions
1438 gallium_check_st() {
1439 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes; then
1440 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1442 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1443 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1445 if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
1446 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1452 dnl Gallium SVGA configuration
1454 AC_ARG_ENABLE([gallium-svga],
1455 [AS_HELP_STRING([--enable-gallium-svga],
1456 [build gallium SVGA @<:@default=disabled@:>@])],
1457 [enable_gallium_svga="$enableval"],
1458 [enable_gallium_svga=auto])
1459 if test "x$enable_gallium_svga" = xyes; then
1460 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1461 gallium_check_st "svga/drm" "dri-vmwgfx" "xorg-vmwgfx"
1462 elif test "x$enable_gallium_svga" = xauto; then
1463 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1467 dnl Gallium i915 configuration
1469 AC_ARG_ENABLE([gallium-i915],
1470 [AS_HELP_STRING([--enable-gallium-i915],
1471 [build gallium i915 @<:@default=disabled@:>@])],
1472 [enable_gallium_i915="$enableval"],
1473 [enable_gallium_i915=auto])
1474 if test "x$enable_gallium_i915" = xyes; then
1475 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1476 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915"
1477 gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1478 elif test "x$enable_gallium_i915" = xauto; then
1479 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1480 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915"
1484 dnl Gallium i965 configuration
1486 AC_ARG_ENABLE([gallium-i965],
1487 [AS_HELP_STRING([--enable-gallium-i965],
1488 [build gallium i965 @<:@default=disabled@:>@])],
1489 [enable_gallium_i965="$enableval"],
1490 [enable_gallium_i965=auto])
1491 if test "x$enable_gallium_i965" = xyes; then
1492 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i965"
1493 gallium_check_st "i965/drm" "dri-i965" "xorg-i965"
1494 elif test "x$enable_gallium_i965" = xauto; then
1495 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i965"
1499 dnl Gallium Radeon configuration
1501 AC_ARG_ENABLE([gallium-radeon],
1502 [AS_HELP_STRING([--enable-gallium-radeon],
1503 [build gallium radeon @<:@default=disabled@:>@])],
1504 [enable_gallium_radeon="$enableval"],
1505 [enable_gallium_radeon=auto])
1506 if test "x$enable_gallium_radeon" = xyes; then
1507 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1508 gallium_check_st "radeon/drm" "dri-r300" "xorg-radeon"
1509 elif test "x$enable_gallium_radeon" = xauto; then
1510 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1514 dnl Gallium Radeon r600g configuration
1516 AC_ARG_ENABLE([gallium-r600],
1517 [AS_HELP_STRING([--enable-gallium-r600],
1518 [build gallium radeon @<:@default=disabled@:>@])],
1519 [enable_gallium_r600="$enableval"],
1520 [enable_gallium_r600=auto])
1521 if test "x$enable_gallium_r600" = xyes; then
1522 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1523 gallium_check_st "r600/drm" "dri-r600"
1527 dnl Gallium Nouveau configuration
1529 AC_ARG_ENABLE([gallium-nouveau],
1530 [AS_HELP_STRING([--enable-gallium-nouveau],
1531 [build gallium nouveau @<:@default=disabled@:>@])],
1532 [enable_gallium_nouveau="$enableval"],
1533 [enable_gallium_nouveau=no])
1534 if test "x$enable_gallium_nouveau" = xyes; then
1535 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50"
1536 gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau"
1540 dnl Gallium swrast configuration
1542 AC_ARG_ENABLE([gallium-swrast],
1543 [AS_HELP_STRING([--enable-gallium-swrast],
1544 [build gallium swrast @<:@default=auto@:>@])],
1545 [enable_gallium_swrast="$enableval"],
1546 [enable_gallium_swrast=auto])
1547 if test "x$enable_gallium_swrast" = xyes || test "x$enable_gallium_swrast" = xauto; then
1548 if test "x$HAVE_ST_DRI" = xyes; then
1549 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1553 dnl prepend CORE_DIRS to SRC_DIRS
1554 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
1556 dnl Restore LDFLAGS and CPPFLAGS
1557 LDFLAGS="$_SAVE_LDFLAGS"
1558 CPPFLAGS="$_SAVE_CPPFLAGS"
1560 dnl Substitute the config
1561 AC_CONFIG_FILES([configs/autoconf])
1563 dnl Replace the configs/current symlink
1564 AC_CONFIG_COMMANDS([configs],[
1565 if test -f configs/current || test -L configs/current; then
1566 rm -f configs/current
1568 ln -s autoconf configs/current
1574 dnl Output some configuration info for the user
1577 echo " prefix: $prefix"
1578 echo " exec_prefix: $exec_prefix"
1579 echo " libdir: $libdir"
1580 echo " includedir: $includedir"
1584 echo " Driver: $mesa_driver"
1585 if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
1586 echo " OSMesa: lib$OSMESA_LIB"
1590 if test "$mesa_driver" = dri; then
1591 # cleanup the drivers var
1592 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1593 if test "x$DRI_DIRS" = x; then
1594 echo " DRI drivers: no"
1596 echo " DRI drivers: $dri_dirs"
1598 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
1600 echo " Use XCB: $enable_xcb"
1603 if test "x$MESA_LLVM" = x1; then
1605 echo " llvm-config: $LLVM_CONFIG"
1606 echo " llvm-version: $LLVM_VERSION"
1612 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
1613 echo " Gallium: yes"
1614 echo " Gallium dirs: $GALLIUM_DIRS"
1615 echo " Target dirs: $GALLIUM_TARGET_DIRS"
1616 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
1617 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
1618 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
1619 if test "x$HAVE_ST_EGL" = xyes; then
1620 echo " EGL client APIs: $EGL_CLIENT_APIS"
1628 echo " Shared libs: $enable_shared"
1629 echo " Static libs: $enable_static"
1630 if test "$enable_egl" = yes; then
1631 echo " EGL: $EGL_DRIVERS_DIRS"
1632 echo " EGL platforms: $EGL_PLATFORMS"
1636 echo " GLU: $enable_glu"
1637 echo " GLw: $enable_glw (Motif: $enable_motif)"
1638 echo " glut: $enable_glut"
1640 dnl Compiler options
1641 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
1642 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1643 $SED 's/^ *//;s/ */ /;s/ *$//'`
1644 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1645 $SED 's/^ *//;s/ */ /;s/ *$//'`
1646 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1648 echo " CFLAGS: $cflags"
1649 echo " CXXFLAGS: $cxxflags"
1650 echo " Macros: $defines"
1653 echo " Run '${MAKE-make}' to build Mesa"