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