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