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