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