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