OSDN Git Service

configure.ac: add missing llvm dependencies to .pc files
[android-x86/external-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=enabled@:>@])],
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
2784     dnl The gallium-xlib GLX and gallium OSMesa targets directly embed the
2785     dnl swr/llvmpipe driver into the final binary.  Adding LLVM_LIBS results in 
2786     dnl the LLVM library propagated in the Libs.private of the respective .pc
2787     dnl file which ensures complete dependency information when statically
2788     dnl linking.
2789     if test "x$enable_glx" == xgallium-xlib; then
2790         GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $LLVM_LIBS"
2791     fi
2792     if test "x$enable_gallium_osmesa" = xyes; then
2793         OSMESA_PC_LIB_PRIV="$OSMESA_PC_LIB_PRIV $LLVM_LIBS"
2794     fi
2795 fi
2796
2797 AM_CONDITIONAL(HAVE_GALLIUM_SVGA, test "x$HAVE_GALLIUM_SVGA" = xyes)
2798 AM_CONDITIONAL(HAVE_GALLIUM_I915, test "x$HAVE_GALLIUM_I915" = xyes)
2799 AM_CONDITIONAL(HAVE_GALLIUM_PL111, test "x$HAVE_GALLIUM_PL111" = xyes)
2800 AM_CONDITIONAL(HAVE_GALLIUM_R300, test "x$HAVE_GALLIUM_R300" = xyes)
2801 AM_CONDITIONAL(HAVE_GALLIUM_R600, test "x$HAVE_GALLIUM_R600" = xyes)
2802 AM_CONDITIONAL(HAVE_GALLIUM_RADEONSI, test "x$HAVE_GALLIUM_RADEONSI" = xyes)
2803 AM_CONDITIONAL(HAVE_GALLIUM_RADEON_COMMON, test "x$HAVE_GALLIUM_RADEONSI" = xyes)
2804 AM_CONDITIONAL(HAVE_GALLIUM_NOUVEAU, test "x$HAVE_GALLIUM_NOUVEAU" = xyes)
2805 AM_CONDITIONAL(HAVE_GALLIUM_FREEDRENO, test "x$HAVE_GALLIUM_FREEDRENO" = xyes)
2806 AM_CONDITIONAL(HAVE_GALLIUM_ETNAVIV, test "x$HAVE_GALLIUM_ETNAVIV" = xyes)
2807 AM_CONDITIONAL(HAVE_GALLIUM_IMX, test "x$HAVE_GALLIUM_IMX" = xyes)
2808 AM_CONDITIONAL(HAVE_GALLIUM_SOFTPIPE, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes)
2809 AM_CONDITIONAL(HAVE_GALLIUM_LLVMPIPE, test "x$HAVE_GALLIUM_LLVMPIPE" = xyes)
2810 AM_CONDITIONAL(HAVE_GALLIUM_SWR, test "x$HAVE_GALLIUM_SWR" = xyes)
2811 AM_CONDITIONAL(HAVE_GALLIUM_SWRAST, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes -o \
2812                                          "x$HAVE_GALLIUM_LLVMPIPE" = xyes -o \
2813                                          "x$HAVE_GALLIUM_SWR" = xyes)
2814 AM_CONDITIONAL(HAVE_GALLIUM_VC4, test "x$HAVE_GALLIUM_VC4" = xyes)
2815 AM_CONDITIONAL(HAVE_GALLIUM_VC5, test "x$HAVE_GALLIUM_VC5" = xyes)
2816 AM_CONDITIONAL(HAVE_GALLIUM_VIRGL, test "x$HAVE_GALLIUM_VIRGL" = xyes)
2817
2818 AM_CONDITIONAL(HAVE_GALLIUM_STATIC_TARGETS, test "x$enable_shared_pipe_drivers" = xno)
2819
2820 if test "x$enable_dri" = xyes; then
2821     GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRI"
2822 fi
2823
2824 if test "x$have_drisw_kms" = xyes; then
2825     GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_KMS"
2826 fi
2827 AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
2828
2829 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
2830 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
2831 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
2832 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
2833 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
2834 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
2835
2836 AM_CONDITIONAL(HAVE_RADEON_VULKAN, test "x$HAVE_RADEON_VULKAN" = xyes)
2837 AM_CONDITIONAL(HAVE_INTEL_VULKAN, test "x$HAVE_INTEL_VULKAN" = xyes)
2838
2839 AM_CONDITIONAL(HAVE_AMD_DRIVERS, test "x$HAVE_GALLIUM_RADEONSI" = xyes -o \
2840                                       "x$HAVE_RADEON_VULKAN" = xyes)
2841
2842 AM_CONDITIONAL(HAVE_BROADCOM_DRIVERS, test "x$HAVE_GALLIUM_VC4" = xyes -o \
2843                                       "x$HAVE_GALLIUM_VC5" = xyes)
2844
2845 AM_CONDITIONAL(HAVE_INTEL_DRIVERS, test "x$HAVE_INTEL_VULKAN" = xyes -o \
2846                                         "x$HAVE_I965_DRI" = xyes)
2847
2848 AM_CONDITIONAL(NEED_RADEON_DRM_WINSYS, test "x$HAVE_GALLIUM_R300" = xyes -o \
2849                                             "x$HAVE_GALLIUM_R600" = xyes -o \
2850                                             "x$HAVE_GALLIUM_RADEONSI" = xyes)
2851 AM_CONDITIONAL(NEED_WINSYS_XLIB, test "x$enable_glx" = xgallium-xlib)
2852 AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
2853 AM_CONDITIONAL(HAVE_GALLIUM_LLVM, test "x$enable_llvm" = xyes)
2854 AM_CONDITIONAL(USE_VC4_SIMULATOR, test x$USE_VC4_SIMULATOR = xyes)
2855 AM_CONDITIONAL(USE_VC5_SIMULATOR, test x$USE_VC5_SIMULATOR = xyes)
2856
2857 AM_CONDITIONAL(HAVE_LIBDRM, test "x$have_libdrm" = xyes)
2858 AM_CONDITIONAL(HAVE_OSMESA, test "x$enable_osmesa" = xyes)
2859 AM_CONDITIONAL(HAVE_GALLIUM_OSMESA, test "x$enable_gallium_osmesa" = xyes)
2860 AM_CONDITIONAL(HAVE_COMMON_OSMESA, test "x$enable_osmesa" = xyes -o \
2861                                         "x$enable_gallium_osmesa" = xyes)
2862
2863 AM_CONDITIONAL(HAVE_X86_ASM, test "x$asm_arch" = xx86 -o "x$asm_arch" = xx86_64)
2864 AM_CONDITIONAL(HAVE_X86_64_ASM, test "x$asm_arch" = xx86_64)
2865 AM_CONDITIONAL(HAVE_SPARC_ASM, test "x$asm_arch" = xsparc)
2866 AM_CONDITIONAL(HAVE_PPC64LE_ASM, test "x$asm_arch" = xppc64le)
2867 AM_CONDITIONAL(HAVE_AARCH64_ASM, test "x$asm_arch" = xaarch64)
2868 AM_CONDITIONAL(HAVE_ARM_ASM, test "x$asm_arch" = xarm)
2869
2870 AC_SUBST([NINE_MAJOR], 1)
2871 AC_SUBST([NINE_MINOR], 0)
2872 AC_SUBST([NINE_PATCH], 0)
2873 AC_SUBST([NINE_VERSION], "$NINE_MAJOR.$NINE_MINOR.$NINE_PATCH")
2874
2875 AC_SUBST([VDPAU_MAJOR], 1)
2876 AC_SUBST([VDPAU_MINOR], 0)
2877
2878 if test "x$enable_va" = xyes; then
2879     VA_MAJOR=`$PKG_CONFIG --modversion libva | $SED -n 's/\([[^\.]]*\)\..*$/\1/p'`
2880     VA_MINOR=`$PKG_CONFIG --modversion libva | $SED -n 's/.*\.\(.*\)\..*$/\1/p'`
2881 fi
2882 AC_SUBST([VA_MAJOR], $VA_MAJOR)
2883 AC_SUBST([VA_MINOR], $VA_MINOR)
2884
2885 AM_CONDITIONAL(HAVE_VULKAN_COMMON, test "x$VULKAN_DRIVERS" != "x")
2886
2887 AC_SUBST([XVMC_MAJOR], 1)
2888 AC_SUBST([XVMC_MINOR], 0)
2889
2890 AC_SUBST([XA_MAJOR], 2)
2891 AC_SUBST([XA_MINOR], 3)
2892 AC_SUBST([XA_PATCH], 0)
2893 AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_PATCH")
2894
2895 AC_ARG_ENABLE(valgrind,
2896               [AS_HELP_STRING([--enable-valgrind],
2897                              [Build mesa with valgrind support (default: auto)])],
2898                              [VALGRIND=$enableval], [VALGRIND=auto])
2899 if test "x$VALGRIND" != xno; then
2900     PKG_CHECK_MODULES(VALGRIND, [valgrind], [have_valgrind=yes], [have_valgrind=no])
2901 fi
2902 AC_MSG_CHECKING([whether to enable Valgrind support])
2903 if test "x$VALGRIND" = xauto; then
2904     VALGRIND="$have_valgrind"
2905 fi
2906
2907 if test "x$VALGRIND" = "xyes"; then
2908     if ! test "x$have_valgrind" = xyes; then
2909         AC_MSG_ERROR([Valgrind support required but not present])
2910     fi
2911     AC_DEFINE([HAVE_VALGRIND], 1, [Use valgrind intrinsics to suppress false warnings])
2912 fi
2913
2914 AC_MSG_RESULT([$VALGRIND])
2915
2916 dnl Restore LDFLAGS and CPPFLAGS
2917 LDFLAGS="$_SAVE_LDFLAGS"
2918 CPPFLAGS="$_SAVE_CPPFLAGS"
2919
2920 dnl Suppress clang's warnings about unused CFLAGS and CXXFLAGS
2921 if test "x$acv_mesa_CLANG" = xyes; then
2922     CFLAGS="$CFLAGS -Qunused-arguments"
2923     CXXFLAGS="$CXXFLAGS -Qunused-arguments"
2924 fi
2925
2926 dnl Add user CFLAGS and CXXFLAGS
2927 CFLAGS="$CFLAGS $USER_CFLAGS"
2928 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
2929
2930 dnl Substitute the config
2931 AC_CONFIG_FILES([Makefile
2932                  src/Makefile
2933                  src/amd/Makefile
2934                  src/amd/vulkan/Makefile
2935                  src/broadcom/Makefile
2936                  src/compiler/Makefile
2937                  src/egl/Makefile
2938                  src/egl/main/egl.pc
2939                  src/egl/wayland/wayland-drm/Makefile
2940                  src/egl/wayland/wayland-egl/Makefile
2941                  src/egl/wayland/wayland-egl/wayland-egl.pc
2942                  src/gallium/Makefile
2943                  src/gallium/auxiliary/Makefile
2944                  src/gallium/auxiliary/pipe-loader/Makefile
2945                  src/gallium/drivers/freedreno/Makefile
2946                  src/gallium/drivers/ddebug/Makefile
2947                  src/gallium/drivers/i915/Makefile
2948                  src/gallium/drivers/llvmpipe/Makefile
2949                  src/gallium/drivers/noop/Makefile
2950                  src/gallium/drivers/nouveau/Makefile
2951                  src/gallium/drivers/pl111/Makefile
2952                  src/gallium/drivers/r300/Makefile
2953                  src/gallium/drivers/r600/Makefile
2954                  src/gallium/drivers/radeon/Makefile
2955                  src/gallium/drivers/radeonsi/Makefile
2956                  src/gallium/drivers/rbug/Makefile
2957                  src/gallium/drivers/softpipe/Makefile
2958                  src/gallium/drivers/svga/Makefile
2959                  src/gallium/drivers/swr/Makefile
2960                  src/gallium/drivers/trace/Makefile
2961                  src/gallium/drivers/etnaviv/Makefile
2962                  src/gallium/drivers/imx/Makefile
2963                  src/gallium/drivers/vc4/Makefile
2964                  src/gallium/drivers/vc5/Makefile
2965                  src/gallium/drivers/virgl/Makefile
2966                  src/gallium/state_trackers/clover/Makefile
2967                  src/gallium/state_trackers/dri/Makefile
2968                  src/gallium/state_trackers/glx/xlib/Makefile
2969                  src/gallium/state_trackers/nine/Makefile
2970                  src/gallium/state_trackers/omx_bellagio/Makefile
2971                  src/gallium/state_trackers/osmesa/Makefile
2972                  src/gallium/state_trackers/va/Makefile
2973                  src/gallium/state_trackers/vdpau/Makefile
2974                  src/gallium/state_trackers/xa/Makefile
2975                  src/gallium/state_trackers/xa/xa_tracker.h
2976                  src/gallium/state_trackers/xvmc/Makefile
2977                  src/gallium/targets/d3dadapter9/Makefile
2978                  src/gallium/targets/d3dadapter9/d3d.pc
2979                  src/gallium/targets/dri/Makefile
2980                  src/gallium/targets/libgl-xlib/Makefile
2981                  src/gallium/targets/omx-bellagio/Makefile
2982                  src/gallium/targets/opencl/Makefile
2983                  src/gallium/targets/opencl/mesa.icd
2984                  src/gallium/targets/osmesa/Makefile
2985                  src/gallium/targets/osmesa/osmesa.pc
2986                  src/gallium/targets/pipe-loader/Makefile
2987                  src/gallium/targets/va/Makefile
2988                  src/gallium/targets/vdpau/Makefile
2989                  src/gallium/targets/xa/Makefile
2990                  src/gallium/targets/xa/xatracker.pc
2991                  src/gallium/targets/xvmc/Makefile
2992                  src/gallium/tests/trivial/Makefile
2993                  src/gallium/tests/unit/Makefile
2994                  src/gallium/winsys/etnaviv/drm/Makefile
2995                  src/gallium/winsys/imx/drm/Makefile
2996                  src/gallium/winsys/freedreno/drm/Makefile
2997                  src/gallium/winsys/i915/drm/Makefile
2998                  src/gallium/winsys/nouveau/drm/Makefile
2999                  src/gallium/winsys/pl111/drm/Makefile
3000                  src/gallium/winsys/radeon/drm/Makefile
3001                  src/gallium/winsys/amdgpu/drm/Makefile
3002                  src/gallium/winsys/svga/drm/Makefile
3003                  src/gallium/winsys/sw/dri/Makefile
3004                  src/gallium/winsys/sw/kms-dri/Makefile
3005                  src/gallium/winsys/sw/null/Makefile
3006                  src/gallium/winsys/sw/wrapper/Makefile
3007                  src/gallium/winsys/sw/xlib/Makefile
3008                  src/gallium/winsys/vc4/drm/Makefile
3009                  src/gallium/winsys/vc5/drm/Makefile
3010                  src/gallium/winsys/virgl/drm/Makefile
3011                  src/gallium/winsys/virgl/vtest/Makefile
3012                  src/gbm/Makefile
3013                  src/gbm/main/gbm.pc
3014                  src/glx/Makefile
3015                  src/glx/apple/Makefile
3016                  src/glx/tests/Makefile
3017                  src/glx/windows/Makefile
3018                  src/glx/windows/windowsdriproto.pc
3019                  src/gtest/Makefile
3020                  src/intel/Makefile
3021                  src/loader/Makefile
3022                  src/mapi/Makefile
3023                  src/mapi/es1api/glesv1_cm.pc
3024                  src/mapi/es2api/glesv2.pc
3025                  src/mapi/glapi/gen/Makefile
3026                  src/mesa/Makefile
3027                  src/mesa/gl.pc
3028                  src/mesa/drivers/dri/dri.pc
3029                  src/mesa/drivers/dri/common/Makefile
3030                  src/mesa/drivers/dri/i915/Makefile
3031                  src/mesa/drivers/dri/i965/Makefile
3032                  src/mesa/drivers/dri/Makefile
3033                  src/mesa/drivers/dri/nouveau/Makefile
3034                  src/mesa/drivers/dri/r200/Makefile
3035                  src/mesa/drivers/dri/radeon/Makefile
3036                  src/mesa/drivers/dri/swrast/Makefile
3037                  src/mesa/drivers/osmesa/Makefile
3038                  src/mesa/drivers/osmesa/osmesa.pc
3039                  src/mesa/drivers/x11/Makefile
3040                  src/mesa/main/tests/Makefile
3041                  src/mesa/state_tracker/tests/Makefile
3042                  src/util/Makefile
3043                  src/util/tests/hash_table/Makefile
3044                  src/util/tests/string_buffer/Makefile
3045                  src/util/xmlpool/Makefile
3046                  src/vulkan/Makefile])
3047
3048 AC_OUTPUT
3049
3050 # Fix up dependencies in *.Plo files, where we changed the extension of a
3051 # source file
3052 $SED -i -e 's/brw_blorp.cpp/brw_blorp.c/' src/mesa/drivers/dri/i965/.deps/brw_blorp.Plo
3053
3054 rm -f src/compiler/spirv/spirv_info.lo
3055 echo "# dummy" > src/compiler/spirv/.deps/spirv_info.Plo
3056
3057 dnl
3058 dnl Output some configuration info for the user
3059 dnl
3060 echo ""
3061 echo "        prefix:          $prefix"
3062 echo "        exec_prefix:     $exec_prefix"
3063 echo "        libdir:          $libdir"
3064 echo "        includedir:      $includedir"
3065
3066 dnl API info
3067 echo ""
3068 echo "        OpenGL:          $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
3069
3070 dnl Driver info
3071 echo ""
3072 case "x$enable_osmesa$enable_gallium_osmesa" in
3073 xnoyes)
3074         echo "        OSMesa:          lib$OSMESA_LIB (Gallium)"
3075         ;;
3076 xyesno)
3077         echo "        OSMesa:          lib$OSMESA_LIB"
3078         ;;
3079 xnono)
3080         echo "        OSMesa:          no"
3081         ;;
3082 esac
3083
3084 echo ""
3085 if test "x$enable_dri" != xno; then
3086         echo "        DRI platform:    $dri_platform"
3087         if test -z "$DRI_DIRS"; then
3088             echo "        DRI drivers:     no"
3089         else
3090             echo "        DRI drivers:     $DRI_DIRS"
3091         fi
3092         echo "        DRI driver dir:  $DRI_DRIVER_INSTALL_DIR"
3093 fi
3094
3095 case "x$enable_glx" in
3096 xdri)
3097     echo "        GLX:             DRI-based"
3098     ;;
3099 xxlib)
3100     echo "        GLX:             Xlib-based"
3101     ;;
3102 xgallium-xlib)
3103     echo "        GLX:             Xlib-based (Gallium)"
3104     ;;
3105 *)
3106     echo "        GLX:             $enable_glx"
3107     ;;
3108 esac
3109
3110 dnl EGL
3111 echo ""
3112 echo "        EGL:             $enable_egl"
3113 if test "$enable_egl" = yes; then
3114
3115     egl_drivers=""
3116     if test "x$enable_dri" != "xno"; then
3117         egl_drivers="$egl_drivers builtin:egl_dri2"
3118     fi
3119     if test "x$enable_dri3" != "xno"; then
3120         egl_drivers="$egl_drivers builtin:egl_dri3"
3121     fi
3122
3123     echo "        EGL drivers:    $egl_drivers"
3124 fi
3125 if test "x$enable_gbm" = xyes; then
3126     echo "        GBM:             yes"
3127 else
3128     echo "        GBM:             no"
3129 fi
3130
3131     echo "        EGL/Vulkan/VL platforms:   $platforms"
3132
3133 # Vulkan
3134 echo ""
3135 if test "x$VULKAN_DRIVERS" != x; then
3136     echo "        Vulkan drivers:  $VULKAN_DRIVERS"
3137     echo "        Vulkan ICD dir:  $VULKAN_ICD_INSTALL_DIR"
3138 else
3139     echo "        Vulkan drivers:  no"
3140 fi
3141
3142 echo ""
3143 if test "x$enable_llvm" = xyes; then
3144     echo "        llvm:            yes"
3145     echo "        llvm-config:     $LLVM_CONFIG"
3146     echo "        llvm-version:    $LLVM_VERSION"
3147 else
3148     echo "        llvm:            no"
3149 fi
3150
3151 echo ""
3152 if test -n "$with_gallium_drivers"; then
3153     echo "        Gallium drivers: $gallium_drivers"
3154     echo "        Gallium st:      $gallium_st"
3155 else
3156     echo "        Gallium:         no"
3157 fi
3158
3159 echo ""
3160 if test "x$enable_gallium_extra_hud" != xyes; then
3161     echo "        HUD extra stats: no"
3162 else
3163     echo "        HUD extra stats: yes"
3164 fi
3165
3166 if test "x$enable_lmsensors" != xyes; then
3167     echo "        HUD lmsensors:   no"
3168 else
3169     echo "        HUD lmsensors:   yes"
3170 fi
3171
3172 echo ""
3173 if test "x$HAVE_GALLIUM_SWR" != x; then
3174     if test "x$HAVE_SWR_BUILTIN" = xyes; then
3175         echo "        SWR archs:       $swr_archs (builtin)"
3176     else
3177         echo "        SWR archs:       $swr_archs"
3178     fi
3179 fi
3180
3181 dnl Libraries
3182 echo ""
3183 echo "        Shared libs:     $enable_shared"
3184 echo "        Static libs:     $enable_static"
3185 echo "        Shared-glapi:    $enable_shared_glapi"
3186
3187 dnl Compiler options
3188 # cleanup the CFLAGS/CXXFLAGS/LDFLAGS/DEFINES vars
3189 cflags=`echo $CFLAGS | \
3190     $SED 's/^ *//;s/  */ /;s/ *$//'`
3191 cxxflags=`echo $CXXFLAGS | \
3192     $SED 's/^ *//;s/  */ /;s/ *$//'`
3193 ldflags=`echo $LDFLAGS | $SED 's/^ *//;s/  */ /;s/ *$//'`
3194 defines=`echo $DEFINES | $SED 's/^ *//;s/  */ /;s/ *$//'`
3195 echo ""
3196 echo "        CFLAGS:          $cflags"
3197 echo "        CXXFLAGS:        $cxxflags"
3198 echo "        CXX11_CXXFLAGS:  $CXX11_CXXFLAGS"
3199 echo "        LDFLAGS:         $ldflags"
3200 echo "        Macros:          $defines"
3201 echo ""
3202 if test "x$enable_llvm" = xyes; then
3203     echo "        LLVM_CFLAGS:     $LLVM_CFLAGS"
3204     echo "        LLVM_CXXFLAGS:   $LLVM_CXXFLAGS"
3205     echo "        LLVM_CPPFLAGS:   $LLVM_CPPFLAGS"
3206     echo "        LLVM_LDFLAGS:    $LLVM_LDFLAGS"
3207     echo ""
3208 fi
3209 echo "        PYTHON2:         $PYTHON2"
3210
3211 echo ""
3212 echo "        Run '${MAKE-make}' to build Mesa"
3213 echo ""