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