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