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