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