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