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