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