configure: read libomxil-bellagio.pc only when it exists
[mesa.git] / configure.ac
1 dnl Process this file with autoconf to create configure.
2
3 AC_PREREQ([2.60])
4
5 dnl Tell the user about autoconf.html in the --help output
6 m4_divert_once([HELP_END], [
7 See docs/autoconf.html for more details on the options for Mesa.])
8
9 m4_define(MESA_VERSION, m4_normalize(m4_include(VERSION)))
10 AC_INIT([Mesa], [MESA_VERSION],
11 [https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa])
12 AC_CONFIG_AUX_DIR([bin])
13 AC_CONFIG_MACRO_DIR([m4])
14 AC_CANONICAL_SYSTEM
15 AM_INIT_AUTOMAKE([foreign])
16
17 # Support silent build rules, requires at least automake-1.11. Disable
18 # by either passing --disable-silent-rules to configure or passing V=1
19 # to make
20 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])],
21 [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])])
22
23 m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
24
25 dnl Set internal versions
26 OSMESA_VERSION=8
27 AC_SUBST([OSMESA_VERSION])
28
29 dnl Versions for external dependencies
30 LIBDRM_REQUIRED=2.4.38
31 LIBDRM_RADEON_REQUIRED=2.4.50
32 LIBDRM_INTEL_REQUIRED=2.4.52
33 LIBDRM_NVVIEUX_REQUIRED=2.4.33
34 LIBDRM_NOUVEAU_REQUIRED="2.4.33 libdrm >= 2.4.41"
35 LIBDRM_FREEDRENO_REQUIRED=2.4.51
36 DRI2PROTO_REQUIRED=2.6
37 DRI3PROTO_REQUIRED=1.0
38 PRESENTPROTO_REQUIRED=1.0
39 LIBUDEV_REQUIRED=151
40 GLPROTO_REQUIRED=1.4.14
41 LIBOMXIL_BELLAGIO_REQUIRED=0.0
42 VDPAU_REQUIRED=0.4.1
43 WAYLAND_REQUIRED=1.2.0
44 XCBDRI2_REQUIRED=1.8
45 XCBGLX_REQUIRED=1.8.1
46 XSHMFENCE_REQUIRED=1.1
47 XVMC_REQUIRED=1.0.6
48
49 dnl Check for progs
50 AC_PROG_CPP
51 AC_PROG_CC
52 AC_PROG_CXX
53 AM_PROG_CC_C_O
54 AM_PROG_AS
55 AC_CHECK_PROGS([MAKE], [gmake make])
56 AC_CHECK_PROGS([PYTHON2], [python2 python])
57 AX_PYTHON_MODULE([libxml2], [needed])
58 AC_PROG_SED
59 AC_PROG_MKDIR_P
60
61 LT_PREREQ([2.2])
62 LT_INIT([disable-static])
63
64 AX_PROG_BISON([],
65 AS_IF([test ! -f "$srcdir/src/glsl/glcpp/glcpp-parse.c"],
66 [AC_MSG_ERROR([bison not found - unable to compile glcpp-parse.y])]))
67 AX_PROG_FLEX([],
68 AS_IF([test ! -f "$srcdir/src/glsl/glcpp/glcpp-lex.c"],
69 [AC_MSG_ERROR([flex not found - unable to compile glcpp-lex.l])]))
70
71 AC_PATH_PROG([PERL], [perl])
72
73 AC_CHECK_PROG(INDENT, indent, indent, cat)
74 if test "x$INDENT" != "xcat"; then
75 AC_SUBST(INDENT_FLAGS, '-i4 -nut -br -brs -npcs -ce -TGLubyte -TGLbyte -TBool')
76 fi
77
78 AC_PROG_INSTALL
79
80 dnl We need a POSIX shell for parts of the build. Assume we have one
81 dnl in most cases.
82 case "$host_os" in
83 solaris*)
84 # Solaris /bin/sh is too old/non-POSIX compliant
85 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
86 SHELL="$POSIX_SHELL"
87 ;;
88 esac
89
90 dnl clang is mostly GCC-compatible, but its version is much lower,
91 dnl so we have to check for it.
92 AC_MSG_CHECKING([if compiling with clang])
93
94 AC_COMPILE_IFELSE(
95 [AC_LANG_PROGRAM([], [[
96 #ifndef __clang__
97 not clang
98 #endif
99 ]])],
100 [acv_mesa_CLANG=yes], [acv_mesa_CLANG=no])
101
102 AC_MSG_RESULT([$acv_mesa_CLANG])
103
104 dnl If we're using GCC, make sure that it is at least version 3.3.0. Older
105 dnl versions are explictly not supported.
106 GEN_ASM_OFFSETS=no
107 if test "x$GCC" = xyes -a "x$acv_mesa_CLANG" = xno; then
108 AC_MSG_CHECKING([whether gcc version is sufficient])
109 major=0
110 minor=0
111
112 GCC_VERSION=`$CC -dumpversion`
113 if test $? -eq 0; then
114 GCC_VERSION_MAJOR=`echo $GCC_VERSION | cut -d. -f1`
115 GCC_VERSION_MINOR=`echo $GCC_VERSION | cut -d. -f2`
116 fi
117
118 if test $GCC_VERSION_MAJOR -lt 3 -o $GCC_VERSION_MAJOR -eq 3 -a $GCC_VERSION_MINOR -lt 3 ; then
119 AC_MSG_RESULT([no])
120 AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.])
121 else
122 AC_MSG_RESULT([yes])
123 fi
124
125 if test "x$cross_compiling" = xyes; then
126 GEN_ASM_OFFSETS=yes
127 fi
128 fi
129
130 dnl Check for compiler builtins
131 AX_GCC_BUILTIN([__builtin_bswap32])
132 AX_GCC_BUILTIN([__builtin_bswap64])
133
134 AM_CONDITIONAL([GEN_ASM_OFFSETS], test "x$GEN_ASM_OFFSETS" = xyes)
135
136 dnl Make sure the pkg-config macros are defined
137 m4_ifndef([PKG_PROG_PKG_CONFIG],
138 [m4_fatal([Could not locate the pkg-config autoconf macros.
139 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
140 are in a different location, try setting the environment variable
141 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
142 PKG_PROG_PKG_CONFIG()
143
144 dnl LIB_DIR - library basename
145 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
146 AC_SUBST([LIB_DIR])
147
148 dnl Cache LDFLAGS and CPPFLAGS so we can add to them and restore later
149 _SAVE_LDFLAGS="$LDFLAGS"
150 _SAVE_CPPFLAGS="$CPPFLAGS"
151
152 dnl Compiler macros
153 DEFINES=""
154 AC_SUBST([DEFINES])
155 case "$host_os" in
156 linux*|*-gnu*|gnu*)
157 DEFINES="$DEFINES -D_GNU_SOURCE -DHAVE_PTHREAD"
158 ;;
159 solaris*)
160 DEFINES="$DEFINES -DHAVE_PTHREAD -DSVR4"
161 ;;
162 cygwin*)
163 DEFINES="$DEFINES -DHAVE_PTHREAD"
164 ;;
165 esac
166
167 dnl Add flags for gcc and g++
168 if test "x$GCC" = xyes; then
169 case "$host_os" in
170 cygwin*)
171 CFLAGS="$CFLAGS -Wall -std=gnu99"
172 ;;
173 *)
174 CFLAGS="$CFLAGS -Wall -std=c99"
175 ;;
176 esac
177
178 # Enable -Werror=implicit-function-declaration and
179 # -Werror=missing-prototypes, if available, or otherwise, just
180 # -Wmissing-prototypes. This is particularly useful to avoid
181 # generating a loadable driver module that has undefined symbols.
182 save_CFLAGS="$CFLAGS"
183 AC_MSG_CHECKING([whether $CC supports -Werror=missing-prototypes])
184 CFLAGS="$CFLAGS -Werror=implicit-function-declaration"
185 CFLAGS="$CFLAGS -Werror=missing-prototypes"
186 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
187 AC_MSG_RESULT([yes]),
188 [CFLAGS="$save_CFLAGS -Wmissing-prototypes";
189 AC_MSG_RESULT([no])]);
190
191 # Enable -fvisibility=hidden if using a gcc that supports it
192 save_CFLAGS="$CFLAGS"
193 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
194 VISIBILITY_CFLAGS="-fvisibility=hidden"
195 CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
196 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
197 [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
198
199 # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
200 CFLAGS=$save_CFLAGS
201
202 # Work around aliasing bugs - developers should comment this out
203 CFLAGS="$CFLAGS -fno-strict-aliasing"
204
205 # gcc's builtin memcmp is slower than glibc's
206 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
207 CFLAGS="$CFLAGS -fno-builtin-memcmp"
208 fi
209 if test "x$GXX" = xyes; then
210 CXXFLAGS="$CXXFLAGS -Wall"
211
212 # Enable -fvisibility=hidden if using a gcc that supports it
213 save_CXXFLAGS="$CXXFLAGS"
214 AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
215 VISIBILITY_CXXFLAGS="-fvisibility=hidden"
216 CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
217 AC_LANG_PUSH([C++])
218 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
219 [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
220 AC_LANG_POP([C++])
221
222 # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
223 CXXFLAGS=$save_CXXFLAGS
224
225 # Work around aliasing bugs - developers should comment this out
226 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
227
228 # gcc's builtin memcmp is slower than glibc's
229 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
230 CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp"
231 fi
232
233 dnl even if the compiler appears to support it, using visibility attributes isn't
234 dnl going to do anything useful currently on cygwin apart from emit lots of warnings
235 case "$host_os" in
236 cygwin*)
237 VISIBILITY_CFLAGS=""
238 VISIBILITY_CXXFLAGS=""
239 ;;
240 esac
241
242 AC_SUBST([VISIBILITY_CFLAGS])
243 AC_SUBST([VISIBILITY_CXXFLAGS])
244
245 dnl
246 dnl Optional flags, check for compiler support
247 dnl
248 AX_CHECK_COMPILE_FLAG([-msse4.1], [SSE41_SUPPORTED=1], [SSE41_SUPPORTED=0])
249 AM_CONDITIONAL([SSE41_SUPPORTED], [test x$SSE41_SUPPORTED = x1])
250
251 dnl
252 dnl Hacks to enable 32 or 64 bit build
253 dnl
254 AC_ARG_ENABLE([32-bit],
255 [AS_HELP_STRING([--enable-32-bit],
256 [build 32-bit libraries @<:@default=auto@:>@])],
257 [enable_32bit="$enableval"],
258 [enable_32bit=auto]
259 )
260 if test "x$enable_32bit" = xyes; then
261 if test "x$GCC" = xyes; then
262 CFLAGS="$CFLAGS -m32"
263 CCASFLAGS="$CCASFLAGS -m32"
264 fi
265 if test "x$GXX" = xyes; then
266 CXXFLAGS="$CXXFLAGS -m32"
267 fi
268 fi
269 AC_ARG_ENABLE([64-bit],
270 [AS_HELP_STRING([--enable-64-bit],
271 [build 64-bit libraries @<:@default=auto@:>@])],
272 [enable_64bit="$enableval"],
273 [enable_64bit=auto]
274 )
275 if test "x$enable_64bit" = xyes; then
276 if test "x$GCC" = xyes; then
277 CFLAGS="$CFLAGS -m64"
278 fi
279 if test "x$GXX" = xyes; then
280 CXXFLAGS="$CXXFLAGS -m64"
281 fi
282 fi
283
284 dnl Can't have static and shared libraries, default to static if user
285 dnl explicitly requested. If both disabled, set to static since shared
286 dnl was explicitly requested.
287 case "x$enable_static$enable_shared" in
288 xyesyes )
289 AC_MSG_WARN([Cannot build static and shared libraries, disabling shared])
290 enable_shared=no
291 ;;
292 xnono )
293 AC_MSG_WARN([Cannot disable both static and shared libraries, enabling static])
294 enable_static=yes
295 ;;
296 esac
297
298 AM_CONDITIONAL(BUILD_SHARED, test "x$enable_shared" = xyes)
299
300 dnl
301 dnl other compiler options
302 dnl
303 AC_ARG_ENABLE([debug],
304 [AS_HELP_STRING([--enable-debug],
305 [use debug compiler flags and macros @<:@default=disabled@:>@])],
306 [enable_debug="$enableval"],
307 [enable_debug=no]
308 )
309 if test "x$enable_debug" = xyes; then
310 DEFINES="$DEFINES -DDEBUG"
311 if test "x$GCC" = xyes; then
312 CFLAGS="$CFLAGS -g -O0"
313 fi
314 if test "x$GXX" = xyes; then
315 CXXFLAGS="$CXXFLAGS -g -O0"
316 fi
317 fi
318
319 dnl
320 dnl compatibility symlinks
321 dnl
322 case "$host_os" in
323 linux* )
324 HAVE_COMPAT_SYMLINKS=yes ;;
325 * )
326 HAVE_COMPAT_SYMLINKS=no ;;
327 esac
328
329 AM_CONDITIONAL(HAVE_COMPAT_SYMLINKS, test "x$HAVE_COMPAT_SYMLINKS" = xyes)
330
331 dnl
332 dnl library names
333 dnl
334 if test "$enable_static" = yes; then
335 LIB_EXT='a'
336 else
337 case "$host_os" in
338 darwin* )
339 LIB_EXT='dylib' ;;
340 cygwin* )
341 LIB_EXT='dll' ;;
342 aix* )
343 LIB_EXT='a' ;;
344 * )
345 LIB_EXT='so' ;;
346 esac
347 fi
348
349 AC_SUBST([LIB_EXT])
350
351 AC_ARG_WITH([gl-lib-name],
352 [AS_HELP_STRING([--with-gl-lib-name@<:@=NAME@:>@],
353 [specify GL library name @<:@default=GL@:>@])],
354 [GL_LIB=$withval],
355 [GL_LIB=GL])
356 AC_ARG_WITH([osmesa-lib-name],
357 [AS_HELP_STRING([--with-osmesa-lib-name@<:@=NAME@:>@],
358 [specify OSMesa library name @<:@default=OSMesa@:>@])],
359 [OSMESA_LIB=$withval],
360 [OSMESA_LIB=OSMesa])
361 AS_IF([test "x$GL_LIB" = xyes], [GL_LIB=GL])
362 AS_IF([test "x$OSMESA_LIB" = xyes], [OSMESA_LIB=OSMesa])
363
364 dnl
365 dnl Mangled Mesa support
366 dnl
367 AC_ARG_ENABLE([mangling],
368 [AS_HELP_STRING([--enable-mangling],
369 [enable mangled symbols and library name @<:@default=disabled@:>@])],
370 [enable_mangling="${enableval}"],
371 [enable_mangling=no]
372 )
373 if test "x${enable_mangling}" = "xyes" ; then
374 DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
375 GL_LIB="Mangled${GL_LIB}"
376 OSMESA_LIB="Mangled${OSMESA_LIB}"
377 fi
378 AC_SUBST([GL_LIB])
379 AC_SUBST([OSMESA_LIB])
380
381 dnl
382 dnl potentially-infringing-but-nobody-knows-for-sure stuff
383 dnl
384 AC_ARG_ENABLE([texture-float],
385 [AS_HELP_STRING([--enable-texture-float],
386 [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
387 [enable_texture_float="$enableval"],
388 [enable_texture_float=no]
389 )
390 if test "x$enable_texture_float" = xyes; then
391 AC_MSG_WARN([Floating-point textures enabled.])
392 AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
393 DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
394 fi
395
396 dnl
397 dnl Arch/platform-specific settings
398 dnl
399 AC_ARG_ENABLE([asm],
400 [AS_HELP_STRING([--disable-asm],
401 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
402 [enable_asm="$enableval"],
403 [enable_asm=yes]
404 )
405 asm_arch=""
406 AC_MSG_CHECKING([whether to enable assembly])
407 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
408 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
409 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
410 case "$host_cpu" in
411 i?86 | x86_64 | amd64)
412 enable_asm=no
413 AC_MSG_RESULT([no, cross compiling])
414 ;;
415 esac
416 fi
417 # check for supported arches
418 if test "x$enable_asm" = xyes; then
419 case "$host_cpu" in
420 i?86)
421 case "$host_os" in
422 linux* | *freebsd* | dragonfly* | *netbsd* | openbsd*)
423 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
424 ;;
425 gnu*)
426 asm_arch=x86
427 ;;
428 esac
429 ;;
430 x86_64|amd64)
431 case "$host_os" in
432 linux* | *freebsd* | dragonfly* | *netbsd* | openbsd*)
433 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
434 ;;
435 esac
436 ;;
437 sparc*)
438 case "$host_os" in
439 linux*)
440 asm_arch=sparc
441 ;;
442 esac
443 ;;
444 esac
445
446 case "$asm_arch" in
447 x86)
448 DEFINES="$DEFINES -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
449 AC_MSG_RESULT([yes, x86])
450 ;;
451 x86_64|amd64)
452 DEFINES="$DEFINES -DUSE_X86_64_ASM"
453 AC_MSG_RESULT([yes, x86_64])
454 ;;
455 sparc)
456 DEFINES="$DEFINES -DUSE_SPARC_ASM"
457 AC_MSG_RESULT([yes, sparc])
458 ;;
459 *)
460 AC_MSG_RESULT([no, platform not supported])
461 ;;
462 esac
463 fi
464
465 dnl Check to see if dlopen is in default libraries (like Solaris, which
466 dnl has it in libc), or if libdl is needed to get it.
467 AC_CHECK_FUNC([dlopen], [DEFINES="$DEFINES -DHAVE_DLOPEN"],
468 [AC_CHECK_LIB([dl], [dlopen],
469 [DEFINES="$DEFINES -DHAVE_DLOPEN"; DLOPEN_LIBS="-ldl"])])
470 AC_SUBST([DLOPEN_LIBS])
471
472 case "$host_os" in
473 darwin*|mingw*)
474 ;;
475 *)
476 AC_CHECK_FUNCS([clock_gettime], [CLOCK_LIB=],
477 [AC_CHECK_LIB([rt], [clock_gettime], [CLOCK_LIB=-lrt],
478 [AC_MSG_ERROR([Couldn't find clock_gettime])])])
479 AC_SUBST([CLOCK_LIB])
480 ;;
481 esac
482
483 dnl See if posix_memalign is available
484 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
485
486 dnl Check for pthreads
487 AX_PTHREAD
488 dnl AX_PTHREADS leaves PTHREAD_LIBS empty for gcc and sets PTHREAD_CFLAGS
489 dnl to -pthread, which causes problems if we need -lpthread to appear in
490 dnl pkgconfig files.
491 test -z "$PTHREAD_LIBS" && PTHREAD_LIBS="-lpthread"
492
493 dnl SELinux awareness.
494 AC_ARG_ENABLE([selinux],
495 [AS_HELP_STRING([--enable-selinux],
496 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
497 [MESA_SELINUX="$enableval"],
498 [MESA_SELINUX=no])
499 if test "x$enable_selinux" = "xyes"; then
500 PKG_CHECK_MODULES([SELINUX], [libselinux], [],
501 [AC_CHECK_HEADER([selinux/selinux.h],[],
502 [AC_MSG_ERROR([SELinux headers not found])])
503 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
504 [AC_MSG_ERROR([SELinux library not found])])
505 SELINUX_LIBS="-lselinux"])
506 DEFINES="$DEFINES -DMESA_SELINUX"
507 fi
508 AC_SUBST([SELINUX_CFLAGS])
509 AC_SUBST([SELINUX_LIBS])
510
511 dnl Options for APIs
512 AC_ARG_ENABLE([opengl],
513 [AS_HELP_STRING([--disable-opengl],
514 [disable support for standard OpenGL API @<:@default=no@:>@])],
515 [enable_opengl="$enableval"],
516 [enable_opengl=yes])
517 AC_ARG_ENABLE([gles1],
518 [AS_HELP_STRING([--enable-gles1],
519 [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
520 [enable_gles1="$enableval"],
521 [enable_gles1=no])
522 AC_ARG_ENABLE([gles2],
523 [AS_HELP_STRING([--enable-gles2],
524 [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
525 [enable_gles2="$enableval"],
526 [enable_gles2=no])
527 AC_ARG_ENABLE([openvg],
528 [AS_HELP_STRING([--enable-openvg],
529 [enable support for OpenVG API @<:@default=no@:>@])],
530 [enable_openvg="$enableval"],
531 [enable_openvg=no])
532
533 AC_ARG_ENABLE([dri],
534 [AS_HELP_STRING([--enable-dri],
535 [enable DRI modules @<:@default=enabled@:>@])],
536 [enable_dri="$enableval"],
537 [enable_dri=yes])
538 AC_ARG_ENABLE([dri3],
539 [AS_HELP_STRING([--enable-dri3],
540 [enable DRI3 @<:@default=enabled@:>@])],
541 [enable_dri3="$enableval"],
542 [enable_dri3=yes])
543 AC_ARG_ENABLE([glx],
544 [AS_HELP_STRING([--enable-glx],
545 [enable GLX library @<:@default=enabled@:>@])],
546 [enable_glx="$enableval"],
547 [enable_glx=yes])
548 AC_ARG_ENABLE([osmesa],
549 [AS_HELP_STRING([--enable-osmesa],
550 [enable OSMesa library @<:@default=disabled@:>@])],
551 [enable_osmesa="$enableval"],
552 [enable_osmesa=no])
553 AC_ARG_ENABLE([gallium-osmesa],
554 [AS_HELP_STRING([--enable-gallium-osmesa],
555 [enable Gallium implementation of the OSMesa library @<:@default=disabled@:>@])],
556 [enable_gallium_osmesa="$enableval"],
557 [enable_gallium_osmesa=no])
558 AC_ARG_ENABLE([egl],
559 [AS_HELP_STRING([--disable-egl],
560 [disable EGL library @<:@default=enabled@:>@])],
561 [enable_egl="$enableval"],
562 [enable_egl=yes])
563
564 AC_ARG_ENABLE([xa],
565 [AS_HELP_STRING([--enable-xa],
566 [enable build of the XA X Acceleration API @<:@default=no@:>@])],
567 [enable_xa="$enableval"],
568 [enable_xa=no])
569 AC_ARG_ENABLE([gbm],
570 [AS_HELP_STRING([--enable-gbm],
571 [enable gbm library @<:@default=auto@:>@])],
572 [enable_gbm="$enableval"],
573 [enable_gbm=auto])
574
575 AC_ARG_ENABLE([xvmc],
576 [AS_HELP_STRING([--enable-xvmc],
577 [enable xvmc library @<:@default=auto@:>@])],
578 [enable_xvmc="$enableval"],
579 [enable_xvmc=no])
580 AC_ARG_ENABLE([vdpau],
581 [AS_HELP_STRING([--enable-vdpau],
582 [enable vdpau library @<:@default=auto@:>@])],
583 [enable_vdpau="$enableval"],
584 [enable_vdpau=auto])
585 AC_ARG_ENABLE([omx],
586 [AS_HELP_STRING([--enable-omx],
587 [enable OpenMAX library @<:@default=no@:>@])],
588 [enable_omx="$enableval"],
589 [enable_omx=no])
590 AC_ARG_ENABLE([opencl],
591 [AS_HELP_STRING([--enable-opencl],
592 [enable OpenCL library NOTE: Enabling this option will also enable
593 --enable-llvm-shared-libs
594 @<:@default=no@:>@])],
595 [],
596 [enable_opencl=no])
597 AC_ARG_ENABLE([opencl_icd],
598 [AS_HELP_STRING([--enable-opencl-icd],
599 [Build an OpenCL ICD library to be loaded by an ICD implementation
600 @<:@default=no@:>@])],
601 [enable_opencl_icd="$enableval"],
602 [enable_opencl_icd=no])
603 AC_ARG_ENABLE([xlib-glx],
604 [AS_HELP_STRING([--enable-xlib-glx],
605 [make GLX library Xlib-based instead of DRI-based @<:@default=disabled@:>@])],
606 [enable_xlib_glx="$enableval"],
607 [enable_xlib_glx=no])
608 AC_ARG_ENABLE([gallium-egl],
609 [AS_HELP_STRING([--enable-gallium-egl],
610 [enable optional EGL state tracker (not required
611 for EGL support in Gallium with OpenGL and OpenGL ES)
612 @<:@default=disable@:>@])],
613 [enable_gallium_egl="$enableval"],
614 [enable_gallium_egl=no])
615 AC_ARG_ENABLE([gallium-gbm],
616 [AS_HELP_STRING([--enable-gallium-gbm],
617 [enable optional gbm state tracker (not required for
618 gbm support in Gallium)
619 @<:@default=auto@:>@])],
620 [enable_gallium_gbm="$enableval"],
621 [enable_gallium_gbm=auto])
622
623 AC_ARG_ENABLE([r600-llvm-compiler],
624 [AS_HELP_STRING([--enable-r600-llvm-compiler],
625 [Enable experimental LLVM backend for graphics shaders @<:@default=disable@:>@])],
626 [enable_r600_llvm="$enableval"],
627 [enable_r600_llvm=no])
628
629 AC_ARG_ENABLE([gallium-tests],
630 [AS_HELP_STRING([--enable-gallium-tests],
631 [Enable optional Gallium tests) @<:@default=disable@:>@])],
632 [enable_gallium_tests="$enableval"],
633 [enable_gallium_tests=no])
634
635 # Option for Gallium drivers
636
637 # Keep this in sync with the --with-gallium-drivers help string default value
638 GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
639
640 AC_ARG_WITH([gallium-drivers],
641 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
642 [comma delimited Gallium drivers list, e.g.
643 "i915,ilo,nouveau,r300,r600,radeonsi,freedreno,svga,swrast"
644 @<:@default=r300,r600,svga,swrast@:>@])],
645 [with_gallium_drivers="$withval"],
646 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
647
648 # Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it
649 # here so that the script doesn't choke on an unknown driver name later.
650 case "$with_gallium_drivers" in
651 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
652 no) with_gallium_drivers='' ;;
653 esac
654
655 if test "x$enable_opengl" = xno -a \
656 "x$enable_gles1" = xno -a \
657 "x$enable_gles2" = xno -a \
658 "x$enable_openvg" = xno -a \
659 "x$enable_xa" = xno -a \
660 "x$enable_xvmc" = xno -a \
661 "x$enable_vdpau" = xno -a \
662 "x$enable_omx" = xno -a \
663 "x$enable_opencl" = xno; then
664 AC_MSG_ERROR([at least one API should be enabled])
665 fi
666
667 # Building OpenGL ES1 and/or ES2 without OpenGL is not supported on mesa 9.0.x
668 if test "x$enable_opengl" = xno -a \
669 "x$enable_gles1" = xyes; then
670 AC_MSG_ERROR([Building OpenGL ES1 without OpenGL is not supported])
671 fi
672
673 if test "x$enable_opengl" = xno -a \
674 "x$enable_gles2" = xyes; then
675 AC_MSG_ERROR([Building OpenGL ES2 without OpenGL is not supported])
676 fi
677
678 AM_CONDITIONAL(HAVE_OPENGL, test "x$enable_opengl" = xyes)
679 AM_CONDITIONAL(HAVE_OPENGL_ES1, test "x$enable_gles1" = xyes)
680 AM_CONDITIONAL(HAVE_OPENGL_ES2, test "x$enable_gles2" = xyes)
681 AM_CONDITIONAL(NEED_OPENGL_COMMON, test "x$enable_opengl" = xyes -o \
682 "x$enable_gles1" = xyes -o \
683 "x$enable_gles2" = xyes)
684
685 if test "x$enable_glx" = xno; then
686 AC_MSG_WARN([GLX disabled, disabling Xlib-GLX])
687 enable_xlib_glx=no
688 fi
689
690 if test "x$enable_dri$enable_xlib_glx" = xyesyes; then
691 AC_MSG_ERROR([DRI and Xlib-GLX cannot be built together])
692 fi
693
694 if test "x$enable_opengl$enable_xlib_glx" = xnoyes; then
695 AC_MSG_ERROR([Xlib-GLX cannot be built without OpenGL])
696 fi
697
698 # Disable GLX if OpenGL is not enabled
699 if test "x$enable_glx$enable_opengl" = xyesno; then
700 AC_MSG_WARN([OpenGL not enabled, disabling GLX])
701 enable_glx=no
702 fi
703
704 # Disable GLX if DRI and Xlib-GLX are not enabled
705 if test "x$enable_glx" = xyes -a \
706 "x$enable_dri" = xno -a \
707 "x$enable_xlib_glx" = xno; then
708 AC_MSG_WARN([Neither DRI nor Xlib-GLX enabled, disabling GLX])
709 enable_glx=no
710 fi
711
712 AM_CONDITIONAL(HAVE_DRI_GLX, test "x$enable_glx" = xyes -a \
713 "x$enable_dri" = xyes)
714 AM_CONDITIONAL(HAVE_DRI, test "x$enable_dri" = xyes)
715 AM_CONDITIONAL(HAVE_DRI3, test "x$enable_dri3" = xyes)
716
717 AC_ARG_ENABLE([shared-glapi],
718 [AS_HELP_STRING([--enable-shared-glapi],
719 [Enable shared glapi for OpenGL @<:@default=yes@:>@])],
720 [enable_shared_glapi="$enableval"],
721 [enable_shared_glapi=yes])
722
723 case "x$enable_opengl$enable_gles1$enable_gles2" in
724 x*yes*yes*)
725 if test "x$enable_shared_glapi" = xno; then
726 AC_MSG_ERROR([shared GLAPI required when building two or more of
727 the following APIs - opengl, gles1 gles2])
728 fi
729 ;;
730 esac
731
732 # Building Xlib-GLX requires shared glapi to be disabled.
733 if test "x$enable_xlib_glx" = xyes; then
734 AC_MSG_NOTICE([Shared GLAPI should not used with Xlib-GLX, disabling])
735 enable_shared_glapi=no
736 fi
737
738 AM_CONDITIONAL(HAVE_SHARED_GLAPI, test "x$enable_shared_glapi" = xyes)
739
740 dnl
741 dnl Driver specific build directories
742 dnl
743 GALLIUM_TARGET_DIRS=""
744 GALLIUM_WINSYS_DIRS="sw"
745 GALLIUM_DRIVERS_DIRS="galahad trace rbug noop identity"
746 GALLIUM_STATE_TRACKERS_DIRS=""
747
748 case "x$enable_glx$enable_xlib_glx" in
749 xyesyes)
750 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
751 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
752 GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS"
753 NEED_WINSYS_XLIB="yes"
754 ;;
755 esac
756
757 if test "x$enable_dri" = xyes; then
758 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/dri"
759 GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
760 fi
761
762 if test "x$enable_gallium_osmesa" = xyes; then
763 if test -z "$with_gallium_drivers"; then
764 AC_MSG_ERROR([Cannot enable gallium_osmesa without Gallium])
765 fi
766 if test "x$enable_osmesa" = xyes; then
767 AC_MSG_ERROR([Cannot enable both classic and Gallium OSMesa implementations])
768 fi
769 GALLIUM_STATE_TRACKERS_DIRS="osmesa $GALLIUM_STATE_TRACKERS_DIRS"
770 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS osmesa"
771 fi
772
773 AC_SUBST([MESA_LLVM])
774
775 # Check for libdrm
776 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
777 [have_libdrm=yes], [have_libdrm=no])
778 if test "x$have_libdrm" = xyes; then
779 DEFINES="$DEFINES -DHAVE_LIBDRM"
780 fi
781
782 PKG_CHECK_MODULES([LIBUDEV], [libudev >= $LIBUDEV_REQUIRED],
783 have_libudev=yes, have_libudev=no)
784
785 if test "x$enable_dri" = xyes; then
786 # DRI must be shared, I think
787 if test "$enable_static" = yes; then
788 AC_MSG_ERROR([Cannot use static libraries for DRI drivers])
789 fi
790
791 # not a hard requirement as swrast does not depend on it
792 if test "x$have_libdrm" = xyes; then
793 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
794 fi
795 fi
796
797 dnl Direct rendering or just indirect rendering
798 case "$host_os" in
799 gnu*)
800 dnl Disable by default on GNU/Hurd
801 driglx_direct_default="no"
802 ;;
803 cygwin*)
804 dnl Disable by default on cygwin
805 driglx_direct_default="no"
806 ;;
807 *)
808 driglx_direct_default="yes"
809 ;;
810 esac
811 AC_ARG_ENABLE([driglx-direct],
812 [AS_HELP_STRING([--disable-driglx-direct],
813 [disable direct rendering in GLX and EGL for DRI \
814 @<:@default=auto@:>@])],
815 [driglx_direct="$enableval"],
816 [driglx_direct="$driglx_direct_default"])
817
818 dnl
819 dnl libGL configuration per driver
820 dnl
821 case "x$enable_glx$enable_xlib_glx" in
822 xyesyes)
823 # Xlib-based GLX
824 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
825 GL_PC_REQ_PRIV="x11 xext"
826 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
827 GL_LIB_DEPS="$XLIBGL_LIBS"
828 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
829 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm $PTHREAD_LIBS"
830 ;;
831 xyesno)
832 # DRI-based GLX
833 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
834 if test x"$driglx_direct" = xyes; then
835 if test "x$have_libdrm" != xyes; then
836 AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
837 fi
838 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
839 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED"
840 if test x"$enable_dri3" = xyes; then
841 if test x"$have_libudev" != xyes; then
842 AC_MSG_ERROR([DRI3 requires libudev >= $LIBUDEV_REQUIRED])
843 fi
844 PKG_CHECK_MODULES([DRI3PROTO], [dri3proto >= $DRI3PROTO_REQUIRED])
845 PKG_CHECK_MODULES([PRESENTPROTO], [presentproto >= $PRESENTPROTO_REQUIRED])
846 fi
847 fi
848
849 # find the DRI deps for libGL
850 dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx >= $XCBGLX_REQUIRED xcb-dri2 >= $XCBDRI2_REQUIRED"
851
852 if test x"$enable_dri3" = xyes; then
853 dri_modules="$dri_modules xcb-dri3 xcb-present xcb-sync xshmfence >= $XSHMFENCE_REQUIRED"
854 fi
855
856 # add xf86vidmode if available
857 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
858 if test "$HAVE_XF86VIDMODE" = yes ; then
859 dri_modules="$dri_modules xxf86vm"
860 fi
861
862 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
863 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
864 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
865 GL_LIB_DEPS="$DRIGL_LIBS"
866
867 # need DRM libs, $PTHREAD_LIBS, etc.
868 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
869 GL_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
870 ;;
871 esac
872
873 if test "$have_libudev" = yes; then
874 DEFINES="$DEFINES -DHAVE_LIBUDEV"
875 fi
876
877 # This is outside the case (above) so that it is invoked even for non-GLX
878 # builds.
879 AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
880
881 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
882 GLESv1_CM_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
883 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
884 GLESv2_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
885
886 AC_SUBST([X11_INCLUDES])
887 AC_SUBST([GL_LIB_DEPS])
888 AC_SUBST([GL_PC_REQ_PRIV])
889 AC_SUBST([GL_PC_LIB_PRIV])
890 AC_SUBST([GL_PC_CFLAGS])
891 AC_SUBST([DRI_PC_REQ_PRIV])
892 AC_SUBST([GLESv1_CM_LIB_DEPS])
893 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
894 AC_SUBST([GLESv2_LIB_DEPS])
895 AC_SUBST([GLESv2_PC_LIB_PRIV])
896
897 AC_SUBST([HAVE_XF86VIDMODE])
898
899 dnl
900 dnl More GLX setup
901 dnl
902 case "x$enable_glx$enable_xlib_glx" in
903 xyesyes)
904 DEFINES="$DEFINES -DUSE_XSHM"
905 ;;
906 xyesno)
907 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
908 if test "x$driglx_direct" = xyes; then
909 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
910 fi
911 ;;
912 esac
913
914 dnl
915 dnl TLS detection
916 dnl
917
918 AC_ARG_ENABLE([glx-tls],
919 [AS_HELP_STRING([--enable-glx-tls],
920 [enable TLS support in GLX @<:@default=disabled@:>@])],
921 [GLX_USE_TLS="$enableval"],
922 [GLX_USE_TLS=no])
923 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
924
925 AS_IF([test "x$GLX_USE_TLS" = xyes -a "x$ax_pthread_ok" = xyes],
926 [DEFINES="${DEFINES} -DGLX_USE_TLS -DHAVE_PTHREAD"])
927
928 dnl
929 dnl More DRI setup
930 dnl
931 dnl Directory for DRI drivers
932 AC_ARG_WITH([dri-driverdir],
933 [AS_HELP_STRING([--with-dri-driverdir=DIR],
934 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
935 [DRI_DRIVER_INSTALL_DIR="$withval"],
936 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
937 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
938 dnl Extra search path for DRI drivers
939 AC_ARG_WITH([dri-searchpath],
940 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
941 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
942 [DRI_DRIVER_SEARCH_DIR="$withval"],
943 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
944 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
945 dnl Which drivers to build - default is chosen by platform
946 AC_ARG_WITH([dri-drivers],
947 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
948 [comma delimited classic DRI drivers list, e.g.
949 "swrast,i965,radeon" @<:@default=auto@:>@])],
950 [with_dri_drivers="$withval"],
951 [with_dri_drivers=auto])
952
953 if test "x$with_dri_drivers" = xauto; then
954 if test "x$enable_opengl" = xyes -a "x$enable_dri" = xyes; then
955 with_dri_drivers="yes"
956 else
957 with_dri_drivers="no"
958 fi
959 fi
960 if test "x$with_dri_drivers" = xno; then
961 with_dri_drivers=''
962 fi
963
964 dnl If $with_dri_drivers is yes, drivers will be added through
965 dnl platform checks. Set DEFINES and LIB_DEPS
966 if test "x$enable_dri" = xyes; then
967 # Platform specific settings and drivers to build
968 case "$host_os" in
969 linux*)
970 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1"
971 DEFINES="$DEFINES -DHAVE_ALIAS"
972 if test "x$enable_dri3" = xyes; then
973 DEFINES="$DEFINES -DHAVE_DRI3"
974 fi
975
976 if test "x$have_libudev" != xyes; then
977 AC_MSG_ERROR([libudev-dev required for building DRI])
978 fi
979
980 case "$host_cpu" in
981 powerpc* | sparc*)
982 # Build only the drivers for cards that exist on PowerPC/sparc
983 if test "x$with_dri_drivers" = "xyes"; then
984 with_dri_drivers="r200 radeon swrast"
985 fi
986 ;;
987 esac
988 ;;
989 *freebsd* | dragonfly* | *netbsd* | openbsd*)
990 DEFINES="$DEFINES -DHAVE_PTHREAD -DUSE_EXTERNAL_DXTN_LIB=1"
991 DEFINES="$DEFINES -DHAVE_ALIAS"
992 ;;
993 gnu*)
994 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1"
995 DEFINES="$DEFINES -DHAVE_ALIAS"
996 ;;
997 solaris*)
998 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1"
999 ;;
1000 cygwin*)
1001 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1"
1002 if test "x$with_dri_drivers" = "xyes"; then
1003 with_dri_drivers="swrast"
1004 fi
1005 ;;
1006 esac
1007
1008 # default drivers
1009 if test "x$with_dri_drivers" = "xyes"; then
1010 with_dri_drivers="i915 i965 nouveau r200 radeon swrast"
1011 fi
1012
1013 # Check for expat
1014 PKG_CHECK_EXISTS([EXPAT], [have_expat=yes], [have_expat=no])
1015 if test "x$have_expat" = "xyes"; then
1016 PKG_CHECK_MODULES([EXPAT], [expat], [],
1017 AC_MSG_ERROR([Expat required for DRI.]))
1018 else
1019 # expat version 2.0 and earlier do not provide expat.pc
1020 EXPAT_LIBS=-lexpat
1021 fi
1022
1023 # If we are building any DRI driver other than swrast.
1024 if test -n "$with_dri_drivers"; then
1025 if test "x$with_dri_drivers" != xswrast; then
1026 # ... libdrm is required
1027 if test "x$have_libdrm" != xyes; then
1028 AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
1029 fi
1030 DRICOMMON_NEED_LIBDRM=yes
1031 else
1032 DRICOMMON_NEED_LIBDRM=no
1033 fi
1034 fi
1035
1036 # put all the necessary libs together
1037 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1038 GALLIUM_DRI_LIB_DEPS="$GALLIUM_DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIBS -lm $CLOCK_LIB $PTHREAD_LIBS $DLOPEN_LIBS"
1039
1040 fi
1041
1042 AC_SUBST([DRI_LIB_DEPS])
1043 AC_SUBST([GALLIUM_DRI_LIB_DEPS])
1044
1045 DRI_DIRS=''
1046 dnl Duplicates in DRI_DIRS are removed by sorting it at the end of this block
1047 if test -n "$with_dri_drivers"; then
1048 if test "x$enable_opengl" != xyes; then
1049 AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1050 fi
1051
1052 dri_drivers=`IFS=', '; echo $with_dri_drivers`
1053 for driver in $dri_drivers; do
1054 DRI_DIRS="$DRI_DIRS $driver"
1055 case "x$driver" in
1056 xi915)
1057 HAVE_I915_DRI=yes;
1058 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1059 ;;
1060 xi965)
1061 HAVE_I965_DRI=yes;
1062 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1063 ;;
1064 xnouveau)
1065 HAVE_NOUVEAU_DRI=yes;
1066 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED])
1067 ;;
1068 xradeon)
1069 HAVE_RADEON_DRI=yes;
1070 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1071 ;;
1072 xr200)
1073 HAVE_R200_DRI=yes;
1074 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1075 ;;
1076 xswrast)
1077 HAVE_SWRAST_DRI=yes;
1078 ;;
1079 *)
1080 AC_MSG_ERROR([classic DRI driver '$driver' does not exist])
1081 ;;
1082 esac
1083 done
1084 DRI_DIRS=`echo $DRI_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1085 fi
1086
1087 AM_CONDITIONAL(NEED_MEGADRIVER, test -n "$DRI_DIRS")
1088 AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_xlib_glx" = xyes -o \
1089 "x$enable_osmesa" = xyes -o \
1090 -n "$DRI_DIRS")
1091
1092 dnl
1093 dnl OSMesa configuration
1094 dnl
1095
1096 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1097 AC_ARG_WITH([osmesa-bits],
1098 [AS_HELP_STRING([--with-osmesa-bits=BITS],
1099 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1100 [osmesa_bits="$withval"],
1101 [osmesa_bits=8])
1102 if test "x$osmesa_bits" != x8; then
1103 if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then
1104 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1105 osmesa_bits=8
1106 fi
1107 fi
1108 case "x$osmesa_bits" in
1109 x8)
1110 OSMESA_LIB="${OSMESA_LIB}"
1111 ;;
1112 x16|x32)
1113 OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
1114 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1115 ;;
1116 *)
1117 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1118 ;;
1119 esac
1120
1121 if test "x$enable_osmesa" = xyes -o "x$enable_gallium_osmesa" = xyes; then
1122 # only link libraries with osmesa if shared
1123 if test "$enable_static" = no; then
1124 OSMESA_LIB_DEPS="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1125 else
1126 OSMESA_LIB_DEPS=""
1127 fi
1128 OSMESA_MESA_DEPS=""
1129 OSMESA_PC_LIB_PRIV="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1130 fi
1131
1132 AC_SUBST([OSMESA_LIB_DEPS])
1133 AC_SUBST([OSMESA_MESA_DEPS])
1134 AC_SUBST([OSMESA_PC_REQ])
1135 AC_SUBST([OSMESA_PC_LIB_PRIV])
1136
1137 dnl
1138 dnl gbm configuration
1139 dnl
1140 if test "x$enable_gbm" = xauto; then
1141 case "$with_egl_platforms" in
1142 *drm*)
1143 enable_gbm=yes ;;
1144 *)
1145 enable_gbm=no ;;
1146 esac
1147 fi
1148 if test "x$enable_gbm" = xyes; then
1149 if test x"$have_libudev" != xyes; then
1150 AC_MSG_ERROR([gbm requires udev >= $LIBUDEV_REQUIRED])
1151 fi
1152
1153 if test "x$enable_dri" = xyes; then
1154 GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
1155 if test "x$enable_shared_glapi" = xno; then
1156 AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1157 fi
1158 fi
1159 fi
1160 AM_CONDITIONAL(HAVE_GBM, test "x$enable_gbm" = xyes)
1161 GBM_PC_REQ_PRIV="libudev >= $LIBUDEV_REQUIRED"
1162 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1163 AC_SUBST([GBM_PC_REQ_PRIV])
1164 AC_SUBST([GBM_PC_LIB_PRIV])
1165
1166 dnl
1167 dnl EGL configuration
1168 dnl
1169 EGL_CLIENT_APIS=""
1170
1171 if test "x$enable_egl" = xyes; then
1172 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS $PTHREAD_LIBS"
1173
1174 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1175
1176 if test "$enable_static" != yes; then
1177 if test "x$enable_dri" = xyes; then
1178 HAVE_EGL_DRIVER_DRI2=1
1179 fi
1180
1181 fi
1182 fi
1183 AM_CONDITIONAL(HAVE_EGL, test "x$enable_egl" = xyes)
1184 AC_SUBST([EGL_LIB_DEPS])
1185
1186 dnl
1187 dnl EGL Gallium configuration
1188 dnl
1189 if test "x$enable_gallium_egl" = xyes; then
1190 if test -z "$with_gallium_drivers"; then
1191 AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
1192 fi
1193 if test "x$enable_egl" = xno; then
1194 AC_MSG_ERROR([cannot enable egl_gallium without EGL])
1195 fi
1196 if test "x$have_libdrm" != xyes; then
1197 AC_MSG_ERROR([egl_gallium requires libdrm >= $LIBDRM_REQUIRED])
1198 fi
1199
1200 GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
1201 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static"
1202 fi
1203 AM_CONDITIONAL(HAVE_GALLIUM_EGL, test "x$enable_gallium_egl" = xyes)
1204
1205 dnl
1206 dnl gbm Gallium configuration
1207 dnl
1208 if test "x$enable_gallium_gbm" = xauto; then
1209 case "$enable_gbm$enable_gallium_egl$enable_dri$with_egl_platforms" in
1210 yesyesyes*drm*)
1211 enable_gallium_gbm=yes ;;
1212 *)
1213 enable_gallium_gbm=no ;;
1214 esac
1215 fi
1216 if test "x$enable_gallium_gbm" = xyes; then
1217 if test -z "$with_gallium_drivers"; then
1218 AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
1219 fi
1220 if test "x$enable_gbm" = xno; then
1221 AC_MSG_ERROR([cannot enable gbm_gallium without gbm])
1222 fi
1223 # gbm_gallium abuses DRI_LIB_DEPS to link. Make sure it is set.
1224 if test "x$enable_dri" = xno; then
1225 AC_MSG_ERROR([gbm_gallium requires --enable-dri to build])
1226 fi
1227
1228 GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS"
1229 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm"
1230 enable_gallium_loader=yes
1231 fi
1232 AM_CONDITIONAL(HAVE_GALLIUM_GBM, test "x$enable_gallium_gbm" = xyes)
1233
1234 dnl
1235 dnl XA configuration
1236 dnl
1237 if test "x$enable_xa" = xyes; then
1238 if test "x$with_gallium_drivers" = xswrast; then
1239 AC_MSG_ERROR([
1240 Building xa requires at least one non swrast gallium driver.
1241 If you are looking to use libxatracker.so with vmware's virtual gpu,
1242 make sure to include svga in the gallium drivers list, apart from
1243 enabling XA.
1244 Example: ./configure --enable-xa --with-gallium-drivers=svga...])
1245 fi
1246 GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS"
1247 enable_gallium_loader=yes
1248 fi
1249 AM_CONDITIONAL(HAVE_ST_XA, test "x$enable_xa" = xyes)
1250
1251 dnl
1252 dnl OpenVG configuration
1253 dnl
1254 VG_LIB_DEPS=""
1255
1256 if test "x$enable_openvg" = xyes; then
1257 if test "x$enable_egl" = xno; then
1258 AC_MSG_ERROR([cannot enable OpenVG without EGL])
1259 fi
1260 if test -z "$with_gallium_drivers"; then
1261 AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1262 fi
1263 if test "x$enable_gallium_egl" = xno; then
1264 AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
1265 fi
1266
1267 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1268 VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS $PTHREAD_LIBS"
1269 GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1270 VG_PC_LIB_PRIV="-lm $CLOCK_LIB $PTHREAD_LIBS $DLOPEN_LIBS"
1271 AC_SUBST([VG_PC_LIB_PRIV])
1272 fi
1273 AM_CONDITIONAL(HAVE_OPENVG, test "x$enable_openvg" = xyes)
1274
1275 dnl
1276 dnl Gallium G3DVL configuration
1277 dnl
1278 if test -n "$with_gallium_drivers"; then
1279 if test "x$enable_xvmc" = xauto; then
1280 PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no])
1281 fi
1282
1283 if test "x$enable_vdpau" = xauto; then
1284 PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no])
1285 fi
1286
1287 if test "x$enable_omx" = xauto; then
1288 PKG_CHECK_EXISTS([libomxil-bellagio], [enable_omx=yes], [enable_omx=no])
1289 fi
1290 fi
1291
1292 if test "x$enable_xvmc" = xyes; then
1293 PKG_CHECK_MODULES([XVMC], [xvmc >= $XVMC_REQUIRED x11-xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
1294 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xvmc"
1295 fi
1296 AM_CONDITIONAL(HAVE_ST_XVMC, test "x$enable_xvmc" = xyes)
1297
1298 if test "x$enable_vdpau" = xyes; then
1299 PKG_CHECK_MODULES([VDPAU], [vdpau >= $VDPAU_REQUIRED x11-xcb xcb-dri2 >= $XCBDRI2_REQUIRED],
1300 [VDPAU_LIBS="`$PKG_CONFIG --libs x11-xcb xcb-dri2`"])
1301 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau"
1302 fi
1303 AM_CONDITIONAL(HAVE_ST_VDPAU, test "x$enable_vdpau" = xyes)
1304
1305 if test "x$enable_omx" = xyes; then
1306 PKG_CHECK_MODULES([OMX], [libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED x11-xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
1307 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS omx"
1308 fi
1309 AM_CONDITIONAL(HAVE_ST_OMX, test "x$enable_omx" = xyes)
1310
1311 dnl
1312 dnl OpenCL configuration
1313 dnl
1314
1315 AC_ARG_WITH([libclc-path],
1316 [AS_HELP_STRING([--with-libclc-path],
1317 [DEPRECATED: See http://dri.freedesktop.org/wiki/GalliumCompute#How_to_Install])],
1318 [LIBCLC_PATH="$withval"],
1319 [LIBCLC_PATH=''])
1320
1321 if test -n "$LIBCLC_PATH"; then
1322 AC_MSG_ERROR([The --with-libclc-path option has been deprecated.
1323 Please review the updated build instructions for clover:
1324 http://dri.freedesktop.org/wiki/GalliumCompute])
1325 fi
1326
1327
1328 AC_ARG_WITH([clang-libdir],
1329 [AS_HELP_STRING([--with-clang-libdir],
1330 [Path to Clang libraries @<:@default=llvm-config --libdir@:>@])],
1331 [CLANG_LIBDIR="$withval"],
1332 [CLANG_LIBDIR=''])
1333
1334 PKG_CHECK_EXISTS([libclc], [have_libclc=yes], [have_libclc=no])
1335
1336 if test "x$enable_opencl" = xyes; then
1337 if test -z "$with_gallium_drivers"; then
1338 AC_MSG_ERROR([cannot enable OpenCL without Gallium])
1339 fi
1340
1341 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 7; then
1342 AC_MSG_ERROR([gcc >= 4.7 is required to build clover])
1343 fi
1344
1345 if test "x$have_libclc" = xno; then
1346 AC_MSG_ERROR([pkg-config cannot find libclc.pc which is required to build clover.
1347 Make sure the directory containing libclc.pc is specified in your
1348 PKG_CONFIG_PATH environment variable.
1349 By default libclc.pc is installed to /usr/local/share/pkgconfig/])
1350 else
1351 LIBCLC_INCLUDEDIR=`$PKG_CONFIG --variable=includedir libclc`
1352 LIBCLC_LIBEXECDIR=`$PKG_CONFIG --variable=libexecdir libclc`
1353 AC_SUBST([LIBCLC_INCLUDEDIR])
1354 AC_SUBST([LIBCLC_LIBEXECDIR])
1355 fi
1356
1357 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS clover"
1358 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS opencl"
1359 enable_gallium_loader=yes
1360
1361 if test "x$enable_opencl_icd" = xyes; then
1362 OPENCL_LIBNAME="MesaOpenCL"
1363 else
1364 OPENCL_LIBNAME="OpenCL"
1365 fi
1366 fi
1367 AM_CONDITIONAL(HAVE_CLOVER, test "x$enable_opencl" = xyes)
1368 AM_CONDITIONAL(HAVE_CLOVER_ICD, test "x$enable_opencl_icd" = xyes)
1369 AC_SUBST([OPENCL_LIBNAME])
1370
1371 dnl
1372 dnl Gallium configuration
1373 dnl
1374 AM_CONDITIONAL(HAVE_GALLIUM, test -n "$with_gallium_drivers")
1375
1376 AC_SUBST([LLVM_BINDIR])
1377 AC_SUBST([LLVM_CFLAGS])
1378 AC_SUBST([LLVM_CPPFLAGS])
1379 AC_SUBST([LLVM_CXXFLAGS])
1380 AC_SUBST([LLVM_LIBDIR])
1381 AC_SUBST([LLVM_LIBS])
1382 AC_SUBST([LLVM_LDFLAGS])
1383 AC_SUBST([LLVM_INCLUDEDIR])
1384 AC_SUBST([LLVM_VERSION])
1385 AC_SUBST([CLANG_RESOURCE_DIR])
1386
1387 case "x$enable_opengl$enable_gles1$enable_gles2" in
1388 x*yes*)
1389 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1390 ;;
1391 esac
1392
1393 AC_SUBST([VG_LIB_DEPS])
1394 AC_SUBST([EGL_CLIENT_APIS])
1395
1396 dnl
1397 dnl EGL Platforms configuration
1398 dnl
1399 AC_ARG_WITH([egl-platforms],
1400 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1401 [comma delimited native platforms libEGL supports, e.g.
1402 "x11,drm" @<:@default=auto@:>@])],
1403 [with_egl_platforms="$withval"],
1404 [if test "x$enable_egl" = xyes; then
1405 with_egl_platforms="x11"
1406 else
1407 with_egl_platforms=""
1408 fi])
1409
1410 if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
1411 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1412 fi
1413
1414 # Do per-EGL platform setups and checks
1415 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1416 for plat in $egl_platforms; do
1417 case "$plat" in
1418 wayland)
1419 PKG_CHECK_MODULES([WAYLAND], [wayland-client >= $WAYLAND_REQUIRED wayland-server >= $WAYLAND_REQUIRED])
1420 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
1421
1422 WAYLAND_PREFIX=`$PKG_CONFIG --variable=prefix wayland-client`
1423 AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner],,
1424 [${WAYLAND_PREFIX}/bin$PATH_SEPARATOR$PATH])
1425 ;;
1426
1427 x11)
1428 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 >= $XCBDRI2_REQUIRED xcb-xfixes])
1429 ;;
1430
1431 drm)
1432 test "x$enable_gbm" = "xno" &&
1433 AC_MSG_ERROR([EGL platform drm needs gbm])
1434 test "x$have_libdrm" != xyes &&
1435 AC_MSG_ERROR([EGL platform drm requires libdrm >= $LIBDRM_REQUIRED])
1436 ;;
1437
1438 android|fbdev|gdi|null)
1439 ;;
1440
1441 *)
1442 AC_MSG_ERROR([EGL platform '$plat' does not exist])
1443 ;;
1444 esac
1445
1446 case "$plat$have_libudev" in
1447 waylandno|drmno)
1448 AC_MSG_ERROR([cannot build $plat platform without udev >= $LIBUDEV_REQUIRED]) ;;
1449 esac
1450 done
1451
1452 # libEGL wants to default to the first platform specified in
1453 # ./configure. parse that here.
1454 if test "x$egl_platforms" != "x"; then
1455 FIRST_PLATFORM_CAPS=`echo $egl_platforms | sed 's| .*||' | tr 'a-z' 'A-Z'`
1456 EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
1457 else
1458 EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
1459 fi
1460
1461 if echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1; then
1462 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
1463 NEED_WINSYS_XLIB=yes
1464 fi
1465 AM_CONDITIONAL(HAVE_EGL_PLATFORM_X11, echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1)
1466 AM_CONDITIONAL(HAVE_EGL_PLATFORM_WAYLAND, echo "$egl_platforms" | grep 'wayland' >/dev/null 2>&1)
1467 AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep 'drm' >/dev/null 2>&1)
1468 AM_CONDITIONAL(HAVE_EGL_PLATFORM_FBDEV, echo "$egl_platforms" | grep 'fbdev' >/dev/null 2>&1)
1469 AM_CONDITIONAL(HAVE_EGL_PLATFORM_NULL, echo "$egl_platforms" | grep 'null' >/dev/null 2>&1)
1470
1471 AM_CONDITIONAL(HAVE_EGL_DRIVER_DRI2, test "x$HAVE_EGL_DRIVER_DRI2" != "x")
1472
1473 AC_SUBST([EGL_NATIVE_PLATFORM])
1474 AC_SUBST([EGL_CFLAGS])
1475
1476 # If we don't have the X11 platform, set this define so we don't try to include
1477 # the X11 headers.
1478 if ! echo "$egl_platforms" | grep -q 'x11'; then
1479 DEFINES="$DEFINES -DMESA_EGL_NO_X11_HEADERS"
1480 GL_PC_CFLAGS="$GL_PC_CFLAGS -DMESA_EGL_NO_X11_HEADERS"
1481 fi
1482
1483 AC_ARG_WITH([egl-driver-dir],
1484 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1485 [directory for EGL drivers [[default=${libdir}/egl]]])],
1486 [EGL_DRIVER_INSTALL_DIR="$withval"],
1487 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1488 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1489
1490 AC_ARG_WITH([max-width],
1491 [AS_HELP_STRING([--with-max-width=N],
1492 [Maximum framebuffer width (4096)])],
1493 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1494 AS_IF([test "${withval}" -gt "4096"],
1495 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1496 )
1497 AC_ARG_WITH([max-height],
1498 [AS_HELP_STRING([--with-max-height=N],
1499 [Maximum framebuffer height (4096)])],
1500 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1501 AS_IF([test "${withval}" -gt "4096"],
1502 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1503 )
1504
1505 dnl
1506 dnl Gallium LLVM
1507 dnl
1508 AC_ARG_ENABLE([gallium-llvm],
1509 [AS_HELP_STRING([--enable-gallium-llvm],
1510 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1511 [enable_gallium_llvm="$enableval"],
1512 [enable_gallium_llvm=auto])
1513
1514 AC_ARG_ENABLE([llvm-shared-libs],
1515 [AS_HELP_STRING([--enable-llvm-shared-libs],
1516 [link with LLVM shared libraries @<:@default=enabled@:>@])],
1517 [],
1518 [with_llvm_shared_libs=yes])
1519
1520 AC_ARG_WITH([llvm-prefix],
1521 [AS_HELP_STRING([--with-llvm-prefix],
1522 [Prefix for LLVM installations in non-standard locations])],
1523 [llvm_prefix="$withval"],
1524 [llvm_prefix=''])
1525
1526
1527 # Call this inside ` ` to get the return value.
1528 # $1 is the llvm-config command with arguments.
1529 strip_unwanted_llvm_flags() {
1530 # Use \> (marks the end of the word)
1531 echo `$1` | sed \
1532 -e 's/-DNDEBUG\>//g' \
1533 -e 's/-pedantic\>//g' \
1534 -e 's/-Wcovered-switch-default\>//g' \
1535 -e 's/-O.\>//g' \
1536 -e 's/-g\>//g' \
1537 -e 's/-Wall\>//g' \
1538 -e 's/-Wcast-qual\>//g' \
1539 -e 's/-Woverloaded-virtual\>//g' \
1540 -e 's/-fcolor-diagnostics\>//g' \
1541 -e 's/-fdata-sections\>//g' \
1542 -e 's/-ffunction-sections\>//g' \
1543 -e 's/-fno-exceptions\>//g' \
1544 -e 's/-fomit-frame-pointer\>//g' \
1545 -e 's/-fvisibility-inlines-hidden\>//g' \
1546 -e 's/-fPIC\>//g'
1547 }
1548
1549
1550 if test -z "$with_gallium_drivers"; then
1551 enable_gallium_llvm=no
1552 fi
1553 if test "x$enable_gallium_llvm" = xauto; then
1554 case "$host_cpu" in
1555 i*86|x86_64|amd64) enable_gallium_llvm=yes;;
1556 esac
1557 fi
1558 if test "x$enable_gallium_llvm" = xyes; then
1559 if test -n "$llvm_prefix"; then
1560 AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no], ["$llvm_prefix/bin"])
1561 else
1562 AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no])
1563 fi
1564
1565 if test "x$LLVM_CONFIG" != xno; then
1566 LLVM_VERSION=`$LLVM_CONFIG --version | sed 's/svn.*//g'`
1567 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1568 LLVM_BINDIR=`$LLVM_CONFIG --bindir`
1569 LLVM_CPPFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cppflags"`
1570 LLVM_CFLAGS=$LLVM_CPPFLAGS # CPPFLAGS seem to be sufficient
1571 LLVM_CXXFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cxxflags"`
1572 LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
1573 LLVM_LIBDIR=`$LLVM_CONFIG --libdir`
1574 LLVM_LDFLAGS="-Wl,-rpath,$LLVM_LIBDIR $LLVM_LDFLAGS"
1575
1576 AC_COMPUTE_INT([LLVM_VERSION_MAJOR], [LLVM_VERSION_MAJOR],
1577 [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
1578 AC_COMPUTE_INT([LLVM_VERSION_MINOR], [LLVM_VERSION_MINOR],
1579 [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
1580
1581 if test -n "${LLVM_VERSION_MAJOR}"; then
1582 LLVM_VERSION_INT="${LLVM_VERSION_MAJOR}0${LLVM_VERSION_MINOR}"
1583 else
1584 LLVM_VERSION_INT=`echo $LLVM_VERSION | sed -e 's/\([[0-9]]\)\.\([[0-9]]\)/\10\2/g'`
1585 fi
1586
1587 LLVM_COMPONENTS="engine bitwriter"
1588 if $LLVM_CONFIG --components | grep -qw 'mcjit'; then
1589 LLVM_COMPONENTS="${LLVM_COMPONENTS} mcjit"
1590 fi
1591
1592 if test "x$enable_opencl" = xyes; then
1593 LLVM_COMPONENTS="${LLVM_COMPONENTS} ipo linker instrumentation"
1594 # LLVM 3.3 >= 177971 requires IRReader
1595 if $LLVM_CONFIG --components | grep -qw 'irreader'; then
1596 LLVM_COMPONENTS="${LLVM_COMPONENTS} irreader"
1597 fi
1598 # LLVM 3.4 requires Option
1599 if $LLVM_CONFIG --components | grep -qw 'option'; then
1600 LLVM_COMPONENTS="${LLVM_COMPONENTS} option"
1601 fi
1602 fi
1603 DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT"
1604 MESA_LLVM=1
1605
1606 dnl Check for Clang internal headers
1607 if test "x$enable_opencl" = xyes; then
1608 if test -z "$CLANG_LIBDIR"; then
1609 CLANG_LIBDIR=${LLVM_LIBDIR}
1610 fi
1611 CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION}
1612 AS_IF([test ! -f "$CLANG_RESOURCE_DIR/include/stddef.h"],
1613 [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.])])
1614 fi
1615 else
1616 MESA_LLVM=0
1617 LLVM_VERSION_INT=0
1618 fi
1619 else
1620 MESA_LLVM=0
1621 LLVM_VERSION_INT=0
1622 fi
1623
1624 dnl Directory for XVMC libs
1625 AC_ARG_WITH([xvmc-libdir],
1626 [AS_HELP_STRING([--with-xvmc-libdir=DIR],
1627 [directory for the XVMC libraries @<:@default=${libdir}@:>@])],
1628 [XVMC_LIB_INSTALL_DIR="$withval"],
1629 [XVMC_LIB_INSTALL_DIR='${libdir}'])
1630 AC_SUBST([XVMC_LIB_INSTALL_DIR])
1631
1632 dnl
1633 dnl Gallium Tests
1634 dnl
1635 if test "x$enable_gallium_tests" = xyes; then
1636 enable_gallium_loader=yes
1637 fi
1638 AM_CONDITIONAL(HAVE_GALLIUM_TESTS, test "x$enable_gallium_tests" = xyes)
1639
1640 if test "x$enable_gallium_loader" = xyes; then
1641 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS pipe-loader"
1642 fi
1643 AM_CONDITIONAL(NEED_GALLIUM_LOADER, test "x$enable_gallium_loader" = xyes)
1644
1645 dnl Directory for VDPAU libs
1646 AC_ARG_WITH([vdpau-libdir],
1647 [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1648 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1649 [VDPAU_LIB_INSTALL_DIR="$withval"],
1650 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1651 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
1652
1653 OMX_LIB_INSTALL_DIR_DEFAULT=''
1654 if test "x$enable_omx" = xyes; then
1655 OMX_LIB_INSTALL_DIR_DEFAULT=`$PKG_CONFIG --variable=pluginsdir libomxil-bellagio`
1656 fi
1657
1658 AC_ARG_WITH([omx-libdir],
1659 [AS_HELP_STRING([--with-omx-libdir=DIR],
1660 [directory for the OMX libraries])],
1661 [OMX_LIB_INSTALL_DIR="$withval"],
1662 [OMX_LIB_INSTALL_DIR="$OMX_LIB_INSTALL_DIR_DEFAULT"])
1663 AC_SUBST([OMX_LIB_INSTALL_DIR])
1664
1665 dnl Directory for OpenCL libs
1666 AC_ARG_WITH([opencl-libdir],
1667 [AS_HELP_STRING([--with-opencl-libdir=DIR],
1668 [directory for auxiliary libraries used by the OpenCL implementation @<:@default=${libdir}/opencl@:>@])],
1669 [OPENCL_LIB_INSTALL_DIR="$withval"],
1670 [OPENCL_LIB_INSTALL_DIR='${libdir}/opencl'])
1671 AC_SUBST([OPENCL_LIB_INSTALL_DIR])
1672
1673 dnl
1674 dnl Gallium helper functions
1675 dnl
1676 gallium_check_st() {
1677 if test "x$NEED_NONNULL_WINSYS" = xyes; then
1678 if test "x$have_libdrm" != xyes; then
1679 AC_MSG_ERROR([DRI or Xorg DDX requires libdrm >= $LIBDRM_REQUIRED])
1680 fi
1681 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1682 fi
1683 if test "x$enable_dri" = xyes && test -n "$2"; then
1684 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1685 fi
1686 if test "x$enable_xa" = xyes && test -n "$3"; then
1687 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1688 fi
1689 if test "x$enable_xvmc" = xyes && test -n "$4"; then
1690 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
1691 fi
1692 if test "x$enable_vdpau" = xyes && test -n "$5"; then
1693 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5"
1694 fi
1695 if test "x$enable_omx" = xyes && test "x$6" != x; then
1696 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6"
1697 fi
1698 }
1699
1700 gallium_require_llvm() {
1701 if test "x$MESA_LLVM" = x0; then
1702 case "$host_cpu" in
1703 i*86|x86_64|amd64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1704 esac
1705 fi
1706 }
1707
1708 gallium_require_drm_loader() {
1709 if test "x$enable_gallium_loader" = xyes; then
1710 if test "x$have_libudev" != xyes; then
1711 AC_MSG_ERROR([Gallium drm loader requires libudev >= $LIBUDEV_REQUIRED])
1712 fi
1713 if test "x$have_libdrm" != xyes; then
1714 AC_MSG_ERROR([Gallium drm loader requires libdrm >= $LIBDRM_REQUIRED])
1715 fi
1716 enable_gallium_drm_loader=yes
1717 fi
1718 }
1719
1720 radeon_llvm_check() {
1721 if test "x$enable_gallium_llvm" != "xyes"; then
1722 AC_MSG_ERROR([--enable-gallium-llvm is required when building $1])
1723 fi
1724 LLVM_REQUIRED_VERSION_MAJOR="3"
1725 LLVM_REQUIRED_VERSION_MINOR="3"
1726 if test "$LLVM_VERSION_INT" -lt "${LLVM_REQUIRED_VERSION_MAJOR}0${LLVM_REQUIRED_VERSION_MINOR}"; then
1727 AC_MSG_ERROR([LLVM $LLVM_REQUIRED_VERSION_MAJOR.$LLVM_REQUIRED_VERSION_MINOR or newer is required for $1])
1728 fi
1729 if test true && $LLVM_CONFIG --targets-built | grep -qvw 'R600' ; then
1730 AC_MSG_ERROR([LLVM R600 Target not enabled. You can enable it when building the LLVM
1731 sources with the --enable-experimental-targets=R600
1732 configure flag])
1733 fi
1734 LLVM_COMPONENTS="${LLVM_COMPONENTS} r600 bitreader ipo"
1735 NEED_RADEON_LLVM=yes
1736 AC_CHECK_LIB([elf], [elf_memory], [ELF_LIB=-lelf],
1737 [AC_MSG_ERROR([$1 requires libelf when using LLVM])])
1738 }
1739
1740 dnl Gallium drivers
1741 if test "x$enable_dri" = xyes -o "x$enable_xa" = xyes -o \
1742 "x$enable_xvmc" = xyes -o "x$enable_vdpau" = xyes; then
1743 NEED_NONNULL_WINSYS=yes
1744 fi
1745 AM_CONDITIONAL(NEED_NONNULL_WINSYS, test "x$NEED_NONNULL_WINSYS" = xyes)
1746
1747 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
1748 if test -n "$with_gallium_drivers"; then
1749 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1750 for driver in $gallium_drivers; do
1751 case "x$driver" in
1752 xsvga)
1753 HAVE_GALLIUM_SVGA=yes
1754 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
1755 gallium_require_drm_loader
1756 gallium_check_st "svga/drm" "dri-vmwgfx" ""
1757 ;;
1758 xi915)
1759 HAVE_GALLIUM_I915=yes
1760 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1761 gallium_require_drm_loader
1762 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe"
1763 if test "x$MESA_LLVM" = x1; then
1764 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1765 fi
1766 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1767 gallium_check_st "i915/drm" "dri-i915"
1768 DRICOMMON_NEED_LIBDRM=yes
1769 ;;
1770 xilo)
1771 HAVE_GALLIUM_ILO=yes
1772 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1773 gallium_require_drm_loader
1774 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS ilo"
1775 gallium_check_st "intel/drm" "dri-ilo"
1776 DRICOMMON_NEED_LIBDRM=yes
1777 ;;
1778 xr300)
1779 HAVE_GALLIUM_R300=yes
1780 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1781 gallium_require_drm_loader
1782 gallium_require_llvm "Gallium R300"
1783 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1784 gallium_check_st "radeon/drm" "r300/dri" "" "" ""
1785 DRICOMMON_NEED_LIBDRM=yes
1786 ;;
1787 xr600)
1788 HAVE_GALLIUM_R600=yes
1789 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1790 gallium_require_drm_loader
1791 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1792 if test "x$enable_r600_llvm" = xyes -o "x$enable_opencl" = xyes; then
1793 radeon_llvm_check "r600g"
1794 LLVM_COMPONENTS="${LLVM_COMPONENTS} bitreader asmparser"
1795 fi
1796 if test "x$enable_r600_llvm" = xyes; then
1797 USE_R600_LLVM_COMPILER=yes;
1798 fi
1799 if test "x$enable_opencl" = xyes; then
1800 LLVM_COMPONENTS="${LLVM_COMPONENTS} bitreader asmparser"
1801 fi
1802 gallium_check_st "radeon/drm" "r600/dri" "" "r600/xvmc" "r600/vdpau" "r600/omx"
1803 DRICOMMON_NEED_LIBDRM=yes
1804 ;;
1805 xradeonsi)
1806 HAVE_GALLIUM_RADEONSI=yes
1807 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1808 gallium_require_drm_loader
1809 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS radeonsi"
1810 radeon_llvm_check "radeonsi"
1811 gallium_check_st "radeon/drm" "radeonsi/dri" "" "" "radeonsi/vdpau" "radeonsi/omx"
1812 DRICOMMON_NEED_LIBDRM=yes
1813 ;;
1814 xnouveau)
1815 HAVE_GALLIUM_NOUVEAU=yes
1816 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1817 gallium_require_drm_loader
1818 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau"
1819 gallium_check_st "nouveau/drm" "dri-nouveau" "" "xvmc-nouveau" "vdpau-nouveau"
1820 DRICOMMON_NEED_LIBDRM=yes
1821 ;;
1822 xfreedreno)
1823 HAVE_GALLIUM_FREEDRENO=yes
1824 PKG_CHECK_MODULES([FREEDRENO], [libdrm_freedreno >= $LIBDRM_FREEDRENO_REQUIRED])
1825 gallium_require_drm_loader
1826 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS freedreno"
1827 gallium_check_st "freedreno/drm" "dri-freedreno" "" "" ""
1828 DRICOMMON_NEED_LIBDRM=yes
1829 ;;
1830 xswrast)
1831 HAVE_GALLIUM_SOFTPIPE=yes
1832 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe"
1833 if test "x$MESA_LLVM" = x1; then
1834 HAVE_GALLIUM_LLVMPIPE=yes
1835 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1836 fi
1837
1838 if test "x$enable_dri" = xyes; then
1839 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1840 fi
1841 ;;
1842 *)
1843 AC_MSG_ERROR([Unknown Gallium driver: $driver])
1844 ;;
1845 esac
1846 done
1847 fi
1848
1849 dnl Set LLVM_LIBS - This is done after the driver configuration so
1850 dnl that drivers can add additonal components to LLVM_COMPONENTS.
1851 dnl Previously, gallium drivers were updating LLVM_LIBS directly
1852 dnl by calling llvm-config --libs ${DRIVER_LLVM_COMPONENTS}, but
1853 dnl this was causing the same libraries to be appear multiple times
1854 dnl in LLVM_LIBS.
1855
1856 if test "x$MESA_LLVM" != x0; then
1857
1858 LLVM_LIBS="`$LLVM_CONFIG --libs ${LLVM_COMPONENTS}`"
1859
1860 if test "x$with_llvm_shared_libs" = xyes; then
1861 dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
1862 LLVM_SO_NAME=LLVM-`$LLVM_CONFIG --version`
1863 AS_IF([test -f "$LLVM_LIBDIR/lib$LLVM_SO_NAME.so"], [llvm_have_one_so=yes])
1864
1865 if test "x$llvm_have_one_so" = xyes; then
1866 dnl LLVM was built using auto*, so there is only one shared object.
1867 LLVM_LIBS="-l$LLVM_SO_NAME"
1868 else
1869 dnl If LLVM was built with CMake, there will be one shared object per
1870 dnl component.
1871 AS_IF([test ! -f "$LLVM_LIBDIR/libLLVMTarget.so"],
1872 [AC_MSG_ERROR([Could not find llvm shared libraries:
1873 Please make sure you have built llvm with the --enable-shared option
1874 and that your llvm libraries are installed in $LLVM_LIBDIR
1875 If you have installed your llvm libraries to a different directory you
1876 can use the --with-llvm-prefix= configure flag to specify this directory.
1877 NOTE: Mesa is attempting to use llvm shared libraries because you have
1878 passed one of the following options to configure:
1879 --enable-llvm-shared-libs
1880 --enable-opencl
1881 If you do not want to build with llvm shared libraries and instead want to
1882 use llvm static libraries then remove these options from your configure
1883 invocation and reconfigure.])])
1884
1885 dnl We don't need to update LLVM_LIBS in this case because the LLVM
1886 dnl install uses a shared object for each compoenent and we have
1887 dnl already added all of these objects to LLVM_LIBS.
1888 fi
1889 fi
1890 fi
1891
1892 AM_CONDITIONAL(HAVE_GALLIUM_SVGA, test "x$HAVE_GALLIUM_SVGA" = xyes)
1893 AM_CONDITIONAL(HAVE_GALLIUM_I915, test "x$HAVE_GALLIUM_I915" = xyes)
1894 AM_CONDITIONAL(HAVE_GALLIUM_ILO, test "x$HAVE_GALLIUM_ILO" = xyes)
1895 AM_CONDITIONAL(HAVE_GALLIUM_R300, test "x$HAVE_GALLIUM_R300" = xyes)
1896 AM_CONDITIONAL(HAVE_GALLIUM_R600, test "x$HAVE_GALLIUM_R600" = xyes)
1897 AM_CONDITIONAL(HAVE_GALLIUM_RADEONSI, test "x$HAVE_GALLIUM_RADEONSI" = xyes)
1898 AM_CONDITIONAL(HAVE_GALLIUM_NOUVEAU, test "x$HAVE_GALLIUM_NOUVEAU" = xyes)
1899 AM_CONDITIONAL(HAVE_GALLIUM_FREEDRENO, test "x$HAVE_GALLIUM_FREEDRENO" = xyes)
1900 AM_CONDITIONAL(HAVE_GALLIUM_SOFTPIPE, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes)
1901 AM_CONDITIONAL(HAVE_GALLIUM_LLVMPIPE, test "x$HAVE_GALLIUM_LLVMPIPE" = xyes)
1902
1903 AM_CONDITIONAL(NEED_GALLIUM_SOFTPIPE_DRIVER, test "x$HAVE_GALLIUM_SVGA" = xyes -o \
1904 "x$HAVE_GALLIUM_I915" = xyes -o \
1905 "x$HAVE_GALLIUM_SOFTPIPE" = xyes)
1906 AM_CONDITIONAL(NEED_GALLIUM_LLVMPIPE_DRIVER, test "x$HAVE_GALLIUM_I915" = xyes -o \
1907 "x$HAVE_GALLIUM_SOFTPIPE" = xyes \
1908 && test "x$MESA_LLVM" = x1)
1909
1910 # NOTE: anything using xcb or other client side libs ends up in separate
1911 # _CLIENT variables. The pipe loader is built in two variants,
1912 # one that is standalone and does not link any x client libs (for
1913 # use by XA tracker in particular, but could be used in any case
1914 # where communication with xserver is not desired).
1915 if test "x$enable_gallium_loader" = xyes; then
1916 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
1917
1918 if test "x$enable_gallium_xlib_loader" = xyes; then
1919 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
1920 NEED_WINSYS_XLIB="yes"
1921 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_XLIB"
1922 fi
1923
1924 if test "x$enable_gallium_drm_loader" = xyes; then
1925 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRM"
1926 PKG_CHECK_MODULES([GALLIUM_PIPE_LOADER_XCB], [xcb xcb-dri2],
1927 pipe_loader_have_xcb=yes, pipe_loader_have_xcb=no)
1928 if test "x$pipe_loader_have_xcb" = xyes; then
1929 GALLIUM_PIPE_LOADER_CLIENT_DEFINES="$GALLIUM_PIPE_LOADER_CLIENT_DEFINES -DHAVE_PIPE_LOADER_XCB"
1930 GALLIUM_PIPE_LOADER_CLIENT_LIBS="$GALLIUM_PIPE_LOADER_CLIENT_LIBS $GALLIUM_PIPE_LOADER_XCB_LIBS $LIBDRM_LIBS"
1931 fi
1932 fi
1933
1934 GALLIUM_PIPE_LOADER_CLIENT_DEFINES="$GALLIUM_PIPE_LOADER_CLIENT_DEFINES $GALLIUM_PIPE_LOADER_DEFINES"
1935 GALLIUM_PIPE_LOADER_CLIENT_LIBS="$GALLIUM_PIPE_LOADER_CLIENT_LIBS $GALLIUM_PIPE_LOADER_LIBS"
1936
1937 AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
1938 AC_SUBST([GALLIUM_PIPE_LOADER_LIBS])
1939 AC_SUBST([GALLIUM_PIPE_LOADER_CLIENT_DEFINES])
1940 AC_SUBST([GALLIUM_PIPE_LOADER_CLIENT_LIBS])
1941 fi
1942 AM_CONDITIONAL(NEED_PIPE_LOADER_XLIB, test "x$enable_gallium_xlib_loader" = xyes)
1943
1944 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
1945 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
1946 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
1947 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
1948 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
1949 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
1950
1951 AM_CONDITIONAL(NEED_RADEON_DRM_WINSYS, test "x$NEED_NONNULL_WINSYS" = xyes -a \
1952 "x$HAVE_GALLIUM_R300" = xyes -o \
1953 "x$HAVE_GALLIUM_R600" = xyes -o \
1954 "x$HAVE_GALLIUM_RADEONSI" = xyes)
1955 AM_CONDITIONAL(NEED_WINSYS_WRAPPER, test "x$HAVE_GALLIUM_I915" = xyes -o \
1956 "x$HAVE_GALLIUM_SVGA" = xyes)
1957 AM_CONDITIONAL(NEED_WINSYS_XLIB, test "x$NEED_WINSYS_XLIB" = xyes)
1958 AM_CONDITIONAL(NEED_RADEON_LLVM, test x$NEED_RADEON_LLVM = xyes)
1959 AM_CONDITIONAL(USE_R600_LLVM_COMPILER, test x$USE_R600_LLVM_COMPILER = xyes)
1960 AM_CONDITIONAL(HAVE_LOADER_GALLIUM, test x$enable_gallium_loader = xyes)
1961 AM_CONDITIONAL(HAVE_DRM_LOADER_GALLIUM, test x$enable_gallium_drm_loader = xyes)
1962 AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
1963 AM_CONDITIONAL(HAVE_MESA_LLVM, test x$MESA_LLVM = x1)
1964
1965 AC_SUBST([ELF_LIB])
1966
1967 AM_CONDITIONAL(DRICOMMON_NEED_LIBDRM, test "x$DRICOMMON_NEED_LIBDRM" = xyes)
1968 AM_CONDITIONAL(HAVE_LIBDRM, test "x$have_libdrm" = xyes)
1969 AM_CONDITIONAL(HAVE_X11_DRIVER, test "x$enable_xlib_glx" = xyes)
1970 AM_CONDITIONAL(HAVE_OSMESA, test "x$enable_osmesa" = xyes)
1971 AM_CONDITIONAL(HAVE_GALLIUM_OSMESA, test "x$enable_gallium_osmesa" = xyes)
1972
1973 AM_CONDITIONAL(HAVE_X86_ASM, test "x$asm_arch" = xx86 -o "x$asm_arch" = xx86_64)
1974 AM_CONDITIONAL(HAVE_X86_64_ASM, test "x$asm_arch" = xx86_64)
1975 AM_CONDITIONAL(HAVE_SPARC_ASM, test "x$asm_arch" = xsparc)
1976
1977 AC_SUBST([VDPAU_MAJOR], 1)
1978 AC_SUBST([VDPAU_MINOR], 0)
1979
1980 AC_SUBST([XVMC_MAJOR], 1)
1981 AC_SUBST([XVMC_MINOR], 0)
1982
1983 AC_SUBST([XA_MAJOR], 2)
1984 AC_SUBST([XA_MINOR], 2)
1985 AC_SUBST([XA_TINY], 0)
1986 AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_TINY")
1987
1988 dnl Restore LDFLAGS and CPPFLAGS
1989 LDFLAGS="$_SAVE_LDFLAGS"
1990 CPPFLAGS="$_SAVE_CPPFLAGS"
1991
1992 dnl Suppress clang's warnings about unused CFLAGS and CXXFLAGS
1993 if test "x$acv_mesa_CLANG" = xyes; then
1994 CFLAGS="$CFLAGS -Qunused-arguments"
1995 CXXFLAGS="$CXXFLAGS -Qunused-arguments"
1996 fi
1997
1998 dnl Add user CFLAGS and CXXFLAGS
1999 CFLAGS="$CFLAGS $USER_CFLAGS"
2000 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
2001
2002 dnl Substitute the config
2003 AC_CONFIG_FILES([Makefile
2004 src/Makefile
2005 src/egl/Makefile
2006 src/egl/drivers/Makefile
2007 src/egl/drivers/dri2/Makefile
2008 src/egl/main/Makefile
2009 src/egl/main/egl.pc
2010 src/egl/wayland/Makefile
2011 src/egl/wayland/wayland-drm/Makefile
2012 src/egl/wayland/wayland-egl/Makefile
2013 src/egl/wayland/wayland-egl/wayland-egl.pc
2014 src/gallium/auxiliary/Makefile
2015 src/gallium/auxiliary/pipe-loader/Makefile
2016 src/gallium/drivers/Makefile
2017 src/gallium/drivers/freedreno/Makefile
2018 src/gallium/drivers/galahad/Makefile
2019 src/gallium/drivers/i915/Makefile
2020 src/gallium/drivers/identity/Makefile
2021 src/gallium/drivers/ilo/Makefile
2022 src/gallium/drivers/llvmpipe/Makefile
2023 src/gallium/drivers/noop/Makefile
2024 src/gallium/drivers/nouveau/Makefile
2025 src/gallium/drivers/r300/Makefile
2026 src/gallium/drivers/r600/Makefile
2027 src/gallium/drivers/radeon/Makefile
2028 src/gallium/drivers/radeonsi/Makefile
2029 src/gallium/drivers/rbug/Makefile
2030 src/gallium/drivers/softpipe/Makefile
2031 src/gallium/drivers/svga/Makefile
2032 src/gallium/drivers/trace/Makefile
2033 src/gallium/state_trackers/Makefile
2034 src/gallium/state_trackers/clover/Makefile
2035 src/gallium/state_trackers/dri/Makefile
2036 src/gallium/state_trackers/dri/drm/Makefile
2037 src/gallium/state_trackers/dri/sw/Makefile
2038 src/gallium/state_trackers/egl/Makefile
2039 src/gallium/state_trackers/gbm/Makefile
2040 src/gallium/state_trackers/glx/xlib/Makefile
2041 src/gallium/state_trackers/omx/Makefile
2042 src/gallium/state_trackers/osmesa/Makefile
2043 src/gallium/state_trackers/vdpau/Makefile
2044 src/gallium/state_trackers/vega/Makefile
2045 src/gallium/state_trackers/xa/Makefile
2046 src/gallium/state_trackers/xvmc/Makefile
2047 src/gallium/targets/Makefile
2048 src/gallium/targets/dri-freedreno/Makefile
2049 src/gallium/targets/dri-i915/Makefile
2050 src/gallium/targets/dri-ilo/Makefile
2051 src/gallium/targets/dri-nouveau/Makefile
2052 src/gallium/targets/dri-swrast/Makefile
2053 src/gallium/targets/dri-vmwgfx/Makefile
2054 src/gallium/targets/egl-static/Makefile
2055 src/gallium/targets/gbm/Makefile
2056 src/gallium/targets/opencl/Makefile
2057 src/gallium/targets/xa/Makefile
2058 src/gallium/targets/xa/xatracker.pc
2059 src/gallium/targets/osmesa/Makefile
2060 src/gallium/targets/osmesa/osmesa.pc
2061 src/gallium/targets/pipe-loader/Makefile
2062 src/gallium/targets/radeonsi/dri/Makefile
2063 src/gallium/targets/radeonsi/omx/Makefile
2064 src/gallium/targets/radeonsi/vdpau/Makefile
2065 src/gallium/targets/r300/dri/Makefile
2066 src/gallium/targets/r600/dri/Makefile
2067 src/gallium/targets/r600/omx/Makefile
2068 src/gallium/targets/r600/vdpau/Makefile
2069 src/gallium/targets/r600/xvmc/Makefile
2070 src/gallium/targets/libgl-xlib/Makefile
2071 src/gallium/targets/vdpau-nouveau/Makefile
2072 src/gallium/targets/xvmc-nouveau/Makefile
2073 src/gallium/tests/trivial/Makefile
2074 src/gallium/tests/unit/Makefile
2075 src/gallium/winsys/Makefile
2076 src/gallium/winsys/freedreno/drm/Makefile
2077 src/gallium/winsys/i915/drm/Makefile
2078 src/gallium/winsys/i915/sw/Makefile
2079 src/gallium/winsys/intel/drm/Makefile
2080 src/gallium/winsys/nouveau/drm/Makefile
2081 src/gallium/winsys/radeon/drm/Makefile
2082 src/gallium/winsys/svga/drm/Makefile
2083 src/gallium/winsys/sw/dri/Makefile
2084 src/gallium/winsys/sw/fbdev/Makefile
2085 src/gallium/winsys/sw/null/Makefile
2086 src/gallium/winsys/sw/wayland/Makefile
2087 src/gallium/winsys/sw/wrapper/Makefile
2088 src/gallium/winsys/sw/xlib/Makefile
2089 src/gbm/Makefile
2090 src/gbm/main/gbm.pc
2091 src/glsl/Makefile
2092 src/glx/Makefile
2093 src/glx/tests/Makefile
2094 src/gtest/Makefile
2095 src/loader/Makefile
2096 src/mapi/Makefile
2097 src/mapi/es1api/Makefile
2098 src/mapi/es1api/glesv1_cm.pc
2099 src/mapi/es2api/Makefile
2100 src/mapi/es2api/glesv2.pc
2101 src/mapi/glapi/Makefile
2102 src/mapi/glapi/gen/Makefile
2103 src/mapi/glapi/tests/Makefile
2104 src/mapi/shared-glapi/Makefile
2105 src/mapi/shared-glapi/tests/Makefile
2106 src/mapi/vgapi/Makefile
2107 src/mapi/vgapi/vg.pc
2108 src/mesa/Makefile
2109 src/mesa/gl.pc
2110 src/mesa/drivers/dri/dri.pc
2111 src/mesa/drivers/dri/common/Makefile
2112 src/mesa/drivers/dri/common/xmlpool/Makefile
2113 src/mesa/drivers/dri/i915/Makefile
2114 src/mesa/drivers/dri/i965/Makefile
2115 src/mesa/drivers/dri/Makefile
2116 src/mesa/drivers/dri/nouveau/Makefile
2117 src/mesa/drivers/dri/r200/Makefile
2118 src/mesa/drivers/dri/radeon/Makefile
2119 src/mesa/drivers/dri/swrast/Makefile
2120 src/mesa/drivers/osmesa/Makefile
2121 src/mesa/drivers/osmesa/osmesa.pc
2122 src/mesa/drivers/x11/Makefile
2123 src/mesa/main/tests/Makefile
2124 src/mesa/main/tests/hash_table/Makefile])
2125
2126 dnl Sort the dirs alphabetically
2127 GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2128 GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2129 GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2130 GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2131
2132 AC_OUTPUT
2133
2134 dnl
2135 dnl Output some configuration info for the user
2136 dnl
2137 echo ""
2138 echo " prefix: $prefix"
2139 echo " exec_prefix: $exec_prefix"
2140 echo " libdir: $libdir"
2141 echo " includedir: $includedir"
2142
2143 dnl API info
2144 echo ""
2145 echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
2146 echo " OpenVG: $enable_openvg"
2147
2148 dnl Driver info
2149 echo ""
2150 case "x$enable_osmesa$enable_gallium_osmesa" in
2151 xnoyes)
2152 echo " OSMesa: lib$OSMESA_LIB (Gallium)"
2153 ;;
2154 xyesno)
2155 echo " OSMesa: lib$OSMESA_LIB"
2156 ;;
2157 xnono)
2158 echo " OSMesa: no"
2159 ;;
2160 esac
2161
2162 if test "x$enable_dri" != xno; then
2163 if test -z "$DRI_DIRS"; then
2164 echo " DRI drivers: no"
2165 else
2166 echo " DRI drivers: $DRI_DIRS"
2167 fi
2168 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
2169 fi
2170
2171 case "x$enable_glx$enable_xlib_glx" in
2172 xyesyes)
2173 echo " GLX: Xlib-based"
2174 ;;
2175 xyesno)
2176 echo " GLX: DRI-based"
2177 ;;
2178 *)
2179 echo " GLX: $enable_glx"
2180 ;;
2181 esac
2182
2183 dnl EGL
2184 echo ""
2185 echo " EGL: $enable_egl"
2186 if test "$enable_egl" = yes; then
2187 echo " EGL platforms: $egl_platforms"
2188
2189 egl_drivers=""
2190 if test "x$HAVE_EGL_DRIVER_DRI2" != "x"; then
2191 egl_drivers="$egl_drivers builtin:egl_dri2"
2192 fi
2193
2194 if test "x$enable_gallium_egl" = xyes; then
2195 echo " EGL drivers: ${egl_drivers} egl_gallium"
2196 echo " EGL Gallium STs:$EGL_CLIENT_APIS"
2197 else
2198 echo " EGL drivers: $egl_drivers"
2199 fi
2200 fi
2201
2202 echo ""
2203 if test "x$MESA_LLVM" = x1; then
2204 echo " llvm: yes"
2205 echo " llvm-config: $LLVM_CONFIG"
2206 echo " llvm-version: $LLVM_VERSION"
2207 else
2208 echo " llvm: no"
2209 fi
2210
2211 echo ""
2212 if test -n "$with_gallium_drivers"; then
2213 echo " Gallium: yes"
2214 echo " Target dirs: $GALLIUM_TARGET_DIRS"
2215 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
2216 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
2217 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
2218 else
2219 echo " Gallium: no"
2220 fi
2221
2222
2223 dnl Libraries
2224 echo ""
2225 echo " Shared libs: $enable_shared"
2226 echo " Static libs: $enable_static"
2227 echo " Shared-glapi: $enable_shared_glapi"
2228
2229 dnl Compiler options
2230 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2231 cflags=`echo $CFLAGS | \
2232 $SED 's/^ *//;s/ */ /;s/ *$//'`
2233 cxxflags=`echo $CXXFLAGS | \
2234 $SED 's/^ *//;s/ */ /;s/ *$//'`
2235 defines=`echo $DEFINES | $SED 's/^ *//;s/ */ /;s/ *$//'`
2236 echo ""
2237 echo " CFLAGS: $cflags"
2238 echo " CXXFLAGS: $cxxflags"
2239 echo " Macros: $defines"
2240 echo ""
2241 if test "x$MESA_LLVM" = x1; then
2242 echo " LLVM_CFLAGS: $LLVM_CFLAGS"
2243 echo " LLVM_CXXFLAGS: $LLVM_CXXFLAGS"
2244 echo " LLVM_CPPFLAGS: $LLVM_CPPFLAGS"
2245 echo ""
2246 fi
2247 echo " PYTHON2: $PYTHON2"
2248
2249 echo ""
2250 echo " Run '${MAKE-make}' to build Mesa"
2251 echo ""