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