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