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'])])
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 DRI2PROTO_REQUIRED=1.99.3
28 AC_CHECK_PROGS([MAKE], [gmake make])
29 AC_PATH_PROG([MKDEP], [makedepend])
30 AC_PATH_PROG([SED], [sed])
32 dnl Our fallback install-sh is a symlink to minstall. Use the existing
33 dnl configuration in that case.
35 test "x$INSTALL" = "x$ac_install_sh" && INSTALL='$(MINSTALL)'
37 dnl We need a POSIX shell for parts of the build. Assume we have one
41 # Solaris /bin/sh is too old/non-POSIX compliant
42 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
47 MKDEP_OPTIONS=-fdepend
48 dnl Ask gcc where it's keeping its secret headers
49 if test "x$GCC" = xyes; then
50 for dir in include include-fixed; do
51 GCC_INCLUDES=`$CC -print-file-name=$dir`
52 if test "x$GCC_INCLUDES" != x && \
53 test "$GCC_INCLUDES" != "$dir" && \
54 test -d "$GCC_INCLUDES"; then
55 MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
59 AC_SUBST([MKDEP_OPTIONS])
61 dnl Make sure the pkg-config macros are defined
62 m4_ifndef([PKG_PROG_PKG_CONFIG],
63 [m4_fatal([Could not locate the pkg-config autoconf macros.
64 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
65 are in a different location, try setting the environment variable
66 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
69 dnl LIB_DIR - library basename
70 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
73 dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
74 _SAVE_LDFLAGS="$LDFLAGS"
75 AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker])
76 AC_SUBST([EXTRA_LIB_PATH])
78 dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
79 _SAVE_CPPFLAGS="$CPPFLAGS"
80 AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers])
81 AC_SUBST([X11_INCLUDES])
88 DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS"
91 DEFINES="$DEFINES -DPTHREADS -DSVR4"
95 dnl Add flags for gcc and g++
96 if test "x$GCC" = xyes; then
97 CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99 -ffast-math"
99 # Work around aliasing bugs - developers should comment this out
100 CFLAGS="$CFLAGS -fno-strict-aliasing"
102 if test "x$GXX" = xyes; then
103 CXXFLAGS="$CXXFLAGS -Wall"
105 # Work around aliasing bugs - developers should comment this out
106 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
109 dnl These should be unnecessary, but let the user set them if they want
110 AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
111 Default is to use CFLAGS.])
112 AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
113 compiler. Default is to use CFLAGS.])
114 AC_SUBST([OPT_FLAGS])
115 AC_SUBST([ARCH_FLAGS])
118 dnl Hacks to enable 32 or 64 bit build
120 AC_ARG_ENABLE([32-bit],
121 [AS_HELP_STRING([--enable-32-bit],
122 [build 32-bit libraries @<:@default=auto@:>@])],
123 [enable_32bit="$enableval"],
126 if test "x$enable_32bit" = xyes; then
127 if test "x$GCC" = xyes; then
128 CFLAGS="$CFLAGS -m32"
129 ARCH_FLAGS="$ARCH_FLAGS -m32"
131 if test "x$GXX" = xyes; then
132 CXXFLAGS="$CXXFLAGS -m32"
135 AC_ARG_ENABLE([64-bit],
136 [AS_HELP_STRING([--enable-64-bit],
137 [build 64-bit libraries @<:@default=auto@:>@])],
138 [enable_64bit="$enableval"],
141 if test "x$enable_64bit" = xyes; then
142 if test "x$GCC" = xyes; then
143 CFLAGS="$CFLAGS -m64"
145 if test "x$GXX" = xyes; then
146 CXXFLAGS="$CXXFLAGS -m64"
151 dnl shared/static libraries, mimic libtool options
153 AC_ARG_ENABLE([static],
154 [AS_HELP_STRING([--enable-static],
155 [build static libraries @<:@default=disabled@:>@])],
156 [enable_static="$enableval"],
159 case "x$enable_static" in
161 x ) enable_static=no ;;
163 AC_MSG_ERROR([Static library option '$enable_static' is not a valid])
166 AC_ARG_ENABLE([shared],
167 [AS_HELP_STRING([--disable-shared],
168 [build shared libraries @<:@default=enabled@:>@])],
169 [enable_shared="$enableval"],
172 case "x$enable_shared" in
174 x ) enable_shared=yes ;;
176 AC_MSG_ERROR([Shared library option '$enable_shared' is not a valid])
180 dnl Can't have static and shared libraries, default to static if user
181 dnl explicitly requested. If both disabled, set to static since shared
182 dnl was explicitly requirested.
183 case "x$enable_static$enable_shared" in
185 AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
189 AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
197 AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
198 if test "$enable_static" = yes; then
199 MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
201 AC_SUBST([MKLIB_OPTIONS])
204 dnl other compiler options
206 AC_ARG_ENABLE([debug],
207 [AS_HELP_STRING([--enable-debug],
208 [use debug compiler flags and macros @<:@default=disabled@:>@])],
209 [enable_debug="$enableval"],
212 if test "x$enable_debug" = xyes; then
213 DEFINES="$DEFINES -DDEBUG"
214 if test "x$GCC" = xyes; then
217 if test "x$GXX" = xyes; then
218 CXXFLAGS="$CXXFLAGS -g"
225 if test "$enable_static" = yes; then
230 LIB_EXTENSION='dylib' ;;
232 LIB_EXTENSION='dll' ;;
236 LIB_EXTENSION='so' ;;
240 GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
241 GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
242 GLUT_LIB_NAME='lib$(GLUT_LIB).'${LIB_EXTENSION}
243 GLW_LIB_NAME='lib$(GLW_LIB).'${LIB_EXTENSION}
244 OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
246 GL_LIB_GLOB='lib$(GL_LIB).*'${LIB_EXTENSION}'*'
247 GLU_LIB_GLOB='lib$(GLU_LIB).*'${LIB_EXTENSION}'*'
248 GLUT_LIB_GLOB='lib$(GLUT_LIB).*'${LIB_EXTENSION}'*'
249 GLW_LIB_GLOB='lib$(GLW_LIB).*'${LIB_EXTENSION}'*'
250 OSMESA_LIB_GLOB='lib$(OSMESA_LIB).*'${LIB_EXTENSION}'*'
252 AC_SUBST([GL_LIB_NAME])
253 AC_SUBST([GLU_LIB_NAME])
254 AC_SUBST([GLUT_LIB_NAME])
255 AC_SUBST([GLW_LIB_NAME])
256 AC_SUBST([OSMESA_LIB_NAME])
258 AC_SUBST([GL_LIB_GLOB])
259 AC_SUBST([GLU_LIB_GLOB])
260 AC_SUBST([GLUT_LIB_GLOB])
261 AC_SUBST([GLW_LIB_GLOB])
262 AC_SUBST([OSMESA_LIB_GLOB])
265 dnl Arch/platform-specific settings
268 [AS_HELP_STRING([--disable-asm],
269 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
270 [enable_asm="$enableval"],
277 AC_MSG_CHECKING([whether to enable assembly])
278 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
279 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
280 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
284 AC_MSG_RESULT([no, cross compiling])
288 # check for supported arches
289 if test "x$enable_asm" = xyes; then
293 linux* | *freebsd* | dragonfly*)
294 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
300 linux* | *freebsd* | dragonfly*)
301 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
323 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
324 MESA_ASM_SOURCES='$(X86_SOURCES)'
325 GLAPI_ASM_SOURCES='$(X86_API)'
326 AC_MSG_RESULT([yes, x86])
329 ASM_FLAGS="-DUSE_X86_64_ASM"
330 MESA_ASM_SOURCES='$(X86-64_SOURCES)'
331 GLAPI_ASM_SOURCES='$(X86-64_API)'
332 AC_MSG_RESULT([yes, x86_64])
335 ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM"
336 MESA_ASM_SOURCES='$(PPC_SOURCES)'
337 AC_MSG_RESULT([yes, ppc])
340 ASM_FLAGS="-DUSE_SPARC_ASM"
341 MESA_ASM_SOURCES='$(SPARC_SOURCES)'
342 GLAPI_ASM_SOURCES='$(SPARC_API)'
343 AC_MSG_RESULT([yes, sparc])
346 AC_MSG_RESULT([no, platform not supported])
350 AC_SUBST([ASM_FLAGS])
351 AC_SUBST([MESA_ASM_SOURCES])
352 AC_SUBST([GLAPI_ASM_SOURCES])
357 dnl Check to see if dlopen is in default libraries (like Solaris, which
358 dnl has it in libc), or if libdl is needed to get it.
359 AC_CHECK_FUNC([dlopen], [],
360 [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
362 dnl See if posix_memalign is available
363 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
365 dnl SELinux awareness.
366 AC_ARG_ENABLE([selinux],
367 [AS_HELP_STRING([--enable-selinux],
368 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
369 [MESA_SELINUX="$enableval"],
371 if test "x$enable_selinux" = "xyes"; then
372 AC_CHECK_HEADER([selinux/selinux.h],[],
373 [AC_MSG_ERROR([SELinux headers not found])])
374 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
375 [AC_MSG_ERROR([SELinux library not found])])
376 SELINUX_LIBS="-lselinux"
377 DEFINES="$DEFINES -DMESA_SELINUX"
381 dnl Driver configuration. Options are xlib, dri and osmesa right now.
382 dnl More later: directfb, fbdev, ...
384 default_driver="xlib"
389 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
392 *freebsd* | dragonfly*)
394 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
399 AC_ARG_WITH([driver],
400 [AS_HELP_STRING([--with-driver=DRIVER],
401 [driver for Mesa: xlib,dri,osmesa @<:@default=dri when available, or xlib@:>@])],
402 [mesa_driver="$withval"],
403 [mesa_driver="$default_driver"])
404 dnl Check for valid option
405 case "x$mesa_driver" in
409 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
414 dnl Driver specific build directories
419 GALLIUM_DIRS="auxiliary drivers state_trackers"
420 GALLIUM_WINSYS_DIRS=""
421 GALLIUM_WINSYS_DRM_DIRS=""
422 GALLIUM_AUXILIARY_DIRS="rbug draw translate cso_cache pipebuffer tgsi sct rtasm util indices vl"
423 GALLIUM_DRIVERS_DIRS="softpipe failover trace identity"
424 GALLIUM_STATE_TRACKERS_DIRS=""
426 case "$mesa_driver" in
429 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS xlib"
432 SRC_DIRS="glx/x11 $SRC_DIRS"
435 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS drm"
443 AC_SUBST([DRIVER_DIRS])
444 AC_SUBST([WINDOW_SYSTEM])
445 AC_SUBST([GALLIUM_DIRS])
446 AC_SUBST([GALLIUM_WINSYS_DIRS])
447 AC_SUBST([GALLIUM_WINSYS_DRM_DIRS])
448 AC_SUBST([GALLIUM_DRIVERS_DIRS])
449 AC_SUBST([GALLIUM_AUXILIARY_DIRS])
450 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
451 AC_SUBST([RADEON_CFLAGS])
452 AC_SUBST([RADEON_LDFLAGS])
455 dnl User supplied program configuration
457 if test -d "$srcdir/progs/demos"; then
463 [AS_HELP_STRING([--with-demos@<:@=DIRS...@:>@],
464 [optional comma delimited demo directories to build
465 @<:@default=auto if source available@:>@])],
466 [with_demos="$withval"],
467 [with_demos="$default_demos"])
468 if test "x$with_demos" = x; then
472 dnl If $with_demos is yes, directories will be added as libs available
474 case "$with_demos" in
477 # If the driver isn't osmesa, we have libGL and can build xdemos
478 if test "$mesa_driver" != osmesa; then
479 PROGRAM_DIRS="xdemos"
483 # verify the requested demos directories exist
484 demos=`IFS=,; echo $with_demos`
485 for demo in $demos; do
486 test -d "$srcdir/progs/$demo" || \
487 AC_MSG_ERROR([Program directory '$demo' doesn't exist])
489 PROGRAM_DIRS="$demos"
494 dnl Find out if X is available. The variable have_x is set if libX11 is
495 dnl found to mimic AC_PATH_XTRA.
497 if test -n "$PKG_CONFIG"; then
498 AC_MSG_CHECKING([pkg-config files for X11 are available])
499 PKG_CHECK_EXISTS([x11],[
505 AC_MSG_RESULT([$x11_pkgconfig])
509 dnl Use the autoconf macro if no pkg-config files
510 if test "$x11_pkgconfig" = no; then
514 dnl Try to tell the user that the --x-* options are only used when
515 dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
516 m4_divert_once([HELP_BEGIN],
517 [These options are only used when the X libraries cannot be found by the
518 pkg-config utility.])
520 dnl We need X for xlib and dri, so bomb now if it's not found
521 case "$mesa_driver" in
523 if test "$no_x" = yes; then
524 AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver])
529 dnl XCB - this is only used for GLX right now
531 [AS_HELP_STRING([--enable-xcb],
532 [use XCB for GLX @<:@default=disabled@:>@])],
533 [enable_xcb="$enableval"],
535 if test "x$enable_xcb" = xyes; then
536 DEFINES="$DEFINES -DUSE_XCB"
542 dnl libGL configuration per driver
544 case "$mesa_driver" in
546 if test "$x11_pkgconfig" = yes; then
547 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
548 GL_PC_REQ_PRIV="x11 xext"
549 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
550 GL_LIB_DEPS="$XLIBGL_LIBS"
552 # should check these...
553 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
554 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
555 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
556 GL_PC_CFLAGS="$X11_INCLUDES"
558 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread"
559 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
561 # if static, move the external libraries to the programs
562 # and empty the libraries for libGL
563 if test "$enable_static" = yes; then
564 APP_LIB_DEPS="$APP_LIB_DEPS $GL_LIB_DEPS"
569 # DRI must be shared, I think
570 if test "$enable_static" = yes; then
571 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
575 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED])
576 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
577 GL_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
578 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
580 PKG_CHECK_MODULES([LIBDRM_RADEON], [libdrm_radeon], HAVE_LIBDRM_RADEON=yes, HAVE_LIBDRM_RADEON=no)
582 if test "$HAVE_LIBDRM_RADEON" = yes; then
583 RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS"
584 RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS
587 # find the DRI deps for libGL
588 if test "$x11_pkgconfig" = yes; then
589 # add xcb modules if necessary
590 dri_modules="x11 xext xxf86vm xdamage xfixes"
591 if test "$enable_xcb" = yes; then
592 dri_modules="$dri_modules x11-xcb xcb-glx"
595 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
596 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
597 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
598 GL_LIB_DEPS="$DRIGL_LIBS"
600 # should check these...
601 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
602 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
603 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
604 GL_PC_CFLAGS="$X11_INCLUDES"
606 # XCB can only be used from pkg-config
607 if test "$enable_xcb" = yes; then
608 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
609 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
610 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
611 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
615 # need DRM libs, -lpthread, etc.
616 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
617 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
620 # No libGL for osmesa
624 AC_SUBST([GL_LIB_DEPS])
625 AC_SUBST([GL_PC_REQ_PRIV])
626 AC_SUBST([GL_PC_LIB_PRIV])
627 AC_SUBST([GL_PC_CFLAGS])
628 AC_SUBST([DRI_PC_REQ_PRIV])
633 if test "$mesa_driver" = xlib; then
634 DEFINES="$DEFINES -DUSE_XSHM"
640 AC_ARG_ENABLE([glx-tls],
641 [AS_HELP_STRING([--enable-glx-tls],
642 [enable TLS support in GLX @<:@default=disabled@:>@])],
643 [GLX_USE_TLS="$enableval"],
645 dnl Directory for DRI drivers
646 AC_ARG_WITH([dri-driverdir],
647 [AS_HELP_STRING([--with-dri-driverdir=DIR],
648 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
649 [DRI_DRIVER_INSTALL_DIR="$withval"],
650 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
651 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
652 dnl Extra search path for DRI drivers
653 AC_ARG_WITH([dri-searchpath],
654 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
655 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
656 [DRI_DRIVER_SEARCH_DIR="$withval"],
657 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
658 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
659 dnl Direct rendering or just indirect rendering
660 AC_ARG_ENABLE([driglx-direct],
661 [AS_HELP_STRING([--disable-driglx-direct],
662 [enable direct rendering in GLX for DRI @<:@default=enabled@:>@])],
663 [driglx_direct="$enableval"],
664 [driglx_direct="yes"])
665 dnl Which drivers to build - default is chosen by platform
666 AC_ARG_WITH([dri-drivers],
667 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
668 [comma delimited DRI drivers list, e.g.
669 "swrast,i965,radeon" @<:@default=auto@:>@])],
670 [with_dri_drivers="$withval"],
671 [with_dri_drivers=yes])
672 if test "x$with_dri_drivers" = x; then
676 dnl If $with_dri_drivers is yes, directories will be added through
679 case "$with_dri_drivers" in
685 # verify the requested driver directories exist
686 dri_drivers=`IFS=', '; echo $with_dri_drivers`
687 for driver in $dri_drivers; do
688 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
689 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
691 DRI_DIRS="$dri_drivers"
695 dnl Just default to no EGL for now
697 AC_SUBST([USING_EGL])
699 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
700 if test "$mesa_driver" = dri; then
702 if test "x$GLX_USE_TLS" = xyes; then
703 DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS"
706 if test "x$USING_EGL" = x1; then
710 # Platform specific settings and drivers to build
713 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
714 if test "x$driglx_direct" = xyes; then
715 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
717 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
721 # ffb, gamma, and sis are missing because they have not be
722 # converted to use the new interface. i810 are missing
723 # because there is no x86-64 system where they could *ever*
725 if test "x$DRI_DIRS" = "xyes"; then
726 DRI_DIRS="i915 i965 mach64 mga r128 r200 r300 r600 radeon \
727 savage tdfx unichrome swrast"
731 # Build only the drivers for cards that exist on PowerPC.
732 # At some point MGA will be added, but not yet.
733 if test "x$DRI_DIRS" = "xyes"; then
734 DRI_DIRS="mach64 r128 r200 r300 r600 radeon tdfx swrast"
738 # Build only the drivers for cards that exist on sparc`
739 if test "x$DRI_DIRS" = "xyes"; then
740 DRI_DIRS="mach64 r128 r200 r300 r600 radeon ffb swrast"
745 freebsd* | dragonfly*)
746 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
747 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
748 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
749 if test "x$driglx_direct" = xyes; then
750 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
752 if test "x$GXX" = xyes; then
753 CXXFLAGS="$CXXFLAGS -ansi -pedantic"
756 # ffb and gamma are missing because they have not been converted
757 # to use the new interface.
758 if test "x$DRI_DIRS" = "xyes"; then
759 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon tdfx \
760 unichrome savage sis swrast"
764 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
765 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
768 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
769 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
770 if test "x$driglx_direct" = xyes; then
771 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
777 if test "x$DRI_DIRS" = "xyes"; then
778 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon \
779 savage sis tdfx unichrome ffb swrast"
782 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
788 [AS_HELP_STRING([--with-expat=DIR],
789 [expat install directory])],[
790 EXPAT_INCLUDES="-I$withval/include"
791 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
792 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
793 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
795 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
796 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
797 [AC_MSG_ERROR([Expat required for DRI.])])
799 # put all the necessary libs together
800 DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
803 AC_SUBST([EXPAT_INCLUDES])
804 AC_SUBST([DRI_LIB_DEPS])
807 dnl OSMesa configuration
809 if test "$mesa_driver" = xlib; then
810 default_gl_osmesa=yes
814 AC_ARG_ENABLE([gl-osmesa],
815 [AS_HELP_STRING([--enable-gl-osmesa],
816 [enable OSMesa on libGL @<:@default=enabled for xlib driver@:>@])],
817 [gl_osmesa="$enableval"],
818 [gl_osmesa="$default_gl_osmesa"])
819 if test "x$gl_osmesa" = xyes; then
820 if test "$mesa_driver" = osmesa; then
821 AC_MSG_ERROR([libGL is not available for OSMesa driver])
823 DRIVER_DIRS="$DRIVER_DIRS osmesa"
827 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
828 AC_ARG_WITH([osmesa-bits],
829 [AS_HELP_STRING([--with-osmesa-bits=BITS],
830 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
831 [osmesa_bits="$withval"],
833 if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
834 AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
837 case "x$osmesa_bits" in
842 OSMESA_LIB="OSMesa$osmesa_bits"
843 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
846 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
849 AC_SUBST([OSMESA_LIB])
851 case "$mesa_driver" in
853 # only link libraries with osmesa if shared
854 if test "$enable_static" = no; then
855 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
860 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
863 # Link OSMesa to libGL otherwise
865 # only link libraries with osmesa if shared
866 if test "$enable_static" = no; then
867 OSMESA_MESA_DEPS='-l$(GL_LIB)'
874 OSMESA_PC_LIB_PRIV="$OSMESA_PC_LIB_PRIV"
875 AC_SUBST([OSMESA_LIB_DEPS])
876 AC_SUBST([OSMESA_MESA_DEPS])
877 AC_SUBST([OSMESA_PC_REQ])
878 AC_SUBST([OSMESA_PC_LIB_PRIV])
881 dnl EGL configuration
884 [AS_HELP_STRING([--disable-egl],
885 [disable EGL library @<:@default=enabled@:>@])],
886 [enable_egl="$enableval"],
888 if test "x$enable_egl" = xyes; then
889 SRC_DIRS="$SRC_DIRS egl"
891 if test "$x11_pkgconfig" = yes; then
892 PKG_CHECK_MODULES([EGL], [x11])
893 EGL_LIB_DEPS="$EGL_LIBS"
895 # should check these...
896 EGL_LIB_DEPS="$X_LIBS -lX11"
898 EGL_LIB_DEPS="$EGL_LIB_DEPS $DLOPEN_LIBS"
900 AC_SUBST([EGL_LIB_DEPS])
903 dnl GLU configuration
906 [AS_HELP_STRING([--disable-glu],
907 [enable OpenGL Utility library @<:@default=enabled@:>@])],
908 [enable_glu="$enableval"],
910 if test "x$enable_glu" = xyes; then
911 SRC_DIRS="$SRC_DIRS glu"
913 case "$mesa_driver" in
915 # If GLU is available and we have libOSMesa (not 16 or 32),
916 # we can build the osdemos
917 if test "$with_demos" = yes && test "$osmesa_bits" = 8; then
918 PROGRAM_DIRS="$PROGRAM_DIRS osdemos"
921 # Link libGLU to libOSMesa instead of libGL
924 if test "$enable_static" = no; then
925 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
931 # If static, empty GLU_LIB_DEPS and add libs for programs to link
933 GLU_PC_LIB_PRIV="-lm"
934 if test "$enable_static" = no; then
936 GLU_MESA_DEPS='-l$(GL_LIB)'
940 APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
945 if test "$enable_static" = no; then
946 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
948 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
949 AC_SUBST([GLU_LIB_DEPS])
950 AC_SUBST([GLU_MESA_DEPS])
951 AC_SUBST([GLU_PC_REQ])
952 AC_SUBST([GLU_PC_REQ_PRIV])
953 AC_SUBST([GLU_PC_LIB_PRIV])
954 AC_SUBST([GLU_PC_CFLAGS])
957 dnl GLw configuration
960 [AS_HELP_STRING([--disable-glw],
961 [enable Xt/Motif widget library @<:@default=enabled@:>@])],
962 [enable_glw="$enableval"],
964 dnl Don't build GLw on osmesa
965 if test "x$enable_glw" = xyes && test "$mesa_driver" = osmesa; then
966 AC_MSG_WARN([Disabling GLw since the driver is OSMesa])
969 AC_ARG_ENABLE([motif],
970 [AS_HELP_STRING([--enable-motif],
971 [use Motif widgets in GLw @<:@default=disabled@:>@])],
972 [enable_motif="$enableval"],
975 if test "x$enable_glw" = xyes; then
976 SRC_DIRS="$SRC_DIRS glw"
977 if test "$x11_pkgconfig" = yes; then
978 PKG_CHECK_MODULES([GLW],[x11 xt])
979 GLW_PC_REQ_PRIV="x11 xt"
980 GLW_LIB_DEPS="$GLW_LIBS"
982 # should check these...
983 GLW_LIB_DEPS="$X_LIBS -lXt -lX11"
984 GLW_PC_LIB_PRIV="$GLW_LIB_DEPS"
985 GLW_PC_CFLAGS="$X11_INCLUDES"
988 GLW_SOURCES="GLwDrawA.c"
990 if test "x$enable_motif" = xyes; then
991 GLW_SOURCES="$GLW_SOURCES GLwMDrawA.c"
992 AC_PATH_PROG([MOTIF_CONFIG], [motif-config], [no])
993 if test "x$MOTIF_CONFIG" != xno; then
994 MOTIF_CFLAGS=`$MOTIF_CONFIG --cflags`
995 MOTIF_LIBS=`$MOTIF_CONFIG --libs`
997 AC_CHECK_HEADER([Xm/PrimitiveP.h], [],
998 [AC_MSG_ERROR([Can't locate Motif headers])])
999 AC_CHECK_LIB([Xm], [XmGetPixmap], [MOTIF_LIBS="-lXm"],
1000 [AC_MSG_ERROR([Can't locate Motif Xm library])])
1002 # MOTIF_LIBS is prepended to GLW_LIB_DEPS since Xm needs Xt/X11
1003 GLW_LIB_DEPS="$MOTIF_LIBS $GLW_LIB_DEPS"
1004 GLW_PC_LIB_PRIV="$MOTIF_LIBS $GLW_PC_LIB_PRIV"
1005 GLW_PC_CFLAGS="$MOTIF_CFLAGS $GLW_PC_CFLAGS"
1008 # If static, empty GLW_LIB_DEPS and add libs for programs to link
1009 GLW_PC_LIB_PRIV="$GLW_PC_LIB_PRIV"
1010 if test "$enable_static" = no; then
1011 GLW_MESA_DEPS='-l$(GL_LIB)'
1012 GLW_LIB_DEPS="$GLW_LIB_DEPS"
1014 APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
1019 AC_SUBST([GLW_LIB_DEPS])
1020 AC_SUBST([GLW_MESA_DEPS])
1021 AC_SUBST([GLW_SOURCES])
1022 AC_SUBST([MOTIF_CFLAGS])
1023 AC_SUBST([GLW_PC_REQ_PRIV])
1024 AC_SUBST([GLW_PC_LIB_PRIV])
1025 AC_SUBST([GLW_PC_CFLAGS])
1028 dnl GLUT configuration
1030 if test -f "$srcdir/include/GL/glut.h"; then
1035 AC_ARG_ENABLE([glut],
1036 [AS_HELP_STRING([--disable-glut],
1037 [enable GLUT library @<:@default=enabled if source available@:>@])],
1038 [enable_glut="$enableval"],
1039 [enable_glut="$default_glut"])
1041 dnl Can't build glut if GLU not available
1042 if test "x$enable_glu$enable_glut" = xnoyes; then
1043 AC_MSG_WARN([Disabling glut since GLU is disabled])
1046 dnl Don't build glut on osmesa
1047 if test "x$enable_glut" = xyes && test "$mesa_driver" = osmesa; then
1048 AC_MSG_WARN([Disabling glut since the driver is OSMesa])
1052 if test "x$enable_glut" = xyes; then
1053 SRC_DIRS="$SRC_DIRS glut/glx"
1055 if test "x$GCC" = xyes; then
1056 GLUT_CFLAGS="-fexceptions"
1058 if test "$x11_pkgconfig" = yes; then
1059 PKG_CHECK_MODULES([GLUT],[x11 xmu xi])
1060 GLUT_PC_REQ_PRIV="x11 xmu xi"
1061 GLUT_LIB_DEPS="$GLUT_LIBS"
1063 # should check these...
1064 GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
1065 GLUT_PC_LIB_PRIV="$GLUT_LIB_DEPS"
1066 GLUT_PC_CFLAGS="$X11_INCLUDES"
1068 GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
1069 GLUT_PC_LIB_PRIV="$GLUT_PC_LIB_PRIV -lm"
1071 # If glut is available, we can build most programs
1072 if test "$with_demos" = yes; then
1073 PROGRAM_DIRS="$PROGRAM_DIRS demos redbook samples glsl"
1076 # If static, empty GLUT_LIB_DEPS and add libs for programs to link
1077 if test "$enable_static" = no; then
1078 GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
1080 APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
1085 AC_SUBST([GLUT_LIB_DEPS])
1086 AC_SUBST([GLUT_MESA_DEPS])
1087 AC_SUBST([GLUT_CFLAGS])
1088 AC_SUBST([GLUT_PC_REQ_PRIV])
1089 AC_SUBST([GLUT_PC_LIB_PRIV])
1090 AC_SUBST([GLUT_PC_CFLAGS])
1093 dnl Program library dependencies
1094 dnl Only libm is added here if necessary as the libraries should
1095 dnl be pulled in by the linker
1097 if test "x$APP_LIB_DEPS" = x; then
1100 APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm"
1103 APP_LIB_DEPS="-lX11"
1110 AC_SUBST([APP_LIB_DEPS])
1111 AC_SUBST([PROGRAM_DIRS])
1114 dnl Gallium configuration
1116 AC_ARG_ENABLE([gallium],
1117 [AS_HELP_STRING([--disable-gallium],
1118 [build gallium @<:@default=enabled@:>@])],
1119 [enable_gallium="$enableval"],
1120 [enable_gallium=yes])
1121 if test "x$enable_gallium" = xyes; then
1122 SRC_DIRS="$SRC_DIRS gallium gallium/winsys"
1126 dnl Gallium state trackers configuration
1128 AC_ARG_WITH([state-trackers],
1129 [AS_HELP_STRING([--with-state-trackers@<:@=DIRS...@:>@],
1130 [comma delimited state_trackers list, e.g.
1131 "egl,glx" @<:@default=auto@:>@])],
1132 [with_state_trackers="$withval"],
1133 [with_state_trackers=yes])
1135 case "$with_state_trackers" in
1137 GALLIUM_STATE_TRACKERS_DIRS=""
1140 # look at what else is built
1141 case "$mesa_driver" in
1143 GALLIUM_STATE_TRACKERS_DIRS=glx
1146 test "x$enable_egl" = xyes && GALLIUM_STATE_TRACKERS_DIRS=egl
1151 # verify the requested state tracker exist
1152 state_trackers=`IFS=', '; echo $with_state_trackers`
1153 for tracker in $state_trackers; do
1154 test -d "$srcdir/src/gallium/state_trackers/$tracker" || \
1155 AC_MSG_ERROR([state tracker '$tracker' doesn't exist])
1157 if test "$tracker" = egl && test "x$enable_egl" != xyes; then
1158 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1160 if test "$tracker" = xorg; then
1161 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1162 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1163 HAVE_XEXTPROTO_71="no")
1166 GALLIUM_STATE_TRACKERS_DIRS="$state_trackers"
1170 AC_ARG_WITH([xorg-driver-dir],
1171 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1172 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1173 [XORG_DRIVER_INSTALL_DIR="$withval"],
1174 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1175 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1177 AC_ARG_WITH([max-width],
1178 [AS_HELP_STRING([--with-max-width=N],
1179 [Maximum framebuffer width (4096)])],
1180 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1181 AS_IF([test "${withval}" -gt "4096"],
1182 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1184 AC_ARG_WITH([max-height],
1185 [AS_HELP_STRING([--with-max-height=N],
1186 [Maximum framebuffer height (4096)])],
1187 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1188 AS_IF([test "${withval}" -gt "4096"],
1189 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1193 dnl Gallium SVGA configuration
1195 AC_ARG_ENABLE([gallium-svga],
1196 [AS_HELP_STRING([--disable-gallium-svga],
1197 [build gallium SVGA @<:@default=enabled@:>@])],
1198 [enable_gallium_svga="$enableval"],
1199 [enable_gallium_svga=yes])
1200 if test "x$enable_gallium_svga" = xyes; then
1201 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS vmware"
1202 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga"
1206 dnl Gallium Intel configuration
1208 AC_ARG_ENABLE([gallium-intel],
1209 [AS_HELP_STRING([--disable-gallium-intel],
1210 [build gallium intel @<:@default=enabled@:>@])],
1211 [enable_gallium_intel="$enableval"],
1212 [enable_gallium_intel=yes])
1213 if test "x$enable_gallium_intel" = xyes; then
1214 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS intel"
1215 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915"
1219 dnl Gallium Radeon configuration
1221 AC_ARG_ENABLE([gallium-radeon],
1222 [AS_HELP_STRING([--enable-gallium-radeon],
1223 [build gallium radeon @<:@default=disabled@:>@])],
1224 [enable_gallium_radeon="$enableval"],
1225 [enable_gallium_radeon=no])
1226 if test "x$enable_gallium_radeon" = xyes; then
1227 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS radeon"
1228 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1232 dnl Gallium Nouveau configuration
1234 AC_ARG_ENABLE([gallium-nouveau],
1235 [AS_HELP_STRING([--enable-gallium-nouveau],
1236 [build gallium nouveau @<:@default=disabled@:>@])],
1237 [enable_gallium_nouveau="$enableval"],
1238 [enable_gallium_nouveau=no])
1239 if test "x$enable_gallium_nouveau" = xyes; then
1240 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS nouveau"
1241 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nv04 nv10 nv20 nv30 nv40 nv50"
1245 dnl Restore LDFLAGS and CPPFLAGS
1246 LDFLAGS="$_SAVE_LDFLAGS"
1247 CPPFLAGS="$_SAVE_CPPFLAGS"
1249 dnl Substitute the config
1250 AC_CONFIG_FILES([configs/autoconf])
1252 dnl Replace the configs/current symlink
1253 AC_CONFIG_COMMANDS([configs],[
1254 if test -f configs/current || test -L configs/current; then
1255 rm -f configs/current
1257 ln -s autoconf configs/current
1263 dnl Output some configuration info for the user
1266 echo " prefix: $prefix"
1267 echo " exec_prefix: $exec_prefix"
1268 echo " libdir: $libdir"
1269 echo " includedir: $includedir"
1273 echo " Driver: $mesa_driver"
1274 if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
1275 echo " OSMesa: lib$OSMESA_LIB"
1279 if test "$mesa_driver" = dri; then
1280 # cleanup the drivers var
1281 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1282 if test "x$DRI_DIRS" = x; then
1283 echo " DRI drivers: no"
1285 echo " DRI drivers: $dri_dirs"
1287 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
1289 echo " Use XCB: $enable_xcb"
1292 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
1293 echo " Gallium: yes"
1294 echo " Gallium dirs: $GALLIUM_DIRS"
1295 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
1296 echo " Winsys drm dirs:$GALLIUM_WINSYS_DRM_DIRS"
1297 echo " Auxiliary dirs: $GALLIUM_AUXILIARY_DIRS"
1298 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
1299 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
1306 echo " Shared libs: $enable_shared"
1307 echo " Static libs: $enable_static"
1308 echo " EGL: $enable_egl"
1309 echo " GLU: $enable_glu"
1310 echo " GLw: $enable_glw (Motif: $enable_motif)"
1311 echo " glut: $enable_glut"
1314 # cleanup the programs var for display
1315 program_dirs=`echo $PROGRAM_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1316 if test "x$program_dirs" = x; then
1319 echo " Demos: $program_dirs"
1322 dnl Compiler options
1323 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
1324 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1325 $SED 's/^ *//;s/ */ /;s/ *$//'`
1326 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1327 $SED 's/^ *//;s/ */ /;s/ *$//'`
1328 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1330 echo " CFLAGS: $cflags"
1331 echo " CXXFLAGS: $cxxflags"
1332 echo " Macros: $defines"
1335 echo " Run '${MAKE-make}' to build Mesa"