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