OSDN Git Service

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