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