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