1 dnl Copyright 2011-2014 Intel Corporation 2 dnl Copyright 2011-2014 Emil Velikov <emil.l.velikov (a] gmail.com> 3 dnl Copyright 2007-2010 Dan Nicholson 4 dnl Copyright 2010-2014 Marek Olk <maraeo (a] gmail.com> 5 dnl Copyright 2010-2014 Christian Knig 6 dnl Copyright 2012-2014 Tom Stellard <tstellar (a] gmail.com> 7 dnl Copyright 2009-2012 Jakob Bornecrantz 8 dnl Copyright 2009-2014 Jon TURNEY 9 dnl Copyright 2011-2012 Benjamin Franzke 10 dnl Copyright 2008-2014 David Airlie 11 dnl Copyright 2009-2013 Brian Paul 12 dnl 13 dnl Permission is hereby granted, free of charge, to any person obtaining a 14 dnl copy of this software and associated documentation files (the "Software"), 15 dnl to deal in the Software without restriction, including without limitation 16 dnl the rights to use, copy, modify, merge, publish, distribute, sublicense, 17 dnl and/or sell copies of the Software, and to permit persons to whom the 18 dnl Software is furnished to do so, subject to the following conditions: 19 dnl 20 dnl The above copyright notice and this permission notice (including the next 21 dnl paragraph) shall be included in all copies or substantial portions of the 22 dnl Software. 23 dnl 24 dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 25 dnl IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 26 dnl FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 27 dnl THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 28 dnl LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 29 dnl FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 30 dnl DEALINGS IN THE SOFTWARE. 31 dnl 32 dnl Process this file with autoconf to create configure. 33 34 AC_PREREQ([2.60]) 35 36 dnl Tell the user about autoconf.html in the --help output 37 m4_divert_once([HELP_END], [ 38 See docs/autoconf.html for more details on the options for Mesa.]) 39 40 m4_define(MESA_VERSION, m4_normalize(m4_include(VERSION))) 41 AC_INIT([Mesa], [MESA_VERSION], 42 [https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa]) 43 AC_CONFIG_AUX_DIR([bin]) 44 AC_CONFIG_MACRO_DIR([m4]) 45 AC_CANONICAL_SYSTEM 46 AM_INIT_AUTOMAKE([foreign tar-ustar dist-xz subdir-objects]) 47 48 dnl We only support native Windows builds (MinGW/MSVC) through SCons. 49 case "$host_os" in 50 mingw*) 51 AC_MSG_ERROR([MinGW build not supported through autoconf/automake, use SCons instead]) 52 ;; 53 esac 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 58 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])], 59 [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])]) 60 61 m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) 62 63 dnl Set internal versions 64 OSMESA_VERSION=8 65 AC_SUBST([OSMESA_VERSION]) 66 OPENCL_VERSION=1 67 AC_SUBST([OPENCL_VERSION]) 68 69 dnl Versions for external dependencies 70 LIBDRM_REQUIRED=2.4.66 71 LIBDRM_RADEON_REQUIRED=2.4.56 72 LIBDRM_AMDGPU_REQUIRED=2.4.63 73 LIBDRM_INTEL_REQUIRED=2.4.61 74 LIBDRM_NVVIEUX_REQUIRED=2.4.66 75 LIBDRM_NOUVEAU_REQUIRED=2.4.66 76 LIBDRM_FREEDRENO_REQUIRED=2.4.74 77 LIBDRM_VC4_REQUIRED=2.4.69 78 LIBDRM_ETNAVIV_REQUIRED=2.4.74 79 DRI2PROTO_REQUIRED=2.6 80 DRI3PROTO_REQUIRED=1.0 81 PRESENTPROTO_REQUIRED=1.0 82 GLPROTO_REQUIRED=1.4.14 83 LIBOMXIL_BELLAGIO_REQUIRED=0.0 84 LIBVA_REQUIRED=0.38.0 85 VDPAU_REQUIRED=1.1 86 WAYLAND_REQUIRED=1.11 87 XCB_REQUIRED=1.9.3 88 XCBDRI2_REQUIRED=1.8 89 XCBGLX_REQUIRED=1.8.1 90 XSHMFENCE_REQUIRED=1.1 91 XVMC_REQUIRED=1.0.6 92 PYTHON_MAKO_REQUIRED=0.8.0 93 LIBSENSORS_REQUIRED=4.0.0 94 95 dnl LLVM versions 96 LLVM_REQUIRED_GALLIUM=3.3.0 97 LLVM_REQUIRED_OPENCL=3.6.0 98 LLVM_REQUIRED_R600=3.6.0 99 LLVM_REQUIRED_RADEONSI=3.6.0 100 LLVM_REQUIRED_RADV=3.9.0 101 LLVM_REQUIRED_SWR=3.6.0 102 103 dnl Check for progs 104 AC_PROG_CPP 105 AC_PROG_CC 106 AC_PROG_CXX 107 AM_PROG_CC_C_O 108 AM_PROG_AS 109 AX_CHECK_GNU_MAKE 110 AC_CHECK_PROGS([PYTHON2], [python2.7 python2 python]) 111 AC_PROG_SED 112 AC_PROG_MKDIR_P 113 114 AC_SYS_LARGEFILE 115 116 LT_PREREQ([2.2]) 117 LT_INIT([disable-static]) 118 119 AC_CHECK_PROG(RM, rm, [rm -f]) 120 AC_CHECK_PROG(XXD, xxd, [xxd]) 121 122 AX_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])])) 125 AX_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 129 AC_CHECK_PROG(INDENT, indent, indent, cat) 130 if 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 138 fi 139 140 AX_CHECK_PYTHON_MAKO_MODULE($PYTHON_MAKO_REQUIRED) 141 142 if 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 146 else 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 152 fi 153 154 AC_PROG_INSTALL 155 156 dnl We need a POSIX shell for parts of the build. Assume we have one 157 dnl in most cases. 158 case "$host_os" in 159 solaris*) 160 # Solaris /bin/sh is too old/non-POSIX compliant 161 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh]) 162 SHELL="$POSIX_SHELL" 163 ;; 164 esac 165 166 dnl clang is mostly GCC-compatible, but its version is much lower, 167 dnl so we have to check for it. 168 AC_MSG_CHECKING([if compiling with clang]) 169 170 AC_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 178 AC_MSG_RESULT([$acv_mesa_CLANG]) 179 180 dnl If we're using GCC, make sure that it is at least version 4.2.0. Older 181 dnl versions are explictly not supported. 182 GEN_ASM_OFFSETS=no 183 USE_GNU99=no 184 if 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 208 fi 209 210 dnl We don't support building Mesa with Sun C compiler 211 dnl https://bugs.freedesktop.org/show_bug.cgi?id=93189 212 AC_CHECK_DECL([__SUNPRO_C], [SUNCC=yes], [SUNCC=no]) 213 if test "x$SUNCC" = xyes; then 214 AC_MSG_ERROR([Building with Sun C compiler is not supported, use GCC instead.]) 215 fi 216 217 dnl Check for compiler builtins 218 AX_GCC_BUILTIN([__builtin_bswap32]) 219 AX_GCC_BUILTIN([__builtin_bswap64]) 220 AX_GCC_BUILTIN([__builtin_clz]) 221 AX_GCC_BUILTIN([__builtin_clzll]) 222 AX_GCC_BUILTIN([__builtin_ctz]) 223 AX_GCC_BUILTIN([__builtin_expect]) 224 AX_GCC_BUILTIN([__builtin_ffs]) 225 AX_GCC_BUILTIN([__builtin_ffsll]) 226 AX_GCC_BUILTIN([__builtin_popcount]) 227 AX_GCC_BUILTIN([__builtin_popcountll]) 228 AX_GCC_BUILTIN([__builtin_unreachable]) 229 230 AX_GCC_FUNC_ATTRIBUTE([const]) 231 AX_GCC_FUNC_ATTRIBUTE([flatten]) 232 AX_GCC_FUNC_ATTRIBUTE([format]) 233 AX_GCC_FUNC_ATTRIBUTE([malloc]) 234 AX_GCC_FUNC_ATTRIBUTE([packed]) 235 AX_GCC_FUNC_ATTRIBUTE([pure]) 236 AX_GCC_FUNC_ATTRIBUTE([returns_nonnull]) 237 AX_GCC_FUNC_ATTRIBUTE([unused]) 238 AX_GCC_FUNC_ATTRIBUTE([visibility]) 239 AX_GCC_FUNC_ATTRIBUTE([warn_unused_result]) 240 AX_GCC_FUNC_ATTRIBUTE([weak]) 241 AX_GCC_FUNC_ATTRIBUTE([alias]) 242 243 AM_CONDITIONAL([GEN_ASM_OFFSETS], test "x$GEN_ASM_OFFSETS" = xyes) 244 245 dnl Make sure the pkg-config macros are defined 246 m4_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.])]) 251 PKG_PROG_PKG_CONFIG() 252 253 dnl LIB_DIR - library basename 254 LIB_DIR=`echo $libdir | $SED 's%.*/%%'` 255 AC_SUBST([LIB_DIR]) 256 257 dnl Cache LDFLAGS and CPPFLAGS so we can add to them and restore later 258 _SAVE_LDFLAGS="$LDFLAGS" 259 _SAVE_CPPFLAGS="$CPPFLAGS" 260 261 dnl Compiler macros 262 DEFINES="-D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS" 263 AC_SUBST([DEFINES]) 264 android=no 265 case "$host_os" in 266 *-android) 267 android=yes 268 ;; 269 linux*|*-gnu*|gnu*|cygwin*) 270 DEFINES="$DEFINES -D_GNU_SOURCE" 271 ;; 272 solaris*) 273 DEFINES="$DEFINES -DSVR4" 274 ;; 275 esac 276 277 AM_CONDITIONAL(HAVE_ANDROID, test "x$android" = xyes) 278 279 dnl Add flags for gcc and g++ 280 if 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" 335 fi 336 if 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" 354 fi 355 356 AC_SUBST([MSVC2013_COMPAT_CFLAGS]) 357 AC_SUBST([MSVC2013_COMPAT_CXXFLAGS]) 358 359 dnl even if the compiler appears to support it, using visibility attributes isn't 360 dnl going to do anything useful currently on cygwin apart from emit lots of warnings 361 case "$host_os" in 362 cygwin*) 363 VISIBILITY_CFLAGS="" 364 VISIBILITY_CXXFLAGS="" 365 ;; 366 esac 367 368 AC_SUBST([VISIBILITY_CFLAGS]) 369 AC_SUBST([VISIBILITY_CXXFLAGS]) 370 371 dnl 372 dnl Optional flags, check for compiler support 373 dnl 374 SSE41_CFLAGS="-msse4.1" 375 dnl Code compiled by GCC with -msse* assumes a 16 byte aligned 376 dnl stack, but on x86-32 such alignment is not guaranteed. 377 case "$target_cpu" in 378 i?86) 379 SSE41_CFLAGS="$SSE41_CFLAGS -mstackrealign" 380 ;; 381 esac 382 save_CFLAGS="$CFLAGS" 383 CFLAGS="$SSE41_CFLAGS $CFLAGS" 384 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ 385 #include <smmintrin.h> 386 int param; 387 int 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) 392 CFLAGS="$save_CFLAGS" 393 if test "x$SSE41_SUPPORTED" = x1; then 394 DEFINES="$DEFINES -DUSE_SSE41" 395 fi 396 AM_CONDITIONAL([SSE41_SUPPORTED], [test x$SSE41_SUPPORTED = x1]) 397 AC_SUBST([SSE41_CFLAGS], $SSE41_CFLAGS) 398 399 dnl Check for new-style atomic builtins 400 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ 401 int main() { 402 int n; 403 return __atomic_load_n(&n, __ATOMIC_ACQUIRE); 404 }]])], GCC_ATOMIC_BUILTINS_SUPPORTED=1) 405 if test "x$GCC_ATOMIC_BUILTINS_SUPPORTED" = x1; then 406 DEFINES="$DEFINES -DUSE_GCC_ATOMIC_BUILTINS" 407 fi 408 AM_CONDITIONAL([GCC_ATOMIC_BUILTINS_SUPPORTED], [test x$GCC_ATOMIC_BUILTINS_SUPPORTED = x1]) 409 410 dnl Check for Endianness 411 AC_C_BIGENDIAN( 412 little_endian=no, 413 little_endian=yes, 414 little_endian=no, 415 little_endian=no 416 ) 417 418 dnl Check for POWER8 Architecture 419 PWR8_CFLAGS="-mpower8-vector" 420 have_pwr8_intrinsics=no 421 AC_MSG_CHECKING(whether gcc supports -mpower8-vector) 422 save_CFLAGS=$CFLAGS 423 CFLAGS="$PWR8_CFLAGS $CFLAGS" 424 AC_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> 429 int 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) 435 CFLAGS=$save_CFLAGS 436 437 AC_ARG_ENABLE(pwr8, 438 [AC_HELP_STRING([--disable-pwr8-inst], 439 [disable POWER8-specific instructions])], 440 [enable_pwr8=$enableval], [enable_pwr8=auto]) 441 442 if test "x$enable_pwr8" = xno ; then 443 have_pwr8_intrinsics=disabled 444 fi 445 446 if 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" 450 else 451 PWR8_CFLAGS= 452 fi 453 454 AC_MSG_RESULT($have_pwr8_intrinsics) 455 if test "x$enable_pwr8" = xyes && test $have_pwr8_intrinsics = no ; then 456 AC_MSG_ERROR([POWER8 compiler support not detected]) 457 fi 458 459 if test $have_pwr8_intrinsics = yes && test $little_endian = no ; then 460 AC_MSG_WARN([POWER8 optimization is enabled only on POWER8 Little-Endian]) 461 fi 462 463 AC_SUBST([PWR8_CFLAGS], $PWR8_CFLAGS) 464 465 dnl Can't have static and shared libraries, default to static if user 466 dnl explicitly requested. If both disabled, set to static since shared 467 dnl was explicitly requested. 468 case "x$enable_static$enable_shared" in 469 xyesyes) 470 AC_MSG_ERROR([Cannot enable both static and shared. Building using --enable-shared is strongly recommended]) 471 ;; 472 xnono) 473 AC_MSG_ERROR([Cannot disable both static and shared. Building using --enable-shared is strongly recommended]) 474 ;; 475 esac 476 477 AM_CONDITIONAL(BUILD_SHARED, test "x$enable_shared" = xyes) 478 479 dnl 480 dnl other compiler options 481 dnl 482 AC_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 489 AC_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 496 if 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 504 fi 505 506 if 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 527 else 528 DEFINES="$DEFINES -DNDEBUG" 529 fi 530 531 DEFAULT_GL_LIB_NAME=GL 532 533 dnl 534 dnl Check if linker supports -Bsymbolic 535 dnl 536 save_LDFLAGS=$LDFLAGS 537 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic" 538 AC_MSG_CHECKING([if ld supports -Bsymbolic]) 539 AC_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="";]) 545 LDFLAGS=$save_LDFLAGS 546 547 AC_SUBST([BSYMBOLIC]) 548 549 dnl 550 dnl Check if linker supports garbage collection 551 dnl 552 save_LDFLAGS=$LDFLAGS 553 LDFLAGS="$LDFLAGS -Wl,--gc-sections" 554 AC_MSG_CHECKING([whether ld supports --gc-sections]) 555 AC_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="";]) 561 LDFLAGS=$save_LDFLAGS 562 563 AC_SUBST([GC_SECTIONS]) 564 565 dnl 566 dnl OpenBSD does not have DT_NEEDED entries for libc by design 567 dnl so when these flags are passed to ld via libtool the checks will fail 568 dnl 569 case "$host_os" in 570 openbsd* | darwin* ) 571 LD_NO_UNDEFINED="" ;; 572 *) 573 LD_NO_UNDEFINED="-Wl,--no-undefined" ;; 574 esac 575 576 AC_SUBST([LD_NO_UNDEFINED]) 577 578 dnl 579 dnl Check if linker supports version scripts 580 dnl 581 AC_MSG_CHECKING([if the linker supports version-scripts]) 582 save_LDFLAGS=$LDFLAGS 583 LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map" 584 cat > conftest.map <<EOF 585 VERSION_1 { 586 global: 587 main; 588 589 local: 590 *; 591 }; 592 EOF 593 AC_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)]) 597 LDFLAGS=$save_LDFLAGS 598 AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes") 599 600 dnl 601 dnl Check if linker supports dynamic list files 602 dnl 603 AC_MSG_CHECKING([if the linker supports --dynamic-list]) 604 save_LDFLAGS=$LDFLAGS 605 LDFLAGS="$LDFLAGS -Wl,--dynamic-list=conftest.dyn" 606 cat > conftest.dyn <<EOF 607 { 608 radeon_drm_winsys_create; 609 }; 610 EOF 611 AC_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)]) 615 LDFLAGS=$save_LDFLAGS 616 AM_CONDITIONAL(HAVE_LD_DYNAMIC_LIST, test "$have_ld_dynamic_list" = "yes") 617 618 dnl 619 dnl compatibility symlinks 620 dnl 621 case "$host_os" in 622 linux* ) 623 HAVE_COMPAT_SYMLINKS=yes ;; 624 * ) 625 HAVE_COMPAT_SYMLINKS=no ;; 626 esac 627 628 AM_CONDITIONAL(HAVE_COMPAT_SYMLINKS, test "x$HAVE_COMPAT_SYMLINKS" = xyes) 629 630 DEFAULT_GL_LIB_NAME=GL 631 632 dnl 633 dnl Libglvnd configuration 634 dnl 635 AC_ARG_ENABLE([libglvnd], 636 [AS_HELP_STRING([--enable-libglvnd], 637 [Build for libglvnd @<:@default=disabled@:>@])], 638 [enable_libglvnd="$enableval"], 639 [enable_libglvnd=no]) 640 AM_CONDITIONAL(USE_LIBGLVND_GLX, test "x$enable_libglvnd" = xyes) 641 #AM_COND_IF([USE_LIBGLVND_GLX], [DEFINES="${DEFINES} -DUSE_LIBGLVND_GLX=1"]) 642 if test "x$enable_libglvnd" = xyes ; then 643 DEFINES="${DEFINES} -DUSE_LIBGLVND_GLX=1" 644 DEFAULT_GL_LIB_NAME=GLX_mesa 645 fi 646 647 dnl 648 dnl library names 649 dnl 650 dnl Unfortunately we need to do a few things that libtool can't help us with, 651 dnl so we need some knowledge of shared library filenames: 652 dnl 653 dnl LIB_EXT is the extension used when creating symlinks for alternate 654 dnl filenames for a shared library which will be dynamically loaded 655 dnl 656 dnl IMP_LIB_EXT is the extension used when checking for the presence of a 657 dnl the file for a shared library we wish to link with 658 dnl 659 case "$host_os" in 660 darwin* ) 661 LIB_EXT='dylib' 662 IMP_LIB_EXT=$LIB_EXT 663 ;; 664 cygwin* ) 665 LIB_EXT='dll' 666 IMP_LIB_EXT='dll.a' 667 ;; 668 aix* ) 669 LIB_EXT='a' 670 IMP_LIB_EXT=$LIB_EXT 671 ;; 672 * ) 673 LIB_EXT='so' 674 IMP_LIB_EXT=$LIB_EXT 675 ;; 676 esac 677 678 AC_SUBST([LIB_EXT]) 679 680 AC_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"]) 685 AC_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]) 690 AS_IF([test "x$GL_LIB" = xyes], [GL_LIB="$DEFAULT_GL_LIB_NAME"]) 691 AS_IF([test "x$OSMESA_LIB" = xyes], [OSMESA_LIB=OSMesa]) 692 693 dnl 694 dnl Mangled Mesa support 695 dnl 696 AC_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 ) 702 if test "x${enable_mangling}" = "xyes" ; then 703 DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE" 704 GL_LIB="Mangled${GL_LIB}" 705 OSMESA_LIB="Mangled${OSMESA_LIB}" 706 fi 707 AC_SUBST([GL_LIB]) 708 AC_SUBST([OSMESA_LIB]) 709 710 dnl 711 dnl potentially-infringing-but-nobody-knows-for-sure stuff 712 dnl 713 AC_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 ) 719 if 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" 723 fi 724 725 dnl 726 dnl Arch/platform-specific settings 727 dnl 728 AC_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 ) 734 asm_arch="" 735 AC_MSG_CHECKING([whether to enable assembly]) 736 test "x$enable_asm" = xno && AC_MSG_RESULT([no]) 737 # disable if cross compiling on x86/x86_64 since we must run gen_matypes 738 if 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 747 fi 748 # check for supported arches 749 if 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 791 fi 792 793 AC_HEADER_MAJOR 794 AC_CHECK_HEADER([xlocale.h], [DEFINES="$DEFINES -DHAVE_XLOCALE_H"]) 795 AC_CHECK_HEADER([sys/sysctl.h], [DEFINES="$DEFINES -DHAVE_SYS_SYSCTL_H"]) 796 AC_CHECK_FUNC([strtof], [DEFINES="$DEFINES -DHAVE_STRTOF"]) 797 AC_CHECK_FUNC([mkostemp], [DEFINES="$DEFINES -DHAVE_MKOSTEMP"]) 798 799 dnl Check to see if dlopen is in default libraries (like Solaris, which 800 dnl has it in libc), or if libdl is needed to get it. 801 AC_CHECK_FUNC([dlopen], [DEFINES="$DEFINES -DHAVE_DLOPEN"], 802 [AC_CHECK_LIB([dl], [dlopen], 803 [DEFINES="$DEFINES -DHAVE_DLOPEN"; DLOPEN_LIBS="-ldl"])]) 804 AC_SUBST([DLOPEN_LIBS]) 805 806 dnl Check if that library also has dladdr 807 save_LIBS="$LIBS" 808 LIBS="$LIBS $DLOPEN_LIBS" 809 AC_CHECK_FUNCS([dladdr]) 810 LIBS="$save_LIBS" 811 812 case "$host_os" in 813 darwin*) 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 ;; 821 esac 822 823 dnl See if posix_memalign is available 824 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"]) 825 826 dnl Check for pthreads 827 AX_PTHREAD 828 if test "x$ax_pthread_ok" = xno; then 829 AC_MSG_ERROR([Building mesa on this platform requires pthreads]) 830 fi 831 dnl AX_PTHREADS leaves PTHREAD_LIBS empty for gcc and sets PTHREAD_CFLAGS 832 dnl to -pthread, which causes problems if we need -lpthread to appear in 833 dnl pkgconfig files. Since Android doesn't have a pthread lib, this check 834 dnl is not valid for that platform. 835 if test "x$android" = xno; then 836 test -z "$PTHREAD_LIBS" && PTHREAD_LIBS="-lpthread" 837 fi 838 839 dnl pthread-stubs is mandatory on targets where it exists 840 case "$host_os" in 841 cygwin* ) 842 pthread_stubs_possible="no" 843 ;; 844 * ) 845 pthread_stubs_possible="yes" 846 ;; 847 esac 848 849 if test "x$pthread_stubs_possible" = xyes; then 850 PKG_CHECK_MODULES(PTHREADSTUBS, pthread-stubs) 851 AC_SUBST(PTHREADSTUBS_CFLAGS) 852 AC_SUBST(PTHREADSTUBS_LIBS) 853 fi 854 855 dnl SELinux awareness. 856 AC_ARG_ENABLE([selinux], 857 [AS_HELP_STRING([--enable-selinux], 858 [Build SELinux-aware Mesa @<:@default=disabled@:>@])], 859 [MESA_SELINUX="$enableval"], 860 [MESA_SELINUX=no]) 861 if 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" 869 fi 870 AC_SUBST([SELINUX_CFLAGS]) 871 AC_SUBST([SELINUX_LIBS]) 872 873 dnl 874 dnl LLVM 875 dnl 876 AC_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 882 AC_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 888 PKG_CHECK_MODULES([LIBELF], [libelf], [have_libelf=yes], [have_libelf=no]) 889 if 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]) 895 fi 896 897 if 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 903 fi 904 905 llvm_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 916 llvm_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 931 llvm_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. 944 strip_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 960 llvm_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 999 require_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 1005 llvm_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 1040 radeon_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 1061 llvm_set_environment_variables 1062 1063 AC_SUBST([MESA_LLVM]) 1064 AC_SUBST([LLVM_BINDIR]) 1065 AC_SUBST([LLVM_CFLAGS]) 1066 AC_SUBST([LLVM_CPPFLAGS]) 1067 AC_SUBST([LLVM_CXXFLAGS]) 1068 AC_SUBST([LLVM_LIBDIR]) 1069 AC_SUBST([LLVM_LIBS]) 1070 AC_SUBST([LLVM_LDFLAGS]) 1071 AC_SUBST([LLVM_INCLUDEDIR]) 1072 AC_SUBST([LLVM_VERSION]) 1073 1074 dnl Options for APIs 1075 AC_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]) 1080 AC_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]) 1085 AC_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 1091 AC_ARG_ENABLE([dri], 1092 [AS_HELP_STRING([--enable-dri], 1093 [enable DRI modules @<:@default=enabled@:>@])], 1094 [enable_dri="$enableval"], 1095 [enable_dri=yes]) 1096 1097 AC_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]) 1102 AM_CONDITIONAL(HAVE_GALLIUM_EXTRA_HUD, test "x$enable_gallium_extra_hud" = xyes) 1103 if test "x$enable_gallium_extra_hud" = xyes ; then 1104 DEFINES="${DEFINES} -DHAVE_GALLIUM_EXTRA_HUD=1" 1105 fi 1106 1107 #TODO: no pkgconfig .pc available for libsensors. 1108 #PKG_CHECK_MODULES([LIBSENSORS], [libsensors >= $LIBSENSORS_REQUIRED], [enable_lmsensors=yes], [enable_lmsensors=no]) 1109 AC_ARG_ENABLE([lmsensors], 1110 [AS_HELP_STRING([--enable-lmsensors], 1111 [enable HUD lmsensor support @<:@default=disabled@:>@])], 1112 [enable_lmsensors="$enableval"], 1113 [enable_lmsensors=no]) 1114 AM_CONDITIONAL(HAVE_LIBSENSORS, test "x$enable_lmsensors" = xyes) 1115 if test "x$enable_lmsensors" = xyes ; then 1116 DEFINES="${DEFINES} -DHAVE_LIBSENSORS=1" 1117 LIBSENSORS_LIBS="-lsensors" 1118 else 1119 LIBSENSORS_LIBS="" 1120 fi 1121 AC_SUBST(LIBSENSORS_LIBS) 1122 1123 case "$host_os" in 1124 linux*) 1125 dri3_default=yes 1126 ;; 1127 *) 1128 dri3_default=no 1129 ;; 1130 esac 1131 1132 if test "x$enable_dri" = xno; then 1133 dri3_default=no 1134 fi 1135 1136 AC_ARG_ENABLE([dri3], 1137 [AS_HELP_STRING([--enable-dri3], 1138 [enable DRI3 @<:@default=auto@:>@])], 1139 [enable_dri3="$enableval"], 1140 [enable_dri3="$dri3_default"]) 1141 AC_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]) 1146 AC_ARG_ENABLE([osmesa], 1147 [AS_HELP_STRING([--enable-osmesa], 1148 [enable OSMesa library @<:@default=disabled@:>@])], 1149 [enable_osmesa="$enableval"], 1150 [enable_osmesa=no]) 1151 AC_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]) 1156 AC_ARG_ENABLE([egl], 1157 [AS_HELP_STRING([--disable-egl], 1158 [disable EGL library @<:@default=enabled@:>@])], 1159 [enable_egl="$enableval"], 1160 [enable_egl=yes]) 1161 1162 AC_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]) 1167 AC_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]) 1179 AC_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 1185 AC_ARG_ENABLE([xvmc], 1186 [AS_HELP_STRING([--enable-xvmc], 1187 [enable xvmc library @<:@default=auto@:>@])], 1188 [enable_xvmc="$enableval"], 1189 [enable_xvmc=auto]) 1190 AC_ARG_ENABLE([vdpau], 1191 [AS_HELP_STRING([--enable-vdpau], 1192 [enable vdpau library @<:@default=auto@:>@])], 1193 [enable_vdpau="$enableval"], 1194 [enable_vdpau=auto]) 1195 AC_ARG_ENABLE([omx], 1196 [AS_HELP_STRING([--enable-omx], 1197 [enable OpenMAX library @<:@default=disabled@:>@])], 1198 [enable_omx="$enableval"], 1199 [enable_omx=no]) 1200 AC_ARG_ENABLE([va], 1201 [AS_HELP_STRING([--enable-va], 1202 [enable va library @<:@default=auto@:>@])], 1203 [enable_va="$enableval"], 1204 [enable_va=auto]) 1205 AC_ARG_ENABLE([opencl], 1206 [AS_HELP_STRING([--enable-opencl], 1207 [enable OpenCL library @<:@default=disabled@:>@])], 1208 [enable_opencl="$enableval"], 1209 [enable_opencl=no]) 1210 AC_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 1217 AC_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 1226 GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast" 1227 1228 AC_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. 1238 case "$with_gallium_drivers" in 1239 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;; 1240 no) with_gallium_drivers='' ;; 1241 esac 1242 1243 if 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]) 1254 fi 1255 1256 # Building OpenGL ES1 and/or ES2 without OpenGL is not supported on mesa 9.0.x 1257 if test "x$enable_opengl" = xno -a \ 1258 "x$enable_gles1" = xyes; then 1259 AC_MSG_ERROR([Building OpenGL ES1 without OpenGL is not supported]) 1260 fi 1261 1262 if test "x$enable_opengl" = xno -a \ 1263 "x$enable_gles2" = xyes; then 1264 AC_MSG_ERROR([Building OpenGL ES2 without OpenGL is not supported]) 1265 fi 1266 1267 AM_CONDITIONAL(HAVE_OPENGL, test "x$enable_opengl" = xyes) 1268 AM_CONDITIONAL(HAVE_OPENGL_ES1, test "x$enable_gles1" = xyes) 1269 AM_CONDITIONAL(HAVE_OPENGL_ES2, test "x$enable_gles2" = xyes) 1270 AM_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 1275 if 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 1283 fi 1284 case "x$enable_glx" in 1285 xdri | 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 ;; 1313 xno) 1314 ;; 1315 *) 1316 AC_MSG_ERROR([Illegal value for --enable-glx: $enable_glx]) 1317 ;; 1318 esac 1319 1320 AM_CONDITIONAL(HAVE_GLX, test "x$enable_glx" != xno) 1321 AM_CONDITIONAL(HAVE_DRI_GLX, test "x$enable_glx" = xdri) 1322 AM_CONDITIONAL(HAVE_XLIB_GLX, test "x$enable_glx" = xxlib) 1323 AM_CONDITIONAL(HAVE_GALLIUM_XLIB_GLX, test "x$enable_glx" = xgallium-xlib) 1324 1325 dnl 1326 dnl Libglvnd configuration 1327 dnl 1328 AC_ARG_ENABLE([libglvnd], 1329 [AS_HELP_STRING([--enable-libglvnd], 1330 [Build for libglvnd @<:@default=disabled@:>@])], 1331 [enable_libglvnd="$enableval"], 1332 [enable_libglvnd=no]) 1333 AM_CONDITIONAL(USE_LIBGLVND_GLX, test "x$enable_libglvnd" = xyes) 1334 if 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 1352 fi 1353 1354 # Check for libdrm 1355 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED], 1356 [have_libdrm=yes], [have_libdrm=no]) 1357 if test "x$have_libdrm" = xyes; then 1358 DEFINES="$DEFINES -DHAVE_LIBDRM" 1359 fi 1360 1361 require_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 1369 case "$host_os" in 1370 darwin*) 1371 dri_platform='apple' ;; 1372 cygwin*) 1373 dri_platform='windows' ;; 1374 gnu*) 1375 dri_platform='none' ;; 1376 *) 1377 dri_platform='drm' ;; 1378 esac 1379 1380 if test "x$enable_dri" = xyes -a "x$dri_platform" = xdrm -a "x$have_libdrm" = xyes; then 1381 have_drisw_kms='yes' 1382 fi 1383 1384 AM_CONDITIONAL(HAVE_DRICOMMON, test "x$enable_dri" = xyes ) 1385 AM_CONDITIONAL(HAVE_DRISW, test "x$enable_dri" = xyes ) 1386 AM_CONDITIONAL(HAVE_DRISW_KMS, test "x$have_drisw_kms" = xyes ) 1387 AM_CONDITIONAL(HAVE_DRI2, test "x$enable_dri" = xyes -a "x$dri_platform" = xdrm -a "x$have_libdrm" = xyes ) 1388 AM_CONDITIONAL(HAVE_DRI3, test "x$enable_dri3" = xyes -a "x$dri_platform" = xdrm -a "x$have_libdrm" = xyes ) 1389 AM_CONDITIONAL(HAVE_APPLEDRI, test "x$enable_dri" = xyes -a "x$dri_platform" = xapple ) 1390 AM_CONDITIONAL(HAVE_LMSENSORS, test "x$enable_lmsensors" = xyes ) 1391 AM_CONDITIONAL(HAVE_GALLIUM_EXTRA_HUD, test "x$enable_gallium_extra_hud" = xyes ) 1392 AM_CONDITIONAL(HAVE_WINDOWSDRI, test "x$enable_dri" = xyes -a "x$dri_platform" = xwindows ) 1393 1394 AC_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 1400 case "x$enable_opengl$enable_gles1$enable_gles2" in 1401 x*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 ;; 1407 esac 1408 1409 AM_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 ? 1414 enable_shared_pipe_drivers=no 1415 1416 dnl 1417 dnl Driver specific build directories 1418 dnl 1419 1420 if 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 1427 fi 1428 1429 require_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 1445 if 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 1452 fi 1453 1454 AC_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 1461 dnl 1462 dnl libGL configuration per driver 1463 dnl 1464 if test "x$enable_glx" != xno; then 1465 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED]) 1466 fi 1467 case "x$enable_glx" in 1468 xxlib | 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 ;; 1478 xdri) 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 ;; 1529 esac 1530 1531 # This is outside the case (above) so that it is invoked even for non-GLX 1532 # builds. 1533 AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes) 1534 1535 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS" 1536 GLESv1_CM_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS" 1537 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS" 1538 GLESv2_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS" 1539 1540 AC_SUBST([X11_INCLUDES]) 1541 AC_SUBST([GL_LIB_DEPS]) 1542 AC_SUBST([GL_PC_REQ_PRIV]) 1543 AC_SUBST([GL_PC_LIB_PRIV]) 1544 AC_SUBST([GL_PC_CFLAGS]) 1545 AC_SUBST([DRI_PC_REQ_PRIV]) 1546 AC_SUBST([GLESv1_CM_LIB_DEPS]) 1547 AC_SUBST([GLESv1_CM_PC_LIB_PRIV]) 1548 AC_SUBST([GLESv2_LIB_DEPS]) 1549 AC_SUBST([GLESv2_PC_LIB_PRIV]) 1550 1551 AC_SUBST([HAVE_XF86VIDMODE]) 1552 1553 dnl 1554 dnl More GLX setup 1555 dnl 1556 case "x$enable_glx" in 1557 xxlib | xgallium-xlib) 1558 DEFINES="$DEFINES -DUSE_XSHM" 1559 ;; 1560 xdri) 1561 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING" 1562 if test "x$driglx_direct" = xyes; then 1563 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING" 1564 fi 1565 ;; 1566 esac 1567 1568 dnl 1569 dnl TLS detection 1570 dnl 1571 1572 AC_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]) 1577 AC_SUBST(GLX_TLS, ${GLX_USE_TLS}) 1578 1579 if test "x$GLX_USE_TLS" = xyes; then 1580 DEFINES="$DEFINES -DGLX_USE_TLS" 1581 fi 1582 1583 dnl Read-only text section on x86 hardened platforms 1584 AC_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]) 1589 if test "x$enable_glx_read_only_text" = xyes; then 1590 DEFINES="$DEFINES -DGLX_X86_READONLY_TEXT" 1591 fi 1592 1593 dnl 1594 dnl More DRI setup 1595 dnl 1596 dnl Directory for DRI drivers 1597 AC_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']) 1602 AC_SUBST([DRI_DRIVER_INSTALL_DIR]) 1603 dnl Extra search path for DRI drivers 1604 AC_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}']) 1609 AC_SUBST([DRI_DRIVER_SEARCH_DIR]) 1610 dnl Which drivers to build - default is chosen by platform 1611 AC_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 1618 if 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 1624 fi 1625 if test "x$with_dri_drivers" = xno; then 1626 with_dri_drivers='' 1627 fi 1628 1629 dnl If $with_dri_drivers is yes, drivers will be added through 1630 dnl platform checks. Set DEFINES and LIB_DEPS 1631 if 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" 1677 fi 1678 1679 AC_SUBST([DRI_LIB_DEPS]) 1680 1681 DRI_DIRS='' 1682 dnl Duplicates in DRI_DIRS are removed by sorting it at the end of this block 1683 if 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" " "` 1721 fi 1722 1723 1724 dnl 1725 dnl Gallium LLVM 1726 dnl 1727 dnl With follow-up commits we'll rework --enable-gallium-llvm to --enable-llvm 1728 dnl Since that is too invasive to stable, do the more conservative thing for now 1729 dnl and consider it as a global LLVM toggle. 1730 dnl 1731 AC_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 1737 if 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 1746 fi 1747 1748 if 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]) 1750 fi 1751 1752 # 1753 # Vulkan driver configuration 1754 # 1755 1756 AC_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. 1766 case "x$with_vulkan_drivers" in 1767 xyes) with_vulkan_drivers="$VULKAN_DRIVERS_DEFAULT" ;; 1768 xno) with_vulkan_drivers='' ;; 1769 esac 1770 1771 AC_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']) 1776 AC_SUBST([VULKAN_ICD_INSTALL_DIR]) 1777 1778 if 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" " "` 1800 fi 1801 1802 1803 DEFINES="$DEFINES -DENABLE_SHADER_CACHE" 1804 AM_CONDITIONAL(NEED_MEGADRIVER, test -n "$DRI_DIRS") 1805 AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_glx" = xxlib -o \ 1806 "x$enable_osmesa" = xyes -o \ 1807 -n "$DRI_DIRS") 1808 1809 dnl 1810 dnl OSMesa configuration 1811 dnl 1812 1813 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...) 1814 AC_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]) 1819 if 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 1824 fi 1825 case "x$osmesa_bits" in 1826 x8) 1827 OSMESA_LIB="${OSMESA_LIB}" 1828 ;; 1829 x16|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 ;; 1836 esac 1837 1838 if 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" 1846 fi 1847 1848 AC_SUBST([OSMESA_LIB_DEPS]) 1849 AC_SUBST([OSMESA_PC_REQ]) 1850 AC_SUBST([OSMESA_PC_LIB_PRIV]) 1851 1852 dnl 1853 dnl gbm configuration 1854 dnl 1855 if test "x$enable_gbm" = xyes; then 1856 require_dri_shared_libs_and_glapi "gbm" 1857 fi 1858 AM_CONDITIONAL(HAVE_GBM, test "x$enable_gbm" = xyes) 1859 # FINISHME: GBM has a number of dependencies which we should add below 1860 GBM_PC_REQ_PRIV="" 1861 GBM_PC_LIB_PRIV="$DLOPEN_LIBS" 1862 AC_SUBST([GBM_PC_REQ_PRIV]) 1863 AC_SUBST([GBM_PC_LIB_PRIV]) 1864 1865 dnl 1866 dnl EGL configuration 1867 dnl 1868 1869 if 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" 1875 fi 1876 AM_CONDITIONAL(HAVE_EGL, test "x$enable_egl" = xyes) 1877 AC_SUBST([EGL_LIB_DEPS]) 1878 1879 gallium_st="mesa" 1880 1881 dnl 1882 dnl XA configuration 1883 dnl 1884 if 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" 1894 fi 1895 AM_CONDITIONAL(HAVE_ST_XA, test "x$enable_xa" = xyes) 1896 1897 dnl 1898 dnl Gallium G3DVL configuration 1899 dnl 1900 if 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 1916 fi 1917 1918 if 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 1924 fi 1925 AM_CONDITIONAL(NEED_GALLIUM_VL, test "x$need_gallium_vl" = xyes) 1926 1927 if 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 1938 fi 1939 AM_CONDITIONAL(NEED_GALLIUM_VL_WINSYS, test "x$need_gallium_vl_winsys" = xyes) 1940 1941 if test "x$enable_xvmc" = xyes; then 1942 PKG_CHECK_MODULES([XVMC], [xvmc >= $XVMC_REQUIRED]) 1943 gallium_st="$gallium_st xvmc" 1944 fi 1945 AM_CONDITIONAL(HAVE_ST_XVMC, test "x$enable_xvmc" = xyes) 1946 1947 if 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" 1951 fi 1952 AM_CONDITIONAL(HAVE_ST_VDPAU, test "x$enable_vdpau" = xyes) 1953 1954 if test "x$enable_omx" = xyes; then 1955 PKG_CHECK_MODULES([OMX], [libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED]) 1956 gallium_st="$gallium_st omx" 1957 fi 1958 AM_CONDITIONAL(HAVE_ST_OMX, test "x$enable_omx" = xyes) 1959 1960 if test "x$enable_va" = xyes; then 1961 PKG_CHECK_MODULES([VA], [libva >= $LIBVA_REQUIRED]) 1962 gallium_st="$gallium_st va" 1963 fi 1964 AM_CONDITIONAL(HAVE_ST_VA, test "x$enable_va" = xyes) 1965 1966 dnl 1967 dnl Nine Direct3D9 configuration 1968 dnl 1969 if 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" 1985 fi 1986 AM_CONDITIONAL(HAVE_ST_NINE, test "x$enable_nine" = xyes) 1987 1988 dnl 1989 dnl OpenCL configuration 1990 dnl 1991 1992 AC_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 1998 PKG_CHECK_EXISTS([libclc], [have_libclc=yes], [have_libclc=no]) 1999 2000 if 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.])]) 2066 fi 2067 AM_CONDITIONAL(HAVE_CLOVER, test "x$enable_opencl" = xyes) 2068 AM_CONDITIONAL(HAVE_CLOVER_ICD, test "x$enable_opencl_icd" = xyes) 2069 AC_SUBST([OPENCL_LIBNAME]) 2070 AC_SUBST([CLANG_RESOURCE_DIR]) 2071 2072 dnl 2073 dnl Gallium configuration 2074 dnl 2075 AM_CONDITIONAL(HAVE_GALLIUM, test -n "$with_gallium_drivers") 2076 2077 dnl 2078 dnl EGL Platforms configuration 2079 dnl 2080 AC_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 2095 if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then 2096 AC_MSG_ERROR([cannot build egl state tracker without EGL library]) 2097 fi 2098 2099 PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner], 2100 WAYLAND_SCANNER=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner`, 2101 WAYLAND_SCANNER='') 2102 if test "x$WAYLAND_SCANNER" = x; then 2103 AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner]) 2104 fi 2105 2106 # Do per-EGL platform setups and checks 2107 egl_platforms=`IFS=', '; echo $with_egl_platforms` 2108 for 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 2145 done 2146 2147 # libEGL wants to default to the first platform specified in 2148 # ./configure. parse that here. 2149 if 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" 2152 else 2153 EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM" 2154 fi 2155 2156 AM_CONDITIONAL(HAVE_PLATFORM_X11, echo "$egl_platforms" | grep -q 'x11') 2157 AM_CONDITIONAL(HAVE_PLATFORM_WAYLAND, echo "$egl_platforms" | grep -q 'wayland') 2158 AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep -q 'drm') 2159 AM_CONDITIONAL(HAVE_EGL_PLATFORM_SURFACELESS, echo "$egl_platforms" | grep -q 'surfaceless') 2160 AM_CONDITIONAL(HAVE_EGL_PLATFORM_ANDROID, echo "$egl_platforms" | grep -q 'android') 2161 2162 AC_SUBST([EGL_NATIVE_PLATFORM]) 2163 AC_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. 2167 if ! 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" 2170 fi 2171 2172 dnl Directory for XVMC libs 2173 AC_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}']) 2178 AC_SUBST([XVMC_LIB_INSTALL_DIR]) 2179 2180 dnl 2181 dnl Gallium Tests 2182 dnl 2183 AM_CONDITIONAL(HAVE_GALLIUM_TESTS, test "x$enable_gallium_tests" = xyes) 2184 2185 dnl Directory for VDPAU libs 2186 AC_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']) 2191 AC_SUBST([VDPAU_LIB_INSTALL_DIR]) 2192 2193 dnl Directory for OMX libs 2194 2195 AC_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`]) 2200 AC_SUBST([OMX_LIB_INSTALL_DIR]) 2201 2202 dnl Directory for VA libs 2203 2204 AC_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"]) 2209 AC_SUBST([VA_LIB_INSTALL_DIR]) 2210 2211 AC_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"]) 2216 AC_SUBST([D3D_DRIVER_INSTALL_DIR]) 2217 2218 dnl 2219 dnl r300 doesn't strictly require LLVM, but for performance reasons we 2220 dnl highly recommend LLVM usage. So require it at least on x86 and x86_64 2221 dnl architectures. 2222 dnl 2223 r300_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 2231 dnl 2232 dnl DRM is needed by X, Wayland, and offscreen rendering. 2233 dnl Surfaceless is an alternative for the last one. 2234 dnl 2235 require_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 2248 radeon_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 2255 swr_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 2294 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block 2295 if 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 2404 fi 2405 2406 if 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" 2409 fi 2410 2411 dnl We need to validate some needed dependencies for renderonly drivers. 2412 2413 if test "x$HAVE_GALLIUM_ETNAVIV" != xyes -a "x$HAVE_GALLIUM_IMX" == xyes ; then 2414 AC_ERROR([Building with imx requires etnaviv]) 2415 fi 2416 2417 dnl 2418 dnl Set defines and buildtime variables only when using LLVM. 2419 dnl 2420 if 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 2477 fi 2478 2479 AM_CONDITIONAL(HAVE_GALLIUM_SVGA, test "x$HAVE_GALLIUM_SVGA" = xyes) 2480 AM_CONDITIONAL(HAVE_GALLIUM_I915, test "x$HAVE_GALLIUM_I915" = xyes) 2481 AM_CONDITIONAL(HAVE_GALLIUM_ILO, test "x$HAVE_GALLIUM_ILO" = xyes) 2482 AM_CONDITIONAL(HAVE_GALLIUM_R300, test "x$HAVE_GALLIUM_R300" = xyes) 2483 AM_CONDITIONAL(HAVE_GALLIUM_R600, test "x$HAVE_GALLIUM_R600" = xyes) 2484 AM_CONDITIONAL(HAVE_GALLIUM_RADEONSI, test "x$HAVE_GALLIUM_RADEONSI" = xyes) 2485 AM_CONDITIONAL(HAVE_GALLIUM_RADEON_COMMON, test "x$HAVE_GALLIUM_R600" = xyes -o \ 2486 "x$HAVE_GALLIUM_RADEONSI" = xyes) 2487 AM_CONDITIONAL(HAVE_GALLIUM_NOUVEAU, test "x$HAVE_GALLIUM_NOUVEAU" = xyes) 2488 AM_CONDITIONAL(HAVE_GALLIUM_FREEDRENO, test "x$HAVE_GALLIUM_FREEDRENO" = xyes) 2489 AM_CONDITIONAL(HAVE_GALLIUM_ETNAVIV, test "x$HAVE_GALLIUM_ETNAVIV" = xyes) 2490 AM_CONDITIONAL(HAVE_GALLIUM_IMX, test "x$HAVE_GALLIUM_IMX" = xyes) 2491 AM_CONDITIONAL(HAVE_GALLIUM_SOFTPIPE, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes) 2492 AM_CONDITIONAL(HAVE_GALLIUM_LLVMPIPE, test "x$HAVE_GALLIUM_LLVMPIPE" = xyes) 2493 AM_CONDITIONAL(HAVE_GALLIUM_SWR, test "x$HAVE_GALLIUM_SWR" = xyes) 2494 AM_CONDITIONAL(HAVE_GALLIUM_SWRAST, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes -o \ 2495 "x$HAVE_GALLIUM_LLVMPIPE" = xyes -o \ 2496 "x$HAVE_GALLIUM_SWR" = xyes) 2497 AM_CONDITIONAL(HAVE_GALLIUM_VC4, test "x$HAVE_GALLIUM_VC4" = xyes) 2498 AM_CONDITIONAL(HAVE_GALLIUM_VIRGL, test "x$HAVE_GALLIUM_VIRGL" = xyes) 2499 2500 AM_CONDITIONAL(HAVE_GALLIUM_STATIC_TARGETS, test "x$enable_shared_pipe_drivers" = xno) 2501 2502 if test "x$enable_dri" = xyes; then 2503 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRI" 2504 fi 2505 2506 if test "x$have_drisw_kms" = xyes; then 2507 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_KMS" 2508 fi 2509 AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES]) 2510 2511 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes) 2512 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes) 2513 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes) 2514 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes) 2515 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes) 2516 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes) 2517 2518 AM_CONDITIONAL(HAVE_RADEON_VULKAN, test "x$HAVE_RADEON_VULKAN" = xyes) 2519 AM_CONDITIONAL(HAVE_INTEL_VULKAN, test "x$HAVE_INTEL_VULKAN" = xyes) 2520 2521 AM_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 2525 AM_CONDITIONAL(HAVE_INTEL_DRIVERS, test "x$HAVE_INTEL_VULKAN" = xyes -o \ 2526 "x$HAVE_I965_DRI" = xyes) 2527 2528 AM_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) 2531 AM_CONDITIONAL(NEED_WINSYS_XLIB, test "x$enable_glx" = xgallium-xlib) 2532 AM_CONDITIONAL(NEED_RADEON_LLVM, test x$NEED_RADEON_LLVM = xyes) 2533 AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes) 2534 AM_CONDITIONAL(HAVE_GALLIUM_LLVM, test "x$enable_gallium_llvm" = xyes) 2535 AM_CONDITIONAL(USE_VC4_SIMULATOR, test x$USE_VC4_SIMULATOR = xyes) 2536 if 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.]) 2538 fi 2539 2540 AM_CONDITIONAL(HAVE_LIBDRM, test "x$have_libdrm" = xyes) 2541 AM_CONDITIONAL(HAVE_OSMESA, test "x$enable_osmesa" = xyes) 2542 AM_CONDITIONAL(HAVE_GALLIUM_OSMESA, test "x$enable_gallium_osmesa" = xyes) 2543 AM_CONDITIONAL(HAVE_COMMON_OSMESA, test "x$enable_osmesa" = xyes -o \ 2544 "x$enable_gallium_osmesa" = xyes) 2545 2546 AM_CONDITIONAL(HAVE_X86_ASM, test "x$asm_arch" = xx86 -o "x$asm_arch" = xx86_64) 2547 AM_CONDITIONAL(HAVE_X86_64_ASM, test "x$asm_arch" = xx86_64) 2548 AM_CONDITIONAL(HAVE_SPARC_ASM, test "x$asm_arch" = xsparc) 2549 2550 AC_SUBST([NINE_MAJOR], 1) 2551 AC_SUBST([NINE_MINOR], 0) 2552 AC_SUBST([NINE_TINY], 0) 2553 AC_SUBST([NINE_VERSION], "$NINE_MAJOR.$NINE_MINOR.$NINE_TINY") 2554 2555 AC_SUBST([VDPAU_MAJOR], 1) 2556 AC_SUBST([VDPAU_MINOR], 0) 2557 2558 VA_MAJOR=`$PKG_CONFIG --modversion libva | $SED -n 's/\([[^\.]]*\)\..*$/\1/p'` 2559 VA_MINOR=`$PKG_CONFIG --modversion libva | $SED -n 's/.*\.\(.*\)\..*$/\1/p'` 2560 AC_SUBST([VA_MAJOR], $VA_MAJOR) 2561 AC_SUBST([VA_MINOR], $VA_MINOR) 2562 2563 AM_CONDITIONAL(HAVE_VULKAN_COMMON, test "x$VULKAN_DRIVERS" != "x") 2564 2565 AC_SUBST([XVMC_MAJOR], 1) 2566 AC_SUBST([XVMC_MINOR], 0) 2567 2568 XA_HEADER="$srcdir/src/gallium/state_trackers/xa/xa_tracker.h" 2569 XA_MAJOR=`grep "#define XA_TRACKER_VERSION_MAJOR" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_MAJOR //'` 2570 XA_MINOR=`grep "#define XA_TRACKER_VERSION_MINOR" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_MINOR //'` 2571 XA_TINY=`grep "#define XA_TRACKER_VERSION_PATCH" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_PATCH //'` 2572 2573 AC_SUBST([XA_MAJOR], $XA_MAJOR) 2574 AC_SUBST([XA_MINOR], $XA_MINOR) 2575 AC_SUBST([XA_TINY], $XA_TINY) 2576 AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_TINY") 2577 2578 AC_ARG_ENABLE(valgrind, 2579 [AS_HELP_STRING([--enable-valgrind], 2580 [Build mesa with valgrind support (default: auto)])], 2581 [VALGRIND=$enableval], [VALGRIND=auto]) 2582 if test "x$VALGRIND" != xno; then 2583 PKG_CHECK_MODULES(VALGRIND, [valgrind], [have_valgrind=yes], [have_valgrind=no]) 2584 fi 2585 AC_MSG_CHECKING([whether to enable Valgrind support]) 2586 if test "x$VALGRIND" = xauto; then 2587 VALGRIND="$have_valgrind" 2588 fi 2589 2590 if 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]) 2595 fi 2596 2597 AC_MSG_RESULT([$VALGRIND]) 2598 2599 dnl Restore LDFLAGS and CPPFLAGS 2600 LDFLAGS="$_SAVE_LDFLAGS" 2601 CPPFLAGS="$_SAVE_CPPFLAGS" 2602 2603 dnl Suppress clang's warnings about unused CFLAGS and CXXFLAGS 2604 if test "x$acv_mesa_CLANG" = xyes; then 2605 CFLAGS="$CFLAGS -Qunused-arguments" 2606 CXXFLAGS="$CXXFLAGS -Qunused-arguments" 2607 fi 2608 2609 dnl Add user CFLAGS and CXXFLAGS 2610 CFLAGS="$CFLAGS $USER_CFLAGS" 2611 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS" 2612 2613 dnl Substitute the config 2614 AC_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 2727 AC_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 2734 dnl 2735 dnl Output some configuration info for the user 2736 dnl 2737 echo "" 2738 echo " prefix: $prefix" 2739 echo " exec_prefix: $exec_prefix" 2740 echo " libdir: $libdir" 2741 echo " includedir: $includedir" 2742 2743 dnl API info 2744 echo "" 2745 echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)" 2746 2747 dnl Driver info 2748 echo "" 2749 case "x$enable_osmesa$enable_gallium_osmesa" in 2750 xnoyes) 2751 echo " OSMesa: lib$OSMESA_LIB (Gallium)" 2752 ;; 2753 xyesno) 2754 echo " OSMesa: lib$OSMESA_LIB" 2755 ;; 2756 xnono) 2757 echo " OSMesa: no" 2758 ;; 2759 esac 2760 2761 echo "" 2762 if 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" 2770 fi 2771 2772 case "x$enable_glx" in 2773 xdri) 2774 echo " GLX: DRI-based" 2775 ;; 2776 xxlib) 2777 echo " GLX: Xlib-based" 2778 ;; 2779 xgallium-xlib) 2780 echo " GLX: Xlib-based (Gallium)" 2781 ;; 2782 *) 2783 echo " GLX: $enable_glx" 2784 ;; 2785 esac 2786 2787 dnl EGL 2788 echo "" 2789 echo " EGL: $enable_egl" 2790 if 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" 2802 fi 2803 if test "x$enable_gbm" = xyes; then 2804 echo " GBM: yes" 2805 else 2806 echo " GBM: no" 2807 fi 2808 2809 # Vulkan 2810 echo "" 2811 if test "x$VULKAN_DRIVERS" != x; then 2812 echo " Vulkan drivers: $VULKAN_DRIVERS" 2813 echo " Vulkan ICD dir: $VULKAN_ICD_INSTALL_DIR" 2814 else 2815 echo " Vulkan drivers: no" 2816 fi 2817 2818 echo "" 2819 if test "x$enable_gallium_llvm" = xyes; then 2820 echo " llvm: yes" 2821 echo " llvm-config: $LLVM_CONFIG" 2822 echo " llvm-version: $LLVM_VERSION" 2823 else 2824 echo " llvm: no" 2825 fi 2826 2827 echo "" 2828 if test -n "$with_gallium_drivers"; then 2829 echo " Gallium drivers: $gallium_drivers" 2830 echo " Gallium st: $gallium_st" 2831 else 2832 echo " Gallium: no" 2833 fi 2834 2835 echo "" 2836 if test "x$enable_gallium_extra_hud" != xyes; then 2837 echo " HUD extra stats: no" 2838 else 2839 echo " HUD extra stats: yes" 2840 fi 2841 2842 if test "x$enable_lmsensors" != xyes; then 2843 echo " HUD lmsensors: no" 2844 else 2845 echo " HUD lmsensors: yes" 2846 fi 2847 2848 dnl Libraries 2849 echo "" 2850 echo " Shared libs: $enable_shared" 2851 echo " Static libs: $enable_static" 2852 echo " Shared-glapi: $enable_shared_glapi" 2853 2854 dnl Compiler options 2855 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars 2856 cflags=`echo $CFLAGS | \ 2857 $SED 's/^ *//;s/ */ /;s/ *$//'` 2858 cxxflags=`echo $CXXFLAGS | \ 2859 $SED 's/^ *//;s/ */ /;s/ *$//'` 2860 defines=`echo $DEFINES | $SED 's/^ *//;s/ */ /;s/ *$//'` 2861 echo "" 2862 echo " CFLAGS: $cflags" 2863 echo " CXXFLAGS: $cxxflags" 2864 echo " Macros: $defines" 2865 echo "" 2866 if 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 "" 2872 fi 2873 echo " PYTHON2: $PYTHON2" 2874 2875 echo "" 2876 echo " Run '${MAKE-make}' to build Mesa" 2877 echo "" 2878