configure.ac revision a1306f4ef6f83a86d03720641f3cdc5e13485fa6
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'])]) 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.15 22LIBDRM_RADEON_REQUIRED=2.4.17 23DRI2PROTO_REQUIRED=2.2 24GLPROTO_REQUIRED=1.4.11 25 26dnl Check for progs 27AC_PROG_CPP 28AC_PROG_CC 29AC_PROG_CXX 30AC_CHECK_PROGS([MAKE], [gmake make]) 31AC_PATH_PROG([MKDEP], [makedepend]) 32AC_PATH_PROG([SED], [sed]) 33 34dnl Our fallback install-sh is a symlink to minstall. Use the existing 35dnl configuration in that case. 36AC_PROG_INSTALL 37test "x$INSTALL" = "x$ac_install_sh" && INSTALL='$(MINSTALL)' 38 39dnl We need a POSIX shell for parts of the build. Assume we have one 40dnl in most cases. 41case "$host_os" in 42solaris*) 43 # Solaris /bin/sh is too old/non-POSIX compliant 44 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh]) 45 SHELL="$POSIX_SHELL" 46 ;; 47esac 48 49MKDEP_OPTIONS=-fdepend 50dnl Ask gcc where it's keeping its secret headers 51if test "x$GCC" = xyes; then 52 for dir in include include-fixed; do 53 GCC_INCLUDES=`$CC -print-file-name=$dir` 54 if test "x$GCC_INCLUDES" != x && \ 55 test "$GCC_INCLUDES" != "$dir" && \ 56 test -d "$GCC_INCLUDES"; then 57 MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES" 58 fi 59 done 60fi 61AC_SUBST([MKDEP_OPTIONS]) 62 63dnl Make sure the pkg-config macros are defined 64m4_ifndef([PKG_PROG_PKG_CONFIG], 65 [m4_fatal([Could not locate the pkg-config autoconf macros. 66 These are usually located in /usr/share/aclocal/pkg.m4. If your macros 67 are in a different location, try setting the environment variable 68 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])]) 69PKG_PROG_PKG_CONFIG() 70 71dnl LIB_DIR - library basename 72LIB_DIR=`echo $libdir | $SED 's%.*/%%'` 73AC_SUBST([LIB_DIR]) 74 75dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later 76_SAVE_LDFLAGS="$LDFLAGS" 77AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker]) 78AC_SUBST([EXTRA_LIB_PATH]) 79 80dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later 81_SAVE_CPPFLAGS="$CPPFLAGS" 82AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers]) 83AC_SUBST([X11_INCLUDES]) 84 85dnl Compiler macros 86DEFINES="" 87AC_SUBST([DEFINES]) 88case "$host_os" in 89linux*|*-gnu*|gnu*) 90 DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS" 91 ;; 92solaris*) 93 DEFINES="$DEFINES -DPTHREADS -DSVR4" 94 ;; 95esac 96 97dnl Add flags for gcc and g++ 98if test "x$GCC" = xyes; then 99 CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99 -ffast-math" 100 101 # Enable -fvisibility=hidden if using a gcc that supports it 102 save_CFLAGS="$CFLAGS" 103 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden]) 104 CFLAGS="$CFLAGS -fvisibility=hidden" 105 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]), 106 [CFLAGS="$save_CFLAGS" ; AC_MSG_RESULT([no])]); 107 108 # Work around aliasing bugs - developers should comment this out 109 CFLAGS="$CFLAGS -fno-strict-aliasing" 110fi 111if test "x$GXX" = xyes; then 112 CXXFLAGS="$CXXFLAGS -Wall" 113 114 # Work around aliasing bugs - developers should comment this out 115 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing" 116fi 117 118dnl These should be unnecessary, but let the user set them if they want 119AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler. 120 Default is to use CFLAGS.]) 121AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the 122 compiler. Default is to use CFLAGS.]) 123AC_SUBST([OPT_FLAGS]) 124AC_SUBST([ARCH_FLAGS]) 125 126dnl 127dnl Hacks to enable 32 or 64 bit build 128dnl 129AC_ARG_ENABLE([32-bit], 130 [AS_HELP_STRING([--enable-32-bit], 131 [build 32-bit libraries @<:@default=auto@:>@])], 132 [enable_32bit="$enableval"], 133 [enable_32bit=auto] 134) 135if test "x$enable_32bit" = xyes; then 136 if test "x$GCC" = xyes; then 137 CFLAGS="$CFLAGS -m32" 138 ARCH_FLAGS="$ARCH_FLAGS -m32" 139 fi 140 if test "x$GXX" = xyes; then 141 CXXFLAGS="$CXXFLAGS -m32" 142 fi 143fi 144AC_ARG_ENABLE([64-bit], 145 [AS_HELP_STRING([--enable-64-bit], 146 [build 64-bit libraries @<:@default=auto@:>@])], 147 [enable_64bit="$enableval"], 148 [enable_64bit=auto] 149) 150if test "x$enable_64bit" = xyes; then 151 if test "x$GCC" = xyes; then 152 CFLAGS="$CFLAGS -m64" 153 fi 154 if test "x$GXX" = xyes; then 155 CXXFLAGS="$CXXFLAGS -m64" 156 fi 157fi 158 159dnl 160dnl shared/static libraries, mimic libtool options 161dnl 162AC_ARG_ENABLE([static], 163 [AS_HELP_STRING([--enable-static], 164 [build static libraries @<:@default=disabled@:>@])], 165 [enable_static="$enableval"], 166 [enable_static=no] 167) 168case "x$enable_static" in 169xyes|xno ) ;; 170x ) enable_static=no ;; 171* ) 172 AC_MSG_ERROR([Static library option '$enable_static' is not a valid]) 173 ;; 174esac 175AC_ARG_ENABLE([shared], 176 [AS_HELP_STRING([--disable-shared], 177 [build shared libraries @<:@default=enabled@:>@])], 178 [enable_shared="$enableval"], 179 [enable_shared=yes] 180) 181case "x$enable_shared" in 182xyes|xno ) ;; 183x ) enable_shared=yes ;; 184* ) 185 AC_MSG_ERROR([Shared library option '$enable_shared' is not a valid]) 186 ;; 187esac 188 189dnl Can't have static and shared libraries, default to static if user 190dnl explicitly requested. If both disabled, set to static since shared 191dnl was explicitly requirested. 192case "x$enable_static$enable_shared" in 193xyesyes ) 194 AC_MSG_WARN([Can't build static and shared libraries, disabling shared]) 195 enable_shared=no 196 ;; 197xnono ) 198 AC_MSG_WARN([Can't disable both static and shared libraries, enabling static]) 199 enable_static=yes 200 ;; 201esac 202 203dnl 204dnl mklib options 205dnl 206AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib]) 207if test "$enable_static" = yes; then 208 MKLIB_OPTIONS="$MKLIB_OPTIONS -static" 209fi 210AC_SUBST([MKLIB_OPTIONS]) 211 212dnl 213dnl other compiler options 214dnl 215AC_ARG_ENABLE([debug], 216 [AS_HELP_STRING([--enable-debug], 217 [use debug compiler flags and macros @<:@default=disabled@:>@])], 218 [enable_debug="$enableval"], 219 [enable_debug=no] 220) 221if test "x$enable_debug" = xyes; then 222 DEFINES="$DEFINES -DDEBUG" 223 if test "x$GCC" = xyes; then 224 CFLAGS="$CFLAGS -g" 225 fi 226 if test "x$GXX" = xyes; then 227 CXXFLAGS="$CXXFLAGS -g" 228 fi 229fi 230 231dnl 232dnl library names 233dnl 234if test "$enable_static" = yes; then 235 LIB_EXTENSION='a' 236else 237 case "$host_os" in 238 darwin* ) 239 LIB_EXTENSION='dylib' ;; 240 cygwin* ) 241 LIB_EXTENSION='dll' ;; 242 aix* ) 243 LIB_EXTENSION='a' ;; 244 * ) 245 LIB_EXTENSION='so' ;; 246 esac 247fi 248 249GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION} 250GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION} 251GLUT_LIB_NAME='lib$(GLUT_LIB).'${LIB_EXTENSION} 252GLW_LIB_NAME='lib$(GLW_LIB).'${LIB_EXTENSION} 253OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION} 254EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION} 255 256GL_LIB_GLOB='lib$(GL_LIB).*'${LIB_EXTENSION}'*' 257GLU_LIB_GLOB='lib$(GLU_LIB).*'${LIB_EXTENSION}'*' 258GLUT_LIB_GLOB='lib$(GLUT_LIB).*'${LIB_EXTENSION}'*' 259GLW_LIB_GLOB='lib$(GLW_LIB).*'${LIB_EXTENSION}'*' 260OSMESA_LIB_GLOB='lib$(OSMESA_LIB).*'${LIB_EXTENSION}'*' 261EGL_LIB_GLOB='lib$(EGL_LIB).*'${LIB_EXTENSION}'*' 262 263AC_SUBST([GL_LIB_NAME]) 264AC_SUBST([GLU_LIB_NAME]) 265AC_SUBST([GLUT_LIB_NAME]) 266AC_SUBST([GLW_LIB_NAME]) 267AC_SUBST([OSMESA_LIB_NAME]) 268AC_SUBST([EGL_LIB_NAME]) 269 270AC_SUBST([GL_LIB_GLOB]) 271AC_SUBST([GLU_LIB_GLOB]) 272AC_SUBST([GLUT_LIB_GLOB]) 273AC_SUBST([GLW_LIB_GLOB]) 274AC_SUBST([OSMESA_LIB_GLOB]) 275AC_SUBST([EGL_LIB_GLOB]) 276 277dnl 278dnl Arch/platform-specific settings 279dnl 280AC_ARG_ENABLE([asm], 281 [AS_HELP_STRING([--disable-asm], 282 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])], 283 [enable_asm="$enableval"], 284 [enable_asm=yes] 285) 286asm_arch="" 287ASM_FLAGS="" 288MESA_ASM_SOURCES="" 289GLAPI_ASM_SOURCES="" 290AC_MSG_CHECKING([whether to enable assembly]) 291test "x$enable_asm" = xno && AC_MSG_RESULT([no]) 292# disable if cross compiling on x86/x86_64 since we must run gen_matypes 293if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then 294 case "$host_cpu" in 295 i?86 | x86_64) 296 enable_asm=no 297 AC_MSG_RESULT([no, cross compiling]) 298 ;; 299 esac 300fi 301# check for supported arches 302if test "x$enable_asm" = xyes; then 303 case "$host_cpu" in 304 i?86) 305 case "$host_os" in 306 linux* | *freebsd* | dragonfly*) 307 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86 308 ;; 309 esac 310 ;; 311 x86_64) 312 case "$host_os" in 313 linux* | *freebsd* | dragonfly*) 314 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64 315 ;; 316 esac 317 ;; 318 powerpc) 319 case "$host_os" in 320 linux*) 321 asm_arch=ppc 322 ;; 323 esac 324 ;; 325 sparc*) 326 case "$host_os" in 327 linux*) 328 asm_arch=sparc 329 ;; 330 esac 331 ;; 332 esac 333 334 case "$asm_arch" in 335 x86) 336 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM" 337 MESA_ASM_SOURCES='$(X86_SOURCES)' 338 GLAPI_ASM_SOURCES='$(X86_API)' 339 AC_MSG_RESULT([yes, x86]) 340 ;; 341 x86_64) 342 ASM_FLAGS="-DUSE_X86_64_ASM" 343 MESA_ASM_SOURCES='$(X86-64_SOURCES)' 344 GLAPI_ASM_SOURCES='$(X86-64_API)' 345 AC_MSG_RESULT([yes, x86_64]) 346 ;; 347 ppc) 348 ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM" 349 MESA_ASM_SOURCES='$(PPC_SOURCES)' 350 AC_MSG_RESULT([yes, ppc]) 351 ;; 352 sparc) 353 ASM_FLAGS="-DUSE_SPARC_ASM" 354 MESA_ASM_SOURCES='$(SPARC_SOURCES)' 355 GLAPI_ASM_SOURCES='$(SPARC_API)' 356 AC_MSG_RESULT([yes, sparc]) 357 ;; 358 *) 359 AC_MSG_RESULT([no, platform not supported]) 360 ;; 361 esac 362fi 363AC_SUBST([ASM_FLAGS]) 364AC_SUBST([MESA_ASM_SOURCES]) 365AC_SUBST([GLAPI_ASM_SOURCES]) 366 367dnl PIC code macro 368MESA_PIC_FLAGS 369 370dnl Check to see if dlopen is in default libraries (like Solaris, which 371dnl has it in libc), or if libdl is needed to get it. 372AC_CHECK_FUNC([dlopen], [], 373 [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])]) 374 375dnl See if posix_memalign is available 376AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"]) 377 378dnl SELinux awareness. 379AC_ARG_ENABLE([selinux], 380 [AS_HELP_STRING([--enable-selinux], 381 [Build SELinux-aware Mesa @<:@default=disabled@:>@])], 382 [MESA_SELINUX="$enableval"], 383 [MESA_SELINUX=no]) 384if test "x$enable_selinux" = "xyes"; then 385 AC_CHECK_HEADER([selinux/selinux.h],[], 386 [AC_MSG_ERROR([SELinux headers not found])]) 387 AC_CHECK_LIB([selinux],[is_selinux_enabled],[], 388 [AC_MSG_ERROR([SELinux library not found])]) 389 SELINUX_LIBS="-lselinux" 390 DEFINES="$DEFINES -DMESA_SELINUX" 391fi 392 393dnl 394dnl Driver configuration. Options are xlib, dri and osmesa right now. 395dnl More later: directfb, fbdev, ... 396dnl 397default_driver="xlib" 398 399case "$host_os" in 400linux*) 401 case "$host_cpu" in 402 i*86|x86_64|powerpc*|sparc*) default_driver="dri";; 403 esac 404 ;; 405*freebsd* | dragonfly*) 406 case "$host_cpu" in 407 i*86|x86_64|powerpc*|sparc*) default_driver="dri";; 408 esac 409 ;; 410esac 411 412AC_ARG_WITH([driver], 413 [AS_HELP_STRING([--with-driver=DRIVER], 414 [driver for Mesa: xlib,dri,osmesa @<:@default=dri when available, or xlib@:>@])], 415 [mesa_driver="$withval"], 416 [mesa_driver="$default_driver"]) 417dnl Check for valid option 418case "x$mesa_driver" in 419xxlib|xdri|xosmesa) 420 ;; 421*) 422 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option]) 423 ;; 424esac 425 426dnl 427dnl Driver specific build directories 428dnl 429 430dnl this variable will be prepended to SRC_DIRS and is not exported 431CORE_DIRS="glsl mesa" 432 433SRC_DIRS="glew" 434GLU_DIRS="sgi" 435WINDOW_SYSTEM="" 436GALLIUM_DIRS="auxiliary drivers state_trackers" 437GALLIUM_WINSYS_DIRS="" 438GALLIUM_WINSYS_DRM_DIRS="" 439GALLIUM_DRIVERS_DIRS="softpipe failover trace identity" 440GALLIUM_STATE_TRACKERS_DIRS="" 441 442case "$mesa_driver" in 443xlib) 444 DRIVER_DIRS="x11" 445 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS xlib" 446 ;; 447dri) 448 CORE_DIRS="glx/x11 $CORE_DIRS" 449 DRIVER_DIRS="dri" 450 WINDOW_SYSTEM="dri" 451 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS drm" 452 ;; 453osmesa) 454 DRIVER_DIRS="osmesa" 455 ;; 456esac 457AC_SUBST([SRC_DIRS]) 458AC_SUBST([GLU_DIRS]) 459AC_SUBST([DRIVER_DIRS]) 460AC_SUBST([WINDOW_SYSTEM]) 461AC_SUBST([GALLIUM_DIRS]) 462AC_SUBST([GALLIUM_WINSYS_DIRS]) 463AC_SUBST([GALLIUM_WINSYS_DRM_DIRS]) 464AC_SUBST([GALLIUM_DRIVERS_DIRS]) 465AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS]) 466 467dnl 468dnl User supplied program configuration 469dnl 470if test -d "$srcdir/progs/demos"; then 471 default_demos=yes 472else 473 default_demos=no 474fi 475AC_ARG_WITH([demos], 476 [AS_HELP_STRING([--with-demos@<:@=DIRS...@:>@], 477 [optional comma delimited demo directories to build 478 @<:@default=auto if source available@:>@])], 479 [with_demos="$withval"], 480 [with_demos="$default_demos"]) 481if test "x$with_demos" = x; then 482 with_demos=no 483fi 484 485dnl If $with_demos is yes, directories will be added as libs available 486PROGRAM_DIRS="" 487case "$with_demos" in 488no) ;; 489yes) 490 # If the driver isn't osmesa, we have libGL and can build xdemos 491 if test "$mesa_driver" != osmesa; then 492 PROGRAM_DIRS="xdemos" 493 fi 494 ;; 495*) 496 # verify the requested demos directories exist 497 demos=`IFS=,; echo $with_demos` 498 for demo in $demos; do 499 test -d "$srcdir/progs/$demo" || \ 500 AC_MSG_ERROR([Program directory '$demo' doesn't exist]) 501 done 502 PROGRAM_DIRS="$demos" 503 ;; 504esac 505 506dnl 507dnl Find out if X is available. The variable have_x is set if libX11 is 508dnl found to mimic AC_PATH_XTRA. 509dnl 510if test -n "$PKG_CONFIG"; then 511 AC_MSG_CHECKING([pkg-config files for X11 are available]) 512 PKG_CHECK_EXISTS([x11],[ 513 x11_pkgconfig=yes 514 have_x=yes 515 ],[ 516 x11_pkgconfig=no 517 ]) 518 AC_MSG_RESULT([$x11_pkgconfig]) 519else 520 x11_pkgconfig=no 521fi 522dnl Use the autoconf macro if no pkg-config files 523if test "$x11_pkgconfig" = no; then 524 AC_PATH_XTRA 525fi 526 527dnl Try to tell the user that the --x-* options are only used when 528dnl pkg-config is not available. This must be right after AC_PATH_XTRA. 529m4_divert_once([HELP_BEGIN], 530[These options are only used when the X libraries cannot be found by the 531pkg-config utility.]) 532 533dnl We need X for xlib and dri, so bomb now if it's not found 534case "$mesa_driver" in 535xlib|dri) 536 if test "$no_x" = yes; then 537 AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver]) 538 fi 539 ;; 540esac 541 542dnl XCB - this is only used for GLX right now 543AC_ARG_ENABLE([xcb], 544 [AS_HELP_STRING([--enable-xcb], 545 [use XCB for GLX @<:@default=disabled@:>@])], 546 [enable_xcb="$enableval"], 547 [enable_xcb=no]) 548if test "x$enable_xcb" = xyes; then 549 DEFINES="$DEFINES -DUSE_XCB" 550else 551 enable_xcb=no 552fi 553 554dnl 555dnl libGL configuration per driver 556dnl 557case "$mesa_driver" in 558xlib) 559 if test "$x11_pkgconfig" = yes; then 560 PKG_CHECK_MODULES([XLIBGL], [x11 xext]) 561 GL_PC_REQ_PRIV="x11 xext" 562 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS" 563 GL_LIB_DEPS="$XLIBGL_LIBS" 564 else 565 # should check these... 566 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS" 567 GL_LIB_DEPS="$X_LIBS -lX11 -lXext" 568 GL_PC_LIB_PRIV="$GL_LIB_DEPS" 569 GL_PC_CFLAGS="$X11_INCLUDES" 570 fi 571 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread" 572 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread" 573 574 # if static, move the external libraries to the programs 575 # and empty the libraries for libGL 576 if test "$enable_static" = yes; then 577 APP_LIB_DEPS="$APP_LIB_DEPS $GL_LIB_DEPS" 578 GL_LIB_DEPS="" 579 fi 580 ;; 581dri) 582 # DRI must be shared, I think 583 if test "$enable_static" = yes; then 584 AC_MSG_ERROR([Can't use static libraries for DRI drivers]) 585 fi 586 587 # Check for libdrm 588 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED]) 589 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED]) 590 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED]) 591 GL_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED glproto >= $GLPROTO_REQUIRED" 592 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED" 593 594 # find the DRI deps for libGL 595 if test "$x11_pkgconfig" = yes; then 596 # add xcb modules if necessary 597 dri_modules="x11 xext xxf86vm xdamage xfixes" 598 if test "$enable_xcb" = yes; then 599 dri_modules="$dri_modules x11-xcb xcb-glx" 600 fi 601 602 PKG_CHECK_MODULES([DRIGL], [$dri_modules]) 603 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules" 604 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS" 605 GL_LIB_DEPS="$DRIGL_LIBS" 606 else 607 # should check these... 608 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS" 609 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes" 610 GL_PC_LIB_PRIV="$GL_LIB_DEPS" 611 GL_PC_CFLAGS="$X11_INCLUDES" 612 613 # XCB can only be used from pkg-config 614 if test "$enable_xcb" = yes; then 615 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx]) 616 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx" 617 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS" 618 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS" 619 fi 620 fi 621 622 # need DRM libs, -lpthread, etc. 623 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS" 624 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS" 625 ;; 626osmesa) 627 # No libGL for osmesa 628 GL_LIB_DEPS="" 629 ;; 630esac 631AC_SUBST([GL_LIB_DEPS]) 632AC_SUBST([GL_PC_REQ_PRIV]) 633AC_SUBST([GL_PC_LIB_PRIV]) 634AC_SUBST([GL_PC_CFLAGS]) 635AC_SUBST([DRI_PC_REQ_PRIV]) 636 637dnl 638dnl More X11 setup 639dnl 640if test "$mesa_driver" = xlib; then 641 DEFINES="$DEFINES -DUSE_XSHM" 642fi 643 644dnl 645dnl More DRI setup 646dnl 647AC_ARG_ENABLE([glx-tls], 648 [AS_HELP_STRING([--enable-glx-tls], 649 [enable TLS support in GLX @<:@default=disabled@:>@])], 650 [GLX_USE_TLS="$enableval"], 651 [GLX_USE_TLS=no]) 652dnl Directory for DRI drivers 653AC_ARG_WITH([dri-driverdir], 654 [AS_HELP_STRING([--with-dri-driverdir=DIR], 655 [directory for the DRI drivers @<:@${libdir}/dri@:>@])], 656 [DRI_DRIVER_INSTALL_DIR="$withval"], 657 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri']) 658AC_SUBST([DRI_DRIVER_INSTALL_DIR]) 659dnl Extra search path for DRI drivers 660AC_ARG_WITH([dri-searchpath], 661 [AS_HELP_STRING([--with-dri-searchpath=DIRS...], 662 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])], 663 [DRI_DRIVER_SEARCH_DIR="$withval"], 664 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}']) 665AC_SUBST([DRI_DRIVER_SEARCH_DIR]) 666dnl Direct rendering or just indirect rendering 667AC_ARG_ENABLE([driglx-direct], 668 [AS_HELP_STRING([--disable-driglx-direct], 669 [enable direct rendering in GLX for DRI @<:@default=enabled@:>@])], 670 [driglx_direct="$enableval"], 671 [driglx_direct="yes"]) 672dnl Which drivers to build - default is chosen by platform 673AC_ARG_WITH([dri-drivers], 674 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@], 675 [comma delimited DRI drivers list, e.g. 676 "swrast,i965,radeon" @<:@default=auto@:>@])], 677 [with_dri_drivers="$withval"], 678 [with_dri_drivers=yes]) 679if test "x$with_dri_drivers" = x; then 680 with_dri_drivers=no 681fi 682 683dnl If $with_dri_drivers is yes, directories will be added through 684dnl platform checks 685DRI_DIRS="" 686case "$with_dri_drivers" in 687no) ;; 688yes) 689 DRI_DIRS="yes" 690 ;; 691*) 692 # verify the requested driver directories exist 693 dri_drivers=`IFS=', '; echo $with_dri_drivers` 694 for driver in $dri_drivers; do 695 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \ 696 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist]) 697 done 698 DRI_DIRS="$dri_drivers" 699 ;; 700esac 701 702dnl Set DRI_DIRS, DEFINES and LIB_DEPS 703if test "$mesa_driver" = dri; then 704 # Use TLS in GLX? 705 if test "x$GLX_USE_TLS" = xyes; then 706 DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS" 707 fi 708 709 # Platform specific settings and drivers to build 710 case "$host_os" in 711 linux*) 712 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER" 713 if test "x$driglx_direct" = xyes; then 714 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING" 715 fi 716 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS" 717 718 case "$host_cpu" in 719 x86_64) 720 # ffb, gamma, and sis are missing because they have not be 721 # converted to use the new interface. i810 are missing 722 # because there is no x86-64 system where they could *ever* 723 # be used. 724 if test "x$DRI_DIRS" = "xyes"; then 725 DRI_DIRS="i915 i965 mach64 mga r128 r200 r300 r600 radeon \ 726 savage tdfx unichrome swrast" 727 fi 728 ;; 729 powerpc*) 730 # Build only the drivers for cards that exist on PowerPC. 731 # At some point MGA will be added, but not yet. 732 if test "x$DRI_DIRS" = "xyes"; then 733 DRI_DIRS="mach64 r128 r200 r300 r600 radeon tdfx swrast" 734 fi 735 ;; 736 sparc*) 737 # Build only the drivers for cards that exist on sparc` 738 if test "x$DRI_DIRS" = "xyes"; then 739 DRI_DIRS="mach64 r128 r200 r300 r600 radeon ffb swrast" 740 fi 741 ;; 742 esac 743 ;; 744 freebsd* | dragonfly*) 745 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1" 746 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS" 747 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING" 748 if test "x$driglx_direct" = xyes; then 749 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING" 750 fi 751 if test "x$GXX" = xyes; then 752 CXXFLAGS="$CXXFLAGS -ansi -pedantic" 753 fi 754 755 # ffb and gamma are missing because they have not been converted 756 # to use the new interface. 757 if test "x$DRI_DIRS" = "xyes"; then 758 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon tdfx \ 759 unichrome savage sis swrast" 760 fi 761 ;; 762 gnu*) 763 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER" 764 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS" 765 ;; 766 solaris*) 767 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER" 768 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING" 769 if test "x$driglx_direct" = xyes; then 770 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING" 771 fi 772 ;; 773 esac 774 775 # default drivers 776 if test "x$DRI_DIRS" = "xyes"; then 777 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 r600 radeon \ 778 savage sis tdfx unichrome ffb swrast" 779 fi 780 781 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'` 782 783 # Check for expat 784 EXPAT_INCLUDES="" 785 EXPAT_LIB=-lexpat 786 AC_ARG_WITH([expat], 787 [AS_HELP_STRING([--with-expat=DIR], 788 [expat install directory])],[ 789 EXPAT_INCLUDES="-I$withval/include" 790 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES" 791 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR" 792 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat" 793 ]) 794 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])]) 795 AC_CHECK_LIB([expat],[XML_ParserCreate],[], 796 [AC_MSG_ERROR([Expat required for DRI.])]) 797 798 # put all the necessary libs together 799 DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS" 800fi 801AC_SUBST([DRI_DIRS]) 802AC_SUBST([EXPAT_INCLUDES]) 803AC_SUBST([DRI_LIB_DEPS]) 804 805case $DRI_DIRS in 806*i915*|*i965*) 807 PKG_CHECK_MODULES([INTEL], [libdrm_intel]) 808 ;; 809esac 810 811case $DRI_DIRS in 812*radeon*|*r200*|*r300*|*r600*) 813 PKG_CHECK_MODULES([LIBDRM_RADEON], 814 [libdrm_radeon libdrm >= $LIBDRM_RADEON_REQUIRED], 815 HAVE_LIBDRM_RADEON=yes, 816 HAVE_LIBDRM_RADEON=no) 817 818 if test "$HAVE_LIBDRM_RADEON" = yes; then 819 RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS" 820 RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS 821 fi 822 ;; 823esac 824AC_SUBST([RADEON_CFLAGS]) 825AC_SUBST([RADEON_LDFLAGS]) 826 827 828dnl 829dnl OSMesa configuration 830dnl 831if test "$mesa_driver" = xlib; then 832 default_gl_osmesa=yes 833else 834 default_gl_osmesa=no 835fi 836AC_ARG_ENABLE([gl-osmesa], 837 [AS_HELP_STRING([--enable-gl-osmesa], 838 [enable OSMesa on libGL @<:@default=enabled for xlib driver@:>@])], 839 [gl_osmesa="$enableval"], 840 [gl_osmesa="$default_gl_osmesa"]) 841if test "x$gl_osmesa" = xyes; then 842 if test "$mesa_driver" = osmesa; then 843 AC_MSG_ERROR([libGL is not available for OSMesa driver]) 844 else 845 DRIVER_DIRS="$DRIVER_DIRS osmesa" 846 fi 847fi 848 849dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...) 850AC_ARG_WITH([osmesa-bits], 851 [AS_HELP_STRING([--with-osmesa-bits=BITS], 852 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])], 853 [osmesa_bits="$withval"], 854 [osmesa_bits=8]) 855if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then 856 AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver]) 857 osmesa_bits=8 858fi 859case "x$osmesa_bits" in 860x8) 861 OSMESA_LIB=OSMesa 862 ;; 863x16|x32) 864 OSMESA_LIB="OSMesa$osmesa_bits" 865 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31" 866 ;; 867*) 868 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option]) 869 ;; 870esac 871AC_SUBST([OSMESA_LIB]) 872 873case "$mesa_driver" in 874osmesa) 875 # only link libraries with osmesa if shared 876 if test "$enable_static" = no; then 877 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS" 878 else 879 OSMESA_LIB_DEPS="" 880 fi 881 OSMESA_MESA_DEPS="" 882 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS" 883 ;; 884*) 885 # Link OSMesa to libGL otherwise 886 OSMESA_LIB_DEPS="" 887 # only link libraries with osmesa if shared 888 if test "$enable_static" = no; then 889 OSMESA_MESA_DEPS='-l$(GL_LIB)' 890 else 891 OSMESA_MESA_DEPS="" 892 fi 893 OSMESA_PC_REQ="gl" 894 ;; 895esac 896OSMESA_PC_LIB_PRIV="$OSMESA_PC_LIB_PRIV" 897AC_SUBST([OSMESA_LIB_DEPS]) 898AC_SUBST([OSMESA_MESA_DEPS]) 899AC_SUBST([OSMESA_PC_REQ]) 900AC_SUBST([OSMESA_PC_LIB_PRIV]) 901 902dnl 903dnl EGL configuration 904dnl 905AC_ARG_ENABLE([egl], 906 [AS_HELP_STRING([--disable-egl], 907 [disable EGL library @<:@default=enabled@:>@])], 908 [enable_egl="$enableval"], 909 [enable_egl=yes]) 910if test "x$enable_egl" = xyes; then 911 SRC_DIRS="$SRC_DIRS egl" 912 EGL_LIB_DEPS="$DLOPEN_LIBS -lpthread" 913 EGL_DRIVERS_DIRS="" 914 if test "$enable_static" != yes && test "$mesa_driver" != osmesa; then 915 # build egl_glx when libGL is built 916 EGL_DRIVERS_DIRS="glx" 917 fi 918fi 919AC_SUBST([EGL_LIB_DEPS]) 920AC_SUBST([EGL_DRIVERS_DIRS]) 921 922dnl 923dnl GLU configuration 924dnl 925AC_ARG_ENABLE([glu], 926 [AS_HELP_STRING([--disable-glu], 927 [enable OpenGL Utility library @<:@default=enabled@:>@])], 928 [enable_glu="$enableval"], 929 [enable_glu=yes]) 930if test "x$enable_glu" = xyes; then 931 SRC_DIRS="$SRC_DIRS glu" 932 933 case "$mesa_driver" in 934 osmesa) 935 # If GLU is available and we have libOSMesa (not 16 or 32), 936 # we can build the osdemos 937 if test "$with_demos" = yes && test "$osmesa_bits" = 8; then 938 PROGRAM_DIRS="$PROGRAM_DIRS osdemos" 939 fi 940 941 # Link libGLU to libOSMesa instead of libGL 942 GLU_LIB_DEPS="" 943 GLU_PC_REQ="osmesa" 944 if test "$enable_static" = no; then 945 GLU_MESA_DEPS='-l$(OSMESA_LIB)' 946 else 947 GLU_MESA_DEPS="" 948 fi 949 ;; 950 *) 951 # If static, empty GLU_LIB_DEPS and add libs for programs to link 952 GLU_PC_REQ="gl" 953 GLU_PC_LIB_PRIV="-lm" 954 if test "$enable_static" = no; then 955 GLU_LIB_DEPS="-lm" 956 GLU_MESA_DEPS='-l$(GL_LIB)' 957 else 958 GLU_LIB_DEPS="" 959 GLU_MESA_DEPS="" 960 APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++" 961 fi 962 ;; 963 esac 964fi 965if test "$enable_static" = no; then 966 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS" 967fi 968GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS" 969AC_SUBST([GLU_LIB_DEPS]) 970AC_SUBST([GLU_MESA_DEPS]) 971AC_SUBST([GLU_PC_REQ]) 972AC_SUBST([GLU_PC_REQ_PRIV]) 973AC_SUBST([GLU_PC_LIB_PRIV]) 974AC_SUBST([GLU_PC_CFLAGS]) 975 976dnl 977dnl GLw configuration 978dnl 979AC_ARG_ENABLE([glw], 980 [AS_HELP_STRING([--disable-glw], 981 [enable Xt/Motif widget library @<:@default=enabled@:>@])], 982 [enable_glw="$enableval"], 983 [enable_glw=yes]) 984dnl Don't build GLw on osmesa 985if test "x$enable_glw" = xyes && test "$mesa_driver" = osmesa; then 986 AC_MSG_WARN([Disabling GLw since the driver is OSMesa]) 987 enable_glw=no 988fi 989AC_ARG_ENABLE([motif], 990 [AS_HELP_STRING([--enable-motif], 991 [use Motif widgets in GLw @<:@default=disabled@:>@])], 992 [enable_motif="$enableval"], 993 [enable_motif=no]) 994 995if test "x$enable_glw" = xyes; then 996 SRC_DIRS="$SRC_DIRS glw" 997 if test "$x11_pkgconfig" = yes; then 998 PKG_CHECK_MODULES([GLW],[x11 xt]) 999 GLW_PC_REQ_PRIV="x11 xt" 1000 GLW_LIB_DEPS="$GLW_LIBS" 1001 else 1002 # should check these... 1003 GLW_LIB_DEPS="$X_LIBS -lXt -lX11" 1004 GLW_PC_LIB_PRIV="$GLW_LIB_DEPS" 1005 GLW_PC_CFLAGS="$X11_INCLUDES" 1006 fi 1007 1008 GLW_SOURCES="GLwDrawA.c" 1009 MOTIF_CFLAGS= 1010 if test "x$enable_motif" = xyes; then 1011 GLW_SOURCES="$GLW_SOURCES GLwMDrawA.c" 1012 AC_PATH_PROG([MOTIF_CONFIG], [motif-config], [no]) 1013 if test "x$MOTIF_CONFIG" != xno; then 1014 MOTIF_CFLAGS=`$MOTIF_CONFIG --cflags` 1015 MOTIF_LIBS=`$MOTIF_CONFIG --libs` 1016 else 1017 AC_CHECK_HEADER([Xm/PrimitiveP.h], [], 1018 [AC_MSG_ERROR([Can't locate Motif headers])]) 1019 AC_CHECK_LIB([Xm], [XmGetPixmap], [MOTIF_LIBS="-lXm"], 1020 [AC_MSG_ERROR([Can't locate Motif Xm library])]) 1021 fi 1022 # MOTIF_LIBS is prepended to GLW_LIB_DEPS since Xm needs Xt/X11 1023 GLW_LIB_DEPS="$MOTIF_LIBS $GLW_LIB_DEPS" 1024 GLW_PC_LIB_PRIV="$MOTIF_LIBS $GLW_PC_LIB_PRIV" 1025 GLW_PC_CFLAGS="$MOTIF_CFLAGS $GLW_PC_CFLAGS" 1026 fi 1027 1028 # If static, empty GLW_LIB_DEPS and add libs for programs to link 1029 GLW_PC_LIB_PRIV="$GLW_PC_LIB_PRIV" 1030 if test "$enable_static" = no; then 1031 GLW_MESA_DEPS='-l$(GL_LIB)' 1032 GLW_LIB_DEPS="$GLW_LIB_DEPS" 1033 else 1034 APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS" 1035 GLW_LIB_DEPS="" 1036 GLW_MESA_DEPS="" 1037 fi 1038fi 1039AC_SUBST([GLW_LIB_DEPS]) 1040AC_SUBST([GLW_MESA_DEPS]) 1041AC_SUBST([GLW_SOURCES]) 1042AC_SUBST([MOTIF_CFLAGS]) 1043AC_SUBST([GLW_PC_REQ_PRIV]) 1044AC_SUBST([GLW_PC_LIB_PRIV]) 1045AC_SUBST([GLW_PC_CFLAGS]) 1046 1047dnl 1048dnl GLUT configuration 1049dnl 1050if test -f "$srcdir/include/GL/glut.h"; then 1051 default_glut=yes 1052else 1053 default_glut=no 1054fi 1055AC_ARG_ENABLE([glut], 1056 [AS_HELP_STRING([--disable-glut], 1057 [enable GLUT library @<:@default=enabled if source available@:>@])], 1058 [enable_glut="$enableval"], 1059 [enable_glut="$default_glut"]) 1060 1061dnl Can't build glut if GLU not available 1062if test "x$enable_glu$enable_glut" = xnoyes; then 1063 AC_MSG_WARN([Disabling glut since GLU is disabled]) 1064 enable_glut=no 1065fi 1066dnl Don't build glut on osmesa 1067if test "x$enable_glut" = xyes && test "$mesa_driver" = osmesa; then 1068 AC_MSG_WARN([Disabling glut since the driver is OSMesa]) 1069 enable_glut=no 1070fi 1071 1072if test "x$enable_glut" = xyes; then 1073 SRC_DIRS="$SRC_DIRS glut/glx" 1074 GLUT_CFLAGS="" 1075 if test "x$GCC" = xyes; then 1076 GLUT_CFLAGS="-fexceptions" 1077 fi 1078 if test "$x11_pkgconfig" = yes; then 1079 PKG_CHECK_MODULES([GLUT],[x11 xmu xi]) 1080 GLUT_PC_REQ_PRIV="x11 xmu xi" 1081 GLUT_LIB_DEPS="$GLUT_LIBS" 1082 else 1083 # should check these... 1084 GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi" 1085 GLUT_PC_LIB_PRIV="$GLUT_LIB_DEPS" 1086 GLUT_PC_CFLAGS="$X11_INCLUDES" 1087 fi 1088 GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm" 1089 GLUT_PC_LIB_PRIV="$GLUT_PC_LIB_PRIV -lm" 1090 1091 # If glut is available, we can build most programs 1092 if test "$with_demos" = yes; then 1093 PROGRAM_DIRS="$PROGRAM_DIRS demos redbook samples glsl" 1094 fi 1095 1096 # If static, empty GLUT_LIB_DEPS and add libs for programs to link 1097 if test "$enable_static" = no; then 1098 GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)' 1099 else 1100 APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS" 1101 GLUT_LIB_DEPS="" 1102 GLUT_MESA_DEPS="" 1103 fi 1104fi 1105AC_SUBST([GLUT_LIB_DEPS]) 1106AC_SUBST([GLUT_MESA_DEPS]) 1107AC_SUBST([GLUT_CFLAGS]) 1108AC_SUBST([GLUT_PC_REQ_PRIV]) 1109AC_SUBST([GLUT_PC_LIB_PRIV]) 1110AC_SUBST([GLUT_PC_CFLAGS]) 1111 1112dnl 1113dnl Program library dependencies 1114dnl Only libm is added here if necessary as the libraries should 1115dnl be pulled in by the linker 1116dnl 1117if test "x$APP_LIB_DEPS" = x; then 1118 case "$host_os" in 1119 solaris*) 1120 APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm" 1121 ;; 1122 cygwin*) 1123 APP_LIB_DEPS="-lX11" 1124 ;; 1125 *) 1126 APP_LIB_DEPS="-lm" 1127 ;; 1128 esac 1129fi 1130AC_SUBST([APP_LIB_DEPS]) 1131AC_SUBST([PROGRAM_DIRS]) 1132 1133dnl 1134dnl Gallium configuration 1135dnl 1136AC_ARG_ENABLE([gallium], 1137 [AS_HELP_STRING([--disable-gallium], 1138 [build gallium @<:@default=enabled@:>@])], 1139 [enable_gallium="$enableval"], 1140 [enable_gallium=yes]) 1141if test "x$enable_gallium" = xyes; then 1142 SRC_DIRS="$SRC_DIRS gallium gallium/winsys" 1143fi 1144 1145dnl 1146dnl Gallium state trackers configuration 1147dnl 1148AC_ARG_WITH([state-trackers], 1149 [AS_HELP_STRING([--with-state-trackers@<:@=DIRS...@:>@], 1150 [comma delimited state_trackers list, e.g. 1151 "egl,glx" @<:@default=auto@:>@])], 1152 [with_state_trackers="$withval"], 1153 [with_state_trackers=yes]) 1154 1155case "$with_state_trackers" in 1156no) 1157 GALLIUM_STATE_TRACKERS_DIRS="" 1158 ;; 1159yes) 1160 # look at what else is built 1161 case "$mesa_driver" in 1162 xlib) 1163 GALLIUM_STATE_TRACKERS_DIRS=glx 1164 ;; 1165 dri) 1166 GALLIUM_STATE_TRACKERS_DIRS="dri" 1167 if test "x$enable_egl" = xyes; then 1168 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS egl_g3d" 1169 fi 1170 # Have only tested st/xorg on 1.6.0 servers 1171 PKG_CHECK_MODULES(XORG, [xorg-server >= 1.6.0], 1172 HAVE_XORG="yes"; GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg", 1173 HAVE_XORG="no") 1174 ;; 1175 esac 1176 ;; 1177*) 1178 # verify the requested state tracker exist 1179 state_trackers=`IFS=', '; echo $with_state_trackers` 1180 for tracker in $state_trackers; do 1181 test -d "$srcdir/src/gallium/state_trackers/$tracker" || \ 1182 AC_MSG_ERROR([state tracker '$tracker' doesn't exist]) 1183 1184 case "$tracker" in 1185 egl_g3d) 1186 if test "x$enable_egl" != xyes; then 1187 AC_MSG_ERROR([cannot build egl_g3d state tracker without EGL library]) 1188 fi 1189 ;; 1190 xorg) 1191 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1], 1192 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71", 1193 HAVE_XEXTPROTO_71="no") 1194 ;; 1195 es) 1196 # mesa/es is required to build es state tracker 1197 CORE_DIRS="$CORE_DIRS mesa/es" 1198 ;; 1199 esac 1200 done 1201 GALLIUM_STATE_TRACKERS_DIRS="$state_trackers" 1202 ;; 1203esac 1204 1205AC_ARG_WITH([egl-displays], 1206 [AS_HELP_STRING([--with-egl-displays@<:@=DIRS...@:>@], 1207 [comma delimited native displays libEGL supports, e.g. 1208 "x11,kms" @<:@default=auto@:>@])], 1209 [with_egl_displays="$withval"], 1210 [with_egl_displays=yes]) 1211 1212EGL_DISPLAYS="" 1213case "$with_egl_displays" in 1214yes) 1215 if test "x$enable_egl" = xyes && test "x$mesa_driver" != xosmesa; then 1216 EGL_DISPLAYS="x11" 1217 fi 1218 ;; 1219*) 1220 if test "x$enable_egl" != xyes; then 1221 AC_MSG_ERROR([cannot build egl state tracker without EGL library]) 1222 fi 1223 # verify the requested driver directories exist 1224 egl_displays=`IFS=', '; echo $with_egl_displays` 1225 for dpy in $egl_displays; do 1226 test -d "$srcdir/src/gallium/state_trackers/egl_g3d/$dpy" || \ 1227 AC_MSG_ERROR([EGL display '$dpy' does't exist]) 1228 done 1229 EGL_DISPLAYS="$egl_displays" 1230 ;; 1231esac 1232AC_SUBST([EGL_DISPLAYS]) 1233 1234AC_ARG_WITH([xorg-driver-dir], 1235 [AS_HELP_STRING([--with-xorg-driver-dir=DIR], 1236 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])], 1237 [XORG_DRIVER_INSTALL_DIR="$withval"], 1238 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"]) 1239AC_SUBST([XORG_DRIVER_INSTALL_DIR]) 1240 1241AC_ARG_WITH([max-width], 1242 [AS_HELP_STRING([--with-max-width=N], 1243 [Maximum framebuffer width (4096)])], 1244 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}"; 1245 AS_IF([test "${withval}" -gt "4096"], 1246 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])] 1247) 1248AC_ARG_WITH([max-height], 1249 [AS_HELP_STRING([--with-max-height=N], 1250 [Maximum framebuffer height (4096)])], 1251 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}"; 1252 AS_IF([test "${withval}" -gt "4096"], 1253 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])] 1254) 1255 1256dnl 1257dnl Gallium SVGA configuration 1258dnl 1259AC_ARG_ENABLE([gallium-svga], 1260 [AS_HELP_STRING([--enable-gallium-svga], 1261 [build gallium SVGA @<:@default=disabled@:>@])], 1262 [enable_gallium_svga="$enableval"], 1263 [enable_gallium_svga=auto]) 1264if test "x$enable_gallium_svga" = xyes; then 1265 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS vmware" 1266 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga" 1267elif test "x$enable_gallium_svga" = xauto; then 1268 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga" 1269fi 1270 1271dnl 1272dnl Gallium Intel configuration 1273dnl 1274AC_ARG_ENABLE([gallium-intel], 1275 [AS_HELP_STRING([--enable-gallium-intel], 1276 [build gallium intel @<:@default=disabled@:>@])], 1277 [enable_gallium_intel="$enableval"], 1278 [enable_gallium_intel=auto]) 1279if test "x$enable_gallium_intel" = xyes; then 1280 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS intel i965" 1281 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 i965" 1282elif test "x$enable_gallium_intel" = xauto; then 1283 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 i965" 1284fi 1285 1286dnl 1287dnl Gallium Radeon configuration 1288dnl 1289AC_ARG_ENABLE([gallium-radeon], 1290 [AS_HELP_STRING([--enable-gallium-radeon], 1291 [build gallium radeon @<:@default=disabled@:>@])], 1292 [enable_gallium_radeon="$enableval"], 1293 [enable_gallium_radeon=auto]) 1294if test "x$enable_gallium_radeon" = xyes; then 1295 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS radeon" 1296 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300" 1297elif test "x$enable_gallium_radeon" = xauto; then 1298 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300" 1299fi 1300 1301dnl 1302dnl Gallium Nouveau configuration 1303dnl 1304AC_ARG_ENABLE([gallium-nouveau], 1305 [AS_HELP_STRING([--enable-gallium-nouveau], 1306 [build gallium nouveau @<:@default=disabled@:>@])], 1307 [enable_gallium_nouveau="$enableval"], 1308 [enable_gallium_nouveau=no]) 1309if test "x$enable_gallium_nouveau" = xyes; then 1310 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS nouveau" 1311 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nv04 nv10 nv20 nv30 nv40 nv50" 1312fi 1313 1314dnl 1315dnl Gallium swrast configuration 1316dnl 1317AC_ARG_ENABLE([gallium-swrast], 1318 [AS_HELP_STRING([--enable-gallium-swrast], 1319 [build gallium swrast @<:@default=disabled@:>@])], 1320 [enable_gallium_swrast="$enableval"], 1321 [enable_gallium_swrast=auto]) 1322if test "x$enable_gallium_swrast" = xyes; then 1323 GALLIUM_WINSYS_DRM_DIRS="$GALLIUM_WINSYS_DRM_DIRS swrast" 1324fi 1325 1326dnl prepend CORE_DIRS to SRC_DIRS 1327SRC_DIRS="$CORE_DIRS $SRC_DIRS" 1328 1329dnl Restore LDFLAGS and CPPFLAGS 1330LDFLAGS="$_SAVE_LDFLAGS" 1331CPPFLAGS="$_SAVE_CPPFLAGS" 1332 1333dnl Substitute the config 1334AC_CONFIG_FILES([configs/autoconf]) 1335 1336dnl Replace the configs/current symlink 1337AC_CONFIG_COMMANDS([configs],[ 1338if test -f configs/current || test -L configs/current; then 1339 rm -f configs/current 1340fi 1341ln -s autoconf configs/current 1342]) 1343 1344AC_OUTPUT 1345 1346dnl 1347dnl Output some configuration info for the user 1348dnl 1349echo "" 1350echo " prefix: $prefix" 1351echo " exec_prefix: $exec_prefix" 1352echo " libdir: $libdir" 1353echo " includedir: $includedir" 1354 1355dnl Driver info 1356echo "" 1357echo " Driver: $mesa_driver" 1358if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then 1359 echo " OSMesa: lib$OSMESA_LIB" 1360else 1361 echo " OSMesa: no" 1362fi 1363if test "$mesa_driver" = dri; then 1364 # cleanup the drivers var 1365 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'` 1366if test "x$DRI_DIRS" = x; then 1367 echo " DRI drivers: no" 1368else 1369 echo " DRI drivers: $dri_dirs" 1370fi 1371 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR" 1372fi 1373echo " Use XCB: $enable_xcb" 1374 1375echo "" 1376if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then 1377 echo " Gallium: yes" 1378 echo " Gallium dirs: $GALLIUM_DIRS" 1379 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS" 1380 echo " Winsys drm dirs:$GALLIUM_WINSYS_DRM_DIRS" 1381 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS" 1382 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS" 1383else 1384 echo " Gallium: no" 1385fi 1386 1387dnl Libraries 1388echo "" 1389echo " Shared libs: $enable_shared" 1390echo " Static libs: $enable_static" 1391echo " EGL: $enable_egl" 1392echo " GLU: $enable_glu" 1393echo " GLw: $enable_glw (Motif: $enable_motif)" 1394echo " glut: $enable_glut" 1395 1396dnl Programs 1397# cleanup the programs var for display 1398program_dirs=`echo $PROGRAM_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'` 1399if test "x$program_dirs" = x; then 1400 echo " Demos: no" 1401else 1402 echo " Demos: $program_dirs" 1403fi 1404 1405dnl Compiler options 1406# cleanup the CFLAGS/CXXFLAGS/DEFINES vars 1407cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \ 1408 $SED 's/^ *//;s/ */ /;s/ *$//'` 1409cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \ 1410 $SED 's/^ *//;s/ */ /;s/ *$//'` 1411defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'` 1412echo "" 1413echo " CFLAGS: $cflags" 1414echo " CXXFLAGS: $cxxflags" 1415echo " Macros: $defines" 1416 1417echo "" 1418echo " Run '${MAKE-make}' to build Mesa" 1419echo "" 1420