VirtualBox

source: vbox/trunk/src/VBox/Additions/3D/mesa/mesa-17.3.9/configure.ac@ 95281

最後變更 在這個檔案從95281是 75443,由 vboxsync 提交於 6 年 前

Exported Mesa related code to OSE.

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

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette