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