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