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