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