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