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