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.24
22 LIBDRM_RADEON_REQUIRED=2.4.24
23 LIBDRM_INTEL_REQUIRED=2.4.24
24 LIBDRM_NOUVEAU_REQUIRED=0.6
25 DRI2PROTO_REQUIRED=2.1
26 GLPROTO_REQUIRED=1.4.11
27 LIBDRM_XORG_REQUIRED=2.4.24
28 LIBKMS_XORG_REQUIRED=1.0.0
34 AC_CHECK_PROGS([MAKE], [gmake make])
35 AC_CHECK_PROGS([PYTHON2], [python2 python])
36 AC_PATH_PROG([MKDEP], [makedepend])
37 AC_PATH_PROG([SED], [sed])
39 if test "x$MKDEP" = "x"; then
40 AC_MSG_ERROR([makedepend is required to build Mesa])
43 AC_PATH_PROG([FLEX], [flex])
44 test "x$FLEX" = "x" && AC_MSG_ERROR([flex is needed to build Mesa])
46 AC_PATH_PROG([BISON], [bison])
47 test "x$BISON" = "x" && AC_MSG_ERROR([bison is needed to build Mesa])
49 dnl Our fallback install-sh is a symlink to minstall. Use the existing
50 dnl configuration in that case.
52 test "x$INSTALL" = "x$ac_install_sh" && INSTALL='$(MINSTALL)'
54 dnl We need a POSIX shell for parts of the build. Assume we have one
58 # Solaris /bin/sh is too old/non-POSIX compliant
59 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
64 dnl clang is mostly GCC-compatible, but its version is much lower,
65 dnl so we have to check for it.
66 AC_MSG_CHECKING([if compiling with clang])
69 [AC_LANG_PROGRAM([], [[
74 [CLANG=yes], [CLANG=no])
76 AC_MSG_RESULT([$CLANG])
78 dnl If we're using GCC, make sure that it is at least version 3.3.0. Older
79 dnl versions are explictly not supported.
80 if test "x$GCC" = xyes -a "x$CLANG" = xno; then
81 AC_MSG_CHECKING([whether gcc version is sufficient])
85 GCC_VERSION=`$CC -dumpversion`
86 if test $? -eq 0; then
87 major=`echo $GCC_VERSION | cut -d. -f1`
88 minor=`echo $GCC_VERSION | cut -d. -f1`
91 if test $major -lt 3 -o $major -eq 3 -a $minor -lt 3 ; then
93 AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.])
100 MKDEP_OPTIONS=-fdepend
101 dnl Ask gcc where it's keeping its secret headers
102 if test "x$GCC" = xyes; then
103 for dir in include include-fixed; do
104 GCC_INCLUDES=`$CC -print-file-name=$dir`
105 if test "x$GCC_INCLUDES" != x && \
106 test "$GCC_INCLUDES" != "$dir" && \
107 test -d "$GCC_INCLUDES"; then
108 MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
112 AC_SUBST([MKDEP_OPTIONS])
114 dnl Make sure the pkg-config macros are defined
115 m4_ifndef([PKG_PROG_PKG_CONFIG],
116 [m4_fatal([Could not locate the pkg-config autoconf macros.
117 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
118 are in a different location, try setting the environment variable
119 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
120 PKG_PROG_PKG_CONFIG()
122 dnl LIB_DIR - library basename
123 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
126 dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
127 _SAVE_LDFLAGS="$LDFLAGS"
128 AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker])
129 AC_SUBST([EXTRA_LIB_PATH])
131 dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
132 _SAVE_CPPFLAGS="$CPPFLAGS"
133 AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers])
134 AC_SUBST([X11_INCLUDES])
141 DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS"
144 DEFINES="$DEFINES -DPTHREADS -DSVR4"
147 DEFINES="$DEFINES -DPTHREADS"
151 dnl Add flags for gcc and g++
152 if test "x$GCC" = xyes; then
153 CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99"
154 if test "x$CLANG" = "xno"; then
155 CFLAGS="$CFLAGS -ffast-math"
158 # Enable -fvisibility=hidden if using a gcc that supports it
159 save_CFLAGS="$CFLAGS"
160 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
161 VISIBILITY_CFLAGS="-fvisibility=hidden"
162 CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
163 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
164 [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
166 # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
169 # Work around aliasing bugs - developers should comment this out
170 CFLAGS="$CFLAGS -fno-strict-aliasing"
172 if test "x$GXX" = xyes; then
173 CXXFLAGS="$CXXFLAGS -Wall"
175 # Enable -fvisibility=hidden if using a gcc that supports it
176 save_CXXFLAGS="$CXXFLAGS"
177 AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
178 VISIBILITY_CXXFLAGS="-fvisibility=hidden"
179 CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
180 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
181 [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
183 # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
184 CXXFLAGS=$save_CXXFLAGS
186 # Work around aliasing bugs - developers should comment this out
187 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
190 AC_SUBST([VISIBILITY_CFLAGS])
191 AC_SUBST([VISIBILITY_CXXFLAGS])
193 dnl These should be unnecessary, but let the user set them if they want
194 AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
195 Default is to use CFLAGS.])
196 AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
197 compiler. Default is to use CFLAGS.])
198 AC_SUBST([OPT_FLAGS])
199 AC_SUBST([ARCH_FLAGS])
202 dnl Hacks to enable 32 or 64 bit build
204 AC_ARG_ENABLE([32-bit],
205 [AS_HELP_STRING([--enable-32-bit],
206 [build 32-bit libraries @<:@default=auto@:>@])],
207 [enable_32bit="$enableval"],
210 if test "x$enable_32bit" = xyes; then
211 if test "x$GCC" = xyes; then
212 CFLAGS="$CFLAGS -m32"
213 ARCH_FLAGS="$ARCH_FLAGS -m32"
215 if test "x$GXX" = xyes; then
216 CXXFLAGS="$CXXFLAGS -m32"
219 AC_ARG_ENABLE([64-bit],
220 [AS_HELP_STRING([--enable-64-bit],
221 [build 64-bit libraries @<:@default=auto@:>@])],
222 [enable_64bit="$enableval"],
225 if test "x$enable_64bit" = xyes; then
226 if test "x$GCC" = xyes; then
227 CFLAGS="$CFLAGS -m64"
229 if test "x$GXX" = xyes; then
230 CXXFLAGS="$CXXFLAGS -m64"
235 dnl shared/static libraries, mimic libtool options
237 AC_ARG_ENABLE([static],
238 [AS_HELP_STRING([--enable-static],
239 [build static libraries @<:@default=disabled@:>@])],
240 [enable_static="$enableval"],
243 case "x$enable_static" in
245 x ) enable_static=no ;;
247 AC_MSG_ERROR([Static library option '$enable_static' is not a valid])
250 AC_ARG_ENABLE([shared],
251 [AS_HELP_STRING([--disable-shared],
252 [build shared libraries @<:@default=enabled@:>@])],
253 [enable_shared="$enableval"],
256 case "x$enable_shared" in
258 x ) enable_shared=yes ;;
260 AC_MSG_ERROR([Shared library option '$enable_shared' is not a valid])
264 dnl Can't have static and shared libraries, default to static if user
265 dnl explicitly requested. If both disabled, set to static since shared
266 dnl was explicitly requirested.
267 case "x$enable_static$enable_shared" in
269 AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
273 AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
281 AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
282 if test "$enable_static" = yes; then
283 MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
285 AC_SUBST([MKLIB_OPTIONS])
288 dnl other compiler options
290 AC_ARG_ENABLE([debug],
291 [AS_HELP_STRING([--enable-debug],
292 [use debug compiler flags and macros @<:@default=disabled@:>@])],
293 [enable_debug="$enableval"],
296 if test "x$enable_debug" = xyes; then
297 DEFINES="$DEFINES -DDEBUG"
298 if test "x$GCC" = xyes; then
301 if test "x$GXX" = xyes; then
302 CXXFLAGS="$CXXFLAGS -g"
309 LIB_PREFIX_GLOB='lib'
310 LIB_VERSION_SEPARATOR='.'
311 if test "$enable_static" = yes; then
316 LIB_EXTENSION='dylib' ;;
318 dnl prefix can be 'cyg' or 'lib'
319 LIB_PREFIX_GLOB='???'
320 LIB_VERSION_SEPARATOR='-'
321 LIB_EXTENSION='dll' ;;
325 LIB_EXTENSION='so' ;;
330 dnl potentially-infringing-but-nobody-knows-for-sure stuff
332 AC_ARG_ENABLE([texture-float],
333 [AS_HELP_STRING([--enable-texture-float],
334 [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
335 [enable_texture_float="$enableval"],
336 [enable_texture_float=no]
338 if test "x$enable_texture_float" = xyes; then
339 AC_MSG_WARN([Floating-point textures enabled.])
340 AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
341 DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
344 GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
345 GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
346 GLUT_LIB_NAME='lib$(GLUT_LIB).'${LIB_EXTENSION}
347 GLW_LIB_NAME='lib$(GLW_LIB).'${LIB_EXTENSION}
348 OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
349 EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
350 GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
351 GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION}
352 VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION}
353 GLAPI_LIB_NAME='lib$(GLAPI_LIB).'${LIB_EXTENSION}
354 WAYLAND_EGL_LIB_NAME='lib$(WAYLAND_EGL_LIB).'${LIB_EXTENSION}
356 GL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
357 GLU_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLU_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
358 GLUT_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLUT_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
359 GLW_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLW_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
360 OSMESA_LIB_GLOB=${LIB_PREFIX_GLOB}'$(OSMESA_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
361 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
362 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
363 GLESv1_CM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv1_CM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
364 GLESv2_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv2_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
365 VG_LIB_GLOB=${LIB_PREFIX_GLOB}'$(VG_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
366 GLAPI_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLAPI_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
367 WAYLAND_EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(WAYLAND_EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
369 AC_SUBST([GL_LIB_NAME])
370 AC_SUBST([GLU_LIB_NAME])
371 AC_SUBST([GLUT_LIB_NAME])
372 AC_SUBST([GLW_LIB_NAME])
373 AC_SUBST([OSMESA_LIB_NAME])
374 AC_SUBST([EGL_LIB_NAME])
375 AC_SUBST([GLESv1_CM_LIB_NAME])
376 AC_SUBST([GLESv2_LIB_NAME])
377 AC_SUBST([VG_LIB_NAME])
378 AC_SUBST([GLAPI_LIB_NAME])
379 AC_SUBST([WAYLAND_EGL_LIB_NAME])
381 AC_SUBST([GL_LIB_GLOB])
382 AC_SUBST([GLU_LIB_GLOB])
383 AC_SUBST([GLUT_LIB_GLOB])
384 AC_SUBST([GLW_LIB_GLOB])
385 AC_SUBST([OSMESA_LIB_GLOB])
386 AC_SUBST([EGL_LIB_GLOB])
387 AC_SUBST([GLESv1_CM_LIB_GLOB])
388 AC_SUBST([GLESv2_LIB_GLOB])
389 AC_SUBST([VG_LIB_GLOB])
390 AC_SUBST([GLAPI_LIB_GLOB])
391 AC_SUBST([WAYLAND_EGL_LIB_GLOB])
394 dnl Arch/platform-specific settings
397 [AS_HELP_STRING([--disable-asm],
398 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
399 [enable_asm="$enableval"],
406 AC_MSG_CHECKING([whether to enable assembly])
407 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
408 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
409 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
413 AC_MSG_RESULT([no, cross compiling])
417 # check for supported arches
418 if test "x$enable_asm" = xyes; then
422 linux* | *freebsd* | dragonfly* | *netbsd*)
423 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
429 linux* | *freebsd* | dragonfly* | *netbsd*)
430 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
452 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
453 MESA_ASM_SOURCES='$(X86_SOURCES)'
454 GLAPI_ASM_SOURCES='$(X86_API)'
455 AC_MSG_RESULT([yes, x86])
458 ASM_FLAGS="-DUSE_X86_64_ASM"
459 MESA_ASM_SOURCES='$(X86-64_SOURCES)'
460 GLAPI_ASM_SOURCES='$(X86-64_API)'
461 AC_MSG_RESULT([yes, x86_64])
464 ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM"
465 MESA_ASM_SOURCES='$(PPC_SOURCES)'
466 AC_MSG_RESULT([yes, ppc])
469 ASM_FLAGS="-DUSE_SPARC_ASM"
470 MESA_ASM_SOURCES='$(SPARC_SOURCES)'
471 GLAPI_ASM_SOURCES='$(SPARC_API)'
472 AC_MSG_RESULT([yes, sparc])
475 AC_MSG_RESULT([no, platform not supported])
479 AC_SUBST([ASM_FLAGS])
480 AC_SUBST([MESA_ASM_SOURCES])
481 AC_SUBST([GLAPI_ASM_SOURCES])
486 dnl Check to see if dlopen is in default libraries (like Solaris, which
487 dnl has it in libc), or if libdl is needed to get it.
488 AC_CHECK_FUNC([dlopen], [],
489 [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
490 AC_SUBST([DLOPEN_LIBS])
492 dnl See if posix_memalign is available
493 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
495 dnl SELinux awareness.
496 AC_ARG_ENABLE([selinux],
497 [AS_HELP_STRING([--enable-selinux],
498 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
499 [MESA_SELINUX="$enableval"],
501 if test "x$enable_selinux" = "xyes"; then
502 AC_CHECK_HEADER([selinux/selinux.h],[],
503 [AC_MSG_ERROR([SELinux headers not found])])
504 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
505 [AC_MSG_ERROR([SELinux library not found])])
506 SELINUX_LIBS="-lselinux"
507 DEFINES="$DEFINES -DMESA_SELINUX"
511 AC_ARG_ENABLE([opengl],
512 [AS_HELP_STRING([--disable-opengl],
513 [disable support for standard OpenGL API @<:@default=no@:>@])],
514 [enable_opengl="$enableval"],
516 AC_ARG_ENABLE([gles1],
517 [AS_HELP_STRING([--enable-gles1],
518 [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
519 [enable_gles1="$enableval"],
521 AC_ARG_ENABLE([gles2],
522 [AS_HELP_STRING([--enable-gles2],
523 [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
524 [enable_gles2="$enableval"],
526 AC_ARG_ENABLE([gles-overlay],
527 [AS_HELP_STRING([--enable-gles-overlay],
528 [DEPRECATED. Same as --enable-gles1 and --enable-gles2])],
529 [enable_gles1="$enableval"; enable_gles2="$enableval"],
531 AC_ARG_ENABLE([openvg],
532 [AS_HELP_STRING([--enable-openvg],
533 [enable support for OpenVG API @<:@default=no@:>@])],
534 [enable_openvg="$enableval"],
536 AC_ARG_ENABLE([xorg],
537 [AS_HELP_STRING([--enable-xorg],
538 [enable support for X.Org DDX API @<:@default=no@:>@])],
539 [enable_xorg="$enableval"],
541 AC_ARG_ENABLE([d3d1x],
542 [AS_HELP_STRING([--enable-d3d1x],
543 [enable support for Direct3D 10 & 11 low-level API @<:@default=no@:>@])],
544 [enable_d3d1x="$enableval"],
547 [AS_HELP_STRING([--disable-egl],
548 [disable EGL library @<:@default=enabled@:>@])],
549 [enable_egl="$enableval"],
551 AC_ARG_ENABLE([gallium_egl],
552 [AS_HELP_STRING([--enable-gallium-egl],
553 [enable optional EGL state tracker (not required
554 for EGL support in Gallium with OpenGL and OpenGL ES)
555 @<:@default=disable@:>@])],
556 [enable_gallium_egl="$enableval"],
557 [enable_gallium_egl=no])
559 # Option for Gallium drivers
560 GALLIUM_DRIVERS_DEFAULT="r300,r600,swrast"
562 AC_ARG_WITH([gallium-drivers],
563 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
564 [comma delimited Gallium drivers list, e.g.
565 "i915,i965,nouveau,r300,r600,svga,swrast"
566 @<:@default=r300,r600,swrast@:>@])],
567 [with_gallium_drivers="$withval"],
568 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
570 if test "x$enable_opengl" = xno -a \
571 "x$enable_gles1" = xno -a \
572 "x$enable_gles2" = xno -a \
573 "x$enable_openvg" = xno -a \
574 "x$enable_xorg" = xno -a \
575 "x$enable_d3d1x" = xno; then
576 AC_MSG_ERROR([at least one API should be enabled])
580 if test "x$enable_opengl" = xno; then
581 API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
583 API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
585 if test "x$enable_gles1" = xyes; then
586 API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
588 if test "x$enable_gles2" = xyes; then
589 API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
591 AC_SUBST([API_DEFINES])
593 AC_ARG_ENABLE([shared-glapi],
594 [AS_HELP_STRING([--enable-shared-glapi],
595 [EXPERIMENTAL. Enable shared glapi for OpenGL @<:@default=no@:>@])],
596 [enable_shared_glapi="$enableval"],
597 [enable_shared_glapi=no])
600 if test "x$enable_shared_glapi" = xyes; then
603 AC_SUBST([SHARED_GLAPI])
606 dnl Driver configuration. Options are xlib, dri and osmesa right now.
607 dnl More later: fbdev, ...
609 default_driver="xlib"
614 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
617 *freebsd* | dragonfly* | *netbsd*)
619 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
624 if test "x$enable_opengl" = xno; then
628 AC_ARG_WITH([driver],
629 [AS_HELP_STRING([--with-driver=DRIVER],
630 [driver for Mesa: xlib,dri,osmesa @<:@default=dri when available, or xlib@:>@])],
631 [mesa_driver="$withval"],
632 [mesa_driver="$default_driver"])
633 dnl Check for valid option
634 case "x$mesa_driver" in
636 if test "x$enable_opengl" = xno; then
637 AC_MSG_ERROR([Driver '$mesa_driver' requires OpenGL enabled])
643 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
648 dnl Driver specific build directories
651 dnl this variable will be prepended to SRC_DIRS and is not exported
656 GALLIUM_DIRS="auxiliary drivers state_trackers"
657 GALLIUM_TARGET_DIRS=""
658 GALLIUM_WINSYS_DIRS="sw"
659 GALLIUM_DRIVERS_DIRS="softpipe failover galahad trace rbug noop identity"
660 GALLIUM_STATE_TRACKERS_DIRS=""
662 # build shared-glapi if enabled for OpenGL or if OpenGL ES is enabled
663 case "x$enable_shared_glapi$enable_gles1$enable_gles2" in
665 CORE_DIRS="$CORE_DIRS mapi/shared-glapi"
669 # build glapi if OpenGL is enabled
670 if test "x$enable_opengl" = xyes; then
671 CORE_DIRS="$CORE_DIRS mapi/glapi"
674 # build es1api if OpenGL ES 1.x is enabled
675 if test "x$enable_gles1" = xyes; then
676 CORE_DIRS="$CORE_DIRS mapi/es1api"
679 # build es2api if OpenGL ES 2.x is enabled
680 if test "x$enable_gles2" = xyes; then
681 CORE_DIRS="$CORE_DIRS mapi/es2api"
684 # build glsl and mesa if OpenGL or OpenGL ES is enabled
685 case "x$enable_opengl$enable_gles1$enable_gles2" in
687 CORE_DIRS="$CORE_DIRS glsl mesa"
691 case "$mesa_driver" in
694 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
695 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
696 GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS"
699 SRC_DIRS="$SRC_DIRS glx"
701 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib sw/dri"
702 GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
714 AC_SUBST([DRIVER_DIRS])
715 AC_SUBST([GALLIUM_DIRS])
716 AC_SUBST([GALLIUM_TARGET_DIRS])
717 AC_SUBST([GALLIUM_WINSYS_DIRS])
718 AC_SUBST([GALLIUM_DRIVERS_DIRS])
719 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
720 AC_SUBST([MESA_LLVM])
723 dnl Find out if X is available. The variable have_x is set if libX11 is
724 dnl found to mimic AC_PATH_XTRA.
726 if test -n "$PKG_CONFIG"; then
727 AC_MSG_CHECKING([pkg-config files for X11 are available])
728 PKG_CHECK_EXISTS([x11],[
734 AC_MSG_RESULT([$x11_pkgconfig])
738 dnl Use the autoconf macro if no pkg-config files
739 if test "$x11_pkgconfig" = yes; then
740 PKG_CHECK_MODULES([X11], [x11])
743 test -z "$X11_CFLAGS" && X11_CFLAGS="$X_CFLAGS"
744 test -z "$X11_LIBS" && X11_LIBS="$X_LIBS -lX11"
745 AC_SUBST([X11_CFLAGS])
749 dnl Try to tell the user that the --x-* options are only used when
750 dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
751 m4_divert_once([HELP_BEGIN],
752 [These options are only used when the X libraries cannot be found by the
753 pkg-config utility.])
755 dnl We need X for xlib and dri, so bomb now if it's not found
756 case "$mesa_driver" in
758 if test "$no_x" = yes; then
759 AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver])
764 dnl XCB - this is only used for GLX right now
766 [AS_HELP_STRING([--enable-xcb],
767 [use XCB for GLX @<:@default=disabled@:>@])],
768 [enable_xcb="$enableval"],
770 if test "x$enable_xcb" = xyes; then
771 DEFINES="$DEFINES -DUSE_XCB"
776 dnl Direct rendering or just indirect rendering
779 dnl Disable by default on GNU/Hurd
780 driglx_direct_default="no"
783 dnl Disable by default on cygwin
784 driglx_direct_default="no"
787 driglx_direct_default="yes"
790 AC_ARG_ENABLE([driglx-direct],
791 [AS_HELP_STRING([--disable-driglx-direct],
792 [enable direct rendering in GLX and EGL for DRI \
793 @<:@default=auto@:>@])],
794 [driglx_direct="$enableval"],
795 [driglx_direct="$driglx_direct_default"])
798 dnl libGL configuration per driver
800 case "$mesa_driver" in
802 if test "$x11_pkgconfig" = yes; then
803 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
804 GL_PC_REQ_PRIV="x11 xext"
805 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
806 GL_LIB_DEPS="$XLIBGL_LIBS"
808 # should check these...
809 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
810 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
811 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
812 GL_PC_CFLAGS="$X11_INCLUDES"
814 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread"
815 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
817 # if static, move the external libraries to the programs
818 # and empty the libraries for libGL
819 if test "$enable_static" = yes; then
820 APP_LIB_DEPS="$APP_LIB_DEPS $GL_LIB_DEPS"
824 dri|no) # these checks are still desired when there is no mesa_driver
825 # DRI must be shared, I think
826 if test "$enable_static" = yes; then
827 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
830 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
831 GL_PC_REQ_PRIV="glproto >= $GLPROTO_REQUIRED"
834 if test x"$driglx_direct" = xyes; then
836 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED])
837 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
838 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
839 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
842 # find the DRI deps for libGL
843 if test "$x11_pkgconfig" = yes; then
844 dri_modules="x11 xext xdamage xfixes"
846 # add xf86vidmode if available
847 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
848 if test "$HAVE_XF86VIDMODE" = yes ; then
849 dri_modules="$dri_modules xxf86vm"
852 # add xcb modules if necessary
853 if test "$enable_xcb" = yes; then
854 dri_modules="$dri_modules x11-xcb xcb-glx"
857 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
858 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
859 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
860 GL_LIB_DEPS="$DRIGL_LIBS"
862 # should check these...
863 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
864 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
865 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
866 GL_PC_CFLAGS="$X11_INCLUDES"
868 # XCB can only be used from pkg-config
869 if test "$enable_xcb" = yes; then
870 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
871 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
872 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
873 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
877 # need DRM libs, -lpthread, etc.
878 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
879 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
880 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
881 GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
882 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
883 GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
886 # No libGL for osmesa
890 AC_SUBST([GL_LIB_DEPS])
891 AC_SUBST([GL_PC_REQ_PRIV])
892 AC_SUBST([GL_PC_LIB_PRIV])
893 AC_SUBST([GL_PC_CFLAGS])
894 AC_SUBST([DRI_PC_REQ_PRIV])
895 AC_SUBST([GLESv1_CM_LIB_DEPS])
896 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
897 AC_SUBST([GLESv2_LIB_DEPS])
898 AC_SUBST([GLESv2_PC_LIB_PRIV])
900 GLAPI_LIB_DEPS="-lpthread"
901 AC_SUBST([GLAPI_LIB_DEPS])
904 dnl Setup default DRI CFLAGS
905 DRI_CFLAGS='$(CFLAGS)'
906 DRI_CXXFLAGS='$(CXXFLAGS)'
907 DRI_LIB_DEPS='$(TOP)/src/mesa/libmesa.a'
908 MESA_MODULES='$(TOP)/src/mesa/libmesa.a'
910 AC_ARG_ENABLE([shared-dricore],
911 [AS_HELP_STRING([--enable-shared-dricore],
912 [link DRI modules with shared core DRI routines @<:@default=disabled@:>@])],
913 [enable_dricore="$enableval"],
915 if test "$mesa_driver" = dri ; then
916 if test "$enable_dricore" = yes ; then
917 if test "$GCC$GXX" != yesyes ; then
918 AC_MSG_WARN([Shared dricore requires GCC-compatible rpath handling. Disabling shared dricore])
921 DRICORE_GLSL_LIBS='$(TOP)/$(LIB_DIR)/libglsl.so'
922 DRICORE_LIBS='$(TOP)/$(LIB_DIR)/libdricore.so'
923 DRICORE_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -lglsl'
924 DRI_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore -lglsl'
925 DRI_CFLAGS='$(CFLAGS_NOVISIBILITY) -DUSE_DRICORE'
926 DRI_CXXFLAGS='$(CXXFLAGS_NOVISIBILITY) -DUSE_DRICORE'
927 MESA_MODULES='$(DRICORE_LIBS) $(DRICORE_GLSL_LIBS)'
931 AC_SUBST([DRICORE_LIBS])
932 AC_SUBST([DRICORE_GLSL_LIBS])
933 AC_SUBST([DRICORE_LIB_DEPS])
934 AC_SUBST([DRI_CXXFLAGS])
935 AC_SUBST([DRI_CFLAGS])
936 AC_SUBST([MESA_MODULES])
938 AC_SUBST([HAVE_XF86VIDMODE])
940 PKG_CHECK_MODULES([LIBDRM_RADEON],
941 [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED],
942 HAVE_LIBDRM_RADEON=yes,
943 HAVE_LIBDRM_RADEON=no)
948 if test "$mesa_driver" = xlib; then
949 DEFINES="$DEFINES -DUSE_XSHM"
956 AC_ARG_ENABLE([glx-tls],
957 [AS_HELP_STRING([--enable-glx-tls],
958 [enable TLS support in GLX @<:@default=disabled@:>@])],
959 [GLX_USE_TLS="$enableval"],
961 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
963 AS_IF([test "x$GLX_USE_TLS" = xyes],
964 [DEFINES="${DEFINES} -DGLX_USE_TLS -DPTHREADS"])
969 dnl Directory for DRI drivers
970 AC_ARG_WITH([dri-driverdir],
971 [AS_HELP_STRING([--with-dri-driverdir=DIR],
972 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
973 [DRI_DRIVER_INSTALL_DIR="$withval"],
974 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
975 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
976 dnl Extra search path for DRI drivers
977 AC_ARG_WITH([dri-searchpath],
978 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
979 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
980 [DRI_DRIVER_SEARCH_DIR="$withval"],
981 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
982 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
983 dnl Which drivers to build - default is chosen by platform
984 AC_ARG_WITH([dri-drivers],
985 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
986 [comma delimited DRI drivers list, e.g.
987 "swrast,i965,radeon" @<:@default=auto@:>@])],
988 [with_dri_drivers="$withval"],
989 [with_dri_drivers=yes])
990 if test "x$with_dri_drivers" = x; then
994 dnl If $with_dri_drivers is yes, directories will be added through
997 case "$with_dri_drivers" in
1003 # verify the requested driver directories exist
1004 dri_drivers=`IFS=', '; echo $with_dri_drivers`
1005 for driver in $dri_drivers; do
1006 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
1007 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
1009 DRI_DIRS="$dri_drivers"
1013 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
1014 if test "$mesa_driver" = dri -o "$mesa_driver" = no; then
1015 # Platform specific settings and drivers to build
1018 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1019 if test "x$driglx_direct" = xyes; then
1020 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1022 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
1026 # sis is missing because they have not be converted to use
1027 # the new interface. i810 are missing because there is no
1028 # x86-64 system where they could *ever* be used.
1029 if test "x$DRI_DIRS" = "xyes"; then
1030 DRI_DIRS="i915 i965 mach64 mga nouveau r128 r200 r300 r600 \
1031 radeon savage tdfx unichrome swrast"
1035 # Build only the drivers for cards that exist on PowerPC.
1036 # At some point MGA will be added, but not yet.
1037 if test "x$DRI_DIRS" = "xyes"; then
1038 DRI_DIRS="mach64 r128 r200 r300 r600 radeon tdfx swrast"
1042 # Build only the drivers for cards that exist on sparc`
1043 if test "x$DRI_DIRS" = "xyes"; then
1044 DRI_DIRS="mach64 r128 r200 r300 r600 radeon swrast"
1049 freebsd* | dragonfly* | *netbsd*)
1050 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
1051 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
1052 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1053 if test "x$driglx_direct" = xyes; then
1054 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1057 if test "x$DRI_DIRS" = "xyes"; then
1058 DRI_DIRS="i810 i915 i965 mach64 mga nouveau r128 r200 r300 r600 \
1059 radeon tdfx unichrome savage sis swrast"
1063 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1064 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
1067 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1068 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1069 if test "x$driglx_direct" = xyes; then
1070 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1074 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1075 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1076 if test "x$driglx_direct" = xyes; then
1077 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1079 if test "x$DRI_DIRS" = "xyes"; then
1086 if test "x$DRI_DIRS" = "xyes"; then
1087 DRI_DIRS="i810 i915 i965 mach64 mga nouveau r128 r200 r300 r600 radeon \
1088 savage sis tdfx unichrome swrast"
1091 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
1094 if test "$mesa_driver" = dri; then
1097 AC_ARG_WITH([expat],
1098 [AS_HELP_STRING([--with-expat=DIR],
1099 [expat install directory])],[
1100 EXPAT_INCLUDES="-I$withval/include"
1101 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
1102 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
1103 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
1105 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
1106 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1107 [AC_MSG_ERROR([Expat required for DRI.])])
1110 # put all the necessary libs together, including possibly libdricore
1111 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
1113 AC_SUBST([DRI_DIRS])
1114 AC_SUBST([EXPAT_INCLUDES])
1115 AC_SUBST([DRI_LIB_DEPS])
1119 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1125 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1130 *radeon*|*r200*|*r300*|*r600*)
1131 if test "x$HAVE_LIBDRM_RADEON" = xyes; then
1132 RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS"
1133 RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS
1137 AC_SUBST([RADEON_CFLAGS])
1138 AC_SUBST([RADEON_LDFLAGS])
1142 dnl OSMesa configuration
1144 if test "$mesa_driver" = xlib; then
1145 default_gl_osmesa=yes
1147 default_gl_osmesa=no
1149 AC_ARG_ENABLE([gl-osmesa],
1150 [AS_HELP_STRING([--enable-gl-osmesa],
1151 [enable OSMesa with libGL @<:@default=enabled for xlib driver@:>@])],
1152 [gl_osmesa="$enableval"],
1153 [gl_osmesa="$default_gl_osmesa"])
1154 if test "x$gl_osmesa" = xyes; then
1155 if test "x$enable_opengl" = xno; then
1156 AC_MSG_ERROR([OpenGL is not available for OSMesa driver])
1158 if test "$mesa_driver" = osmesa; then
1159 AC_MSG_ERROR([libGL is not available for OSMesa driver])
1161 DRIVER_DIRS="$DRIVER_DIRS osmesa"
1165 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1166 AC_ARG_WITH([osmesa-bits],
1167 [AS_HELP_STRING([--with-osmesa-bits=BITS],
1168 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1169 [osmesa_bits="$withval"],
1171 if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
1172 AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
1175 case "x$osmesa_bits" in
1180 OSMESA_LIB="OSMesa$osmesa_bits"
1181 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1184 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1187 AC_SUBST([OSMESA_LIB])
1189 case "$DRIVER_DIRS" in
1191 # only link libraries with osmesa if shared
1192 if test "$enable_static" = no; then
1193 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1198 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1201 AC_SUBST([OSMESA_LIB_DEPS])
1202 AC_SUBST([OSMESA_MESA_DEPS])
1203 AC_SUBST([OSMESA_PC_REQ])
1204 AC_SUBST([OSMESA_PC_LIB_PRIV])
1207 dnl EGL configuration
1211 if test "x$enable_egl" = xno; then
1212 if test "x$mesa_driver" = xno; then
1213 AC_MSG_ERROR([cannot disable EGL when there is no mesa driver])
1216 if test "x$enable_egl" = xyes; then
1217 SRC_DIRS="$SRC_DIRS egl"
1218 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS -lpthread"
1221 if test "$enable_static" != yes; then
1222 # build egl_glx when libGL is built
1223 if test "$mesa_driver" = xlib -o "$mesa_driver" = dri; then
1224 EGL_DRIVERS_DIRS="glx"
1227 PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1228 [have_libudev=yes],[have_libudev=no])
1229 if test "$have_libudev" = yes; then
1230 DEFINES="$DEFINES -DHAVE_LIBUDEV"
1232 if test "$mesa_driver" = dri; then
1233 # build egl_dri2 when xcb-dri2 is available
1234 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes],
1235 [have_xcb_dri2=yes],[have_xcb_dri2=no])
1237 if test "$have_xcb_dri2" = yes; then
1238 EGL_DRIVER_DRI2=dri2
1239 DEFINES="$DEFINES -DHAVE_XCB_DRI2"
1240 # workaround a bug in xcb-dri2 generated by xcb-proto 1.6
1241 AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [],
1242 [DEFINES="$DEFINES -DXCB_DRI2_CONNECT_DEVICE_NAME_BROKEN"])
1246 EGL_DRIVERS_DIRS="$EGL_DRIVERS_DIRS $EGL_DRIVER_DRI2"
1249 AC_SUBST([EGL_LIB_DEPS])
1250 AC_SUBST([EGL_DRIVERS_DIRS])
1253 dnl EGL Gallium configuration
1255 if test "x$enable_gallium_egl" = xyes; then
1256 if test "x$with_gallium_drivers" = x; then
1257 AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
1259 if test "x$enable_egl" = xno; then
1260 AC_MSG_ERROR([cannot enable egl_gallium without EGL])
1263 GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
1264 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl"
1269 dnl X.Org DDX configuration
1271 if test "x$enable_xorg" = xyes; then
1272 PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1273 PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1274 PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1275 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1276 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1277 HAVE_XEXTPROTO_71="no")
1278 GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS"
1283 dnl OpenVG configuration
1287 if test "x$enable_openvg" = xyes; then
1288 if test "x$enable_egl" = xno; then
1289 AC_MSG_ERROR([cannot enable OpenVG without EGL])
1291 if test "x$with_gallium_drivers" = x; then
1292 AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1294 if test "x$enable_gallium_egl" = xno; then
1295 AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
1298 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1299 VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS -lpthread"
1300 CORE_DIRS="$CORE_DIRS mapi/vgapi"
1301 GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1306 dnl D3D1X configuration
1309 if test "x$enable_d3d1x" = xyes; then
1310 if test "x$with_gallium_drivers" = x; then
1311 AC_MSG_ERROR([cannot enable D3D1X without Gallium])
1314 GALLIUM_STATE_TRACKERS_DIRS="d3d1x $GALLIUM_STATE_TRACKERS_DIRS"
1319 dnl GLU configuration
1321 AC_ARG_ENABLE([glu],
1322 [AS_HELP_STRING([--disable-glu],
1323 [enable OpenGL Utility library @<:@default=enabled@:>@])],
1324 [enable_glu="$enableval"],
1327 if test "x$enable_glu" = xyes -a "x$mesa_driver" = xno; then
1328 AC_MSG_NOTICE([Disabling GLU since there is no OpenGL driver])
1332 if test "x$enable_glu" = xyes; then
1333 SRC_DIRS="$SRC_DIRS glu"
1335 case "$mesa_driver" in
1337 # Link libGLU to libOSMesa instead of libGL
1340 if test "$enable_static" = no; then
1341 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
1347 # If static, empty GLU_LIB_DEPS and add libs for programs to link
1349 GLU_PC_LIB_PRIV="-lm"
1350 if test "$enable_static" = no; then
1352 GLU_MESA_DEPS='-l$(GL_LIB)'
1356 APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
1361 if test "$enable_static" = no; then
1362 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
1364 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
1365 AC_SUBST([GLU_LIB_DEPS])
1366 AC_SUBST([GLU_MESA_DEPS])
1367 AC_SUBST([GLU_PC_REQ])
1368 AC_SUBST([GLU_PC_REQ_PRIV])
1369 AC_SUBST([GLU_PC_LIB_PRIV])
1370 AC_SUBST([GLU_PC_CFLAGS])
1373 dnl GLw configuration
1375 AC_ARG_ENABLE([glw],
1376 [AS_HELP_STRING([--disable-glw],
1377 [enable Xt/Motif widget library @<:@default=enabled@:>@])],
1378 [enable_glw="$enableval"],
1380 dnl Don't build GLw on osmesa
1381 if test "x$enable_glw" = xyes; then
1382 case "$mesa_driver" in
1384 AC_MSG_NOTICE([Disabling GLw since there is no OpenGL driver])
1389 AC_ARG_ENABLE([motif],
1390 [AS_HELP_STRING([--enable-motif],
1391 [use Motif widgets in GLw @<:@default=disabled@:>@])],
1392 [enable_motif="$enableval"],
1395 if test "x$enable_glw" = xyes; then
1396 SRC_DIRS="$SRC_DIRS glw"
1397 if test "$x11_pkgconfig" = yes; then
1398 PKG_CHECK_MODULES([GLW],[x11 xt])
1399 GLW_PC_REQ_PRIV="x11 xt"
1400 GLW_LIB_DEPS="$GLW_LIBS"
1402 # should check these...
1403 GLW_LIB_DEPS="$X_LIBS -lXt -lX11"
1404 GLW_PC_LIB_PRIV="$GLW_LIB_DEPS"
1405 GLW_PC_CFLAGS="$X11_INCLUDES"
1408 GLW_SOURCES="GLwDrawA.c"
1410 if test "x$enable_motif" = xyes; then
1411 GLW_SOURCES="$GLW_SOURCES GLwMDrawA.c"
1412 AC_PATH_PROG([MOTIF_CONFIG], [motif-config], [no])
1413 if test "x$MOTIF_CONFIG" != xno; then
1414 MOTIF_CFLAGS=`$MOTIF_CONFIG --cflags`
1415 MOTIF_LIBS=`$MOTIF_CONFIG --libs`
1417 AC_CHECK_HEADER([Xm/PrimitiveP.h], [],
1418 [AC_MSG_ERROR([Can't locate Motif headers])])
1419 AC_CHECK_LIB([Xm], [XmGetPixmap], [MOTIF_LIBS="-lXm"],
1420 [AC_MSG_ERROR([Can't locate Motif Xm library])])
1422 # MOTIF_LIBS is prepended to GLW_LIB_DEPS since Xm needs Xt/X11
1423 GLW_LIB_DEPS="$MOTIF_LIBS $GLW_LIB_DEPS"
1424 GLW_PC_LIB_PRIV="$MOTIF_LIBS $GLW_PC_LIB_PRIV"
1425 GLW_PC_CFLAGS="$MOTIF_CFLAGS $GLW_PC_CFLAGS"
1428 # If static, empty GLW_LIB_DEPS and add libs for programs to link
1429 GLW_PC_LIB_PRIV="$GLW_PC_LIB_PRIV"
1430 if test "$enable_static" = no; then
1431 GLW_MESA_DEPS='-l$(GL_LIB)'
1432 GLW_LIB_DEPS="$GLW_LIB_DEPS"
1434 APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
1439 AC_SUBST([GLW_LIB_DEPS])
1440 AC_SUBST([GLW_MESA_DEPS])
1441 AC_SUBST([GLW_SOURCES])
1442 AC_SUBST([MOTIF_CFLAGS])
1443 AC_SUBST([GLW_PC_REQ_PRIV])
1444 AC_SUBST([GLW_PC_LIB_PRIV])
1445 AC_SUBST([GLW_PC_CFLAGS])
1448 dnl GLUT configuration
1450 if test -f "$srcdir/include/GL/glut.h"; then
1455 AC_ARG_ENABLE([glut],
1456 [AS_HELP_STRING([--disable-glut],
1457 [enable GLUT library @<:@default=enabled if source available@:>@])],
1458 [enable_glut="$enableval"],
1459 [enable_glut="$default_glut"])
1461 dnl Don't build glut on osmesa
1462 if test "x$enable_glut" = xyes; then
1463 case "$mesa_driver" in
1465 AC_MSG_NOTICE([Disabling glut since there is no OpenGL driver])
1470 dnl Can't build glut if GLU not available
1471 if test "x$enable_glu$enable_glut" = xnoyes; then
1472 AC_MSG_WARN([Disabling glut since GLU is disabled])
1476 if test "x$enable_glut" = xyes; then
1477 SRC_DIRS="$SRC_DIRS glut/glx"
1478 if test "$x11_pkgconfig" = yes; then
1479 PKG_CHECK_MODULES([GLUT],[x11 xmu xi])
1480 GLUT_PC_REQ_PRIV="x11 xmu xi"
1481 GLUT_LIB_DEPS="$GLUT_LIBS"
1483 # should check these...
1484 GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
1485 GLUT_PC_LIB_PRIV="$GLUT_LIB_DEPS"
1486 GLUT_PC_CFLAGS="$X11_INCLUDES"
1488 if test "x$GCC" = xyes; then
1489 GLUT_CFLAGS="$GLUT_CFLAGS -fexceptions"
1491 GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
1492 GLUT_PC_LIB_PRIV="$GLUT_PC_LIB_PRIV -lm"
1494 # If static, empty GLUT_LIB_DEPS and add libs for programs to link
1495 if test "$enable_static" = no; then
1496 GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
1498 APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
1503 AC_SUBST([GLUT_LIB_DEPS])
1504 AC_SUBST([GLUT_MESA_DEPS])
1505 AC_SUBST([GLUT_CFLAGS])
1506 AC_SUBST([GLUT_PC_REQ_PRIV])
1507 AC_SUBST([GLUT_PC_LIB_PRIV])
1508 AC_SUBST([GLUT_PC_CFLAGS])
1511 dnl Program library dependencies
1512 dnl Only libm is added here if necessary as the libraries should
1513 dnl be pulled in by the linker
1515 if test "x$APP_LIB_DEPS" = x; then
1518 APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm"
1521 APP_LIB_DEPS="-lX11"
1528 AC_SUBST([APP_LIB_DEPS])
1529 AC_SUBST([PROGRAM_DIRS])
1532 dnl Gallium configuration
1534 if test "x$with_gallium_drivers" != x; then
1535 SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
1536 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1541 AC_SUBST([LLVM_CFLAGS])
1542 AC_SUBST([LLVM_LIBS])
1543 AC_SUBST([LLVM_LDFLAGS])
1544 AC_SUBST([LLVM_VERSION])
1548 case "x$enable_opengl$enable_gles1$enable_gles2" in
1550 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1554 AC_SUBST([VG_LIB_DEPS])
1555 AC_SUBST([EGL_CLIENT_APIS])
1557 AC_ARG_WITH([egl-platforms],
1558 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1559 [comma delimited native platforms libEGL supports, e.g.
1560 "x11,drm" @<:@default=auto@:>@])],
1561 [with_egl_platforms="$withval"],
1562 [with_egl_platforms=yes])
1563 AC_ARG_WITH([egl-displays],
1564 [AS_HELP_STRING([--with-egl-displays@<:@=DIRS...@:>@],
1565 [DEPRECATED. Use --with-egl-platforms instead])],
1566 [with_egl_platforms="$withval"])
1569 WAYLAND_EGL_LIB_DEPS=""
1571 case "$with_egl_platforms" in
1573 if test "x$enable_egl" = xyes && test "x$mesa_driver" != xosmesa; then
1575 if test "$mesa_driver" = dri; then
1576 EGL_PLATFORMS="$EGL_PLATFORMS drm"
1581 if test "x$enable_egl" != xyes; then
1582 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1584 # verify the requested driver directories exist
1585 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1586 for plat in $egl_platforms; do
1587 test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \
1588 AC_MSG_ERROR([EGL platform '$plat' doesn't exist])
1589 if test "$plat" = "fbdev"; then
1590 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev"
1592 if test "$plat" = "wayland"; then
1593 PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-server],, \
1594 [AC_MSG_ERROR([cannot find libwayland-client])])
1595 WAYLAND_EGL_LIB_DEPS="$WAYLAND_LIBS $LIBDRM_LIBS"
1596 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
1599 EGL_PLATFORMS="$egl_platforms"
1602 AC_SUBST([EGL_PLATFORMS])
1604 AC_SUBST([WAYLAND_EGL_LIB_DEPS])
1605 WAYLAND_EGL_PC_REQ_PRIV="wayland-client libdrm"
1606 WAYLAND_EGL_PC_LIB_PRIV=
1607 WAYLAND_EGL_PC_CFLAGS=
1609 AC_SUBST([WAYLAND_EGL_PC_REQ_PRIV])
1610 AC_SUBST([WAYLAND_EGL_PC_LIB_PRIV])
1611 AC_SUBST([WAYLAND_EGL_PC_CFLAGS])
1614 AC_ARG_WITH([egl-driver-dir],
1615 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1616 [directory for EGL drivers [[default=${libdir}/egl]]])],
1617 [EGL_DRIVER_INSTALL_DIR="$withval"],
1618 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1619 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1621 AC_ARG_WITH([xorg-driver-dir],
1622 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1623 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1624 [XORG_DRIVER_INSTALL_DIR="$withval"],
1625 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1626 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1628 AC_ARG_WITH([max-width],
1629 [AS_HELP_STRING([--with-max-width=N],
1630 [Maximum framebuffer width (4096)])],
1631 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1632 AS_IF([test "${withval}" -gt "4096"],
1633 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1635 AC_ARG_WITH([max-height],
1636 [AS_HELP_STRING([--with-max-height=N],
1637 [Maximum framebuffer height (4096)])],
1638 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1639 AS_IF([test "${withval}" -gt "4096"],
1640 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1646 AC_ARG_ENABLE([gallium-llvm],
1647 [AS_HELP_STRING([--enable-gallium-llvm],
1648 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1649 [enable_gallium_llvm="$enableval"],
1650 [enable_gallium_llvm=auto])
1651 if test "x$with_gallium_drivers" = x; then
1652 enable_gallium_llvm=no
1654 if test "x$enable_gallium_llvm" = xauto; then
1656 i*86|x86_64) enable_gallium_llvm=yes;;
1659 if test "x$enable_gallium_llvm" = xyes; then
1660 if test "x$LLVM_CONFIG" != xno; then
1661 LLVM_VERSION=`$LLVM_CONFIG --version`
1662 LLVM_CFLAGS=`$LLVM_CONFIG --cppflags`
1663 LLVM_LIBS="`$LLVM_CONFIG --libs` -lstdc++"
1665 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1666 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1667 DEFINES="$DEFINES -DGALLIUM_LLVMPIPE -D__STDC_CONSTANT_MACROS"
1677 dnl Gallium helper functions
1679 gallium_check_st() {
1680 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes; then
1681 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1683 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1684 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1686 if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
1687 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1691 gallium_require_llvm() {
1692 if test "x$MESA_LLVM" = x0; then
1694 i*86|x86_64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1700 if test "x$with_gallium_drivers" != x; then
1701 # This is for compile-testing
1702 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 i965 r300 svga"
1703 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1705 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1706 for driver in $gallium_drivers; do
1709 gallium_check_st "svga/drm" "dri-vmwgfx" "xorg-vmwgfx"
1712 gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1715 gallium_check_st "i965/drm" "dri-i965" "xorg-i965"
1718 gallium_require_llvm "Gallium R300"
1719 gallium_check_st "radeon/drm" "dri-r300" "xorg-r300"
1722 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1723 gallium_check_st "r600/drm" "dri-r600"
1726 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50 nvc0"
1727 gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau"
1730 if test "x$HAVE_ST_DRI" = xyes; then
1731 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1735 AC_MSG_ERROR([Unknown Gallium driver: $driver])
1741 dnl prepend CORE_DIRS to SRC_DIRS
1742 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
1744 dnl Restore LDFLAGS and CPPFLAGS
1745 LDFLAGS="$_SAVE_LDFLAGS"
1746 CPPFLAGS="$_SAVE_CPPFLAGS"
1748 dnl Substitute the config
1749 AC_CONFIG_FILES([configs/autoconf])
1751 dnl Replace the configs/current symlink
1752 AC_CONFIG_COMMANDS([configs],[
1753 if test -f configs/current || test -L configs/current; then
1754 rm -f configs/current
1756 ln -s autoconf configs/current
1762 dnl Output some configuration info for the user
1765 echo " prefix: $prefix"
1766 echo " exec_prefix: $exec_prefix"
1767 echo " libdir: $libdir"
1768 echo " includedir: $includedir"
1772 echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
1773 echo " OpenVG: $enable_openvg"
1777 echo " Driver: $mesa_driver"
1778 if test "$mesa_driver" != no; then
1779 if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
1780 echo " OSMesa: lib$OSMESA_LIB"
1784 if test "$mesa_driver" = dri; then
1785 # cleanup the drivers var
1786 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1787 if test "x$DRI_DIRS" = x; then
1788 echo " DRI drivers: no"
1790 echo " DRI drivers: $dri_dirs"
1792 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
1793 echo " Use XCB: $enable_xcb"
1794 echo " Shared dricore: $enable_dricore"
1798 echo " GLU: $enable_glu"
1799 echo " GLw: $enable_glw (Motif: $enable_motif)"
1800 echo " glut: $enable_glut"
1804 echo " EGL: $enable_egl"
1805 if test "$enable_egl" = yes; then
1806 echo " EGL platforms: $EGL_PLATFORMS"
1809 for d in $EGL_DRIVERS_DIRS; do
1810 egl_drivers="$egl_drivers builtin:egl_$d"
1813 if test "x$HAVE_ST_EGL" = xyes; then
1814 echo " EGL drivers: ${egl_drivers} egl_gallium"
1815 echo " EGL Gallium STs:$EGL_CLIENT_APIS"
1817 echo " EGL drivers: $egl_drivers"
1822 if test "x$MESA_LLVM" = x1; then
1824 echo " llvm-config: $LLVM_CONFIG"
1825 echo " llvm-version: $LLVM_VERSION"
1831 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
1832 echo " Gallium: yes"
1833 echo " Gallium dirs: $GALLIUM_DIRS"
1834 echo " Target dirs: $GALLIUM_TARGET_DIRS"
1835 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
1836 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
1837 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
1844 echo " Shared libs: $enable_shared"
1845 echo " Static libs: $enable_static"
1847 dnl Compiler options
1848 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
1849 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1850 $SED 's/^ *//;s/ */ /;s/ *$//'`
1851 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1852 $SED 's/^ *//;s/ */ /;s/ *$//'`
1853 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1855 echo " CFLAGS: $cflags"
1856 echo " CXXFLAGS: $cxxflags"
1857 echo " Macros: $defines"
1859 echo " PYTHON2: $PYTHON2"
1862 echo " Run '${MAKE-make}' to build Mesa"