Remove unneeded xdamages header from dri2_glx.c.
[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 # if static, move the external libraries to the programs
954 # and empty the libraries for libGL
955 if test "$enable_static" = yes; then
956 APP_LIB_DEPS="$APP_LIB_DEPS $GL_LIB_DEPS"
957 GL_LIB_DEPS=""
958 fi
959 ;;
960 xyesno)
961 # DRI-based GLX
962 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
963 GL_PC_REQ_PRIV="glproto >= $GLPROTO_REQUIRED"
964 if test x"$driglx_direct" = xyes; then
965 if test "x$have_libdrm" != xyes; then
966 AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
967 fi
968 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
969 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
970 fi
971
972 # find the DRI deps for libGL
973 if test "$x11_pkgconfig" = yes; then
974 dri_modules="x11 xext xdamage xfixes"
975
976 # add xf86vidmode if available
977 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
978 if test "$HAVE_XF86VIDMODE" = yes ; then
979 dri_modules="$dri_modules xxf86vm"
980 fi
981
982 # add xcb modules if necessary
983 if test "$enable_xcb" = yes; then
984 dri_modules="$dri_modules x11-xcb xcb-glx"
985 fi
986
987 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
988 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
989 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
990 GL_LIB_DEPS="$DRIGL_LIBS"
991 else
992 # should check these...
993 X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
994 if test "x$HAVE_XF86VIDMODE" == xyes; then
995 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
996 else
997 GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXdamage -lXfixes"
998 fi
999 GL_PC_LIB_PRIV="$GL_LIB_DEPS"
1000 GL_PC_CFLAGS="$X11_INCLUDES"
1001
1002 # XCB can only be used from pkg-config
1003 if test "$enable_xcb" = yes; then
1004 PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
1005 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
1006 X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
1007 GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
1008 fi
1009 fi
1010
1011 # need DRM libs, -lpthread, etc.
1012 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1013 GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1014 ;;
1015 esac
1016
1017 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1018 GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1019 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1020 GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1021
1022 AC_SUBST([GL_LIB_DEPS])
1023 AC_SUBST([GL_PC_REQ_PRIV])
1024 AC_SUBST([GL_PC_LIB_PRIV])
1025 AC_SUBST([GL_PC_CFLAGS])
1026 AC_SUBST([DRI_PC_REQ_PRIV])
1027 AC_SUBST([GLESv1_CM_LIB_DEPS])
1028 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
1029 AC_SUBST([GLESv2_LIB_DEPS])
1030 AC_SUBST([GLESv2_PC_LIB_PRIV])
1031
1032 GLAPI_LIB_DEPS="-lpthread"
1033 AC_SUBST([GLAPI_LIB_DEPS])
1034
1035
1036 dnl Setup default DRI CFLAGS
1037 DRI_CFLAGS='$(CFLAGS)'
1038 DRI_CXXFLAGS='$(CXXFLAGS)'
1039 DRI_LIB_DEPS='$(TOP)/src/mesa/libmesa.a'
1040 MESA_MODULES='$(TOP)/src/mesa/libmesa.a'
1041
1042 AC_ARG_ENABLE([shared-dricore],
1043 [AS_HELP_STRING([--enable-shared-dricore],
1044 [link DRI modules with shared core DRI routines @<:@default=disabled@:>@])],
1045 [enable_dricore="$enableval"],
1046 [enable_dricore=no])
1047 if test "x$enable_dri" = xyes ; then
1048 if test "$enable_dricore" = yes ; then
1049 if test "$GCC$GXX" != yesyes ; then
1050 AC_MSG_WARN([Shared dricore requires GCC-compatible rpath handling. Disabling shared dricore])
1051 enable_dricore=no
1052 else
1053 DRICORE_GLSL_LIBS='$(TOP)/$(LIB_DIR)/libglsl.so'
1054 DRICORE_LIBS='$(TOP)/$(LIB_DIR)/libdricore.so'
1055 DRICORE_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -lglsl'
1056 DRI_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore -lglsl'
1057 DRI_CFLAGS='$(CFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1058 DRI_CXXFLAGS='$(CXXFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1059 MESA_MODULES='$(DRICORE_LIBS) $(DRICORE_GLSL_LIBS)'
1060 fi
1061 fi
1062 fi
1063 AC_SUBST([DRICORE_LIBS])
1064 AC_SUBST([DRICORE_GLSL_LIBS])
1065 AC_SUBST([DRICORE_LIB_DEPS])
1066 AC_SUBST([DRI_CXXFLAGS])
1067 AC_SUBST([DRI_CFLAGS])
1068 AC_SUBST([MESA_MODULES])
1069
1070 AC_SUBST([HAVE_XF86VIDMODE])
1071
1072 dnl
1073 dnl More GLX setup
1074 dnl
1075 case "x$enable_glx$enable_xlib_glx" in
1076 xyesyes)
1077 DEFINES="$DEFINES -DUSE_XSHM"
1078 ;;
1079 xyesno)
1080 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1081 if test "x$driglx_direct" = xyes; then
1082 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1083 fi
1084 ;;
1085 esac
1086
1087 dnl
1088 dnl TLS detection
1089 dnl
1090
1091 AC_ARG_ENABLE([glx-tls],
1092 [AS_HELP_STRING([--enable-glx-tls],
1093 [enable TLS support in GLX @<:@default=disabled@:>@])],
1094 [GLX_USE_TLS="$enableval"],
1095 [GLX_USE_TLS=no])
1096 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
1097
1098 AS_IF([test "x$GLX_USE_TLS" = xyes],
1099 [DEFINES="${DEFINES} -DGLX_USE_TLS -DPTHREADS"])
1100
1101 dnl
1102 dnl More DRI setup
1103 dnl
1104 dnl Directory for DRI drivers
1105 AC_ARG_WITH([dri-driverdir],
1106 [AS_HELP_STRING([--with-dri-driverdir=DIR],
1107 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
1108 [DRI_DRIVER_INSTALL_DIR="$withval"],
1109 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
1110 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
1111 dnl Extra search path for DRI drivers
1112 AC_ARG_WITH([dri-searchpath],
1113 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
1114 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
1115 [DRI_DRIVER_SEARCH_DIR="$withval"],
1116 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
1117 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
1118 dnl Which drivers to build - default is chosen by platform
1119 AC_ARG_WITH([dri-drivers],
1120 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
1121 [comma delimited DRI drivers list, e.g.
1122 "swrast,i965,radeon" @<:@default=auto@:>@])],
1123 [with_dri_drivers="$withval"],
1124 [with_dri_drivers=yes])
1125 if test "x$with_dri_drivers" = x; then
1126 with_dri_drivers=no
1127 fi
1128
1129 dnl If $with_dri_drivers is yes, directories will be added through
1130 dnl platform checks
1131 DRI_DIRS=""
1132 case "$with_dri_drivers" in
1133 no) ;;
1134 yes)
1135 # classic DRI drivers require FEATURE_GL to build
1136 if test "x$enable_opengl" = xyes; then
1137 DRI_DIRS="yes"
1138 fi
1139 ;;
1140 *)
1141 # verify the requested driver directories exist
1142 dri_drivers=`IFS=', '; echo $with_dri_drivers`
1143 for driver in $dri_drivers; do
1144 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
1145 AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
1146 done
1147 DRI_DIRS="$dri_drivers"
1148 if test -n "$DRI_DIRS" -a "x$enable_opengl" != xyes; then
1149 AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1150 fi
1151 ;;
1152 esac
1153
1154 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
1155 if test "x$enable_dri" = xyes; then
1156 # Platform specific settings and drivers to build
1157 case "$host_os" in
1158 linux*)
1159 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1160 DEFINES="$DEFINES -DHAVE_ALIAS"
1161
1162 case "$host_cpu" in
1163 x86_64)
1164 if test "x$DRI_DIRS" = "xyes"; then
1165 DRI_DIRS="i915 i965 nouveau r200 r300 r600 radeon swrast"
1166 fi
1167 ;;
1168 powerpc*)
1169 # Build only the drivers for cards that exist on PowerPC.
1170 if test "x$DRI_DIRS" = "xyes"; then
1171 DRI_DIRS="r200 r300 r600 radeon swrast"
1172 fi
1173 ;;
1174 sparc*)
1175 # Build only the drivers for cards that exist on sparc
1176 if test "x$DRI_DIRS" = "xyes"; then
1177 DRI_DIRS="r200 r300 r600 radeon swrast"
1178 fi
1179 ;;
1180 esac
1181 ;;
1182 freebsd* | dragonfly* | *netbsd*)
1183 DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
1184 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
1185
1186 if test "x$DRI_DIRS" = "xyes"; then
1187 DRI_DIRS="i915 i965 nouveau r200 r300 r600 radeon swrast"
1188 fi
1189 ;;
1190 gnu*)
1191 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1192 DEFINES="$DEFINES -DHAVE_ALIAS"
1193 ;;
1194 solaris*)
1195 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1196 ;;
1197 cygwin*)
1198 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1199 if test "x$DRI_DIRS" = "xyes"; then
1200 DRI_DIRS="swrast"
1201 fi
1202 ;;
1203 esac
1204
1205 # default drivers
1206 if test "x$DRI_DIRS" = "xyes"; then
1207 DRI_DIRS="i915 i965 nouveau r200 r300 r600 radeon swrast"
1208 fi
1209
1210 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
1211
1212 # Check for expat
1213 if test "x$enable_dri" = xyes; then
1214 EXPAT_INCLUDES=""
1215 EXPAT_LIB=-lexpat
1216 AC_ARG_WITH([expat],
1217 [AS_HELP_STRING([--with-expat=DIR],
1218 [expat install directory])],[
1219 EXPAT_INCLUDES="-I$withval/include"
1220 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
1221 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
1222 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
1223 ])
1224 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
1225 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1226 [AC_MSG_ERROR([Expat required for DRI.])])
1227 fi
1228
1229 # libdrm is required for all except swrast
1230 if test -n "$DRI_DIRS" -a x"$DRI_DIRS" != xswrast; then
1231 if test "x$have_libdrm" != xyes; then
1232 AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
1233 fi
1234 fi
1235
1236 # put all the necessary libs together, including possibly libdricore
1237 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
1238 fi
1239 AC_SUBST([DRI_DIRS])
1240 AC_SUBST([EXPAT_INCLUDES])
1241 AC_SUBST([DRI_LIB_DEPS])
1242
1243 case $DRI_DIRS in
1244 *i915*|*i965*)
1245 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1246 ;;
1247 esac
1248
1249 case $DRI_DIRS in
1250 *nouveau*)
1251 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1252 ;;
1253 esac
1254
1255 case $DRI_DIRS in
1256 *radeon*|*r200*|*r300*|*r600*)
1257 PKG_CHECK_MODULES([LIBDRM_RADEON],
1258 [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED],
1259 HAVE_LIBDRM_RADEON=yes,
1260 HAVE_LIBDRM_RADEON=no)
1261
1262 if test "x$HAVE_LIBDRM_RADEON" = xyes; then
1263 RADEON_CFLAGS="-DHAVE_LIBDRM_RADEON=1 $LIBDRM_RADEON_CFLAGS"
1264 RADEON_LDFLAGS=$LIBDRM_RADEON_LIBS
1265 fi
1266 ;;
1267 esac
1268 AC_SUBST([RADEON_CFLAGS])
1269 AC_SUBST([RADEON_LDFLAGS])
1270
1271
1272 dnl
1273 dnl OSMesa configuration
1274 dnl
1275
1276 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1277 AC_ARG_WITH([osmesa-bits],
1278 [AS_HELP_STRING([--with-osmesa-bits=BITS],
1279 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1280 [osmesa_bits="$withval"],
1281 [osmesa_bits=8])
1282 if test "x$osmesa_bits" != x8; then
1283 if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then
1284 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1285 osmesa_bits=8
1286 fi
1287 fi
1288 case "x$osmesa_bits" in
1289 x8)
1290 OSMESA_LIB=OSMesa
1291 ;;
1292 x16|x32)
1293 OSMESA_LIB="OSMesa$osmesa_bits"
1294 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1295 ;;
1296 *)
1297 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1298 ;;
1299 esac
1300 AC_SUBST([OSMESA_LIB])
1301
1302 if test "x$enable_osmesa" = xyes; then
1303 # only link libraries with osmesa if shared
1304 if test "$enable_static" = no; then
1305 OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1306 else
1307 OSMESA_LIB_DEPS=""
1308 fi
1309 OSMESA_MESA_DEPS=""
1310 OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1311 fi
1312 AC_SUBST([OSMESA_LIB_DEPS])
1313 AC_SUBST([OSMESA_MESA_DEPS])
1314 AC_SUBST([OSMESA_PC_REQ])
1315 AC_SUBST([OSMESA_PC_LIB_PRIV])
1316
1317 dnl
1318 dnl gbm configuration
1319 dnl
1320 if test "x$enable_gbm" = xauto; then
1321 case "$with_egl_platforms" in
1322 *drm*)
1323 enable_gbm=yes ;;
1324 *)
1325 enable_gbm=no ;;
1326 esac
1327 fi
1328 if test "x$enable_gbm" = xyes; then
1329 SRC_DIRS="$SRC_DIRS gbm"
1330 GBM_BACKEND_DIRS=""
1331
1332 PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1333 AC_MSG_ERROR([gbm needs udev]))
1334 GBM_LIB_DEPS="$DLOPEN_LIBS $LIBUDEV_LIBS"
1335
1336 if test "x$enable_dri" = xyes; then
1337 GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
1338 if test "$SHARED_GLAPI" -eq 0; then
1339 AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1340 fi
1341 fi
1342 fi
1343 AC_SUBST([GBM_LIB_DEPS])
1344 AC_SUBST([GBM_BACKEND_DIRS])
1345 GBM_PC_REQ_PRIV="libudev"
1346 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1347 GBM_PC_CFLAGS=
1348 AC_SUBST([GBM_PC_REQ_PRIV])
1349 AC_SUBST([GBM_PC_LIB_PRIV])
1350 AC_SUBST([GBM_PC_CFLAGS])
1351
1352 dnl
1353 dnl EGL configuration
1354 dnl
1355 EGL_CLIENT_APIS=""
1356
1357 if test "x$enable_egl" = xyes; then
1358 SRC_DIRS="$SRC_DIRS egl"
1359 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS -lpthread"
1360 EGL_DRIVERS_DIRS=""
1361
1362 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1363
1364 if test "$enable_static" != yes; then
1365 # build egl_glx when libGL is built
1366 if test "x$enable_glx" = xyes; then
1367 EGL_DRIVERS_DIRS="glx"
1368 fi
1369
1370 PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1371 [have_libudev=yes],[have_libudev=no])
1372 if test "$have_libudev" = yes; then
1373 DEFINES="$DEFINES -DHAVE_LIBUDEV"
1374 fi
1375 if test "x$enable_dri" = xyes; then
1376 # build egl_dri2 when xcb-dri2 is available
1377 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes],
1378 [have_xcb_dri2=yes],[have_xcb_dri2=no])
1379
1380 if test "$have_xcb_dri2" = yes; then
1381 EGL_DRIVER_DRI2=dri2
1382 DEFINES="$DEFINES -DHAVE_XCB_DRI2"
1383 # workaround a bug in xcb-dri2 generated by xcb-proto 1.6
1384 AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [],
1385 [DEFINES="$DEFINES -DXCB_DRI2_CONNECT_DEVICE_NAME_BROKEN"])
1386 fi
1387 fi
1388
1389 EGL_DRIVERS_DIRS="$EGL_DRIVERS_DIRS $EGL_DRIVER_DRI2"
1390 fi
1391 fi
1392 AC_SUBST([EGL_LIB_DEPS])
1393 AC_SUBST([EGL_DRIVERS_DIRS])
1394
1395 dnl
1396 dnl EGL Gallium configuration
1397 dnl
1398 if test "x$enable_gallium_egl" = xyes; then
1399 if test "x$with_gallium_drivers" = x; then
1400 AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
1401 fi
1402 if test "x$enable_egl" = xno; then
1403 AC_MSG_ERROR([cannot enable egl_gallium without EGL])
1404 fi
1405 if test "x$have_libdrm" != xyes; then
1406 AC_MSG_ERROR([egl_gallium requires libdrm >= $LIBDRM_REQUIRED])
1407 fi
1408
1409 GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
1410 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static"
1411 HAVE_ST_EGL="yes"
1412 fi
1413
1414 dnl
1415 dnl gbm Gallium configuration
1416 dnl
1417 if test "x$enable_gallium_gbm" = xauto; then
1418 case "$enable_gbm$HAVE_ST_EGL$with_egl_platforms" in
1419 yesyes*drm*)
1420 enable_gallium_gbm=yes ;;
1421 *)
1422 enable_gallium_gbm=no ;;
1423 esac
1424 fi
1425 if test "x$enable_gallium_gbm" = xyes; then
1426 if test "x$with_gallium_drivers" = x; then
1427 AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
1428 fi
1429 if test "x$enable_gbm" = xno; then
1430 AC_MSG_ERROR([cannot enable gbm_gallium without gbm])
1431 fi
1432
1433 GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS"
1434 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm"
1435 HAVE_ST_GBM="yes"
1436 fi
1437
1438 dnl
1439 dnl X.Org DDX configuration
1440 dnl
1441 if test "x$enable_xorg" = xyes; then
1442 PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1443 PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1444 PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1445 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1446 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1447 HAVE_XEXTPROTO_71="no")
1448 GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS"
1449 HAVE_ST_XORG=yes
1450 fi
1451
1452 dnl
1453 dnl XA configuration
1454 dnl
1455 if test "x$enable_xa" = xyes; then
1456 GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS"
1457 HAVE_ST_XA=yes
1458 fi
1459
1460 dnl
1461 dnl OpenVG configuration
1462 dnl
1463 VG_LIB_DEPS=""
1464
1465 if test "x$enable_openvg" = xyes; then
1466 if test "x$enable_egl" = xno; then
1467 AC_MSG_ERROR([cannot enable OpenVG without EGL])
1468 fi
1469 if test "x$with_gallium_drivers" = x; then
1470 AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1471 fi
1472 if test "x$enable_gallium_egl" = xno; then
1473 AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
1474 fi
1475
1476 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1477 VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS -lpthread"
1478 CORE_DIRS="$CORE_DIRS mapi/vgapi"
1479 GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1480 HAVE_ST_VEGA=yes
1481 fi
1482
1483 dnl
1484 dnl D3D1X configuration
1485 dnl
1486
1487 if test "x$enable_d3d1x" = xyes; then
1488 if test "x$with_gallium_drivers" = x; then
1489 AC_MSG_ERROR([cannot enable D3D1X without Gallium])
1490 fi
1491
1492 GALLIUM_STATE_TRACKERS_DIRS="d3d1x $GALLIUM_STATE_TRACKERS_DIRS"
1493 HAVE_ST_D3D1X=yes
1494 fi
1495
1496 dnl
1497 dnl Gallium G3DVL configuration
1498 dnl
1499 AC_ARG_ENABLE([gallium-g3dvl],
1500 [AS_HELP_STRING([--enable-gallium-g3dvl],
1501 [build gallium g3dvl @<:@default=disabled@:>@])],
1502 [enable_gallium_g3dvl="$enableval"],
1503 [enable_gallium_g3dvl=no])
1504 if test "x$enable_gallium_g3dvl" = xyes; then
1505 if test "x$with_gallium_drivers" = x; then
1506 AC_MSG_ERROR([cannot enable G3DVL without Gallium])
1507 fi
1508
1509 if test "x$enable_xvmc" = xauto; then
1510 PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no])
1511 fi
1512
1513 if test "x$enable_vdpau" = xauto; then
1514 PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no])
1515 fi
1516
1517 if test "x$enable_va" = xauto; then
1518 #don't enable vaapi state tracker even if package exists
1519 #PKG_CHECK_EXISTS([libva], [enable_vdpau=yes], [enable_vdpau=no])
1520 enable_va=no
1521 fi
1522 fi
1523
1524 if test "x$enable_xvmc" = xyes; then
1525 PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6 xorg-server])
1526 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg/xvmc"
1527 HAVE_ST_XVMC="yes"
1528 fi
1529
1530 if test "x$enable_vdpau" = xyes; then
1531 PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.4.1])
1532 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau"
1533 HAVE_ST_VDPAU="yes"
1534 fi
1535
1536 if test "x$enable_va" = xyes; then
1537 PKG_CHECK_MODULES([LIBVA], [libva = 0.31.1])
1538 AC_MSG_WARN([vaapi state tracker currently unmaintained])
1539 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS va"
1540 HAVE_ST_VA="yes"
1541 fi
1542
1543 dnl
1544 dnl GLU configuration
1545 dnl
1546 AC_ARG_ENABLE([glu],
1547 [AS_HELP_STRING([--disable-glu],
1548 [enable OpenGL Utility library @<:@default=enabled@:>@])],
1549 [enable_glu="$enableval"],
1550 [enable_glu=yes])
1551
1552 if test "x$enable_glu" = xyes; then
1553 if test "x$enable_glx" = xno -a "x$enable_osmesa" = xno; then
1554 AC_MSG_NOTICE([Disabling GLU since there is no OpenGL driver])
1555 enable_glu=no
1556 fi
1557 fi
1558
1559 if test "x$enable_glu" = xyes; then
1560 SRC_DIRS="$SRC_DIRS glu"
1561
1562 if test "x$enable_glx" = xno; then
1563 # Link libGLU to libOSMesa instead of libGL
1564 GLU_LIB_DEPS=""
1565 GLU_PC_REQ="osmesa"
1566 if test "$enable_static" = no; then
1567 GLU_MESA_DEPS='-l$(OSMESA_LIB)'
1568 else
1569 GLU_MESA_DEPS=""
1570 fi
1571 else
1572 # If static, empty GLU_LIB_DEPS and add libs for programs to link
1573 GLU_PC_REQ="gl"
1574 GLU_PC_LIB_PRIV="-lm"
1575 if test "$enable_static" = no; then
1576 GLU_LIB_DEPS="-lm"
1577 GLU_MESA_DEPS='-l$(GL_LIB)'
1578 else
1579 GLU_LIB_DEPS=""
1580 GLU_MESA_DEPS=""
1581 APP_LIB_DEPS="$APP_LIB_DEPS -lstdc++"
1582 fi
1583 fi
1584 fi
1585 if test "$enable_static" = no; then
1586 GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
1587 fi
1588 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
1589 AC_SUBST([GLU_LIB_DEPS])
1590 AC_SUBST([GLU_MESA_DEPS])
1591 AC_SUBST([GLU_PC_REQ])
1592 AC_SUBST([GLU_PC_REQ_PRIV])
1593 AC_SUBST([GLU_PC_LIB_PRIV])
1594 AC_SUBST([GLU_PC_CFLAGS])
1595
1596 dnl
1597 dnl Program library dependencies
1598 dnl Only libm is added here if necessary as the libraries should
1599 dnl be pulled in by the linker
1600 dnl
1601 if test "x$APP_LIB_DEPS" = x; then
1602 case "$host_os" in
1603 solaris*)
1604 APP_LIB_DEPS="-lX11 -lsocket -lnsl -lm"
1605 ;;
1606 cygwin*)
1607 APP_LIB_DEPS="-lX11"
1608 ;;
1609 *)
1610 APP_LIB_DEPS="-lm"
1611 ;;
1612 esac
1613 fi
1614 AC_SUBST([APP_LIB_DEPS])
1615 AC_SUBST([PROGRAM_DIRS])
1616
1617 dnl
1618 dnl Gallium configuration
1619 dnl
1620 if test "x$with_gallium_drivers" != x; then
1621 SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
1622 fi
1623
1624 AC_SUBST([LLVM_CFLAGS])
1625 AC_SUBST([LLVM_LIBS])
1626 AC_SUBST([LLVM_LDFLAGS])
1627 AC_SUBST([LLVM_VERSION])
1628
1629 case "x$enable_opengl$enable_gles1$enable_gles2" in
1630 x*yes*)
1631 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1632 ;;
1633 esac
1634
1635 AC_SUBST([VG_LIB_DEPS])
1636 AC_SUBST([EGL_CLIENT_APIS])
1637
1638 AC_ARG_WITH([egl-platforms],
1639 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1640 [comma delimited native platforms libEGL supports, e.g.
1641 "x11,drm" @<:@default=auto@:>@])],
1642 [with_egl_platforms="$withval"],
1643 [with_egl_platforms=yes])
1644
1645 EGL_PLATFORMS=""
1646 WAYLAND_EGL_LIB_DEPS=""
1647
1648 case "$with_egl_platforms" in
1649 yes)
1650 if test "x$enable_egl" = xyes; then
1651 EGL_PLATFORMS="x11"
1652 fi
1653 ;;
1654 *)
1655 if test "x$enable_egl" != xyes; then
1656 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1657 fi
1658 # verify the requested driver directories exist
1659 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1660 for plat in $egl_platforms; do
1661 test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \
1662 AC_MSG_ERROR([EGL platform '$plat' doesn't exist])
1663 if test "$plat" = "fbdev"; then
1664 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev"
1665 fi
1666 if test "$plat" = "wayland"; then
1667 PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-server],, \
1668 [AC_MSG_ERROR([cannot find libwayland-client])])
1669 WAYLAND_EGL_LIB_DEPS="$WAYLAND_LIBS $LIBDRM_LIBS"
1670 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
1671 fi
1672 if test "$plat" = "drm" && test "x$enable_gbm" = "xno"; then
1673 AC_MSG_ERROR([EGL platform drm needs gbm])
1674 fi
1675 case "$plat$have_libudev" in
1676 waylandno|drmno)
1677 AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;;
1678 esac
1679 done
1680 EGL_PLATFORMS="$egl_platforms"
1681 ;;
1682 esac
1683 AC_SUBST([EGL_PLATFORMS])
1684
1685 AC_SUBST([WAYLAND_EGL_LIB_DEPS])
1686 WAYLAND_EGL_PC_REQ_PRIV="wayland-client libdrm"
1687 WAYLAND_EGL_PC_LIB_PRIV=
1688 WAYLAND_EGL_PC_CFLAGS=
1689
1690 AC_SUBST([WAYLAND_EGL_PC_REQ_PRIV])
1691 AC_SUBST([WAYLAND_EGL_PC_LIB_PRIV])
1692 AC_SUBST([WAYLAND_EGL_PC_CFLAGS])
1693
1694
1695 AC_ARG_WITH([egl-driver-dir],
1696 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1697 [directory for EGL drivers [[default=${libdir}/egl]]])],
1698 [EGL_DRIVER_INSTALL_DIR="$withval"],
1699 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1700 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1701
1702 AC_ARG_WITH([xorg-driver-dir],
1703 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1704 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1705 [XORG_DRIVER_INSTALL_DIR="$withval"],
1706 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1707 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1708
1709 AC_ARG_WITH([max-width],
1710 [AS_HELP_STRING([--with-max-width=N],
1711 [Maximum framebuffer width (4096)])],
1712 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1713 AS_IF([test "${withval}" -gt "4096"],
1714 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1715 )
1716 AC_ARG_WITH([max-height],
1717 [AS_HELP_STRING([--with-max-height=N],
1718 [Maximum framebuffer height (4096)])],
1719 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1720 AS_IF([test "${withval}" -gt "4096"],
1721 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1722 )
1723
1724 dnl
1725 dnl Gallium LLVM
1726 dnl
1727 AC_ARG_ENABLE([gallium-llvm],
1728 [AS_HELP_STRING([--enable-gallium-llvm],
1729 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1730 [enable_gallium_llvm="$enableval"],
1731 [enable_gallium_llvm=auto])
1732 if test "x$with_gallium_drivers" = x; then
1733 enable_gallium_llvm=no
1734 fi
1735 if test "x$enable_gallium_llvm" = xauto; then
1736 case "$host_cpu" in
1737 i*86|x86_64) enable_gallium_llvm=yes;;
1738 esac
1739 fi
1740 if test "x$enable_gallium_llvm" = xyes; then
1741 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1742
1743 if test "x$LLVM_CONFIG" != xno; then
1744 LLVM_VERSION=`$LLVM_CONFIG --version`
1745 LLVM_CFLAGS=`$LLVM_CONFIG --cppflags|sed 's/-DNDEBUG\>//g'`
1746 LLVM_LIBS="`$LLVM_CONFIG --libs` -lstdc++"
1747
1748 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1749 DEFINES="$DEFINES -D__STDC_CONSTANT_MACROS"
1750 MESA_LLVM=1
1751 else
1752 MESA_LLVM=0
1753 fi
1754 else
1755 MESA_LLVM=0
1756 fi
1757
1758 dnl Directory for VDPAU libs
1759 AC_ARG_WITH([vdpau-libdir],
1760 [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1761 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1762 [VDPAU_LIB_INSTALL_DIR="$withval"],
1763 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1764 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
1765
1766 dnl Directory for VA libs
1767 AC_ARG_WITH([va-libdir],
1768 [AS_HELP_STRING([--with-va-libdir=DIR],
1769 [directory for the VA libraries @<:@default=${libdir}/va@:>@])],
1770 [VA_LIB_INSTALL_DIR="$withval"],
1771 [VA_LIB_INSTALL_DIR='${libdir}/va'])
1772 AC_SUBST([VA_LIB_INSTALL_DIR])
1773
1774 dnl
1775 dnl Gallium helper functions
1776 dnl
1777 gallium_check_st() {
1778 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes ||
1779 test "x$HAVE_ST_XA" = xyes || test "x$HAVE_ST_XVMC" = xyes ||
1780 test "x$HAVE_ST_VDPAU" = xyes || test "x$HAVE_ST_VA" = xyes; then
1781 if test "x$have_libdrm" != xyes; then
1782 AC_MSG_ERROR([DRI or Xorg DDX requires libdrm >= $LIBDRM_REQUIRED])
1783 fi
1784 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1785 fi
1786 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1787 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1788 fi
1789 if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
1790 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1791 fi
1792 if test "x$HAVE_ST_XA" = xyes && test "x$4" != x; then
1793 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
1794 fi
1795 if test "x$HAVE_ST_XVMC" = xyes && test "x$5" != x; then
1796 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5"
1797 NEED_G3DVL_DRI="yes"
1798 fi
1799 if test "x$HAVE_ST_VDPAU" = xyes && test "x$6" != x; then
1800 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6"
1801 NEED_G3DVL_DRI="yes"
1802 fi
1803 if test "x$HAVE_ST_VA" = xyes && test "x$7" != x; then
1804 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $7"
1805 NEED_G3DVL_DRI="yes"
1806 fi
1807 }
1808
1809 gallium_require_llvm() {
1810 if test "x$MESA_LLVM" = x0; then
1811 case "$host_cpu" in
1812 i*86|x86_64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1813 esac
1814 fi
1815 }
1816
1817 dnl Gallium drivers
1818 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
1819 if test "x$with_gallium_drivers" != x; then
1820 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1821 for driver in $gallium_drivers; do
1822 case "x$driver" in
1823 xsvga)
1824 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
1825 gallium_check_st "svga/drm" "dri-vmwgfx" "xorg-vmwgfx" "xa-vmwgfx"
1826 ;;
1827 xi915)
1828 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1829 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe"
1830 if test "x$MESA_LLVM" = x1; then
1831 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1832 fi
1833 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1834 gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1835 ;;
1836 xi965)
1837 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1838 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i965 softpipe"
1839 if test "x$MESA_LLVM" = x1; then
1840 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1841 fi
1842 gallium_check_st "i965/drm" "dri-i965" "xorg-i965"
1843 ;;
1844 xr300)
1845 gallium_require_llvm "Gallium R300"
1846 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1847 gallium_check_st "radeon/drm" "dri-r300" "xorg-r300" "" "xvmc-r300" "vdpau-r300" "va-r300"
1848 ;;
1849 xr600)
1850 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1851 gallium_check_st "r600/drm radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600" "va-r600"
1852 ;;
1853 xnouveau)
1854 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1855 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50 nvc0"
1856 gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau" "" "xvmc-nouveau"
1857 ;;
1858 xswrast)
1859 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe"
1860 if test "x$MESA_LLVM" = x1; then
1861 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1862 fi
1863
1864 if test "x$HAVE_ST_DRI" = xyes; then
1865 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1866 fi
1867 if test "x$HAVE_ST_VDPAU" = xyes; then
1868 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS vdpau-softpipe"
1869 fi
1870 if test "x$HAVE_ST_XVMC" = xyes; then
1871 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS xvmc-softpipe"
1872 fi
1873 if test "x$HAVE_ST_VA" = xyes; then
1874 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS va-softpipe"
1875 fi
1876 if test "x$HAVE_ST_VDPAU" == xyes ||
1877 test "x$HAVE_ST_XVMC" == xyes ||
1878 test "x$HAVE_ST_VA" == xyes; then
1879 if test "x$HAVE_WINSYS_XLIB" != xyes; then
1880 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
1881 fi
1882 fi
1883 ;;
1884 *)
1885 AC_MSG_ERROR([Unknown Gallium driver: $driver])
1886 ;;
1887 esac
1888 done
1889 fi
1890
1891 if test "x$NEED_G3DVL_DRI" = xyes; then
1892 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS g3dvl/dri"
1893 fi
1894
1895 dnl prepend CORE_DIRS to SRC_DIRS
1896 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
1897
1898 dnl Restore LDFLAGS and CPPFLAGS
1899 LDFLAGS="$_SAVE_LDFLAGS"
1900 CPPFLAGS="$_SAVE_CPPFLAGS"
1901
1902 dnl Add user CFLAGS and CXXFLAGS
1903 CFLAGS="$CFLAGS $USER_CFLAGS"
1904 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
1905
1906 dnl Substitute the config
1907 AC_CONFIG_FILES([configs/autoconf])
1908
1909 dnl Replace the configs/current symlink
1910 AC_CONFIG_COMMANDS([configs],[
1911 if test -f configs/current || test -L configs/current; then
1912 rm -f configs/current
1913 fi
1914 ln -s autoconf configs/current
1915 ])
1916
1917 dnl Sort the dirs alphabetically
1918 GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort|tr "\n" " "`
1919 GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort|tr "\n" " "`
1920 GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort|tr "\n" " "`
1921 GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort|tr "\n" " "`
1922
1923 AC_OUTPUT
1924
1925 dnl
1926 dnl Output some configuration info for the user
1927 dnl
1928 echo ""
1929 echo " prefix: $prefix"
1930 echo " exec_prefix: $exec_prefix"
1931 echo " libdir: $libdir"
1932 echo " includedir: $includedir"
1933
1934 dnl API info
1935 echo ""
1936 echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
1937 echo " OpenVG: $enable_openvg"
1938
1939 dnl Driver info
1940 echo ""
1941 if test "x$enable_osmesa" != xno; then
1942 echo " OSMesa: lib$OSMESA_LIB"
1943 else
1944 echo " OSMesa: no"
1945 fi
1946
1947 if test "x$enable_dri" != xno; then
1948 # cleanup the drivers var
1949 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
1950 if test "x$DRI_DIRS" = x; then
1951 echo " DRI drivers: no"
1952 else
1953 echo " DRI drivers: $dri_dirs"
1954 fi
1955 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
1956 echo " Shared dricore: $enable_dricore"
1957 fi
1958
1959 case "x$enable_glx$enable_xlib_glx" in
1960 xyesyes)
1961 echo " GLX: Xlib-based"
1962 ;;
1963 xyesno)
1964 echo " GLX: DRI-based"
1965 echo " Use XCB: $enable_xcb"
1966 ;;
1967 *)
1968 echo " GLX: $enable_glx"
1969 ;;
1970 esac
1971
1972 echo ""
1973 echo " GLU: $enable_glu"
1974
1975 dnl EGL
1976 echo ""
1977 echo " EGL: $enable_egl"
1978 if test "$enable_egl" = yes; then
1979 echo " EGL platforms: $EGL_PLATFORMS"
1980
1981 egl_drivers=""
1982 for d in $EGL_DRIVERS_DIRS; do
1983 egl_drivers="$egl_drivers builtin:egl_$d"
1984 done
1985
1986 if test "x$HAVE_ST_EGL" = xyes; then
1987 echo " EGL drivers: ${egl_drivers} egl_gallium"
1988 echo " EGL Gallium STs:$EGL_CLIENT_APIS"
1989 else
1990 echo " EGL drivers: $egl_drivers"
1991 fi
1992 fi
1993
1994 echo ""
1995 if test "x$MESA_LLVM" = x1; then
1996 echo " llvm: yes"
1997 echo " llvm-config: $LLVM_CONFIG"
1998 echo " llvm-version: $LLVM_VERSION"
1999 else
2000 echo " llvm: no"
2001 fi
2002
2003 echo ""
2004 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
2005 echo " Gallium: yes"
2006 echo " Gallium dirs: $GALLIUM_DIRS"
2007 echo " Target dirs: $GALLIUM_TARGET_DIRS"
2008 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
2009 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
2010 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
2011 else
2012 echo " Gallium: no"
2013 fi
2014
2015 dnl Libraries
2016 echo ""
2017 echo " Shared libs: $enable_shared"
2018 echo " Static libs: $enable_static"
2019
2020 dnl Compiler options
2021 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2022 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2023 $SED 's/^ *//;s/ */ /;s/ *$//'`
2024 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2025 $SED 's/^ *//;s/ */ /;s/ *$//'`
2026 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'`
2027 echo ""
2028 echo " CFLAGS: $cflags"
2029 echo " CXXFLAGS: $cxxflags"
2030 echo " Macros: $defines"
2031 echo ""
2032 echo " PYTHON2: $PYTHON2"
2033
2034 echo ""
2035 echo " Run '${MAKE-make}' to build Mesa"
2036 echo ""