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