configure.ac revision 48c9925367034b6fac506f1f32d445c5bd825a49
1dnl Process this file with autoconf to create configure. 2 3AC_PREREQ([2.59]) 4 5dnl Versioning - scrape the version from configs/default 6m4_define([mesa_version], 7 [m4_esyscmd([${MAKE-make} -s -f bin/version.mk version | tr -d '\n' | tr -d '\r'])]) 8m4_ifval(mesa_version,, 9 [m4_fatal([Failed to get the Mesa version from `make -f bin/version.mk version`])]) 10 11dnl Tell the user about autoconf.html in the --help output 12m4_divert_once([HELP_END], [ 13See docs/autoconf.html for more details on the options for Mesa.]) 14 15AC_INIT([Mesa],[mesa_version], 16 [https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa]) 17AC_CONFIG_AUX_DIR([bin]) 18AC_CANONICAL_HOST 19 20dnl Save user CFLAGS and CXXFLAGS so one can override the default ones 21USER_CFLAGS="$CFLAGS" 22USER_CXXFLAGS="$CXXFLAGS" 23 24dnl Versions for external dependencies 25LIBDRM_REQUIRED=2.4.24 26LIBDRM_RADEON_REQUIRED=2.4.24 27LIBDRM_INTEL_REQUIRED=2.4.24 28LIBDRM_NOUVEAU_REQUIRED=0.6 29DRI2PROTO_REQUIRED=2.6 30GLPROTO_REQUIRED=1.4.14 31LIBDRM_XORG_REQUIRED=2.4.24 32LIBKMS_XORG_REQUIRED=1.0.0 33 34dnl Check for progs 35AC_PROG_CPP 36AC_PROG_CC 37AC_PROG_CXX 38AC_CHECK_PROGS([MAKE], [gmake make]) 39AC_CHECK_PROGS([PYTHON2], [python2 python]) 40AC_PATH_PROG([MKDEP], [makedepend]) 41AC_PATH_PROG([SED], [sed]) 42 43if test "x$MKDEP" = "x"; then 44 AC_MSG_ERROR([makedepend is required to build Mesa]) 45fi 46 47AC_PATH_PROG([FLEX], [flex]) 48test "x$FLEX" = "x" && AC_MSG_ERROR([flex is needed to build Mesa]) 49 50AC_PATH_PROG([BISON], [bison]) 51test "x$BISON" = "x" && AC_MSG_ERROR([bison is needed to build Mesa]) 52 53dnl Our fallback install-sh is a symlink to minstall. Use the existing 54dnl configuration in that case. 55AC_PROG_INSTALL 56test "x$INSTALL" = "x$ac_install_sh" && INSTALL='$(MINSTALL)' 57 58dnl We need a POSIX shell for parts of the build. Assume we have one 59dnl in most cases. 60case "$host_os" in 61solaris*) 62 # Solaris /bin/sh is too old/non-POSIX compliant 63 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh]) 64 SHELL="$POSIX_SHELL" 65 ;; 66esac 67 68dnl clang is mostly GCC-compatible, but its version is much lower, 69dnl so we have to check for it. 70AC_MSG_CHECKING([if compiling with clang]) 71 72AC_COMPILE_IFELSE( 73[AC_LANG_PROGRAM([], [[ 74#ifndef __clang__ 75 not clang 76#endif 77]])], 78[CLANG=yes], [CLANG=no]) 79 80AC_MSG_RESULT([$CLANG]) 81 82dnl If we're using GCC, make sure that it is at least version 3.3.0. Older 83dnl versions are explictly not supported. 84if test "x$GCC" = xyes -a "x$CLANG" = xno; then 85 AC_MSG_CHECKING([whether gcc version is sufficient]) 86 major=0 87 minor=0 88 89 GCC_VERSION=`$CC -dumpversion` 90 if test $? -eq 0; then 91 major=`echo $GCC_VERSION | cut -d. -f1` 92 minor=`echo $GCC_VERSION | cut -d. -f2` 93 fi 94 95 if test $major -lt 3 -o $major -eq 3 -a $minor -lt 3 ; then 96 AC_MSG_RESULT([no]) 97 AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.]) 98 else 99 AC_MSG_RESULT([yes]) 100 fi 101fi 102 103 104MKDEP_OPTIONS=-fdepend 105dnl Ask gcc where it's keeping its secret headers 106if test "x$GCC" = xyes; then 107 for dir in include include-fixed; do 108 GCC_INCLUDES=`$CC -print-file-name=$dir` 109 if test "x$GCC_INCLUDES" != x && \ 110 test "$GCC_INCLUDES" != "$dir" && \ 111 test -d "$GCC_INCLUDES"; then 112 MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES" 113 fi 114 done 115fi 116AC_SUBST([MKDEP_OPTIONS]) 117 118dnl Make sure the pkg-config macros are defined 119m4_ifndef([PKG_PROG_PKG_CONFIG], 120 [m4_fatal([Could not locate the pkg-config autoconf macros. 121 These are usually located in /usr/share/aclocal/pkg.m4. If your macros 122 are in a different location, try setting the environment variable 123 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])]) 124PKG_PROG_PKG_CONFIG() 125 126dnl LIB_DIR - library basename 127LIB_DIR=`echo $libdir | $SED 's%.*/%%'` 128AC_SUBST([LIB_DIR]) 129 130dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later 131_SAVE_LDFLAGS="$LDFLAGS" 132AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker]) 133AC_SUBST([EXTRA_LIB_PATH]) 134 135dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later 136_SAVE_CPPFLAGS="$CPPFLAGS" 137AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers]) 138AC_SUBST([X11_INCLUDES]) 139 140dnl Compiler macros 141DEFINES="" 142AC_SUBST([DEFINES]) 143case "$host_os" in 144linux*|*-gnu*|gnu*) 145 DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS" 146 ;; 147solaris*) 148 DEFINES="$DEFINES -DPTHREADS -DSVR4" 149 ;; 150cygwin*) 151 DEFINES="$DEFINES -DPTHREADS" 152 ;; 153esac 154 155dnl Add flags for gcc and g++ 156if test "x$GCC" = xyes; then 157 CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99" 158 if test "x$CLANG" = "xno"; then 159 CFLAGS="$CFLAGS -ffast-math" 160 fi 161 162 # Enable -fvisibility=hidden if using a gcc that supports it 163 save_CFLAGS="$CFLAGS" 164 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden]) 165 VISIBILITY_CFLAGS="-fvisibility=hidden" 166 CFLAGS="$CFLAGS $VISIBILITY_CFLAGS" 167 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]), 168 [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]); 169 170 # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed. 171 CFLAGS=$save_CFLAGS 172 173 # Work around aliasing bugs - developers should comment this out 174 CFLAGS="$CFLAGS -fno-strict-aliasing" 175 176 # gcc's builtin memcmp is slower than glibc's 177 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052 178 CFLAGS="$CFLAGS -fno-builtin-memcmp" 179fi 180if test "x$GXX" = xyes; then 181 CXXFLAGS="$CXXFLAGS -Wall" 182 183 # Enable -fvisibility=hidden if using a gcc that supports it 184 save_CXXFLAGS="$CXXFLAGS" 185 AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden]) 186 VISIBILITY_CXXFLAGS="-fvisibility=hidden" 187 CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS" 188 AC_LANG_PUSH([C++]) 189 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]), 190 [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]); 191 AC_LANG_POP([C++]) 192 193 # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed. 194 CXXFLAGS=$save_CXXFLAGS 195 196 # Work around aliasing bugs - developers should comment this out 197 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing" 198 199 # gcc's builtin memcmp is slower than glibc's 200 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052 201 CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp" 202fi 203 204dnl even if the compiler appears to support it, using visibility attributes isn't 205dnl going to do anything useful currently on cygwin apart from emit lots of warnings 206case "$host_os" in 207cygwin*) 208 VISIBILITY_CFLAGS="" 209 VISIBILITY_CXXFLAGS="" 210 ;; 211esac 212 213AC_SUBST([VISIBILITY_CFLAGS]) 214AC_SUBST([VISIBILITY_CXXFLAGS]) 215 216dnl These should be unnecessary, but let the user set them if they want 217AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler. 218 Default is to use CFLAGS.]) 219AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the 220 compiler. Default is to use CFLAGS.]) 221AC_SUBST([OPT_FLAGS]) 222AC_SUBST([ARCH_FLAGS]) 223 224dnl 225dnl Hacks to enable 32 or 64 bit build 226dnl 227AC_ARG_ENABLE([32-bit], 228 [AS_HELP_STRING([--enable-32-bit], 229 [build 32-bit libraries @<:@default=auto@:>@])], 230 [enable_32bit="$enableval"], 231 [enable_32bit=auto] 232) 233if test "x$enable_32bit" = xyes; then 234 if test "x$GCC" = xyes; then 235 CFLAGS="$CFLAGS -m32" 236 ARCH_FLAGS="$ARCH_FLAGS -m32" 237 fi 238 if test "x$GXX" = xyes; then 239 CXXFLAGS="$CXXFLAGS -m32" 240 fi 241fi 242AC_ARG_ENABLE([64-bit], 243 [AS_HELP_STRING([--enable-64-bit], 244 [build 64-bit libraries @<:@default=auto@:>@])], 245 [enable_64bit="$enableval"], 246 [enable_64bit=auto] 247) 248if test "x$enable_64bit" = xyes; then 249 if test "x$GCC" = xyes; then 250 CFLAGS="$CFLAGS -m64" 251 fi 252 if test "x$GXX" = xyes; then 253 CXXFLAGS="$CXXFLAGS -m64" 254 fi 255fi 256 257dnl 258dnl shared/static libraries, mimic libtool options 259dnl 260AC_ARG_ENABLE([static], 261 [AS_HELP_STRING([--enable-static], 262 [build static libraries @<:@default=disabled@:>@])], 263 [enable_static="$enableval"], 264 [enable_static=no] 265) 266case "x$enable_static" in 267xyes|xno ) ;; 268x ) enable_static=no ;; 269* ) 270 AC_MSG_ERROR([Static library option '$enable_static' is not a valid]) 271 ;; 272esac 273AC_ARG_ENABLE([shared], 274 [AS_HELP_STRING([--disable-shared], 275 [build shared libraries @<:@default=enabled@:>@])], 276 [enable_shared="$enableval"], 277 [enable_shared=yes] 278) 279case "x$enable_shared" in 280xyes|xno ) ;; 281x ) enable_shared=yes ;; 282* ) 283 AC_MSG_ERROR([Shared library option '$enable_shared' is not a valid]) 284 ;; 285esac 286 287dnl Can't have static and shared libraries, default to static if user 288dnl explicitly requested. If both disabled, set to static since shared 289dnl was explicitly requirested. 290case "x$enable_static$enable_shared" in 291xyesyes ) 292 AC_MSG_WARN([Can't build static and shared libraries, disabling shared]) 293 enable_shared=no 294 ;; 295xnono ) 296 AC_MSG_WARN([Can't disable both static and shared libraries, enabling static]) 297 enable_static=yes 298 ;; 299esac 300 301dnl 302dnl mklib options 303dnl 304AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib]) 305if test "$enable_static" = yes; then 306 MKLIB_OPTIONS="$MKLIB_OPTIONS -static" 307fi 308AC_SUBST([MKLIB_OPTIONS]) 309 310dnl 311dnl other compiler options 312dnl 313AC_ARG_ENABLE([debug], 314 [AS_HELP_STRING([--enable-debug], 315 [use debug compiler flags and macros @<:@default=disabled@:>@])], 316 [enable_debug="$enableval"], 317 [enable_debug=no] 318) 319if test "x$enable_debug" = xyes; then 320 DEFINES="$DEFINES -DDEBUG" 321 if test "x$GCC" = xyes; then 322 CFLAGS="$CFLAGS -g" 323 fi 324 if test "x$GXX" = xyes; then 325 CXXFLAGS="$CXXFLAGS -g" 326 fi 327fi 328 329dnl 330dnl library names 331dnl 332LIB_PREFIX_GLOB='lib' 333LIB_VERSION_SEPARATOR='.' 334if test "$enable_static" = yes; then 335 LIB_EXTENSION='a' 336else 337 case "$host_os" in 338 darwin* ) 339 LIB_EXTENSION='dylib' ;; 340 cygwin* ) 341 dnl prefix can be 'cyg' or 'lib' 342 LIB_PREFIX_GLOB='???' 343 LIB_VERSION_SEPARATOR='-' 344 LIB_EXTENSION='dll' ;; 345 aix* ) 346 LIB_EXTENSION='a' ;; 347 * ) 348 LIB_EXTENSION='so' ;; 349 esac 350fi 351 352dnl 353dnl Mangled Mesa support 354dnl 355AC_ARG_ENABLE([mangling], 356 [AS_HELP_STRING([--enable-mangling], 357 [enable mangled symbols and library name @<:@default=disabled@:>@])], 358 [enable_mangling="${enableval}"], 359 [enable_mangling=no] 360) 361GL_LIB="GL" 362GLU_LIB="GLU" 363OSMESA_LIB="OSMesa" 364if test "x${enable_mangling}" = "xyes" ; then 365 DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE" 366 GL_LIB="MangledGL" 367 GLU_LIB="MangledGLU" 368 OSMESA_LIB="MangledOSMesa" 369fi 370AC_SUBST([GL_LIB]) 371AC_SUBST([GLU_LIB]) 372AC_SUBST([OSMESA_LIB]) 373 374dnl 375dnl potentially-infringing-but-nobody-knows-for-sure stuff 376dnl 377AC_ARG_ENABLE([texture-float], 378 [AS_HELP_STRING([--enable-texture-float], 379 [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])], 380 [enable_texture_float="$enableval"], 381 [enable_texture_float=no] 382) 383if test "x$enable_texture_float" = xyes; then 384 AC_MSG_WARN([Floating-point textures enabled.]) 385 AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.]) 386 DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED" 387fi 388 389GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION} 390GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION} 391GLUT_LIB_NAME='lib$(GLUT_LIB).'${LIB_EXTENSION} 392OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION} 393EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION} 394GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION} 395GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION} 396VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION} 397GLAPI_LIB_NAME='lib$(GLAPI_LIB).'${LIB_EXTENSION} 398WAYLAND_EGL_LIB_NAME='lib$(WAYLAND_EGL_LIB).'${LIB_EXTENSION} 399GBM_LIB_NAME='lib$(GBM_LIB).'${LIB_EXTENSION} 400 401GL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*' 402GLU_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLU_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*' 403GLUT_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLUT_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*' 404OSMESA_LIB_GLOB=${LIB_PREFIX_GLOB}'$(OSMESA_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*' 405EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*' 406EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*' 407GLESv1_CM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv1_CM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*' 408GLESv2_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv2_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*' 409VG_LIB_GLOB=${LIB_PREFIX_GLOB}'$(VG_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*' 410GLAPI_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLAPI_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*' 411WAYLAND_EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(WAYLAND_EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*' 412GBM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GBM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*' 413 414AC_SUBST([GL_LIB_NAME]) 415AC_SUBST([GLU_LIB_NAME]) 416AC_SUBST([GLUT_LIB_NAME]) 417AC_SUBST([OSMESA_LIB_NAME]) 418AC_SUBST([EGL_LIB_NAME]) 419AC_SUBST([GLESv1_CM_LIB_NAME]) 420AC_SUBST([GLESv2_LIB_NAME]) 421AC_SUBST([VG_LIB_NAME]) 422AC_SUBST([GLAPI_LIB_NAME]) 423AC_SUBST([WAYLAND_EGL_LIB_NAME]) 424AC_SUBST([GBM_LIB_NAME]) 425 426AC_SUBST([GL_LIB_GLOB]) 427AC_SUBST([GLU_LIB_GLOB]) 428AC_SUBST([GLUT_LIB_GLOB]) 429AC_SUBST([OSMESA_LIB_GLOB]) 430AC_SUBST([EGL_LIB_GLOB]) 431AC_SUBST([GLESv1_CM_LIB_GLOB]) 432AC_SUBST([GLESv2_LIB_GLOB]) 433AC_SUBST([VG_LIB_GLOB]) 434AC_SUBST([GLAPI_LIB_GLOB]) 435AC_SUBST([WAYLAND_EGL_LIB_GLOB]) 436AC_SUBST([GBM_LIB_GLOB]) 437 438dnl 439dnl Arch/platform-specific settings 440dnl 441AC_ARG_ENABLE([asm], 442 [AS_HELP_STRING([--disable-asm], 443 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])], 444 [enable_asm="$enableval"], 445 [enable_asm=yes] 446) 447asm_arch="" 448ASM_FLAGS="" 449MESA_ASM_SOURCES="" 450GLAPI_ASM_SOURCES="" 451AC_MSG_CHECKING([whether to enable assembly]) 452test "x$enable_asm" = xno && AC_MSG_RESULT([no]) 453# disable if cross compiling on x86/x86_64 since we must run gen_matypes 454if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then 455 case "$host_cpu" in 456 i?86 | x86_64) 457 enable_asm=no 458 AC_MSG_RESULT([no, cross compiling]) 459 ;; 460 esac 461fi 462# check for supported arches 463if test "x$enable_asm" = xyes; then 464 case "$host_cpu" in 465 i?86) 466 case "$host_os" in 467 linux* | *freebsd* | dragonfly* | *netbsd*) 468 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86 469 ;; 470 esac 471 ;; 472 x86_64) 473 case "$host_os" in 474 linux* | *freebsd* | dragonfly* | *netbsd*) 475 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64 476 ;; 477 esac 478 ;; 479 powerpc) 480 case "$host_os" in 481 linux*) 482 asm_arch=ppc 483 ;; 484 esac 485 ;; 486 sparc*) 487 case "$host_os" in 488 linux*) 489 asm_arch=sparc 490 ;; 491 esac 492 ;; 493 esac 494 495 case "$asm_arch" in 496 x86) 497 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM" 498 MESA_ASM_SOURCES='$(X86_SOURCES)' 499 GLAPI_ASM_SOURCES='$(X86_API)' 500 AC_MSG_RESULT([yes, x86]) 501 ;; 502 x86_64) 503 ASM_FLAGS="-DUSE_X86_64_ASM" 504 MESA_ASM_SOURCES='$(X86-64_SOURCES)' 505 GLAPI_ASM_SOURCES='$(X86-64_API)' 506 AC_MSG_RESULT([yes, x86_64]) 507 ;; 508 ppc) 509 ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM" 510 MESA_ASM_SOURCES='$(PPC_SOURCES)' 511 AC_MSG_RESULT([yes, ppc]) 512 ;; 513 sparc) 514 ASM_FLAGS="-DUSE_SPARC_ASM" 515 MESA_ASM_SOURCES='$(SPARC_SOURCES)' 516 GLAPI_ASM_SOURCES='$(SPARC_API)' 517 AC_MSG_RESULT([yes, sparc]) 518 ;; 519 *) 520 AC_MSG_RESULT([no, platform not supported]) 521 ;; 522 esac 523fi 524AC_SUBST([ASM_FLAGS]) 525AC_SUBST([MESA_ASM_SOURCES]) 526AC_SUBST([GLAPI_ASM_SOURCES]) 527 528dnl PIC code macro 529MESA_PIC_FLAGS 530 531dnl Check to see if dlopen is in default libraries (like Solaris, which 532dnl has it in libc), or if libdl is needed to get it. 533AC_CHECK_FUNC([dlopen], [], 534 [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])]) 535AC_SUBST([DLOPEN_LIBS]) 536 537dnl See if posix_memalign is available 538AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"]) 539 540dnl SELinux awareness. 541AC_ARG_ENABLE([selinux], 542 [AS_HELP_STRING([--enable-selinux], 543 [Build SELinux-aware Mesa @<:@default=disabled@:>@])], 544 [MESA_SELINUX="$enableval"], 545 [MESA_SELINUX=no]) 546if test "x$enable_selinux" = "xyes"; then 547 AC_CHECK_HEADER([selinux/selinux.h],[], 548 [AC_MSG_ERROR([SELinux headers not found])]) 549 AC_CHECK_LIB([selinux],[is_selinux_enabled],[], 550 [AC_MSG_ERROR([SELinux library not found])]) 551 SELINUX_LIBS="-lselinux" 552 DEFINES="$DEFINES -DMESA_SELINUX" 553fi 554 555dnl Options for APIs 556AC_ARG_ENABLE([opengl], 557 [AS_HELP_STRING([--disable-opengl], 558 [disable support for standard OpenGL API @<:@default=no@:>@])], 559 [enable_opengl="$enableval"], 560 [enable_opengl=yes]) 561AC_ARG_ENABLE([gles1], 562 [AS_HELP_STRING([--enable-gles1], 563 [enable support for OpenGL ES 1.x API @<:@default=no@:>@])], 564 [enable_gles1="$enableval"], 565 [enable_gles1=no]) 566AC_ARG_ENABLE([gles2], 567 [AS_HELP_STRING([--enable-gles2], 568 [enable support for OpenGL ES 2.x API @<:@default=no@:>@])], 569 [enable_gles2="$enableval"], 570 [enable_gles2=no]) 571AC_ARG_ENABLE([openvg], 572 [AS_HELP_STRING([--enable-openvg], 573 [enable support for OpenVG API @<:@default=no@:>@])], 574 [enable_openvg="$enableval"], 575 [enable_openvg=no]) 576 577AC_ARG_ENABLE([dri], 578 [AS_HELP_STRING([--enable-dri], 579 [enable DRI modules @<:@default=auto@:>@])], 580 [enable_dri="$enableval"], 581 [enable_dri=auto]) 582AC_ARG_ENABLE([glx], 583 [AS_HELP_STRING([--enable-glx], 584 [enable GLX library @<:@default=auto@:>@])], 585 [enable_glx="$enableval"], 586 [enable_glx=auto]) 587AC_ARG_ENABLE([osmesa], 588 [AS_HELP_STRING([--enable-osmesa], 589 [enable OSMesa library @<:@default=auto@:>@])], 590 [enable_osmesa="$enableval"], 591 [enable_osmesa=auto]) 592AC_ARG_ENABLE([egl], 593 [AS_HELP_STRING([--disable-egl], 594 [disable EGL library @<:@default=enabled@:>@])], 595 [enable_egl="$enableval"], 596 [enable_egl=yes]) 597 598AC_ARG_ENABLE([xorg], 599 [AS_HELP_STRING([--enable-xorg], 600 [enable support for X.Org DDX API @<:@default=no@:>@])], 601 [enable_xorg="$enableval"], 602 [enable_xorg=no]) 603AC_ARG_ENABLE([xa], 604 [AS_HELP_STRING([--enable-xa], 605 [enable build of the XA X Acceleration API @<:@default=no@:>@])], 606 [enable_xa="$enableval"], 607 [enable_xa=no]) 608AC_ARG_ENABLE([d3d1x], 609 [AS_HELP_STRING([--enable-d3d1x], 610 [enable support for Direct3D 10 & 11 low-level API @<:@default=no@:>@])], 611 [enable_d3d1x="$enableval"], 612 [enable_d3d1x=no]) 613AC_ARG_ENABLE([gbm], 614 [AS_HELP_STRING([--enable-gbm], 615 [enable gbm library @<:@default=auto@:>@])], 616 [enable_gbm="$enableval"], 617 [enable_gbm=auto]) 618 619AC_ARG_ENABLE([xvmc], 620 [AS_HELP_STRING([--enable-xvmc], 621 [enable xvmc library @<:@default=auto@:>@])], 622 [enable_xvmc="$enableval"], 623 [enable_xvmc=auto]) 624AC_ARG_ENABLE([vdpau], 625 [AS_HELP_STRING([--enable-vdpau], 626 [enable vdpau library @<:@default=auto@:>@])], 627 [enable_vdpau="$enableval"], 628 [enable_vdpau=auto]) 629AC_ARG_ENABLE([va], 630 [AS_HELP_STRING([--enable-va], 631 [enable va library @<:@default=auto@:>@])], 632 [enable_va="$enableval"], 633 [enable_va=auto]) 634 635AC_ARG_ENABLE([xlib_glx], 636 [AS_HELP_STRING([--enable-xlib-glx], 637 [make GLX library Xlib-based instead of DRI-based @<:@default=disable@:>@])], 638 [enable_xlib_glx="$enableval"], 639 [enable_xlib_glx=auto]) 640AC_ARG_ENABLE([gallium_egl], 641 [AS_HELP_STRING([--enable-gallium-egl], 642 [enable optional EGL state tracker (not required 643 for EGL support in Gallium with OpenGL and OpenGL ES) 644 @<:@default=disable@:>@])], 645 [enable_gallium_egl="$enableval"], 646 [enable_gallium_egl=no]) 647AC_ARG_ENABLE([gallium_gbm], 648 [AS_HELP_STRING([--enable-gallium-gbm], 649 [enable optional gbm state tracker (not required for 650 gbm support in Gallium) 651 @<:@default=auto@:>@])], 652 [enable_gallium_gbm="$enableval"], 653 [enable_gallium_gbm=auto]) 654 655# Option for Gallium drivers 656GALLIUM_DRIVERS_DEFAULT="r300,r600,swrast" 657 658AC_ARG_WITH([gallium-drivers], 659 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@], 660 [comma delimited Gallium drivers list, e.g. 661 "i915,i965,nouveau,r300,r600,svga,swrast" 662 @<:@default=r300,r600,swrast@:>@])], 663 [with_gallium_drivers="$withval"], 664 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"]) 665 666# Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it 667# here so that the script doesn't choke on an unknown driver name later. 668case "$with_gallium_drivers" in 669 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;; 670 no) with_gallium_drivers='' ;; 671esac 672 673if test "x$enable_opengl" = xno -a \ 674 "x$enable_gles1" = xno -a \ 675 "x$enable_gles2" = xno -a \ 676 "x$enable_openvg" = xno -a \ 677 "x$enable_xorg" = xno -a \ 678 "x$enable_xa" = xno -a \ 679 "x$enable_d3d1x" = xno -a \ 680 "x$enable_xvmc" = xno -a \ 681 "x$enable_vdpau" = xno -a \ 682 "x$enable_va" = xno; then 683 AC_MSG_ERROR([at least one API should be enabled]) 684fi 685 686API_DEFINES="" 687if test "x$enable_opengl" = xno; then 688 API_DEFINES="$API_DEFINES -DFEATURE_GL=0" 689else 690 API_DEFINES="$API_DEFINES -DFEATURE_GL=1" 691fi 692if test "x$enable_gles1" = xyes; then 693 API_DEFINES="$API_DEFINES -DFEATURE_ES1=1" 694fi 695if test "x$enable_gles2" = xyes; then 696 API_DEFINES="$API_DEFINES -DFEATURE_ES2=1" 697fi 698AC_SUBST([API_DEFINES]) 699 700AC_ARG_ENABLE([shared-glapi], 701 [AS_HELP_STRING([--enable-shared-glapi], 702 [EXPERIMENTAL. Enable shared glapi for OpenGL @<:@default=no@:>@])], 703 [enable_shared_glapi="$enableval"], 704 [enable_shared_glapi=no]) 705 706SHARED_GLAPI="0" 707if test "x$enable_shared_glapi" = xyes; then 708 SHARED_GLAPI="1" 709fi 710AC_SUBST([SHARED_GLAPI]) 711 712dnl 713dnl Driver configuration. Options are xlib, dri and osmesa right now. 714dnl More later: fbdev, ... 715dnl 716default_driver="xlib" 717 718case "$host_os" in 719linux*) 720 case "$host_cpu" in 721 i*86|x86_64|powerpc*|sparc*) default_driver="dri";; 722 esac 723 ;; 724*freebsd* | dragonfly* | *netbsd*) 725 case "$host_cpu" in 726 i*86|x86_64|powerpc*|sparc*) default_driver="dri";; 727 esac 728 ;; 729esac 730 731if test "x$enable_opengl" = xno; then 732 default_driver="no" 733fi 734 735AC_ARG_WITH([driver], 736 [AS_HELP_STRING([--with-driver=DRIVER], [DEPRECATED])], 737 [mesa_driver="$withval"], 738 [mesa_driver=auto]) 739dnl Check for valid option 740case "x$mesa_driver" in 741xxlib|xdri|xosmesa|xno) 742 if test "x$enable_dri" != xauto -o \ 743 "x$enable_glx" != xauto -o \ 744 "x$enable_osmesa" != xauto -o \ 745 "x$enable_xlib_glx" != xauto; then 746 AC_MSG_ERROR([--with-driver=$mesa_driver is deprecated]) 747 fi 748 ;; 749xauto) 750 mesa_driver="$default_driver" 751 ;; 752*) 753 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option]) 754 ;; 755esac 756 757# map $mesa_driver to APIs 758if test "x$enable_dri" = xauto; then 759 case "x$mesa_driver" in 760 xdri) enable_dri=yes ;; 761 *) enable_dri=no ;; 762 esac 763fi 764 765if test "x$enable_glx" = xauto; then 766 case "x$mesa_driver" in 767 xdri|xxlib) enable_glx=yes ;; 768 *) enable_glx=no ;; 769 esac 770fi 771 772if test "x$enable_osmesa" = xauto; then 773 case "x$mesa_driver" in 774 xxlib|xosmesa) enable_osmesa=yes ;; 775 *) enable_osmesa=no ;; 776 esac 777fi 778 779if test "x$enable_xlib_glx" = xauto; then 780 case "x$mesa_driver" in 781 xxlib) enable_xlib_glx=yes ;; 782 *) enable_xlib_glx=no ;; 783 esac 784fi 785 786if test "x$enable_glx" = xno; then 787 enable_xlib_glx=no 788fi 789 790dnl 791dnl Driver specific build directories 792dnl 793 794dnl this variable will be prepended to SRC_DIRS and is not exported 795CORE_DIRS="" 796 797SRC_DIRS="" 798GLU_DIRS="sgi" 799GALLIUM_DIRS="auxiliary drivers state_trackers" 800GALLIUM_TARGET_DIRS="" 801GALLIUM_WINSYS_DIRS="sw" 802GALLIUM_DRIVERS_DIRS="failover galahad trace rbug noop identity" 803GALLIUM_STATE_TRACKERS_DIRS="" 804 805# build shared-glapi if enabled for OpenGL or if OpenGL ES is enabled 806case "x$enable_shared_glapi$enable_gles1$enable_gles2" in 807x*yes*) 808 CORE_DIRS="$CORE_DIRS mapi/shared-glapi" 809 ;; 810esac 811 812# build glapi if OpenGL is enabled 813if test "x$enable_opengl" = xyes; then 814 CORE_DIRS="$CORE_DIRS mapi/glapi" 815fi 816 817# build es1api if OpenGL ES 1.x is enabled 818if test "x$enable_gles1" = xyes; then 819 CORE_DIRS="$CORE_DIRS mapi/es1api" 820fi 821 822# build es2api if OpenGL ES 2.x is enabled 823if test "x$enable_gles2" = xyes; then 824 CORE_DIRS="$CORE_DIRS mapi/es2api" 825fi 826 827# build glsl and mesa if OpenGL or OpenGL ES is enabled 828case "x$enable_opengl$enable_gles1$enable_gles2" in 829x*yes*) 830 CORE_DIRS="$CORE_DIRS glsl mesa" 831 ;; 832esac 833 834case "x$enable_glx$enable_xlib_glx" in 835xyesyes) 836 DRIVER_DIRS="$DRIVER_DIRS x11" 837 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib" 838 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib" 839 GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS" 840 HAVE_WINSYS_XLIB="yes" 841 ;; 842xyesno) 843 # DRI-based GLX 844 SRC_DIRS="$SRC_DIRS glx" 845 ;; 846esac 847 848if test "x$enable_dri" = xyes; then 849 DRIVER_DIRS="$DRIVER_DIRS dri" 850 851 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/dri" 852 GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS" 853 HAVE_ST_DRI="yes" 854fi 855 856if test "x$enable_osmesa" = xyes; then 857 # the empty space matters for osmesa... (see src/mesa/Makefile) 858 if test -n "$DRIVER_DIRS"; then 859 DRIVER_DIRS="$DRIVER_DIRS osmesa" 860 else 861 DRIVER_DIRS="osmesa" 862 fi 863fi 864 865AC_SUBST([SRC_DIRS]) 866AC_SUBST([GLU_DIRS]) 867AC_SUBST([DRIVER_DIRS]) 868AC_SUBST([GALLIUM_DIRS]) 869AC_SUBST([GALLIUM_TARGET_DIRS]) 870AC_SUBST([GALLIUM_WINSYS_DIRS]) 871AC_SUBST([GALLIUM_DRIVERS_DIRS]) 872AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS]) 873AC_SUBST([MESA_LLVM]) 874 875# Check for libdrm 876PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED], 877 [have_libdrm=yes], [have_libdrm=no]) 878 879if test "x$enable_dri" = xyes; then 880 # DRI must be shared, I think 881 if test "$enable_static" = yes; then 882 AC_MSG_ERROR([Can't use static libraries for DRI drivers]) 883 fi 884 885 # not a hard requirement as swrast does not depend on it 886 if test "x$have_libdrm" = xyes; then 887 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED" 888 fi 889fi 890 891dnl 892dnl Find out if X is available. The variable have_x is set if libX11 is 893dnl found to mimic AC_PATH_XTRA. 894dnl 895if test -n "$PKG_CONFIG"; then 896 AC_MSG_CHECKING([pkg-config files for X11 are available]) 897 PKG_CHECK_EXISTS([x11],[ 898 x11_pkgconfig=yes 899 have_x=yes 900 ],[ 901 x11_pkgconfig=no 902 ]) 903 AC_MSG_RESULT([$x11_pkgconfig]) 904else 905 x11_pkgconfig=no 906fi 907dnl Use the autoconf macro if no pkg-config files 908if test "$x11_pkgconfig" = yes; then 909 PKG_CHECK_MODULES([X11], [x11]) 910else 911 AC_PATH_XTRA 912 test -z "$X11_CFLAGS" && X11_CFLAGS="$X_CFLAGS" 913 test -z "$X11_LIBS" && X11_LIBS="$X_LIBS -lX11" 914 AC_SUBST([X11_CFLAGS]) 915 AC_SUBST([X11_LIBS]) 916fi 917 918dnl Try to tell the user that the --x-* options are only used when 919dnl pkg-config is not available. This must be right after AC_PATH_XTRA. 920m4_divert_once([HELP_BEGIN], 921[These options are only used when the X libraries cannot be found by the 922pkg-config utility.]) 923 924dnl We need X for xlib and dri, so bomb now if it's not found 925if test "x$enable_glx" = xyes -a "x$no_x" = xyes; then 926 AC_MSG_ERROR([X11 development libraries needed for GLX]) 927fi 928 929dnl XCB - this is only used for GLX right now 930AC_ARG_ENABLE([xcb], 931 [AS_HELP_STRING([--enable-xcb], 932 [use XCB for GLX @<:@default=disabled@:>@])], 933 [enable_xcb="$enableval"], 934 [enable_xcb=no]) 935if test "x$enable_xcb" = xyes; then 936 DEFINES="$DEFINES -DUSE_XCB" 937else 938 enable_xcb=no 939fi 940 941dnl Direct rendering or just indirect rendering 942case "$host_os" in 943gnu*) 944 dnl Disable by default on GNU/Hurd 945 driglx_direct_default="no" 946 ;; 947cygwin*) 948 dnl Disable by default on cygwin 949 driglx_direct_default="no" 950 ;; 951*) 952 driglx_direct_default="yes" 953 ;; 954esac 955AC_ARG_ENABLE([driglx-direct], 956 [AS_HELP_STRING([--disable-driglx-direct], 957 [enable direct rendering in GLX and EGL for DRI \ 958 @<:@default=auto@:>@])], 959 [driglx_direct="$enableval"], 960 [driglx_direct="$driglx_direct_default"]) 961 962dnl 963dnl libGL configuration per driver 964dnl 965case "x$enable_glx$enable_xlib_glx" in 966xyesyes) 967 # Xlib-based GLX 968 if test "$x11_pkgconfig" = yes; then 969 PKG_CHECK_MODULES([XLIBGL], [x11 xext]) 970 GL_PC_REQ_PRIV="x11 xext" 971 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS" 972 GL_LIB_DEPS="$XLIBGL_LIBS" 973 else 974 # should check these... 975 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS" 976 GL_LIB_DEPS="$X_LIBS -lX11 -lXext" 977 GL_PC_LIB_PRIV="$GL_LIB_DEPS" 978 GL_PC_CFLAGS="$X11_INCLUDES" 979 fi 980 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread $DLOPEN_LIBS" 981 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread" 982 ;; 983xyesno) 984 # DRI-based GLX 985 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED]) 986 GL_PC_REQ_PRIV="glproto >= $GLPROTO_REQUIRED" 987 if test x"$driglx_direct" = xyes; then 988 if test "x$have_libdrm" != xyes; then 989 AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED]) 990 fi 991 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED]) 992 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED" 993 fi 994 995 # find the DRI deps for libGL 996 if test "$x11_pkgconfig" = yes; then 997 dri_modules="x11 xext xdamage xfixes" 998 999 # add xf86vidmode if available 1000 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no) 1001 if test "$HAVE_XF86VIDMODE" = yes ; then 1002 dri_modules="$dri_modules xxf86vm" 1003 fi 1004 1005 # add xcb modules if necessary 1006 if test "$enable_xcb" = yes; then 1007 dri_modules="$dri_modules x11-xcb xcb-glx" 1008 fi 1009 1010 PKG_CHECK_MODULES([DRIGL], [$dri_modules]) 1011 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules" 1012 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS" 1013 GL_LIB_DEPS="$DRIGL_LIBS" 1014 else 1015 # should check these... 1016 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS" 1017 if test "x$HAVE_XF86VIDMODE" == xyes; then 1018 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes" 1019 else 1020 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXdamage -lXfixes" 1021 fi 1022 GL_PC_LIB_PRIV="$GL_LIB_DEPS" 1023 GL_PC_CFLAGS="$X11_INCLUDES" 1024 1025 # XCB can only be used from pkg-config 1026 if test "$enable_xcb" = yes; then 1027 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx]) 1028 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx" 1029 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS" 1030 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS" 1031 fi 1032 fi 1033 1034 # need DRM libs, -lpthread, etc. 1035 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS" 1036 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS" 1037 ;; 1038esac 1039 1040GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS" 1041GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS" 1042GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS" 1043GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS" 1044 1045AC_SUBST([GL_LIB_DEPS]) 1046AC_SUBST([GL_PC_REQ_PRIV]) 1047AC_SUBST([GL_PC_LIB_PRIV]) 1048AC_SUBST([GL_PC_CFLAGS]) 1049AC_SUBST([DRI_PC_REQ_PRIV]) 1050AC_SUBST([GLESv1_CM_LIB_DEPS]) 1051AC_SUBST([GLESv1_CM_PC_LIB_PRIV]) 1052AC_SUBST([GLESv2_LIB_DEPS]) 1053AC_SUBST([GLESv2_PC_LIB_PRIV]) 1054 1055GLAPI_LIB_DEPS="-lpthread" 1056AC_SUBST([GLAPI_LIB_DEPS]) 1057 1058 1059dnl Setup default DRI CFLAGS 1060DRI_CFLAGS='$(CFLAGS)' 1061DRI_CXXFLAGS='$(CXXFLAGS)' 1062DRI_LIB_DEPS='$(TOP)/src/mesa/libmesa.a' 1063MESA_MODULES='$(TOP)/src/mesa/libmesa.a' 1064 1065AC_ARG_ENABLE([shared-dricore], 1066 [AS_HELP_STRING([--enable-shared-dricore], 1067 [link DRI modules with shared core DRI routines @<:@default=disabled@:>@])], 1068 [enable_dricore="$enableval"], 1069 [enable_dricore=no]) 1070if test "x$enable_dri" = xyes ; then 1071 if test "$enable_dricore" = yes ; then 1072 if test "$GCC$GXX" != yesyes ; then 1073 AC_MSG_WARN([Shared dricore requires GCC-compatible rpath handling. Disabling shared dricore]) 1074 enable_dricore=no 1075 else 1076 DRICORE_GLSL_LIBS='$(TOP)/$(LIB_DIR)/libglsl.so' 1077 DRICORE_LIBS='$(TOP)/$(LIB_DIR)/libdricore.so' 1078 DRICORE_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -lglsl' 1079 DRI_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore -lglsl' 1080 DRI_CFLAGS='$(CFLAGS_NOVISIBILITY) -DUSE_DRICORE' 1081 DRI_CXXFLAGS='$(CXXFLAGS_NOVISIBILITY) -DUSE_DRICORE' 1082 MESA_MODULES='$(DRICORE_LIBS) $(DRICORE_GLSL_LIBS)' 1083 fi 1084 fi 1085fi 1086AC_SUBST([DRICORE_LIBS]) 1087AC_SUBST([DRICORE_GLSL_LIBS]) 1088AC_SUBST([DRICORE_LIB_DEPS]) 1089AC_SUBST([DRI_CXXFLAGS]) 1090AC_SUBST([DRI_CFLAGS]) 1091AC_SUBST([MESA_MODULES]) 1092 1093AC_SUBST([HAVE_XF86VIDMODE]) 1094 1095dnl 1096dnl More GLX setup 1097dnl 1098case "x$enable_glx$enable_xlib_glx" in 1099xyesyes) 1100 DEFINES="$DEFINES -DUSE_XSHM" 1101 ;; 1102xyesno) 1103 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING" 1104 if test "x$driglx_direct" = xyes; then 1105 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING" 1106 fi 1107 ;; 1108esac 1109 1110dnl 1111dnl TLS detection 1112dnl 1113 1114AC_ARG_ENABLE([glx-tls], 1115 [AS_HELP_STRING([--enable-glx-tls], 1116 [enable TLS support in GLX @<:@default=disabled@:>@])], 1117 [GLX_USE_TLS="$enableval"], 1118 [GLX_USE_TLS=no]) 1119AC_SUBST(GLX_TLS, ${GLX_USE_TLS}) 1120 1121AS_IF([test "x$GLX_USE_TLS" = xyes], 1122 [DEFINES="${DEFINES} -DGLX_USE_TLS -DPTHREADS"]) 1123 1124dnl 1125dnl More DRI setup 1126dnl 1127dnl Directory for DRI drivers 1128AC_ARG_WITH([dri-driverdir], 1129 [AS_HELP_STRING([--with-dri-driverdir=DIR], 1130 [directory for the DRI drivers @<:@${libdir}/dri@:>@])], 1131 [DRI_DRIVER_INSTALL_DIR="$withval"], 1132 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri']) 1133AC_SUBST([DRI_DRIVER_INSTALL_DIR]) 1134dnl Extra search path for DRI drivers 1135AC_ARG_WITH([dri-searchpath], 1136 [AS_HELP_STRING([--with-dri-searchpath=DIRS...], 1137 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])], 1138 [DRI_DRIVER_SEARCH_DIR="$withval"], 1139 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}']) 1140AC_SUBST([DRI_DRIVER_SEARCH_DIR]) 1141dnl Which drivers to build - default is chosen by platform 1142AC_ARG_WITH([dri-drivers], 1143 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@], 1144 [comma delimited DRI drivers list, e.g. 1145 "swrast,i965,radeon" @<:@default=auto@:>@])], 1146 [with_dri_drivers="$withval"], 1147 [with_dri_drivers=yes]) 1148if test "x$with_dri_drivers" = x; then 1149 with_dri_drivers=no 1150fi 1151 1152dnl If $with_dri_drivers is yes, directories will be added through 1153dnl platform checks 1154DRI_DIRS="" 1155case "$with_dri_drivers" in 1156no) ;; 1157yes) 1158 # classic DRI drivers require FEATURE_GL to build 1159 if test "x$enable_opengl" = xyes; then 1160 DRI_DIRS="yes" 1161 fi 1162 ;; 1163*) 1164 # verify the requested driver directories exist 1165 dri_drivers=`IFS=', '; echo $with_dri_drivers` 1166 for driver in $dri_drivers; do 1167 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \ 1168 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist]) 1169 done 1170 DRI_DIRS="$dri_drivers" 1171 if test -n "$DRI_DIRS" -a "x$enable_opengl" != xyes; then 1172 AC_MSG_ERROR([--with-dri-drivers requires OpenGL]) 1173 fi 1174 ;; 1175esac 1176 1177dnl Set DRI_DIRS, DEFINES and LIB_DEPS 1178if test "x$enable_dri" = xyes; then 1179 # Platform specific settings and drivers to build 1180 case "$host_os" in 1181 linux*) 1182 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER" 1183 DEFINES="$DEFINES -DHAVE_ALIAS" 1184 1185 case "$host_cpu" in 1186 x86_64) 1187 if test "x$DRI_DIRS" = "xyes"; then 1188 DRI_DIRS="i915 i965 nouveau r200 radeon swrast" 1189 fi 1190 ;; 1191 powerpc*) 1192 # Build only the drivers for cards that exist on PowerPC. 1193 if test "x$DRI_DIRS" = "xyes"; then 1194 DRI_DIRS="r200 radeon swrast" 1195 fi 1196 ;; 1197 sparc*) 1198 # Build only the drivers for cards that exist on sparc 1199 if test "x$DRI_DIRS" = "xyes"; then 1200 DRI_DIRS="r200 radeon swrast" 1201 fi 1202 ;; 1203 esac 1204 ;; 1205 freebsd* | dragonfly* | *netbsd*) 1206 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1" 1207 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS" 1208 1209 if test "x$DRI_DIRS" = "xyes"; then 1210 DRI_DIRS="i915 i965 nouveau r200 radeon swrast" 1211 fi 1212 ;; 1213 gnu*) 1214 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER" 1215 DEFINES="$DEFINES -DHAVE_ALIAS" 1216 ;; 1217 solaris*) 1218 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER" 1219 ;; 1220 cygwin*) 1221 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER" 1222 if test "x$DRI_DIRS" = "xyes"; then 1223 DRI_DIRS="swrast" 1224 fi 1225 ;; 1226 esac 1227 1228 # default drivers 1229 if test "x$DRI_DIRS" = "xyes"; then 1230 DRI_DIRS="i915 i965 nouveau r200 radeon swrast" 1231 fi 1232 1233 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'` 1234 1235 # Check for expat 1236 if test "x$enable_dri" = xyes; then 1237 EXPAT_INCLUDES="" 1238 EXPAT_LIB=-lexpat 1239 AC_ARG_WITH([expat], 1240 [AS_HELP_STRING([--with-expat=DIR], 1241 [expat install directory])],[ 1242 EXPAT_INCLUDES="-I$withval/include" 1243 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES" 1244 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR" 1245 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat" 1246 ]) 1247 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])]) 1248 AC_CHECK_LIB([expat],[XML_ParserCreate],[], 1249 [AC_MSG_ERROR([Expat required for DRI.])]) 1250 fi 1251 1252 # libdrm is required for all except swrast 1253 if test -n "$DRI_DIRS" -a x"$DRI_DIRS" != xswrast; then 1254 if test "x$have_libdrm" != xyes; then 1255 AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED]) 1256 fi 1257 fi 1258 1259 # put all the necessary libs together, including possibly libdricore 1260 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS" 1261fi 1262AC_SUBST([DRI_DIRS]) 1263AC_SUBST([EXPAT_INCLUDES]) 1264AC_SUBST([DRI_LIB_DEPS]) 1265 1266case $DRI_DIRS in 1267*i915*|*i965*) 1268 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED]) 1269 ;; 1270esac 1271 1272case $DRI_DIRS in 1273*nouveau*) 1274 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED]) 1275 ;; 1276esac 1277 1278case $DRI_DIRS in 1279*radeon*|*r200*) 1280 PKG_CHECK_MODULES([LIBDRM_RADEON], 1281 [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED], 1282 HAVE_LIBDRM_RADEON=yes, 1283 HAVE_LIBDRM_RADEON=no) 1284 1285 if test "x$HAVE_LIBDRM_RADEON" = xyes; then 1286 RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS" 1287 RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS 1288 fi 1289 ;; 1290esac 1291AC_SUBST([RADEON_CFLAGS]) 1292AC_SUBST([RADEON_LDFLAGS]) 1293 1294 1295dnl 1296dnl OSMesa configuration 1297dnl 1298 1299dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...) 1300AC_ARG_WITH([osmesa-bits], 1301 [AS_HELP_STRING([--with-osmesa-bits=BITS], 1302 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])], 1303 [osmesa_bits="$withval"], 1304 [osmesa_bits=8]) 1305if test "x$osmesa_bits" != x8; then 1306 if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then 1307 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver]) 1308 osmesa_bits=8 1309 fi 1310fi 1311case "x$osmesa_bits" in 1312x8) 1313 OSMESA_LIB="${OSMESA_LIB}" 1314 ;; 1315x16|x32) 1316 OSMESA_LIB="${OSMESA_LIB}$osmesa_bits" 1317 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31" 1318 ;; 1319*) 1320 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option]) 1321 ;; 1322esac 1323 1324if test "x$enable_osmesa" = xyes; then 1325 # only link libraries with osmesa if shared 1326 if test "$enable_static" = no; then 1327 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS" 1328 else 1329 OSMESA_LIB_DEPS="" 1330 fi 1331 OSMESA_MESA_DEPS="" 1332 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS" 1333fi 1334AC_SUBST([OSMESA_LIB_DEPS]) 1335AC_SUBST([OSMESA_MESA_DEPS]) 1336AC_SUBST([OSMESA_PC_REQ]) 1337AC_SUBST([OSMESA_PC_LIB_PRIV]) 1338 1339dnl 1340dnl gbm configuration 1341dnl 1342if test "x$enable_gbm" = xauto; then 1343 case "$with_egl_platforms" in 1344 *drm*) 1345 enable_gbm=yes ;; 1346 *) 1347 enable_gbm=no ;; 1348 esac 1349fi 1350if test "x$enable_gbm" = xyes; then 1351 SRC_DIRS="$SRC_DIRS gbm" 1352 GBM_BACKEND_DIRS="" 1353 1354 PKG_CHECK_MODULES([LIBUDEV], [libudev], [], 1355 AC_MSG_ERROR([gbm needs udev])) 1356 GBM_LIB_DEPS="$DLOPEN_LIBS $LIBUDEV_LIBS" 1357 1358 if test "x$enable_dri" = xyes; then 1359 GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri" 1360 if test "$SHARED_GLAPI" -eq 0; then 1361 AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi]) 1362 fi 1363 fi 1364fi 1365AC_SUBST([GBM_LIB_DEPS]) 1366AC_SUBST([GBM_BACKEND_DIRS]) 1367GBM_PC_REQ_PRIV="libudev" 1368GBM_PC_LIB_PRIV="$DLOPEN_LIBS" 1369GBM_PC_CFLAGS= 1370AC_SUBST([GBM_PC_REQ_PRIV]) 1371AC_SUBST([GBM_PC_LIB_PRIV]) 1372AC_SUBST([GBM_PC_CFLAGS]) 1373 1374dnl 1375dnl EGL configuration 1376dnl 1377EGL_CLIENT_APIS="" 1378 1379if test "x$enable_egl" = xyes; then 1380 SRC_DIRS="$SRC_DIRS egl" 1381 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS -lpthread" 1382 EGL_DRIVERS_DIRS="" 1383 1384 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"]) 1385 1386 if test "$enable_static" != yes; then 1387 # build egl_glx when libGL is built 1388 if test "x$enable_glx" = xyes; then 1389 EGL_DRIVERS_DIRS="glx" 1390 fi 1391 1392 PKG_CHECK_MODULES([LIBUDEV], [libudev > 150], 1393 [have_libudev=yes],[have_libudev=no]) 1394 if test "$have_libudev" = yes; then 1395 DEFINES="$DEFINES -DHAVE_LIBUDEV" 1396 fi 1397 if test "x$enable_dri" = xyes; then 1398 # build egl_dri2 when xcb-dri2 is available 1399 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes], 1400 [have_xcb_dri2=yes],[have_xcb_dri2=no]) 1401 1402 if test "$have_xcb_dri2" = yes; then 1403 EGL_DRIVER_DRI2=dri2 1404 DEFINES="$DEFINES -DHAVE_XCB_DRI2" 1405 # workaround a bug in xcb-dri2 generated by xcb-proto 1.6 1406 AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [], 1407 [DEFINES="$DEFINES -DXCB_DRI2_CONNECT_DEVICE_NAME_BROKEN"]) 1408 fi 1409 fi 1410 1411 EGL_DRIVERS_DIRS="$EGL_DRIVERS_DIRS $EGL_DRIVER_DRI2" 1412 fi 1413fi 1414AC_SUBST([EGL_LIB_DEPS]) 1415AC_SUBST([EGL_DRIVERS_DIRS]) 1416 1417dnl 1418dnl EGL Gallium configuration 1419dnl 1420if test "x$enable_gallium_egl" = xyes; then 1421 if test "x$with_gallium_drivers" = x; then 1422 AC_MSG_ERROR([cannot enable egl_gallium without Gallium]) 1423 fi 1424 if test "x$enable_egl" = xno; then 1425 AC_MSG_ERROR([cannot enable egl_gallium without EGL]) 1426 fi 1427 if test "x$have_libdrm" != xyes; then 1428 AC_MSG_ERROR([egl_gallium requires libdrm >= $LIBDRM_REQUIRED]) 1429 fi 1430 1431 GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS" 1432 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static" 1433 HAVE_ST_EGL="yes" 1434fi 1435 1436dnl 1437dnl gbm Gallium configuration 1438dnl 1439if test "x$enable_gallium_gbm" = xauto; then 1440 case "$enable_gbm$HAVE_ST_EGL$with_egl_platforms" in 1441 yesyes*drm*) 1442 enable_gallium_gbm=yes ;; 1443 *) 1444 enable_gallium_gbm=no ;; 1445 esac 1446fi 1447if test "x$enable_gallium_gbm" = xyes; then 1448 if test "x$with_gallium_drivers" = x; then 1449 AC_MSG_ERROR([cannot enable gbm_gallium without Gallium]) 1450 fi 1451 if test "x$enable_gbm" = xno; then 1452 AC_MSG_ERROR([cannot enable gbm_gallium without gbm]) 1453 fi 1454 1455 GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS" 1456 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm" 1457 HAVE_ST_GBM="yes" 1458fi 1459 1460dnl 1461dnl X.Org DDX configuration 1462dnl 1463if test "x$enable_xorg" = xyes; then 1464 PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0]) 1465 PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED]) 1466 PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED]) 1467 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1], 1468 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71", 1469 HAVE_XEXTPROTO_71="no") 1470 GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS" 1471 HAVE_ST_XORG=yes 1472fi 1473 1474dnl 1475dnl XA configuration 1476dnl 1477if test "x$enable_xa" = xyes; then 1478 GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS" 1479 HAVE_ST_XA=yes 1480fi 1481 1482dnl 1483dnl OpenVG configuration 1484dnl 1485VG_LIB_DEPS="" 1486 1487if test "x$enable_openvg" = xyes; then 1488 if test "x$enable_egl" = xno; then 1489 AC_MSG_ERROR([cannot enable OpenVG without EGL]) 1490 fi 1491 if test "x$with_gallium_drivers" = x; then 1492 AC_MSG_ERROR([cannot enable OpenVG without Gallium]) 1493 fi 1494 if test "x$enable_gallium_egl" = xno; then 1495 AC_MSG_ERROR([cannot enable OpenVG without egl_gallium]) 1496 fi 1497 1498 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)' 1499 VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS -lpthread" 1500 CORE_DIRS="$CORE_DIRS mapi/vgapi" 1501 GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS" 1502 HAVE_ST_VEGA=yes 1503fi 1504 1505dnl 1506dnl D3D1X configuration 1507dnl 1508 1509if test "x$enable_d3d1x" = xyes; then 1510 if test "x$with_gallium_drivers" = x; then 1511 AC_MSG_ERROR([cannot enable D3D1X without Gallium]) 1512 fi 1513 1514 GALLIUM_STATE_TRACKERS_DIRS="d3d1x $GALLIUM_STATE_TRACKERS_DIRS" 1515 HAVE_ST_D3D1X=yes 1516fi 1517 1518dnl 1519dnl Gallium G3DVL configuration 1520dnl 1521AC_ARG_ENABLE([gallium-g3dvl], 1522 [AS_HELP_STRING([--enable-gallium-g3dvl], 1523 [build gallium g3dvl @<:@default=disabled@:>@])], 1524 [enable_gallium_g3dvl="$enableval"], 1525 [enable_gallium_g3dvl=no]) 1526if test "x$enable_gallium_g3dvl" = xyes; then 1527 if test "x$with_gallium_drivers" = x; then 1528 AC_MSG_ERROR([cannot enable G3DVL without Gallium]) 1529 fi 1530 1531 if test "x$enable_xvmc" = xauto; then 1532 PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no]) 1533 fi 1534 1535 if test "x$enable_vdpau" = xauto; then 1536 PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no]) 1537 fi 1538 1539 if test "x$enable_va" = xauto; then 1540 #don't enable vaapi state tracker even if package exists 1541 #PKG_CHECK_EXISTS([libva], [enable_vdpau=yes], [enable_vdpau=no]) 1542 enable_va=no 1543 fi 1544fi 1545 1546if test "x$enable_xvmc" = xyes; then 1547 PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6 xorg-server]) 1548 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg/xvmc" 1549 HAVE_ST_XVMC="yes" 1550fi 1551 1552if test "x$enable_vdpau" = xyes; then 1553 PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.4.1]) 1554 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau" 1555 HAVE_ST_VDPAU="yes" 1556fi 1557 1558if test "x$enable_va" = xyes; then 1559 PKG_CHECK_MODULES([LIBVA], [libva = 0.31.1]) 1560 AC_MSG_WARN([vaapi state tracker currently unmaintained]) 1561 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS va" 1562 HAVE_ST_VA="yes" 1563fi 1564 1565dnl 1566dnl GLU configuration 1567dnl 1568AC_ARG_ENABLE([glu], 1569 [AS_HELP_STRING([--disable-glu], 1570 [enable OpenGL Utility library @<:@default=enabled@:>@])], 1571 [enable_glu="$enableval"], 1572 [enable_glu=yes]) 1573 1574if test "x$enable_glu" = xyes; then 1575 if test "x$enable_glx" = xno -a "x$enable_osmesa" = xno; then 1576 AC_MSG_NOTICE([Disabling GLU since there is no OpenGL driver]) 1577 enable_glu=no 1578 fi 1579fi 1580 1581if test "x$enable_glu" = xyes; then 1582 SRC_DIRS="$SRC_DIRS glu" 1583 1584 if test "x$enable_glx" = xno; then 1585 # Link libGLU to libOSMesa instead of libGL 1586 GLU_LIB_DEPS="" 1587 GLU_PC_REQ="osmesa" 1588 if test "$enable_static" = no; then 1589 GLU_MESA_DEPS='-l$(OSMESA_LIB)' 1590 else 1591 GLU_MESA_DEPS="" 1592 fi 1593 else 1594 # If static, empty GLU_LIB_DEPS and add libs for programs to link 1595 GLU_PC_REQ="gl" 1596 GLU_PC_LIB_PRIV="-lm" 1597 if test "$enable_static" = no; then 1598 GLU_LIB_DEPS="-lm" 1599 GLU_MESA_DEPS='-l$(GL_LIB)' 1600 else 1601 GLU_LIB_DEPS="" 1602 GLU_MESA_DEPS="" 1603 fi 1604 fi 1605fi 1606if test "$enable_static" = no; then 1607 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS" 1608fi 1609GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS" 1610AC_SUBST([GLU_LIB_DEPS]) 1611AC_SUBST([GLU_MESA_DEPS]) 1612AC_SUBST([GLU_PC_REQ]) 1613AC_SUBST([GLU_PC_REQ_PRIV]) 1614AC_SUBST([GLU_PC_LIB_PRIV]) 1615AC_SUBST([GLU_PC_CFLAGS]) 1616 1617AC_SUBST([PROGRAM_DIRS]) 1618 1619dnl 1620dnl Gallium configuration 1621dnl 1622if test "x$with_gallium_drivers" != x; then 1623 SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets" 1624fi 1625 1626AC_SUBST([LLVM_CFLAGS]) 1627AC_SUBST([LLVM_LIBS]) 1628AC_SUBST([LLVM_LDFLAGS]) 1629AC_SUBST([LLVM_VERSION]) 1630 1631case "x$enable_opengl$enable_gles1$enable_gles2" in 1632x*yes*) 1633 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)' 1634 ;; 1635esac 1636 1637AC_SUBST([VG_LIB_DEPS]) 1638AC_SUBST([EGL_CLIENT_APIS]) 1639 1640AC_ARG_WITH([egl-platforms], 1641 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@], 1642 [comma delimited native platforms libEGL supports, e.g. 1643 "x11,drm" @<:@default=auto@:>@])], 1644 [with_egl_platforms="$withval"], 1645 [with_egl_platforms=yes]) 1646 1647EGL_PLATFORMS="" 1648WAYLAND_EGL_LIB_DEPS="" 1649 1650case "$with_egl_platforms" in 1651yes) 1652 if test "x$enable_egl" = xyes; then 1653 EGL_PLATFORMS="x11" 1654 fi 1655 ;; 1656*) 1657 if test "x$enable_egl" != xyes; then 1658 AC_MSG_ERROR([cannot build egl state tracker without EGL library]) 1659 fi 1660 # verify the requested driver directories exist 1661 egl_platforms=`IFS=', '; echo $with_egl_platforms` 1662 for plat in $egl_platforms; do 1663 test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \ 1664 AC_MSG_ERROR([EGL platform '$plat' doesn't exist]) 1665 if test "$plat" = "fbdev"; then 1666 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev" 1667 fi 1668 if test "$plat" = "null"; then 1669 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null" 1670 fi 1671 if test "$plat" = "wayland"; then 1672 PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-server],, \ 1673 [AC_MSG_ERROR([cannot find libwayland-client])]) 1674 WAYLAND_EGL_LIB_DEPS="$WAYLAND_LIBS $LIBDRM_LIBS" 1675 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland" 1676 fi 1677 if test "$plat" = "drm" && test "x$enable_gbm" = "xno"; then 1678 AC_MSG_ERROR([EGL platform drm needs gbm]) 1679 fi 1680 case "$plat$have_libudev" in 1681 waylandno|drmno) 1682 AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;; 1683 esac 1684 done 1685 EGL_PLATFORMS="$egl_platforms" 1686 ;; 1687esac 1688AC_SUBST([EGL_PLATFORMS]) 1689 1690AC_SUBST([WAYLAND_EGL_LIB_DEPS]) 1691WAYLAND_EGL_PC_REQ_PRIV="wayland-client libdrm" 1692WAYLAND_EGL_PC_LIB_PRIV= 1693WAYLAND_EGL_PC_CFLAGS= 1694 1695AC_SUBST([WAYLAND_EGL_PC_REQ_PRIV]) 1696AC_SUBST([WAYLAND_EGL_PC_LIB_PRIV]) 1697AC_SUBST([WAYLAND_EGL_PC_CFLAGS]) 1698 1699 1700AC_ARG_WITH([egl-driver-dir], 1701 [AS_HELP_STRING([--with-egl-driver-dir=DIR], 1702 [directory for EGL drivers [[default=${libdir}/egl]]])], 1703 [EGL_DRIVER_INSTALL_DIR="$withval"], 1704 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl']) 1705AC_SUBST([EGL_DRIVER_INSTALL_DIR]) 1706 1707AC_ARG_WITH([xorg-driver-dir], 1708 [AS_HELP_STRING([--with-xorg-driver-dir=DIR], 1709 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])], 1710 [XORG_DRIVER_INSTALL_DIR="$withval"], 1711 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"]) 1712AC_SUBST([XORG_DRIVER_INSTALL_DIR]) 1713 1714AC_ARG_WITH([max-width], 1715 [AS_HELP_STRING([--with-max-width=N], 1716 [Maximum framebuffer width (4096)])], 1717 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}"; 1718 AS_IF([test "${withval}" -gt "4096"], 1719 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])] 1720) 1721AC_ARG_WITH([max-height], 1722 [AS_HELP_STRING([--with-max-height=N], 1723 [Maximum framebuffer height (4096)])], 1724 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}"; 1725 AS_IF([test "${withval}" -gt "4096"], 1726 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])] 1727) 1728 1729dnl 1730dnl Gallium LLVM 1731dnl 1732AC_ARG_ENABLE([gallium-llvm], 1733 [AS_HELP_STRING([--enable-gallium-llvm], 1734 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])], 1735 [enable_gallium_llvm="$enableval"], 1736 [enable_gallium_llvm=auto]) 1737if test "x$with_gallium_drivers" = x; then 1738 enable_gallium_llvm=no 1739fi 1740if test "x$enable_gallium_llvm" = xauto; then 1741 case "$host_cpu" in 1742 i*86|x86_64) enable_gallium_llvm=yes;; 1743 esac 1744fi 1745if test "x$enable_gallium_llvm" = xyes; then 1746 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no]) 1747 1748 if test "x$LLVM_CONFIG" != xno; then 1749 LLVM_VERSION=`$LLVM_CONFIG --version` 1750 LLVM_CFLAGS=`$LLVM_CONFIG --cppflags|sed 's/-DNDEBUG\>//g'` 1751 LLVM_LIBS="`$LLVM_CONFIG --libs`" 1752 1753 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags` 1754 DEFINES="$DEFINES -D__STDC_CONSTANT_MACROS" 1755 MESA_LLVM=1 1756 else 1757 MESA_LLVM=0 1758 fi 1759else 1760 MESA_LLVM=0 1761fi 1762 1763dnl Directory for VDPAU libs 1764AC_ARG_WITH([vdpau-libdir], 1765 [AS_HELP_STRING([--with-vdpau-libdir=DIR], 1766 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])], 1767 [VDPAU_LIB_INSTALL_DIR="$withval"], 1768 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau']) 1769AC_SUBST([VDPAU_LIB_INSTALL_DIR]) 1770 1771dnl Directory for VA libs 1772AC_ARG_WITH([va-libdir], 1773 [AS_HELP_STRING([--with-va-libdir=DIR], 1774 [directory for the VA libraries @<:@default=${libdir}/va@:>@])], 1775 [VA_LIB_INSTALL_DIR="$withval"], 1776 [VA_LIB_INSTALL_DIR='${libdir}/va']) 1777AC_SUBST([VA_LIB_INSTALL_DIR]) 1778 1779dnl 1780dnl Gallium helper functions 1781dnl 1782gallium_check_st() { 1783 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes || 1784 test "x$HAVE_ST_XA" = xyes || test "x$HAVE_ST_XVMC" = xyes || 1785 test "x$HAVE_ST_VDPAU" = xyes || test "x$HAVE_ST_VA" = xyes; then 1786 if test "x$have_libdrm" != xyes; then 1787 AC_MSG_ERROR([DRI or Xorg DDX requires libdrm >= $LIBDRM_REQUIRED]) 1788 fi 1789 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1" 1790 fi 1791 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then 1792 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2" 1793 fi 1794 if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then 1795 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3" 1796 fi 1797 if test "x$HAVE_ST_XA" = xyes && test "x$4" != x; then 1798 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4" 1799 fi 1800 if test "x$HAVE_ST_XVMC" = xyes && test "x$5" != x; then 1801 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5" 1802 NEED_G3DVL_DRI="yes" 1803 fi 1804 if test "x$HAVE_ST_VDPAU" = xyes && test "x$6" != x; then 1805 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6" 1806 NEED_G3DVL_DRI="yes" 1807 fi 1808 if test "x$HAVE_ST_VA" = xyes && test "x$7" != x; then 1809 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $7" 1810 NEED_G3DVL_DRI="yes" 1811 fi 1812} 1813 1814gallium_require_llvm() { 1815 if test "x$MESA_LLVM" = x0; then 1816 case "$host_cpu" in 1817 i*86|x86_64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);; 1818 esac 1819 fi 1820} 1821 1822dnl Gallium drivers 1823dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block 1824if test "x$with_gallium_drivers" != x; then 1825 gallium_drivers=`IFS=', '; echo $with_gallium_drivers` 1826 for driver in $gallium_drivers; do 1827 case "x$driver" in 1828 xsvga) 1829 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe" 1830 gallium_check_st "svga/drm" "dri-vmwgfx" "" "xa-vmwgfx" 1831 ;; 1832 xi915) 1833 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED]) 1834 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe" 1835 if test "x$MESA_LLVM" = x1; then 1836 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe" 1837 fi 1838 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw" 1839 gallium_check_st "i915/drm" "dri-i915" "xorg-i915" 1840 ;; 1841 xi965) 1842 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED]) 1843 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i965 softpipe" 1844 if test "x$MESA_LLVM" = x1; then 1845 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe" 1846 fi 1847 gallium_check_st "i965/drm" "dri-i965" "xorg-i965" 1848 ;; 1849 xr300) 1850 gallium_require_llvm "Gallium R300" 1851 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300" 1852 gallium_check_st "radeon/drm" "dri-r300" "xorg-r300" "" "xvmc-r300" "vdpau-r300" "va-r300" 1853 ;; 1854 xr600) 1855 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600" 1856 gallium_check_st "radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600" "va-r600" 1857 ;; 1858 xnouveau) 1859 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED]) 1860 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50 nvc0" 1861 gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau" "" "xvmc-nouveau" "vdpau-nouveau" 1862 ;; 1863 xswrast) 1864 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe" 1865 if test "x$MESA_LLVM" = x1; then 1866 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe" 1867 fi 1868 1869 if test "x$HAVE_ST_DRI" = xyes; then 1870 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast" 1871 fi 1872 if test "x$HAVE_ST_VDPAU" = xyes; then 1873 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS vdpau-softpipe" 1874 fi 1875 if test "x$HAVE_ST_XVMC" = xyes; then 1876 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS xvmc-softpipe" 1877 fi 1878 if test "x$HAVE_ST_VA" = xyes; then 1879 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS va-softpipe" 1880 fi 1881 if test "x$HAVE_ST_VDPAU" = xyes || 1882 test "x$HAVE_ST_XVMC" = xyes || 1883 test "x$HAVE_ST_VA" = xyes; then 1884 if test "x$HAVE_WINSYS_XLIB" != xyes; then 1885 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib" 1886 fi 1887 fi 1888 ;; 1889 *) 1890 AC_MSG_ERROR([Unknown Gallium driver: $driver]) 1891 ;; 1892 esac 1893 done 1894fi 1895 1896if test "x$NEED_G3DVL_DRI" = xyes; then 1897 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS g3dvl/dri" 1898fi 1899 1900dnl prepend CORE_DIRS to SRC_DIRS 1901SRC_DIRS="$CORE_DIRS $SRC_DIRS" 1902 1903dnl Restore LDFLAGS and CPPFLAGS 1904LDFLAGS="$_SAVE_LDFLAGS" 1905CPPFLAGS="$_SAVE_CPPFLAGS" 1906 1907dnl Add user CFLAGS and CXXFLAGS 1908CFLAGS="$CFLAGS $USER_CFLAGS" 1909CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS" 1910 1911dnl Substitute the config 1912AC_CONFIG_FILES([configs/autoconf]) 1913 1914dnl Replace the configs/current symlink 1915AC_CONFIG_COMMANDS([configs],[ 1916if test -f configs/current || test -L configs/current; then 1917 rm -f configs/current 1918fi 1919ln -s autoconf configs/current 1920]) 1921 1922dnl Sort the dirs alphabetically 1923GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort -u|tr "\n" " "` 1924GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort -u|tr "\n" " "` 1925GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "` 1926GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "` 1927 1928AC_OUTPUT 1929 1930dnl 1931dnl Output some configuration info for the user 1932dnl 1933echo "" 1934echo " prefix: $prefix" 1935echo " exec_prefix: $exec_prefix" 1936echo " libdir: $libdir" 1937echo " includedir: $includedir" 1938 1939dnl API info 1940echo "" 1941echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)" 1942echo " OpenVG: $enable_openvg" 1943 1944dnl Driver info 1945echo "" 1946if test "x$enable_osmesa" != xno; then 1947 echo " OSMesa: lib$OSMESA_LIB" 1948else 1949 echo " OSMesa: no" 1950fi 1951 1952if test "x$enable_dri" != xno; then 1953 # cleanup the drivers var 1954 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'` 1955 if test "x$DRI_DIRS" = x; then 1956 echo " DRI drivers: no" 1957 else 1958 echo " DRI drivers: $dri_dirs" 1959 fi 1960 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR" 1961 echo " Shared dricore: $enable_dricore" 1962fi 1963 1964case "x$enable_glx$enable_xlib_glx" in 1965xyesyes) 1966 echo " GLX: Xlib-based" 1967 ;; 1968xyesno) 1969 echo " GLX: DRI-based" 1970 echo " Use XCB: $enable_xcb" 1971 ;; 1972*) 1973 echo " GLX: $enable_glx" 1974 ;; 1975esac 1976 1977echo "" 1978echo " GLU: $enable_glu" 1979 1980dnl EGL 1981echo "" 1982echo " EGL: $enable_egl" 1983if test "$enable_egl" = yes; then 1984 echo " EGL platforms: $EGL_PLATFORMS" 1985 1986 egl_drivers="" 1987 for d in $EGL_DRIVERS_DIRS; do 1988 egl_drivers="$egl_drivers builtin:egl_$d" 1989 done 1990 1991 if test "x$HAVE_ST_EGL" = xyes; then 1992 echo " EGL drivers: ${egl_drivers} egl_gallium" 1993 echo " EGL Gallium STs:$EGL_CLIENT_APIS" 1994 else 1995 echo " EGL drivers: $egl_drivers" 1996 fi 1997fi 1998 1999echo "" 2000if test "x$MESA_LLVM" = x1; then 2001 echo " llvm: yes" 2002 echo " llvm-config: $LLVM_CONFIG" 2003 echo " llvm-version: $LLVM_VERSION" 2004else 2005 echo " llvm: no" 2006fi 2007 2008echo "" 2009if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then 2010 echo " Gallium: yes" 2011 echo " Gallium dirs: $GALLIUM_DIRS" 2012 echo " Target dirs: $GALLIUM_TARGET_DIRS" 2013 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS" 2014 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS" 2015 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS" 2016else 2017 echo " Gallium: no" 2018fi 2019 2020dnl Libraries 2021echo "" 2022echo " Shared libs: $enable_shared" 2023echo " Static libs: $enable_static" 2024 2025dnl Compiler options 2026# cleanup the CFLAGS/CXXFLAGS/DEFINES vars 2027cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \ 2028 $SED 's/^ *//;s/ */ /;s/ *$//'` 2029cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \ 2030 $SED 's/^ *//;s/ */ /;s/ *$//'` 2031defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'` 2032echo "" 2033echo " CFLAGS: $cflags" 2034echo " CXXFLAGS: $cxxflags" 2035echo " Macros: $defines" 2036echo "" 2037echo " PYTHON2: $PYTHON2" 2038 2039echo "" 2040echo " Run '${MAKE-make}' to build Mesa" 2041echo "" 2042