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