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