1dnl Copyright © 2011-2014 Intel Corporation 2dnl Copyright © 2011-2014 Emil Velikov <emil.l.velikov@gmail.com> 3dnl Copyright © 2007-2010 Dan Nicholson 4dnl Copyright © 2010-2014 Marek Olšák <maraeo@gmail.com> 5dnl Copyright © 2010-2014 Christian König 6dnl Copyright © 2012-2014 Tom Stellard <tstellar@gmail.com> 7dnl Copyright © 2009-2012 Jakob Bornecrantz 8dnl Copyright © 2009-2014 Jon TURNEY 9dnl Copyright © 2011-2012 Benjamin Franzke 10dnl Copyright © 2008-2014 David Airlie 11dnl Copyright © 2009-2013 Brian Paul 12dnl 13dnl Permission is hereby granted, free of charge, to any person obtaining a 14dnl copy of this software and associated documentation files (the "Software"), 15dnl to deal in the Software without restriction, including without limitation 16dnl the rights to use, copy, modify, merge, publish, distribute, sublicense, 17dnl and/or sell copies of the Software, and to permit persons to whom the 18dnl Software is furnished to do so, subject to the following conditions: 19dnl 20dnl The above copyright notice and this permission notice (including the next 21dnl paragraph) shall be included in all copies or substantial portions of the 22dnl Software. 23dnl 24dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 25dnl IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 26dnl FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 27dnl THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 28dnl LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 29dnl FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 30dnl DEALINGS IN THE SOFTWARE. 31dnl 32dnl Process this file with autoconf to create configure. 33 34AC_PREREQ([2.60]) 35 36dnl Tell the user about autoconf.html in the --help output 37m4_divert_once([HELP_END], [ 38See docs/autoconf.html for more details on the options for Mesa.]) 39 40m4_define(MESA_VERSION, m4_normalize(m4_include(VERSION))) 41AC_INIT([Mesa], [MESA_VERSION], 42 [https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa]) 43AC_CONFIG_AUX_DIR([bin]) 44AC_CONFIG_MACRO_DIR([m4]) 45AC_CANONICAL_SYSTEM 46AM_INIT_AUTOMAKE([foreign tar-ustar dist-xz subdir-objects]) 47 48dnl We only support native Windows builds (MinGW/MSVC) through SCons. 49case "$host_os" in 50mingw*) 51 AC_MSG_ERROR([MinGW build not supported through autoconf/automake, use SCons instead]) 52 ;; 53esac 54 55# Support silent build rules, requires at least automake-1.11. Disable 56# by either passing --disable-silent-rules to configure or passing V=1 57# to make 58m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])], 59 [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])]) 60 61m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) 62 63dnl Set internal versions 64OSMESA_VERSION=8 65AC_SUBST([OSMESA_VERSION]) 66OPENCL_VERSION=1 67AC_SUBST([OPENCL_VERSION]) 68 69dnl Versions for external dependencies 70LIBDRM_REQUIRED=2.4.66 71LIBDRM_RADEON_REQUIRED=2.4.56 72LIBDRM_AMDGPU_REQUIRED=2.4.63 73LIBDRM_INTEL_REQUIRED=2.4.61 74LIBDRM_NVVIEUX_REQUIRED=2.4.66 75LIBDRM_NOUVEAU_REQUIRED=2.4.66 76LIBDRM_FREEDRENO_REQUIRED=2.4.74 77LIBDRM_VC4_REQUIRED=2.4.69 78LIBDRM_ETNAVIV_REQUIRED=2.4.74 79DRI2PROTO_REQUIRED=2.6 80DRI3PROTO_REQUIRED=1.0 81PRESENTPROTO_REQUIRED=1.0 82GLPROTO_REQUIRED=1.4.14 83LIBOMXIL_BELLAGIO_REQUIRED=0.0 84LIBVA_REQUIRED=0.38.0 85VDPAU_REQUIRED=1.1 86WAYLAND_REQUIRED=1.11 87XCB_REQUIRED=1.9.3 88XCBDRI2_REQUIRED=1.8 89XCBGLX_REQUIRED=1.8.1 90XSHMFENCE_REQUIRED=1.1 91XVMC_REQUIRED=1.0.6 92PYTHON_MAKO_REQUIRED=0.8.0 93LIBSENSORS_REQUIRED=4.0.0 94 95dnl LLVM versions 96LLVM_REQUIRED_GALLIUM=3.3.0 97LLVM_REQUIRED_OPENCL=3.6.0 98LLVM_REQUIRED_R600=3.6.0 99LLVM_REQUIRED_RADEONSI=3.6.0 100LLVM_REQUIRED_RADV=3.9.0 101LLVM_REQUIRED_SWR=3.6.0 102 103dnl Check for progs 104AC_PROG_CPP 105AC_PROG_CC 106AC_PROG_CXX 107AM_PROG_CC_C_O 108AM_PROG_AS 109AX_CHECK_GNU_MAKE 110AC_CHECK_PROGS([PYTHON2], [python2.7 python2 python]) 111AC_PROG_SED 112AC_PROG_MKDIR_P 113 114AC_SYS_LARGEFILE 115 116LT_PREREQ([2.2]) 117LT_INIT([disable-static]) 118 119AC_CHECK_PROG(RM, rm, [rm -f]) 120AC_CHECK_PROG(XXD, xxd, [xxd]) 121 122AX_PROG_BISON([], 123 AS_IF([test ! -f "$srcdir/src/compiler/glsl/glcpp/glcpp-parse.c"], 124 [AC_MSG_ERROR([bison not found - unable to compile glcpp-parse.y])])) 125AX_PROG_FLEX([], 126 AS_IF([test ! -f "$srcdir/src/compiler/glsl/glcpp/glcpp-lex.c"], 127 [AC_MSG_ERROR([flex not found - unable to compile glcpp-lex.l])])) 128 129AC_CHECK_PROG(INDENT, indent, indent, cat) 130if test "x$INDENT" != "xcat"; then 131 # Only GNU indent is supported 132 INDENT_VERSION=`indent --version | grep GNU` 133 if test $? -eq 0; then 134 AC_SUBST(INDENT_FLAGS, '-i4 -nut -br -brs -npcs -ce -TGLubyte -TGLbyte -TBool') 135 else 136 INDENT="cat" 137 fi 138fi 139 140AX_CHECK_PYTHON_MAKO_MODULE($PYTHON_MAKO_REQUIRED) 141 142if test -z "$PYTHON2"; then 143 if test ! -f "$srcdir/src/util/format_srgb.c"; then 144 AC_MSG_ERROR([Python not found - unable to generate sources]) 145 fi 146else 147 if test "x$acv_mako_found" = xno; then 148 if test ! -f "$srcdir/src/mesa/main/format_unpack.c"; then 149 AC_MSG_ERROR([Python mako module v$PYTHON_MAKO_REQUIRED or higher not found]) 150 fi 151 fi 152fi 153 154AC_PROG_INSTALL 155 156dnl We need a POSIX shell for parts of the build. Assume we have one 157dnl in most cases. 158case "$host_os" in 159solaris*) 160 # Solaris /bin/sh is too old/non-POSIX compliant 161 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh]) 162 SHELL="$POSIX_SHELL" 163 ;; 164esac 165 166dnl clang is mostly GCC-compatible, but its version is much lower, 167dnl so we have to check for it. 168AC_MSG_CHECKING([if compiling with clang]) 169 170AC_COMPILE_IFELSE( 171[AC_LANG_PROGRAM([], [[ 172#ifndef __clang__ 173 not clang 174#endif 175]])], 176[acv_mesa_CLANG=yes], [acv_mesa_CLANG=no]) 177 178AC_MSG_RESULT([$acv_mesa_CLANG]) 179 180dnl If we're using GCC, make sure that it is at least version 4.2.0. Older 181dnl versions are explictly not supported. 182GEN_ASM_OFFSETS=no 183USE_GNU99=no 184if test "x$GCC" = xyes -a "x$acv_mesa_CLANG" = xno; then 185 AC_MSG_CHECKING([whether gcc version is sufficient]) 186 major=0 187 minor=0 188 189 GCC_VERSION=`$CC -dumpversion` 190 if test $? -eq 0; then 191 GCC_VERSION_MAJOR=`echo $GCC_VERSION | cut -d. -f1` 192 GCC_VERSION_MINOR=`echo $GCC_VERSION | cut -d. -f2` 193 fi 194 195 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 2 ; then 196 AC_MSG_RESULT([no]) 197 AC_MSG_ERROR([If using GCC, version 4.2.0 or later is required.]) 198 else 199 AC_MSG_RESULT([yes]) 200 fi 201 202 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6 ; then 203 USE_GNU99=yes 204 fi 205 if test "x$cross_compiling" = xyes; then 206 GEN_ASM_OFFSETS=yes 207 fi 208fi 209 210dnl We don't support building Mesa with Sun C compiler 211dnl https://bugs.freedesktop.org/show_bug.cgi?id=93189 212AC_CHECK_DECL([__SUNPRO_C], [SUNCC=yes], [SUNCC=no]) 213if test "x$SUNCC" = xyes; then 214 AC_MSG_ERROR([Building with Sun C compiler is not supported, use GCC instead.]) 215fi 216 217dnl Check for compiler builtins 218AX_GCC_BUILTIN([__builtin_bswap32]) 219AX_GCC_BUILTIN([__builtin_bswap64]) 220AX_GCC_BUILTIN([__builtin_clz]) 221AX_GCC_BUILTIN([__builtin_clzll]) 222AX_GCC_BUILTIN([__builtin_ctz]) 223AX_GCC_BUILTIN([__builtin_expect]) 224AX_GCC_BUILTIN([__builtin_ffs]) 225AX_GCC_BUILTIN([__builtin_ffsll]) 226AX_GCC_BUILTIN([__builtin_popcount]) 227AX_GCC_BUILTIN([__builtin_popcountll]) 228AX_GCC_BUILTIN([__builtin_unreachable]) 229 230AX_GCC_FUNC_ATTRIBUTE([const]) 231AX_GCC_FUNC_ATTRIBUTE([flatten]) 232AX_GCC_FUNC_ATTRIBUTE([format]) 233AX_GCC_FUNC_ATTRIBUTE([malloc]) 234AX_GCC_FUNC_ATTRIBUTE([packed]) 235AX_GCC_FUNC_ATTRIBUTE([pure]) 236AX_GCC_FUNC_ATTRIBUTE([returns_nonnull]) 237AX_GCC_FUNC_ATTRIBUTE([unused]) 238AX_GCC_FUNC_ATTRIBUTE([visibility]) 239AX_GCC_FUNC_ATTRIBUTE([warn_unused_result]) 240AX_GCC_FUNC_ATTRIBUTE([weak]) 241AX_GCC_FUNC_ATTRIBUTE([alias]) 242 243AM_CONDITIONAL([GEN_ASM_OFFSETS], test "x$GEN_ASM_OFFSETS" = xyes) 244 245dnl Make sure the pkg-config macros are defined 246m4_ifndef([PKG_PROG_PKG_CONFIG], 247 [m4_fatal([Could not locate the pkg-config autoconf macros. 248 These are usually located in /usr/share/aclocal/pkg.m4. If your macros 249 are in a different location, try setting the environment variable 250 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])]) 251PKG_PROG_PKG_CONFIG() 252 253dnl LIB_DIR - library basename 254LIB_DIR=`echo $libdir | $SED 's%.*/%%'` 255AC_SUBST([LIB_DIR]) 256 257dnl Cache LDFLAGS and CPPFLAGS so we can add to them and restore later 258_SAVE_LDFLAGS="$LDFLAGS" 259_SAVE_CPPFLAGS="$CPPFLAGS" 260 261dnl Compiler macros 262DEFINES="-D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS" 263AC_SUBST([DEFINES]) 264android=no 265case "$host_os" in 266*-android) 267 android=yes 268 ;; 269linux*|*-gnu*|gnu*|cygwin*) 270 DEFINES="$DEFINES -D_GNU_SOURCE" 271 ;; 272solaris*) 273 DEFINES="$DEFINES -DSVR4" 274 ;; 275esac 276 277AM_CONDITIONAL(HAVE_ANDROID, test "x$android" = xyes) 278 279dnl Add flags for gcc and g++ 280if test "x$GCC" = xyes; then 281 CFLAGS="$CFLAGS -Wall" 282 283 if test "x$USE_GNU99" = xyes; then 284 CFLAGS="$CFLAGS -std=gnu99" 285 else 286 CFLAGS="$CFLAGS -std=c99" 287 fi 288 289 # Enable -Werror=implicit-function-declaration and 290 # -Werror=missing-prototypes, if available, or otherwise, just 291 # -Wmissing-prototypes. This is particularly useful to avoid 292 # generating a loadable driver module that has undefined symbols. 293 save_CFLAGS="$CFLAGS" 294 AC_MSG_CHECKING([whether $CC supports -Werror=missing-prototypes]) 295 CFLAGS="$CFLAGS -Werror=implicit-function-declaration" 296 CFLAGS="$CFLAGS -Werror=missing-prototypes" 297 AC_LINK_IFELSE([AC_LANG_PROGRAM()], 298 AC_MSG_RESULT([yes]), 299 [CFLAGS="$save_CFLAGS -Wmissing-prototypes"; 300 AC_MSG_RESULT([no])]); 301 302 # Enable -fvisibility=hidden if using a gcc that supports it 303 save_CFLAGS="$CFLAGS" 304 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden]) 305 VISIBILITY_CFLAGS="-fvisibility=hidden" 306 CFLAGS="$CFLAGS $VISIBILITY_CFLAGS" 307 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]), 308 [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]); 309 310 # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed. 311 CFLAGS=$save_CFLAGS 312 313 # We don't want floating-point math functions to set errno or trap 314 CFLAGS="$CFLAGS -fno-math-errno -fno-trapping-math" 315 316 # Flags to help ensure that certain portions of the code -- and only those 317 # portions -- can be built with MSVC: 318 # - src/util, src/gallium/auxiliary, rc/gallium/drivers/llvmpipe, and 319 # - non-Linux/Posix OpenGL portions needs to build on MSVC 2013 (which 320 # supports most of C99) 321 # - the rest has no compiler compiler restrictions 322 MSVC2013_COMPAT_CFLAGS="-Werror=pointer-arith" 323 MSVC2013_COMPAT_CXXFLAGS="-Werror=pointer-arith" 324 325 # Enable -Werror=vla if compiler supports it 326 save_CFLAGS="$CFLAGS" 327 AC_MSG_CHECKING([whether $CC supports -Werror=vla]) 328 CFLAGS="$CFLAGS -Werror=vla" 329 AC_LINK_IFELSE([AC_LANG_PROGRAM()], 330 [MSVC2013_COMPAT_CFLAGS="$MSVC2013_COMPAT_CFLAGS -Werror=vla"; 331 MSVC2013_COMPAT_CXXFLAGS="$MSVC2013_COMPAT_CXXFLAGS -Werror=vla"; 332 AC_MSG_RESULT([yes])], 333 AC_MSG_RESULT([no])); 334 CFLAGS="$save_CFLAGS" 335fi 336if test "x$GXX" = xyes; then 337 CXXFLAGS="$CXXFLAGS -Wall" 338 339 # Enable -fvisibility=hidden if using a gcc that supports it 340 save_CXXFLAGS="$CXXFLAGS" 341 AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden]) 342 VISIBILITY_CXXFLAGS="-fvisibility=hidden" 343 CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS" 344 AC_LANG_PUSH([C++]) 345 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]), 346 [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]); 347 AC_LANG_POP([C++]) 348 349 # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed. 350 CXXFLAGS=$save_CXXFLAGS 351 352 # We don't want floating-point math functions to set errno or trap 353 CXXFLAGS="$CXXFLAGS -fno-math-errno -fno-trapping-math" 354fi 355 356AC_SUBST([MSVC2013_COMPAT_CFLAGS]) 357AC_SUBST([MSVC2013_COMPAT_CXXFLAGS]) 358 359dnl even if the compiler appears to support it, using visibility attributes isn't 360dnl going to do anything useful currently on cygwin apart from emit lots of warnings 361case "$host_os" in 362cygwin*) 363 VISIBILITY_CFLAGS="" 364 VISIBILITY_CXXFLAGS="" 365 ;; 366esac 367 368AC_SUBST([VISIBILITY_CFLAGS]) 369AC_SUBST([VISIBILITY_CXXFLAGS]) 370 371dnl 372dnl Optional flags, check for compiler support 373dnl 374SSE41_CFLAGS="-msse4.1" 375dnl Code compiled by GCC with -msse* assumes a 16 byte aligned 376dnl stack, but on x86-32 such alignment is not guaranteed. 377case "$target_cpu" in 378i?86) 379 SSE41_CFLAGS="$SSE41_CFLAGS -mstackrealign" 380 ;; 381esac 382save_CFLAGS="$CFLAGS" 383CFLAGS="$SSE41_CFLAGS $CFLAGS" 384AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ 385#include <smmintrin.h> 386int param; 387int main () { 388 __m128i a = _mm_set1_epi32 (param), b = _mm_set1_epi32 (param + 1), c; 389 c = _mm_max_epu32(a, b); 390 return _mm_cvtsi128_si32(c); 391}]])], SSE41_SUPPORTED=1) 392CFLAGS="$save_CFLAGS" 393if test "x$SSE41_SUPPORTED" = x1; then 394 DEFINES="$DEFINES -DUSE_SSE41" 395fi 396AM_CONDITIONAL([SSE41_SUPPORTED], [test x$SSE41_SUPPORTED = x1]) 397AC_SUBST([SSE41_CFLAGS], $SSE41_CFLAGS) 398 399dnl Check for new-style atomic builtins 400AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ 401int main() { 402 int n; 403 return __atomic_load_n(&n, __ATOMIC_ACQUIRE); 404}]])], GCC_ATOMIC_BUILTINS_SUPPORTED=1) 405if test "x$GCC_ATOMIC_BUILTINS_SUPPORTED" = x1; then 406 DEFINES="$DEFINES -DUSE_GCC_ATOMIC_BUILTINS" 407fi 408AM_CONDITIONAL([GCC_ATOMIC_BUILTINS_SUPPORTED], [test x$GCC_ATOMIC_BUILTINS_SUPPORTED = x1]) 409 410dnl Check for Endianness 411AC_C_BIGENDIAN( 412 little_endian=no, 413 little_endian=yes, 414 little_endian=no, 415 little_endian=no 416) 417 418dnl Check for POWER8 Architecture 419PWR8_CFLAGS="-mpower8-vector" 420have_pwr8_intrinsics=no 421AC_MSG_CHECKING(whether gcc supports -mpower8-vector) 422save_CFLAGS=$CFLAGS 423CFLAGS="$PWR8_CFLAGS $CFLAGS" 424AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ 425#if defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8)) 426#error "Need GCC >= 4.8 for sane POWER8 support" 427#endif 428#include <altivec.h> 429int main () { 430 vector unsigned char r; 431 vector unsigned int v = vec_splat_u32 (1); 432 r = __builtin_vec_vgbbd ((vector unsigned char) v); 433 return 0; 434}]])], have_pwr8_intrinsics=yes) 435CFLAGS=$save_CFLAGS 436 437AC_ARG_ENABLE(pwr8, 438 [AC_HELP_STRING([--disable-pwr8-inst], 439 [disable POWER8-specific instructions])], 440 [enable_pwr8=$enableval], [enable_pwr8=auto]) 441 442if test "x$enable_pwr8" = xno ; then 443 have_pwr8_intrinsics=disabled 444fi 445 446if test $have_pwr8_intrinsics = yes && test $little_endian = yes ; then 447 DEFINES="$DEFINES -D_ARCH_PWR8" 448 CXXFLAGS="$CXXFLAGS $PWR8_CFLAGS" 449 CFLAGS="$CFLAGS $PWR8_CFLAGS" 450else 451 PWR8_CFLAGS= 452fi 453 454AC_MSG_RESULT($have_pwr8_intrinsics) 455if test "x$enable_pwr8" = xyes && test $have_pwr8_intrinsics = no ; then 456 AC_MSG_ERROR([POWER8 compiler support not detected]) 457fi 458 459if test $have_pwr8_intrinsics = yes && test $little_endian = no ; then 460 AC_MSG_WARN([POWER8 optimization is enabled only on POWER8 Little-Endian]) 461fi 462 463AC_SUBST([PWR8_CFLAGS], $PWR8_CFLAGS) 464 465dnl Can't have static and shared libraries, default to static if user 466dnl explicitly requested. If both disabled, set to static since shared 467dnl was explicitly requested. 468case "x$enable_static$enable_shared" in 469xyesyes) 470 AC_MSG_ERROR([Cannot enable both static and shared. Building using --enable-shared is strongly recommended]) 471 ;; 472xnono) 473 AC_MSG_ERROR([Cannot disable both static and shared. Building using --enable-shared is strongly recommended]) 474 ;; 475esac 476 477AM_CONDITIONAL(BUILD_SHARED, test "x$enable_shared" = xyes) 478 479dnl 480dnl other compiler options 481dnl 482AC_ARG_ENABLE([debug], 483 [AS_HELP_STRING([--enable-debug], 484 [use debug compiler flags and macros @<:@default=disabled@:>@])], 485 [enable_debug="$enableval"], 486 [enable_debug=no] 487) 488 489AC_ARG_ENABLE([profile], 490 [AS_HELP_STRING([--enable-profile], 491 [enable profiling of code @<:@default=disabled@:>@])], 492 [enable_profile="$enableval"], 493 [enable_profile=no] 494) 495 496if test "x$enable_profile" = xyes; then 497 DEFINES="$DEFINES -DPROFILE" 498 if test "x$GCC" = xyes; then 499 CFLAGS="$CFLAGS -fno-omit-frame-pointer" 500 fi 501 if test "x$GXX" = xyes; then 502 CXXFLAGS="$CXXFLAGS -fno-omit-frame-pointer" 503 fi 504fi 505 506if test "x$enable_debug" = xyes; then 507 DEFINES="$DEFINES -DDEBUG" 508 if test "x$enable_profile" = xyes; then 509 AC_MSG_WARN([Debug and Profile are enabled at the same time]) 510 fi 511 if test "x$GCC" = xyes; then 512 if ! echo "$CFLAGS" | grep -q -e '-g'; then 513 CFLAGS="$CFLAGS -g" 514 fi 515 if ! echo "$CFLAGS" | grep -q -e '-O'; then 516 CFLAGS="$CFLAGS -O0" 517 fi 518 fi 519 if test "x$GXX" = xyes; then 520 if ! echo "$CXXFLAGS" | grep -q -e '-g'; then 521 CXXFLAGS="$CXXFLAGS -g" 522 fi 523 if ! echo "$CXXFLAGS" | grep -q -e '-O'; then 524 CXXFLAGS="$CXXFLAGS -O0" 525 fi 526 fi 527else 528 DEFINES="$DEFINES -DNDEBUG" 529fi 530 531DEFAULT_GL_LIB_NAME=GL 532 533dnl 534dnl Check if linker supports -Bsymbolic 535dnl 536save_LDFLAGS=$LDFLAGS 537LDFLAGS="$LDFLAGS -Wl,-Bsymbolic" 538AC_MSG_CHECKING([if ld supports -Bsymbolic]) 539AC_LINK_IFELSE( 540 [AC_LANG_SOURCE([int main() { return 0;}])], 541 [AC_MSG_RESULT([yes]) 542 BSYMBOLIC="-Wl,-Bsymbolic";], 543 [AC_MSG_RESULT([no]) 544 BSYMBOLIC="";]) 545LDFLAGS=$save_LDFLAGS 546 547AC_SUBST([BSYMBOLIC]) 548 549dnl 550dnl Check if linker supports garbage collection 551dnl 552save_LDFLAGS=$LDFLAGS 553LDFLAGS="$LDFLAGS -Wl,--gc-sections" 554AC_MSG_CHECKING([whether ld supports --gc-sections]) 555AC_LINK_IFELSE( 556 [AC_LANG_SOURCE([static char UnusedFunc() { return 5; } int main() { return 0;}])], 557 [AC_MSG_RESULT([yes]) 558 GC_SECTIONS="-Wl,--gc-sections";], 559 [AC_MSG_RESULT([no]) 560 GC_SECTIONS="";]) 561LDFLAGS=$save_LDFLAGS 562 563AC_SUBST([GC_SECTIONS]) 564 565dnl 566dnl OpenBSD does not have DT_NEEDED entries for libc by design 567dnl so when these flags are passed to ld via libtool the checks will fail 568dnl 569case "$host_os" in 570openbsd* | darwin* ) 571 LD_NO_UNDEFINED="" ;; 572*) 573 LD_NO_UNDEFINED="-Wl,--no-undefined" ;; 574esac 575 576AC_SUBST([LD_NO_UNDEFINED]) 577 578dnl 579dnl Check if linker supports version scripts 580dnl 581AC_MSG_CHECKING([if the linker supports version-scripts]) 582save_LDFLAGS=$LDFLAGS 583LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map" 584cat > conftest.map <<EOF 585VERSION_1 { 586 global: 587 main; 588 589 local: 590 *; 591}; 592EOF 593AC_LINK_IFELSE( 594 [AC_LANG_SOURCE([int main() { return 0;}])], 595 [have_ld_version_script=yes;AC_MSG_RESULT(yes)], 596 [have_ld_version_script=no; AC_MSG_RESULT(no)]) 597LDFLAGS=$save_LDFLAGS 598AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes") 599 600dnl 601dnl Check if linker supports dynamic list files 602dnl 603AC_MSG_CHECKING([if the linker supports --dynamic-list]) 604save_LDFLAGS=$LDFLAGS 605LDFLAGS="$LDFLAGS -Wl,--dynamic-list=conftest.dyn" 606cat > conftest.dyn <<EOF 607{ 608 radeon_drm_winsys_create; 609}; 610EOF 611AC_LINK_IFELSE( 612 [AC_LANG_SOURCE([int main() { return 0;}])], 613 [have_ld_dynamic_list=yes;AC_MSG_RESULT(yes)], 614 [have_ld_dynamic_list=no; AC_MSG_RESULT(no)]) 615LDFLAGS=$save_LDFLAGS 616AM_CONDITIONAL(HAVE_LD_DYNAMIC_LIST, test "$have_ld_dynamic_list" = "yes") 617 618dnl 619dnl compatibility symlinks 620dnl 621case "$host_os" in 622linux* ) 623 HAVE_COMPAT_SYMLINKS=yes ;; 624* ) 625 HAVE_COMPAT_SYMLINKS=no ;; 626esac 627 628AM_CONDITIONAL(HAVE_COMPAT_SYMLINKS, test "x$HAVE_COMPAT_SYMLINKS" = xyes) 629 630DEFAULT_GL_LIB_NAME=GL 631 632dnl 633dnl Libglvnd configuration 634dnl 635AC_ARG_ENABLE([libglvnd], 636 [AS_HELP_STRING([--enable-libglvnd], 637 [Build for libglvnd @<:@default=disabled@:>@])], 638 [enable_libglvnd="$enableval"], 639 [enable_libglvnd=no]) 640AM_CONDITIONAL(USE_LIBGLVND_GLX, test "x$enable_libglvnd" = xyes) 641#AM_COND_IF([USE_LIBGLVND_GLX], [DEFINES="${DEFINES} -DUSE_LIBGLVND_GLX=1"]) 642if test "x$enable_libglvnd" = xyes ; then 643 DEFINES="${DEFINES} -DUSE_LIBGLVND_GLX=1" 644 DEFAULT_GL_LIB_NAME=GLX_mesa 645fi 646 647dnl 648dnl library names 649dnl 650dnl Unfortunately we need to do a few things that libtool can't help us with, 651dnl so we need some knowledge of shared library filenames: 652dnl 653dnl LIB_EXT is the extension used when creating symlinks for alternate 654dnl filenames for a shared library which will be dynamically loaded 655dnl 656dnl IMP_LIB_EXT is the extension used when checking for the presence of a 657dnl the file for a shared library we wish to link with 658dnl 659case "$host_os" in 660darwin* ) 661 LIB_EXT='dylib' 662 IMP_LIB_EXT=$LIB_EXT 663 ;; 664cygwin* ) 665 LIB_EXT='dll' 666 IMP_LIB_EXT='dll.a' 667 ;; 668aix* ) 669 LIB_EXT='a' 670 IMP_LIB_EXT=$LIB_EXT 671 ;; 672* ) 673 LIB_EXT='so' 674 IMP_LIB_EXT=$LIB_EXT 675 ;; 676esac 677 678AC_SUBST([LIB_EXT]) 679 680AC_ARG_WITH([gl-lib-name], 681 [AS_HELP_STRING([--with-gl-lib-name@<:@=NAME@:>@], 682 [specify GL library name @<:@default=GL@:>@])], 683 [GL_LIB=$withval], 684 [GL_LIB="$DEFAULT_GL_LIB_NAME"]) 685AC_ARG_WITH([osmesa-lib-name], 686 [AS_HELP_STRING([--with-osmesa-lib-name@<:@=NAME@:>@], 687 [specify OSMesa library name @<:@default=OSMesa@:>@])], 688 [OSMESA_LIB=$withval], 689 [OSMESA_LIB=OSMesa]) 690AS_IF([test "x$GL_LIB" = xyes], [GL_LIB="$DEFAULT_GL_LIB_NAME"]) 691AS_IF([test "x$OSMESA_LIB" = xyes], [OSMESA_LIB=OSMesa]) 692 693dnl 694dnl Mangled Mesa support 695dnl 696AC_ARG_ENABLE([mangling], 697 [AS_HELP_STRING([--enable-mangling], 698 [enable mangled symbols and library name @<:@default=disabled@:>@])], 699 [enable_mangling="${enableval}"], 700 [enable_mangling=no] 701) 702if test "x${enable_mangling}" = "xyes" ; then 703 DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE" 704 GL_LIB="Mangled${GL_LIB}" 705 OSMESA_LIB="Mangled${OSMESA_LIB}" 706fi 707AC_SUBST([GL_LIB]) 708AC_SUBST([OSMESA_LIB]) 709 710dnl 711dnl potentially-infringing-but-nobody-knows-for-sure stuff 712dnl 713AC_ARG_ENABLE([texture-float], 714 [AS_HELP_STRING([--enable-texture-float], 715 [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])], 716 [enable_texture_float="$enableval"], 717 [enable_texture_float=no] 718) 719if test "x$enable_texture_float" = xyes; then 720 AC_MSG_WARN([Floating-point textures enabled.]) 721 AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.]) 722 DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED" 723fi 724 725dnl 726dnl Arch/platform-specific settings 727dnl 728AC_ARG_ENABLE([asm], 729 [AS_HELP_STRING([--disable-asm], 730 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])], 731 [enable_asm="$enableval"], 732 [enable_asm=yes] 733) 734asm_arch="" 735AC_MSG_CHECKING([whether to enable assembly]) 736test "x$enable_asm" = xno && AC_MSG_RESULT([no]) 737# disable if cross compiling on x86/x86_64 since we must run gen_matypes 738if test "x$enable_asm" = xyes -a "x$cross_compiling" = xyes; then 739 case "$host_cpu" in 740 i?86 | x86_64 | amd64) 741 if test "x$host_cpu" != "x$target_cpu"; then 742 enable_asm=no 743 AC_MSG_RESULT([no, cross compiling]) 744 fi 745 ;; 746 esac 747fi 748# check for supported arches 749if test "x$enable_asm" = xyes; then 750 case "$host_cpu" in 751 i?86) 752 case "$host_os" in 753 linux* | *freebsd* | dragonfly* | *netbsd* | openbsd* | gnu*) 754 asm_arch=x86 755 ;; 756 esac 757 ;; 758 x86_64|amd64) 759 case "$host_os" in 760 linux* | *freebsd* | dragonfly* | *netbsd* | openbsd*) 761 asm_arch=x86_64 762 ;; 763 esac 764 ;; 765 sparc*) 766 case "$host_os" in 767 linux*) 768 asm_arch=sparc 769 ;; 770 esac 771 ;; 772 esac 773 774 case "$asm_arch" in 775 x86) 776 DEFINES="$DEFINES -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM" 777 AC_MSG_RESULT([yes, x86]) 778 ;; 779 x86_64|amd64) 780 DEFINES="$DEFINES -DUSE_X86_64_ASM" 781 AC_MSG_RESULT([yes, x86_64]) 782 ;; 783 sparc) 784 DEFINES="$DEFINES -DUSE_SPARC_ASM" 785 AC_MSG_RESULT([yes, sparc]) 786 ;; 787 *) 788 AC_MSG_RESULT([no, platform not supported]) 789 ;; 790 esac 791fi 792 793AC_HEADER_MAJOR 794AC_CHECK_HEADER([xlocale.h], [DEFINES="$DEFINES -DHAVE_XLOCALE_H"]) 795AC_CHECK_HEADER([sys/sysctl.h], [DEFINES="$DEFINES -DHAVE_SYS_SYSCTL_H"]) 796AC_CHECK_FUNC([strtof], [DEFINES="$DEFINES -DHAVE_STRTOF"]) 797AC_CHECK_FUNC([mkostemp], [DEFINES="$DEFINES -DHAVE_MKOSTEMP"]) 798 799dnl Check to see if dlopen is in default libraries (like Solaris, which 800dnl has it in libc), or if libdl is needed to get it. 801AC_CHECK_FUNC([dlopen], [DEFINES="$DEFINES -DHAVE_DLOPEN"], 802 [AC_CHECK_LIB([dl], [dlopen], 803 [DEFINES="$DEFINES -DHAVE_DLOPEN"; DLOPEN_LIBS="-ldl"])]) 804AC_SUBST([DLOPEN_LIBS]) 805 806dnl Check if that library also has dladdr 807save_LIBS="$LIBS" 808LIBS="$LIBS $DLOPEN_LIBS" 809AC_CHECK_FUNCS([dladdr]) 810LIBS="$save_LIBS" 811 812case "$host_os" in 813darwin*) 814 ;; 815*) 816 AC_CHECK_FUNCS([clock_gettime], [CLOCK_LIB=], 817 [AC_CHECK_LIB([rt], [clock_gettime], [CLOCK_LIB=-lrt], 818 [AC_MSG_ERROR([Could not find clock_gettime])])]) 819 AC_SUBST([CLOCK_LIB]) 820 ;; 821esac 822 823dnl See if posix_memalign is available 824AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"]) 825 826dnl Check for pthreads 827AX_PTHREAD 828if test "x$ax_pthread_ok" = xno; then 829 AC_MSG_ERROR([Building mesa on this platform requires pthreads]) 830fi 831dnl AX_PTHREADS leaves PTHREAD_LIBS empty for gcc and sets PTHREAD_CFLAGS 832dnl to -pthread, which causes problems if we need -lpthread to appear in 833dnl pkgconfig files. Since Android doesn't have a pthread lib, this check 834dnl is not valid for that platform. 835if test "x$android" = xno; then 836 test -z "$PTHREAD_LIBS" && PTHREAD_LIBS="-lpthread" 837fi 838 839dnl pthread-stubs is mandatory on targets where it exists 840case "$host_os" in 841cygwin* ) 842 pthread_stubs_possible="no" 843 ;; 844* ) 845 pthread_stubs_possible="yes" 846 ;; 847esac 848 849if test "x$pthread_stubs_possible" = xyes; then 850 PKG_CHECK_MODULES(PTHREADSTUBS, pthread-stubs) 851 AC_SUBST(PTHREADSTUBS_CFLAGS) 852 AC_SUBST(PTHREADSTUBS_LIBS) 853fi 854 855dnl SELinux awareness. 856AC_ARG_ENABLE([selinux], 857 [AS_HELP_STRING([--enable-selinux], 858 [Build SELinux-aware Mesa @<:@default=disabled@:>@])], 859 [MESA_SELINUX="$enableval"], 860 [MESA_SELINUX=no]) 861if test "x$enable_selinux" = "xyes"; then 862 PKG_CHECK_MODULES([SELINUX], [libselinux], [], 863 [AC_CHECK_HEADER([selinux/selinux.h],[], 864 [AC_MSG_ERROR([SELinux headers not found])]) 865 AC_CHECK_LIB([selinux],[is_selinux_enabled],[], 866 [AC_MSG_ERROR([SELinux library not found])]) 867 SELINUX_LIBS="-lselinux"]) 868 DEFINES="$DEFINES -DMESA_SELINUX" 869fi 870AC_SUBST([SELINUX_CFLAGS]) 871AC_SUBST([SELINUX_LIBS]) 872 873dnl 874dnl LLVM 875dnl 876AC_ARG_ENABLE([llvm-shared-libs], 877 [AS_HELP_STRING([--enable-llvm-shared-libs], 878 [link with LLVM shared libraries @<:@default=enabled@:>@])], 879 [enable_llvm_shared_libs="$enableval"], 880 [enable_llvm_shared_libs=yes]) 881 882AC_ARG_WITH([llvm-prefix], 883 [AS_HELP_STRING([--with-llvm-prefix], 884 [Prefix for LLVM installations in non-standard locations])], 885 [llvm_prefix="$withval"], 886 [llvm_prefix='']) 887 888PKG_CHECK_MODULES([LIBELF], [libelf], [have_libelf=yes], [have_libelf=no]) 889if test "x$have_libelf" = xno; then 890 LIBELF_LIBS='' 891 LIBELF_CFLAGS='' 892 AC_CHECK_LIB([elf], [elf_memory], [have_libelf=yes;LIBELF_LIBS=-lelf], [have_libelf=no]) 893 AC_SUBST([LIBELF_LIBS]) 894 AC_SUBST([LIBELF_CFLAGS]) 895fi 896 897if test -z "$LLVM_CONFIG"; then 898 if test -n "$llvm_prefix"; then 899 AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no], ["$llvm_prefix/bin"]) 900 else 901 AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no]) 902 fi 903fi 904 905llvm_add_component() { 906 new_llvm_component=$1 907 driver_name=$2 908 909 if $LLVM_CONFIG --components | grep -iqw $new_llvm_component ; then 910 LLVM_COMPONENTS="${LLVM_COMPONENTS} ${new_llvm_component}" 911 else 912 AC_MSG_ERROR([LLVM component '$new_llvm_component' not enabled in your LLVM build. Required by $driver_name.]) 913 fi 914} 915 916llvm_add_default_components() { 917 driver_name=$1 918 919 # Required default components 920 llvm_add_component "bitwriter" $driver_name 921 llvm_add_component "engine" $driver_name 922 llvm_add_component "mcdisassembler" $driver_name 923 llvm_add_component "mcjit" $driver_name 924 925 # Optional default components 926 if $LLVM_CONFIG --components | grep -iqw inteljitevents ; then 927 LLVM_COMPONENTS="$LLVM_COMPONENTS inteljitevents" 928 fi 929} 930 931llvm_add_target() { 932 new_llvm_target=$1 933 driver_name=$2 934 935 if $LLVM_CONFIG --targets-built | grep -iqw $new_llvm_target ; then 936 llvm_add_component $new_llvm_target $driver_name 937 else 938 AC_MSG_ERROR([LLVM target '$new_llvm_target' not enabled in your LLVM build. Required by $driver_name.]) 939 fi 940} 941 942# Call this inside ` ` to get the return value. 943# $1 is the llvm-config command with arguments. 944strip_unwanted_llvm_flags() { 945 # Use \> (marks the end of the word) 946 echo " `$1`" | sed \ 947 -e 's/\s\+-m\S*//g' \ 948 -e 's/\s\+-DNDEBUG\>//g' \ 949 -e 's/\s\+-D_GNU_SOURCE\>//g' \ 950 -e 's/\s\+-pedantic\>//g' \ 951 -e 's/\s\+-W\S*//g' \ 952 -e 's/\s\+-O\S*//g' \ 953 -e 's/\s\+-g\S*//g' \ 954 -e 's/-fno-rtti\>/-Fno-rtti/g' \ 955 -e 's/\s\+-f\S*//g' \ 956 -e 's/-Fno-rtti\>/-fno-rtti/g' \ 957 -e 's/^ //' 958} 959 960llvm_set_environment_variables() { 961 if test "x$LLVM_CONFIG" != xno; then 962 LLVM_VERSION=`$LLVM_CONFIG --version | egrep -o '^[[0-9.]]+'` 963 LLVM_BINDIR=`$LLVM_CONFIG --bindir` 964 LLVM_CPPFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cppflags"` 965 LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir` 966 LLVM_LIBDIR=`$LLVM_CONFIG --libdir` 967 968 # We need to respect LLVM_CPPFLAGS when compiling LLVM headers. 969 save_CFLAGS="$CFLAGS" 970 CFLAGS="$CFLAGS $LLVM_CPPFLAGS" 971 972 AC_COMPUTE_INT([LLVM_VERSION_MAJOR], [LLVM_VERSION_MAJOR], 973 [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"]) 974 AC_COMPUTE_INT([LLVM_VERSION_MINOR], [LLVM_VERSION_MINOR], 975 [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"]) 976 AC_COMPUTE_INT([LLVM_VERSION_PATCH], [LLVM_VERSION_PATCH], 977 [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"]) 978 979 CFLAGS="$save_CFLAGS" 980 981 # Only needed for LLVM < 3.6.0 982 if test -z "$LLVM_VERSION_PATCH"; then 983 LLVM_VERSION_PATCH=0 984 fi 985 986 if test "$LLVM_VERSION_MINOR" -lt 10; then 987 LLVM_VERSION_INT="${LLVM_VERSION_MAJOR}0${LLVM_VERSION_MINOR}" 988 else 989 LLVM_VERSION_INT="${LLVM_VERSION_MAJOR}${LLVM_VERSION_MINOR}" 990 fi 991 992 FOUND_LLVM=yes 993 else 994 FOUND_LLVM=no 995 LLVM_VERSION_INT=0 996 fi 997} 998 999require_llvm() { 1000 if test "x$enable_gallium_llvm" != "xyes"; then 1001 AC_MSG_ERROR([--enable-gallium-llvm is required when building $1]) 1002 fi 1003} 1004 1005llvm_require_version() { 1006 require_llvm $2 1007 1008 llvm_target_version_major=`echo $1 | cut -d. -f1 | egrep -o '^[[0-9]]+'` 1009 llvm_target_version_minor=`echo $1 | cut -d. -f2 | egrep -o '^[[0-9]]+'` 1010 llvm_target_version_patch=`echo $1 | cut -d. -f3 | egrep -o '^[[0-9]]+'` 1011 1012 if test "$LLVM_VERSION_MAJOR" -gt "$llvm_target_version_major"; then 1013 # major > required major 1014 # --> OK 1015 return 1016 fi 1017 1018 if test "$LLVM_VERSION_MAJOR" -eq "$llvm_target_version_major"; then 1019 if test "$LLVM_VERSION_MINOR" -gt "$llvm_target_version_minor"; then 1020 # major = required major and 1021 # minor > required minor 1022 # --> OK 1023 return 1024 else 1025 if test "$LLVM_VERSION_MINOR" -eq "$llvm_target_version_minor"; then 1026 if test "$LLVM_VERSION_PATCH" -ge "$llvm_target_version_patch"; then 1027 # major = required major and 1028 # minor = required minor and 1029 # patch >= required patch 1030 # --> OK 1031 return 1032 fi 1033 fi 1034 fi 1035 fi 1036 1037 AC_MSG_ERROR([LLVM $1 or newer is required for $2]) 1038} 1039 1040radeon_llvm_check() { 1041 if test ${LLVM_VERSION_INT} -lt 307; then 1042 amdgpu_llvm_target_name='r600' 1043 else 1044 amdgpu_llvm_target_name='amdgpu' 1045 fi 1046 1047 llvm_require_version $* 1048 1049 llvm_add_target $amdgpu_llvm_target_name $2 1050 1051 llvm_add_default_components $2 1052 llvm_add_component "bitreader" $2 1053 llvm_add_component "ipo" $2 1054 1055 NEED_RADEON_LLVM=yes 1056 if test "x$have_libelf" != xyes; then 1057 AC_MSG_ERROR([$1 requires libelf when using llvm]) 1058 fi 1059} 1060 1061llvm_set_environment_variables 1062 1063AC_SUBST([MESA_LLVM]) 1064AC_SUBST([LLVM_BINDIR]) 1065AC_SUBST([LLVM_CFLAGS]) 1066AC_SUBST([LLVM_CPPFLAGS]) 1067AC_SUBST([LLVM_CXXFLAGS]) 1068AC_SUBST([LLVM_LIBDIR]) 1069AC_SUBST([LLVM_LIBS]) 1070AC_SUBST([LLVM_LDFLAGS]) 1071AC_SUBST([LLVM_INCLUDEDIR]) 1072AC_SUBST([LLVM_VERSION]) 1073 1074dnl Options for APIs 1075AC_ARG_ENABLE([opengl], 1076 [AS_HELP_STRING([--disable-opengl], 1077 [disable support for standard OpenGL API @<:@default=enabled@:>@])], 1078 [enable_opengl="$enableval"], 1079 [enable_opengl=yes]) 1080AC_ARG_ENABLE([gles1], 1081 [AS_HELP_STRING([--disable-gles1], 1082 [disable support for OpenGL ES 1.x API @<:@default=enabled@:>@])], 1083 [enable_gles1="$enableval"], 1084 [enable_gles1=yes]) 1085AC_ARG_ENABLE([gles2], 1086 [AS_HELP_STRING([--disable-gles2], 1087 [disable support for OpenGL ES 2.x API @<:@default=enabled@:>@])], 1088 [enable_gles2="$enableval"], 1089 [enable_gles2=yes]) 1090 1091AC_ARG_ENABLE([dri], 1092 [AS_HELP_STRING([--enable-dri], 1093 [enable DRI modules @<:@default=enabled@:>@])], 1094 [enable_dri="$enableval"], 1095 [enable_dri=yes]) 1096 1097AC_ARG_ENABLE([gallium-extra-hud], 1098 [AS_HELP_STRING([--enable-gallium-extra-hud], 1099 [enable HUD block/NIC I/O HUD stats support @<:@default=disabled@:>@])], 1100 [enable_gallium_extra_hud="$enableval"], 1101 [enable_gallium_extra_hud=no]) 1102AM_CONDITIONAL(HAVE_GALLIUM_EXTRA_HUD, test "x$enable_gallium_extra_hud" = xyes) 1103if test "x$enable_gallium_extra_hud" = xyes ; then 1104 DEFINES="${DEFINES} -DHAVE_GALLIUM_EXTRA_HUD=1" 1105fi 1106 1107#TODO: no pkgconfig .pc available for libsensors. 1108#PKG_CHECK_MODULES([LIBSENSORS], [libsensors >= $LIBSENSORS_REQUIRED], [enable_lmsensors=yes], [enable_lmsensors=no]) 1109AC_ARG_ENABLE([lmsensors], 1110 [AS_HELP_STRING([--enable-lmsensors], 1111 [enable HUD lmsensor support @<:@default=disabled@:>@])], 1112 [enable_lmsensors="$enableval"], 1113 [enable_lmsensors=no]) 1114AM_CONDITIONAL(HAVE_LIBSENSORS, test "x$enable_lmsensors" = xyes) 1115if test "x$enable_lmsensors" = xyes ; then 1116 DEFINES="${DEFINES} -DHAVE_LIBSENSORS=1" 1117 LIBSENSORS_LIBS="-lsensors" 1118else 1119 LIBSENSORS_LIBS="" 1120fi 1121AC_SUBST(LIBSENSORS_LIBS) 1122 1123case "$host_os" in 1124linux*) 1125 dri3_default=yes 1126 ;; 1127*) 1128 dri3_default=no 1129 ;; 1130esac 1131 1132if test "x$enable_dri" = xno; then 1133 dri3_default=no 1134fi 1135 1136AC_ARG_ENABLE([dri3], 1137 [AS_HELP_STRING([--enable-dri3], 1138 [enable DRI3 @<:@default=auto@:>@])], 1139 [enable_dri3="$enableval"], 1140 [enable_dri3="$dri3_default"]) 1141AC_ARG_ENABLE([glx], 1142 [AS_HELP_STRING([--enable-glx@<:@=dri|xlib|gallium-xlib@:>@], 1143 [enable the GLX library and choose an implementation @<:@default=auto@:>@])], 1144 [enable_glx="$enableval"], 1145 [enable_glx=yes]) 1146AC_ARG_ENABLE([osmesa], 1147 [AS_HELP_STRING([--enable-osmesa], 1148 [enable OSMesa library @<:@default=disabled@:>@])], 1149 [enable_osmesa="$enableval"], 1150 [enable_osmesa=no]) 1151AC_ARG_ENABLE([gallium-osmesa], 1152 [AS_HELP_STRING([--enable-gallium-osmesa], 1153 [enable Gallium implementation of the OSMesa library @<:@default=disabled@:>@])], 1154 [enable_gallium_osmesa="$enableval"], 1155 [enable_gallium_osmesa=no]) 1156AC_ARG_ENABLE([egl], 1157 [AS_HELP_STRING([--disable-egl], 1158 [disable EGL library @<:@default=enabled@:>@])], 1159 [enable_egl="$enableval"], 1160 [enable_egl=yes]) 1161 1162AC_ARG_ENABLE([xa], 1163 [AS_HELP_STRING([--enable-xa], 1164 [enable build of the XA X Acceleration API @<:@default=disabled@:>@])], 1165 [enable_xa="$enableval"], 1166 [enable_xa=no]) 1167AC_ARG_ENABLE([gbm], 1168 [AS_HELP_STRING([--enable-gbm], 1169 [enable gbm library @<:@default=yes except cygwin@:>@])], 1170 [enable_gbm="$enableval"], 1171 [case "$host_os" in 1172 cygwin*) 1173 enable_gbm=no 1174 ;; 1175 *) 1176 enable_gbm=yes 1177 ;; 1178 esac]) 1179AC_ARG_ENABLE([nine], 1180 [AS_HELP_STRING([--enable-nine], 1181 [enable build of the nine Direct3D9 API @<:@default=no@:>@])], 1182 [enable_nine="$enableval"], 1183 [enable_nine=no]) 1184 1185AC_ARG_ENABLE([xvmc], 1186 [AS_HELP_STRING([--enable-xvmc], 1187 [enable xvmc library @<:@default=auto@:>@])], 1188 [enable_xvmc="$enableval"], 1189 [enable_xvmc=auto]) 1190AC_ARG_ENABLE([vdpau], 1191 [AS_HELP_STRING([--enable-vdpau], 1192 [enable vdpau library @<:@default=auto@:>@])], 1193 [enable_vdpau="$enableval"], 1194 [enable_vdpau=auto]) 1195AC_ARG_ENABLE([omx], 1196 [AS_HELP_STRING([--enable-omx], 1197 [enable OpenMAX library @<:@default=disabled@:>@])], 1198 [enable_omx="$enableval"], 1199 [enable_omx=no]) 1200AC_ARG_ENABLE([va], 1201 [AS_HELP_STRING([--enable-va], 1202 [enable va library @<:@default=auto@:>@])], 1203 [enable_va="$enableval"], 1204 [enable_va=auto]) 1205AC_ARG_ENABLE([opencl], 1206 [AS_HELP_STRING([--enable-opencl], 1207 [enable OpenCL library @<:@default=disabled@:>@])], 1208 [enable_opencl="$enableval"], 1209 [enable_opencl=no]) 1210AC_ARG_ENABLE([opencl_icd], 1211 [AS_HELP_STRING([--enable-opencl-icd], 1212 [Build an OpenCL ICD library to be loaded by an ICD implementation 1213 @<:@default=disabled@:>@])], 1214 [enable_opencl_icd="$enableval"], 1215 [enable_opencl_icd=no]) 1216 1217AC_ARG_ENABLE([gallium-tests], 1218 [AS_HELP_STRING([--enable-gallium-tests], 1219 [Enable optional Gallium tests) @<:@default=disabled@:>@])], 1220 [enable_gallium_tests="$enableval"], 1221 [enable_gallium_tests=no]) 1222 1223# Option for Gallium drivers 1224 1225# Keep this in sync with the --with-gallium-drivers help string default value 1226GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast" 1227 1228AC_ARG_WITH([gallium-drivers], 1229 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@], 1230 [comma delimited Gallium drivers list, e.g. 1231 "i915,ilo,nouveau,r300,r600,radeonsi,freedreno,svga,swrast,vc4,virgl,etnaviv,imx" 1232 @<:@default=r300,r600,svga,swrast@:>@])], 1233 [with_gallium_drivers="$withval"], 1234 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"]) 1235 1236# Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it 1237# here so that the script doesn't choke on an unknown driver name later. 1238case "$with_gallium_drivers" in 1239 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;; 1240 no) with_gallium_drivers='' ;; 1241esac 1242 1243if test "x$enable_opengl" = xno -a \ 1244 "x$enable_gles1" = xno -a \ 1245 "x$enable_gles2" = xno -a \ 1246 "x$enable_nine" = xno -a \ 1247 "x$enable_xa" = xno -a \ 1248 "x$enable_xvmc" = xno -a \ 1249 "x$enable_vdpau" = xno -a \ 1250 "x$enable_omx" = xno -a \ 1251 "x$enable_va" = xno -a \ 1252 "x$enable_opencl" = xno; then 1253 AC_MSG_ERROR([at least one API should be enabled]) 1254fi 1255 1256# Building OpenGL ES1 and/or ES2 without OpenGL is not supported on mesa 9.0.x 1257if test "x$enable_opengl" = xno -a \ 1258 "x$enable_gles1" = xyes; then 1259 AC_MSG_ERROR([Building OpenGL ES1 without OpenGL is not supported]) 1260fi 1261 1262if test "x$enable_opengl" = xno -a \ 1263 "x$enable_gles2" = xyes; then 1264 AC_MSG_ERROR([Building OpenGL ES2 without OpenGL is not supported]) 1265fi 1266 1267AM_CONDITIONAL(HAVE_OPENGL, test "x$enable_opengl" = xyes) 1268AM_CONDITIONAL(HAVE_OPENGL_ES1, test "x$enable_gles1" = xyes) 1269AM_CONDITIONAL(HAVE_OPENGL_ES2, test "x$enable_gles2" = xyes) 1270AM_CONDITIONAL(NEED_OPENGL_COMMON, test "x$enable_opengl" = xyes -o \ 1271 "x$enable_gles1" = xyes -o \ 1272 "x$enable_gles2" = xyes) 1273 1274# Validate GLX options 1275if test "x$enable_glx" = xyes; then 1276 if test "x$enable_dri" = xyes; then 1277 enable_glx=dri 1278 elif test -n "$with_gallium_drivers"; then 1279 enable_glx=gallium-xlib 1280 else 1281 enable_glx=xlib 1282 fi 1283fi 1284case "x$enable_glx" in 1285xdri | xxlib | xgallium-xlib) 1286 # GLX requires OpenGL 1287 if test "x$enable_opengl" = xno; then 1288 AC_MSG_ERROR([GLX cannot be built without OpenGL]) 1289 fi 1290 1291 # Check individual dependencies 1292 case "x$enable_glx" in 1293 xdri) 1294 if test "x$enable_dri" = xno; then 1295 AC_MSG_ERROR([DRI-based GLX requires DRI to be enabled]) 1296 fi 1297 ;; 1298 xxlib) 1299 if test "x$enable_dri" = xyes; then 1300 AC_MSG_ERROR([Xlib-based GLX cannot be built with DRI enabled]) 1301 fi 1302 ;; 1303 xgallium-xlib ) 1304 if test "x$enable_dri" = xyes; then 1305 AC_MSG_ERROR([Xlib-based (Gallium) GLX cannot be built with DRI enabled]) 1306 fi 1307 if test -z "$with_gallium_drivers"; then 1308 AC_MSG_ERROR([Xlib-based (Gallium) GLX cannot be built without Gallium enabled]) 1309 fi 1310 ;; 1311 esac 1312 ;; 1313xno) 1314 ;; 1315*) 1316 AC_MSG_ERROR([Illegal value for --enable-glx: $enable_glx]) 1317 ;; 1318esac 1319 1320AM_CONDITIONAL(HAVE_GLX, test "x$enable_glx" != xno) 1321AM_CONDITIONAL(HAVE_DRI_GLX, test "x$enable_glx" = xdri) 1322AM_CONDITIONAL(HAVE_XLIB_GLX, test "x$enable_glx" = xxlib) 1323AM_CONDITIONAL(HAVE_GALLIUM_XLIB_GLX, test "x$enable_glx" = xgallium-xlib) 1324 1325dnl 1326dnl Libglvnd configuration 1327dnl 1328AC_ARG_ENABLE([libglvnd], 1329 [AS_HELP_STRING([--enable-libglvnd], 1330 [Build for libglvnd @<:@default=disabled@:>@])], 1331 [enable_libglvnd="$enableval"], 1332 [enable_libglvnd=no]) 1333AM_CONDITIONAL(USE_LIBGLVND_GLX, test "x$enable_libglvnd" = xyes) 1334if test "x$enable_libglvnd" = xyes ; then 1335 dnl XXX: update once we can handle more than libGL/glx. 1336 dnl Namely: we should error out if neither of the glvnd enabled libraries 1337 dnl are built 1338 case "x$enable_glx" in 1339 xno) 1340 AC_MSG_ERROR([cannot build libglvnd without GLX]) 1341 ;; 1342 xxlib | xgallium-xlib ) 1343 AC_MSG_ERROR([cannot build libgvnd when Xlib-GLX or Gallium-Xlib-GLX is enabled]) 1344 ;; 1345 xdri) 1346 ;; 1347 esac 1348 1349 PKG_CHECK_MODULES([GLVND], libglvnd >= 0.1.0) 1350 DEFINES="${DEFINES} -DUSE_LIBGLVND_GLX=1" 1351 DEFAULT_GL_LIB_NAME=GLX_mesa 1352fi 1353 1354# Check for libdrm 1355PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED], 1356 [have_libdrm=yes], [have_libdrm=no]) 1357if test "x$have_libdrm" = xyes; then 1358 DEFINES="$DEFINES -DHAVE_LIBDRM" 1359fi 1360 1361require_libdrm() { 1362 if test "x$have_libdrm" != xyes; then 1363 AC_MSG_ERROR([$1 requires libdrm >= $LIBDRM_REQUIRED]) 1364 fi 1365} 1366 1367 1368# Select which platform-dependent DRI code gets built 1369case "$host_os" in 1370darwin*) 1371 dri_platform='apple' ;; 1372cygwin*) 1373 dri_platform='windows' ;; 1374gnu*) 1375 dri_platform='none' ;; 1376*) 1377 dri_platform='drm' ;; 1378esac 1379 1380if test "x$enable_dri" = xyes -a "x$dri_platform" = xdrm -a "x$have_libdrm" = xyes; then 1381 have_drisw_kms='yes' 1382fi 1383 1384AM_CONDITIONAL(HAVE_DRICOMMON, test "x$enable_dri" = xyes ) 1385AM_CONDITIONAL(HAVE_DRISW, test "x$enable_dri" = xyes ) 1386AM_CONDITIONAL(HAVE_DRISW_KMS, test "x$have_drisw_kms" = xyes ) 1387AM_CONDITIONAL(HAVE_DRI2, test "x$enable_dri" = xyes -a "x$dri_platform" = xdrm -a "x$have_libdrm" = xyes ) 1388AM_CONDITIONAL(HAVE_DRI3, test "x$enable_dri3" = xyes -a "x$dri_platform" = xdrm -a "x$have_libdrm" = xyes ) 1389AM_CONDITIONAL(HAVE_APPLEDRI, test "x$enable_dri" = xyes -a "x$dri_platform" = xapple ) 1390AM_CONDITIONAL(HAVE_LMSENSORS, test "x$enable_lmsensors" = xyes ) 1391AM_CONDITIONAL(HAVE_GALLIUM_EXTRA_HUD, test "x$enable_gallium_extra_hud" = xyes ) 1392AM_CONDITIONAL(HAVE_WINDOWSDRI, test "x$enable_dri" = xyes -a "x$dri_platform" = xwindows ) 1393 1394AC_ARG_ENABLE([shared-glapi], 1395 [AS_HELP_STRING([--enable-shared-glapi], 1396 [Enable shared glapi for OpenGL @<:@default=enabled@:>@])], 1397 [enable_shared_glapi="$enableval"], 1398 [enable_shared_glapi=yes]) 1399 1400case "x$enable_opengl$enable_gles1$enable_gles2" in 1401x*yes*yes*) 1402 if test "x$enable_shared_glapi" = xno; then 1403 AC_MSG_ERROR([shared GLAPI required when building two or more of 1404 the following APIs - opengl, gles1 gles2]) 1405 fi 1406 ;; 1407esac 1408 1409AM_CONDITIONAL(HAVE_SHARED_GLAPI, test "x$enable_shared_glapi" = xyes) 1410 1411# Build the pipe-drivers as separate libraries/modules. 1412# Do not touch this unless you know what you are doing. 1413# XXX: Expose via configure option ? 1414enable_shared_pipe_drivers=no 1415 1416dnl 1417dnl Driver specific build directories 1418dnl 1419 1420if test "x$enable_gallium_osmesa" = xyes; then 1421 if ! echo "$with_gallium_drivers" | grep -q 'swrast'; then 1422 AC_MSG_ERROR([gallium_osmesa requires the gallium swrast driver]) 1423 fi 1424 if test "x$enable_osmesa" = xyes; then 1425 AC_MSG_ERROR([Cannot enable both classic and Gallium OSMesa implementations]) 1426 fi 1427fi 1428 1429require_dri_shared_libs_and_glapi() { 1430 if test "x$enable_static" = xyes; then 1431 AC_MSG_ERROR([$1 cannot be build as static library]) 1432 fi 1433 1434 if test "x$enable_dri" != xyes; then 1435 # There is only a single backend which won't be build/used otherwise. 1436 # XXX: Revisit this as the egl/haiku is a thing. 1437 AC_MSG_ERROR([$1 requires --enable-dri]) 1438 fi 1439 1440 if test "x$enable_shared_glapi" != xyes; then 1441 AC_MSG_ERROR([$1 requires --enable-shared-glapi]) 1442 fi 1443} 1444 1445if test "x$enable_dri" = xyes; then 1446 require_dri_shared_libs_and_glapi "DRI" 1447 1448 # not a hard requirement as swrast does not depend on it 1449 if test "x$have_libdrm" = xyes; then 1450 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED" 1451 fi 1452fi 1453 1454AC_ARG_ENABLE([driglx-direct], 1455 [AS_HELP_STRING([--disable-driglx-direct], 1456 [disable direct rendering in GLX and EGL for DRI \ 1457 @<:@default=auto@:>@])], 1458 [driglx_direct="$enableval"], 1459 [driglx_direct="yes"]) 1460 1461dnl 1462dnl libGL configuration per driver 1463dnl 1464if test "x$enable_glx" != xno; then 1465 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED]) 1466fi 1467case "x$enable_glx" in 1468xxlib | xgallium-xlib) 1469 # Xlib-based GLX 1470 dri_modules="x11 xext xcb" 1471 PKG_CHECK_MODULES([XLIBGL], [$dri_modules]) 1472 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules" 1473 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS" 1474 GL_LIB_DEPS="$XLIBGL_LIBS" 1475 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS" 1476 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm $PTHREAD_LIBS" 1477 ;; 1478xdri) 1479 # DRI-based GLX 1480 1481 # find the DRI deps for libGL 1482 dri_modules="x11 xext xdamage xfixes x11-xcb xcb xcb-glx >= $XCBGLX_REQUIRED" 1483 1484 if test x"$driglx_direct" = xyes; then 1485 if test x"$dri_platform" = xdrm ; then 1486 DEFINES="$DEFINES -DGLX_USE_DRM" 1487 require_libdrm "Direct rendering" 1488 1489 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED]) 1490 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED" 1491 if test x"$enable_dri3" = xyes; then 1492 PKG_CHECK_MODULES([DRI3PROTO], [dri3proto >= $DRI3PROTO_REQUIRED]) 1493 PKG_CHECK_MODULES([PRESENTPROTO], [presentproto >= $PRESENTPROTO_REQUIRED]) 1494 fi 1495 1496 if test x"$enable_dri" = xyes; then 1497 dri_modules="$dri_modules xcb-dri2 >= $XCBDRI2_REQUIRED" 1498 fi 1499 1500 if test x"$enable_dri3" = xyes; then 1501 PKG_CHECK_EXISTS([xcb >= $XCB_REQUIRED], [], AC_MSG_ERROR([DRI3 requires xcb >= $XCB_REQUIRED])) 1502 dri3_modules="xcb xcb-dri3 xcb-present xcb-sync xshmfence >= $XSHMFENCE_REQUIRED" 1503 PKG_CHECK_MODULES([XCB_DRI3], [$dri3_modules]) 1504 fi 1505 fi 1506 if test x"$dri_platform" = xapple ; then 1507 DEFINES="$DEFINES -DGLX_USE_APPLEGL" 1508 fi 1509 if test x"$dri_platform" = xwindows ; then 1510 DEFINES="$DEFINES -DGLX_USE_WINDOWSGL" 1511 fi 1512 fi 1513 1514 # add xf86vidmode if available 1515 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no) 1516 if test "$HAVE_XF86VIDMODE" = yes ; then 1517 dri_modules="$dri_modules xxf86vm" 1518 fi 1519 1520 PKG_CHECK_MODULES([DRIGL], [$dri_modules]) 1521 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules" 1522 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS" 1523 GL_LIB_DEPS="$DRIGL_LIBS" 1524 1525 # need DRM libs, $PTHREAD_LIBS, etc. 1526 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS" 1527 GL_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS" 1528 ;; 1529esac 1530 1531# This is outside the case (above) so that it is invoked even for non-GLX 1532# builds. 1533AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes) 1534 1535GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS" 1536GLESv1_CM_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS" 1537GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS" 1538GLESv2_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS" 1539 1540AC_SUBST([X11_INCLUDES]) 1541AC_SUBST([GL_LIB_DEPS]) 1542AC_SUBST([GL_PC_REQ_PRIV]) 1543AC_SUBST([GL_PC_LIB_PRIV]) 1544AC_SUBST([GL_PC_CFLAGS]) 1545AC_SUBST([DRI_PC_REQ_PRIV]) 1546AC_SUBST([GLESv1_CM_LIB_DEPS]) 1547AC_SUBST([GLESv1_CM_PC_LIB_PRIV]) 1548AC_SUBST([GLESv2_LIB_DEPS]) 1549AC_SUBST([GLESv2_PC_LIB_PRIV]) 1550 1551AC_SUBST([HAVE_XF86VIDMODE]) 1552 1553dnl 1554dnl More GLX setup 1555dnl 1556case "x$enable_glx" in 1557xxlib | xgallium-xlib) 1558 DEFINES="$DEFINES -DUSE_XSHM" 1559 ;; 1560xdri) 1561 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING" 1562 if test "x$driglx_direct" = xyes; then 1563 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING" 1564 fi 1565 ;; 1566esac 1567 1568dnl 1569dnl TLS detection 1570dnl 1571 1572AC_ARG_ENABLE([glx-tls], 1573 [AS_HELP_STRING([--enable-glx-tls], 1574 [enable TLS support in GLX @<:@default=enabled@:>@])], 1575 [GLX_USE_TLS="$enableval"], 1576 [GLX_USE_TLS=yes]) 1577AC_SUBST(GLX_TLS, ${GLX_USE_TLS}) 1578 1579if test "x$GLX_USE_TLS" = xyes; then 1580 DEFINES="$DEFINES -DGLX_USE_TLS" 1581fi 1582 1583dnl Read-only text section on x86 hardened platforms 1584AC_ARG_ENABLE([glx-read-only-text], 1585 [AS_HELP_STRING([--enable-glx-read-only-text], 1586 [Disable writable .text section on x86 (decreases performance) @<:@default=disabled@:>@])], 1587 [enable_glx_read_only_text="$enableval"], 1588 [enable_glx_read_only_text=no]) 1589if test "x$enable_glx_read_only_text" = xyes; then 1590 DEFINES="$DEFINES -DGLX_X86_READONLY_TEXT" 1591fi 1592 1593dnl 1594dnl More DRI setup 1595dnl 1596dnl Directory for DRI drivers 1597AC_ARG_WITH([dri-driverdir], 1598 [AS_HELP_STRING([--with-dri-driverdir=DIR], 1599 [directory for the DRI drivers @<:@${libdir}/dri@:>@])], 1600 [DRI_DRIVER_INSTALL_DIR="$withval"], 1601 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri']) 1602AC_SUBST([DRI_DRIVER_INSTALL_DIR]) 1603dnl Extra search path for DRI drivers 1604AC_ARG_WITH([dri-searchpath], 1605 [AS_HELP_STRING([--with-dri-searchpath=DIRS...], 1606 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])], 1607 [DRI_DRIVER_SEARCH_DIR="$withval"], 1608 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}']) 1609AC_SUBST([DRI_DRIVER_SEARCH_DIR]) 1610dnl Which drivers to build - default is chosen by platform 1611AC_ARG_WITH([dri-drivers], 1612 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@], 1613 [comma delimited classic DRI drivers list, e.g. 1614 "swrast,i965,radeon" @<:@default=auto@:>@])], 1615 [with_dri_drivers="$withval"], 1616 [with_dri_drivers=auto]) 1617 1618if test "x$with_dri_drivers" = xauto; then 1619 if test "x$enable_opengl" = xyes -a "x$enable_dri" = xyes; then 1620 with_dri_drivers="yes" 1621 else 1622 with_dri_drivers="no" 1623 fi 1624fi 1625if test "x$with_dri_drivers" = xno; then 1626 with_dri_drivers='' 1627fi 1628 1629dnl If $with_dri_drivers is yes, drivers will be added through 1630dnl platform checks. Set DEFINES and LIB_DEPS 1631if test "x$enable_dri" = xyes; then 1632 # Platform specific settings and drivers to build 1633 case "$host_os" in 1634 linux*) 1635 if test "x$enable_dri3" = xyes; then 1636 DEFINES="$DEFINES -DHAVE_DRI3" 1637 fi 1638 1639 case "$host_cpu" in 1640 powerpc* | sparc*) 1641 # Build only the drivers for cards that exist on PowerPC/sparc 1642 if test "x$with_dri_drivers" = "xyes"; then 1643 with_dri_drivers="r200 radeon swrast" 1644 fi 1645 ;; 1646 esac 1647 ;; 1648 cygwin*) 1649 if test "x$with_dri_drivers" = "xyes"; then 1650 with_dri_drivers="swrast" 1651 fi 1652 ;; 1653 darwin*) 1654 DEFINES="$DEFINES -DBUILDING_MESA" 1655 if test "x$with_dri_drivers" = "xyes"; then 1656 with_dri_drivers="swrast" 1657 fi 1658 ;; 1659 esac 1660 1661 # default drivers 1662 if test "x$with_dri_drivers" = "xyes"; then 1663 with_dri_drivers="i915 i965 nouveau r200 radeon swrast" 1664 fi 1665 1666 # Check for expat 1667 PKG_CHECK_MODULES([EXPAT], [expat], [], 1668 # expat version 2.0 and earlier do not provide expat.pc 1669 [AC_CHECK_HEADER([expat.h],[], 1670 [AC_MSG_ERROR([Expat headers required for DRI not found])]) 1671 AC_CHECK_LIB([expat],[XML_ParserCreate],[], 1672 [AC_MSG_ERROR([Expat library required for DRI not found])]) 1673 EXPAT_LIBS="-lexpat"]) 1674 1675 # put all the necessary libs together 1676 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS" 1677fi 1678 1679AC_SUBST([DRI_LIB_DEPS]) 1680 1681DRI_DIRS='' 1682dnl Duplicates in DRI_DIRS are removed by sorting it at the end of this block 1683if test -n "$with_dri_drivers"; then 1684 if test "x$enable_opengl" != xyes; then 1685 AC_MSG_ERROR([--with-dri-drivers requires OpenGL]) 1686 fi 1687 1688 dri_drivers=`IFS=', '; echo $with_dri_drivers` 1689 for driver in $dri_drivers; do 1690 DRI_DIRS="$DRI_DIRS $driver" 1691 case "x$driver" in 1692 xi915) 1693 HAVE_I915_DRI=yes; 1694 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED]) 1695 ;; 1696 xi965) 1697 HAVE_I965_DRI=yes; 1698 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED]) 1699 ;; 1700 xnouveau) 1701 HAVE_NOUVEAU_DRI=yes; 1702 PKG_CHECK_MODULES([NVVIEUX], [libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED]) 1703 ;; 1704 xradeon) 1705 HAVE_RADEON_DRI=yes; 1706 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED]) 1707 ;; 1708 xr200) 1709 HAVE_R200_DRI=yes; 1710 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED]) 1711 ;; 1712 xswrast) 1713 HAVE_SWRAST_DRI=yes; 1714 ;; 1715 *) 1716 AC_MSG_ERROR([classic DRI driver '$driver' does not exist]) 1717 ;; 1718 esac 1719 done 1720 DRI_DIRS=`echo $DRI_DIRS|tr " " "\n"|sort -u|tr "\n" " "` 1721fi 1722 1723 1724dnl 1725dnl Gallium LLVM 1726dnl 1727dnl With follow-up commits we'll rework --enable-gallium-llvm to --enable-llvm 1728dnl Since that is too invasive to stable, do the more conservative thing for now 1729dnl and consider it as a global LLVM toggle. 1730dnl 1731AC_ARG_ENABLE([gallium-llvm], 1732 [AS_HELP_STRING([--enable-gallium-llvm], 1733 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])], 1734 [enable_gallium_llvm="$enableval"], 1735 [enable_gallium_llvm=auto]) 1736 1737if test "x$enable_gallium_llvm" = xauto; then 1738 if test "x$FOUND_LLVM" = xyes; then 1739 case "$host_cpu" in 1740 i*86|x86_64|amd64) enable_gallium_llvm=yes;; 1741 *) enable_gallium_llvm=no;; 1742 esac 1743 else 1744 enable_gallium_llvm=no 1745 fi 1746fi 1747 1748if test "x$enable_gallium_llvm" = xyes -a "x$FOUND_LLVM" = xno; then 1749 AC_MSG_ERROR([--enable-gallium-llvm selected but llvm-config is not found]) 1750fi 1751 1752# 1753# Vulkan driver configuration 1754# 1755 1756AC_ARG_WITH([vulkan-drivers], 1757 [AS_HELP_STRING([--with-vulkan-drivers@<:@=DIRS...@:>@], 1758 [comma delimited Vulkan drivers list, e.g. 1759 "intel,radeon" 1760 @<:@default=no@:>@])], 1761 [with_vulkan_drivers="$withval"], 1762 [with_vulkan_drivers="no"]) 1763 1764# Doing '--without-vulkan-drivers' will set this variable to 'no'. Clear it 1765# here so that the script doesn't choke on an unknown driver name later. 1766case "x$with_vulkan_drivers" in 1767 xyes) with_vulkan_drivers="$VULKAN_DRIVERS_DEFAULT" ;; 1768 xno) with_vulkan_drivers='' ;; 1769esac 1770 1771AC_ARG_WITH([vulkan-icddir], 1772 [AS_HELP_STRING([--with-vulkan-icddir=DIR], 1773 [directory for the Vulkan driver icd files @<:@${datarootdir}/vulkan/icd.d@:>@])], 1774 [VULKAN_ICD_INSTALL_DIR="$withval"], 1775 [VULKAN_ICD_INSTALL_DIR='${datarootdir}/vulkan/icd.d']) 1776AC_SUBST([VULKAN_ICD_INSTALL_DIR]) 1777 1778if test -n "$with_vulkan_drivers"; then 1779 VULKAN_DRIVERS=`IFS=', '; echo $with_vulkan_drivers` 1780 for driver in $VULKAN_DRIVERS; do 1781 case "x$driver" in 1782 xintel) 1783 if test "x$HAVE_I965_DRI" != xyes; then 1784 AC_MSG_ERROR([Intel Vulkan driver requires the i965 dri driver]) 1785 fi 1786 HAVE_INTEL_VULKAN=yes; 1787 1788 ;; 1789 xradeon) 1790 PKG_CHECK_MODULES([AMDGPU], [libdrm_amdgpu >= $LIBDRM_AMDGPU_REQUIRED]) 1791 radeon_llvm_check $LLVM_REQUIRED_RADV "radv" 1792 HAVE_RADEON_VULKAN=yes; 1793 ;; 1794 *) 1795 AC_MSG_ERROR([Vulkan driver '$driver' does not exist]) 1796 ;; 1797 esac 1798 done 1799 VULKAN_DRIVERS=`echo $VULKAN_DRIVERS|tr " " "\n"|sort -u|tr "\n" " "` 1800fi 1801 1802 1803DEFINES="$DEFINES -DENABLE_SHADER_CACHE" 1804AM_CONDITIONAL(NEED_MEGADRIVER, test -n "$DRI_DIRS") 1805AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_glx" = xxlib -o \ 1806 "x$enable_osmesa" = xyes -o \ 1807 -n "$DRI_DIRS") 1808 1809dnl 1810dnl OSMesa configuration 1811dnl 1812 1813dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...) 1814AC_ARG_WITH([osmesa-bits], 1815 [AS_HELP_STRING([--with-osmesa-bits=BITS], 1816 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])], 1817 [osmesa_bits="$withval"], 1818 [osmesa_bits=8]) 1819if test "x$osmesa_bits" != x8; then 1820 if test "x$enable_dri" = xyes -o "x$enable_glx" != xno; then 1821 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver]) 1822 osmesa_bits=8 1823 fi 1824fi 1825case "x$osmesa_bits" in 1826x8) 1827 OSMESA_LIB="${OSMESA_LIB}" 1828 ;; 1829x16|x32) 1830 OSMESA_LIB="${OSMESA_LIB}$osmesa_bits" 1831 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31" 1832 ;; 1833*) 1834 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option]) 1835 ;; 1836esac 1837 1838if test "x$enable_osmesa" = xyes -o "x$enable_gallium_osmesa" = xyes; then 1839 # only link libraries with osmesa if shared 1840 if test "$enable_static" = no; then 1841 OSMESA_LIB_DEPS="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS" 1842 else 1843 OSMESA_LIB_DEPS="" 1844 fi 1845 OSMESA_PC_LIB_PRIV="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS" 1846fi 1847 1848AC_SUBST([OSMESA_LIB_DEPS]) 1849AC_SUBST([OSMESA_PC_REQ]) 1850AC_SUBST([OSMESA_PC_LIB_PRIV]) 1851 1852dnl 1853dnl gbm configuration 1854dnl 1855if test "x$enable_gbm" = xyes; then 1856 require_dri_shared_libs_and_glapi "gbm" 1857fi 1858AM_CONDITIONAL(HAVE_GBM, test "x$enable_gbm" = xyes) 1859# FINISHME: GBM has a number of dependencies which we should add below 1860GBM_PC_REQ_PRIV="" 1861GBM_PC_LIB_PRIV="$DLOPEN_LIBS" 1862AC_SUBST([GBM_PC_REQ_PRIV]) 1863AC_SUBST([GBM_PC_LIB_PRIV]) 1864 1865dnl 1866dnl EGL configuration 1867dnl 1868 1869if test "x$enable_egl" = xyes; then 1870 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS $PTHREAD_LIBS" 1871 1872 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"]) 1873 1874 require_dri_shared_libs_and_glapi "egl" 1875fi 1876AM_CONDITIONAL(HAVE_EGL, test "x$enable_egl" = xyes) 1877AC_SUBST([EGL_LIB_DEPS]) 1878 1879gallium_st="mesa" 1880 1881dnl 1882dnl XA configuration 1883dnl 1884if test "x$enable_xa" = xyes; then 1885 if test "x$with_gallium_drivers" = xswrast; then 1886 AC_MSG_ERROR([ 1887 Building xa requires at least one non swrast gallium driver. 1888 If you are looking to use libxatracker.so with the VMware driver, 1889 make sure to include svga in the gallium drivers list, apart from 1890 enabling XA. 1891 Example: ./configure --enable-xa --with-gallium-drivers=svga...]) 1892 fi 1893 gallium_st="$gallium_st xa" 1894fi 1895AM_CONDITIONAL(HAVE_ST_XA, test "x$enable_xa" = xyes) 1896 1897dnl 1898dnl Gallium G3DVL configuration 1899dnl 1900if test -n "$with_gallium_drivers" -a "x$with_gallium_drivers" != xswrast; then 1901 if test "x$enable_xvmc" = xauto; then 1902 PKG_CHECK_EXISTS([xvmc >= $XVMC_REQUIRED], [enable_xvmc=yes], [enable_xvmc=no]) 1903 fi 1904 1905 if test "x$enable_vdpau" = xauto; then 1906 PKG_CHECK_EXISTS([vdpau >= $VDPAU_REQUIRED], [enable_vdpau=yes], [enable_vdpau=no]) 1907 fi 1908 1909 if test "x$enable_omx" = xauto; then 1910 PKG_CHECK_EXISTS([libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED], [enable_omx=yes], [enable_omx=no]) 1911 fi 1912 1913 if test "x$enable_va" = xauto; then 1914 PKG_CHECK_EXISTS([libva >= $LIBVA_REQUIRED], [enable_va=yes], [enable_va=no]) 1915 fi 1916fi 1917 1918if test "x$enable_dri" = xyes -o \ 1919 "x$enable_xvmc" = xyes -o \ 1920 "x$enable_vdpau" = xyes -o \ 1921 "x$enable_omx" = xyes -o \ 1922 "x$enable_va" = xyes; then 1923 need_gallium_vl=yes 1924fi 1925AM_CONDITIONAL(NEED_GALLIUM_VL, test "x$need_gallium_vl" = xyes) 1926 1927if test "x$enable_xvmc" = xyes -o \ 1928 "x$enable_vdpau" = xyes -o \ 1929 "x$enable_omx" = xyes -o \ 1930 "x$enable_va" = xyes; then 1931 if test x"$enable_dri3" = xyes; then 1932 PKG_CHECK_MODULES([VL], [xcb-dri3 xcb-present xcb-sync xshmfence >= $XSHMFENCE_REQUIRED 1933 xcb-xfixes x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED]) 1934 else 1935 PKG_CHECK_MODULES([VL], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED]) 1936 fi 1937 need_gallium_vl_winsys=yes 1938fi 1939AM_CONDITIONAL(NEED_GALLIUM_VL_WINSYS, test "x$need_gallium_vl_winsys" = xyes) 1940 1941if test "x$enable_xvmc" = xyes; then 1942 PKG_CHECK_MODULES([XVMC], [xvmc >= $XVMC_REQUIRED]) 1943 gallium_st="$gallium_st xvmc" 1944fi 1945AM_CONDITIONAL(HAVE_ST_XVMC, test "x$enable_xvmc" = xyes) 1946 1947if test "x$enable_vdpau" = xyes; then 1948 PKG_CHECK_MODULES([VDPAU], [vdpau >= $VDPAU_REQUIRED]) 1949 gallium_st="$gallium_st vdpau" 1950 DEFINES="$DEFINES -DHAVE_ST_VDPAU" 1951fi 1952AM_CONDITIONAL(HAVE_ST_VDPAU, test "x$enable_vdpau" = xyes) 1953 1954if test "x$enable_omx" = xyes; then 1955 PKG_CHECK_MODULES([OMX], [libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED]) 1956 gallium_st="$gallium_st omx" 1957fi 1958AM_CONDITIONAL(HAVE_ST_OMX, test "x$enable_omx" = xyes) 1959 1960if test "x$enable_va" = xyes; then 1961 PKG_CHECK_MODULES([VA], [libva >= $LIBVA_REQUIRED]) 1962 gallium_st="$gallium_st va" 1963fi 1964AM_CONDITIONAL(HAVE_ST_VA, test "x$enable_va" = xyes) 1965 1966dnl 1967dnl Nine Direct3D9 configuration 1968dnl 1969if test "x$enable_nine" = xyes; then 1970 if ! echo "$with_gallium_drivers" | grep -q 'swrast'; then 1971 AC_MSG_ERROR([nine requires the gallium swrast driver]) 1972 fi 1973 if test "x$with_gallium_drivers" = xswrast; then 1974 AC_MSG_ERROR([nine requires at least one non-swrast gallium driver]) 1975 fi 1976 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6; then 1977 AC_MSG_ERROR([gcc >= 4.6 is required to build nine]) 1978 fi 1979 1980 if test "x$enable_dri3" = xno; then 1981 AC_MSG_WARN([using nine together with wine requires DRI3 enabled system]) 1982 fi 1983 1984 gallium_st="$gallium_st nine" 1985fi 1986AM_CONDITIONAL(HAVE_ST_NINE, test "x$enable_nine" = xyes) 1987 1988dnl 1989dnl OpenCL configuration 1990dnl 1991 1992AC_ARG_WITH([clang-libdir], 1993 [AS_HELP_STRING([--with-clang-libdir], 1994 [Path to Clang libraries @<:@default=llvm-config --libdir@:>@])], 1995 [CLANG_LIBDIR="$withval"], 1996 [CLANG_LIBDIR='']) 1997 1998PKG_CHECK_EXISTS([libclc], [have_libclc=yes], [have_libclc=no]) 1999 2000if test "x$enable_opencl" = xyes; then 2001 if test -z "$with_gallium_drivers"; then 2002 AC_MSG_ERROR([cannot enable OpenCL without Gallium]) 2003 fi 2004 2005 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 7; then 2006 AC_MSG_ERROR([gcc >= 4.7 is required to build clover]) 2007 fi 2008 2009 if test "x$have_libclc" = xno; then 2010 AC_MSG_ERROR([pkg-config cannot find libclc.pc which is required to build clover. 2011 Make sure the directory containing libclc.pc is specified in your 2012 PKG_CONFIG_PATH environment variable. 2013 By default libclc.pc is installed to /usr/local/share/pkgconfig/]) 2014 else 2015 LIBCLC_INCLUDEDIR=`$PKG_CONFIG --variable=includedir libclc` 2016 LIBCLC_LIBEXECDIR=`$PKG_CONFIG --variable=libexecdir libclc` 2017 AC_SUBST([LIBCLC_INCLUDEDIR]) 2018 AC_SUBST([LIBCLC_LIBEXECDIR]) 2019 fi 2020 2021 gallium_st="$gallium_st clover" 2022 2023 if test "x$enable_opencl_icd" = xyes; then 2024 OPENCL_LIBNAME="MesaOpenCL" 2025 else 2026 OPENCL_LIBNAME="OpenCL" 2027 fi 2028 2029 if test "x$have_libelf" != xyes; then 2030 AC_MSG_ERROR([Clover requires libelf]) 2031 fi 2032 2033 if test "x${ac_cv_cxx_compiler_gnu}" = xyes; then 2034 altivec_enabled=no 2035 AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 2036 #if !defined(__VEC__) || !defined(__ALTIVEC__) 2037 #error "AltiVec not enabled" 2038 #endif 2039 ])], altivec_enabled=yes) 2040 2041 if test "$altivec_enabled" = yes; then 2042 CLOVER_STD_OVERRIDE="-std=gnu++11" 2043 fi 2044 AC_SUBST([CLOVER_STD_OVERRIDE]) 2045 fi 2046 2047 llvm_require_version $LLVM_REQUIRED_OPENCL "opencl" 2048 2049 llvm_add_default_components "opencl" 2050 llvm_add_component "all-targets" "opencl" 2051 llvm_add_component "linker" "opencl" 2052 llvm_add_component "instrumentation" "opencl" 2053 llvm_add_component "ipo" "opencl" 2054 llvm_add_component "irreader" "opencl" 2055 llvm_add_component "option" "opencl" 2056 llvm_add_component "objcarcopts" "opencl" 2057 llvm_add_component "profiledata" "opencl" 2058 2059 dnl Check for Clang internal headers 2060 if test -z "$CLANG_LIBDIR"; then 2061 CLANG_LIBDIR=${LLVM_LIBDIR} 2062 fi 2063 CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION} 2064 AS_IF([test ! -f "$CLANG_RESOURCE_DIR/include/stddef.h"], 2065 [AC_MSG_ERROR([Could not find clang internal header stddef.h in $CLANG_RESOURCE_DIR Use --with-clang-libdir to specify the correct path to the clang libraries.])]) 2066fi 2067AM_CONDITIONAL(HAVE_CLOVER, test "x$enable_opencl" = xyes) 2068AM_CONDITIONAL(HAVE_CLOVER_ICD, test "x$enable_opencl_icd" = xyes) 2069AC_SUBST([OPENCL_LIBNAME]) 2070AC_SUBST([CLANG_RESOURCE_DIR]) 2071 2072dnl 2073dnl Gallium configuration 2074dnl 2075AM_CONDITIONAL(HAVE_GALLIUM, test -n "$with_gallium_drivers") 2076 2077dnl 2078dnl EGL Platforms configuration 2079dnl 2080AC_ARG_WITH([egl-platforms], 2081 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@], 2082 [comma delimited native platforms libEGL supports, e.g. 2083 "x11,drm" @<:@default=auto@:>@])], 2084 [with_egl_platforms="$withval"], 2085 [if test "x$enable_egl" = xyes; then 2086 if test "x$enable_gbm" = xyes; then 2087 with_egl_platforms="x11,drm" 2088 else 2089 with_egl_platforms="x11" 2090 fi 2091 else 2092 with_egl_platforms="" 2093 fi]) 2094 2095if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then 2096 AC_MSG_ERROR([cannot build egl state tracker without EGL library]) 2097fi 2098 2099PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner], 2100 WAYLAND_SCANNER=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner`, 2101 WAYLAND_SCANNER='') 2102if test "x$WAYLAND_SCANNER" = x; then 2103 AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner]) 2104fi 2105 2106# Do per-EGL platform setups and checks 2107egl_platforms=`IFS=', '; echo $with_egl_platforms` 2108for plat in $egl_platforms; do 2109 case "$plat" in 2110 wayland) 2111 2112 PKG_CHECK_MODULES([WAYLAND], [wayland-client >= $WAYLAND_REQUIRED wayland-server >= $WAYLAND_REQUIRED]) 2113 2114 if test "x$WAYLAND_SCANNER" = x; then 2115 AC_MSG_ERROR([wayland-scanner is needed to compile the wayland egl platform]) 2116 fi 2117 ;; 2118 2119 x11) 2120 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED xcb-xfixes]) 2121 ;; 2122 2123 drm) 2124 test "x$enable_gbm" = "xno" && 2125 AC_MSG_ERROR([EGL platform drm needs gbm]) 2126 ;; 2127 2128 surfaceless) 2129 ;; 2130 2131 android) 2132 PKG_CHECK_MODULES([ANDROID], [cutils hardware sync]) 2133 ;; 2134 2135 *) 2136 AC_MSG_ERROR([EGL platform '$plat' does not exist]) 2137 ;; 2138 esac 2139 2140 case "$plat" in 2141 wayland|drm|surfaceless) 2142 require_libdrm "Platform $plat" 2143 ;; 2144 esac 2145done 2146 2147# libEGL wants to default to the first platform specified in 2148# ./configure. parse that here. 2149if test "x$egl_platforms" != "x"; then 2150 FIRST_PLATFORM_CAPS=`echo $egl_platforms | sed 's| .*||' | tr '[[a-z]]' '[[A-Z]]'` 2151 EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS" 2152else 2153 EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM" 2154fi 2155 2156AM_CONDITIONAL(HAVE_PLATFORM_X11, echo "$egl_platforms" | grep -q 'x11') 2157AM_CONDITIONAL(HAVE_PLATFORM_WAYLAND, echo "$egl_platforms" | grep -q 'wayland') 2158AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep -q 'drm') 2159AM_CONDITIONAL(HAVE_EGL_PLATFORM_SURFACELESS, echo "$egl_platforms" | grep -q 'surfaceless') 2160AM_CONDITIONAL(HAVE_EGL_PLATFORM_ANDROID, echo "$egl_platforms" | grep -q 'android') 2161 2162AC_SUBST([EGL_NATIVE_PLATFORM]) 2163AC_SUBST([EGL_CFLAGS]) 2164 2165# If we don't have the X11 platform, set this define so we don't try to include 2166# the X11 headers. 2167if ! echo "$egl_platforms" | grep -q 'x11'; then 2168 DEFINES="$DEFINES -DMESA_EGL_NO_X11_HEADERS" 2169 GL_PC_CFLAGS="$GL_PC_CFLAGS -DMESA_EGL_NO_X11_HEADERS" 2170fi 2171 2172dnl Directory for XVMC libs 2173AC_ARG_WITH([xvmc-libdir], 2174 [AS_HELP_STRING([--with-xvmc-libdir=DIR], 2175 [directory for the XVMC libraries @<:@default=${libdir}@:>@])], 2176 [XVMC_LIB_INSTALL_DIR="$withval"], 2177 [XVMC_LIB_INSTALL_DIR='${libdir}']) 2178AC_SUBST([XVMC_LIB_INSTALL_DIR]) 2179 2180dnl 2181dnl Gallium Tests 2182dnl 2183AM_CONDITIONAL(HAVE_GALLIUM_TESTS, test "x$enable_gallium_tests" = xyes) 2184 2185dnl Directory for VDPAU libs 2186AC_ARG_WITH([vdpau-libdir], 2187 [AS_HELP_STRING([--with-vdpau-libdir=DIR], 2188 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])], 2189 [VDPAU_LIB_INSTALL_DIR="$withval"], 2190 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau']) 2191AC_SUBST([VDPAU_LIB_INSTALL_DIR]) 2192 2193dnl Directory for OMX libs 2194 2195AC_ARG_WITH([omx-libdir], 2196 [AS_HELP_STRING([--with-omx-libdir=DIR], 2197 [directory for the OMX libraries])], 2198 [OMX_LIB_INSTALL_DIR="$withval"], 2199 [OMX_LIB_INSTALL_DIR=`$PKG_CONFIG --define-variable=libdir=\$libdir --variable=pluginsdir libomxil-bellagio`]) 2200AC_SUBST([OMX_LIB_INSTALL_DIR]) 2201 2202dnl Directory for VA libs 2203 2204AC_ARG_WITH([va-libdir], 2205 [AS_HELP_STRING([--with-va-libdir=DIR], 2206 [directory for the VA libraries @<:@${libdir}/dri@:>@])], 2207 [VA_LIB_INSTALL_DIR="$withval"], 2208 [VA_LIB_INSTALL_DIR="${libdir}/dri"]) 2209AC_SUBST([VA_LIB_INSTALL_DIR]) 2210 2211AC_ARG_WITH([d3d-libdir], 2212 [AS_HELP_STRING([--with-d3d-libdir=DIR], 2213 [directory for the D3D modules @<:@${libdir}/d3d@:>@])], 2214 [D3D_DRIVER_INSTALL_DIR="$withval"], 2215 [D3D_DRIVER_INSTALL_DIR="${libdir}/d3d"]) 2216AC_SUBST([D3D_DRIVER_INSTALL_DIR]) 2217 2218dnl 2219dnl r300 doesn't strictly require LLVM, but for performance reasons we 2220dnl highly recommend LLVM usage. So require it at least on x86 and x86_64 2221dnl architectures. 2222dnl 2223r300_require_llvm() { 2224 case "$host" in *gnux32) return;; esac 2225 case "$host_cpu" in 2226 i*86|x86_64|amd64) require_llvm $1 2227 ;; 2228 esac 2229} 2230 2231dnl 2232dnl DRM is needed by X, Wayland, and offscreen rendering. 2233dnl Surfaceless is an alternative for the last one. 2234dnl 2235require_basic_egl() { 2236 case "$with_egl_platforms" in 2237 *drm*|*surfaceless*) 2238 ;; 2239 *) 2240 AC_MSG_ERROR([$1 requires one of these: 2241 1) --with-egl-platforms=drm (X, Wayland, offscreen rendering based on DRM) 2242 2) --with-egl-platforms=surfaceless (offscreen only) 2243 Recommended options: drm,x11]) 2244 ;; 2245 esac 2246} 2247 2248radeon_gallium_llvm_check() { 2249 if test "x$enable_gallium_llvm" != "xyes"; then 2250 AC_MSG_ERROR([--enable-gallium-llvm is required when building $2]) 2251 fi 2252 radeon_llvm_check $* 2253} 2254 2255swr_require_cxx_feature_flags() { 2256 feature_name="$1" 2257 preprocessor_test="$2" 2258 option_list="$3" 2259 output_var="$4" 2260 2261 AC_MSG_CHECKING([whether $CXX supports $feature_name]) 2262 AC_LANG_PUSH([C++]) 2263 save_CXXFLAGS="$CXXFLAGS" 2264 save_IFS="$IFS" 2265 IFS="," 2266 found=0 2267 for opts in $option_list 2268 do 2269 unset IFS 2270 CXXFLAGS="$opts $save_CXXFLAGS" 2271 AC_COMPILE_IFELSE( 2272 [AC_LANG_PROGRAM( 2273 [ #if !($preprocessor_test) 2274 #error 2275 #endif 2276 ])], 2277 [found=1; break], 2278 []) 2279 IFS="," 2280 done 2281 IFS="$save_IFS" 2282 CXXFLAGS="$save_CXXFLAGS" 2283 AC_LANG_POP([C++]) 2284 if test $found -eq 1; then 2285 AC_MSG_RESULT([$opts]) 2286 eval "$output_var=\$opts" 2287 return 0 2288 fi 2289 AC_MSG_RESULT([no]) 2290 AC_MSG_ERROR([swr requires $feature_name support]) 2291 return 1 2292} 2293 2294dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block 2295if test -n "$with_gallium_drivers"; then 2296 gallium_drivers=`IFS=', '; echo $with_gallium_drivers` 2297 for driver in $gallium_drivers; do 2298 case "x$driver" in 2299 xsvga) 2300 HAVE_GALLIUM_SVGA=yes 2301 require_libdrm "svga" 2302 ;; 2303 xi915) 2304 HAVE_GALLIUM_I915=yes 2305 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED]) 2306 require_libdrm "Gallium i915" 2307 ;; 2308 xilo) 2309 HAVE_GALLIUM_ILO=yes 2310 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED]) 2311 require_libdrm "Gallium i965/ilo" 2312 ;; 2313 xr300) 2314 HAVE_GALLIUM_R300=yes 2315 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED]) 2316 require_libdrm "r300" 2317 r300_require_llvm "r300" 2318 ;; 2319 xr600) 2320 HAVE_GALLIUM_R600=yes 2321 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED]) 2322 require_libdrm "r600" 2323 if test "x$enable_opencl" = xyes; then 2324 radeon_gallium_llvm_check $LLVM_REQUIRED_R600 "r600" 2325 2326 llvm_add_component "asmparser" "r600" 2327 llvm_add_component "bitreader" "r600" 2328 fi 2329 ;; 2330 xradeonsi) 2331 HAVE_GALLIUM_RADEONSI=yes 2332 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED]) 2333 PKG_CHECK_MODULES([AMDGPU], [libdrm_amdgpu >= $LIBDRM_AMDGPU_REQUIRED]) 2334 require_libdrm "radeonsi" 2335 radeon_gallium_llvm_check $LLVM_REQUIRED_RADEONSI "radeonsi" 2336 if test "x$enable_egl" = xyes; then 2337 require_basic_egl "radeonsi" 2338 fi 2339 ;; 2340 xnouveau) 2341 HAVE_GALLIUM_NOUVEAU=yes 2342 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED]) 2343 require_libdrm "nouveau" 2344 ;; 2345 xfreedreno) 2346 HAVE_GALLIUM_FREEDRENO=yes 2347 PKG_CHECK_MODULES([FREEDRENO], [libdrm_freedreno >= $LIBDRM_FREEDRENO_REQUIRED]) 2348 require_libdrm "freedreno" 2349 ;; 2350 xetnaviv) 2351 HAVE_GALLIUM_ETNAVIV=yes 2352 PKG_CHECK_MODULES([ETNAVIV], [libdrm_etnaviv >= $LIBDRM_ETNAVIV_REQUIRED]) 2353 require_libdrm "etnaviv" 2354 ;; 2355 ximx) 2356 HAVE_GALLIUM_IMX=yes 2357 ;; 2358 xswrast) 2359 HAVE_GALLIUM_SOFTPIPE=yes 2360 if test "x$enable_gallium_llvm" = xyes; then 2361 HAVE_GALLIUM_LLVMPIPE=yes 2362 fi 2363 ;; 2364 xswr) 2365 llvm_require_version $LLVM_REQUIRED_SWR "swr" 2366 2367 swr_require_cxx_feature_flags "C++11" "__cplusplus >= 201103L" \ 2368 ",-std=c++11" \ 2369 SWR_CXX11_CXXFLAGS 2370 AC_SUBST([SWR_CXX11_CXXFLAGS]) 2371 2372 swr_require_cxx_feature_flags "AVX" "defined(__AVX__)" \ 2373 ",-mavx,-march=core-avx" \ 2374 SWR_AVX_CXXFLAGS 2375 AC_SUBST([SWR_AVX_CXXFLAGS]) 2376 2377 swr_require_cxx_feature_flags "AVX2" "defined(__AVX2__)" \ 2378 ",-mavx2 -mfma -mbmi2 -mf16c,-march=core-avx2" \ 2379 SWR_AVX2_CXXFLAGS 2380 AC_SUBST([SWR_AVX2_CXXFLAGS]) 2381 2382 HAVE_GALLIUM_SWR=yes 2383 ;; 2384 xvc4) 2385 HAVE_GALLIUM_VC4=yes 2386 PKG_CHECK_MODULES([VC4], [libdrm_vc4 >= $LIBDRM_VC4_REQUIRED]) 2387 require_libdrm "vc4" 2388 2389 PKG_CHECK_MODULES([SIMPENROSE], [simpenrose], 2390 [USE_VC4_SIMULATOR=yes; 2391 DEFINES="$DEFINES -DUSE_VC4_SIMULATOR"], 2392 [USE_VC4_SIMULATOR=no]) 2393 ;; 2394 xvirgl) 2395 HAVE_GALLIUM_VIRGL=yes 2396 require_libdrm "virgl" 2397 require_basic_egl "virgl" 2398 ;; 2399 *) 2400 AC_MSG_ERROR([Unknown Gallium driver: $driver]) 2401 ;; 2402 esac 2403 done 2404fi 2405 2406if test "x$enable_gallium_llvm" == "xyes" -a "$with_gallium_drivers"; then 2407 llvm_require_version $LLVM_REQUIRED_GALLIUM "gallium" 2408 llvm_add_default_components "gallium" 2409fi 2410 2411dnl We need to validate some needed dependencies for renderonly drivers. 2412 2413if test "x$HAVE_GALLIUM_ETNAVIV" != xyes -a "x$HAVE_GALLIUM_IMX" == xyes ; then 2414 AC_ERROR([Building with imx requires etnaviv]) 2415fi 2416 2417dnl 2418dnl Set defines and buildtime variables only when using LLVM. 2419dnl 2420if test "x$enable_gallium_llvm" = xyes; then 2421 DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT -DMESA_LLVM_VERSION_PATCH=$LLVM_VERSION_PATCH" 2422 2423 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags` 2424 LLVM_CFLAGS=$LLVM_CPPFLAGS # CPPFLAGS seem to be sufficient 2425 LLVM_CXXFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cxxflags"` 2426 2427 dnl Set LLVM_LIBS - This is done after the driver configuration so 2428 dnl that drivers can add additional components to LLVM_COMPONENTS. 2429 dnl Previously, gallium drivers were updating LLVM_LIBS directly 2430 dnl by calling llvm-config --libs ${DRIVER_LLVM_COMPONENTS}, but 2431 dnl this was causing the same libraries to be appear multiple times 2432 dnl in LLVM_LIBS. 2433 2434 if ! $LLVM_CONFIG --libs ${LLVM_COMPONENTS} >/dev/null; then 2435 AC_MSG_ERROR([Calling ${LLVM_CONFIG} failed]) 2436 fi 2437 LLVM_LIBS="`$LLVM_CONFIG --libs ${LLVM_COMPONENTS}`" 2438 2439 dnl llvm-config may not give the right answer when llvm is a built as a 2440 dnl single shared library, so we must work the library name out for 2441 dnl ourselves. 2442 dnl (See https://llvm.org/bugs/show_bug.cgi?id=6823) 2443 if test "x$enable_llvm_shared_libs" = xyes; then 2444 dnl We can't use $LLVM_VERSION because it has 'svn' stripped out, 2445 LLVM_SO_NAME=LLVM-`$LLVM_CONFIG --version` 2446 AS_IF([test -f "$LLVM_LIBDIR/lib$LLVM_SO_NAME.$IMP_LIB_EXT"], [llvm_have_one_so=yes]) 2447 2448 if test "x$llvm_have_one_so" = xyes; then 2449 dnl LLVM was built using auto*, so there is only one shared object. 2450 LLVM_LIBS="-l$LLVM_SO_NAME" 2451 else 2452 dnl If LLVM was built with CMake, there will be one shared object per 2453 dnl component. 2454 AS_IF([test ! -f "$LLVM_LIBDIR/libLLVMTarget.$IMP_LIB_EXT"], 2455 [AC_MSG_ERROR([Could not find llvm shared libraries: 2456 Please make sure you have built llvm with the --enable-shared option 2457 and that your llvm libraries are installed in $LLVM_LIBDIR 2458 If you have installed your llvm libraries to a different directory you 2459 can use the --with-llvm-prefix= configure flag to specify this directory. 2460 NOTE: Mesa is attempting to use llvm shared libraries by default. 2461 If you do not want to build with llvm shared libraries and instead want to 2462 use llvm static libraries then add --disable-llvm-shared-libs to your configure 2463 invocation and rebuild.])]) 2464 2465 dnl We don't need to update LLVM_LIBS in this case because the LLVM 2466 dnl install uses a shared object for each component and we have 2467 dnl already added all of these objects to LLVM_LIBS. 2468 fi 2469 else 2470 AC_MSG_WARN([Building mesa with statically linked LLVM may cause compilation issues]) 2471 dnl We need to link to llvm system libs when using static libs 2472 dnl However, only llvm 3.5+ provides --system-libs 2473 if test $LLVM_VERSION_MAJOR -ge 4 -o $LLVM_VERSION_MAJOR -eq 3 -a $LLVM_VERSION_MINOR -ge 5; then 2474 LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --system-libs`" 2475 fi 2476 fi 2477fi 2478 2479AM_CONDITIONAL(HAVE_GALLIUM_SVGA, test "x$HAVE_GALLIUM_SVGA" = xyes) 2480AM_CONDITIONAL(HAVE_GALLIUM_I915, test "x$HAVE_GALLIUM_I915" = xyes) 2481AM_CONDITIONAL(HAVE_GALLIUM_ILO, test "x$HAVE_GALLIUM_ILO" = xyes) 2482AM_CONDITIONAL(HAVE_GALLIUM_R300, test "x$HAVE_GALLIUM_R300" = xyes) 2483AM_CONDITIONAL(HAVE_GALLIUM_R600, test "x$HAVE_GALLIUM_R600" = xyes) 2484AM_CONDITIONAL(HAVE_GALLIUM_RADEONSI, test "x$HAVE_GALLIUM_RADEONSI" = xyes) 2485AM_CONDITIONAL(HAVE_GALLIUM_RADEON_COMMON, test "x$HAVE_GALLIUM_R600" = xyes -o \ 2486 "x$HAVE_GALLIUM_RADEONSI" = xyes) 2487AM_CONDITIONAL(HAVE_GALLIUM_NOUVEAU, test "x$HAVE_GALLIUM_NOUVEAU" = xyes) 2488AM_CONDITIONAL(HAVE_GALLIUM_FREEDRENO, test "x$HAVE_GALLIUM_FREEDRENO" = xyes) 2489AM_CONDITIONAL(HAVE_GALLIUM_ETNAVIV, test "x$HAVE_GALLIUM_ETNAVIV" = xyes) 2490AM_CONDITIONAL(HAVE_GALLIUM_IMX, test "x$HAVE_GALLIUM_IMX" = xyes) 2491AM_CONDITIONAL(HAVE_GALLIUM_SOFTPIPE, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes) 2492AM_CONDITIONAL(HAVE_GALLIUM_LLVMPIPE, test "x$HAVE_GALLIUM_LLVMPIPE" = xyes) 2493AM_CONDITIONAL(HAVE_GALLIUM_SWR, test "x$HAVE_GALLIUM_SWR" = xyes) 2494AM_CONDITIONAL(HAVE_GALLIUM_SWRAST, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes -o \ 2495 "x$HAVE_GALLIUM_LLVMPIPE" = xyes -o \ 2496 "x$HAVE_GALLIUM_SWR" = xyes) 2497AM_CONDITIONAL(HAVE_GALLIUM_VC4, test "x$HAVE_GALLIUM_VC4" = xyes) 2498AM_CONDITIONAL(HAVE_GALLIUM_VIRGL, test "x$HAVE_GALLIUM_VIRGL" = xyes) 2499 2500AM_CONDITIONAL(HAVE_GALLIUM_STATIC_TARGETS, test "x$enable_shared_pipe_drivers" = xno) 2501 2502if test "x$enable_dri" = xyes; then 2503 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRI" 2504fi 2505 2506if test "x$have_drisw_kms" = xyes; then 2507 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_KMS" 2508fi 2509AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES]) 2510 2511AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes) 2512AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes) 2513AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes) 2514AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes) 2515AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes) 2516AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes) 2517 2518AM_CONDITIONAL(HAVE_RADEON_VULKAN, test "x$HAVE_RADEON_VULKAN" = xyes) 2519AM_CONDITIONAL(HAVE_INTEL_VULKAN, test "x$HAVE_INTEL_VULKAN" = xyes) 2520 2521AM_CONDITIONAL(HAVE_AMD_DRIVERS, test "x$HAVE_GALLIUM_R600" = xyes -o \ 2522 "x$HAVE_GALLIUM_RADEONSI" = xyes -o \ 2523 "x$HAVE_RADEON_VULKAN" = xyes) 2524 2525AM_CONDITIONAL(HAVE_INTEL_DRIVERS, test "x$HAVE_INTEL_VULKAN" = xyes -o \ 2526 "x$HAVE_I965_DRI" = xyes) 2527 2528AM_CONDITIONAL(NEED_RADEON_DRM_WINSYS, test "x$HAVE_GALLIUM_R300" = xyes -o \ 2529 "x$HAVE_GALLIUM_R600" = xyes -o \ 2530 "x$HAVE_GALLIUM_RADEONSI" = xyes) 2531AM_CONDITIONAL(NEED_WINSYS_XLIB, test "x$enable_glx" = xgallium-xlib) 2532AM_CONDITIONAL(NEED_RADEON_LLVM, test x$NEED_RADEON_LLVM = xyes) 2533AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes) 2534AM_CONDITIONAL(HAVE_GALLIUM_LLVM, test "x$enable_gallium_llvm" = xyes) 2535AM_CONDITIONAL(USE_VC4_SIMULATOR, test x$USE_VC4_SIMULATOR = xyes) 2536if test "x$USE_VC4_SIMULATOR" = xyes -a "x$HAVE_GALLIUM_ILO" = xyes; then 2537 AC_MSG_ERROR([VC4 simulator on x86 replaces i965 driver build, so ilo must be disabled.]) 2538fi 2539 2540AM_CONDITIONAL(HAVE_LIBDRM, test "x$have_libdrm" = xyes) 2541AM_CONDITIONAL(HAVE_OSMESA, test "x$enable_osmesa" = xyes) 2542AM_CONDITIONAL(HAVE_GALLIUM_OSMESA, test "x$enable_gallium_osmesa" = xyes) 2543AM_CONDITIONAL(HAVE_COMMON_OSMESA, test "x$enable_osmesa" = xyes -o \ 2544 "x$enable_gallium_osmesa" = xyes) 2545 2546AM_CONDITIONAL(HAVE_X86_ASM, test "x$asm_arch" = xx86 -o "x$asm_arch" = xx86_64) 2547AM_CONDITIONAL(HAVE_X86_64_ASM, test "x$asm_arch" = xx86_64) 2548AM_CONDITIONAL(HAVE_SPARC_ASM, test "x$asm_arch" = xsparc) 2549 2550AC_SUBST([NINE_MAJOR], 1) 2551AC_SUBST([NINE_MINOR], 0) 2552AC_SUBST([NINE_TINY], 0) 2553AC_SUBST([NINE_VERSION], "$NINE_MAJOR.$NINE_MINOR.$NINE_TINY") 2554 2555AC_SUBST([VDPAU_MAJOR], 1) 2556AC_SUBST([VDPAU_MINOR], 0) 2557 2558VA_MAJOR=`$PKG_CONFIG --modversion libva | $SED -n 's/\([[^\.]]*\)\..*$/\1/p'` 2559VA_MINOR=`$PKG_CONFIG --modversion libva | $SED -n 's/.*\.\(.*\)\..*$/\1/p'` 2560AC_SUBST([VA_MAJOR], $VA_MAJOR) 2561AC_SUBST([VA_MINOR], $VA_MINOR) 2562 2563AM_CONDITIONAL(HAVE_VULKAN_COMMON, test "x$VULKAN_DRIVERS" != "x") 2564 2565AC_SUBST([XVMC_MAJOR], 1) 2566AC_SUBST([XVMC_MINOR], 0) 2567 2568XA_HEADER="$srcdir/src/gallium/state_trackers/xa/xa_tracker.h" 2569XA_MAJOR=`grep "#define XA_TRACKER_VERSION_MAJOR" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_MAJOR //'` 2570XA_MINOR=`grep "#define XA_TRACKER_VERSION_MINOR" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_MINOR //'` 2571XA_TINY=`grep "#define XA_TRACKER_VERSION_PATCH" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_PATCH //'` 2572 2573AC_SUBST([XA_MAJOR], $XA_MAJOR) 2574AC_SUBST([XA_MINOR], $XA_MINOR) 2575AC_SUBST([XA_TINY], $XA_TINY) 2576AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_TINY") 2577 2578AC_ARG_ENABLE(valgrind, 2579 [AS_HELP_STRING([--enable-valgrind], 2580 [Build mesa with valgrind support (default: auto)])], 2581 [VALGRIND=$enableval], [VALGRIND=auto]) 2582if test "x$VALGRIND" != xno; then 2583 PKG_CHECK_MODULES(VALGRIND, [valgrind], [have_valgrind=yes], [have_valgrind=no]) 2584fi 2585AC_MSG_CHECKING([whether to enable Valgrind support]) 2586if test "x$VALGRIND" = xauto; then 2587 VALGRIND="$have_valgrind" 2588fi 2589 2590if test "x$VALGRIND" = "xyes"; then 2591 if ! test "x$have_valgrind" = xyes; then 2592 AC_MSG_ERROR([Valgrind support required but not present]) 2593 fi 2594 AC_DEFINE([HAVE_VALGRIND], 1, [Use valgrind intrinsics to suppress false warnings]) 2595fi 2596 2597AC_MSG_RESULT([$VALGRIND]) 2598 2599dnl Restore LDFLAGS and CPPFLAGS 2600LDFLAGS="$_SAVE_LDFLAGS" 2601CPPFLAGS="$_SAVE_CPPFLAGS" 2602 2603dnl Suppress clang's warnings about unused CFLAGS and CXXFLAGS 2604if test "x$acv_mesa_CLANG" = xyes; then 2605 CFLAGS="$CFLAGS -Qunused-arguments" 2606 CXXFLAGS="$CXXFLAGS -Qunused-arguments" 2607fi 2608 2609dnl Add user CFLAGS and CXXFLAGS 2610CFLAGS="$CFLAGS $USER_CFLAGS" 2611CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS" 2612 2613dnl Substitute the config 2614AC_CONFIG_FILES([Makefile 2615 src/Makefile 2616 src/amd/Makefile 2617 src/amd/vulkan/Makefile 2618 src/compiler/Makefile 2619 src/egl/Makefile 2620 src/egl/main/egl.pc 2621 src/egl/wayland/wayland-drm/Makefile 2622 src/egl/wayland/wayland-egl/Makefile 2623 src/egl/wayland/wayland-egl/wayland-egl.pc 2624 src/gallium/Makefile 2625 src/gallium/auxiliary/Makefile 2626 src/gallium/auxiliary/pipe-loader/Makefile 2627 src/gallium/drivers/freedreno/Makefile 2628 src/gallium/drivers/ddebug/Makefile 2629 src/gallium/drivers/i915/Makefile 2630 src/gallium/drivers/ilo/Makefile 2631 src/gallium/drivers/llvmpipe/Makefile 2632 src/gallium/drivers/noop/Makefile 2633 src/gallium/drivers/nouveau/Makefile 2634 src/gallium/drivers/r300/Makefile 2635 src/gallium/drivers/r600/Makefile 2636 src/gallium/drivers/radeon/Makefile 2637 src/gallium/drivers/radeonsi/Makefile 2638 src/gallium/drivers/rbug/Makefile 2639 src/gallium/drivers/softpipe/Makefile 2640 src/gallium/drivers/svga/Makefile 2641 src/gallium/drivers/swr/Makefile 2642 src/gallium/drivers/trace/Makefile 2643 src/gallium/drivers/etnaviv/Makefile 2644 src/gallium/drivers/imx/Makefile 2645 src/gallium/drivers/vc4/Makefile 2646 src/gallium/drivers/virgl/Makefile 2647 src/gallium/state_trackers/clover/Makefile 2648 src/gallium/state_trackers/dri/Makefile 2649 src/gallium/state_trackers/glx/xlib/Makefile 2650 src/gallium/state_trackers/nine/Makefile 2651 src/gallium/state_trackers/omx/Makefile 2652 src/gallium/state_trackers/osmesa/Makefile 2653 src/gallium/state_trackers/va/Makefile 2654 src/gallium/state_trackers/vdpau/Makefile 2655 src/gallium/state_trackers/xa/Makefile 2656 src/gallium/state_trackers/xvmc/Makefile 2657 src/gallium/targets/d3dadapter9/Makefile 2658 src/gallium/targets/d3dadapter9/d3d.pc 2659 src/gallium/targets/dri/Makefile 2660 src/gallium/targets/libgl-xlib/Makefile 2661 src/gallium/targets/omx/Makefile 2662 src/gallium/targets/opencl/Makefile 2663 src/gallium/targets/opencl/mesa.icd 2664 src/gallium/targets/osmesa/Makefile 2665 src/gallium/targets/osmesa/osmesa.pc 2666 src/gallium/targets/pipe-loader/Makefile 2667 src/gallium/targets/va/Makefile 2668 src/gallium/targets/vdpau/Makefile 2669 src/gallium/targets/xa/Makefile 2670 src/gallium/targets/xa/xatracker.pc 2671 src/gallium/targets/xvmc/Makefile 2672 src/gallium/tests/trivial/Makefile 2673 src/gallium/tests/unit/Makefile 2674 src/gallium/winsys/etnaviv/drm/Makefile 2675 src/gallium/winsys/imx/drm/Makefile 2676 src/gallium/winsys/freedreno/drm/Makefile 2677 src/gallium/winsys/i915/drm/Makefile 2678 src/gallium/winsys/intel/drm/Makefile 2679 src/gallium/winsys/nouveau/drm/Makefile 2680 src/gallium/winsys/radeon/drm/Makefile 2681 src/gallium/winsys/amdgpu/drm/Makefile 2682 src/gallium/winsys/svga/drm/Makefile 2683 src/gallium/winsys/sw/dri/Makefile 2684 src/gallium/winsys/sw/kms-dri/Makefile 2685 src/gallium/winsys/sw/null/Makefile 2686 src/gallium/winsys/sw/wrapper/Makefile 2687 src/gallium/winsys/sw/xlib/Makefile 2688 src/gallium/winsys/vc4/drm/Makefile 2689 src/gallium/winsys/virgl/drm/Makefile 2690 src/gallium/winsys/virgl/vtest/Makefile 2691 src/gbm/Makefile 2692 src/gbm/main/gbm.pc 2693 src/glx/Makefile 2694 src/glx/apple/Makefile 2695 src/glx/tests/Makefile 2696 src/glx/windows/Makefile 2697 src/glx/windows/windowsdriproto.pc 2698 src/gtest/Makefile 2699 src/intel/Makefile 2700 src/intel/tools/Makefile 2701 src/intel/vulkan/Makefile 2702 src/loader/Makefile 2703 src/mapi/Makefile 2704 src/mapi/es1api/glesv1_cm.pc 2705 src/mapi/es2api/glesv2.pc 2706 src/mapi/glapi/gen/Makefile 2707 src/mesa/Makefile 2708 src/mesa/gl.pc 2709 src/mesa/drivers/dri/dri.pc 2710 src/mesa/drivers/dri/common/Makefile 2711 src/mesa/drivers/dri/common/xmlpool/Makefile 2712 src/mesa/drivers/dri/i915/Makefile 2713 src/mesa/drivers/dri/i965/Makefile 2714 src/mesa/drivers/dri/Makefile 2715 src/mesa/drivers/dri/nouveau/Makefile 2716 src/mesa/drivers/dri/r200/Makefile 2717 src/mesa/drivers/dri/radeon/Makefile 2718 src/mesa/drivers/dri/swrast/Makefile 2719 src/mesa/drivers/osmesa/Makefile 2720 src/mesa/drivers/osmesa/osmesa.pc 2721 src/mesa/drivers/x11/Makefile 2722 src/mesa/main/tests/Makefile 2723 src/util/Makefile 2724 src/util/tests/hash_table/Makefile 2725 src/vulkan/wsi/Makefile]) 2726 2727AC_OUTPUT 2728 2729# Fix up dependencies in *.Plo files, where we changed the extension of a 2730# source file 2731$SED -i -e 's/brw_blorp.cpp/brw_blorp.c/' src/mesa/drivers/dri/i965/.deps/brw_blorp.Plo 2732 2733 2734dnl 2735dnl Output some configuration info for the user 2736dnl 2737echo "" 2738echo " prefix: $prefix" 2739echo " exec_prefix: $exec_prefix" 2740echo " libdir: $libdir" 2741echo " includedir: $includedir" 2742 2743dnl API info 2744echo "" 2745echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)" 2746 2747dnl Driver info 2748echo "" 2749case "x$enable_osmesa$enable_gallium_osmesa" in 2750xnoyes) 2751 echo " OSMesa: lib$OSMESA_LIB (Gallium)" 2752 ;; 2753xyesno) 2754 echo " OSMesa: lib$OSMESA_LIB" 2755 ;; 2756xnono) 2757 echo " OSMesa: no" 2758 ;; 2759esac 2760 2761echo "" 2762if test "x$enable_dri" != xno; then 2763 echo " DRI platform: $dri_platform" 2764 if test -z "$DRI_DIRS"; then 2765 echo " DRI drivers: no" 2766 else 2767 echo " DRI drivers: $DRI_DIRS" 2768 fi 2769 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR" 2770fi 2771 2772case "x$enable_glx" in 2773xdri) 2774 echo " GLX: DRI-based" 2775 ;; 2776xxlib) 2777 echo " GLX: Xlib-based" 2778 ;; 2779xgallium-xlib) 2780 echo " GLX: Xlib-based (Gallium)" 2781 ;; 2782*) 2783 echo " GLX: $enable_glx" 2784 ;; 2785esac 2786 2787dnl EGL 2788echo "" 2789echo " EGL: $enable_egl" 2790if test "$enable_egl" = yes; then 2791 echo " EGL platforms: $egl_platforms" 2792 2793 egl_drivers="" 2794 if test "x$enable_dri" != "xno"; then 2795 egl_drivers="$egl_drivers builtin:egl_dri2" 2796 fi 2797 if test "x$enable_dri3" != "xno"; then 2798 egl_drivers="$egl_drivers builtin:egl_dri3" 2799 fi 2800 2801 echo " EGL drivers: $egl_drivers" 2802fi 2803if test "x$enable_gbm" = xyes; then 2804 echo " GBM: yes" 2805else 2806 echo " GBM: no" 2807fi 2808 2809# Vulkan 2810echo "" 2811if test "x$VULKAN_DRIVERS" != x; then 2812 echo " Vulkan drivers: $VULKAN_DRIVERS" 2813 echo " Vulkan ICD dir: $VULKAN_ICD_INSTALL_DIR" 2814else 2815 echo " Vulkan drivers: no" 2816fi 2817 2818echo "" 2819if test "x$enable_gallium_llvm" = xyes; then 2820 echo " llvm: yes" 2821 echo " llvm-config: $LLVM_CONFIG" 2822 echo " llvm-version: $LLVM_VERSION" 2823else 2824 echo " llvm: no" 2825fi 2826 2827echo "" 2828if test -n "$with_gallium_drivers"; then 2829 echo " Gallium drivers: $gallium_drivers" 2830 echo " Gallium st: $gallium_st" 2831else 2832 echo " Gallium: no" 2833fi 2834 2835echo "" 2836if test "x$enable_gallium_extra_hud" != xyes; then 2837 echo " HUD extra stats: no" 2838else 2839 echo " HUD extra stats: yes" 2840fi 2841 2842if test "x$enable_lmsensors" != xyes; then 2843 echo " HUD lmsensors: no" 2844else 2845 echo " HUD lmsensors: yes" 2846fi 2847 2848dnl Libraries 2849echo "" 2850echo " Shared libs: $enable_shared" 2851echo " Static libs: $enable_static" 2852echo " Shared-glapi: $enable_shared_glapi" 2853 2854dnl Compiler options 2855# cleanup the CFLAGS/CXXFLAGS/DEFINES vars 2856cflags=`echo $CFLAGS | \ 2857 $SED 's/^ *//;s/ */ /;s/ *$//'` 2858cxxflags=`echo $CXXFLAGS | \ 2859 $SED 's/^ *//;s/ */ /;s/ *$//'` 2860defines=`echo $DEFINES | $SED 's/^ *//;s/ */ /;s/ *$//'` 2861echo "" 2862echo " CFLAGS: $cflags" 2863echo " CXXFLAGS: $cxxflags" 2864echo " Macros: $defines" 2865echo "" 2866if test "x$enable_gallium_llvm" = xyes; then 2867 echo " LLVM_CFLAGS: $LLVM_CFLAGS" 2868 echo " LLVM_CXXFLAGS: $LLVM_CXXFLAGS" 2869 echo " LLVM_CPPFLAGS: $LLVM_CPPFLAGS" 2870 echo " LLVM_LDFLAGS: $LLVM_LDFLAGS" 2871 echo "" 2872fi 2873echo " PYTHON2: $PYTHON2" 2874 2875echo "" 2876echo " Run '${MAKE-make}' to build Mesa" 2877echo "" 2878