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
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 We need a POSIX shell for parts of the build. Assume we have one
36 # Solaris /bin/sh is too old/non-POSIX compliant
37 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
42 MKDEP_OPTIONS=-fdepend
43 dnl Ask gcc where it's keeping its secret headers
44 if test "x$GCC" = xyes; then
45 for dir in include include-fixed; do
46 GCC_INCLUDES=`$CC -print-file-name=$dir`
47 if test "x$GCC_INCLUDES" != x && \
48 test "$GCC_INCLUDES" != "$dir" && \
49 test -d "$GCC_INCLUDES"; then
50 MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
54 AC_SUBST([MKDEP_OPTIONS])
56 dnl Make sure the pkg-config macros are defined
57 m4_ifndef([PKG_PROG_PKG_CONFIG],
58 [m4_fatal([Could not locate the pkg-config autoconf macros.
59 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
60 are in a different location, try setting the environment variable
61 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
64 dnl LIB_DIR - library basename
65 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
68 dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
69 _SAVE_LDFLAGS="$LDFLAGS"
70 AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker])
71 AC_SUBST([EXTRA_LIB_PATH])
73 dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
74 _SAVE_CPPFLAGS="$CPPFLAGS"
75 AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers])
76 AC_SUBST([X11_INCLUDES])
83 DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS"
86 DEFINES="$DEFINES -DPTHREADS -DSVR4"
90 dnl Add flags for gcc and g++
91 if test "x$GCC" = xyes; then
92 CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99 -ffast-math"
94 # Work around aliasing bugs - developers should comment this out
95 CFLAGS="$CFLAGS -fno-strict-aliasing"
97 if test "x$GXX" = xyes; then
98 CXXFLAGS="$CXXFLAGS -Wall"
100 # Work around aliasing bugs - developers should comment this out
101 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
104 dnl These should be unnecessary, but let the user set them if they want
105 AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
106 Default is to use CFLAGS.])
107 AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
108 compiler. Default is to use CFLAGS.])
109 AC_SUBST([OPT_FLAGS])
110 AC_SUBST([ARCH_FLAGS])
113 dnl Hacks to enable 32 or 64 bit build
115 AC_ARG_ENABLE([32-bit],
116 [AS_HELP_STRING([--enable-32-bit],
117 [build 32-bit libraries @<:@default=auto@:>@])],
118 [enable_32bit="$enableval"],
121 if test "x$enable_32bit" = xyes; then
122 if test "x$GCC" = xyes; then
123 CFLAGS="$CFLAGS -m32"
125 if test "x$GXX" = xyes; then
126 CXXFLAGS="$CXXFLAGS -m32"
129 AC_ARG_ENABLE([64-bit],
130 [AS_HELP_STRING([--enable-64-bit],
131 [build 64-bit libraries @<:@default=auto@:>@])],
132 [enable_64bit="$enableval"],
135 if test "x$enable_64bit" = xyes; then
136 if test "x$GCC" = xyes; then
137 CFLAGS="$CFLAGS -m64"
139 if test "x$GXX" = xyes; then
140 CXXFLAGS="$CXXFLAGS -m64"
145 dnl shared/static libraries, mimic libtool options
147 AC_ARG_ENABLE([static],
148 [AS_HELP_STRING([--enable-static],
149 [build static libraries @<:@default=disabled@:>@])],
150 [enable_static="$enableval"],
153 case "x$enable_static" in
155 x ) enable_static=no ;;
157 AC_MSG_ERROR([Static library option '$enable_static' is not a valid])
160 AC_ARG_ENABLE([shared],
161 [AS_HELP_STRING([--disable-shared],
162 [build shared libraries @<:@default=enabled@:>@])],
163 [enable_shared="$enableval"],
166 case "x$enable_shared" in
168 x ) enable_shared=yes ;;
170 AC_MSG_ERROR([Shared library option '$enable_shared' is not a valid])
174 dnl Can't have static and shared libraries, default to static if user
175 dnl explicitly requested. If both disabled, set to static since shared
176 dnl was explicitly requirested.
177 case "x$enable_static$enable_shared" in
179 AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
183 AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
191 AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
192 if test "$enable_static" = yes; then
193 MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
195 AC_SUBST([MKLIB_OPTIONS])
198 dnl other compiler options
200 AC_ARG_ENABLE([debug],
201 [AS_HELP_STRING([--enable-debug],
202 [use debug compiler flags and macros @<:@default=disabled@:>@])],
203 [enable_debug="$enableval"],
206 if test "x$enable_debug" = xyes; then
207 DEFINES="$DEFINES -DDEBUG"
208 if test "x$GCC" = xyes; then
211 if test "x$GXX" = xyes; then
212 CXXFLAGS="$CXXFLAGS -g"
219 if test "$enable_static" = yes; then
224 LIB_EXTENSION='dylib' ;;
226 LIB_EXTENSION='so' ;;
230 GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
231 GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
232 GLUT_LIB_NAME='lib$(GLUT_LIB).'${LIB_EXTENSION}
233 GLW_LIB_NAME='lib$(GLW_LIB).'${LIB_EXTENSION}
234 OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
236 GL_LIB_GLOB='lib$(GL_LIB).*'${LIB_EXTENSION}'*'
237 GLU_LIB_GLOB='lib$(GLU_LIB).*'${LIB_EXTENSION}'*'
238 GLUT_LIB_GLOB='lib$(GLUT_LIB).*'${LIB_EXTENSION}'*'
239 GLW_LIB_GLOB='lib$(GLW_LIB).*'${LIB_EXTENSION}'*'
240 OSMESA_LIB_GLOB='lib$(OSMESA_LIB).*'${LIB_EXTENSION}'*'
242 AC_SUBST([GL_LIB_NAME])
243 AC_SUBST([GLU_LIB_NAME])
244 AC_SUBST([GLUT_LIB_NAME])
245 AC_SUBST([GLW_LIB_NAME])
246 AC_SUBST([OSMESA_LIB_NAME])
248 AC_SUBST([GL_LIB_GLOB])
249 AC_SUBST([GLU_LIB_GLOB])
250 AC_SUBST([GLUT_LIB_GLOB])
251 AC_SUBST([GLW_LIB_GLOB])
252 AC_SUBST([OSMESA_LIB_GLOB])
255 dnl Arch/platform-specific settings
258 [AS_HELP_STRING([--disable-asm],
259 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
260 [enable_asm="$enableval"],
267 AC_MSG_CHECKING([whether to enable assembly])
268 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
269 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
270 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
274 AC_MSG_RESULT([no, cross compiling])
278 # check for supported arches
279 if test "x$enable_asm" = xyes; then
283 linux* | *freebsd* | dragonfly*)
284 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
290 linux* | *freebsd* | dragonfly*)
291 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
313 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
314 MESA_ASM_SOURCES='$(X86_SOURCES)'
315 GLAPI_ASM_SOURCES='$(X86_API)'
316 AC_MSG_RESULT([yes, x86])
319 ASM_FLAGS="-DUSE_X86_64_ASM"
320 MESA_ASM_SOURCES='$(X86-64_SOURCES)'
321 GLAPI_ASM_SOURCES='$(X86-64_API)'
322 AC_MSG_RESULT([yes, x86_64])
325 ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM"
326 MESA_ASM_SOURCES='$(PPC_SOURCES)'
327 AC_MSG_RESULT([yes, ppc])
330 ASM_FLAGS="-DUSE_SPARC_ASM"
331 MESA_ASM_SOURCES='$(SPARC_SOURCES)'
332 GLAPI_ASM_SOURCES='$(SPARC_API)'
333 AC_MSG_RESULT([yes, sparc])
336 AC_MSG_RESULT([no, platform not supported])
340 AC_SUBST([ASM_FLAGS])
341 AC_SUBST([MESA_ASM_SOURCES])
342 AC_SUBST([GLAPI_ASM_SOURCES])
347 dnl Check to see if dlopen is in default libraries (like Solaris, which
348 dnl has it in libc), or if libdl is needed to get it.
349 AC_CHECK_FUNC([dlopen], [],
350 [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
352 dnl See if posix_memalign is available
353 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
355 dnl SELinux awareness.
356 AC_ARG_ENABLE([selinux],
357 [AS_HELP_STRING([--enable-selinux],
358 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
359 [MESA_SELINUX="$enableval"],
361 if test "x$enable_selinux" = "xyes"; then
362 AC_CHECK_HEADER([selinux/selinux.h],[],
363 [AC_MSG_ERROR([SELinux headers not found])])
364 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
365 [AC_MSG_ERROR([SELinux library not found])])
366 SELINUX_LIBS="-lselinux"
367 DEFINES="$DEFINES -DMESA_SELINUX"
371 dnl Driver configuration. Options are xlib, dri and osmesa right now.
372 dnl More later: directfb, fbdev, ...
374 default_driver="xlib"
379 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
382 *freebsd* | dragonfly*)
384 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
389 AC_ARG_WITH([driver],
390 [AS_HELP_STRING([--with-driver=DRIVER],
391 [driver for Mesa: xlib,dri,osmesa @<:@default=dri when available, or xlib@:>@])],
392 [mesa_driver="$withval"],
393 [mesa_driver="$default_driver"])
394 dnl Check for valid option
395 case "x$mesa_driver" in
399 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
404 dnl Driver specific build directories
409 GALLIUM_DIRS="auxiliary drivers state_trackers"
410 GALLIUM_WINSYS_DIRS=""
411 GALLIUM_WINSYS_DRM_DIRS=""
412 GALLIUM_AUXILIARY_DIRS="draw translate cso_cache pipebuffer tgsi sct rtasm util indices"
413 GALLIUM_DRIVERS_DIRS="softpipe failover trace"
414 GALLIUM_STATE_TRACKERS_DIRS=""
416 case "$mesa_driver" in
419 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS xlib"
422 SRC_DIRS="glx/x11 $SRC_DIRS"
425 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS drm"
433 AC_SUBST([DRIVER_DIRS])
434 AC_SUBST([WINDOW_SYSTEM])
435 AC_SUBST([GALLIUM_DIRS])
436 AC_SUBST([GALLIUM_WINSYS_DIRS])
437 AC_SUBST([GALLIUM_WINSYS_DRM_DIRS])
438 AC_SUBST([GALLIUM_DRIVERS_DIRS])
439 AC_SUBST([GALLIUM_AUXILIARY_DIRS])
440 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
443 dnl User supplied program configuration
445 if test -d "$srcdir/progs/demos"; then
451 [AS_HELP_STRING([--with-demos@<:@=DIRS...@:>@],
452 [optional comma delimited demo directories to build
453 @<:@default=auto if source available@:>@])],
454 [with_demos="$withval"],
455 [with_demos="$default_demos"])
456 if test "x$with_demos" = x; then
460 dnl If $with_demos is yes, directories will be added as libs available
462 case "$with_demos" in
465 # If the driver isn't osmesa, we have libGL and can build xdemos
466 if test "$mesa_driver" != osmesa; then
467 PROGRAM_DIRS="xdemos"
471 # verify the requested demos directories exist
472 demos=`IFS=,; echo $with_demos`
473 for demo in $demos; do
474 test -d "$srcdir/progs/$demo" || \
475 AC_MSG_ERROR([Program directory '$demo' doesn't exist])
477 PROGRAM_DIRS="$demos"
482 dnl Find out if X is available. The variable have_x is set if libX11 is
483 dnl found to mimic AC_PATH_XTRA.
485 if test -n "$PKG_CONFIG"; then
486 AC_MSG_CHECKING([pkg-config files for X11 are available])
487 PKG_CHECK_EXISTS([x11],[
493 AC_MSG_RESULT([$x11_pkgconfig])
497 dnl Use the autoconf macro if no pkg-config files
498 if test "$x11_pkgconfig" = no; then
502 dnl Try to tell the user that the --x-* options are only used when
503 dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
504 m4_divert_once([HELP_BEGIN],
505 [These options are only used when the X libraries cannot be found by the
506 pkg-config utility.])
508 dnl We need X for xlib and dri, so bomb now if it's not found
509 case "$mesa_driver" in
511 if test "$no_x" = yes; then
512 AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver])
517 dnl XCB - this is only used for GLX right now
519 [AS_HELP_STRING([--enable-xcb],
520 [use XCB for GLX @<:@default=disabled@:>@])],
521 [enable_xcb="$enableval"],
523 if test "x$enable_xcb" = xyes; then
524 DEFINES="$DEFINES -DUSE_XCB"
530 dnl libGL configuration per driver
532 case "$mesa_driver" in
534 if test "$x11_pkgconfig" = yes; then
535 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
536 GL_PC_REQ_PRIV="x11 xext"
537 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
538 GL_LIB_DEPS="$XLIBGL_LIBS"
540 # should check these...
541 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
542 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
543 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
544 GL_PC_CFLAGS="$X11_INCLUDES"
546 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread"
547 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
549 # if static, move the external libraries to the programs
550 # and empty the libraries for libGL
551 if test "$enable_static" = yes; then
552 APP_LIB_DEPS="$APP_LIB_DEPS $GL_LIB_DEPS"
557 # DRI must be shared, I think
558 if test "$enable_static" = yes; then
559 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
563 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED])
564 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
565 GL_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
566 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
568 # find the DRI deps for libGL
569 if test "$x11_pkgconfig" = yes; then
570 # add xcb modules if necessary
571 dri_modules="x11 xext xxf86vm xdamage xfixes"
572 if test "$enable_xcb" = yes; then
573 dri_modules="$dri_modules x11-xcb xcb-glx"
576 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
577 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
578 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
579 GL_LIB_DEPS="$DRIGL_LIBS"
581 # should check these...
582 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
583 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
584 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
585 GL_PC_CFLAGS="$X11_INCLUDES"
587 # XCB can only be used from pkg-config
588 if test "$enable_xcb" = yes; then
589 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
590 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
591 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
592 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
596 # need DRM libs, -lpthread, etc.
597 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
598 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
601 # No libGL for osmesa
605 AC_SUBST([GL_LIB_DEPS])
606 AC_SUBST([GL_PC_REQ_PRIV])
607 AC_SUBST([GL_PC_LIB_PRIV])
608 AC_SUBST([GL_PC_CFLAGS])
609 AC_SUBST([DRI_PC_REQ_PRIV])
614 if test "$mesa_driver" = xlib; then
615 DEFINES="$DEFINES -DUSE_XSHM"
621 AC_ARG_ENABLE([glx-tls],
622 [AS_HELP_STRING([--enable-glx-tls],
623 [enable TLS support in GLX @<:@default=disabled@:>@])],
624 [GLX_USE_TLS="$enableval"],
626 dnl Directory for DRI drivers
627 AC_ARG_WITH([dri-driverdir],
628 [AS_HELP_STRING([--with-dri-driverdir=DIR],
629 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
630 [DRI_DRIVER_INSTALL_DIR="$withval"],
631 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
632 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
633 dnl Direct rendering or just indirect rendering
634 AC_ARG_ENABLE([driglx-direct],
635 [AS_HELP_STRING([--disable-driglx-direct],
636 [enable direct rendering in GLX for DRI @<:@default=enabled@:>@])],
637 [driglx_direct="$enableval"],
638 [driglx_direct="yes"])
639 dnl Which drivers to build - default is chosen by platform
640 AC_ARG_WITH([dri-drivers],
641 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
642 [comma delimited DRI drivers list, e.g.
643 "swrast,i965,radeon,nouveau" @<:@default=auto@:>@])],
644 [with_dri_drivers="$withval"],
645 [with_dri_drivers=yes])
646 if test "x$with_dri_drivers" = x; then
650 dnl If $with_dri_drivers is yes, directories will be added through
653 case "$with_dri_drivers" in
659 # verify the requested driver directories exist
660 dri_drivers=`IFS=', '; echo $with_dri_drivers`
661 for driver in $dri_drivers; do
662 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
663 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
665 DRI_DIRS="$dri_drivers"
669 dnl Just default to no EGL for now
671 AC_SUBST([USING_EGL])
673 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
674 if test "$mesa_driver" = dri; then
676 if test "x$GLX_USE_TLS" = xyes; then
677 DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS"
680 if test "x$USING_EGL" = x1; then
684 # Platform specific settings and drivers to build
687 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
688 if test "x$driglx_direct" = xyes; then
689 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
691 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
695 # ffb, gamma, and sis are missing because they have not be
696 # converted to use the new interface. i810 are missing
697 # because there is no x86-64 system where they could *ever*
699 if test "x$DRI_DIRS" = "xyes"; then
700 DRI_DIRS="i915 i965 mach64 mga r128 r200 r300 radeon \
701 savage tdfx unichrome swrast"
705 # Build only the drivers for cards that exist on PowerPC.
706 # At some point MGA will be added, but not yet.
707 if test "x$DRI_DIRS" = "xyes"; then
708 DRI_DIRS="mach64 r128 r200 r300 radeon tdfx swrast"
712 # Build only the drivers for cards that exist on sparc`
713 if test "x$DRI_DIRS" = "xyes"; then
714 DRI_DIRS="mach64 r128 r200 r300 radeon ffb swrast"
719 freebsd* | dragonfly*)
720 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
721 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
722 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
723 if test "x$driglx_direct" = xyes; then
724 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
726 if test "x$GXX" = xyes; then
727 CXXFLAGS="$CXXFLAGS -ansi -pedantic"
730 # ffb and gamma are missing because they have not been converted
731 # to use the new interface.
732 if test "x$DRI_DIRS" = "xyes"; then
733 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 radeon tdfx \
734 unichrome savage sis swrast"
738 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
739 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
742 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
743 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
744 if test "x$driglx_direct" = xyes; then
745 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
751 if test "x$DRI_DIRS" = "xyes"; then
752 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 radeon s3v \
753 savage sis tdfx trident unichrome ffb swrast"
756 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
762 [AS_HELP_STRING([--with-expat=DIR],
763 [expat install directory])],[
764 EXPAT_INCLUDES="-I$withval/include"
765 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
766 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
767 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
769 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
770 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
771 [AC_MSG_ERROR([Expat required for DRI.])])
773 # put all the necessary libs together
774 DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
777 AC_SUBST([EXPAT_INCLUDES])
778 AC_SUBST([DRI_LIB_DEPS])
781 dnl OSMesa configuration
783 if test "$mesa_driver" = xlib; then
784 default_gl_osmesa=yes
788 AC_ARG_ENABLE([gl-osmesa],
789 [AS_HELP_STRING([--enable-gl-osmesa],
790 [enable OSMesa on libGL @<:@default=enabled for xlib driver@:>@])],
791 [gl_osmesa="$enableval"],
792 [gl_osmesa="$default_gl_osmesa"])
793 if test "x$gl_osmesa" = xyes; then
794 if test "$mesa_driver" = osmesa; then
795 AC_MSG_ERROR([libGL is not available for OSMesa driver])
797 DRIVER_DIRS="$DRIVER_DIRS osmesa"
801 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
802 AC_ARG_WITH([osmesa-bits],
803 [AS_HELP_STRING([--with-osmesa-bits=BITS],
804 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
805 [osmesa_bits="$withval"],
807 if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
808 AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
811 case "x$osmesa_bits" in
816 OSMESA_LIB="OSMesa$osmesa_bits"
817 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
820 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
823 AC_SUBST([OSMESA_LIB])
825 case "$mesa_driver" in
827 # only link libraries with osmesa if shared
828 if test "$enable_static" = no; then
829 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
834 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
837 # Link OSMesa to libGL otherwise
839 # only link libraries with osmesa if shared
840 if test "$enable_static" = no; then
841 OSMESA_MESA_DEPS='-l$(GL_LIB)'
848 OSMESA_PC_LIB_PRIV="$OSMESA_PC_LIB_PRIV"
849 AC_SUBST([OSMESA_LIB_DEPS])
850 AC_SUBST([OSMESA_MESA_DEPS])
851 AC_SUBST([OSMESA_PC_REQ])
852 AC_SUBST([OSMESA_PC_LIB_PRIV])
855 dnl EGL configuration
858 [AS_HELP_STRING([--disable-egl],
859 [disable EGL library @<:@default=enabled@:>@])],
860 [enable_egl="$enableval"],
862 if test "x$enable_egl" = xyes; then
863 SRC_DIRS="$SRC_DIRS egl"
865 if test "$x11_pkgconfig" = yes; then
866 PKG_CHECK_MODULES([EGL], [x11])
867 EGL_LIB_DEPS="$EGL_LIBS"
869 # should check these...
870 EGL_LIB_DEPS="$X_LIBS -lX11"
872 EGL_LIB_DEPS="$EGL_LIB_DEPS $DLOPEN_LIBS"
874 AC_SUBST([EGL_LIB_DEPS])
877 dnl GLU configuration
880 [AS_HELP_STRING([--disable-glu],
881 [enable OpenGL Utility library @<:@default=enabled@:>@])],
882 [enable_glu="$enableval"],
884 if test "x$enable_glu" = xyes; then
885 SRC_DIRS="$SRC_DIRS glu"
887 case "$mesa_driver" in
889 # If GLU is available and we have libOSMesa (not 16 or 32),
890 # we can build the osdemos
891 if test "$with_demos" = yes && test "$osmesa_bits" = 8; then
892 PROGRAM_DIRS="$PROGRAM_DIRS osdemos"
895 # Link libGLU to libOSMesa instead of libGL
898 if test "$enable_static" = no; then
899 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
905 # If static, empty GLU_LIB_DEPS and add libs for programs to link
907 GLU_PC_LIB_PRIV="-lm"
908 if test "$enable_static" = no; then
910 GLU_MESA_DEPS='-l$(GL_LIB)'
914 APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
919 if test "$enable_static" = no; then
920 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
922 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
923 AC_SUBST([GLU_LIB_DEPS])
924 AC_SUBST([GLU_MESA_DEPS])
925 AC_SUBST([GLU_PC_REQ])
926 AC_SUBST([GLU_PC_REQ_PRIV])
927 AC_SUBST([GLU_PC_LIB_PRIV])
928 AC_SUBST([GLU_PC_CFLAGS])
931 dnl GLw configuration
934 [AS_HELP_STRING([--disable-glw],
935 [enable Xt/Motif widget library @<:@default=enabled@:>@])],
936 [enable_glw="$enableval"],
938 dnl Don't build GLw on osmesa
939 if test "x$enable_glw" = xyes && test "$mesa_driver" = osmesa; then
940 AC_MSG_WARN([Disabling GLw since the driver is OSMesa])
943 AC_ARG_ENABLE([motif],
944 [AS_HELP_STRING([--enable-motif],
945 [use Motif widgets in GLw @<:@default=disabled@:>@])],
946 [enable_motif="$enableval"],
949 if test "x$enable_glw" = xyes; then
950 SRC_DIRS="$SRC_DIRS glw"
951 if test "$x11_pkgconfig" = yes; then
952 PKG_CHECK_MODULES([GLW],[x11 xt])
953 GLW_PC_REQ_PRIV="x11 xt"
954 GLW_LIB_DEPS="$GLW_LIBS"
956 # should check these...
957 GLW_LIB_DEPS="$X_LIBS -lXt -lX11"
958 GLW_PC_LIB_PRIV="$GLW_LIB_DEPS"
959 GLW_PC_CFLAGS="$X11_INCLUDES"
962 GLW_SOURCES="GLwDrawA.c"
964 if test "x$enable_motif" = xyes; then
965 GLW_SOURCES="$GLW_SOURCES GLwMDrawA.c"
966 AC_PATH_PROG([MOTIF_CONFIG], [motif-config], [no])
967 if test "x$MOTIF_CONFIG" != xno; then
968 MOTIF_CFLAGS=`$MOTIF_CONFIG --cflags`
969 MOTIF_LIBS=`$MOTIF_CONFIG --libs`
971 AC_CHECK_HEADER([Xm/PrimitiveP.h], [],
972 [AC_MSG_ERROR([Can't locate Motif headers])])
973 AC_CHECK_LIB([Xm], [XmGetPixmap], [MOTIF_LIBS="-lXm"],
974 [AC_MSG_ERROR([Can't locate Motif Xm library])])
976 # MOTIF_LIBS is prepended to GLW_LIB_DEPS since Xm needs Xt/X11
977 GLW_LIB_DEPS="$MOTIF_LIBS $GLW_LIB_DEPS"
978 GLW_PC_LIB_PRIV="$MOTIF_LIBS $GLW_PC_LIB_PRIV"
979 GLW_PC_CFLAGS="$MOTIF_CFLAGS $GLW_PC_CFLAGS"
982 # If static, empty GLW_LIB_DEPS and add libs for programs to link
983 GLW_PC_LIB_PRIV="$GLW_PC_LIB_PRIV"
984 if test "$enable_static" = no; then
985 GLW_MESA_DEPS='-l$(GL_LIB)'
986 GLW_LIB_DEPS="$GLW_LIB_DEPS"
988 APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
993 AC_SUBST([GLW_LIB_DEPS])
994 AC_SUBST([GLW_MESA_DEPS])
995 AC_SUBST([GLW_SOURCES])
996 AC_SUBST([MOTIF_CFLAGS])
997 AC_SUBST([GLW_PC_REQ_PRIV])
998 AC_SUBST([GLW_PC_LIB_PRIV])
999 AC_SUBST([GLW_PC_CFLAGS])
1002 dnl GLUT configuration
1004 if test -f "$srcdir/include/GL/glut.h"; then
1009 AC_ARG_ENABLE([glut],
1010 [AS_HELP_STRING([--disable-glut],
1011 [enable GLUT library @<:@default=enabled if source available@:>@])],
1012 [enable_glut="$enableval"],
1013 [enable_glut="$default_glut"])
1015 dnl Can't build glut if GLU not available
1016 if test "x$enable_glu$enable_glut" = xnoyes; then
1017 AC_MSG_WARN([Disabling glut since GLU is disabled])
1020 dnl Don't build glut on osmesa
1021 if test "x$enable_glut" = xyes && test "$mesa_driver" = osmesa; then
1022 AC_MSG_WARN([Disabling glut since the driver is OSMesa])
1026 if test "x$enable_glut" = xyes; then
1027 SRC_DIRS="$SRC_DIRS glut/glx"
1029 if test "x$GCC" = xyes; then
1030 GLUT_CFLAGS="-fexceptions"
1032 if test "$x11_pkgconfig" = yes; then
1033 PKG_CHECK_MODULES([GLUT],[x11 xmu xi])
1034 GLUT_PC_REQ_PRIV="x11 xmu xi"
1035 GLUT_LIB_DEPS="$GLUT_LIBS"
1037 # should check these...
1038 GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
1039 GLUT_PC_LIB_PRIV="$GLUT_LIB_DEPS"
1040 GLUT_PC_CFLAGS="$X11_INCLUDES"
1042 GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
1043 GLUT_PC_LIB_PRIV="$GLUT_PC_LIB_PRIV -lm"
1045 # If glut is available, we can build most programs
1046 if test "$with_demos" = yes; then
1047 PROGRAM_DIRS="$PROGRAM_DIRS demos redbook samples glsl"
1050 # If static, empty GLUT_LIB_DEPS and add libs for programs to link
1051 if test "$enable_static" = no; then
1052 GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
1054 APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
1059 AC_SUBST([GLUT_LIB_DEPS])
1060 AC_SUBST([GLUT_MESA_DEPS])
1061 AC_SUBST([GLUT_CFLAGS])
1062 AC_SUBST([GLUT_PC_REQ_PRIV])
1063 AC_SUBST([GLUT_PC_LIB_PRIV])
1064 AC_SUBST([GLUT_PC_CFLAGS])
1067 dnl Program library dependencies
1068 dnl Only libm is added here if necessary as the libraries should
1069 dnl be pulled in by the linker
1071 if test "x$APP_LIB_DEPS" = x; then
1074 APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm"
1081 AC_SUBST([APP_LIB_DEPS])
1082 AC_SUBST([PROGRAM_DIRS])
1085 dnl Gallium configuration
1087 AC_ARG_ENABLE([gallium],
1088 [AS_HELP_STRING([--disable-gallium],
1089 [build gallium @<:@default=enabled@:>@])],
1090 [enable_gallium="$enableval"],
1091 [enable_gallium=yes])
1092 if test "x$enable_gallium" = xyes; then
1093 SRC_DIRS="$SRC_DIRS gallium gallium/winsys"
1097 dnl Gallium state trackers configuration
1099 AC_ARG_WITH([state-trackers],
1100 [AS_HELP_STRING([--with-state-trackers@<:@=DIRS...@:>@],
1101 [comma delimited state_trackers list, e.g.
1102 "egl,glx" @<:@default=auto@:>@])],
1103 [with_state_trackers="$withval"],
1104 [with_state_trackers=yes])
1106 case "$with_state_trackers" in
1108 GALLIUM_STATE_TRACKERS_DIRS=""
1111 # look at what else is built
1112 case "$mesa_driver" in
1114 GALLIUM_STATE_TRACKERS_DIRS=glx
1117 test "x$enable_egl" = xyes && GALLIUM_STATE_TRACKERS_DIRS=egl
1122 # verify the requested state tracker exist
1123 state_trackers=`IFS=', '; echo $with_state_trackers`
1124 for tracker in $state_trackers; do
1125 test -d "$srcdir/src/gallium/state_trackers/$tracker" || \
1126 AC_MSG_ERROR([state tracker '$tracker' doesn't exist])
1128 if test "$tracker" = egl && test "x$enable_egl" != xyes; then
1129 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1132 GALLIUM_STATE_TRACKERS_DIRS="$state_trackers"
1136 AC_ARG_WITH([xorg-driver-dir],
1137 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1138 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1139 [XORG_DRIVER_INSTALL_DIR="$withval"],
1140 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1141 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1144 dnl Gallium Intel configuration
1146 AC_ARG_ENABLE([gallium-intel],
1147 [AS_HELP_STRING([--disable-gallium-intel],
1148 [build gallium intel @<:@default=enabled@:>@])],
1149 [enable_gallium_intel="$enableval"],
1150 [enable_gallium_intel=yes])
1151 if test "x$enable_gallium_intel" = xyes; then
1152 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS intel"
1153 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915simple"
1157 dnl Gallium Radeon configuration
1159 AC_ARG_ENABLE([gallium-radeon],
1160 [AS_HELP_STRING([--enable-gallium-radeon],
1161 [build gallium radeon @<:@default=disabled@:>@])],
1162 [enable_gallium_radeon="$enableval"],
1163 [enable_gallium_radeon=no])
1164 if test "x$enable_gallium_radeon" = xyes; then
1165 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS radeon"
1166 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1170 dnl Gallium Radeon configuration
1172 AC_ARG_ENABLE([gallium-nouveau],
1173 [AS_HELP_STRING([--enable-gallium-nouveau],
1174 [build gallium nouveau @<:@default=disabled@:>@])],
1175 [enable_gallium_nouveau="$enableval"],
1176 [enable_gallium_nouveau=no])
1177 if test "x$enable_gallium_nouveau" = xyes; then
1178 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS nouveau"
1179 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nv04 nv10 nv20 nv30 nv40 nv50"
1183 dnl Restore LDFLAGS and CPPFLAGS
1184 LDFLAGS="$_SAVE_LDFLAGS"
1185 CPPFLAGS="$_SAVE_CPPFLAGS"
1187 dnl Substitute the config
1188 AC_CONFIG_FILES([configs/autoconf])
1190 dnl Replace the configs/current symlink
1191 AC_CONFIG_COMMANDS([configs],[
1192 if test -f configs/current || test -L configs/current; then
1193 rm -f configs/current
1195 ln -s autoconf configs/current
1201 dnl Output some configuration info for the user
1204 echo " prefix: $prefix"
1205 echo " exec_prefix: $exec_prefix"
1206 echo " libdir: $libdir"
1207 echo " includedir: $includedir"
1211 echo " Driver: $mesa_driver"
1212 if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
1213 echo " OSMesa: lib$OSMESA_LIB"
1217 if test "$mesa_driver" = dri; then
1218 # cleanup the drivers var
1219 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1220 if test "x$DRI_DIRS" = x; then
1221 echo " DRI drivers: no"
1223 echo " DRI drivers: $dri_dirs"
1225 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
1227 echo " Use XCB: $enable_xcb"
1230 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
1231 echo " Gallium: yes"
1232 echo " Gallium dirs: $GALLIUM_DIRS"
1233 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
1234 echo " Winsys drm dirs:$GALLIUM_WINSYS_DRM_DIRS"
1235 echo " Auxiliary dirs: $GALLIUM_AUXILIARY_DIRS"
1236 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
1237 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
1244 echo " Shared libs: $enable_shared"
1245 echo " Static libs: $enable_static"
1246 echo " EGL: $enable_egl"
1247 echo " GLU: $enable_glu"
1248 echo " GLw: $enable_glw (Motif: $enable_motif)"
1249 echo " glut: $enable_glut"
1252 # cleanup the programs var for display
1253 program_dirs=`echo $PROGRAM_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1254 if test "x$program_dirs" = x; then
1257 echo " Demos: $program_dirs"
1260 dnl Compiler options
1261 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
1262 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1263 $SED 's/^ *//;s/ */ /;s/ *$//'`
1264 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1265 $SED 's/^ *//;s/ */ /;s/ *$//'`
1266 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1268 echo " CFLAGS: $cflags"
1269 echo " CXXFLAGS: $cxxflags"
1270 echo " Macros: $defines"
1273 echo " Run '${MAKE-make}' to build Mesa"