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