configure: remove old makefile variables
[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 library names
321 dnl
322 if test "$enable_static" = yes; then
323 LIB_EXTENSION='a'
324 else
325 case "$host_os" in
326 darwin* )
327 LIB_EXTENSION='dylib' ;;
328 cygwin* )
329 LIB_EXTENSION='dll' ;;
330 aix* )
331 LIB_EXTENSION='a' ;;
332 * )
333 LIB_EXTENSION='so' ;;
334 esac
335 fi
336 AC_ARG_WITH([gl-lib-name],
337 [AS_HELP_STRING([--with-gl-lib-name@<:@=NAME@:>@],
338 [specify GL library name @<:@default=GL@:>@])],
339 [GL_LIB=$withval],
340 [GL_LIB=GL])
341 AC_ARG_WITH([osmesa-lib-name],
342 [AS_HELP_STRING([--with-osmesa-lib-name@<:@=NAME@:>@],
343 [specify OSMesa library name @<:@default=OSMesa@:>@])],
344 [OSMESA_LIB=$withval],
345 [OSMESA_LIB=OSMesa])
346 AS_IF([test "x$GL_LIB" = xyes], [GL_LIB=GL])
347 AS_IF([test "x$OSMESA_LIB" = xyes], [OSMESA_LIB=OSMesa])
348
349 dnl
350 dnl Mangled Mesa support
351 dnl
352 AC_ARG_ENABLE([mangling],
353 [AS_HELP_STRING([--enable-mangling],
354 [enable mangled symbols and library name @<:@default=disabled@:>@])],
355 [enable_mangling="${enableval}"],
356 [enable_mangling=no]
357 )
358 if test "x${enable_mangling}" = "xyes" ; then
359 DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
360 GL_LIB="Mangled${GL_LIB}"
361 OSMESA_LIB="Mangled${OSMESA_LIB}"
362 fi
363 AC_SUBST([GL_LIB])
364 AC_SUBST([OSMESA_LIB])
365
366 dnl
367 dnl potentially-infringing-but-nobody-knows-for-sure stuff
368 dnl
369 AC_ARG_ENABLE([texture-float],
370 [AS_HELP_STRING([--enable-texture-float],
371 [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
372 [enable_texture_float="$enableval"],
373 [enable_texture_float=no]
374 )
375 if test "x$enable_texture_float" = xyes; then
376 AC_MSG_WARN([Floating-point textures enabled.])
377 AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
378 DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
379 fi
380
381 dnl
382 dnl Arch/platform-specific settings
383 dnl
384 AC_ARG_ENABLE([asm],
385 [AS_HELP_STRING([--disable-asm],
386 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
387 [enable_asm="$enableval"],
388 [enable_asm=yes]
389 )
390 asm_arch=""
391 AC_MSG_CHECKING([whether to enable assembly])
392 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
393 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
394 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
395 case "$host_cpu" in
396 i?86 | x86_64 | amd64)
397 enable_asm=no
398 AC_MSG_RESULT([no, cross compiling])
399 ;;
400 esac
401 fi
402 # check for supported arches
403 if test "x$enable_asm" = xyes; then
404 case "$host_cpu" in
405 i?86)
406 case "$host_os" in
407 linux* | *freebsd* | dragonfly* | *netbsd* | openbsd*)
408 test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
409 ;;
410 gnu*)
411 asm_arch=x86
412 ;;
413 esac
414 ;;
415 x86_64|amd64)
416 case "$host_os" in
417 linux* | *freebsd* | dragonfly* | *netbsd* | openbsd*)
418 test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
419 ;;
420 esac
421 ;;
422 sparc*)
423 case "$host_os" in
424 linux*)
425 asm_arch=sparc
426 ;;
427 esac
428 ;;
429 esac
430
431 case "$asm_arch" in
432 x86)
433 DEFINES="$DEFINES -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
434 AC_MSG_RESULT([yes, x86])
435 ;;
436 x86_64|amd64)
437 DEFINES="$DEFINES -DUSE_X86_64_ASM"
438 AC_MSG_RESULT([yes, x86_64])
439 ;;
440 sparc)
441 DEFINES="$DEFINES -DUSE_SPARC_ASM"
442 AC_MSG_RESULT([yes, sparc])
443 ;;
444 *)
445 AC_MSG_RESULT([no, platform not supported])
446 ;;
447 esac
448 fi
449
450 dnl Check to see if dlopen is in default libraries (like Solaris, which
451 dnl has it in libc), or if libdl is needed to get it.
452 AC_CHECK_FUNC([dlopen], [DEFINES="$DEFINES -DHAVE_DLOPEN"],
453 [AC_CHECK_LIB([dl], [dlopen],
454 [DEFINES="$DEFINES -DHAVE_DLOPEN"; DLOPEN_LIBS="-ldl"])])
455 AC_SUBST([DLOPEN_LIBS])
456
457 case "$host_os" in
458 darwin*|mingw*)
459 ;;
460 *)
461 AC_CHECK_FUNCS([clock_gettime], [CLOCK_LIB=],
462 [AC_CHECK_LIB([rt], [clock_gettime], [CLOCK_LIB=-lrt],
463 [AC_MSG_ERROR([Couldn't find clock_gettime])])])
464 AC_SUBST([CLOCK_LIB])
465 ;;
466 esac
467
468 dnl See if posix_memalign is available
469 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
470
471 dnl Check for pthreads
472 AX_PTHREAD
473 dnl AX_PTHREADS leaves PTHREAD_LIBS empty for gcc and sets PTHREAD_CFLAGS
474 dnl to -pthread, which causes problems if we need -lpthread to appear in
475 dnl pkgconfig files.
476 test -z "$PTHREAD_LIBS" && PTHREAD_LIBS="-lpthread"
477
478 dnl SELinux awareness.
479 AC_ARG_ENABLE([selinux],
480 [AS_HELP_STRING([--enable-selinux],
481 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
482 [MESA_SELINUX="$enableval"],
483 [MESA_SELINUX=no])
484 if test "x$enable_selinux" = "xyes"; then
485 PKG_CHECK_MODULES([SELINUX], [libselinux], [],
486 [AC_CHECK_HEADER([selinux/selinux.h],[],
487 [AC_MSG_ERROR([SELinux headers not found])])
488 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
489 [AC_MSG_ERROR([SELinux library not found])])
490 SELINUX_LIBS="-lselinux"])
491 DEFINES="$DEFINES -DMESA_SELINUX"
492 fi
493 AC_SUBST([SELINUX_CFLAGS])
494 AC_SUBST([SELINUX_LIBS])
495
496 dnl Options for APIs
497 AC_ARG_ENABLE([opengl],
498 [AS_HELP_STRING([--disable-opengl],
499 [disable support for standard OpenGL API @<:@default=no@:>@])],
500 [enable_opengl="$enableval"],
501 [enable_opengl=yes])
502 AC_ARG_ENABLE([gles1],
503 [AS_HELP_STRING([--enable-gles1],
504 [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
505 [enable_gles1="$enableval"],
506 [enable_gles1=no])
507 AC_ARG_ENABLE([gles2],
508 [AS_HELP_STRING([--enable-gles2],
509 [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
510 [enable_gles2="$enableval"],
511 [enable_gles2=no])
512 AC_ARG_ENABLE([openvg],
513 [AS_HELP_STRING([--enable-openvg],
514 [enable support for OpenVG API @<:@default=no@:>@])],
515 [enable_openvg="$enableval"],
516 [enable_openvg=no])
517
518 AC_ARG_ENABLE([dri],
519 [AS_HELP_STRING([--enable-dri],
520 [enable DRI modules @<:@default=enabled@:>@])],
521 [enable_dri="$enableval"],
522 [enable_dri=yes])
523 AC_ARG_ENABLE([dri3],
524 [AS_HELP_STRING([--enable-dri3],
525 [enable DRI3 @<:@default=enabled@:>@])],
526 [enable_dri3="$enableval"],
527 [enable_dri3=yes])
528 AC_ARG_ENABLE([glx],
529 [AS_HELP_STRING([--enable-glx],
530 [enable GLX library @<:@default=enabled@:>@])],
531 [enable_glx="$enableval"],
532 [enable_glx=yes])
533 AC_ARG_ENABLE([osmesa],
534 [AS_HELP_STRING([--enable-osmesa],
535 [enable OSMesa library @<:@default=disabled@:>@])],
536 [enable_osmesa="$enableval"],
537 [enable_osmesa=no])
538 AC_ARG_ENABLE([gallium-osmesa],
539 [AS_HELP_STRING([--enable-gallium-osmesa],
540 [enable Gallium implementation of the OSMesa library @<:@default=disabled@:>@])],
541 [enable_gallium_osmesa="$enableval"],
542 [enable_gallium_osmesa=no])
543 AC_ARG_ENABLE([egl],
544 [AS_HELP_STRING([--disable-egl],
545 [disable EGL library @<:@default=enabled@:>@])],
546 [enable_egl="$enableval"],
547 [enable_egl=yes])
548
549 AC_ARG_ENABLE([xa],
550 [AS_HELP_STRING([--enable-xa],
551 [enable build of the XA X Acceleration API @<:@default=no@:>@])],
552 [enable_xa="$enableval"],
553 [enable_xa=no])
554 AC_ARG_ENABLE([gbm],
555 [AS_HELP_STRING([--enable-gbm],
556 [enable gbm library @<:@default=auto@:>@])],
557 [enable_gbm="$enableval"],
558 [enable_gbm=auto])
559
560 AC_ARG_ENABLE([xvmc],
561 [AS_HELP_STRING([--enable-xvmc],
562 [enable xvmc library @<:@default=auto@:>@])],
563 [enable_xvmc="$enableval"],
564 [enable_xvmc=no])
565 AC_ARG_ENABLE([vdpau],
566 [AS_HELP_STRING([--enable-vdpau],
567 [enable vdpau library @<:@default=auto@:>@])],
568 [enable_vdpau="$enableval"],
569 [enable_vdpau=auto])
570 AC_ARG_ENABLE([omx],
571 [AS_HELP_STRING([--enable-omx],
572 [enable OpenMAX library @<:@default=no@:>@])],
573 [enable_omx="$enableval"],
574 [enable_omx=no])
575 AC_ARG_ENABLE([opencl],
576 [AS_HELP_STRING([--enable-opencl],
577 [enable OpenCL library NOTE: Enabling this option will also enable
578 --enable-llvm-shared-libs
579 @<:@default=no@:>@])],
580 [],
581 [enable_opencl=no])
582 AC_ARG_ENABLE([opencl_icd],
583 [AS_HELP_STRING([--enable-opencl-icd],
584 [Build an OpenCL ICD library to be loaded by an ICD implementation
585 @<:@default=no@:>@])],
586 [enable_opencl_icd="$enableval"],
587 [enable_opencl_icd=no])
588 AC_ARG_ENABLE([xlib-glx],
589 [AS_HELP_STRING([--enable-xlib-glx],
590 [make GLX library Xlib-based instead of DRI-based @<:@default=disabled@:>@])],
591 [enable_xlib_glx="$enableval"],
592 [enable_xlib_glx=no])
593 AC_ARG_ENABLE([gallium-egl],
594 [AS_HELP_STRING([--enable-gallium-egl],
595 [enable optional EGL state tracker (not required
596 for EGL support in Gallium with OpenGL and OpenGL ES)
597 @<:@default=disable@:>@])],
598 [enable_gallium_egl="$enableval"],
599 [enable_gallium_egl=no])
600 AC_ARG_ENABLE([gallium-gbm],
601 [AS_HELP_STRING([--enable-gallium-gbm],
602 [enable optional gbm state tracker (not required for
603 gbm support in Gallium)
604 @<:@default=auto@:>@])],
605 [enable_gallium_gbm="$enableval"],
606 [enable_gallium_gbm=auto])
607
608 AC_ARG_ENABLE([r600-llvm-compiler],
609 [AS_HELP_STRING([--enable-r600-llvm-compiler],
610 [Enable experimental LLVM backend for graphics shaders @<:@default=disable@:>@])],
611 [enable_r600_llvm="$enableval"],
612 [enable_r600_llvm=no])
613
614 AC_ARG_ENABLE([gallium-tests],
615 [AS_HELP_STRING([--enable-gallium-tests],
616 [Enable optional Gallium tests) @<:@default=disable@:>@])],
617 [enable_gallium_tests="$enableval"],
618 [enable_gallium_tests=no])
619
620 # Option for Gallium drivers
621
622 # Keep this in sync with the --with-gallium-drivers help string default value
623 GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
624
625 AC_ARG_WITH([gallium-drivers],
626 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
627 [comma delimited Gallium drivers list, e.g.
628 "i915,ilo,nouveau,r300,r600,radeonsi,freedreno,svga,swrast"
629 @<:@default=r300,r600,svga,swrast@:>@])],
630 [with_gallium_drivers="$withval"],
631 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
632
633 # Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it
634 # here so that the script doesn't choke on an unknown driver name later.
635 case "$with_gallium_drivers" in
636 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
637 no) with_gallium_drivers='' ;;
638 esac
639
640 if test "x$enable_opengl" = xno -a \
641 "x$enable_gles1" = xno -a \
642 "x$enable_gles2" = xno -a \
643 "x$enable_openvg" = xno -a \
644 "x$enable_xa" = xno -a \
645 "x$enable_xvmc" = xno -a \
646 "x$enable_vdpau" = xno -a \
647 "x$enable_omx" = xno -a \
648 "x$enable_opencl" = xno; then
649 AC_MSG_ERROR([at least one API should be enabled])
650 fi
651
652 # Building OpenGL ES1 and/or ES2 without OpenGL is not supported on mesa 9.0.x
653 if test "x$enable_opengl" = xno -a \
654 "x$enable_gles1" = xyes; then
655 AC_MSG_ERROR([Building OpenGL ES1 without OpenGL is not supported])
656 fi
657
658 if test "x$enable_opengl" = xno -a \
659 "x$enable_gles2" = xyes; then
660 AC_MSG_ERROR([Building OpenGL ES2 without OpenGL is not supported])
661 fi
662
663 AM_CONDITIONAL(HAVE_OPENGL, test "x$enable_opengl" = xyes)
664 AM_CONDITIONAL(HAVE_OPENGL_ES1, test "x$enable_gles1" = xyes)
665 AM_CONDITIONAL(HAVE_OPENGL_ES2, test "x$enable_gles2" = xyes)
666 AM_CONDITIONAL(NEED_OPENGL_COMMON, test "x$enable_opengl" = xyes -o \
667 "x$enable_gles1" = xyes -o \
668 "x$enable_gles2" = xyes)
669
670 if test "x$enable_glx" = xno; then
671 AC_MSG_WARN([GLX disabled, disabling Xlib-GLX])
672 enable_xlib_glx=no
673 fi
674
675 if test "x$enable_dri$enable_xlib_glx" = xyesyes; then
676 AC_MSG_ERROR([DRI and Xlib-GLX cannot be built together])
677 fi
678
679 if test "x$enable_opengl$enable_xlib_glx" = xnoyes; then
680 AC_MSG_ERROR([Xlib-GLX cannot be built without OpenGL])
681 fi
682
683 # Disable GLX if OpenGL is not enabled
684 if test "x$enable_glx$enable_opengl" = xyesno; then
685 AC_MSG_WARN([OpenGL not enabled, disabling GLX])
686 enable_glx=no
687 fi
688
689 # Disable GLX if DRI and Xlib-GLX are not enabled
690 if test "x$enable_glx" = xyes -a \
691 "x$enable_dri" = xno -a \
692 "x$enable_xlib_glx" = xno; then
693 AC_MSG_WARN([Neither DRI nor Xlib-GLX enabled, disabling GLX])
694 enable_glx=no
695 fi
696
697 AM_CONDITIONAL(HAVE_DRI_GLX, test "x$enable_glx" = xyes -a \
698 "x$enable_dri" = xyes)
699 AM_CONDITIONAL(HAVE_DRI, test "x$enable_dri" = xyes)
700 AM_CONDITIONAL(HAVE_DRI3, test "x$enable_dri3" = xyes)
701
702 AC_ARG_ENABLE([shared-glapi],
703 [AS_HELP_STRING([--enable-shared-glapi],
704 [Enable shared glapi for OpenGL @<:@default=yes@:>@])],
705 [enable_shared_glapi="$enableval"],
706 [enable_shared_glapi=yes])
707
708 case "x$enable_opengl$enable_gles1$enable_gles2" in
709 x*yes*yes*)
710 if test "x$enable_shared_glapi" = xno; then
711 AC_MSG_ERROR([shared GLAPI required when building two or more of
712 the following APIs - opengl, gles1 gles2])
713 fi
714 ;;
715 esac
716
717 # Building Xlib-GLX requires shared glapi to be disabled.
718 if test "x$enable_xlib_glx" = xyes; then
719 AC_MSG_NOTICE([Shared GLAPI should not used with Xlib-GLX, disabling])
720 enable_shared_glapi=no
721 fi
722
723 AM_CONDITIONAL(HAVE_SHARED_GLAPI, test "x$enable_shared_glapi" = xyes)
724
725 dnl
726 dnl Driver specific build directories
727 dnl
728 GALLIUM_TARGET_DIRS=""
729 GALLIUM_WINSYS_DIRS="sw"
730 GALLIUM_DRIVERS_DIRS="galahad trace rbug noop identity"
731 GALLIUM_STATE_TRACKERS_DIRS=""
732
733 case "x$enable_glx$enable_xlib_glx" in
734 xyesyes)
735 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
736 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
737 GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS"
738 NEED_WINSYS_XLIB="yes"
739 ;;
740 esac
741
742 if test "x$enable_dri" = xyes; then
743 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/dri"
744 GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
745 fi
746
747 if test "x$enable_gallium_osmesa" = xyes; then
748 if test -z "$with_gallium_drivers"; then
749 AC_MSG_ERROR([Cannot enable gallium_osmesa without Gallium])
750 fi
751 if test "x$enable_osmesa" = xyes; then
752 AC_MSG_ERROR([Cannot enable both classic and Gallium OSMesa implementations])
753 fi
754 GALLIUM_STATE_TRACKERS_DIRS="osmesa $GALLIUM_STATE_TRACKERS_DIRS"
755 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS osmesa"
756 fi
757
758 AC_SUBST([MESA_LLVM])
759
760 # Check for libdrm
761 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
762 [have_libdrm=yes], [have_libdrm=no])
763 if test "x$have_libdrm" = xyes; then
764 DEFINES="$DEFINES -DHAVE_LIBDRM"
765 fi
766
767 PKG_CHECK_MODULES([LIBUDEV], [libudev >= $LIBUDEV_REQUIRED],
768 have_libudev=yes, have_libudev=no)
769
770 if test "x$enable_dri" = xyes; then
771 # DRI must be shared, I think
772 if test "$enable_static" = yes; then
773 AC_MSG_ERROR([Cannot use static libraries for DRI drivers])
774 fi
775
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 # only link libraries with osmesa if shared
1108 if test "$enable_static" = no; then
1109 OSMESA_LIB_DEPS="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1110 else
1111 OSMESA_LIB_DEPS=""
1112 fi
1113 OSMESA_MESA_DEPS=""
1114 OSMESA_PC_LIB_PRIV="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1115 fi
1116
1117 AC_SUBST([OSMESA_LIB_DEPS])
1118 AC_SUBST([OSMESA_MESA_DEPS])
1119 AC_SUBST([OSMESA_PC_REQ])
1120 AC_SUBST([OSMESA_PC_LIB_PRIV])
1121
1122 dnl
1123 dnl gbm configuration
1124 dnl
1125 if test "x$enable_gbm" = xauto; then
1126 case "$with_egl_platforms" in
1127 *drm*)
1128 enable_gbm=yes ;;
1129 *)
1130 enable_gbm=no ;;
1131 esac
1132 fi
1133 if test "x$enable_gbm" = xyes; then
1134 if test x"$have_libudev" != xyes; then
1135 AC_MSG_ERROR([gbm requires udev >= $LIBUDEV_REQUIRED])
1136 fi
1137
1138 if test "x$enable_dri" = xyes; then
1139 GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
1140 if test "x$enable_shared_glapi" = xno; then
1141 AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1142 fi
1143 fi
1144 fi
1145 AM_CONDITIONAL(HAVE_GBM, test "x$enable_gbm" = xyes)
1146 GBM_PC_REQ_PRIV="libudev >= $LIBUDEV_REQUIRED"
1147 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1148 AC_SUBST([GBM_PC_REQ_PRIV])
1149 AC_SUBST([GBM_PC_LIB_PRIV])
1150
1151 dnl
1152 dnl EGL configuration
1153 dnl
1154 EGL_CLIENT_APIS=""
1155
1156 if test "x$enable_egl" = xyes; then
1157 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS $PTHREAD_LIBS"
1158
1159 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1160
1161 if test "$enable_static" != yes; then
1162 if test "x$enable_dri" = xyes; then
1163 HAVE_EGL_DRIVER_DRI2=1
1164 fi
1165
1166 fi
1167 fi
1168 AM_CONDITIONAL(HAVE_EGL, test "x$enable_egl" = xyes)
1169 AC_SUBST([EGL_LIB_DEPS])
1170
1171 dnl
1172 dnl EGL Gallium configuration
1173 dnl
1174 if test "x$enable_gallium_egl" = xyes; then
1175 if test -z "$with_gallium_drivers"; then
1176 AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
1177 fi
1178 if test "x$enable_egl" = xno; then
1179 AC_MSG_ERROR([cannot enable egl_gallium without EGL])
1180 fi
1181 if test "x$have_libdrm" != xyes; then
1182 AC_MSG_ERROR([egl_gallium requires libdrm >= $LIBDRM_REQUIRED])
1183 fi
1184
1185 GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
1186 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static"
1187 fi
1188 AM_CONDITIONAL(HAVE_GALLIUM_EGL, test "x$enable_gallium_egl" = xyes)
1189
1190 dnl
1191 dnl gbm Gallium configuration
1192 dnl
1193 if test "x$enable_gallium_gbm" = xauto; then
1194 case "$enable_gbm$enable_gallium_egl$enable_dri$with_egl_platforms" in
1195 yesyesyes*drm*)
1196 enable_gallium_gbm=yes ;;
1197 *)
1198 enable_gallium_gbm=no ;;
1199 esac
1200 fi
1201 if test "x$enable_gallium_gbm" = xyes; then
1202 if test -z "$with_gallium_drivers"; then
1203 AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
1204 fi
1205 if test "x$enable_gbm" = xno; then
1206 AC_MSG_ERROR([cannot enable gbm_gallium without gbm])
1207 fi
1208 # gbm_gallium abuses DRI_LIB_DEPS to link. Make sure it is set.
1209 if test "x$enable_dri" = xno; then
1210 AC_MSG_ERROR([gbm_gallium requires --enable-dri to build])
1211 fi
1212
1213 GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS"
1214 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm"
1215 enable_gallium_loader=yes
1216 fi
1217 AM_CONDITIONAL(HAVE_GALLIUM_GBM, test "x$enable_gallium_gbm" = xyes)
1218
1219 dnl
1220 dnl XA configuration
1221 dnl
1222 if test "x$enable_xa" = xyes; then
1223 if test "x$with_gallium_drivers" = xswrast; then
1224 AC_MSG_ERROR([
1225 Building xa requires at least one non swrast gallium driver.
1226 If you are looking to use libxatracker.so with vmware's virtual gpu,
1227 make sure to include svga in the gallium drivers list, apart from
1228 enabling XA.
1229 Example: ./configure --enable-xa --with-gallium-drivers=svga...])
1230 fi
1231 GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS"
1232 enable_gallium_loader=yes
1233 fi
1234 AM_CONDITIONAL(HAVE_ST_XA, test "x$enable_xa" = xyes)
1235
1236 dnl
1237 dnl OpenVG configuration
1238 dnl
1239 VG_LIB_DEPS=""
1240
1241 if test "x$enable_openvg" = xyes; then
1242 if test "x$enable_egl" = xno; then
1243 AC_MSG_ERROR([cannot enable OpenVG without EGL])
1244 fi
1245 if test -z "$with_gallium_drivers"; then
1246 AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1247 fi
1248 if test "x$enable_gallium_egl" = xno; then
1249 AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
1250 fi
1251
1252 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1253 VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS $PTHREAD_LIBS"
1254 GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1255 VG_PC_LIB_PRIV="-lm $CLOCK_LIB $PTHREAD_LIBS $DLOPEN_LIBS"
1256 AC_SUBST([VG_PC_LIB_PRIV])
1257 fi
1258 AM_CONDITIONAL(HAVE_OPENVG, test "x$enable_openvg" = xyes)
1259
1260 dnl
1261 dnl Gallium G3DVL configuration
1262 dnl
1263 if test -n "$with_gallium_drivers"; then
1264 if test "x$enable_xvmc" = xauto; then
1265 PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no])
1266 fi
1267
1268 if test "x$enable_vdpau" = xauto; then
1269 PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no])
1270 fi
1271
1272 if test "x$enable_omx" = xauto; then
1273 PKG_CHECK_EXISTS([libomxil-bellagio], [enable_omx=yes], [enable_omx=no])
1274 fi
1275 fi
1276
1277 if test "x$enable_xvmc" = xyes; then
1278 PKG_CHECK_MODULES([XVMC], [xvmc >= $XVMC_REQUIRED x11-xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
1279 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xvmc"
1280 fi
1281 AM_CONDITIONAL(HAVE_ST_XVMC, test "x$enable_xvmc" = xyes)
1282
1283 if test "x$enable_vdpau" = xyes; then
1284 PKG_CHECK_MODULES([VDPAU], [vdpau >= $VDPAU_REQUIRED x11-xcb xcb-dri2 >= $XCBDRI2_REQUIRED],
1285 [VDPAU_LIBS="`$PKG_CONFIG --libs x11-xcb xcb-dri2`"])
1286 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau"
1287 fi
1288 AM_CONDITIONAL(HAVE_ST_VDPAU, test "x$enable_vdpau" = xyes)
1289
1290 if test "x$enable_omx" = xyes; then
1291 PKG_CHECK_MODULES([OMX], [libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED x11-xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
1292 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS omx"
1293 fi
1294 AM_CONDITIONAL(HAVE_ST_OMX, test "x$enable_omx" = xyes)
1295
1296 dnl
1297 dnl OpenCL configuration
1298 dnl
1299
1300 AC_ARG_WITH([libclc-path],
1301 [AS_HELP_STRING([--with-libclc-path],
1302 [DEPRECATED: See http://dri.freedesktop.org/wiki/GalliumCompute#How_to_Install])],
1303 [LIBCLC_PATH="$withval"],
1304 [LIBCLC_PATH=''])
1305
1306 if test -n "$LIBCLC_PATH"; then
1307 AC_MSG_ERROR([The --with-libclc-path option has been deprecated.
1308 Please review the updated build instructions for clover:
1309 http://dri.freedesktop.org/wiki/GalliumCompute])
1310 fi
1311
1312
1313 AC_ARG_WITH([clang-libdir],
1314 [AS_HELP_STRING([--with-clang-libdir],
1315 [Path to Clang libraries @<:@default=llvm-config --libdir@:>@])],
1316 [CLANG_LIBDIR="$withval"],
1317 [CLANG_LIBDIR=''])
1318
1319 PKG_CHECK_EXISTS([libclc], [have_libclc=yes], [have_libclc=no])
1320
1321 if test "x$enable_opencl" = xyes; then
1322 if test -z "$with_gallium_drivers"; then
1323 AC_MSG_ERROR([cannot enable OpenCL without Gallium])
1324 fi
1325
1326 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 7; then
1327 AC_MSG_ERROR([gcc >= 4.7 is required to build clover])
1328 fi
1329
1330 if test "x$have_libclc" = xno; then
1331 AC_MSG_ERROR([pkg-config cannot find libclc.pc which is required to build clover.
1332 Make sure the directory containing libclc.pc is specified in your
1333 PKG_CONFIG_PATH environment variable.
1334 By default libclc.pc is installed to /usr/local/share/pkgconfig/])
1335 else
1336 LIBCLC_INCLUDEDIR=`$PKG_CONFIG --variable=includedir libclc`
1337 LIBCLC_LIBEXECDIR=`$PKG_CONFIG --variable=libexecdir libclc`
1338 AC_SUBST([LIBCLC_INCLUDEDIR])
1339 AC_SUBST([LIBCLC_LIBEXECDIR])
1340 fi
1341
1342 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS clover"
1343 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS opencl"
1344 enable_gallium_loader=yes
1345
1346 if test "x$enable_opencl_icd" = xyes; then
1347 OPENCL_LIBNAME="MesaOpenCL"
1348 else
1349 OPENCL_LIBNAME="OpenCL"
1350 fi
1351 fi
1352 AM_CONDITIONAL(HAVE_CLOVER, test "x$enable_opencl" = xyes)
1353 AM_CONDITIONAL(HAVE_CLOVER_ICD, test "x$enable_opencl_icd" = xyes)
1354 AC_SUBST([OPENCL_LIBNAME])
1355
1356 dnl
1357 dnl Gallium configuration
1358 dnl
1359 AM_CONDITIONAL(HAVE_GALLIUM, test -n "$with_gallium_drivers")
1360
1361 AC_SUBST([LLVM_BINDIR])
1362 AC_SUBST([LLVM_CFLAGS])
1363 AC_SUBST([LLVM_CPPFLAGS])
1364 AC_SUBST([LLVM_CXXFLAGS])
1365 AC_SUBST([LLVM_LIBDIR])
1366 AC_SUBST([LLVM_LIBS])
1367 AC_SUBST([LLVM_LDFLAGS])
1368 AC_SUBST([LLVM_INCLUDEDIR])
1369 AC_SUBST([LLVM_VERSION])
1370 AC_SUBST([CLANG_RESOURCE_DIR])
1371
1372 case "x$enable_opengl$enable_gles1$enable_gles2" in
1373 x*yes*)
1374 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1375 ;;
1376 esac
1377
1378 AC_SUBST([VG_LIB_DEPS])
1379 AC_SUBST([EGL_CLIENT_APIS])
1380
1381 dnl
1382 dnl EGL Platforms configuration
1383 dnl
1384 AC_ARG_WITH([egl-platforms],
1385 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1386 [comma delimited native platforms libEGL supports, e.g.
1387 "x11,drm" @<:@default=auto@:>@])],
1388 [with_egl_platforms="$withval"],
1389 [if test "x$enable_egl" = xyes; then
1390 with_egl_platforms="x11"
1391 else
1392 with_egl_platforms=""
1393 fi])
1394
1395 if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
1396 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1397 fi
1398
1399 # Do per-EGL platform setups and checks
1400 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1401 for plat in $egl_platforms; do
1402 case "$plat" in
1403 wayland)
1404 PKG_CHECK_MODULES([WAYLAND], [wayland-client >= $WAYLAND_REQUIRED wayland-server >= $WAYLAND_REQUIRED])
1405 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
1406
1407 WAYLAND_PREFIX=`$PKG_CONFIG --variable=prefix wayland-client`
1408 AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner],,
1409 [${WAYLAND_PREFIX}/bin$PATH_SEPARATOR$PATH])
1410 ;;
1411
1412 x11)
1413 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 >= $XCBDRI2_REQUIRED xcb-xfixes])
1414 ;;
1415
1416 drm)
1417 test "x$enable_gbm" = "xno" &&
1418 AC_MSG_ERROR([EGL platform drm needs gbm])
1419 test "x$have_libdrm" != xyes &&
1420 AC_MSG_ERROR([EGL platform drm requires libdrm >= $LIBDRM_REQUIRED])
1421 ;;
1422
1423 android|fbdev|gdi|null)
1424 ;;
1425
1426 *)
1427 AC_MSG_ERROR([EGL platform '$plat' does not exist])
1428 ;;
1429 esac
1430
1431 case "$plat$have_libudev" in
1432 waylandno|drmno)
1433 AC_MSG_ERROR([cannot build $plat platform without udev >= $LIBUDEV_REQUIRED]) ;;
1434 esac
1435 done
1436
1437 # libEGL wants to default to the first platform specified in
1438 # ./configure. parse that here.
1439 if test "x$egl_platforms" != "x"; then
1440 FIRST_PLATFORM_CAPS=`echo $egl_platforms | sed 's| .*||' | tr 'a-z' 'A-Z'`
1441 EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
1442 else
1443 EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
1444 fi
1445
1446 if echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1; then
1447 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
1448 NEED_WINSYS_XLIB=yes
1449 fi
1450 AM_CONDITIONAL(HAVE_EGL_PLATFORM_X11, echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1)
1451 AM_CONDITIONAL(HAVE_EGL_PLATFORM_WAYLAND, echo "$egl_platforms" | grep 'wayland' >/dev/null 2>&1)
1452 AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep 'drm' >/dev/null 2>&1)
1453 AM_CONDITIONAL(HAVE_EGL_PLATFORM_FBDEV, echo "$egl_platforms" | grep 'fbdev' >/dev/null 2>&1)
1454 AM_CONDITIONAL(HAVE_EGL_PLATFORM_NULL, echo "$egl_platforms" | grep 'null' >/dev/null 2>&1)
1455
1456 AM_CONDITIONAL(HAVE_EGL_DRIVER_DRI2, test "x$HAVE_EGL_DRIVER_DRI2" != "x")
1457
1458 AC_SUBST([EGL_NATIVE_PLATFORM])
1459 AC_SUBST([EGL_CFLAGS])
1460
1461 # If we don't have the X11 platform, set this define so we don't try to include
1462 # the X11 headers.
1463 if ! echo "$egl_platforms" | grep -q 'x11'; then
1464 DEFINES="$DEFINES -DMESA_EGL_NO_X11_HEADERS"
1465 GL_PC_CFLAGS="$GL_PC_CFLAGS -DMESA_EGL_NO_X11_HEADERS"
1466 fi
1467
1468 AC_ARG_WITH([egl-driver-dir],
1469 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1470 [directory for EGL drivers [[default=${libdir}/egl]]])],
1471 [EGL_DRIVER_INSTALL_DIR="$withval"],
1472 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1473 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1474
1475 AC_ARG_WITH([max-width],
1476 [AS_HELP_STRING([--with-max-width=N],
1477 [Maximum framebuffer width (4096)])],
1478 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1479 AS_IF([test "${withval}" -gt "4096"],
1480 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1481 )
1482 AC_ARG_WITH([max-height],
1483 [AS_HELP_STRING([--with-max-height=N],
1484 [Maximum framebuffer height (4096)])],
1485 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1486 AS_IF([test "${withval}" -gt "4096"],
1487 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1488 )
1489
1490 dnl
1491 dnl Gallium LLVM
1492 dnl
1493 AC_ARG_ENABLE([gallium-llvm],
1494 [AS_HELP_STRING([--enable-gallium-llvm],
1495 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1496 [enable_gallium_llvm="$enableval"],
1497 [enable_gallium_llvm=auto])
1498
1499 AC_ARG_ENABLE([llvm-shared-libs],
1500 [AS_HELP_STRING([--enable-llvm-shared-libs],
1501 [link with LLVM shared libraries @<:@default=enabled@:>@])],
1502 [],
1503 [with_llvm_shared_libs=yes])
1504
1505 AC_ARG_WITH([llvm-prefix],
1506 [AS_HELP_STRING([--with-llvm-prefix],
1507 [Prefix for LLVM installations in non-standard locations])],
1508 [llvm_prefix="$withval"],
1509 [llvm_prefix=''])
1510
1511
1512 # Call this inside ` ` to get the return value.
1513 # $1 is the llvm-config command with arguments.
1514 strip_unwanted_llvm_flags() {
1515 # Use \> (marks the end of the word)
1516 echo `$1` | sed \
1517 -e 's/-DNDEBUG\>//g' \
1518 -e 's/-pedantic\>//g' \
1519 -e 's/-Wcovered-switch-default\>//g' \
1520 -e 's/-O.\>//g' \
1521 -e 's/-g\>//g' \
1522 -e 's/-Wall\>//g' \
1523 -e 's/-Wcast-qual\>//g' \
1524 -e 's/-Woverloaded-virtual\>//g' \
1525 -e 's/-fcolor-diagnostics\>//g' \
1526 -e 's/-fdata-sections\>//g' \
1527 -e 's/-ffunction-sections\>//g' \
1528 -e 's/-fno-exceptions\>//g' \
1529 -e 's/-fomit-frame-pointer\>//g' \
1530 -e 's/-fvisibility-inlines-hidden\>//g' \
1531 -e 's/-fPIC\>//g'
1532 }
1533
1534
1535 if test -z "$with_gallium_drivers"; then
1536 enable_gallium_llvm=no
1537 fi
1538 if test "x$enable_gallium_llvm" = xauto; then
1539 case "$host_cpu" in
1540 i*86|x86_64|amd64) enable_gallium_llvm=yes;;
1541 esac
1542 fi
1543 if test "x$enable_gallium_llvm" = xyes; then
1544 if test -n "$llvm_prefix"; then
1545 AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no], ["$llvm_prefix/bin"])
1546 else
1547 AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no])
1548 fi
1549
1550 if test "x$LLVM_CONFIG" != xno; then
1551 LLVM_VERSION=`$LLVM_CONFIG --version | sed 's/svn.*//g'`
1552 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1553 LLVM_BINDIR=`$LLVM_CONFIG --bindir`
1554 LLVM_CPPFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cppflags"`
1555 LLVM_CFLAGS=$LLVM_CPPFLAGS # CPPFLAGS seem to be sufficient
1556 LLVM_CXXFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cxxflags"`
1557 LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
1558 LLVM_LIBDIR=`$LLVM_CONFIG --libdir`
1559 LLVM_LDFLAGS="-Wl,-rpath,$LLVM_LIBDIR $LLVM_LDFLAGS"
1560
1561 AC_COMPUTE_INT([LLVM_VERSION_MAJOR], [LLVM_VERSION_MAJOR],
1562 [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
1563 AC_COMPUTE_INT([LLVM_VERSION_MINOR], [LLVM_VERSION_MINOR],
1564 [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
1565
1566 if test -n "${LLVM_VERSION_MAJOR}"; then
1567 LLVM_VERSION_INT="${LLVM_VERSION_MAJOR}0${LLVM_VERSION_MINOR}"
1568 else
1569 LLVM_VERSION_INT=`echo $LLVM_VERSION | sed -e 's/\([[0-9]]\)\.\([[0-9]]\)/\10\2/g'`
1570 fi
1571
1572 LLVM_COMPONENTS="engine bitwriter"
1573 if $LLVM_CONFIG --components | grep -qw 'mcjit'; then
1574 LLVM_COMPONENTS="${LLVM_COMPONENTS} mcjit"
1575 fi
1576
1577 if test "x$enable_opencl" = xyes; then
1578 LLVM_COMPONENTS="${LLVM_COMPONENTS} ipo linker instrumentation"
1579 # LLVM 3.3 >= 177971 requires IRReader
1580 if $LLVM_CONFIG --components | grep -qw 'irreader'; then
1581 LLVM_COMPONENTS="${LLVM_COMPONENTS} irreader"
1582 fi
1583 # LLVM 3.4 requires Option
1584 if $LLVM_CONFIG --components | grep -qw 'option'; then
1585 LLVM_COMPONENTS="${LLVM_COMPONENTS} option"
1586 fi
1587 fi
1588 DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT"
1589 MESA_LLVM=1
1590
1591 dnl Check for Clang internal headers
1592 if test "x$enable_opencl" = xyes; then
1593 if test -z "$CLANG_LIBDIR"; then
1594 CLANG_LIBDIR=${LLVM_LIBDIR}
1595 fi
1596 CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION}
1597 AS_IF([test ! -f "$CLANG_RESOURCE_DIR/include/stddef.h"],
1598 [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.])])
1599 fi
1600 else
1601 MESA_LLVM=0
1602 LLVM_VERSION_INT=0
1603 fi
1604 else
1605 MESA_LLVM=0
1606 LLVM_VERSION_INT=0
1607 fi
1608
1609 dnl Directory for XVMC libs
1610 AC_ARG_WITH([xvmc-libdir],
1611 [AS_HELP_STRING([--with-xvmc-libdir=DIR],
1612 [directory for the XVMC libraries @<:@default=${libdir}@:>@])],
1613 [XVMC_LIB_INSTALL_DIR="$withval"],
1614 [XVMC_LIB_INSTALL_DIR='${libdir}'])
1615 AC_SUBST([XVMC_LIB_INSTALL_DIR])
1616
1617 dnl
1618 dnl Gallium Tests
1619 dnl
1620 if test "x$enable_gallium_tests" = xyes; then
1621 enable_gallium_loader=yes
1622 fi
1623 AM_CONDITIONAL(HAVE_GALLIUM_TESTS, test "x$enable_gallium_tests" = xyes)
1624
1625 if test "x$enable_gallium_loader" = xyes; then
1626 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS pipe-loader"
1627 fi
1628 AM_CONDITIONAL(NEED_GALLIUM_LOADER, test "x$enable_gallium_loader" = xyes)
1629
1630 dnl Directory for VDPAU libs
1631 AC_ARG_WITH([vdpau-libdir],
1632 [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1633 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1634 [VDPAU_LIB_INSTALL_DIR="$withval"],
1635 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1636 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
1637
1638 AC_ARG_WITH([omx-libdir],
1639 [AS_HELP_STRING([--with-omx-libdir=DIR],
1640 [directory for the OMX libraries])],
1641 [OMX_LIB_INSTALL_DIR="$withval"],
1642 [OMX_LIB_INSTALL_DIR=`$PKG_CONFIG --variable=pluginsdir libomxil-bellagio`])
1643 AC_SUBST([OMX_LIB_INSTALL_DIR])
1644
1645 dnl Directory for OpenCL libs
1646 AC_ARG_WITH([opencl-libdir],
1647 [AS_HELP_STRING([--with-opencl-libdir=DIR],
1648 [directory for auxiliary libraries used by the OpenCL implementation @<:@default=${libdir}/opencl@:>@])],
1649 [OPENCL_LIB_INSTALL_DIR="$withval"],
1650 [OPENCL_LIB_INSTALL_DIR='${libdir}/opencl'])
1651 AC_SUBST([OPENCL_LIB_INSTALL_DIR])
1652
1653 dnl
1654 dnl Gallium helper functions
1655 dnl
1656 gallium_check_st() {
1657 if test "x$NEED_NONNULL_WINSYS" = xyes; then
1658 if test "x$have_libdrm" != xyes; then
1659 AC_MSG_ERROR([DRI or Xorg DDX requires libdrm >= $LIBDRM_REQUIRED])
1660 fi
1661 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1662 fi
1663 if test "x$enable_dri" = xyes && test -n "$2"; then
1664 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1665 fi
1666 if test "x$enable_xa" = xyes && test -n "$3"; then
1667 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1668 fi
1669 if test "x$enable_xvmc" = xyes && test -n "$4"; then
1670 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
1671 fi
1672 if test "x$enable_vdpau" = xyes && test -n "$5"; then
1673 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5"
1674 fi
1675 if test "x$enable_omx" = xyes && test "x$6" != x; then
1676 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6"
1677 fi
1678 }
1679
1680 gallium_require_llvm() {
1681 if test "x$MESA_LLVM" = x0; then
1682 case "$host_cpu" in
1683 i*86|x86_64|amd64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1684 esac
1685 fi
1686 }
1687
1688 gallium_require_drm_loader() {
1689 if test "x$enable_gallium_loader" = xyes; then
1690 if test "x$have_libudev" != xyes; then
1691 AC_MSG_ERROR([Gallium drm loader requires libudev >= $LIBUDEV_REQUIRED])
1692 fi
1693 if test "x$have_libdrm" != xyes; then
1694 AC_MSG_ERROR([Gallium drm loader requires libdrm >= $LIBDRM_REQUIRED])
1695 fi
1696 enable_gallium_drm_loader=yes
1697 fi
1698 }
1699
1700 radeon_llvm_check() {
1701 if test "x$enable_gallium_llvm" != "xyes"; then
1702 AC_MSG_ERROR([--enable-gallium-llvm is required when building $1])
1703 fi
1704 LLVM_REQUIRED_VERSION_MAJOR="3"
1705 LLVM_REQUIRED_VERSION_MINOR="3"
1706 if test "$LLVM_VERSION_INT" -lt "${LLVM_REQUIRED_VERSION_MAJOR}0${LLVM_REQUIRED_VERSION_MINOR}"; then
1707 AC_MSG_ERROR([LLVM $LLVM_REQUIRED_VERSION_MAJOR.$LLVM_REQUIRED_VERSION_MINOR or newer is required for $1])
1708 fi
1709 if test true && $LLVM_CONFIG --targets-built | grep -qvw 'R600' ; then
1710 AC_MSG_ERROR([LLVM R600 Target not enabled. You can enable it when building the LLVM
1711 sources with the --enable-experimental-targets=R600
1712 configure flag])
1713 fi
1714 LLVM_COMPONENTS="${LLVM_COMPONENTS} r600 bitreader ipo"
1715 NEED_RADEON_LLVM=yes
1716 AC_CHECK_LIB([elf], [elf_memory], [ELF_LIB=-lelf],
1717 [AC_MSG_ERROR([$1 requires libelf when using LLVM])])
1718 }
1719
1720 dnl Gallium drivers
1721 if test "x$enable_dri" = xyes -o "x$enable_xa" = xyes -o \
1722 "x$enable_xvmc" = xyes -o "x$enable_vdpau" = xyes; then
1723 NEED_NONNULL_WINSYS=yes
1724 fi
1725 AM_CONDITIONAL(NEED_NONNULL_WINSYS, test "x$NEED_NONNULL_WINSYS" = xyes)
1726
1727 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
1728 if test -n "$with_gallium_drivers"; then
1729 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1730 for driver in $gallium_drivers; do
1731 case "x$driver" in
1732 xsvga)
1733 HAVE_GALLIUM_SVGA=yes
1734 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
1735 gallium_require_drm_loader
1736 gallium_check_st "svga/drm" "dri-vmwgfx" ""
1737 ;;
1738 xi915)
1739 HAVE_GALLIUM_I915=yes
1740 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1741 gallium_require_drm_loader
1742 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe"
1743 if test "x$MESA_LLVM" = x1; then
1744 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1745 fi
1746 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1747 gallium_check_st "i915/drm" "dri-i915"
1748 DRICOMMON_NEED_LIBDRM=yes
1749 ;;
1750 xilo)
1751 HAVE_GALLIUM_ILO=yes
1752 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1753 gallium_require_drm_loader
1754 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS ilo"
1755 gallium_check_st "intel/drm" "dri-ilo"
1756 DRICOMMON_NEED_LIBDRM=yes
1757 ;;
1758 xr300)
1759 HAVE_GALLIUM_R300=yes
1760 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1761 gallium_require_drm_loader
1762 gallium_require_llvm "Gallium R300"
1763 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1764 gallium_check_st "radeon/drm" "r300/dri" "" "" ""
1765 DRICOMMON_NEED_LIBDRM=yes
1766 ;;
1767 xr600)
1768 HAVE_GALLIUM_R600=yes
1769 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1770 gallium_require_drm_loader
1771 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1772 if test "x$enable_r600_llvm" = xyes -o "x$enable_opencl" = xyes; then
1773 radeon_llvm_check "r600g"
1774 LLVM_COMPONENTS="${LLVM_COMPONENTS} bitreader asmparser"
1775 fi
1776 if test "x$enable_r600_llvm" = xyes; then
1777 USE_R600_LLVM_COMPILER=yes;
1778 fi
1779 if test "x$enable_opencl" = xyes; then
1780 LLVM_COMPONENTS="${LLVM_COMPONENTS} bitreader asmparser"
1781 fi
1782 gallium_check_st "radeon/drm" "r600/dri" "" "r600/xvmc" "r600/vdpau" "r600/omx"
1783 DRICOMMON_NEED_LIBDRM=yes
1784 ;;
1785 xradeonsi)
1786 HAVE_GALLIUM_RADEONSI=yes
1787 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1788 gallium_require_drm_loader
1789 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS radeonsi"
1790 radeon_llvm_check "radeonsi"
1791 gallium_check_st "radeon/drm" "radeonsi/dri" "" "" "radeonsi/vdpau" "radeonsi/omx"
1792 DRICOMMON_NEED_LIBDRM=yes
1793 ;;
1794 xnouveau)
1795 HAVE_GALLIUM_NOUVEAU=yes
1796 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1797 gallium_require_drm_loader
1798 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau"
1799 gallium_check_st "nouveau/drm" "dri-nouveau" "" "xvmc-nouveau" "vdpau-nouveau"
1800 DRICOMMON_NEED_LIBDRM=yes
1801 ;;
1802 xfreedreno)
1803 HAVE_GALLIUM_FREEDRENO=yes
1804 PKG_CHECK_MODULES([FREEDRENO], [libdrm_freedreno >= $LIBDRM_FREEDRENO_REQUIRED])
1805 gallium_require_drm_loader
1806 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS freedreno"
1807 gallium_check_st "freedreno/drm" "dri-freedreno" "" "" ""
1808 DRICOMMON_NEED_LIBDRM=yes
1809 ;;
1810 xswrast)
1811 HAVE_GALLIUM_SOFTPIPE=yes
1812 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe"
1813 if test "x$MESA_LLVM" = x1; then
1814 HAVE_GALLIUM_LLVMPIPE=yes
1815 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1816 fi
1817
1818 if test "x$enable_dri" = xyes; then
1819 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1820 fi
1821 ;;
1822 *)
1823 AC_MSG_ERROR([Unknown Gallium driver: $driver])
1824 ;;
1825 esac
1826 done
1827 fi
1828
1829 dnl Set LLVM_LIBS - This is done after the driver configuration so
1830 dnl that drivers can add additonal components to LLVM_COMPONENTS.
1831 dnl Previously, gallium drivers were updating LLVM_LIBS directly
1832 dnl by calling llvm-config --libs ${DRIVER_LLVM_COMPONENTS}, but
1833 dnl this was causing the same libraries to be appear multiple times
1834 dnl in LLVM_LIBS.
1835
1836 if test "x$MESA_LLVM" != x0; then
1837
1838 LLVM_LIBS="`$LLVM_CONFIG --libs ${LLVM_COMPONENTS}`"
1839
1840 if test "x$with_llvm_shared_libs" = xyes; then
1841 dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
1842 LLVM_SO_NAME=LLVM-`$LLVM_CONFIG --version`
1843 AS_IF([test -f "$LLVM_LIBDIR/lib$LLVM_SO_NAME.so"], [llvm_have_one_so=yes])
1844
1845 if test "x$llvm_have_one_so" = xyes; then
1846 dnl LLVM was built using auto*, so there is only one shared object.
1847 LLVM_LIBS="-l$LLVM_SO_NAME"
1848 else
1849 dnl If LLVM was built with CMake, there will be one shared object per
1850 dnl component.
1851 AS_IF([test ! -f "$LLVM_LIBDIR/libLLVMTarget.so"],
1852 [AC_MSG_ERROR([Could not find llvm shared libraries:
1853 Please make sure you have built llvm with the --enable-shared option
1854 and that your llvm libraries are installed in $LLVM_LIBDIR
1855 If you have installed your llvm libraries to a different directory you
1856 can use the --with-llvm-prefix= configure flag to specify this directory.
1857 NOTE: Mesa is attempting to use llvm shared libraries because you have
1858 passed one of the following options to configure:
1859 --enable-llvm-shared-libs
1860 --enable-opencl
1861 If you do not want to build with llvm shared libraries and instead want to
1862 use llvm static libraries then remove these options from your configure
1863 invocation and reconfigure.])])
1864
1865 dnl We don't need to update LLVM_LIBS in this case because the LLVM
1866 dnl install uses a shared object for each compoenent and we have
1867 dnl already added all of these objects to LLVM_LIBS.
1868 fi
1869 fi
1870 fi
1871
1872 AM_CONDITIONAL(HAVE_GALLIUM_SVGA, test "x$HAVE_GALLIUM_SVGA" = xyes)
1873 AM_CONDITIONAL(HAVE_GALLIUM_I915, test "x$HAVE_GALLIUM_I915" = xyes)
1874 AM_CONDITIONAL(HAVE_GALLIUM_ILO, test "x$HAVE_GALLIUM_ILO" = xyes)
1875 AM_CONDITIONAL(HAVE_GALLIUM_R300, test "x$HAVE_GALLIUM_R300" = xyes)
1876 AM_CONDITIONAL(HAVE_GALLIUM_R600, test "x$HAVE_GALLIUM_R600" = xyes)
1877 AM_CONDITIONAL(HAVE_GALLIUM_RADEONSI, test "x$HAVE_GALLIUM_RADEONSI" = xyes)
1878 AM_CONDITIONAL(HAVE_GALLIUM_NOUVEAU, test "x$HAVE_GALLIUM_NOUVEAU" = xyes)
1879 AM_CONDITIONAL(HAVE_GALLIUM_FREEDRENO, test "x$HAVE_GALLIUM_FREEDRENO" = xyes)
1880 AM_CONDITIONAL(HAVE_GALLIUM_SOFTPIPE, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes)
1881 AM_CONDITIONAL(HAVE_GALLIUM_LLVMPIPE, test "x$HAVE_GALLIUM_LLVMPIPE" = xyes)
1882
1883 AM_CONDITIONAL(NEED_GALLIUM_SOFTPIPE_DRIVER, test "x$HAVE_GALLIUM_SVGA" = xyes -o \
1884 "x$HAVE_GALLIUM_I915" = xyes -o \
1885 "x$HAVE_GALLIUM_SOFTPIPE" = xyes)
1886 AM_CONDITIONAL(NEED_GALLIUM_LLVMPIPE_DRIVER, test "x$HAVE_GALLIUM_I915" = xyes -o \
1887 "x$HAVE_GALLIUM_SOFTPIPE" = xyes \
1888 && test "x$MESA_LLVM" = x1)
1889
1890 # NOTE: anything using xcb or other client side libs ends up in separate
1891 # _CLIENT variables. The pipe loader is built in two variants,
1892 # one that is standalone and does not link any x client libs (for
1893 # use by XA tracker in particular, but could be used in any case
1894 # where communication with xserver is not desired).
1895 if test "x$enable_gallium_loader" = xyes; then
1896 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
1897
1898 if test "x$enable_gallium_xlib_loader" = xyes; then
1899 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
1900 NEED_WINSYS_XLIB="yes"
1901 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_XLIB"
1902 fi
1903
1904 if test "x$enable_gallium_drm_loader" = xyes; then
1905 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRM"
1906 PKG_CHECK_MODULES([GALLIUM_PIPE_LOADER_XCB], [xcb xcb-dri2],
1907 pipe_loader_have_xcb=yes, pipe_loader_have_xcb=no)
1908 if test "x$pipe_loader_have_xcb" = xyes; then
1909 GALLIUM_PIPE_LOADER_CLIENT_DEFINES="$GALLIUM_PIPE_LOADER_CLIENT_DEFINES -DHAVE_PIPE_LOADER_XCB"
1910 GALLIUM_PIPE_LOADER_CLIENT_LIBS="$GALLIUM_PIPE_LOADER_CLIENT_LIBS $GALLIUM_PIPE_LOADER_XCB_LIBS $LIBDRM_LIBS"
1911 fi
1912 fi
1913
1914 GALLIUM_PIPE_LOADER_CLIENT_DEFINES="$GALLIUM_PIPE_LOADER_CLIENT_DEFINES $GALLIUM_PIPE_LOADER_DEFINES"
1915 GALLIUM_PIPE_LOADER_CLIENT_LIBS="$GALLIUM_PIPE_LOADER_CLIENT_LIBS $GALLIUM_PIPE_LOADER_LIBS"
1916
1917 AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
1918 AC_SUBST([GALLIUM_PIPE_LOADER_LIBS])
1919 AC_SUBST([GALLIUM_PIPE_LOADER_CLIENT_DEFINES])
1920 AC_SUBST([GALLIUM_PIPE_LOADER_CLIENT_LIBS])
1921 fi
1922 AM_CONDITIONAL(NEED_PIPE_LOADER_XLIB, test "x$enable_gallium_xlib_loader" = xyes)
1923
1924 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
1925 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
1926 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
1927 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
1928 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
1929 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
1930
1931 AM_CONDITIONAL(NEED_RADEON_DRM_WINSYS, test "x$NEED_NONNULL_WINSYS" = xyes -a \
1932 "x$HAVE_GALLIUM_R300" = xyes -o \
1933 "x$HAVE_GALLIUM_R600" = xyes -o \
1934 "x$HAVE_GALLIUM_RADEONSI" = xyes)
1935 AM_CONDITIONAL(NEED_WINSYS_WRAPPER, test "x$HAVE_GALLIUM_I915" = xyes -o \
1936 "x$HAVE_GALLIUM_SVGA" = xyes)
1937 AM_CONDITIONAL(NEED_WINSYS_XLIB, test "x$NEED_WINSYS_XLIB" = xyes)
1938 AM_CONDITIONAL(NEED_RADEON_LLVM, test x$NEED_RADEON_LLVM = xyes)
1939 AM_CONDITIONAL(USE_R600_LLVM_COMPILER, test x$USE_R600_LLVM_COMPILER = xyes)
1940 AM_CONDITIONAL(HAVE_LOADER_GALLIUM, test x$enable_gallium_loader = xyes)
1941 AM_CONDITIONAL(HAVE_DRM_LOADER_GALLIUM, test x$enable_gallium_drm_loader = xyes)
1942 AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
1943 AM_CONDITIONAL(HAVE_MESA_LLVM, test x$MESA_LLVM = x1)
1944
1945 AC_SUBST([ELF_LIB])
1946
1947 AM_CONDITIONAL(DRICOMMON_NEED_LIBDRM, test "x$DRICOMMON_NEED_LIBDRM" = xyes)
1948 AM_CONDITIONAL(HAVE_LIBDRM, test "x$have_libdrm" = xyes)
1949 AM_CONDITIONAL(HAVE_X11_DRIVER, test "x$enable_xlib_glx" = xyes)
1950 AM_CONDITIONAL(HAVE_OSMESA, test "x$enable_osmesa" = xyes)
1951 AM_CONDITIONAL(HAVE_GALLIUM_OSMESA, test "x$enable_gallium_osmesa" = xyes)
1952
1953 AM_CONDITIONAL(HAVE_X86_ASM, test "x$asm_arch" = xx86 -o "x$asm_arch" = xx86_64)
1954 AM_CONDITIONAL(HAVE_X86_64_ASM, test "x$asm_arch" = xx86_64)
1955 AM_CONDITIONAL(HAVE_SPARC_ASM, test "x$asm_arch" = xsparc)
1956
1957 AC_SUBST([VDPAU_MAJOR], 1)
1958 AC_SUBST([VDPAU_MINOR], 0)
1959
1960 AC_SUBST([XVMC_MAJOR], 1)
1961 AC_SUBST([XVMC_MINOR], 0)
1962
1963 AC_SUBST([XA_MAJOR], 2)
1964 AC_SUBST([XA_MINOR], 2)
1965 AC_SUBST([XA_TINY], 0)
1966 AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_TINY")
1967
1968 dnl Restore LDFLAGS and CPPFLAGS
1969 LDFLAGS="$_SAVE_LDFLAGS"
1970 CPPFLAGS="$_SAVE_CPPFLAGS"
1971
1972 dnl Suppress clang's warnings about unused CFLAGS and CXXFLAGS
1973 if test "x$acv_mesa_CLANG" = xyes; then
1974 CFLAGS="$CFLAGS -Qunused-arguments"
1975 CXXFLAGS="$CXXFLAGS -Qunused-arguments"
1976 fi
1977
1978 dnl Add user CFLAGS and CXXFLAGS
1979 CFLAGS="$CFLAGS $USER_CFLAGS"
1980 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
1981
1982 dnl Substitute the config
1983 AC_CONFIG_FILES([Makefile
1984 src/Makefile
1985 src/egl/Makefile
1986 src/egl/drivers/Makefile
1987 src/egl/drivers/dri2/Makefile
1988 src/egl/main/Makefile
1989 src/egl/main/egl.pc
1990 src/egl/wayland/Makefile
1991 src/egl/wayland/wayland-drm/Makefile
1992 src/egl/wayland/wayland-egl/Makefile
1993 src/egl/wayland/wayland-egl/wayland-egl.pc
1994 src/gallium/auxiliary/Makefile
1995 src/gallium/auxiliary/pipe-loader/Makefile
1996 src/gallium/drivers/Makefile
1997 src/gallium/drivers/freedreno/Makefile
1998 src/gallium/drivers/galahad/Makefile
1999 src/gallium/drivers/i915/Makefile
2000 src/gallium/drivers/identity/Makefile
2001 src/gallium/drivers/ilo/Makefile
2002 src/gallium/drivers/llvmpipe/Makefile
2003 src/gallium/drivers/noop/Makefile
2004 src/gallium/drivers/nouveau/Makefile
2005 src/gallium/drivers/r300/Makefile
2006 src/gallium/drivers/r600/Makefile
2007 src/gallium/drivers/radeon/Makefile
2008 src/gallium/drivers/radeonsi/Makefile
2009 src/gallium/drivers/rbug/Makefile
2010 src/gallium/drivers/softpipe/Makefile
2011 src/gallium/drivers/svga/Makefile
2012 src/gallium/drivers/trace/Makefile
2013 src/gallium/state_trackers/Makefile
2014 src/gallium/state_trackers/clover/Makefile
2015 src/gallium/state_trackers/dri/Makefile
2016 src/gallium/state_trackers/dri/drm/Makefile
2017 src/gallium/state_trackers/dri/sw/Makefile
2018 src/gallium/state_trackers/egl/Makefile
2019 src/gallium/state_trackers/gbm/Makefile
2020 src/gallium/state_trackers/glx/xlib/Makefile
2021 src/gallium/state_trackers/omx/Makefile
2022 src/gallium/state_trackers/osmesa/Makefile
2023 src/gallium/state_trackers/vdpau/Makefile
2024 src/gallium/state_trackers/vega/Makefile
2025 src/gallium/state_trackers/xa/Makefile
2026 src/gallium/state_trackers/xvmc/Makefile
2027 src/gallium/targets/Makefile
2028 src/gallium/targets/dri-freedreno/Makefile
2029 src/gallium/targets/dri-i915/Makefile
2030 src/gallium/targets/dri-ilo/Makefile
2031 src/gallium/targets/dri-nouveau/Makefile
2032 src/gallium/targets/dri-swrast/Makefile
2033 src/gallium/targets/dri-vmwgfx/Makefile
2034 src/gallium/targets/egl-static/Makefile
2035 src/gallium/targets/gbm/Makefile
2036 src/gallium/targets/opencl/Makefile
2037 src/gallium/targets/xa/Makefile
2038 src/gallium/targets/xa/xatracker.pc
2039 src/gallium/targets/osmesa/Makefile
2040 src/gallium/targets/osmesa/osmesa.pc
2041 src/gallium/targets/pipe-loader/Makefile
2042 src/gallium/targets/radeonsi/dri/Makefile
2043 src/gallium/targets/radeonsi/omx/Makefile
2044 src/gallium/targets/radeonsi/vdpau/Makefile
2045 src/gallium/targets/r300/dri/Makefile
2046 src/gallium/targets/r600/dri/Makefile
2047 src/gallium/targets/r600/omx/Makefile
2048 src/gallium/targets/r600/vdpau/Makefile
2049 src/gallium/targets/r600/xvmc/Makefile
2050 src/gallium/targets/libgl-xlib/Makefile
2051 src/gallium/targets/vdpau-nouveau/Makefile
2052 src/gallium/targets/xvmc-nouveau/Makefile
2053 src/gallium/tests/trivial/Makefile
2054 src/gallium/tests/unit/Makefile
2055 src/gallium/winsys/Makefile
2056 src/gallium/winsys/freedreno/drm/Makefile
2057 src/gallium/winsys/i915/drm/Makefile
2058 src/gallium/winsys/i915/sw/Makefile
2059 src/gallium/winsys/intel/drm/Makefile
2060 src/gallium/winsys/nouveau/drm/Makefile
2061 src/gallium/winsys/radeon/drm/Makefile
2062 src/gallium/winsys/svga/drm/Makefile
2063 src/gallium/winsys/sw/dri/Makefile
2064 src/gallium/winsys/sw/fbdev/Makefile
2065 src/gallium/winsys/sw/null/Makefile
2066 src/gallium/winsys/sw/wayland/Makefile
2067 src/gallium/winsys/sw/wrapper/Makefile
2068 src/gallium/winsys/sw/xlib/Makefile
2069 src/gbm/Makefile
2070 src/gbm/main/gbm.pc
2071 src/glsl/Makefile
2072 src/glx/Makefile
2073 src/glx/tests/Makefile
2074 src/gtest/Makefile
2075 src/loader/Makefile
2076 src/mapi/Makefile
2077 src/mapi/es1api/Makefile
2078 src/mapi/es1api/glesv1_cm.pc
2079 src/mapi/es2api/Makefile
2080 src/mapi/es2api/glesv2.pc
2081 src/mapi/glapi/Makefile
2082 src/mapi/glapi/gen/Makefile
2083 src/mapi/glapi/tests/Makefile
2084 src/mapi/shared-glapi/Makefile
2085 src/mapi/shared-glapi/tests/Makefile
2086 src/mapi/vgapi/Makefile
2087 src/mapi/vgapi/vg.pc
2088 src/mesa/Makefile
2089 src/mesa/gl.pc
2090 src/mesa/drivers/dri/dri.pc
2091 src/mesa/drivers/dri/common/Makefile
2092 src/mesa/drivers/dri/common/xmlpool/Makefile
2093 src/mesa/drivers/dri/i915/Makefile
2094 src/mesa/drivers/dri/i965/Makefile
2095 src/mesa/drivers/dri/Makefile
2096 src/mesa/drivers/dri/nouveau/Makefile
2097 src/mesa/drivers/dri/r200/Makefile
2098 src/mesa/drivers/dri/radeon/Makefile
2099 src/mesa/drivers/dri/swrast/Makefile
2100 src/mesa/drivers/osmesa/Makefile
2101 src/mesa/drivers/osmesa/osmesa.pc
2102 src/mesa/drivers/x11/Makefile
2103 src/mesa/main/tests/Makefile
2104 src/mesa/main/tests/hash_table/Makefile])
2105
2106 dnl Sort the dirs alphabetically
2107 GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2108 GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2109 GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2110 GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2111
2112 AC_OUTPUT
2113
2114 dnl
2115 dnl Output some configuration info for the user
2116 dnl
2117 echo ""
2118 echo " prefix: $prefix"
2119 echo " exec_prefix: $exec_prefix"
2120 echo " libdir: $libdir"
2121 echo " includedir: $includedir"
2122
2123 dnl API info
2124 echo ""
2125 echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
2126 echo " OpenVG: $enable_openvg"
2127
2128 dnl Driver info
2129 echo ""
2130 case "x$enable_osmesa$enable_gallium_osmesa" in
2131 xnoyes)
2132 echo " OSMesa: lib$OSMESA_LIB (Gallium)"
2133 ;;
2134 xyesno)
2135 echo " OSMesa: lib$OSMESA_LIB"
2136 ;;
2137 xnono)
2138 echo " OSMesa: no"
2139 ;;
2140 esac
2141
2142 if test "x$enable_dri" != xno; then
2143 if test -z "$DRI_DIRS"; then
2144 echo " DRI drivers: no"
2145 else
2146 echo " DRI drivers: $DRI_DIRS"
2147 fi
2148 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
2149 fi
2150
2151 case "x$enable_glx$enable_xlib_glx" in
2152 xyesyes)
2153 echo " GLX: Xlib-based"
2154 ;;
2155 xyesno)
2156 echo " GLX: DRI-based"
2157 ;;
2158 *)
2159 echo " GLX: $enable_glx"
2160 ;;
2161 esac
2162
2163 dnl EGL
2164 echo ""
2165 echo " EGL: $enable_egl"
2166 if test "$enable_egl" = yes; then
2167 echo " EGL platforms: $egl_platforms"
2168
2169 egl_drivers=""
2170 if test "x$HAVE_EGL_DRIVER_DRI2" != "x"; then
2171 egl_drivers="$egl_drivers builtin:egl_dri2"
2172 fi
2173
2174 if test "x$enable_gallium_egl" = xyes; then
2175 echo " EGL drivers: ${egl_drivers} egl_gallium"
2176 echo " EGL Gallium STs:$EGL_CLIENT_APIS"
2177 else
2178 echo " EGL drivers: $egl_drivers"
2179 fi
2180 fi
2181
2182 echo ""
2183 if test "x$MESA_LLVM" = x1; then
2184 echo " llvm: yes"
2185 echo " llvm-config: $LLVM_CONFIG"
2186 echo " llvm-version: $LLVM_VERSION"
2187 else
2188 echo " llvm: no"
2189 fi
2190
2191 echo ""
2192 if test -n "$with_gallium_drivers"; then
2193 echo " Gallium: yes"
2194 echo " Target dirs: $GALLIUM_TARGET_DIRS"
2195 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
2196 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
2197 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
2198 else
2199 echo " Gallium: no"
2200 fi
2201
2202
2203 dnl Libraries
2204 echo ""
2205 echo " Shared libs: $enable_shared"
2206 echo " Static libs: $enable_static"
2207 echo " Shared-glapi: $enable_shared_glapi"
2208
2209 dnl Compiler options
2210 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2211 cflags=`echo $CFLAGS | \
2212 $SED 's/^ *//;s/ */ /;s/ *$//'`
2213 cxxflags=`echo $CXXFLAGS | \
2214 $SED 's/^ *//;s/ */ /;s/ *$//'`
2215 defines=`echo $DEFINES | $SED 's/^ *//;s/ */ /;s/ *$//'`
2216 echo ""
2217 echo " CFLAGS: $cflags"
2218 echo " CXXFLAGS: $cxxflags"
2219 echo " Macros: $defines"
2220 echo ""
2221 if test "x$MESA_LLVM" = x1; then
2222 echo " LLVM_CFLAGS: $LLVM_CFLAGS"
2223 echo " LLVM_CXXFLAGS: $LLVM_CXXFLAGS"
2224 echo " LLVM_CPPFLAGS: $LLVM_CPPFLAGS"
2225 echo ""
2226 fi
2227 echo " PYTHON2: $PYTHON2"
2228
2229 echo ""
2230 echo " Run '${MAKE-make}' to build Mesa"
2231 echo ""