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