configure.ac revision aa284042a3116224f623ce8ec1680997c6818827
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.27 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,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="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 $SELINUX_LIBS" 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([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED]) 1281 ;; 1282esac 1283 1284 1285dnl 1286dnl OSMesa configuration 1287dnl 1288 1289dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...) 1290AC_ARG_WITH([osmesa-bits], 1291 [AS_HELP_STRING([--with-osmesa-bits=BITS], 1292 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])], 1293 [osmesa_bits="$withval"], 1294 [osmesa_bits=8]) 1295if test "x$osmesa_bits" != x8; then 1296 if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then 1297 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver]) 1298 osmesa_bits=8 1299 fi 1300fi 1301case "x$osmesa_bits" in 1302x8) 1303 OSMESA_LIB="${OSMESA_LIB}" 1304 ;; 1305x16|x32) 1306 OSMESA_LIB="${OSMESA_LIB}$osmesa_bits" 1307 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31" 1308 ;; 1309*) 1310 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option]) 1311 ;; 1312esac 1313 1314if test "x$enable_osmesa" = xyes; then 1315 # only link libraries with osmesa if shared 1316 if test "$enable_static" = no; then 1317 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS" 1318 else 1319 OSMESA_LIB_DEPS="" 1320 fi 1321 OSMESA_MESA_DEPS="" 1322 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS" 1323fi 1324AC_SUBST([OSMESA_LIB_DEPS]) 1325AC_SUBST([OSMESA_MESA_DEPS]) 1326AC_SUBST([OSMESA_PC_REQ]) 1327AC_SUBST([OSMESA_PC_LIB_PRIV]) 1328 1329dnl 1330dnl gbm configuration 1331dnl 1332if test "x$enable_gbm" = xauto; then 1333 case "$with_egl_platforms" in 1334 *drm*) 1335 enable_gbm=yes ;; 1336 *) 1337 enable_gbm=no ;; 1338 esac 1339fi 1340if test "x$enable_gbm" = xyes; then 1341 SRC_DIRS="$SRC_DIRS gbm" 1342 GBM_BACKEND_DIRS="" 1343 1344 PKG_CHECK_MODULES([LIBUDEV], [libudev], [], 1345 AC_MSG_ERROR([gbm needs udev])) 1346 GBM_LIB_DEPS="$DLOPEN_LIBS $LIBUDEV_LIBS" 1347 1348 if test "x$enable_dri" = xyes; then 1349 GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri" 1350 if test "$SHARED_GLAPI" -eq 0; then 1351 AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi]) 1352 fi 1353 fi 1354fi 1355AC_SUBST([GBM_LIB_DEPS]) 1356AC_SUBST([GBM_BACKEND_DIRS]) 1357GBM_PC_REQ_PRIV="libudev" 1358GBM_PC_LIB_PRIV="$DLOPEN_LIBS" 1359GBM_PC_CFLAGS= 1360AC_SUBST([GBM_PC_REQ_PRIV]) 1361AC_SUBST([GBM_PC_LIB_PRIV]) 1362AC_SUBST([GBM_PC_CFLAGS]) 1363 1364dnl 1365dnl EGL configuration 1366dnl 1367EGL_CLIENT_APIS="" 1368 1369if test "x$enable_egl" = xyes; then 1370 SRC_DIRS="$SRC_DIRS egl" 1371 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS -lpthread" 1372 EGL_DRIVERS_DIRS="" 1373 1374 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"]) 1375 1376 if test "$enable_static" != yes; then 1377 # build egl_glx when libGL is built 1378 if test "x$enable_glx" = xyes; then 1379 EGL_DRIVERS_DIRS="glx" 1380 fi 1381 1382 PKG_CHECK_MODULES([LIBUDEV], [libudev > 150], 1383 [have_libudev=yes],[have_libudev=no]) 1384 if test "$have_libudev" = yes; then 1385 DEFINES="$DEFINES -DHAVE_LIBUDEV" 1386 fi 1387 if test "x$enable_dri" = xyes; then 1388 # build egl_dri2 when xcb-dri2 is available 1389 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes], 1390 [have_xcb_dri2=yes],[have_xcb_dri2=no]) 1391 1392 if test "$have_xcb_dri2" = yes; then 1393 EGL_DRIVER_DRI2=dri2 1394 DEFINES="$DEFINES -DHAVE_XCB_DRI2" 1395 # workaround a bug in xcb-dri2 generated by xcb-proto 1.6 1396 AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [], 1397 [DEFINES="$DEFINES -DXCB_DRI2_CONNECT_DEVICE_NAME_BROKEN"]) 1398 fi 1399 fi 1400 1401 EGL_DRIVERS_DIRS="$EGL_DRIVERS_DIRS $EGL_DRIVER_DRI2" 1402 fi 1403fi 1404AC_SUBST([EGL_LIB_DEPS]) 1405AC_SUBST([EGL_DRIVERS_DIRS]) 1406 1407dnl 1408dnl EGL Gallium configuration 1409dnl 1410if test "x$enable_gallium_egl" = xyes; then 1411 if test "x$with_gallium_drivers" = x; then 1412 AC_MSG_ERROR([cannot enable egl_gallium without Gallium]) 1413 fi 1414 if test "x$enable_egl" = xno; then 1415 AC_MSG_ERROR([cannot enable egl_gallium without EGL]) 1416 fi 1417 if test "x$have_libdrm" != xyes; then 1418 AC_MSG_ERROR([egl_gallium requires libdrm >= $LIBDRM_REQUIRED]) 1419 fi 1420 1421 GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS" 1422 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static" 1423 HAVE_ST_EGL="yes" 1424fi 1425 1426dnl 1427dnl gbm Gallium configuration 1428dnl 1429if test "x$enable_gallium_gbm" = xauto; then 1430 case "$enable_gbm$HAVE_ST_EGL$enable_dri$with_egl_platforms" in 1431 yesyesyes*drm*) 1432 enable_gallium_gbm=yes ;; 1433 *) 1434 enable_gallium_gbm=no ;; 1435 esac 1436fi 1437if test "x$enable_gallium_gbm" = xyes; then 1438 if test "x$with_gallium_drivers" = x; then 1439 AC_MSG_ERROR([cannot enable gbm_gallium without Gallium]) 1440 fi 1441 if test "x$enable_gbm" = xno; then 1442 AC_MSG_ERROR([cannot enable gbm_gallium without gbm]) 1443 fi 1444 # gbm_gallium abuses DRI_LIB_DEPS to link. Make sure it is set. 1445 if test "x$enable_dri" = xno; then 1446 AC_MSG_ERROR([gbm_gallium requires --enable-dri to build]) 1447 fi 1448 1449 GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS" 1450 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm" 1451 HAVE_ST_GBM="yes" 1452fi 1453 1454dnl 1455dnl X.Org DDX configuration 1456dnl 1457if test "x$enable_xorg" = xyes; then 1458 PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0]) 1459 PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED]) 1460 PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED]) 1461 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1], 1462 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71", 1463 HAVE_XEXTPROTO_71="no") 1464 GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS" 1465 HAVE_ST_XORG=yes 1466fi 1467 1468dnl 1469dnl XA configuration 1470dnl 1471if test "x$enable_xa" = xyes; then 1472AC_PROG_AWK 1473AC_PROG_GREP 1474AC_CHECK_PROG(NM, nm, "nm") 1475if test "x$AWK" = x || test "x$GREP" = x || test "x$NM" = x; then 1476AC_MSG_WARN([Missing one of nm, grep or awk. Disabling xa.]) 1477enable_xa=no 1478fi 1479fi 1480if test "x$enable_xa" = xyes; then 1481 GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS" 1482 HAVE_ST_XA=yes 1483 AC_SUBST(AWK) 1484 AC_SUBST(GREP) 1485 AC_SUBST(NM) 1486fi 1487 1488dnl 1489dnl OpenVG configuration 1490dnl 1491VG_LIB_DEPS="" 1492 1493if test "x$enable_openvg" = xyes; then 1494 if test "x$enable_egl" = xno; then 1495 AC_MSG_ERROR([cannot enable OpenVG without EGL]) 1496 fi 1497 if test "x$with_gallium_drivers" = x; then 1498 AC_MSG_ERROR([cannot enable OpenVG without Gallium]) 1499 fi 1500 if test "x$enable_gallium_egl" = xno; then 1501 AC_MSG_ERROR([cannot enable OpenVG without egl_gallium]) 1502 fi 1503 1504 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)' 1505 VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS -lpthread" 1506 CORE_DIRS="$CORE_DIRS mapi/vgapi" 1507 GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS" 1508 HAVE_ST_VEGA=yes 1509fi 1510 1511dnl 1512dnl D3D1X configuration 1513dnl 1514 1515if test "x$enable_d3d1x" = xyes; then 1516 if test "x$with_gallium_drivers" = x; then 1517 AC_MSG_ERROR([cannot enable D3D1X without Gallium]) 1518 fi 1519 1520 GALLIUM_STATE_TRACKERS_DIRS="d3d1x $GALLIUM_STATE_TRACKERS_DIRS" 1521 HAVE_ST_D3D1X=yes 1522fi 1523 1524dnl 1525dnl Gallium G3DVL configuration 1526dnl 1527AC_ARG_ENABLE([gallium-g3dvl], 1528 [AS_HELP_STRING([--enable-gallium-g3dvl], 1529 [build gallium g3dvl @<:@default=disabled@:>@])], 1530 [enable_gallium_g3dvl="$enableval"], 1531 [enable_gallium_g3dvl=no]) 1532if test "x$enable_gallium_g3dvl" = xyes; then 1533 if test "x$with_gallium_drivers" = x; then 1534 AC_MSG_ERROR([cannot enable G3DVL without Gallium]) 1535 fi 1536 1537 if test "x$enable_xvmc" = xauto; then 1538 PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no]) 1539 fi 1540 1541 if test "x$enable_vdpau" = xauto; then 1542 PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no]) 1543 fi 1544 1545 if test "x$enable_va" = xauto; then 1546 #don't enable vaapi state tracker even if package exists 1547 #PKG_CHECK_EXISTS([libva], [enable_vdpau=yes], [enable_vdpau=no]) 1548 enable_va=no 1549 fi 1550fi 1551 1552if test "x$enable_xvmc" = xyes; then 1553 PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6 xorg-server]) 1554 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg/xvmc" 1555 HAVE_ST_XVMC="yes" 1556fi 1557 1558if test "x$enable_vdpau" = xyes; then 1559 PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.4.1]) 1560 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau" 1561 HAVE_ST_VDPAU="yes" 1562fi 1563 1564if test "x$enable_va" = xyes; then 1565 PKG_CHECK_MODULES([LIBVA], [libva = 0.31.1]) 1566 AC_MSG_WARN([vaapi state tracker currently unmaintained]) 1567 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS va" 1568 HAVE_ST_VA="yes" 1569fi 1570 1571dnl 1572dnl GLU configuration 1573dnl 1574AC_ARG_ENABLE([glu], 1575 [AS_HELP_STRING([--disable-glu], 1576 [enable OpenGL Utility library @<:@default=enabled@:>@])], 1577 [enable_glu="$enableval"], 1578 [enable_glu=yes]) 1579 1580if test "x$enable_glu" = xyes; then 1581 if test "x$enable_glx" = xno -a "x$enable_osmesa" = xno; then 1582 AC_MSG_NOTICE([Disabling GLU since there is no OpenGL driver]) 1583 enable_glu=no 1584 fi 1585fi 1586 1587if test "x$enable_glu" = xyes; then 1588 SRC_DIRS="$SRC_DIRS glu" 1589 1590 if test "x$enable_glx" = xno; then 1591 # Link libGLU to libOSMesa instead of libGL 1592 GLU_LIB_DEPS="" 1593 GLU_PC_REQ="osmesa" 1594 if test "$enable_static" = no; then 1595 GLU_MESA_DEPS='-l$(OSMESA_LIB)' 1596 else 1597 GLU_MESA_DEPS="" 1598 fi 1599 else 1600 # If static, empty GLU_LIB_DEPS and add libs for programs to link 1601 GLU_PC_REQ="gl" 1602 GLU_PC_LIB_PRIV="-lm" 1603 if test "$enable_static" = no; then 1604 GLU_LIB_DEPS="-lm" 1605 GLU_MESA_DEPS='-l$(GL_LIB)' 1606 else 1607 GLU_LIB_DEPS="" 1608 GLU_MESA_DEPS="" 1609 fi 1610 fi 1611fi 1612if test "$enable_static" = no; then 1613 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS" 1614fi 1615GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS" 1616AC_SUBST([GLU_LIB_DEPS]) 1617AC_SUBST([GLU_MESA_DEPS]) 1618AC_SUBST([GLU_PC_REQ]) 1619AC_SUBST([GLU_PC_REQ_PRIV]) 1620AC_SUBST([GLU_PC_LIB_PRIV]) 1621AC_SUBST([GLU_PC_CFLAGS]) 1622 1623AC_SUBST([PROGRAM_DIRS]) 1624 1625dnl 1626dnl Gallium configuration 1627dnl 1628if test "x$with_gallium_drivers" != x; then 1629 SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets" 1630fi 1631 1632AC_SUBST([LLVM_CFLAGS]) 1633AC_SUBST([LLVM_LIBS]) 1634AC_SUBST([LLVM_LDFLAGS]) 1635AC_SUBST([LLVM_VERSION]) 1636 1637case "x$enable_opengl$enable_gles1$enable_gles2" in 1638x*yes*) 1639 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)' 1640 ;; 1641esac 1642 1643AC_SUBST([VG_LIB_DEPS]) 1644AC_SUBST([EGL_CLIENT_APIS]) 1645 1646AC_ARG_WITH([egl-platforms], 1647 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@], 1648 [comma delimited native platforms libEGL supports, e.g. 1649 "x11,drm" @<:@default=auto@:>@])], 1650 [with_egl_platforms="$withval"], 1651 [with_egl_platforms=yes]) 1652 1653EGL_PLATFORMS="" 1654WAYLAND_EGL_LIB_DEPS="" 1655 1656case "$with_egl_platforms" in 1657yes) 1658 if test "x$enable_egl" = xyes; then 1659 EGL_PLATFORMS="x11" 1660 fi 1661 ;; 1662*) 1663 if test "x$enable_egl" != xyes; then 1664 AC_MSG_ERROR([cannot build egl state tracker without EGL library]) 1665 fi 1666 # verify the requested driver directories exist 1667 egl_platforms=`IFS=', '; echo $with_egl_platforms` 1668 for plat in $egl_platforms; do 1669 test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \ 1670 AC_MSG_ERROR([EGL platform '$plat' doesn't exist]) 1671 if test "$plat" = "fbdev"; then 1672 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev" 1673 fi 1674 if test "$plat" = "null"; then 1675 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null" 1676 fi 1677 if test "$plat" = "wayland"; then 1678 PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-server],, \ 1679 [AC_MSG_ERROR([cannot find libwayland-client])]) 1680 WAYLAND_EGL_LIB_DEPS="$WAYLAND_LIBS $LIBDRM_LIBS" 1681 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland" 1682 fi 1683 if test "$plat" = "drm" && test "x$enable_gbm" = "xno"; then 1684 AC_MSG_ERROR([EGL platform drm needs gbm]) 1685 fi 1686 case "$plat$have_libudev" in 1687 waylandno|drmno) 1688 AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;; 1689 esac 1690 done 1691 EGL_PLATFORMS="$egl_platforms" 1692 ;; 1693esac 1694AC_SUBST([EGL_PLATFORMS]) 1695 1696AC_SUBST([WAYLAND_EGL_LIB_DEPS]) 1697WAYLAND_EGL_PC_REQ_PRIV="wayland-client libdrm" 1698WAYLAND_EGL_PC_LIB_PRIV= 1699WAYLAND_EGL_PC_CFLAGS= 1700 1701AC_SUBST([WAYLAND_EGL_PC_REQ_PRIV]) 1702AC_SUBST([WAYLAND_EGL_PC_LIB_PRIV]) 1703AC_SUBST([WAYLAND_EGL_PC_CFLAGS]) 1704 1705 1706AC_ARG_WITH([egl-driver-dir], 1707 [AS_HELP_STRING([--with-egl-driver-dir=DIR], 1708 [directory for EGL drivers [[default=${libdir}/egl]]])], 1709 [EGL_DRIVER_INSTALL_DIR="$withval"], 1710 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl']) 1711AC_SUBST([EGL_DRIVER_INSTALL_DIR]) 1712 1713AC_ARG_WITH([xorg-driver-dir], 1714 [AS_HELP_STRING([--with-xorg-driver-dir=DIR], 1715 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])], 1716 [XORG_DRIVER_INSTALL_DIR="$withval"], 1717 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"]) 1718AC_SUBST([XORG_DRIVER_INSTALL_DIR]) 1719 1720AC_ARG_WITH([max-width], 1721 [AS_HELP_STRING([--with-max-width=N], 1722 [Maximum framebuffer width (4096)])], 1723 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}"; 1724 AS_IF([test "${withval}" -gt "4096"], 1725 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])] 1726) 1727AC_ARG_WITH([max-height], 1728 [AS_HELP_STRING([--with-max-height=N], 1729 [Maximum framebuffer height (4096)])], 1730 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}"; 1731 AS_IF([test "${withval}" -gt "4096"], 1732 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])] 1733) 1734 1735dnl 1736dnl Gallium LLVM 1737dnl 1738AC_ARG_ENABLE([gallium-llvm], 1739 [AS_HELP_STRING([--enable-gallium-llvm], 1740 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])], 1741 [enable_gallium_llvm="$enableval"], 1742 [enable_gallium_llvm=auto]) 1743if test "x$with_gallium_drivers" = x; then 1744 enable_gallium_llvm=no 1745fi 1746if test "x$enable_gallium_llvm" = xauto; then 1747 case "$host_cpu" in 1748 i*86|x86_64) enable_gallium_llvm=yes;; 1749 esac 1750fi 1751if test "x$enable_gallium_llvm" = xyes; then 1752 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no]) 1753 1754 if test "x$LLVM_CONFIG" != xno; then 1755 LLVM_VERSION=`$LLVM_CONFIG --version` 1756 LLVM_CFLAGS=`$LLVM_CONFIG --cppflags|sed -e 's/-DNDEBUG\>//g' -e 's/-pedantic//g'` 1757 LLVM_LIBS="`$LLVM_CONFIG --libs`" 1758 1759 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags` 1760 DEFINES="$DEFINES -D__STDC_CONSTANT_MACROS" 1761 MESA_LLVM=1 1762 else 1763 MESA_LLVM=0 1764 fi 1765else 1766 MESA_LLVM=0 1767fi 1768 1769dnl Directory for VDPAU libs 1770AC_ARG_WITH([vdpau-libdir], 1771 [AS_HELP_STRING([--with-vdpau-libdir=DIR], 1772 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])], 1773 [VDPAU_LIB_INSTALL_DIR="$withval"], 1774 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau']) 1775AC_SUBST([VDPAU_LIB_INSTALL_DIR]) 1776 1777dnl Directory for VA libs 1778AC_ARG_WITH([va-libdir], 1779 [AS_HELP_STRING([--with-va-libdir=DIR], 1780 [directory for the VA libraries @<:@default=${libdir}/va@:>@])], 1781 [VA_LIB_INSTALL_DIR="$withval"], 1782 [VA_LIB_INSTALL_DIR='${libdir}/va']) 1783AC_SUBST([VA_LIB_INSTALL_DIR]) 1784 1785dnl 1786dnl Gallium helper functions 1787dnl 1788gallium_check_st() { 1789 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes || 1790 test "x$HAVE_ST_XA" = xyes || test "x$HAVE_ST_XVMC" = xyes || 1791 test "x$HAVE_ST_VDPAU" = xyes || test "x$HAVE_ST_VA" = xyes; then 1792 if test "x$have_libdrm" != xyes; then 1793 AC_MSG_ERROR([DRI or Xorg DDX requires libdrm >= $LIBDRM_REQUIRED]) 1794 fi 1795 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1" 1796 fi 1797 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then 1798 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2" 1799 fi 1800 if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then 1801 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3" 1802 fi 1803 if test "x$HAVE_ST_XA" = xyes && test "x$4" != x; then 1804 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4" 1805 fi 1806 if test "x$HAVE_ST_XVMC" = xyes && test "x$5" != x; then 1807 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5" 1808 NEED_G3DVL_DRI="yes" 1809 fi 1810 if test "x$HAVE_ST_VDPAU" = xyes && test "x$6" != x; then 1811 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6" 1812 NEED_G3DVL_DRI="yes" 1813 fi 1814 if test "x$HAVE_ST_VA" = xyes && test "x$7" != x; then 1815 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $7" 1816 NEED_G3DVL_DRI="yes" 1817 fi 1818} 1819 1820gallium_require_llvm() { 1821 if test "x$MESA_LLVM" = x0; then 1822 case "$host_cpu" in 1823 i*86|x86_64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);; 1824 esac 1825 fi 1826} 1827 1828dnl Gallium drivers 1829dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block 1830if test "x$with_gallium_drivers" != x; then 1831 gallium_drivers=`IFS=', '; echo $with_gallium_drivers` 1832 for driver in $gallium_drivers; do 1833 case "x$driver" in 1834 xsvga) 1835 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe" 1836 gallium_check_st "svga/drm" "dri-vmwgfx" "" "xa-vmwgfx" 1837 ;; 1838 xi915) 1839 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED]) 1840 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe" 1841 if test "x$MESA_LLVM" = x1; then 1842 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe" 1843 fi 1844 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw" 1845 gallium_check_st "i915/drm" "dri-i915" "xorg-i915" 1846 ;; 1847 xr300) 1848 gallium_require_llvm "Gallium R300" 1849 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300" 1850 gallium_check_st "radeon/drm" "dri-r300" "xorg-r300" "" "xvmc-r300" "vdpau-r300" "va-r300" 1851 ;; 1852 xr600) 1853 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600" 1854 gallium_check_st "radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600" "va-r600" 1855 ;; 1856 xnouveau) 1857 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED]) 1858 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50 nvc0" 1859 gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau" "" "xvmc-nouveau" "vdpau-nouveau" 1860 ;; 1861 xswrast) 1862 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe" 1863 if test "x$MESA_LLVM" = x1; then 1864 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe" 1865 fi 1866 1867 if test "x$HAVE_ST_DRI" = xyes; then 1868 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast" 1869 fi 1870 if test "x$HAVE_ST_VDPAU" = xyes; then 1871 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS vdpau-softpipe" 1872 fi 1873 if test "x$HAVE_ST_XVMC" = xyes; then 1874 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS xvmc-softpipe" 1875 fi 1876 if test "x$HAVE_ST_VA" = xyes; then 1877 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS va-softpipe" 1878 fi 1879 if test "x$HAVE_ST_VDPAU" = xyes || 1880 test "x$HAVE_ST_XVMC" = xyes || 1881 test "x$HAVE_ST_VA" = xyes; then 1882 if test "x$HAVE_WINSYS_XLIB" != xyes; then 1883 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib" 1884 fi 1885 fi 1886 ;; 1887 *) 1888 AC_MSG_ERROR([Unknown Gallium driver: $driver]) 1889 ;; 1890 esac 1891 done 1892fi 1893 1894if test "x$NEED_G3DVL_DRI" = xyes; then 1895 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS g3dvl/dri" 1896fi 1897 1898dnl prepend CORE_DIRS to SRC_DIRS 1899SRC_DIRS="$CORE_DIRS $SRC_DIRS" 1900 1901dnl Restore LDFLAGS and CPPFLAGS 1902LDFLAGS="$_SAVE_LDFLAGS" 1903CPPFLAGS="$_SAVE_CPPFLAGS" 1904 1905dnl Add user CFLAGS and CXXFLAGS 1906CFLAGS="$CFLAGS $USER_CFLAGS" 1907CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS" 1908 1909dnl Substitute the config 1910AC_CONFIG_FILES([configs/autoconf]) 1911 1912dnl Replace the configs/current symlink 1913AC_CONFIG_COMMANDS([configs],[ 1914if test -f configs/current || test -L configs/current; then 1915 rm -f configs/current 1916fi 1917ln -s autoconf configs/current 1918]) 1919 1920dnl Sort the dirs alphabetically 1921GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort -u|tr "\n" " "` 1922GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort -u|tr "\n" " "` 1923GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "` 1924GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "` 1925 1926AC_OUTPUT 1927 1928dnl 1929dnl Output some configuration info for the user 1930dnl 1931echo "" 1932echo " prefix: $prefix" 1933echo " exec_prefix: $exec_prefix" 1934echo " libdir: $libdir" 1935echo " includedir: $includedir" 1936 1937dnl API info 1938echo "" 1939echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)" 1940echo " OpenVG: $enable_openvg" 1941 1942dnl Driver info 1943echo "" 1944if test "x$enable_osmesa" != xno; then 1945 echo " OSMesa: lib$OSMESA_LIB" 1946else 1947 echo " OSMesa: no" 1948fi 1949 1950if test "x$enable_dri" != xno; then 1951 # cleanup the drivers var 1952 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'` 1953 if test "x$DRI_DIRS" = x; then 1954 echo " DRI drivers: no" 1955 else 1956 echo " DRI drivers: $dri_dirs" 1957 fi 1958 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR" 1959 echo " Shared dricore: $enable_dricore" 1960fi 1961 1962case "x$enable_glx$enable_xlib_glx" in 1963xyesyes) 1964 echo " GLX: Xlib-based" 1965 ;; 1966xyesno) 1967 echo " GLX: DRI-based" 1968 echo " Use XCB: $enable_xcb" 1969 ;; 1970*) 1971 echo " GLX: $enable_glx" 1972 ;; 1973esac 1974 1975echo "" 1976echo " GLU: $enable_glu" 1977 1978dnl EGL 1979echo "" 1980echo " EGL: $enable_egl" 1981if test "$enable_egl" = yes; then 1982 echo " EGL platforms: $EGL_PLATFORMS" 1983 1984 egl_drivers="" 1985 for d in $EGL_DRIVERS_DIRS; do 1986 egl_drivers="$egl_drivers builtin:egl_$d" 1987 done 1988 1989 if test "x$HAVE_ST_EGL" = xyes; then 1990 echo " EGL drivers: ${egl_drivers} egl_gallium" 1991 echo " EGL Gallium STs:$EGL_CLIENT_APIS" 1992 else 1993 echo " EGL drivers: $egl_drivers" 1994 fi 1995fi 1996 1997echo "" 1998if test "x$MESA_LLVM" = x1; then 1999 echo " llvm: yes" 2000 echo " llvm-config: $LLVM_CONFIG" 2001 echo " llvm-version: $LLVM_VERSION" 2002else 2003 echo " llvm: no" 2004fi 2005 2006echo "" 2007if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then 2008 echo " Gallium: yes" 2009 echo " Gallium dirs: $GALLIUM_DIRS" 2010 echo " Target dirs: $GALLIUM_TARGET_DIRS" 2011 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS" 2012 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS" 2013 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS" 2014else 2015 echo " Gallium: no" 2016fi 2017 2018 2019dnl Libraries 2020echo "" 2021echo " Shared libs: $enable_shared" 2022echo " Static libs: $enable_static" 2023 2024dnl Compiler options 2025# cleanup the CFLAGS/CXXFLAGS/DEFINES vars 2026cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \ 2027 $SED 's/^ *//;s/ */ /;s/ *$//'` 2028cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \ 2029 $SED 's/^ *//;s/ */ /;s/ *$//'` 2030defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'` 2031echo "" 2032echo " CFLAGS: $cflags" 2033echo " CXXFLAGS: $cxxflags" 2034echo " Macros: $defines" 2035echo "" 2036echo " PYTHON2: $PYTHON2" 2037 2038echo "" 2039echo " Run '${MAKE-make}' to build Mesa" 2040echo "" 2041