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