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