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([openvg],
527 [AS_HELP_STRING([--enable-openvg],
528 [enable support for OpenVG API @<:@default=no@:>@])],
529 [enable_openvg="$enableval"],
531 AC_ARG_ENABLE([xorg],
532 [AS_HELP_STRING([--enable-xorg],
533 [enable support for X.Org DDX API @<:@default=no@:>@])],
534 [enable_xorg="$enableval"],
536 AC_ARG_ENABLE([d3d1x],
537 [AS_HELP_STRING([--enable-d3d1x],
538 [enable support for Direct3D 10 & 11 low-level API @<:@default=no@:>@])],
539 [enable_d3d1x="$enableval"],
542 [AS_HELP_STRING([--disable-egl],
543 [disable EGL library @<:@default=enabled@:>@])],
544 [enable_egl="$enableval"],
546 AC_ARG_ENABLE([gallium_egl],
547 [AS_HELP_STRING([--enable-gallium-egl],
548 [enable optional EGL state tracker (not required
549 for EGL support in Gallium with OpenGL and OpenGL ES)
550 @<:@default=disable@:>@])],
551 [enable_gallium_egl="$enableval"],
552 [enable_gallium_egl=no])
554 # Option for Gallium drivers
555 GALLIUM_DRIVERS_DEFAULT="r300,r600,swrast"
557 AC_ARG_WITH([gallium-drivers],
558 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
559 [comma delimited Gallium drivers list, e.g.
560 "i915,i965,nouveau,r300,r600,svga,swrast"
561 @<:@default=r300,r600,swrast@:>@])],
562 [with_gallium_drivers="$withval"],
563 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
565 if test "x$enable_opengl" = xno -a \
566 "x$enable_gles1" = xno -a \
567 "x$enable_gles2" = xno -a \
568 "x$enable_openvg" = xno -a \
569 "x$enable_xorg" = xno -a \
570 "x$enable_d3d1x" = xno; then
571 AC_MSG_ERROR([at least one API should be enabled])
575 if test "x$enable_opengl" = xno; then
576 API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
578 API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
580 if test "x$enable_gles1" = xyes; then
581 API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
583 if test "x$enable_gles2" = xyes; then
584 API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
586 AC_SUBST([API_DEFINES])
588 AC_ARG_ENABLE([shared-glapi],
589 [AS_HELP_STRING([--enable-shared-glapi],
590 [EXPERIMENTAL. Enable shared glapi for OpenGL @<:@default=no@:>@])],
591 [enable_shared_glapi="$enableval"],
592 [enable_shared_glapi=no])
595 if test "x$enable_shared_glapi" = xyes; then
598 AC_SUBST([SHARED_GLAPI])
601 dnl Driver configuration. Options are xlib, dri and osmesa right now.
602 dnl More later: fbdev, ...
604 default_driver="xlib"
609 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
612 *freebsd* | dragonfly* | *netbsd*)
614 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
619 if test "x$enable_opengl" = xno; then
623 AC_ARG_WITH([driver],
624 [AS_HELP_STRING([--with-driver=DRIVER],
625 [driver for Mesa: xlib,dri,osmesa @<:@default=dri when available, or xlib@:>@])],
626 [mesa_driver="$withval"],
627 [mesa_driver="$default_driver"])
628 dnl Check for valid option
629 case "x$mesa_driver" in
631 if test "x$enable_opengl" = xno; then
632 AC_MSG_ERROR([Driver '$mesa_driver' requires OpenGL enabled])
638 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
643 dnl Driver specific build directories
646 dnl this variable will be prepended to SRC_DIRS and is not exported
651 GALLIUM_DIRS="auxiliary drivers state_trackers"
652 GALLIUM_TARGET_DIRS=""
653 GALLIUM_WINSYS_DIRS="sw"
654 GALLIUM_DRIVERS_DIRS="softpipe failover galahad trace rbug noop identity"
655 GALLIUM_STATE_TRACKERS_DIRS=""
657 # build shared-glapi if enabled for OpenGL or if OpenGL ES is enabled
658 case "x$enable_shared_glapi$enable_gles1$enable_gles2" in
660 CORE_DIRS="$CORE_DIRS mapi/shared-glapi"
664 # build glapi if OpenGL is enabled
665 if test "x$enable_opengl" = xyes; then
666 CORE_DIRS="$CORE_DIRS mapi/glapi"
669 # build es1api if OpenGL ES 1.x is enabled
670 if test "x$enable_gles1" = xyes; then
671 CORE_DIRS="$CORE_DIRS mapi/es1api"
674 # build es2api if OpenGL ES 2.x is enabled
675 if test "x$enable_gles2" = xyes; then
676 CORE_DIRS="$CORE_DIRS mapi/es2api"
679 # build glsl and mesa if OpenGL or OpenGL ES is enabled
680 case "x$enable_opengl$enable_gles1$enable_gles2" in
682 CORE_DIRS="$CORE_DIRS glsl mesa"
686 case "$mesa_driver" in
689 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
690 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
691 GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS"
694 SRC_DIRS="$SRC_DIRS glx"
696 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib sw/dri"
697 GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
709 AC_SUBST([DRIVER_DIRS])
710 AC_SUBST([GALLIUM_DIRS])
711 AC_SUBST([GALLIUM_TARGET_DIRS])
712 AC_SUBST([GALLIUM_WINSYS_DIRS])
713 AC_SUBST([GALLIUM_DRIVERS_DIRS])
714 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
715 AC_SUBST([MESA_LLVM])
718 dnl Find out if X is available. The variable have_x is set if libX11 is
719 dnl found to mimic AC_PATH_XTRA.
721 if test -n "$PKG_CONFIG"; then
722 AC_MSG_CHECKING([pkg-config files for X11 are available])
723 PKG_CHECK_EXISTS([x11],[
729 AC_MSG_RESULT([$x11_pkgconfig])
733 dnl Use the autoconf macro if no pkg-config files
734 if test "$x11_pkgconfig" = yes; then
735 PKG_CHECK_MODULES([X11], [x11])
738 test -z "$X11_CFLAGS" && X11_CFLAGS="$X_CFLAGS"
739 test -z "$X11_LIBS" && X11_LIBS="$X_LIBS -lX11"
740 AC_SUBST([X11_CFLAGS])
744 dnl Try to tell the user that the --x-* options are only used when
745 dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
746 m4_divert_once([HELP_BEGIN],
747 [These options are only used when the X libraries cannot be found by the
748 pkg-config utility.])
750 dnl We need X for xlib and dri, so bomb now if it's not found
751 case "$mesa_driver" in
753 if test "$no_x" = yes; then
754 AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver])
759 dnl XCB - this is only used for GLX right now
761 [AS_HELP_STRING([--enable-xcb],
762 [use XCB for GLX @<:@default=disabled@:>@])],
763 [enable_xcb="$enableval"],
765 if test "x$enable_xcb" = xyes; then
766 DEFINES="$DEFINES -DUSE_XCB"
771 dnl Direct rendering or just indirect rendering
774 dnl Disable by default on GNU/Hurd
775 driglx_direct_default="no"
778 dnl Disable by default on cygwin
779 driglx_direct_default="no"
782 driglx_direct_default="yes"
785 AC_ARG_ENABLE([driglx-direct],
786 [AS_HELP_STRING([--disable-driglx-direct],
787 [enable direct rendering in GLX and EGL for DRI \
788 @<:@default=auto@:>@])],
789 [driglx_direct="$enableval"],
790 [driglx_direct="$driglx_direct_default"])
793 dnl libGL configuration per driver
795 case "$mesa_driver" in
797 if test "$x11_pkgconfig" = yes; then
798 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
799 GL_PC_REQ_PRIV="x11 xext"
800 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
801 GL_LIB_DEPS="$XLIBGL_LIBS"
803 # should check these...
804 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
805 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
806 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
807 GL_PC_CFLAGS="$X11_INCLUDES"
809 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread"
810 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
812 # if static, move the external libraries to the programs
813 # and empty the libraries for libGL
814 if test "$enable_static" = yes; then
815 APP_LIB_DEPS="$APP_LIB_DEPS $GL_LIB_DEPS"
819 dri|no) # these checks are still desired when there is no mesa_driver
820 # DRI must be shared, I think
821 if test "$enable_static" = yes; then
822 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
825 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
826 GL_PC_REQ_PRIV="glproto >= $GLPROTO_REQUIRED"
829 if test x"$driglx_direct" = xyes; then
831 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED])
832 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
833 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
834 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
837 # find the DRI deps for libGL
838 if test "$x11_pkgconfig" = yes; then
839 dri_modules="x11 xext xdamage xfixes"
841 # add xf86vidmode if available
842 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
843 if test "$HAVE_XF86VIDMODE" = yes ; then
844 dri_modules="$dri_modules xxf86vm"
847 # add xcb modules if necessary
848 if test "$enable_xcb" = yes; then
849 dri_modules="$dri_modules x11-xcb xcb-glx"
852 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
853 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
854 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
855 GL_LIB_DEPS="$DRIGL_LIBS"
857 # should check these...
858 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
859 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
860 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
861 GL_PC_CFLAGS="$X11_INCLUDES"
863 # XCB can only be used from pkg-config
864 if test "$enable_xcb" = yes; then
865 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
866 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
867 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
868 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
872 # need DRM libs, -lpthread, etc.
873 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
874 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
875 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
876 GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
877 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
878 GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
881 # No libGL for osmesa
885 AC_SUBST([GL_LIB_DEPS])
886 AC_SUBST([GL_PC_REQ_PRIV])
887 AC_SUBST([GL_PC_LIB_PRIV])
888 AC_SUBST([GL_PC_CFLAGS])
889 AC_SUBST([DRI_PC_REQ_PRIV])
890 AC_SUBST([GLESv1_CM_LIB_DEPS])
891 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
892 AC_SUBST([GLESv2_LIB_DEPS])
893 AC_SUBST([GLESv2_PC_LIB_PRIV])
895 GLAPI_LIB_DEPS="-lpthread"
896 AC_SUBST([GLAPI_LIB_DEPS])
899 dnl Setup default DRI CFLAGS
900 DRI_CFLAGS='$(CFLAGS)'
901 DRI_CXXFLAGS='$(CXXFLAGS)'
902 DRI_LIB_DEPS='$(TOP)/src/mesa/libmesa.a'
903 MESA_MODULES='$(TOP)/src/mesa/libmesa.a'
905 AC_ARG_ENABLE([shared-dricore],
906 [AS_HELP_STRING([--enable-shared-dricore],
907 [link DRI modules with shared core DRI routines @<:@default=disabled@:>@])],
908 [enable_dricore="$enableval"],
910 if test "$mesa_driver" = dri ; then
911 if test "$enable_dricore" = yes ; then
912 if test "$GCC$GXX" != yesyes ; then
913 AC_MSG_WARN([Shared dricore requires GCC-compatible rpath handling. Disabling shared dricore])
916 DRICORE_GLSL_LIBS='$(TOP)/$(LIB_DIR)/libglsl.so'
917 DRICORE_LIBS='$(TOP)/$(LIB_DIR)/libdricore.so'
918 DRICORE_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -lglsl'
919 DRI_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore -lglsl'
920 DRI_CFLAGS='$(CFLAGS_NOVISIBILITY) -DUSE_DRICORE'
921 DRI_CXXFLAGS='$(CXXFLAGS_NOVISIBILITY) -DUSE_DRICORE'
922 MESA_MODULES='$(DRICORE_LIBS) $(DRICORE_GLSL_LIBS)'
926 AC_SUBST([DRICORE_LIBS])
927 AC_SUBST([DRICORE_GLSL_LIBS])
928 AC_SUBST([DRICORE_LIB_DEPS])
929 AC_SUBST([DRI_CXXFLAGS])
930 AC_SUBST([DRI_CFLAGS])
931 AC_SUBST([MESA_MODULES])
933 AC_SUBST([HAVE_XF86VIDMODE])
935 PKG_CHECK_MODULES([LIBDRM_RADEON],
936 [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED],
937 HAVE_LIBDRM_RADEON=yes,
938 HAVE_LIBDRM_RADEON=no)
943 if test "$mesa_driver" = xlib; then
944 DEFINES="$DEFINES -DUSE_XSHM"
951 AC_ARG_ENABLE([glx-tls],
952 [AS_HELP_STRING([--enable-glx-tls],
953 [enable TLS support in GLX @<:@default=disabled@:>@])],
954 [GLX_USE_TLS="$enableval"],
956 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
958 AS_IF([test "x$GLX_USE_TLS" = xyes],
959 [DEFINES="${DEFINES} -DGLX_USE_TLS -DPTHREADS"])
964 dnl Directory for DRI drivers
965 AC_ARG_WITH([dri-driverdir],
966 [AS_HELP_STRING([--with-dri-driverdir=DIR],
967 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
968 [DRI_DRIVER_INSTALL_DIR="$withval"],
969 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
970 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
971 dnl Extra search path for DRI drivers
972 AC_ARG_WITH([dri-searchpath],
973 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
974 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
975 [DRI_DRIVER_SEARCH_DIR="$withval"],
976 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
977 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
978 dnl Which drivers to build - default is chosen by platform
979 AC_ARG_WITH([dri-drivers],
980 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
981 [comma delimited DRI drivers list, e.g.
982 "swrast,i965,radeon" @<:@default=auto@:>@])],
983 [with_dri_drivers="$withval"],
984 [with_dri_drivers=yes])
985 if test "x$with_dri_drivers" = x; then
989 dnl If $with_dri_drivers is yes, directories will be added through
992 case "$with_dri_drivers" in
998 # verify the requested driver directories exist
999 dri_drivers=`IFS=', '; echo $with_dri_drivers`
1000 for driver in $dri_drivers; do
1001 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
1002 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
1004 DRI_DIRS="$dri_drivers"
1008 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
1009 if test "$mesa_driver" = dri -o "$mesa_driver" = no; then
1010 # Platform specific settings and drivers to build
1013 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1014 if test "x$driglx_direct" = xyes; then
1015 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1017 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
1021 # sis is missing because they have not be converted to use
1022 # the new interface. i810 are missing because there is no
1023 # x86-64 system where they could *ever* be used.
1024 if test "x$DRI_DIRS" = "xyes"; then
1025 DRI_DIRS="i915 i965 mach64 mga nouveau r128 r200 r300 r600 \
1026 radeon savage tdfx unichrome swrast"
1030 # Build only the drivers for cards that exist on PowerPC.
1031 # At some point MGA will be added, but not yet.
1032 if test "x$DRI_DIRS" = "xyes"; then
1033 DRI_DIRS="mach64 r128 r200 r300 r600 radeon tdfx swrast"
1037 # Build only the drivers for cards that exist on sparc`
1038 if test "x$DRI_DIRS" = "xyes"; then
1039 DRI_DIRS="mach64 r128 r200 r300 r600 radeon swrast"
1044 freebsd* | dragonfly* | *netbsd*)
1045 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
1046 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
1047 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1048 if test "x$driglx_direct" = xyes; then
1049 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1052 if test "x$DRI_DIRS" = "xyes"; then
1053 DRI_DIRS="i810 i915 i965 mach64 mga nouveau r128 r200 r300 r600 \
1054 radeon tdfx unichrome savage sis swrast"
1058 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1059 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
1062 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1063 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1064 if test "x$driglx_direct" = xyes; then
1065 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1069 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1070 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1071 if test "x$driglx_direct" = xyes; then
1072 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1074 if test "x$DRI_DIRS" = "xyes"; then
1081 if test "x$DRI_DIRS" = "xyes"; then
1082 DRI_DIRS="i810 i915 i965 mach64 mga nouveau r128 r200 r300 r600 radeon \
1083 savage sis tdfx unichrome swrast"
1086 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
1089 if test "$mesa_driver" = dri; then
1092 AC_ARG_WITH([expat],
1093 [AS_HELP_STRING([--with-expat=DIR],
1094 [expat install directory])],[
1095 EXPAT_INCLUDES="-I$withval/include"
1096 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
1097 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
1098 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
1100 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
1101 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1102 [AC_MSG_ERROR([Expat required for DRI.])])
1105 # put all the necessary libs together, including possibly libdricore
1106 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
1108 AC_SUBST([DRI_DIRS])
1109 AC_SUBST([EXPAT_INCLUDES])
1110 AC_SUBST([DRI_LIB_DEPS])
1114 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1120 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1125 *radeon*|*r200*|*r300*|*r600*)
1126 if test "x$HAVE_LIBDRM_RADEON" = xyes; then
1127 RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS"
1128 RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS
1132 AC_SUBST([RADEON_CFLAGS])
1133 AC_SUBST([RADEON_LDFLAGS])
1137 dnl OSMesa configuration
1139 if test "$mesa_driver" = xlib; then
1140 default_gl_osmesa=yes
1142 default_gl_osmesa=no
1144 AC_ARG_ENABLE([gl-osmesa],
1145 [AS_HELP_STRING([--enable-gl-osmesa],
1146 [enable OSMesa with libGL @<:@default=enabled for xlib driver@:>@])],
1147 [gl_osmesa="$enableval"],
1148 [gl_osmesa="$default_gl_osmesa"])
1149 if test "x$gl_osmesa" = xyes; then
1150 if test "x$enable_opengl" = xno; then
1151 AC_MSG_ERROR([OpenGL is not available for OSMesa driver])
1153 if test "$mesa_driver" = osmesa; then
1154 AC_MSG_ERROR([libGL is not available for OSMesa driver])
1156 DRIVER_DIRS="$DRIVER_DIRS osmesa"
1160 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1161 AC_ARG_WITH([osmesa-bits],
1162 [AS_HELP_STRING([--with-osmesa-bits=BITS],
1163 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1164 [osmesa_bits="$withval"],
1166 if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
1167 AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
1170 case "x$osmesa_bits" in
1175 OSMESA_LIB="OSMesa$osmesa_bits"
1176 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1179 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1182 AC_SUBST([OSMESA_LIB])
1184 case "$DRIVER_DIRS" in
1186 # only link libraries with osmesa if shared
1187 if test "$enable_static" = no; then
1188 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1193 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1196 AC_SUBST([OSMESA_LIB_DEPS])
1197 AC_SUBST([OSMESA_MESA_DEPS])
1198 AC_SUBST([OSMESA_PC_REQ])
1199 AC_SUBST([OSMESA_PC_LIB_PRIV])
1202 dnl EGL configuration
1206 if test "x$enable_egl" = xno; then
1207 if test "x$mesa_driver" = xno; then
1208 AC_MSG_ERROR([cannot disable EGL when there is no mesa driver])
1211 if test "x$enable_egl" = xyes; then
1212 SRC_DIRS="$SRC_DIRS egl"
1213 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS -lpthread"
1216 if test "$enable_static" != yes; then
1217 # build egl_glx when libGL is built
1218 if test "$mesa_driver" = xlib -o "$mesa_driver" = dri; then
1219 EGL_DRIVERS_DIRS="glx"
1222 PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1223 [have_libudev=yes],[have_libudev=no])
1224 if test "$have_libudev" = yes; then
1225 DEFINES="$DEFINES -DHAVE_LIBUDEV"
1227 if test "$mesa_driver" = dri; then
1228 # build egl_dri2 when xcb-dri2 is available
1229 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes],
1230 [have_xcb_dri2=yes],[have_xcb_dri2=no])
1232 if test "$have_xcb_dri2" = yes; then
1233 EGL_DRIVER_DRI2=dri2
1234 DEFINES="$DEFINES -DHAVE_XCB_DRI2"
1235 # workaround a bug in xcb-dri2 generated by xcb-proto 1.6
1236 AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [],
1237 [DEFINES="$DEFINES -DXCB_DRI2_CONNECT_DEVICE_NAME_BROKEN"])
1241 EGL_DRIVERS_DIRS="$EGL_DRIVERS_DIRS $EGL_DRIVER_DRI2"
1244 AC_SUBST([EGL_LIB_DEPS])
1245 AC_SUBST([EGL_DRIVERS_DIRS])
1248 dnl EGL Gallium configuration
1250 if test "x$enable_gallium_egl" = xyes; then
1251 if test "x$with_gallium_drivers" = x; then
1252 AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
1254 if test "x$enable_egl" = xno; then
1255 AC_MSG_ERROR([cannot enable egl_gallium without EGL])
1258 GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
1259 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl"
1264 dnl X.Org DDX configuration
1266 if test "x$enable_xorg" = xyes; then
1267 PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1268 PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1269 PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1270 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1271 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1272 HAVE_XEXTPROTO_71="no")
1273 GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS"
1278 dnl OpenVG configuration
1282 if test "x$enable_openvg" = xyes; then
1283 if test "x$enable_egl" = xno; then
1284 AC_MSG_ERROR([cannot enable OpenVG without EGL])
1286 if test "x$with_gallium_drivers" = x; then
1287 AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1289 if test "x$enable_gallium_egl" = xno; then
1290 AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
1293 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1294 VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS -lpthread"
1295 CORE_DIRS="$CORE_DIRS mapi/vgapi"
1296 GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1301 dnl D3D1X configuration
1304 if test "x$enable_d3d1x" = xyes; then
1305 if test "x$with_gallium_drivers" = x; then
1306 AC_MSG_ERROR([cannot enable D3D1X without Gallium])
1309 GALLIUM_STATE_TRACKERS_DIRS="d3d1x $GALLIUM_STATE_TRACKERS_DIRS"
1314 dnl GLU configuration
1316 AC_ARG_ENABLE([glu],
1317 [AS_HELP_STRING([--disable-glu],
1318 [enable OpenGL Utility library @<:@default=enabled@:>@])],
1319 [enable_glu="$enableval"],
1322 if test "x$enable_glu" = xyes -a "x$mesa_driver" = xno; then
1323 AC_MSG_NOTICE([Disabling GLU since there is no OpenGL driver])
1327 if test "x$enable_glu" = xyes; then
1328 SRC_DIRS="$SRC_DIRS glu"
1330 case "$mesa_driver" in
1332 # Link libGLU to libOSMesa instead of libGL
1335 if test "$enable_static" = no; then
1336 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
1342 # If static, empty GLU_LIB_DEPS and add libs for programs to link
1344 GLU_PC_LIB_PRIV="-lm"
1345 if test "$enable_static" = no; then
1347 GLU_MESA_DEPS='-l$(GL_LIB)'
1351 APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
1356 if test "$enable_static" = no; then
1357 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
1359 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
1360 AC_SUBST([GLU_LIB_DEPS])
1361 AC_SUBST([GLU_MESA_DEPS])
1362 AC_SUBST([GLU_PC_REQ])
1363 AC_SUBST([GLU_PC_REQ_PRIV])
1364 AC_SUBST([GLU_PC_LIB_PRIV])
1365 AC_SUBST([GLU_PC_CFLAGS])
1368 dnl GLw configuration
1370 AC_ARG_ENABLE([glw],
1371 [AS_HELP_STRING([--disable-glw],
1372 [enable Xt/Motif widget library @<:@default=enabled@:>@])],
1373 [enable_glw="$enableval"],
1375 dnl Don't build GLw on osmesa
1376 if test "x$enable_glw" = xyes; then
1377 case "$mesa_driver" in
1379 AC_MSG_NOTICE([Disabling GLw since there is no OpenGL driver])
1384 AC_ARG_ENABLE([motif],
1385 [AS_HELP_STRING([--enable-motif],
1386 [use Motif widgets in GLw @<:@default=disabled@:>@])],
1387 [enable_motif="$enableval"],
1390 if test "x$enable_glw" = xyes; then
1391 SRC_DIRS="$SRC_DIRS glw"
1392 if test "$x11_pkgconfig" = yes; then
1393 PKG_CHECK_MODULES([GLW],[x11 xt])
1394 GLW_PC_REQ_PRIV="x11 xt"
1395 GLW_LIB_DEPS="$GLW_LIBS"
1397 # should check these...
1398 GLW_LIB_DEPS="$X_LIBS -lXt -lX11"
1399 GLW_PC_LIB_PRIV="$GLW_LIB_DEPS"
1400 GLW_PC_CFLAGS="$X11_INCLUDES"
1403 GLW_SOURCES="GLwDrawA.c"
1405 if test "x$enable_motif" = xyes; then
1406 GLW_SOURCES="$GLW_SOURCES GLwMDrawA.c"
1407 AC_PATH_PROG([MOTIF_CONFIG], [motif-config], [no])
1408 if test "x$MOTIF_CONFIG" != xno; then
1409 MOTIF_CFLAGS=`$MOTIF_CONFIG --cflags`
1410 MOTIF_LIBS=`$MOTIF_CONFIG --libs`
1412 AC_CHECK_HEADER([Xm/PrimitiveP.h], [],
1413 [AC_MSG_ERROR([Can't locate Motif headers])])
1414 AC_CHECK_LIB([Xm], [XmGetPixmap], [MOTIF_LIBS="-lXm"],
1415 [AC_MSG_ERROR([Can't locate Motif Xm library])])
1417 # MOTIF_LIBS is prepended to GLW_LIB_DEPS since Xm needs Xt/X11
1418 GLW_LIB_DEPS="$MOTIF_LIBS $GLW_LIB_DEPS"
1419 GLW_PC_LIB_PRIV="$MOTIF_LIBS $GLW_PC_LIB_PRIV"
1420 GLW_PC_CFLAGS="$MOTIF_CFLAGS $GLW_PC_CFLAGS"
1423 # If static, empty GLW_LIB_DEPS and add libs for programs to link
1424 GLW_PC_LIB_PRIV="$GLW_PC_LIB_PRIV"
1425 if test "$enable_static" = no; then
1426 GLW_MESA_DEPS='-l$(GL_LIB)'
1427 GLW_LIB_DEPS="$GLW_LIB_DEPS"
1429 APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
1434 AC_SUBST([GLW_LIB_DEPS])
1435 AC_SUBST([GLW_MESA_DEPS])
1436 AC_SUBST([GLW_SOURCES])
1437 AC_SUBST([MOTIF_CFLAGS])
1438 AC_SUBST([GLW_PC_REQ_PRIV])
1439 AC_SUBST([GLW_PC_LIB_PRIV])
1440 AC_SUBST([GLW_PC_CFLAGS])
1443 dnl GLUT configuration
1445 if test -f "$srcdir/include/GL/glut.h"; then
1450 AC_ARG_ENABLE([glut],
1451 [AS_HELP_STRING([--disable-glut],
1452 [enable GLUT library @<:@default=enabled if source available@:>@])],
1453 [enable_glut="$enableval"],
1454 [enable_glut="$default_glut"])
1456 dnl Don't build glut on osmesa
1457 if test "x$enable_glut" = xyes; then
1458 case "$mesa_driver" in
1460 AC_MSG_NOTICE([Disabling glut since there is no OpenGL driver])
1465 dnl Can't build glut if GLU not available
1466 if test "x$enable_glu$enable_glut" = xnoyes; then
1467 AC_MSG_WARN([Disabling glut since GLU is disabled])
1471 if test "x$enable_glut" = xyes; then
1472 SRC_DIRS="$SRC_DIRS glut/glx"
1473 if test "$x11_pkgconfig" = yes; then
1474 PKG_CHECK_MODULES([GLUT],[x11 xmu xi])
1475 GLUT_PC_REQ_PRIV="x11 xmu xi"
1476 GLUT_LIB_DEPS="$GLUT_LIBS"
1478 # should check these...
1479 GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
1480 GLUT_PC_LIB_PRIV="$GLUT_LIB_DEPS"
1481 GLUT_PC_CFLAGS="$X11_INCLUDES"
1483 if test "x$GCC" = xyes; then
1484 GLUT_CFLAGS="$GLUT_CFLAGS -fexceptions"
1486 GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
1487 GLUT_PC_LIB_PRIV="$GLUT_PC_LIB_PRIV -lm"
1489 # If static, empty GLUT_LIB_DEPS and add libs for programs to link
1490 if test "$enable_static" = no; then
1491 GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
1493 APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
1498 AC_SUBST([GLUT_LIB_DEPS])
1499 AC_SUBST([GLUT_MESA_DEPS])
1500 AC_SUBST([GLUT_CFLAGS])
1501 AC_SUBST([GLUT_PC_REQ_PRIV])
1502 AC_SUBST([GLUT_PC_LIB_PRIV])
1503 AC_SUBST([GLUT_PC_CFLAGS])
1506 dnl Program library dependencies
1507 dnl Only libm is added here if necessary as the libraries should
1508 dnl be pulled in by the linker
1510 if test "x$APP_LIB_DEPS" = x; then
1513 APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm"
1516 APP_LIB_DEPS="-lX11"
1523 AC_SUBST([APP_LIB_DEPS])
1524 AC_SUBST([PROGRAM_DIRS])
1527 dnl Gallium configuration
1529 if test "x$with_gallium_drivers" != x; then
1530 SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
1531 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1536 AC_SUBST([LLVM_CFLAGS])
1537 AC_SUBST([LLVM_LIBS])
1538 AC_SUBST([LLVM_LDFLAGS])
1539 AC_SUBST([LLVM_VERSION])
1543 case "x$enable_opengl$enable_gles1$enable_gles2" in
1545 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1549 AC_SUBST([VG_LIB_DEPS])
1550 AC_SUBST([EGL_CLIENT_APIS])
1552 AC_ARG_WITH([egl-platforms],
1553 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1554 [comma delimited native platforms libEGL supports, e.g.
1555 "x11,drm" @<:@default=auto@:>@])],
1556 [with_egl_platforms="$withval"],
1557 [with_egl_platforms=yes])
1560 WAYLAND_EGL_LIB_DEPS=""
1562 case "$with_egl_platforms" in
1564 if test "x$enable_egl" = xyes && test "x$mesa_driver" != xosmesa; then
1566 if test "$mesa_driver" = dri; then
1567 EGL_PLATFORMS="$EGL_PLATFORMS drm"
1572 if test "x$enable_egl" != xyes; then
1573 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1575 # verify the requested driver directories exist
1576 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1577 for plat in $egl_platforms; do
1578 test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \
1579 AC_MSG_ERROR([EGL platform '$plat' doesn't exist])
1580 if test "$plat" = "fbdev"; then
1581 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev"
1583 if test "$plat" = "wayland"; then
1584 PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-server],, \
1585 [AC_MSG_ERROR([cannot find libwayland-client])])
1586 WAYLAND_EGL_LIB_DEPS="$WAYLAND_LIBS $LIBDRM_LIBS"
1587 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
1590 EGL_PLATFORMS="$egl_platforms"
1593 AC_SUBST([EGL_PLATFORMS])
1595 AC_SUBST([WAYLAND_EGL_LIB_DEPS])
1596 WAYLAND_EGL_PC_REQ_PRIV="wayland-client libdrm"
1597 WAYLAND_EGL_PC_LIB_PRIV=
1598 WAYLAND_EGL_PC_CFLAGS=
1600 AC_SUBST([WAYLAND_EGL_PC_REQ_PRIV])
1601 AC_SUBST([WAYLAND_EGL_PC_LIB_PRIV])
1602 AC_SUBST([WAYLAND_EGL_PC_CFLAGS])
1605 AC_ARG_WITH([egl-driver-dir],
1606 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1607 [directory for EGL drivers [[default=${libdir}/egl]]])],
1608 [EGL_DRIVER_INSTALL_DIR="$withval"],
1609 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1610 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1612 AC_ARG_WITH([xorg-driver-dir],
1613 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1614 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1615 [XORG_DRIVER_INSTALL_DIR="$withval"],
1616 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1617 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1619 AC_ARG_WITH([max-width],
1620 [AS_HELP_STRING([--with-max-width=N],
1621 [Maximum framebuffer width (4096)])],
1622 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1623 AS_IF([test "${withval}" -gt "4096"],
1624 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1626 AC_ARG_WITH([max-height],
1627 [AS_HELP_STRING([--with-max-height=N],
1628 [Maximum framebuffer height (4096)])],
1629 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1630 AS_IF([test "${withval}" -gt "4096"],
1631 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1637 AC_ARG_ENABLE([gallium-llvm],
1638 [AS_HELP_STRING([--enable-gallium-llvm],
1639 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1640 [enable_gallium_llvm="$enableval"],
1641 [enable_gallium_llvm=auto])
1642 if test "x$with_gallium_drivers" = x; then
1643 enable_gallium_llvm=no
1645 if test "x$enable_gallium_llvm" = xauto; then
1647 i*86|x86_64) enable_gallium_llvm=yes;;
1650 if test "x$enable_gallium_llvm" = xyes; then
1651 if test "x$LLVM_CONFIG" != xno; then
1652 LLVM_VERSION=`$LLVM_CONFIG --version`
1653 LLVM_CFLAGS=`$LLVM_CONFIG --cppflags`
1654 LLVM_LIBS="`$LLVM_CONFIG --libs` -lstdc++"
1656 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1657 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1658 DEFINES="$DEFINES -DGALLIUM_LLVMPIPE -D__STDC_CONSTANT_MACROS"
1668 dnl Gallium helper functions
1670 gallium_check_st() {
1671 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes; then
1672 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1674 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1675 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1677 if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
1678 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1682 gallium_require_llvm() {
1683 if test "x$MESA_LLVM" = x0; then
1685 i*86|x86_64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1691 if test "x$with_gallium_drivers" != x; then
1692 # This is for compile-testing
1693 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 i965 r300 svga"
1694 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1696 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1697 for driver in $gallium_drivers; do
1700 gallium_check_st "svga/drm" "dri-vmwgfx" "xorg-vmwgfx"
1703 gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1706 gallium_check_st "i965/drm" "dri-i965" "xorg-i965"
1709 gallium_require_llvm "Gallium R300"
1710 gallium_check_st "radeon/drm" "dri-r300" "xorg-r300"
1713 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1714 gallium_check_st "r600/drm" "dri-r600"
1717 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50 nvc0"
1718 gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau"
1721 if test "x$HAVE_ST_DRI" = xyes; then
1722 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1726 AC_MSG_ERROR([Unknown Gallium driver: $driver])
1732 dnl prepend CORE_DIRS to SRC_DIRS
1733 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
1735 dnl Restore LDFLAGS and CPPFLAGS
1736 LDFLAGS="$_SAVE_LDFLAGS"
1737 CPPFLAGS="$_SAVE_CPPFLAGS"
1739 dnl Substitute the config
1740 AC_CONFIG_FILES([configs/autoconf])
1742 dnl Replace the configs/current symlink
1743 AC_CONFIG_COMMANDS([configs],[
1744 if test -f configs/current || test -L configs/current; then
1745 rm -f configs/current
1747 ln -s autoconf configs/current
1753 dnl Output some configuration info for the user
1756 echo " prefix: $prefix"
1757 echo " exec_prefix: $exec_prefix"
1758 echo " libdir: $libdir"
1759 echo " includedir: $includedir"
1763 echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
1764 echo " OpenVG: $enable_openvg"
1768 echo " Driver: $mesa_driver"
1769 if test "$mesa_driver" != no; then
1770 if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
1771 echo " OSMesa: lib$OSMESA_LIB"
1775 if test "$mesa_driver" = dri; then
1776 # cleanup the drivers var
1777 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1778 if test "x$DRI_DIRS" = x; then
1779 echo " DRI drivers: no"
1781 echo " DRI drivers: $dri_dirs"
1783 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
1784 echo " Use XCB: $enable_xcb"
1785 echo " Shared dricore: $enable_dricore"
1789 echo " GLU: $enable_glu"
1790 echo " GLw: $enable_glw (Motif: $enable_motif)"
1791 echo " glut: $enable_glut"
1795 echo " EGL: $enable_egl"
1796 if test "$enable_egl" = yes; then
1797 echo " EGL platforms: $EGL_PLATFORMS"
1800 for d in $EGL_DRIVERS_DIRS; do
1801 egl_drivers="$egl_drivers builtin:egl_$d"
1804 if test "x$HAVE_ST_EGL" = xyes; then
1805 echo " EGL drivers: ${egl_drivers} egl_gallium"
1806 echo " EGL Gallium STs:$EGL_CLIENT_APIS"
1808 echo " EGL drivers: $egl_drivers"
1813 if test "x$MESA_LLVM" = x1; then
1815 echo " llvm-config: $LLVM_CONFIG"
1816 echo " llvm-version: $LLVM_VERSION"
1822 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
1823 echo " Gallium: yes"
1824 echo " Gallium dirs: $GALLIUM_DIRS"
1825 echo " Target dirs: $GALLIUM_TARGET_DIRS"
1826 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
1827 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
1828 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
1835 echo " Shared libs: $enable_shared"
1836 echo " Static libs: $enable_static"
1838 dnl Compiler options
1839 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
1840 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1841 $SED 's/^ *//;s/ */ /;s/ *$//'`
1842 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1843 $SED 's/^ *//;s/ */ /;s/ *$//'`
1844 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1846 echo " CFLAGS: $cflags"
1847 echo " CXXFLAGS: $cxxflags"
1848 echo " Macros: $defines"
1850 echo " PYTHON2: $PYTHON2"
1853 echo " Run '${MAKE-make}' to build Mesa"