configure.ac revision 871125a68d11c26efdfa930cf29cdeb8dcc169a5
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_errprint([Error: Failed to get the Mesa version from the output of 10 running `make -f bin/version.mk version' 11]) 12 m4_exit([1]) 13]) 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.3.1 22DRI2PROTO_REQUIRED=1.1 23 24dnl Check for progs 25AC_PROG_CPP 26AC_PROG_CC 27AC_PROG_CXX 28AC_CHECK_PROGS([MAKE], [gmake make]) 29AC_PATH_PROG([MKDEP], [makedepend]) 30AC_PATH_PROG([SED], [sed]) 31 32MKDEP_OPTIONS=-fdepend 33dnl Ask gcc where it's keeping its secret headers 34if test "x$GCC" = xyes; then 35 GCC_INCLUDES=`$CC -print-file-name=include` 36 if test "x$GCC_INCLUDES" != x; then 37 MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES" 38 fi 39fi 40AC_SUBST([MKDEP_OPTIONS]) 41 42dnl Make sure the pkg-config macros are defined 43m4_ifdef([PKG_PROG_PKG_CONFIG],[],[ 44 m4_errprint([Error: Could not locate the pkg-config autoconf macros. 45 These are usually located in /usr/share/aclocal/pkg.m4. If your 46 macros are in a different location, try setting the environment 47 variable ACLOCAL="aclocal -I/other/macro/dir" before running 48 autoreconf. 49]) 50 m4_exit([1]) 51]) 52PKG_PROG_PKG_CONFIG() 53 54dnl LIB_DIR - library basename 55LIB_DIR=`echo $libdir | $SED 's%.*/%%'` 56AC_SUBST([LIB_DIR]) 57 58dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later 59_SAVE_LDFLAGS="$LDFLAGS" 60AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker]) 61AC_SUBST([EXTRA_LIB_PATH]) 62 63dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later 64_SAVE_CPPFLAGS="$CPPFLAGS" 65AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers]) 66AC_SUBST([X11_INCLUDES]) 67 68dnl Compiler macros 69DEFINES="" 70AC_SUBST([DEFINES]) 71case "$host_os" in 72linux*) 73if test "x$GCC" = xyes; then 74 DEFINES="$DEFINES -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_BSD_SOURCE" 75fi 76 DEFINES="$DEFINES -D_SVID_SOURCE -D_GNU_SOURCE -DPTHREADS -DHAVE_POSIX_MEMALIGN" 77 ;; 78esac 79 80dnl Add flags for gcc and g++ 81if test "x$GCC" = xyes; then 82 CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99 -ffast-math" 83 84 # Work around aliasing bugs - developers should comment this out 85 CFLAGS="$CFLAGS -fno-strict-aliasing" 86fi 87if test "x$GXX" = xyes; then 88 CXXFLAGS="$CXXFLAGS -Wall" 89 90 # Work around aliasing bugs - developers should comment this out 91 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing" 92fi 93 94dnl These should be unnecessary, but let the user set them if they want 95AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler. 96 Default is to use CFLAGS.]) 97AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the 98 compiler. Default is to use CFLAGS.]) 99AC_SUBST([OPT_FLAGS]) 100AC_SUBST([ARCH_FLAGS]) 101 102dnl 103dnl Hacks to enable 32 or 64 bit build 104dnl 105AC_ARG_ENABLE([32-bit], 106 [AS_HELP_STRING([--enable-32-bit], 107 [build 32-bit libraries @<:@default=auto@:>@])], 108 [enable_32bit="$enableval"], 109 [enable_32bit=auto] 110) 111if test "x$enable_32bit" = xyes; then 112 if test "x$GCC" = xyes; then 113 CFLAGS="$CFLAGS -m32" 114 fi 115 if test "x$GXX" = xyes; then 116 CXXFLAGS="$CXXFLAGS -m32" 117 fi 118fi 119AC_ARG_ENABLE([64-bit], 120 [AS_HELP_STRING([--enable-64-bit], 121 [build 64-bit libraries @<:@default=auto@:>@])], 122 [enable_64bit="$enableval"], 123 [enable_64bit=auto] 124) 125if test "x$enable_64bit" = xyes; then 126 if test "x$GCC" = xyes; then 127 CFLAGS="$CFLAGS -m64" 128 fi 129 if test "x$GXX" = xyes; then 130 CXXFLAGS="$CXXFLAGS -m64" 131 fi 132fi 133 134dnl 135dnl shared/static libraries, mimic libtool options 136dnl 137AC_ARG_ENABLE([static], 138 [AS_HELP_STRING([--enable-static], 139 [build static libraries @<:@default=disabled@:>@])], 140 [enable_static="$enableval"], 141 [enable_static=no] 142) 143case "x$enable_static" in 144xyes|xno ) ;; 145x ) enable_static=no ;; 146* ) 147 AC_MSG_ERROR([Static library option '$enable_static' is not a valid]) 148 ;; 149esac 150AC_ARG_ENABLE([shared], 151 [AS_HELP_STRING([--disable-shared], 152 [build shared libraries @<:@default=enabled@:>@])], 153 [enable_shared="$enableval"], 154 [enable_shared=yes] 155) 156case "x$enable_shared" in 157xyes|xno ) ;; 158x ) enable_shared=yes ;; 159* ) 160 AC_MSG_ERROR([Shared library option '$enable_shared' is not a valid]) 161 ;; 162esac 163 164dnl Can't have static and shared libraries, default to static if user 165dnl explicitly requested. If both disabled, set to static since shared 166dnl was explicitly requirested. 167case "x$enable_static$enable_shared" in 168xyesyes ) 169 AC_MSG_WARN([Can't build static and shared libraries, disabling shared]) 170 enable_shared=no 171 ;; 172xnono ) 173 AC_MSG_WARN([Can't disable both static and shared libraries, enabling static]) 174 enable_static=yes 175 ;; 176esac 177 178dnl 179dnl mklib options 180dnl 181AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib]) 182if test "$enable_static" = yes; then 183 MKLIB_OPTIONS="$MKLIB_OPTIONS -static" 184fi 185AC_SUBST([MKLIB_OPTIONS]) 186 187dnl 188dnl other compiler options 189dnl 190AC_ARG_ENABLE([debug], 191 [AS_HELP_STRING([--enable-debug], 192 [use debug compiler flags and macros @<:@default=disabled@:>@])], 193 [enable_debug="$enableval"], 194 [enable_debug=no] 195) 196if test "x$enable_debug" = xyes; then 197 DEFINES="$DEFINES -DDEBUG" 198 if test "x$GCC" = xyes; then 199 CFLAGS="$CFLAGS -g" 200 fi 201 if test "x$GXX" = xyes; then 202 CXXFLAGS="$CXXFLAGS -g" 203 fi 204fi 205 206dnl 207dnl library names 208dnl 209if test "$enable_static" = yes; then 210 GL_LIB_NAME='lib$(GL_LIB).a' 211 GLU_LIB_NAME='lib$(GLU_LIB).a' 212 GLUT_LIB_NAME='lib$(GLUT_LIB).a' 213 GLW_LIB_NAME='lib$(GLW_LIB).a' 214 OSMESA_LIB_NAME='lib$(OSMESA_LIB).a' 215else 216 GL_LIB_NAME='lib$(GL_LIB).so' 217 GLU_LIB_NAME='lib$(GLU_LIB).so' 218 GLUT_LIB_NAME='lib$(GLUT_LIB).so' 219 GLW_LIB_NAME='lib$(GLW_LIB).so' 220 OSMESA_LIB_NAME='lib$(OSMESA_LIB).so' 221fi 222AC_SUBST([GL_LIB_NAME]) 223AC_SUBST([GLU_LIB_NAME]) 224AC_SUBST([GLUT_LIB_NAME]) 225AC_SUBST([GLW_LIB_NAME]) 226AC_SUBST([OSMESA_LIB_NAME]) 227 228dnl 229dnl Arch/platform-specific settings 230dnl 231AC_ARG_ENABLE([asm], 232 [AS_HELP_STRING([--disable-asm], 233 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])], 234 [enable_asm="$enableval"], 235 [enable_asm=yes] 236) 237asm_arch="" 238ASM_FLAGS="" 239ASM_SOURCES="" 240ASM_API="" 241AC_MSG_CHECKING([whether to enable assembly]) 242test "x$enable_asm" = xno && AC_MSG_RESULT([no]) 243# disable if cross compiling on x86/x86_64 since we must run gen_matypes 244if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then 245 case "$host_cpu" in 246 i?86 | x86_64) 247 enable_asm=no 248 AC_MSG_RESULT([no, cross compiling]) 249 ;; 250 esac 251fi 252# check for supported arches 253if test "x$enable_asm" = xyes; then 254 case "$host_cpu" in 255 i?86) 256 case "$host_os" in 257 linux* | freebsd* | dragonfly*) 258 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86 259 ;; 260 esac 261 ;; 262 x86_64) 263 case "$host_os" in 264 linux* | freebsd* | dragonfly*) 265 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64 266 ;; 267 esac 268 ;; 269 powerpc) 270 case "$host_os" in 271 linux*) 272 asm_arch=ppc 273 ;; 274 esac 275 ;; 276 esac 277 278 case "$asm_arch" in 279 x86) 280 ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM" 281 ASM_SOURCES='$(X86_SOURCES)' 282 ASM_API='$(X86_API)' 283 AC_MSG_RESULT([yes, x86]) 284 ;; 285 x86_64) 286 ASM_FLAGS="-DUSE_X86_64_ASM" 287 ASM_SOURCES='$(X86-64_SOURCES)' 288 ASM_API='$(X86-64_API)' 289 AC_MSG_RESULT([yes, x86_64]) 290 ;; 291 ppc) 292 ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM" 293 ASM_SOURCES='$(PPC_SOURCES)' 294 AC_MSG_RESULT([yes, ppc]) 295 ;; 296 *) 297 AC_MSG_RESULT([no, platform not supported]) 298 ;; 299 esac 300fi 301AC_SUBST([ASM_FLAGS]) 302AC_SUBST([ASM_SOURCES]) 303AC_SUBST([ASM_API]) 304 305dnl PIC code macro 306MESA_PIC_FLAGS 307 308dnl Check to see if dlopen is in default libraries (like Solaris, which 309dnl has it in libc), or if libdl is needed to get it. 310AC_CHECK_FUNC([dlopen], [], 311 [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])]) 312 313dnl SELinux awareness. 314AC_ARG_ENABLE([selinux], 315 [AS_HELP_STRING([--enable-selinux], 316 [Build SELinux-aware Mesa @<:@default=disabled@:>@])], 317 [MESA_SELINUX="$enableval"], 318 [MESA_SELINUX=no]) 319if test "x$enable_selinux" = "xyes"; then 320 AC_CHECK_HEADER([selinux/selinux.h],[], 321 [AC_MSG_ERROR([SELinux headers not found])]) 322 AC_CHECK_LIB([selinux],[is_selinux_enabled],[], 323 [AC_MSG_ERROR([SELinux library not found])]) 324 SELINUX_LIBS="-lselinux" 325 DEFINES="$DEFINES -DMESA_SELINUX" 326fi 327 328 329dnl 330dnl Driver configuration. Options are xlib, dri and osmesa right now. 331dnl More later: directfb, fbdev, ... 332dnl 333default_driver="xlib" 334 335case "$host_os" in 336linux*) 337 case "$host_cpu" in 338 i*86|x86_64|powerpc*) default_driver="dri";; 339 esac 340 ;; 341freebsd* | dragonfly*) 342 case "$host_cpu" in 343 i*86|x86_64) default_driver="dri";; 344 esac 345 ;; 346esac 347 348AC_ARG_WITH([driver], 349 [AS_HELP_STRING([--with-driver=DRIVER], 350 [driver for Mesa: xlib,dri,osmesa @<:@default=dri when available, or xlib@:>@])], 351 [mesa_driver="$withval"], 352 [mesa_driver="$default_driver"]) 353dnl Check for valid option 354case "x$mesa_driver" in 355xxlib|xdri|xosmesa) 356 ;; 357*) 358 AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option]) 359 ;; 360esac 361 362dnl 363dnl Driver specific build directories 364dnl 365SRC_DIRS="mesa" 366GLU_DIRS="sgi" 367WINDOW_SYSTEM="" 368case "$mesa_driver" in 369xlib) 370 DRIVER_DIRS="x11" 371 ;; 372dri) 373 SRC_DIRS="glx/x11 $SRC_DIRS" 374 DRIVER_DIRS="dri" 375 WINDOW_SYSTEM="dri" 376 ;; 377osmesa) 378 DRIVER_DIRS="osmesa" 379 ;; 380esac 381AC_SUBST([SRC_DIRS]) 382AC_SUBST([GLU_DIRS]) 383AC_SUBST([DRIVER_DIRS]) 384AC_SUBST([WINDOW_SYSTEM]) 385 386dnl 387dnl User supplied program configuration 388dnl 389if test -d "$srcdir/progs/demos"; then 390 default_demos=yes 391else 392 default_demos=no 393fi 394AC_ARG_WITH([demos], 395 [AS_HELP_STRING([--with-demos@<:@=DIRS...@:>@], 396 [optional comma delimited demo directories to build 397 @<:@default=auto if source available@:>@])], 398 [with_demos="$withval"], 399 [with_demos="$default_demos"]) 400if test "x$with_demos" = x; then 401 with_demos=no 402fi 403 404dnl If $with_demos is yes, directories will be added as libs available 405PROGRAM_DIRS="" 406case "$with_demos" in 407no) ;; 408yes) 409 # If the driver isn't osmesa, we have libGL and can build xdemos 410 if test "$mesa_driver" != osmesa; then 411 PROGRAM_DIRS="xdemos" 412 fi 413 ;; 414*) 415 # verify the requested demos directories exist 416 demos=`IFS=,; echo $with_demos` 417 for demo in $demos; do 418 test -d "$srcdir/progs/$demo" || \ 419 AC_MSG_ERROR([Program directory '$demo' doesn't exist]) 420 done 421 PROGRAM_DIRS="$demos" 422 ;; 423esac 424 425dnl 426dnl Find out if X is available. The variable have_x is set if libX11 is 427dnl to mimic AC_PATH_XTRA. 428dnl 429if test -n "$PKG_CONFIG"; then 430 AC_MSG_CHECKING([pkg-config files for X11 are available]) 431 PKG_CHECK_EXISTS([x11],[ 432 x11_pkgconfig=yes 433 have_x=yes 434 ],[ 435 x11_pkgconfig=no 436 ]) 437 AC_MSG_RESULT([$x11_pkgconfig]) 438else 439 x11_pkgconfig=no 440fi 441dnl Use the autoconf macro if no pkg-config files 442if test "$x11_pkgconfig" = no; then 443 AC_PATH_XTRA 444fi 445 446dnl We need X for xlib and dri, so bomb now if it's not found 447case "$mesa_driver" in 448xlib|dri) 449 if test "$no_x" = yes; then 450 AC_MSG_ERROR([X11 development libraries needed for $mesa_driver driver]) 451 fi 452 ;; 453esac 454 455dnl XCB - this is only used for GLX right now 456AC_ARG_ENABLE([xcb], 457 [AS_HELP_STRING([--enable-xcb], 458 [use XCB for GLX @<:@default=disabled@:>@])], 459 [enable_xcb="$enableval"], 460 [enable_xcb=no]) 461if test "x$enable_xcb" = xyes; then 462 DEFINES="$DEFINES -DUSE_XCB" 463else 464 enable_xcb=no 465fi 466 467dnl 468dnl libGL configuration per driver 469dnl 470case "$mesa_driver" in 471xlib) 472 if test "$x11_pkgconfig" = yes; then 473 PKG_CHECK_MODULES([XLIBGL], [x11 xext]) 474 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS" 475 GL_LIB_DEPS="$XLIBGL_LIBS" 476 else 477 # should check these... 478 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS" 479 GL_LIB_DEPS="$X_LIBS -lX11 -lXext" 480 fi 481 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread" 482 483 # if static, move the external libraries to the programs 484 # and empty the libraries for libGL 485 if test "$enable_static" = yes; then 486 APP_LIB_DEPS="$APP_LIB_DEPS $GL_LIB_DEPS" 487 GL_LIB_DEPS="" 488 fi 489 ;; 490dri) 491 # DRI must be shared, I think 492 if test "$enable_static" = yes; then 493 AC_MSG_ERROR([Can't use static libraries for DRI drivers]) 494 fi 495 496 # Check for libdrm 497 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED]) 498 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED]) 499 500 # find the DRI deps for libGL 501 if test "$x11_pkgconfig" = yes; then 502 # add xcb modules if necessary 503 dri_modules="x11 xext xxf86vm xdamage xfixes" 504 if test "$enable_xcb" = yes; then 505 dri_modules="$dri_modules x11-xcb xcb-glx" 506 fi 507 508 PKG_CHECK_MODULES([DRIGL], [$dri_modules]) 509 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS" 510 GL_LIB_DEPS="$DRIGL_LIBS" 511 else 512 # should check these... 513 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS" 514 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes" 515 516 # XCB can only be used from pkg-config 517 if test "$enable_xcb" = yes; then 518 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx]) 519 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS" 520 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS" 521 fi 522 fi 523 524 # need DRM libs, -lpthread, etc. 525 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS" 526 ;; 527osmesa) 528 # No libGL for osmesa 529 GL_LIB_DEPS="" 530 ;; 531esac 532AC_SUBST([GL_LIB_DEPS]) 533 534dnl 535dnl More X11 setup 536dnl 537if test "$mesa_driver" = xlib; then 538 DEFINES="$DEFINES -DUSE_XSHM" 539fi 540 541dnl 542dnl More DRI setup 543dnl 544AC_ARG_ENABLE([glx-tls], 545 [AS_HELP_STRING([--enable-glx-tls], 546 [enable TLS support in GLX @<:@default=disabled@:>@])], 547 [GLX_USE_TLS="$enableval"], 548 [GLX_USE_TLS=no]) 549dnl Directory for DRI drivers 550AC_ARG_WITH([dri-driverdir], 551 [AS_HELP_STRING([--with-dri-driverdir=DIR], 552 [directory for the DRI drivers @<:@${libdir}/dri@:>@])], 553 [DRI_DRIVER_INSTALL_DIR="$withval"], 554 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri']) 555AC_SUBST([DRI_DRIVER_INSTALL_DIR]) 556dnl Direct rendering or just indirect rendering 557AC_ARG_ENABLE([driglx-direct], 558 [AS_HELP_STRING([--disable-driglx-direct], 559 [enable direct rendering in GLX for DRI @<:@default=enabled@:>@])], 560 [driglx_direct="$enableval"], 561 [driglx_direct="yes"]) 562dnl ttm support 563AC_ARG_ENABLE([ttm-api], 564 [AS_HELP_STRING([--enable-ttm-api], 565 [enable TTM API users @<:@default=disabled@:>@])], 566 [ttmapi="$enableval"], 567 [ttmapi="no"]) 568 569if test "x$ttmapi" = "xyes"; then 570 save_CFLAGS=$CFLAGS 571 CFLAGS=$LIBDRM_CFLAGS 572 AC_CHECK_HEADERS([xf86mm.h],[],[AC_MSG_ERROR([xf86mm.h required for TTM.])],[#include "stdint.h"\n#include "drm.h"]) 573 CFLAGS=$save_CFLAGS 574fi 575 576dnl Which drivers to build - default is chosen by platform 577AC_ARG_WITH([dri-drivers], 578 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@], 579 [comma delimited DRI drivers, e.g. "i965,radeon,nouveau" @<:@default=auto@:>@])], 580 [with_dri_drivers="$withval"], 581 [with_dri_drivers=yes]) 582if test "x$with_dri_drivers" = x; then 583 with_dri_drivers=no 584fi 585 586dnl If $with_dri_drivers is yes, directories will be added through 587dnl platform checks 588DRI_DIRS="" 589case "$with_dri_drivers" in 590no|yes) ;; 591*) 592 # verify the requested driver directories exist 593 dri_drivers=`IFS=,; echo $with_dri_drivers` 594 for driver in $dri_drivers; do 595 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \ 596 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist]) 597 done 598 DRI_DIRS="$dri_drivers" 599 ;; 600esac 601 602dnl Just default to no EGL for now 603USING_EGL=0 604AC_SUBST([USING_EGL]) 605 606dnl Set DRI_DIRS, DEFINES and LIB_DEPS 607if test "$mesa_driver" = dri; then 608 # Use TLS in GLX? 609 if test "x$GLX_USE_TLS" = xyes; then 610 DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS" 611 fi 612 613 if test "x$ttmapi" = xyes; then 614 DEFINES="$DEFINES -DTTM_API" 615 fi 616 617 if test "x$USING_EGL" = x1; then 618 PROGRAM_DIRS="egl" 619 fi 620 621 # Platform specific settings and drivers to build 622 case "$host_os" in 623 linux*) 624 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER" 625 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING -DHAVE_ALIAS" 626 if test "x$driglx_direct" = xyes; then 627 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING" 628 fi 629 630 case "$host_cpu" in 631 x86_64) 632 # ffb, gamma, and sis are missing because they have not be 633 # converted to use the new interface. i810 are missing 634 # because there is no x86-64 system where they could *ever* 635 # be used. 636 if test "x$DRI_DIRS" = x; then 637 DRI_DIRS="i915 i965 mach64 mga r128 r200 r300 radeon \ 638 savage tdfx unichrome swrast" 639 fi 640 ;; 641 powerpc*) 642 # Build only the drivers for cards that exist on PowerPC. 643 # At some point MGA will be added, but not yet. 644 if test "x$DRI_DIRS" = x; then 645 DRI_DIRS="mach64 r128 r200 r300 radeon tdfx swrast" 646 fi 647 ;; 648 esac 649 ;; 650 freebsd* | dragonfly*) 651 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1" 652 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS" 653 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING" 654 if test "x$driglx_direct" = xyes; then 655 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING" 656 fi 657 if test "x$GXX" = xyes; then 658 CXXFLAGS="$CXXFLAGS -ansi -pedantic" 659 fi 660 661 # ffb and gamma are missing because they have not been converted 662 # to use the new interface. 663 if test "x$DRI_DIRS" = x; then 664 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 radeon tdfx \ 665 unichrome savage sis swrast" 666 fi 667 ;; 668 esac 669 670 # default drivers 671 if test "x$DRI_DIRS" = x; then 672 DRI_DIRS="i810 i915 i965 mach64 mga r128 r200 r300 radeon s3v \ 673 savage sis tdfx trident unichrome ffb swrast" 674 fi 675 676 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'` 677 678 # Check for expat 679 EXPAT_INCLUDES="" 680 EXPAT_LIB=-lexpat 681 AC_ARG_WITH([expat], 682 [AS_HELP_STRING([--with-expat=DIR], 683 [expat install directory])],[ 684 EXPAT_INCLUDES="-I$withval/include" 685 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES" 686 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR" 687 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat" 688 ]) 689 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])]) 690 AC_CHECK_LIB([expat],[XML_ParserCreate],[], 691 [AC_MSG_ERROR([Expat required for DRI.])]) 692 693 # put all the necessary libs together 694 DRI_LIB_DEPS="$SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS" 695fi 696AC_SUBST([DRI_DIRS]) 697AC_SUBST([EXPAT_INCLUDES]) 698AC_SUBST([DRI_LIB_DEPS]) 699 700dnl 701dnl OSMesa configuration 702dnl 703if test "$mesa_driver" = xlib; then 704 default_gl_osmesa=yes 705else 706 default_gl_osmesa=no 707fi 708AC_ARG_ENABLE([gl-osmesa], 709 [AS_HELP_STRING([--enable-gl-osmesa], 710 [enable OSMesa on libGL @<:@default=enabled for xlib driver@:>@])], 711 [gl_osmesa="$enableval"], 712 [gl_osmesa="$default_gl_osmesa"]) 713if test "x$gl_osmesa" = xyes; then 714 if test "$mesa_driver" = osmesa; then 715 AC_MSG_ERROR([libGL is not available for OSMesa driver]) 716 else 717 DRIVER_DIRS="$DRIVER_DIRS osmesa" 718 fi 719fi 720 721dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...) 722AC_ARG_WITH([osmesa-bits], 723 [AS_HELP_STRING([--with-osmesa-bits=BITS], 724 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])], 725 [osmesa_bits="$withval"], 726 [osmesa_bits=8]) 727if test "$mesa_driver" != osmesa && test "x$osmesa_bits" != x8; then 728 AC_MSG_WARN([Ignoring OSMesa channel bits for non-OSMesa driver]) 729 osmesa_bits=8 730fi 731case "x$osmesa_bits" in 732x8) 733 OSMESA_LIB=OSMesa 734 ;; 735x16|x32) 736 OSMESA_LIB="OSMesa$osmesa_bits" 737 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31" 738 ;; 739*) 740 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option]) 741 ;; 742esac 743AC_SUBST([OSMESA_LIB]) 744 745case "$mesa_driver" in 746osmesa) 747 # only link librararies with osmesa if shared 748 if test "$enable_static" = no; then 749 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS" 750 else 751 OSMESA_LIB_DEPS="" 752 fi 753 OSMESA_MESA_DEPS="" 754 ;; 755*) 756 # Link OSMesa to libGL otherwise 757 OSMESA_LIB_DEPS="" 758 # only link librararies with osmesa if shared 759 if test "$enable_static" = no; then 760 OSMESA_MESA_DEPS='-l$(GL_LIB)' 761 else 762 OSMESA_MESA_DEPS="" 763 fi 764 ;; 765esac 766AC_SUBST([OSMESA_LIB_DEPS]) 767AC_SUBST([OSMESA_MESA_DEPS]) 768 769dnl 770dnl GLU configuration 771dnl 772AC_ARG_ENABLE([glu], 773 [AS_HELP_STRING([--disable-glu], 774 [enable OpenGL Utility library @<:@default=enabled@:>@])], 775 [enable_glu="$enableval"], 776 [enable_glu=yes]) 777if test "x$enable_glu" = xyes; then 778 SRC_DIRS="$SRC_DIRS glu" 779 780 case "$mesa_driver" in 781 osmesa) 782 # If GLU is available and we have libOSMesa (not 16 or 32), 783 # we can build the osdemos 784 if test "$with_demos" = yes && test "$osmesa_bits" = 8; then 785 PROGRAM_DIRS="$PROGRAM_DIRS osdemos" 786 fi 787 788 # Link libGLU to libOSMesa instead of libGL 789 GLU_LIB_DEPS="" 790 if test "$enable_static" = no; then 791 GLU_MESA_DEPS='-l$(OSMESA_LIB)' 792 else 793 GLU_MESA_DEPS="" 794 fi 795 ;; 796 *) 797 # If static, empty GLU_LIB_DEPS and add libs for programs to link 798 if test "$enable_static" = no; then 799 GLU_LIB_DEPS="-lm" 800 GLU_MESA_DEPS='-l$(GL_LIB)' 801 else 802 GLU_LIB_DEPS="" 803 GLU_MESA_DEPS="" 804 APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++" 805 fi 806 ;; 807 esac 808fi 809AC_SUBST([GLU_LIB_DEPS]) 810AC_SUBST([GLU_MESA_DEPS]) 811 812dnl 813dnl GLw configuration 814dnl 815AC_ARG_ENABLE([glw], 816 [AS_HELP_STRING([--disable-glw], 817 [enable Xt/Motif widget library @<:@default=enabled@:>@])], 818 [enable_glw="$enableval"], 819 [enable_glw=yes]) 820dnl Don't build GLw on osmesa 821if test "x$enable_glw" = xyes && test "$mesa_driver" = osmesa; then 822 AC_MSG_WARN([Disabling GLw since the driver is OSMesa]) 823 enable_glw=no 824fi 825if test "x$enable_glw" = xyes; then 826 SRC_DIRS="$SRC_DIRS glw" 827 if test "$x11_pkgconfig" = yes; then 828 PKG_CHECK_MODULES([GLW],[x11 xt]) 829 GLW_LIB_DEPS="$GLW_LIBS" 830 else 831 # should check these... 832 GLW_LIB_DEPS="$X_LIBS -lX11 -lXt" 833 fi 834 835 # If static, empty GLW_LIB_DEPS and add libs for programs to link 836 if test "$enable_static" = no; then 837 GLW_MESA_DEPS='-l$(GL_LIB)' 838 else 839 APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS" 840 GLW_LIB_DEPS="" 841 GLW_MESA_DEPS="" 842 fi 843fi 844AC_SUBST([GLW_LIB_DEPS]) 845AC_SUBST([GLW_MESA_DEPS]) 846 847dnl 848dnl GLUT configuration 849dnl 850if test -f "$srcdir/include/GL/glut.h"; then 851 default_glut=yes 852else 853 default_glut=no 854fi 855AC_ARG_ENABLE([glut], 856 [AS_HELP_STRING([--disable-glut], 857 [enable GLUT library @<:@default=enabled if source available@:>@])], 858 [enable_glut="$enableval"], 859 [enable_glut="$default_glut"]) 860 861dnl Can't build glut if GLU not available 862if test "x$enable_glu$enable_glut" = xnoyes; then 863 AC_MSG_WARN([Disabling glut since GLU is disabled]) 864 enable_glut=no 865fi 866dnl Don't build glut on osmesa 867if test "x$enable_glut" = xyes && test "$mesa_driver" = osmesa; then 868 AC_MSG_WARN([Disabling glut since the driver is OSMesa]) 869 enable_glut=no 870fi 871 872if test "x$enable_glut" = xyes; then 873 SRC_DIRS="$SRC_DIRS glut/glx" 874 GLUT_CFLAGS="" 875 if test "x$GCC" = xyes; then 876 GLUT_CFLAGS="-fexceptions" 877 fi 878 if test "$x11_pkgconfig" = yes; then 879 PKG_CHECK_MODULES([GLUT],[x11 xmu xi]) 880 GLUT_LIB_DEPS="$GLUT_LIBS" 881 else 882 # should check these... 883 GLUT_LIB_DEPS="$X_LIBS -lX11 -lXmu -lXi" 884 fi 885 GLUT_LIB_DEPS="$GLUT_LIB_DEPS -lm" 886 887 # If glut is available, we can build most programs 888 if test "$with_demos" = yes; then 889 PROGRAM_DIRS="$PROGRAM_DIRS demos redbook samples glsl" 890 fi 891 892 # If static, empty GLUT_LIB_DEPS and add libs for programs to link 893 if test "$enable_static" = no; then 894 GLUT_MESA_DEPS='-l$(GLU_LIB) -l$(GL_LIB)' 895 else 896 APP_LIB_DEPS="$APP_LIB_DEPS $GLUT_LIB_DEPS" 897 GLUT_LIB_DEPS="" 898 GLUT_MESA_DEPS="" 899 fi 900fi 901AC_SUBST([GLUT_LIB_DEPS]) 902AC_SUBST([GLUT_MESA_DEPS]) 903AC_SUBST([GLUT_CFLAGS]) 904 905dnl 906dnl Program library dependencies 907dnl Only libm is added here if necessary as the libraries should 908dnl be pulled in by the linker 909dnl 910if test "x$APP_LIB_DEPS" = x; then 911 APP_LIB_DEPS="-lm" 912fi 913AC_SUBST([APP_LIB_DEPS]) 914AC_SUBST([PROGRAM_DIRS]) 915 916 917dnl Restore LDFLAGS and CPPFLAGS 918LDFLAGS="$_SAVE_LDFLAGS" 919CPPFLAGS="$_SAVE_CPPFLAGS" 920 921dnl Substitute the config 922AC_CONFIG_FILES([configs/autoconf]) 923 924dnl Replace the configs/current symlink 925AC_CONFIG_COMMANDS([configs],[ 926if test -f configs/current || test -L configs/current; then 927 rm -f configs/current 928fi 929ln -s autoconf configs/current 930]) 931 932AC_OUTPUT 933 934dnl 935dnl Output some configuration info for the user 936dnl 937echo "" 938echo " prefix: $prefix" 939echo " exec_prefix: $exec_prefix" 940echo " libdir: $libdir" 941 942dnl Driver info 943echo "" 944echo " Driver: $mesa_driver" 945if echo "$DRIVER_DIRS" | grep 'osmesa' >/dev/null 2>&1; then 946 echo " OSMesa: lib$OSMESA_LIB" 947else 948 echo " OSMesa: no" 949fi 950if test "$mesa_driver" = dri; then 951 # cleanup the drivers var 952 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'` 953 echo " DRI drivers: $dri_dirs" 954 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR" 955 echo " TTM API support: $ttmapi" 956fi 957 958dnl Libraries 959echo "" 960echo " Shared libs: $enable_shared" 961echo " Static libs: $enable_static" 962echo " GLU: $enable_glu" 963echo " GLw: $enable_glw" 964echo " glut: $enable_glut" 965 966dnl Programs 967# cleanup the programs var for display 968program_dirs=`echo $PROGRAM_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'` 969if test "x$program_dirs" = x; then 970 echo " Demos: no" 971else 972 echo " Demos: $program_dirs" 973fi 974 975dnl Compiler options 976# cleanup the CFLAGS/CXXFLAGS/DEFINES vars 977cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \ 978 $SED 's/^ *//;s/ */ /;s/ *$//'` 979cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \ 980 $SED 's/^ *//;s/ */ /;s/ *$//'` 981defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'` 982echo "" 983echo " CFLAGS: $cflags" 984echo " CXXFLAGS: $cxxflags" 985echo " Macros: $defines" 986 987echo "" 988echo " Run '${MAKE-make}' to build Mesa" 989echo "" 990