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"],
552 # Option for Gallium drivers
553 GALLIUM_DRIVERS_DEFAULT="r300,r600,swrast"
555 AC_ARG_WITH([gallium-drivers],
556 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
557 [comma delimited Gallium drivers list, e.g.
558 "i915,i965,nouveau,r300,r600,svga,swrast"
559 @<:@default=r300,r600,swrast@:>@])],
560 [with_gallium_drivers="$withval"],
561 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
563 if test "x$enable_opengl" = xno -a \
564 "x$enable_gles1" = xno -a \
565 "x$enable_gles2" = xno -a \
566 "x$enable_openvg" = xno -a \
567 "x$enable_xorg" = xno -a \
568 "x$enable_d3d1x" = xno; then
569 AC_MSG_ERROR([at least one API should be enabled])
573 if test "x$enable_opengl" = xno; then
574 API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
576 API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
578 if test "x$enable_gles1" = xyes; then
579 API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
581 if test "x$enable_gles2" = xyes; then
582 API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
584 AC_SUBST([API_DEFINES])
586 AC_ARG_ENABLE([shared-glapi],
587 [AS_HELP_STRING([--enable-shared-glapi],
588 [EXPERIMENTAL. Enable shared glapi for OpenGL @<:@default=no@:>@])],
589 [enable_shared_glapi="$enableval"],
590 [enable_shared_glapi=no])
593 if test "x$enable_shared_glapi" = xyes; then
596 AC_SUBST([SHARED_GLAPI])
599 dnl Driver configuration. Options are xlib, dri and osmesa right now.
600 dnl More later: fbdev, ...
602 default_driver="xlib"
607 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
610 *freebsd* | dragonfly* | *netbsd*)
612 i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
617 if test "x$enable_opengl" = xno; then
621 AC_ARG_WITH([driver],
622 [AS_HELP_STRING([--with-driver=DRIVER],
623 [driver for Mesa: xlib,dri,osmesa @<:@default=dri when available, or xlib@:>@])],
624 [mesa_driver="$withval"],
625 [mesa_driver="$default_driver"])
626 dnl Check for valid option
627 case "x$mesa_driver" in
629 if test "x$enable_opengl" = xno; then
630 AC_MSG_ERROR([Driver '$mesa_driver' requires OpenGL enabled])
636 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
641 dnl Driver specific build directories
644 dnl this variable will be prepended to SRC_DIRS and is not exported
649 GALLIUM_DIRS="auxiliary drivers state_trackers"
650 GALLIUM_TARGET_DIRS=""
651 GALLIUM_WINSYS_DIRS="sw"
652 GALLIUM_DRIVERS_DIRS="softpipe failover galahad trace rbug noop identity"
653 GALLIUM_STATE_TRACKERS_DIRS=""
655 # build shared-glapi if enabled for OpenGL or if OpenGL ES is enabled
656 case "x$enable_shared_glapi$enable_gles1$enable_gles2" in
658 CORE_DIRS="$CORE_DIRS mapi/shared-glapi"
662 # build glapi if OpenGL is enabled
663 if test "x$enable_opengl" = xyes; then
664 CORE_DIRS="$CORE_DIRS mapi/glapi"
667 # build es1api if OpenGL ES 1.x is enabled
668 if test "x$enable_gles1" = xyes; then
669 CORE_DIRS="$CORE_DIRS mapi/es1api"
672 # build es2api if OpenGL ES 2.x is enabled
673 if test "x$enable_gles2" = xyes; then
674 CORE_DIRS="$CORE_DIRS mapi/es2api"
677 # build glsl and mesa if OpenGL or OpenGL ES is enabled
678 case "x$enable_opengl$enable_gles1$enable_gles2" in
680 CORE_DIRS="$CORE_DIRS glsl mesa"
684 case "$mesa_driver" in
687 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
688 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
689 GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS"
692 SRC_DIRS="$SRC_DIRS glx"
694 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib sw/dri"
695 GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
707 AC_SUBST([DRIVER_DIRS])
708 AC_SUBST([GALLIUM_DIRS])
709 AC_SUBST([GALLIUM_TARGET_DIRS])
710 AC_SUBST([GALLIUM_WINSYS_DIRS])
711 AC_SUBST([GALLIUM_DRIVERS_DIRS])
712 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
713 AC_SUBST([MESA_LLVM])
716 dnl Find out if X is available. The variable have_x is set if libX11 is
717 dnl found to mimic AC_PATH_XTRA.
719 if test -n "$PKG_CONFIG"; then
720 AC_MSG_CHECKING([pkg-config files for X11 are available])
721 PKG_CHECK_EXISTS([x11],[
727 AC_MSG_RESULT([$x11_pkgconfig])
731 dnl Use the autoconf macro if no pkg-config files
732 if test "$x11_pkgconfig" = yes; then
733 PKG_CHECK_MODULES([X11], [x11])
736 test -z "$X11_CFLAGS" && X11_CFLAGS="$X_CFLAGS"
737 test -z "$X11_LIBS" && X11_LIBS="$X_LIBS -lX11"
738 AC_SUBST([X11_CFLAGS])
742 dnl Try to tell the user that the --x-* options are only used when
743 dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
744 m4_divert_once([HELP_BEGIN],
745 [These options are only used when the X libraries cannot be found by the
746 pkg-config utility.])
748 dnl We need X for xlib and dri, so bomb now if it's not found
749 case "$mesa_driver" in
751 if test "$no_x" = yes; then
752 AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver])
757 dnl XCB - this is only used for GLX right now
759 [AS_HELP_STRING([--enable-xcb],
760 [use XCB for GLX @<:@default=disabled@:>@])],
761 [enable_xcb="$enableval"],
763 if test "x$enable_xcb" = xyes; then
764 DEFINES="$DEFINES -DUSE_XCB"
769 dnl Direct rendering or just indirect rendering
772 dnl Disable by default on GNU/Hurd
773 driglx_direct_default="no"
776 dnl Disable by default on cygwin
777 driglx_direct_default="no"
780 driglx_direct_default="yes"
783 AC_ARG_ENABLE([driglx-direct],
784 [AS_HELP_STRING([--disable-driglx-direct],
785 [enable direct rendering in GLX and EGL for DRI \
786 @<:@default=auto@:>@])],
787 [driglx_direct="$enableval"],
788 [driglx_direct="$driglx_direct_default"])
791 dnl libGL configuration per driver
793 case "$mesa_driver" in
795 if test "$x11_pkgconfig" = yes; then
796 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
797 GL_PC_REQ_PRIV="x11 xext"
798 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
799 GL_LIB_DEPS="$XLIBGL_LIBS"
801 # should check these...
802 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
803 GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
804 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
805 GL_PC_CFLAGS="$X11_INCLUDES"
807 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread"
808 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
810 # if static, move the external libraries to the programs
811 # and empty the libraries for libGL
812 if test "$enable_static" = yes; then
813 APP_LIB_DEPS="$APP_LIB_DEPS $GL_LIB_DEPS"
817 dri|no) # these checks are still desired when there is no mesa_driver
818 # DRI must be shared, I think
819 if test "$enable_static" = yes; then
820 AC_MSG_ERROR([Can't use static libraries for DRI drivers])
823 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
824 GL_PC_REQ_PRIV="glproto >= $GLPROTO_REQUIRED"
827 if test x"$driglx_direct" = xyes; then
829 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED])
830 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
831 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
832 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
835 # find the DRI deps for libGL
836 if test "$x11_pkgconfig" = yes; then
837 dri_modules="x11 xext xdamage xfixes"
839 # add xf86vidmode if available
840 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
841 if test "$HAVE_XF86VIDMODE" = yes ; then
842 dri_modules="$dri_modules xxf86vm"
845 # add xcb modules if necessary
846 if test "$enable_xcb" = yes; then
847 dri_modules="$dri_modules x11-xcb xcb-glx"
850 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
851 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
852 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
853 GL_LIB_DEPS="$DRIGL_LIBS"
855 # should check these...
856 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
857 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
858 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
859 GL_PC_CFLAGS="$X11_INCLUDES"
861 # XCB can only be used from pkg-config
862 if test "$enable_xcb" = yes; then
863 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
864 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
865 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
866 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
870 # need DRM libs, -lpthread, etc.
871 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
872 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
873 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
874 GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
875 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
876 GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
879 # No libGL for osmesa
883 AC_SUBST([GL_LIB_DEPS])
884 AC_SUBST([GL_PC_REQ_PRIV])
885 AC_SUBST([GL_PC_LIB_PRIV])
886 AC_SUBST([GL_PC_CFLAGS])
887 AC_SUBST([DRI_PC_REQ_PRIV])
888 AC_SUBST([GLESv1_CM_LIB_DEPS])
889 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
890 AC_SUBST([GLESv2_LIB_DEPS])
891 AC_SUBST([GLESv2_PC_LIB_PRIV])
893 GLAPI_LIB_DEPS="-lpthread"
894 AC_SUBST([GLAPI_LIB_DEPS])
897 dnl Setup default DRI CFLAGS
898 DRI_CFLAGS='$(CFLAGS)'
899 DRI_CXXFLAGS='$(CXXFLAGS)'
900 DRI_LIB_DEPS='$(TOP)/src/mesa/libmesa.a'
901 MESA_MODULES='$(TOP)/src/mesa/libmesa.a'
903 AC_ARG_ENABLE([shared-dricore],
904 [AS_HELP_STRING([--enable-shared-dricore],
905 [link DRI modules with shared core DRI routines @<:@default=disabled@:>@])],
906 [enable_dricore="$enableval"],
908 if test "$mesa_driver" = dri ; then
909 if test "$enable_dricore" = yes ; then
910 if test "$GCC$GXX" != yesyes ; then
911 AC_MSG_WARN([Shared dricore requires GCC-compatible rpath handling. Disabling shared dricore])
914 DRICORE_GLSL_LIBS='$(TOP)/$(LIB_DIR)/libglsl.so'
915 DRICORE_LIBS='$(TOP)/$(LIB_DIR)/libdricore.so'
916 DRICORE_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -lglsl'
917 DRI_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore -lglsl'
918 DRI_CFLAGS='$(CFLAGS_NOVISIBILITY) -DUSE_DRICORE'
919 DRI_CXXFLAGS='$(CXXFLAGS_NOVISIBILITY) -DUSE_DRICORE'
920 MESA_MODULES='$(DRICORE_LIBS) $(DRICORE_GLSL_LIBS)'
924 AC_SUBST([DRICORE_LIBS])
925 AC_SUBST([DRICORE_GLSL_LIBS])
926 AC_SUBST([DRICORE_LIB_DEPS])
927 AC_SUBST([DRI_CXXFLAGS])
928 AC_SUBST([DRI_CFLAGS])
929 AC_SUBST([MESA_MODULES])
931 AC_SUBST([HAVE_XF86VIDMODE])
933 PKG_CHECK_MODULES([LIBDRM_RADEON],
934 [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED],
935 HAVE_LIBDRM_RADEON=yes,
936 HAVE_LIBDRM_RADEON=no)
941 if test "$mesa_driver" = xlib; then
942 DEFINES="$DEFINES -DUSE_XSHM"
949 AC_ARG_ENABLE([glx-tls],
950 [AS_HELP_STRING([--enable-glx-tls],
951 [enable TLS support in GLX @<:@default=disabled@:>@])],
952 [GLX_USE_TLS="$enableval"],
954 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
956 AS_IF([test "x$GLX_USE_TLS" = xyes],
957 [DEFINES="${DEFINES} -DGLX_USE_TLS -DPTHREADS"])
962 dnl Directory for DRI drivers
963 AC_ARG_WITH([dri-driverdir],
964 [AS_HELP_STRING([--with-dri-driverdir=DIR],
965 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
966 [DRI_DRIVER_INSTALL_DIR="$withval"],
967 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
968 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
969 dnl Extra search path for DRI drivers
970 AC_ARG_WITH([dri-searchpath],
971 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
972 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
973 [DRI_DRIVER_SEARCH_DIR="$withval"],
974 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
975 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
976 dnl Which drivers to build - default is chosen by platform
977 AC_ARG_WITH([dri-drivers],
978 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
979 [comma delimited DRI drivers list, e.g.
980 "swrast,i965,radeon" @<:@default=auto@:>@])],
981 [with_dri_drivers="$withval"],
982 [with_dri_drivers=yes])
983 if test "x$with_dri_drivers" = x; then
987 dnl If $with_dri_drivers is yes, directories will be added through
990 case "$with_dri_drivers" in
996 # verify the requested driver directories exist
997 dri_drivers=`IFS=', '; echo $with_dri_drivers`
998 for driver in $dri_drivers; do
999 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
1000 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
1002 DRI_DIRS="$dri_drivers"
1006 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
1007 if test "$mesa_driver" = dri -o "$mesa_driver" = no; then
1008 # Platform specific settings and drivers to build
1011 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1012 if test "x$driglx_direct" = xyes; then
1013 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1015 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
1019 # sis is missing because they have not be converted to use
1020 # the new interface. i810 are missing because there is no
1021 # x86-64 system where they could *ever* be used.
1022 if test "x$DRI_DIRS" = "xyes"; then
1023 DRI_DIRS="i915 i965 mach64 mga nouveau r128 r200 r300 r600 \
1024 radeon savage tdfx unichrome swrast"
1028 # Build only the drivers for cards that exist on PowerPC.
1029 # At some point MGA will be added, but not yet.
1030 if test "x$DRI_DIRS" = "xyes"; then
1031 DRI_DIRS="mach64 r128 r200 r300 r600 radeon tdfx swrast"
1035 # Build only the drivers for cards that exist on sparc`
1036 if test "x$DRI_DIRS" = "xyes"; then
1037 DRI_DIRS="mach64 r128 r200 r300 r600 radeon swrast"
1042 freebsd* | dragonfly* | *netbsd*)
1043 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
1044 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
1045 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1046 if test "x$driglx_direct" = xyes; then
1047 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1050 if test "x$DRI_DIRS" = "xyes"; then
1051 DRI_DIRS="i810 i915 i965 mach64 mga nouveau r128 r200 r300 r600 \
1052 radeon tdfx unichrome savage sis swrast"
1056 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1057 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS"
1060 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1061 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1062 if test "x$driglx_direct" = xyes; then
1063 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
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"
1072 if test "x$DRI_DIRS" = "xyes"; then
1079 if test "x$DRI_DIRS" = "xyes"; then
1080 DRI_DIRS="i810 i915 i965 mach64 mga nouveau r128 r200 r300 r600 radeon \
1081 savage sis tdfx unichrome swrast"
1084 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
1087 if test "$mesa_driver" = dri; then
1090 AC_ARG_WITH([expat],
1091 [AS_HELP_STRING([--with-expat=DIR],
1092 [expat install directory])],[
1093 EXPAT_INCLUDES="-I$withval/include"
1094 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
1095 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
1096 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
1098 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
1099 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1100 [AC_MSG_ERROR([Expat required for DRI.])])
1103 # put all the necessary libs together, including possibly libdricore
1104 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
1106 AC_SUBST([DRI_DIRS])
1107 AC_SUBST([EXPAT_INCLUDES])
1108 AC_SUBST([DRI_LIB_DEPS])
1112 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1118 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1123 *radeon*|*r200*|*r300*|*r600*)
1124 if test "x$HAVE_LIBDRM_RADEON" = xyes; then
1125 RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS"
1126 RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS
1130 AC_SUBST([RADEON_CFLAGS])
1131 AC_SUBST([RADEON_LDFLAGS])
1135 dnl OSMesa configuration
1137 if test "$mesa_driver" = xlib; then
1138 default_gl_osmesa=yes
1140 default_gl_osmesa=no
1142 AC_ARG_ENABLE([gl-osmesa],
1143 [AS_HELP_STRING([--enable-gl-osmesa],
1144 [enable OSMesa with libGL @<:@default=enabled for xlib driver@:>@])],
1145 [gl_osmesa="$enableval"],
1146 [gl_osmesa="$default_gl_osmesa"])
1147 if test "x$gl_osmesa" = xyes; then
1148 if test "x$enable_opengl" = xno; then
1149 AC_MSG_ERROR([OpenGL is not available for OSMesa driver])
1151 if test "$mesa_driver" = osmesa; then
1152 AC_MSG_ERROR([libGL is not available for OSMesa driver])
1154 DRIVER_DIRS="$DRIVER_DIRS osmesa"
1158 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1159 AC_ARG_WITH([osmesa-bits],
1160 [AS_HELP_STRING([--with-osmesa-bits=BITS],
1161 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1162 [osmesa_bits="$withval"],
1164 if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then
1165 AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver])
1168 case "x$osmesa_bits" in
1173 OSMESA_LIB="OSMesa$osmesa_bits"
1174 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1177 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1180 AC_SUBST([OSMESA_LIB])
1182 case "$DRIVER_DIRS" in
1184 # only link libraries with osmesa if shared
1185 if test "$enable_static" = no; then
1186 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1191 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1194 AC_SUBST([OSMESA_LIB_DEPS])
1195 AC_SUBST([OSMESA_MESA_DEPS])
1196 AC_SUBST([OSMESA_PC_REQ])
1197 AC_SUBST([OSMESA_PC_LIB_PRIV])
1200 dnl EGL configuration
1204 if test "x$enable_egl" = xno; then
1205 if test "x$mesa_driver" = xno; then
1206 AC_MSG_ERROR([cannot disable EGL when there is no mesa driver])
1209 if test "x$enable_egl" = xyes; then
1210 SRC_DIRS="$SRC_DIRS egl"
1211 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS -lpthread"
1213 GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
1214 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl"
1217 if test "$enable_static" != yes; then
1218 # build egl_glx when libGL is built
1219 if test "$mesa_driver" = xlib -o "$mesa_driver" = dri; then
1220 EGL_DRIVERS_DIRS="glx"
1223 PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1224 [have_libudev=yes],[have_libudev=no])
1225 if test "$have_libudev" = yes; then
1226 DEFINES="$DEFINES -DHAVE_LIBUDEV"
1228 if test "$mesa_driver" = dri; then
1229 # build egl_dri2 when xcb-dri2 is available
1230 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes],
1231 [have_xcb_dri2=yes],[have_xcb_dri2=no])
1233 if test "$have_xcb_dri2" = yes; then
1234 EGL_DRIVER_DRI2=dri2
1235 DEFINES="$DEFINES -DHAVE_XCB_DRI2"
1236 # workaround a bug in xcb-dri2 generated by xcb-proto 1.6
1237 AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [],
1238 [DEFINES="$DEFINES -DXCB_DRI2_CONNECT_DEVICE_NAME_BROKEN"])
1242 EGL_DRIVERS_DIRS="$EGL_DRIVERS_DIRS $EGL_DRIVER_DRI2"
1245 AC_SUBST([EGL_LIB_DEPS])
1246 AC_SUBST([EGL_DRIVERS_DIRS])
1249 dnl X.Org DDX configuration
1251 if test "x$enable_xorg" = xyes; then
1252 PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1253 PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1254 PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1255 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1256 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1257 HAVE_XEXTPROTO_71="no")
1258 GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS"
1263 dnl OpenVG configuration
1267 if test "x$enable_openvg" = xyes; then
1268 if test "x$enable_egl" = xno; then
1269 AC_MSG_ERROR([cannot enable OpenVG without EGL])
1271 if test "x$with_gallium_drivers" = x; then
1272 AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1275 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1276 VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS -lpthread"
1277 CORE_DIRS="$CORE_DIRS mapi/vgapi"
1278 GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1283 dnl D3D1X configuration
1286 if test "x$enable_d3d1x" = xyes; then
1287 if test "x$with_gallium_drivers" = x; then
1288 AC_MSG_ERROR([cannot enable D3D1X without Gallium])
1291 GALLIUM_STATE_TRACKERS_DIRS="d3d1x $GALLIUM_STATE_TRACKERS_DIRS"
1296 dnl GLU configuration
1298 AC_ARG_ENABLE([glu],
1299 [AS_HELP_STRING([--disable-glu],
1300 [enable OpenGL Utility library @<:@default=enabled@:>@])],
1301 [enable_glu="$enableval"],
1304 if test "x$enable_glu" = xyes -a "x$mesa_driver" = xno; then
1305 AC_MSG_NOTICE([Disabling GLU since there is no OpenGL driver])
1309 if test "x$enable_glu" = xyes; then
1310 SRC_DIRS="$SRC_DIRS glu"
1312 case "$mesa_driver" in
1314 # Link libGLU to libOSMesa instead of libGL
1317 if test "$enable_static" = no; then
1318 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
1324 # If static, empty GLU_LIB_DEPS and add libs for programs to link
1326 GLU_PC_LIB_PRIV="-lm"
1327 if test "$enable_static" = no; then
1329 GLU_MESA_DEPS='-l$(GL_LIB)'
1333 APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
1338 if test "$enable_static" = no; then
1339 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
1341 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
1342 AC_SUBST([GLU_LIB_DEPS])
1343 AC_SUBST([GLU_MESA_DEPS])
1344 AC_SUBST([GLU_PC_REQ])
1345 AC_SUBST([GLU_PC_REQ_PRIV])
1346 AC_SUBST([GLU_PC_LIB_PRIV])
1347 AC_SUBST([GLU_PC_CFLAGS])
1350 dnl GLw configuration
1352 AC_ARG_ENABLE([glw],
1353 [AS_HELP_STRING([--disable-glw],
1354 [enable Xt/Motif widget library @<:@default=enabled@:>@])],
1355 [enable_glw="$enableval"],
1357 dnl Don't build GLw on osmesa
1358 if test "x$enable_glw" = xyes; then
1359 case "$mesa_driver" in
1361 AC_MSG_NOTICE([Disabling GLw since there is no OpenGL driver])
1366 AC_ARG_ENABLE([motif],
1367 [AS_HELP_STRING([--enable-motif],
1368 [use Motif widgets in GLw @<:@default=disabled@:>@])],
1369 [enable_motif="$enableval"],
1372 if test "x$enable_glw" = xyes; then
1373 SRC_DIRS="$SRC_DIRS glw"
1374 if test "$x11_pkgconfig" = yes; then
1375 PKG_CHECK_MODULES([GLW],[x11 xt])
1376 GLW_PC_REQ_PRIV="x11 xt"
1377 GLW_LIB_DEPS="$GLW_LIBS"
1379 # should check these...
1380 GLW_LIB_DEPS="$X_LIBS -lXt -lX11"
1381 GLW_PC_LIB_PRIV="$GLW_LIB_DEPS"
1382 GLW_PC_CFLAGS="$X11_INCLUDES"
1385 GLW_SOURCES="GLwDrawA.c"
1387 if test "x$enable_motif" = xyes; then
1388 GLW_SOURCES="$GLW_SOURCES GLwMDrawA.c"
1389 AC_PATH_PROG([MOTIF_CONFIG], [motif-config], [no])
1390 if test "x$MOTIF_CONFIG" != xno; then
1391 MOTIF_CFLAGS=`$MOTIF_CONFIG --cflags`
1392 MOTIF_LIBS=`$MOTIF_CONFIG --libs`
1394 AC_CHECK_HEADER([Xm/PrimitiveP.h], [],
1395 [AC_MSG_ERROR([Can't locate Motif headers])])
1396 AC_CHECK_LIB([Xm], [XmGetPixmap], [MOTIF_LIBS="-lXm"],
1397 [AC_MSG_ERROR([Can't locate Motif Xm library])])
1399 # MOTIF_LIBS is prepended to GLW_LIB_DEPS since Xm needs Xt/X11
1400 GLW_LIB_DEPS="$MOTIF_LIBS $GLW_LIB_DEPS"
1401 GLW_PC_LIB_PRIV="$MOTIF_LIBS $GLW_PC_LIB_PRIV"
1402 GLW_PC_CFLAGS="$MOTIF_CFLAGS $GLW_PC_CFLAGS"
1405 # If static, empty GLW_LIB_DEPS and add libs for programs to link
1406 GLW_PC_LIB_PRIV="$GLW_PC_LIB_PRIV"
1407 if test "$enable_static" = no; then
1408 GLW_MESA_DEPS='-l$(GL_LIB)'
1409 GLW_LIB_DEPS="$GLW_LIB_DEPS"
1411 APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
1416 AC_SUBST([GLW_LIB_DEPS])
1417 AC_SUBST([GLW_MESA_DEPS])
1418 AC_SUBST([GLW_SOURCES])
1419 AC_SUBST([MOTIF_CFLAGS])
1420 AC_SUBST([GLW_PC_REQ_PRIV])
1421 AC_SUBST([GLW_PC_LIB_PRIV])
1422 AC_SUBST([GLW_PC_CFLAGS])
1425 dnl GLUT configuration
1427 if test -f "$srcdir/include/GL/glut.h"; then
1432 AC_ARG_ENABLE([glut],
1433 [AS_HELP_STRING([--disable-glut],
1434 [enable GLUT library @<:@default=enabled if source available@:>@])],
1435 [enable_glut="$enableval"],
1436 [enable_glut="$default_glut"])
1438 dnl Don't build glut on osmesa
1439 if test "x$enable_glut" = xyes; then
1440 case "$mesa_driver" in
1442 AC_MSG_NOTICE([Disabling glut since there is no OpenGL driver])
1447 dnl Can't build glut if GLU not available
1448 if test "x$enable_glu$enable_glut" = xnoyes; then
1449 AC_MSG_WARN([Disabling glut since GLU is disabled])
1453 if test "x$enable_glut" = xyes; then
1454 SRC_DIRS="$SRC_DIRS glut/glx"
1455 if test "$x11_pkgconfig" = yes; then
1456 PKG_CHECK_MODULES([GLUT],[x11 xmu xi])
1457 GLUT_PC_REQ_PRIV="x11 xmu xi"
1458 GLUT_LIB_DEPS="$GLUT_LIBS"
1460 # should check these...
1461 GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi"
1462 GLUT_PC_LIB_PRIV="$GLUT_LIB_DEPS"
1463 GLUT_PC_CFLAGS="$X11_INCLUDES"
1465 if test "x$GCC" = xyes; then
1466 GLUT_CFLAGS="$GLUT_CFLAGS -fexceptions"
1468 GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm"
1469 GLUT_PC_LIB_PRIV="$GLUT_PC_LIB_PRIV -lm"
1471 # If static, empty GLUT_LIB_DEPS and add libs for programs to link
1472 if test "$enable_static" = no; then
1473 GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)'
1475 APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS"
1480 AC_SUBST([GLUT_LIB_DEPS])
1481 AC_SUBST([GLUT_MESA_DEPS])
1482 AC_SUBST([GLUT_CFLAGS])
1483 AC_SUBST([GLUT_PC_REQ_PRIV])
1484 AC_SUBST([GLUT_PC_LIB_PRIV])
1485 AC_SUBST([GLUT_PC_CFLAGS])
1488 dnl Program library dependencies
1489 dnl Only libm is added here if necessary as the libraries should
1490 dnl be pulled in by the linker
1492 if test "x$APP_LIB_DEPS" = x; then
1495 APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm"
1498 APP_LIB_DEPS="-lX11"
1505 AC_SUBST([APP_LIB_DEPS])
1506 AC_SUBST([PROGRAM_DIRS])
1509 dnl Gallium configuration
1511 if test "x$with_gallium_drivers" != x; then
1512 SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
1513 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1518 AC_SUBST([LLVM_CFLAGS])
1519 AC_SUBST([LLVM_LIBS])
1520 AC_SUBST([LLVM_LDFLAGS])
1521 AC_SUBST([LLVM_VERSION])
1525 case "x$enable_opengl$enable_gles1$enable_gles2" in
1527 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1531 AC_SUBST([VG_LIB_DEPS])
1532 AC_SUBST([EGL_CLIENT_APIS])
1534 AC_ARG_WITH([egl-platforms],
1535 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1536 [comma delimited native platforms libEGL supports, e.g.
1537 "x11,drm" @<:@default=auto@:>@])],
1538 [with_egl_platforms="$withval"],
1539 [with_egl_platforms=yes])
1540 AC_ARG_WITH([egl-displays],
1541 [AS_HELP_STRING([--with-egl-displays@<:@=DIRS...@:>@],
1542 [DEPRECATED. Use --with-egl-platforms instead])],
1543 [with_egl_platforms="$withval"])
1546 WAYLAND_EGL_LIB_DEPS=""
1548 case "$with_egl_platforms" in
1550 if test "x$enable_egl" = xyes && test "x$mesa_driver" != xosmesa; then
1552 if test "$mesa_driver" = dri; then
1553 EGL_PLATFORMS="$EGL_PLATFORMS drm"
1558 if test "x$enable_egl" != xyes; then
1559 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1561 # verify the requested driver directories exist
1562 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1563 for plat in $egl_platforms; do
1564 test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \
1565 AC_MSG_ERROR([EGL platform '$plat' doesn't exist])
1566 if test "$plat" = "fbdev"; then
1567 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev"
1569 if test "$plat" = "wayland"; then
1570 PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-server],, \
1571 [AC_MSG_ERROR([cannot find libwayland-client])])
1572 WAYLAND_EGL_LIB_DEPS="$WAYLAND_LIBS $LIBDRM_LIBS"
1573 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
1576 EGL_PLATFORMS="$egl_platforms"
1579 AC_SUBST([EGL_PLATFORMS])
1581 AC_SUBST([WAYLAND_EGL_LIB_DEPS])
1582 WAYLAND_EGL_PC_REQ_PRIV="wayland-client libdrm"
1583 WAYLAND_EGL_PC_LIB_PRIV=
1584 WAYLAND_EGL_PC_CFLAGS=
1586 AC_SUBST([WAYLAND_EGL_PC_REQ_PRIV])
1587 AC_SUBST([WAYLAND_EGL_PC_LIB_PRIV])
1588 AC_SUBST([WAYLAND_EGL_PC_CFLAGS])
1591 AC_ARG_WITH([egl-driver-dir],
1592 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1593 [directory for EGL drivers [[default=${libdir}/egl]]])],
1594 [EGL_DRIVER_INSTALL_DIR="$withval"],
1595 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1596 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1598 AC_ARG_WITH([xorg-driver-dir],
1599 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1600 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1601 [XORG_DRIVER_INSTALL_DIR="$withval"],
1602 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1603 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1605 AC_ARG_WITH([max-width],
1606 [AS_HELP_STRING([--with-max-width=N],
1607 [Maximum framebuffer width (4096)])],
1608 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1609 AS_IF([test "${withval}" -gt "4096"],
1610 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1612 AC_ARG_WITH([max-height],
1613 [AS_HELP_STRING([--with-max-height=N],
1614 [Maximum framebuffer height (4096)])],
1615 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1616 AS_IF([test "${withval}" -gt "4096"],
1617 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1623 AC_ARG_ENABLE([gallium-llvm],
1624 [AS_HELP_STRING([--enable-gallium-llvm],
1625 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1626 [enable_gallium_llvm="$enableval"],
1627 [enable_gallium_llvm=auto])
1628 if test "x$with_gallium_drivers" = x; then
1629 enable_gallium_llvm=no
1631 if test "x$enable_gallium_llvm" = xauto; then
1633 i*86|x86_64) enable_gallium_llvm=yes;;
1636 if test "x$enable_gallium_llvm" = xyes; then
1637 if test "x$LLVM_CONFIG" != xno; then
1638 LLVM_VERSION=`$LLVM_CONFIG --version`
1639 LLVM_CFLAGS=`$LLVM_CONFIG --cppflags`
1640 LLVM_LIBS="`$LLVM_CONFIG --libs` -lstdc++"
1642 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1643 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1644 DEFINES="$DEFINES -DGALLIUM_LLVMPIPE -D__STDC_CONSTANT_MACROS"
1654 dnl Gallium helper functions
1656 gallium_check_st() {
1657 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes; then
1658 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1660 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1661 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1663 if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
1664 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1668 gallium_require_llvm() {
1669 if test "x$MESA_LLVM" = x0; then
1671 i*86|x86_64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1677 if test "x$with_gallium_drivers" != x; then
1678 # This is for compile-testing
1679 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 i965 r300 svga"
1680 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1682 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1683 for driver in $gallium_drivers; do
1686 gallium_check_st "svga/drm" "dri-vmwgfx" "xorg-vmwgfx"
1689 gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1692 gallium_check_st "i965/drm" "dri-i965" "xorg-i965"
1695 gallium_require_llvm "Gallium R300"
1696 gallium_check_st "radeon/drm" "dri-r300" "xorg-r300"
1699 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1700 gallium_check_st "r600/drm" "dri-r600"
1703 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50 nvc0"
1704 gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau"
1707 if test "x$HAVE_ST_DRI" = xyes; then
1708 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1712 AC_MSG_ERROR([Unknown Gallium driver: $driver])
1718 dnl prepend CORE_DIRS to SRC_DIRS
1719 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
1721 dnl Restore LDFLAGS and CPPFLAGS
1722 LDFLAGS="$_SAVE_LDFLAGS"
1723 CPPFLAGS="$_SAVE_CPPFLAGS"
1725 dnl Substitute the config
1726 AC_CONFIG_FILES([configs/autoconf])
1728 dnl Replace the configs/current symlink
1729 AC_CONFIG_COMMANDS([configs],[
1730 if test -f configs/current || test -L configs/current; then
1731 rm -f configs/current
1733 ln -s autoconf configs/current
1739 dnl Output some configuration info for the user
1742 echo " prefix: $prefix"
1743 echo " exec_prefix: $exec_prefix"
1744 echo " libdir: $libdir"
1745 echo " includedir: $includedir"
1749 echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
1750 echo " OpenVG: $enable_openvg"
1754 echo " Driver: $mesa_driver"
1755 if test "$mesa_driver" != no; then
1756 if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then
1757 echo " OSMesa: lib$OSMESA_LIB"
1761 if test "$mesa_driver" = dri; then
1762 # cleanup the drivers var
1763 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1764 if test "x$DRI_DIRS" = x; then
1765 echo " DRI drivers: no"
1767 echo " DRI drivers: $dri_dirs"
1769 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
1770 echo " Use XCB: $enable_xcb"
1771 echo " Shared dricore: $enable_dricore"
1775 echo " GLU: $enable_glu"
1776 echo " GLw: $enable_glw (Motif: $enable_motif)"
1777 echo " glut: $enable_glut"
1781 echo " EGL: $enable_egl"
1782 if test "$enable_egl" = yes; then
1783 echo " EGL platforms: $EGL_PLATFORMS"
1786 for d in $EGL_DRIVERS_DIRS; do
1787 egl_drivers="$egl_drivers builtin:egl_$d"
1790 if test "$enable_gallium" = yes -a "$HAVE_ST_EGL" = yes; then
1791 echo " EGL drivers: ${egl_drivers} egl_gallium"
1792 echo " EGL Gallium STs:$EGL_CLIENT_APIS"
1794 echo " EGL drivers: $egl_drivers"
1799 if test "x$MESA_LLVM" = x1; then
1801 echo " llvm-config: $LLVM_CONFIG"
1802 echo " llvm-version: $LLVM_VERSION"
1808 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
1809 echo " Gallium: yes"
1810 echo " Gallium dirs: $GALLIUM_DIRS"
1811 echo " Target dirs: $GALLIUM_TARGET_DIRS"
1812 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
1813 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
1814 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
1821 echo " Shared libs: $enable_shared"
1822 echo " Static libs: $enable_static"
1824 dnl Compiler options
1825 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
1826 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1827 $SED 's/^ *//;s/ */ /;s/ *$//'`
1828 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
1829 $SED 's/^ *//;s/ */ /;s/ *$//'`
1830 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1832 echo " CFLAGS: $cflags"
1833 echo " CXXFLAGS: $cxxflags"
1834 echo " Macros: $defines"
1836 echo " PYTHON2: $PYTHON2"
1839 echo " Run '${MAKE-make}' to build Mesa"