i965: Skip _mesa_load_state_parameters when there are zero parameters.
[mesa.git] / configure.ac
1 dnl Process this file with autoconf to create configure.
2
3 AC_PREREQ([2.60])
4
5 dnl Tell the user about autoconf.html in the --help output
6 m4_divert_once([HELP_END], [
7 See docs/autoconf.html for more details on the options for Mesa.])
8
9 m4_define(MESA_VERSION, m4_normalize(m4_include(VERSION)))
10 AC_INIT([Mesa], [MESA_VERSION],
11 [https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa])
12 AC_CONFIG_AUX_DIR([bin])
13 AC_CONFIG_MACRO_DIR([m4])
14 AC_CANONICAL_SYSTEM
15 AM_INIT_AUTOMAKE([foreign])
16
17 # Support silent build rules, requires at least automake-1.11. Disable
18 # by either passing --disable-silent-rules to configure or passing V=1
19 # to make
20 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])],
21 [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])])
22
23 m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
24
25 dnl Set internal versions
26 OSMESA_VERSION=8
27 AC_SUBST([OSMESA_VERSION])
28
29 dnl Versions for external dependencies
30 LIBDRM_REQUIRED=2.4.38
31 LIBDRM_RADEON_REQUIRED=2.4.56
32 LIBDRM_INTEL_REQUIRED=2.4.52
33 LIBDRM_NVVIEUX_REQUIRED=2.4.33
34 LIBDRM_NOUVEAU_REQUIRED="2.4.33 libdrm >= 2.4.41"
35 LIBDRM_FREEDRENO_REQUIRED=2.4.57
36 DRI2PROTO_REQUIRED=2.6
37 DRI3PROTO_REQUIRED=1.0
38 PRESENTPROTO_REQUIRED=1.0
39 LIBUDEV_REQUIRED=151
40 GLPROTO_REQUIRED=1.4.14
41 LIBOMXIL_BELLAGIO_REQUIRED=0.0
42 VDPAU_REQUIRED=0.4.1
43 WAYLAND_REQUIRED=1.2.0
44 XCB_REQUIRED=1.9.3
45 XCBDRI2_REQUIRED=1.8
46 XCBGLX_REQUIRED=1.8.1
47 XSHMFENCE_REQUIRED=1.1
48 XVMC_REQUIRED=1.0.6
49
50 dnl Check for progs
51 AC_PROG_CPP
52 AC_PROG_CC
53 AC_PROG_CXX
54 AM_PROG_CC_C_O
55 AM_PROG_AS
56 AX_CHECK_GNU_MAKE
57 AC_CHECK_PROGS([PYTHON2], [python2 python])
58 AC_PROG_SED
59 AC_PROG_MKDIR_P
60
61 AC_SYS_LARGEFILE
62
63 LT_PREREQ([2.2])
64 LT_INIT([disable-static])
65
66 AX_PROG_BISON([],
67 AS_IF([test ! -f "$srcdir/src/glsl/glcpp/glcpp-parse.c"],
68 [AC_MSG_ERROR([bison not found - unable to compile glcpp-parse.y])]))
69 AX_PROG_FLEX([],
70 AS_IF([test ! -f "$srcdir/src/glsl/glcpp/glcpp-lex.c"],
71 [AC_MSG_ERROR([flex not found - unable to compile glcpp-lex.l])]))
72
73 AC_CHECK_PROG(INDENT, indent, indent, cat)
74 if test "x$INDENT" != "xcat"; then
75 AC_SUBST(INDENT_FLAGS, '-i4 -nut -br -brs -npcs -ce -TGLubyte -TGLbyte -TBool')
76 fi
77
78 AC_PROG_INSTALL
79
80 dnl We need a POSIX shell for parts of the build. Assume we have one
81 dnl in most cases.
82 case "$host_os" in
83 solaris*)
84 # Solaris /bin/sh is too old/non-POSIX compliant
85 AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
86 SHELL="$POSIX_SHELL"
87 ;;
88 esac
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 [acv_mesa_CLANG=yes], [acv_mesa_CLANG=no])
101
102 AC_MSG_RESULT([$acv_mesa_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 GEN_ASM_OFFSETS=no
107 if test "x$GCC" = xyes -a "x$acv_mesa_CLANG" = xno; then
108 AC_MSG_CHECKING([whether gcc version is sufficient])
109 major=0
110 minor=0
111
112 GCC_VERSION=`$CC -dumpversion`
113 if test $? -eq 0; then
114 GCC_VERSION_MAJOR=`echo $GCC_VERSION | cut -d. -f1`
115 GCC_VERSION_MINOR=`echo $GCC_VERSION | cut -d. -f2`
116 fi
117
118 if test $GCC_VERSION_MAJOR -lt 3 -o $GCC_VERSION_MAJOR -eq 3 -a $GCC_VERSION_MINOR -lt 3 ; then
119 AC_MSG_RESULT([no])
120 AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.])
121 else
122 AC_MSG_RESULT([yes])
123 fi
124
125 if test "x$cross_compiling" = xyes; then
126 GEN_ASM_OFFSETS=yes
127 fi
128 fi
129
130 dnl Check for compiler builtins
131 AX_GCC_BUILTIN([__builtin_bswap32])
132 AX_GCC_BUILTIN([__builtin_bswap64])
133 AX_GCC_BUILTIN([__builtin_clz])
134 AX_GCC_BUILTIN([__builtin_clzll])
135 AX_GCC_BUILTIN([__builtin_ctz])
136 AX_GCC_BUILTIN([__builtin_expect])
137 AX_GCC_BUILTIN([__builtin_ffs])
138 AX_GCC_BUILTIN([__builtin_ffsll])
139 AX_GCC_BUILTIN([__builtin_popcount])
140 AX_GCC_BUILTIN([__builtin_popcountll])
141 AX_GCC_BUILTIN([__builtin_unreachable])
142
143 AX_GCC_FUNC_ATTRIBUTE([flatten])
144 AX_GCC_FUNC_ATTRIBUTE([format])
145 AX_GCC_FUNC_ATTRIBUTE([malloc])
146 AX_GCC_FUNC_ATTRIBUTE([packed])
147
148 AM_CONDITIONAL([GEN_ASM_OFFSETS], test "x$GEN_ASM_OFFSETS" = xyes)
149
150 dnl Make sure the pkg-config macros are defined
151 m4_ifndef([PKG_PROG_PKG_CONFIG],
152 [m4_fatal([Could not locate the pkg-config autoconf macros.
153 These are usually located in /usr/share/aclocal/pkg.m4. If your macros
154 are in a different location, try setting the environment variable
155 ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
156 PKG_PROG_PKG_CONFIG()
157
158 dnl LIB_DIR - library basename
159 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
160 AC_SUBST([LIB_DIR])
161
162 dnl Cache LDFLAGS and CPPFLAGS so we can add to them and restore later
163 _SAVE_LDFLAGS="$LDFLAGS"
164 _SAVE_CPPFLAGS="$CPPFLAGS"
165
166 dnl Compiler macros
167 DEFINES="-DUSE_EXTERNAL_DXTN_LIB=1"
168 AC_SUBST([DEFINES])
169 case "$host_os" in
170 linux*|*-gnu*|gnu*)
171 DEFINES="$DEFINES -D_GNU_SOURCE"
172 ;;
173 solaris*)
174 DEFINES="$DEFINES -DSVR4"
175 ;;
176 cygwin*)
177 DEFINES="$DEFINES -D_XOPEN_SOURCE=700"
178 ;;
179 esac
180
181 dnl Add flags for gcc and g++
182 if test "x$GCC" = xyes; then
183 CFLAGS="$CFLAGS -Wall -std=c99"
184
185 # Enable -Werror=implicit-function-declaration and
186 # -Werror=missing-prototypes, if available, or otherwise, just
187 # -Wmissing-prototypes. This is particularly useful to avoid
188 # generating a loadable driver module that has undefined symbols.
189 save_CFLAGS="$CFLAGS"
190 AC_MSG_CHECKING([whether $CC supports -Werror=missing-prototypes])
191 CFLAGS="$CFLAGS -Werror=implicit-function-declaration"
192 CFLAGS="$CFLAGS -Werror=missing-prototypes"
193 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
194 AC_MSG_RESULT([yes]),
195 [CFLAGS="$save_CFLAGS -Wmissing-prototypes";
196 AC_MSG_RESULT([no])]);
197
198 # Enable -fvisibility=hidden if using a gcc that supports it
199 save_CFLAGS="$CFLAGS"
200 AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
201 VISIBILITY_CFLAGS="-fvisibility=hidden"
202 CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
203 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
204 [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
205
206 # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
207 CFLAGS=$save_CFLAGS
208
209 # Work around aliasing bugs - developers should comment this out
210 CFLAGS="$CFLAGS -fno-strict-aliasing"
211
212 # gcc's builtin memcmp is slower than glibc's
213 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
214 CFLAGS="$CFLAGS -fno-builtin-memcmp"
215 fi
216 if test "x$GXX" = xyes; then
217 CXXFLAGS="$CXXFLAGS -Wall"
218
219 # Enable -fvisibility=hidden if using a gcc that supports it
220 save_CXXFLAGS="$CXXFLAGS"
221 AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
222 VISIBILITY_CXXFLAGS="-fvisibility=hidden"
223 CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
224 AC_LANG_PUSH([C++])
225 AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
226 [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
227 AC_LANG_POP([C++])
228
229 # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
230 CXXFLAGS=$save_CXXFLAGS
231
232 # Work around aliasing bugs - developers should comment this out
233 CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
234
235 # gcc's builtin memcmp is slower than glibc's
236 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
237 CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp"
238 fi
239
240 dnl even if the compiler appears to support it, using visibility attributes isn't
241 dnl going to do anything useful currently on cygwin apart from emit lots of warnings
242 case "$host_os" in
243 cygwin*)
244 VISIBILITY_CFLAGS=""
245 VISIBILITY_CXXFLAGS=""
246 ;;
247 esac
248
249 AC_SUBST([VISIBILITY_CFLAGS])
250 AC_SUBST([VISIBILITY_CXXFLAGS])
251
252 dnl
253 dnl Optional flags, check for compiler support
254 dnl
255 save_CFLAGS="$CFLAGS"
256 CFLAGS="-msse4.1 $CFLAGS"
257 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
258 #include <smmintrin.h>
259 int main () {
260 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
261 c = _mm_max_epu32(a, b);
262 return 0;
263 }]])], SSE41_SUPPORTED=1)
264 CFLAGS="$save_CFLAGS"
265 if test "x$SSE41_SUPPORTED" = x1; then
266 DEFINES="$DEFINES -DUSE_SSE41"
267 fi
268 AM_CONDITIONAL([SSE41_SUPPORTED], [test x$SSE41_SUPPORTED = x1])
269
270 dnl Can't have static and shared libraries, default to static if user
271 dnl explicitly requested. If both disabled, set to static since shared
272 dnl was explicitly requested.
273 case "x$enable_static$enable_shared" in
274 xyesyes)
275 AC_MSG_WARN([Cannot build static and shared libraries, disabling shared])
276 enable_shared=no
277 ;;
278 xnono)
279 AC_MSG_WARN([Cannot disable both static and shared libraries, enabling shared])
280 enable_shared=yes
281 ;;
282 esac
283
284 AM_CONDITIONAL(BUILD_SHARED, test "x$enable_shared" = xyes)
285
286 dnl
287 dnl other compiler options
288 dnl
289 AC_ARG_ENABLE([debug],
290 [AS_HELP_STRING([--enable-debug],
291 [use debug compiler flags and macros @<:@default=disabled@:>@])],
292 [enable_debug="$enableval"],
293 [enable_debug=no]
294 )
295 if test "x$enable_debug" = xyes; then
296 DEFINES="$DEFINES -DDEBUG"
297 if test "x$GCC" = xyes; then
298 if ! echo "$CFLAGS" | grep -q -e '-g'; then
299 CFLAGS="$CFLAGS -g"
300 fi
301 if ! echo "$CFLAGS" | grep -q -e '-O'; then
302 CFLAGS="$CFLAGS -O0"
303 fi
304 fi
305 if test "x$GXX" = xyes; then
306 if ! echo "$CXXFLAGS" | grep -q -e '-g'; then
307 CXXFLAGS="$CXXFLAGS -g"
308 fi
309 if ! echo "$CXXFLAGS" | grep -q -e '-O'; then
310 CXXFLAGS="$CXXFLAGS -O0"
311 fi
312 fi
313 fi
314
315 dnl
316 dnl Check if linker supports -Bsymbolic
317 dnl
318 save_LDFLAGS=$LDFLAGS
319 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic"
320 AC_MSG_CHECKING([if ld supports -Bsymbolic])
321 AC_LINK_IFELSE(
322 [AC_LANG_SOURCE([int main() { return 0;}])],
323 [AC_MSG_RESULT([yes])
324 BSYMBOLIC="-Wl,-Bsymbolic";],
325 [AC_MSG_RESULT([no])
326 BSYMBOLIC="";])
327 LDFLAGS=$save_LDFLAGS
328
329 AC_SUBST([BSYMBOLIC])
330
331 dnl
332 dnl Check if linker supports garbage collection
333 dnl
334 save_LDFLAGS=$LDFLAGS
335 LDFLAGS="$LDFLAGS -Wl,--gc-sections"
336 AC_MSG_CHECKING([whether ld supports --gc-sections])
337 AC_LINK_IFELSE(
338 [AC_LANG_SOURCE([static char UnusedFunc() { return 5; } int main() { return 0;}])],
339 [AC_MSG_RESULT([yes])
340 GC_SECTIONS="-Wl,--gc-sections";],
341 [AC_MSG_RESULT([no])
342 GC_SECTIONS="";])
343 LDFLAGS=$save_LDFLAGS
344
345 AC_SUBST([GC_SECTIONS])
346
347 dnl
348 dnl OpenBSD does not have DT_NEEDED entries for libc by design
349 dnl so when these flags are passed to ld via libtool the checks will fail
350 dnl
351 case "$host_os" in
352 openbsd* | darwin* )
353 LD_NO_UNDEFINED="" ;;
354 *)
355 LD_NO_UNDEFINED="-Wl,--no-undefined" ;;
356 esac
357
358 AC_SUBST([LD_NO_UNDEFINED])
359
360 dnl
361 dnl Check if linker supports version scripts
362 dnl
363 AC_MSG_CHECKING([if the linker supports version-scripts])
364 save_LDFLAGS=$LDFLAGS
365 LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map"
366 cat > conftest.map <<EOF
367 VERSION_1 {
368 global:
369 main;
370
371 local:
372 *;
373 };
374 EOF
375 AC_LINK_IFELSE(
376 [AC_LANG_SOURCE([int main() { return 0;}])],
377 [have_ld_version_script=yes;AC_MSG_RESULT(yes)],
378 [have_ld_version_script=no; AC_MSG_RESULT(no)])
379 LDFLAGS=$save_LDFLAGS
380 AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes")
381
382 dnl
383 dnl Check if linker supports dynamic list files
384 dnl
385 AC_MSG_CHECKING([if the linker supports --dynamic-list])
386 save_LDFLAGS=$LDFLAGS
387 LDFLAGS="$LDFLAGS -Wl,--dynamic-list=conftest.dyn"
388 cat > conftest.dyn <<EOF
389 {
390 radeon_drm_winsys_create;
391 };
392 EOF
393 AC_LINK_IFELSE(
394 [AC_LANG_SOURCE([int main() { return 0;}])],
395 [have_ld_dynamic_list=yes;AC_MSG_RESULT(yes)],
396 [have_ld_dynamic_list=no; AC_MSG_RESULT(no)])
397 LDFLAGS=$save_LDFLAGS
398 AM_CONDITIONAL(HAVE_LD_DYNAMIC_LIST, test "$have_ld_dynamic_list" = "yes")
399
400 dnl
401 dnl compatibility symlinks
402 dnl
403 case "$host_os" in
404 linux* )
405 HAVE_COMPAT_SYMLINKS=yes ;;
406 * )
407 HAVE_COMPAT_SYMLINKS=no ;;
408 esac
409
410 AM_CONDITIONAL(HAVE_COMPAT_SYMLINKS, test "x$HAVE_COMPAT_SYMLINKS" = xyes)
411
412 dnl
413 dnl library names
414 dnl
415 case "$host_os" in
416 darwin* )
417 LIB_EXT='dylib' ;;
418 cygwin* )
419 LIB_EXT='dll' ;;
420 aix* )
421 LIB_EXT='a' ;;
422 * )
423 LIB_EXT='so' ;;
424 esac
425
426 AC_SUBST([LIB_EXT])
427
428 AC_ARG_WITH([gl-lib-name],
429 [AS_HELP_STRING([--with-gl-lib-name@<:@=NAME@:>@],
430 [specify GL library name @<:@default=GL@:>@])],
431 [GL_LIB=$withval],
432 [GL_LIB=GL])
433 AC_ARG_WITH([osmesa-lib-name],
434 [AS_HELP_STRING([--with-osmesa-lib-name@<:@=NAME@:>@],
435 [specify OSMesa library name @<:@default=OSMesa@:>@])],
436 [OSMESA_LIB=$withval],
437 [OSMESA_LIB=OSMesa])
438 AS_IF([test "x$GL_LIB" = xyes], [GL_LIB=GL])
439 AS_IF([test "x$OSMESA_LIB" = xyes], [OSMESA_LIB=OSMesa])
440
441 dnl
442 dnl Mangled Mesa support
443 dnl
444 AC_ARG_ENABLE([mangling],
445 [AS_HELP_STRING([--enable-mangling],
446 [enable mangled symbols and library name @<:@default=disabled@:>@])],
447 [enable_mangling="${enableval}"],
448 [enable_mangling=no]
449 )
450 if test "x${enable_mangling}" = "xyes" ; then
451 DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
452 GL_LIB="Mangled${GL_LIB}"
453 OSMESA_LIB="Mangled${OSMESA_LIB}"
454 fi
455 AC_SUBST([GL_LIB])
456 AC_SUBST([OSMESA_LIB])
457
458 dnl
459 dnl potentially-infringing-but-nobody-knows-for-sure stuff
460 dnl
461 AC_ARG_ENABLE([texture-float],
462 [AS_HELP_STRING([--enable-texture-float],
463 [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])],
464 [enable_texture_float="$enableval"],
465 [enable_texture_float=no]
466 )
467 if test "x$enable_texture_float" = xyes; then
468 AC_MSG_WARN([Floating-point textures enabled.])
469 AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.])
470 DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED"
471 fi
472
473 dnl
474 dnl Arch/platform-specific settings
475 dnl
476 AC_ARG_ENABLE([asm],
477 [AS_HELP_STRING([--disable-asm],
478 [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
479 [enable_asm="$enableval"],
480 [enable_asm=yes]
481 )
482 asm_arch=""
483 AC_MSG_CHECKING([whether to enable assembly])
484 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
485 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
486 if test "x$enable_asm" = xyes -a "x$cross_compiling" = xyes; then
487 case "$host_cpu" in
488 i?86 | x86_64 | amd64)
489 enable_asm=no
490 AC_MSG_RESULT([no, cross compiling])
491 ;;
492 esac
493 fi
494 # check for supported arches
495 if test "x$enable_asm" = xyes; then
496 case "$host_cpu" in
497 i?86)
498 case "$host_os" in
499 linux* | *freebsd* | dragonfly* | *netbsd* | openbsd* | gnu*)
500 asm_arch=x86
501 ;;
502 esac
503 ;;
504 x86_64|amd64)
505 case "$host_os" in
506 linux* | *freebsd* | dragonfly* | *netbsd* | openbsd*)
507 asm_arch=x86_64
508 ;;
509 esac
510 ;;
511 sparc*)
512 case "$host_os" in
513 linux*)
514 asm_arch=sparc
515 ;;
516 esac
517 ;;
518 esac
519
520 case "$asm_arch" in
521 x86)
522 DEFINES="$DEFINES -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
523 AC_MSG_RESULT([yes, x86])
524 ;;
525 x86_64|amd64)
526 DEFINES="$DEFINES -DUSE_X86_64_ASM"
527 AC_MSG_RESULT([yes, x86_64])
528 ;;
529 sparc)
530 DEFINES="$DEFINES -DUSE_SPARC_ASM"
531 AC_MSG_RESULT([yes, sparc])
532 ;;
533 *)
534 AC_MSG_RESULT([no, platform not supported])
535 ;;
536 esac
537 fi
538
539 AC_CHECK_HEADER([xlocale.h], [DEFINES="$DEFINES -DHAVE_XLOCALE_H"])
540 AC_CHECK_FUNC([strtof], [DEFINES="$DEFINES -DHAVE_STRTOF"])
541
542 dnl Check to see if dlopen is in default libraries (like Solaris, which
543 dnl has it in libc), or if libdl is needed to get it.
544 AC_CHECK_FUNC([dlopen], [DEFINES="$DEFINES -DHAVE_DLOPEN"],
545 [AC_CHECK_LIB([dl], [dlopen],
546 [DEFINES="$DEFINES -DHAVE_DLOPEN"; DLOPEN_LIBS="-ldl"])])
547 AC_SUBST([DLOPEN_LIBS])
548
549 dnl Check if that library also has dladdr
550 save_LIBS="$LIBS"
551 LIBS="$LIBS $DLOPEN_LIBS"
552 AC_CHECK_FUNCS([dladdr])
553 LIBS="$save_LIBS"
554
555 case "$host_os" in
556 darwin*|mingw*)
557 ;;
558 *)
559 AC_CHECK_FUNCS([clock_gettime], [CLOCK_LIB=],
560 [AC_CHECK_LIB([rt], [clock_gettime], [CLOCK_LIB=-lrt],
561 [AC_MSG_ERROR([Could not find clock_gettime])])])
562 AC_SUBST([CLOCK_LIB])
563 ;;
564 esac
565
566 dnl See if posix_memalign is available
567 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
568
569 dnl Check for pthreads
570 case "$host_os" in
571 mingw*)
572 ;;
573 *)
574 AX_PTHREAD
575 ;;
576 esac
577 dnl AX_PTHREADS leaves PTHREAD_LIBS empty for gcc and sets PTHREAD_CFLAGS
578 dnl to -pthread, which causes problems if we need -lpthread to appear in
579 dnl pkgconfig files.
580 test -z "$PTHREAD_LIBS" && PTHREAD_LIBS="-lpthread"
581
582 dnl SELinux awareness.
583 AC_ARG_ENABLE([selinux],
584 [AS_HELP_STRING([--enable-selinux],
585 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
586 [MESA_SELINUX="$enableval"],
587 [MESA_SELINUX=no])
588 if test "x$enable_selinux" = "xyes"; then
589 PKG_CHECK_MODULES([SELINUX], [libselinux], [],
590 [AC_CHECK_HEADER([selinux/selinux.h],[],
591 [AC_MSG_ERROR([SELinux headers not found])])
592 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
593 [AC_MSG_ERROR([SELinux library not found])])
594 SELINUX_LIBS="-lselinux"])
595 DEFINES="$DEFINES -DMESA_SELINUX"
596 fi
597 AC_SUBST([SELINUX_CFLAGS])
598 AC_SUBST([SELINUX_LIBS])
599
600 dnl Options for APIs
601 AC_ARG_ENABLE([opengl],
602 [AS_HELP_STRING([--disable-opengl],
603 [disable support for standard OpenGL API @<:@default=enabled@:>@])],
604 [enable_opengl="$enableval"],
605 [enable_opengl=yes])
606 AC_ARG_ENABLE([gles1],
607 [AS_HELP_STRING([--enable-gles1],
608 [enable support for OpenGL ES 1.x API @<:@default=disabled@:>@])],
609 [enable_gles1="$enableval"],
610 [enable_gles1=no])
611 AC_ARG_ENABLE([gles2],
612 [AS_HELP_STRING([--enable-gles2],
613 [enable support for OpenGL ES 2.x API @<:@default=disabled@:>@])],
614 [enable_gles2="$enableval"],
615 [enable_gles2=no])
616 AC_ARG_ENABLE([openvg],
617 [AS_HELP_STRING([--enable-openvg],
618 [enable support for OpenVG API @<:@default=disabled@:>@])],
619 [enable_openvg="$enableval"],
620 [enable_openvg=no])
621
622 AC_ARG_ENABLE([dri],
623 [AS_HELP_STRING([--enable-dri],
624 [enable DRI modules @<:@default=enabled@:>@])],
625 [enable_dri="$enableval"],
626 [enable_dri=yes])
627
628 case "$host_os" in
629 linux*)
630 dri3_default=yes
631 ;;
632 *)
633 dri3_default=no
634 ;;
635 esac
636 AC_ARG_ENABLE([dri3],
637 [AS_HELP_STRING([--enable-dri3],
638 [enable DRI3 @<:@default=auto@:>@])],
639 [enable_dri3="$enableval"],
640 [enable_dri3="$dri3_default"])
641 AC_ARG_ENABLE([glx],
642 [AS_HELP_STRING([--enable-glx],
643 [enable GLX library @<:@default=enabled@:>@])],
644 [enable_glx="$enableval"],
645 [enable_glx=yes])
646 AC_ARG_ENABLE([osmesa],
647 [AS_HELP_STRING([--enable-osmesa],
648 [enable OSMesa library @<:@default=disabled@:>@])],
649 [enable_osmesa="$enableval"],
650 [enable_osmesa=no])
651 AC_ARG_ENABLE([gallium-osmesa],
652 [AS_HELP_STRING([--enable-gallium-osmesa],
653 [enable Gallium implementation of the OSMesa library @<:@default=disabled@:>@])],
654 [enable_gallium_osmesa="$enableval"],
655 [enable_gallium_osmesa=no])
656 AC_ARG_ENABLE([egl],
657 [AS_HELP_STRING([--disable-egl],
658 [disable EGL library @<:@default=enabled@:>@])],
659 [enable_egl="$enableval"],
660 [enable_egl=yes])
661
662 AC_ARG_ENABLE([xa],
663 [AS_HELP_STRING([--enable-xa],
664 [enable build of the XA X Acceleration API @<:@default=disabled@:>@])],
665 [enable_xa="$enableval"],
666 [enable_xa=no])
667 AC_ARG_ENABLE([gbm],
668 [AS_HELP_STRING([--enable-gbm],
669 [enable gbm library @<:@default=auto@:>@])],
670 [enable_gbm="$enableval"],
671 [enable_gbm=auto])
672 AC_ARG_ENABLE([nine],
673 [AS_HELP_STRING([--enable-nine],
674 [enable build of the nine Direct3D9 API @<:@default=no@:>@])],
675 [enable_nine="$enableval"],
676 [enable_nine=no])
677
678 AC_ARG_ENABLE([xvmc],
679 [AS_HELP_STRING([--enable-xvmc],
680 [enable xvmc library @<:@default=auto@:>@])],
681 [enable_xvmc="$enableval"],
682 [enable_xvmc=auto])
683 AC_ARG_ENABLE([vdpau],
684 [AS_HELP_STRING([--enable-vdpau],
685 [enable vdpau library @<:@default=auto@:>@])],
686 [enable_vdpau="$enableval"],
687 [enable_vdpau=auto])
688 AC_ARG_ENABLE([omx],
689 [AS_HELP_STRING([--enable-omx],
690 [enable OpenMAX library @<:@default=disabled@:>@])],
691 [enable_omx="$enableval"],
692 [enable_omx=no])
693 AC_ARG_ENABLE([va],
694 [AS_HELP_STRING([--enable-va],
695 [enable va library @<:@default=auto@:>@])],
696 [enable_va="$enableval"],
697 [enable_va=auto])
698 AC_ARG_ENABLE([opencl],
699 [AS_HELP_STRING([--enable-opencl],
700 [enable OpenCL library @<:@default=disabled@:>@])],
701 [enable_opencl="$enableval"],
702 [enable_opencl=no])
703 AC_ARG_ENABLE([opencl_icd],
704 [AS_HELP_STRING([--enable-opencl-icd],
705 [Build an OpenCL ICD library to be loaded by an ICD implementation
706 @<:@default=disabled@:>@])],
707 [enable_opencl_icd="$enableval"],
708 [enable_opencl_icd=no])
709 AC_ARG_ENABLE([xlib-glx],
710 [AS_HELP_STRING([--enable-xlib-glx],
711 [make GLX library Xlib-based instead of DRI-based @<:@default=disabled@:>@])],
712 [enable_xlib_glx="$enableval"],
713 [enable_xlib_glx=no])
714
715 AC_ARG_ENABLE([r600-llvm-compiler],
716 [AS_HELP_STRING([--enable-r600-llvm-compiler],
717 [Enable experimental LLVM backend for graphics shaders @<:@default=disabled@:>@])],
718 [enable_r600_llvm="$enableval"],
719 [enable_r600_llvm=no])
720
721 AC_ARG_ENABLE([gallium-tests],
722 [AS_HELP_STRING([--enable-gallium-tests],
723 [Enable optional Gallium tests) @<:@default=disabled@:>@])],
724 [enable_gallium_tests="$enableval"],
725 [enable_gallium_tests=no])
726
727 # Option for Gallium drivers
728
729 # Keep this in sync with the --with-gallium-drivers help string default value
730 GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
731
732 AC_ARG_WITH([gallium-drivers],
733 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
734 [comma delimited Gallium drivers list, e.g.
735 "i915,ilo,nouveau,r300,r600,radeonsi,freedreno,svga,swrast,vc4"
736 @<:@default=r300,r600,svga,swrast@:>@])],
737 [with_gallium_drivers="$withval"],
738 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
739
740 # Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it
741 # here so that the script doesn't choke on an unknown driver name later.
742 case "$with_gallium_drivers" in
743 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
744 no) with_gallium_drivers='' ;;
745 esac
746
747 if test "x$enable_opengl" = xno -a \
748 "x$enable_gles1" = xno -a \
749 "x$enable_gles2" = xno -a \
750 "x$enable_nine" = xno -a \
751 "x$enable_openvg" = xno -a \
752 "x$enable_xa" = xno -a \
753 "x$enable_xvmc" = xno -a \
754 "x$enable_vdpau" = xno -a \
755 "x$enable_omx" = xno -a \
756 "x$enable_va" = xno -a \
757 "x$enable_opencl" = xno; then
758 AC_MSG_ERROR([at least one API should be enabled])
759 fi
760
761 # Building OpenGL ES1 and/or ES2 without OpenGL is not supported on mesa 9.0.x
762 if test "x$enable_opengl" = xno -a \
763 "x$enable_gles1" = xyes; then
764 AC_MSG_ERROR([Building OpenGL ES1 without OpenGL is not supported])
765 fi
766
767 if test "x$enable_opengl" = xno -a \
768 "x$enable_gles2" = xyes; then
769 AC_MSG_ERROR([Building OpenGL ES2 without OpenGL is not supported])
770 fi
771
772 AM_CONDITIONAL(HAVE_OPENGL, test "x$enable_opengl" = xyes)
773 AM_CONDITIONAL(HAVE_OPENGL_ES1, test "x$enable_gles1" = xyes)
774 AM_CONDITIONAL(HAVE_OPENGL_ES2, test "x$enable_gles2" = xyes)
775 AM_CONDITIONAL(NEED_OPENGL_COMMON, test "x$enable_opengl" = xyes -o \
776 "x$enable_gles1" = xyes -o \
777 "x$enable_gles2" = xyes)
778
779 if test "x$enable_glx" = xno; then
780 AC_MSG_WARN([GLX disabled, disabling Xlib-GLX])
781 enable_xlib_glx=no
782 fi
783
784 if test "x$enable_dri$enable_xlib_glx" = xyesyes; then
785 AC_MSG_ERROR([DRI and Xlib-GLX cannot be built together])
786 fi
787
788 if test "x$enable_opengl$enable_xlib_glx" = xnoyes; then
789 AC_MSG_ERROR([Xlib-GLX cannot be built without OpenGL])
790 fi
791
792 # Disable GLX if OpenGL is not enabled
793 if test "x$enable_glx$enable_opengl" = xyesno; then
794 AC_MSG_WARN([OpenGL not enabled, disabling GLX])
795 enable_glx=no
796 fi
797
798 # Disable GLX if DRI and Xlib-GLX are not enabled
799 if test "x$enable_glx" = xyes -a \
800 "x$enable_dri" = xno -a \
801 "x$enable_xlib_glx" = xno; then
802 AC_MSG_WARN([Neither DRI nor Xlib-GLX enabled, disabling GLX])
803 enable_glx=no
804 fi
805
806 AM_CONDITIONAL(HAVE_DRI_GLX, test "x$enable_glx" = xyes -a \
807 "x$enable_dri" = xyes)
808
809 # Select which platform-dependent DRI code gets built
810 case "$host_os" in
811 darwin*)
812 dri_platform='apple' ;;
813 gnu*|mingw*|cygwin*)
814 dri_platform='none' ;;
815 *)
816 dri_platform='drm' ;;
817 esac
818
819 AM_CONDITIONAL(HAVE_DRICOMMON, test "x$enable_dri" = xyes )
820 AM_CONDITIONAL(HAVE_DRISW, test "x$enable_dri" = xyes )
821 AM_CONDITIONAL(HAVE_DRI2, test "x$enable_dri" = xyes -a "x$dri_platform" = xdrm )
822 AM_CONDITIONAL(HAVE_DRI3, test "x$enable_dri3" = xyes -a "x$dri_platform" = xdrm )
823 AM_CONDITIONAL(HAVE_APPLEDRI, test "x$enable_dri" = xyes -a "x$dri_platform" = xapple )
824
825 AC_ARG_ENABLE([shared-glapi],
826 [AS_HELP_STRING([--enable-shared-glapi],
827 [Enable shared glapi for OpenGL @<:@default=enabled@:>@])],
828 [enable_shared_glapi="$enableval"],
829 [enable_shared_glapi=yes])
830
831 case "x$enable_opengl$enable_gles1$enable_gles2" in
832 x*yes*yes*)
833 if test "x$enable_shared_glapi" = xno; then
834 AC_MSG_ERROR([shared GLAPI required when building two or more of
835 the following APIs - opengl, gles1 gles2])
836 fi
837 ;;
838 esac
839
840 # Building Xlib-GLX requires shared glapi to be disabled.
841 if test "x$enable_xlib_glx" = xyes; then
842 AC_MSG_NOTICE([Shared GLAPI should not used with Xlib-GLX, disabling])
843 enable_shared_glapi=no
844 fi
845
846 AM_CONDITIONAL(HAVE_SHARED_GLAPI, test "x$enable_shared_glapi" = xyes)
847
848 # Build the pipe-drivers as separate libraries/modules.
849 # Do not touch this unless you know what you are doing.
850 # XXX: Expose via configure option ?
851 enable_shared_pipe_drivers=no
852
853 dnl
854 dnl Driver specific build directories
855 dnl
856
857 case "x$enable_glx$enable_xlib_glx" in
858 xyesyes)
859 NEED_WINSYS_XLIB="yes"
860 ;;
861 esac
862
863 if test "x$enable_dri" = xyes; then
864 enable_gallium_loader="$enable_shared_pipe_drivers"
865 fi
866
867 if test "x$enable_gallium_osmesa" = xyes; then
868 if ! echo "$with_gallium_drivers" | grep -q 'swrast'; then
869 AC_MSG_ERROR([gallium_osmesa requires the gallium swrast driver])
870 fi
871 if test "x$enable_osmesa" = xyes; then
872 AC_MSG_ERROR([Cannot enable both classic and Gallium OSMesa implementations])
873 fi
874 fi
875
876 AC_SUBST([MESA_LLVM])
877
878 # Check for libdrm
879 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
880 [have_libdrm=yes], [have_libdrm=no])
881 if test "x$have_libdrm" = xyes; then
882 DEFINES="$DEFINES -DHAVE_LIBDRM"
883 fi
884
885 case "$host_os" in
886 linux*)
887 need_pci_id=yes ;;
888 *)
889 need_pci_id=no ;;
890 esac
891
892 PKG_CHECK_MODULES([LIBUDEV], [libudev >= $LIBUDEV_REQUIRED],
893 have_libudev=yes, have_libudev=no)
894
895 AC_ARG_ENABLE([sysfs],
896 [AS_HELP_STRING([--enable-sysfs],
897 [enable /sys PCI identification @<:@default=disabled@:>@])],
898 [have_sysfs="$enableval"],
899 [have_sysfs=no]
900 )
901
902 if test "x$enable_dri" = xyes; then
903 if test "$enable_static" = yes; then
904 AC_MSG_ERROR([Cannot use static libraries for DRI drivers])
905 fi
906
907 # not a hard requirement as swrast does not depend on it
908 if test "x$have_libdrm" = xyes; then
909 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
910 fi
911 fi
912
913 AC_ARG_ENABLE([driglx-direct],
914 [AS_HELP_STRING([--disable-driglx-direct],
915 [disable direct rendering in GLX and EGL for DRI \
916 @<:@default=auto@:>@])],
917 [driglx_direct="$enableval"],
918 [driglx_direct="yes"])
919
920 dnl
921 dnl libGL configuration per driver
922 dnl
923 case "x$enable_glx$enable_xlib_glx" in
924 xyesyes)
925 # Xlib-based GLX
926 dri_modules="x11 xext xcb"
927 PKG_CHECK_MODULES([XLIBGL], [$dri_modules])
928 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
929 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
930 GL_LIB_DEPS="$XLIBGL_LIBS"
931 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
932 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm $PTHREAD_LIBS"
933 ;;
934 xyesno)
935 # DRI-based GLX
936 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
937
938 # find the DRI deps for libGL
939 dri_modules="x11 xext xdamage xfixes x11-xcb xcb xcb-glx >= $XCBGLX_REQUIRED"
940
941 if test x"$driglx_direct" = xyes; then
942 if test x"$dri_platform" = xdrm ; then
943 DEFINES="$DEFINES -DGLX_USE_DRM"
944 if test "x$have_libdrm" != xyes; then
945 AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
946 fi
947
948 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
949 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED"
950 if test x"$enable_dri3" = xyes; then
951 PKG_CHECK_MODULES([DRI3PROTO], [dri3proto >= $DRI3PROTO_REQUIRED])
952 PKG_CHECK_MODULES([PRESENTPROTO], [presentproto >= $PRESENTPROTO_REQUIRED])
953 fi
954
955 if test x"$enable_dri" = xyes; then
956 dri_modules="$dri_modules xcb-dri2 >= $XCBDRI2_REQUIRED"
957 fi
958
959 if test x"$enable_dri3" = xyes; then
960 PKG_CHECK_EXISTS([xcb >= $XCB_REQUIRED], [], AC_MSG_ERROR([DRI3 requires xcb >= $XCB_REQUIRED]))
961 dri_modules="$dri_modules xcb-dri3 xcb-present xcb-sync xshmfence >= $XSHMFENCE_REQUIRED"
962 fi
963 fi
964 if test x"$dri_platform" = xapple ; then
965 DEFINES="$DEFINES -DGLX_USE_APPLEGL"
966 fi
967 fi
968
969 # add xf86vidmode if available
970 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
971 if test "$HAVE_XF86VIDMODE" = yes ; then
972 dri_modules="$dri_modules xxf86vm"
973 fi
974
975 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
976 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
977 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
978 GL_LIB_DEPS="$DRIGL_LIBS"
979
980 # need DRM libs, $PTHREAD_LIBS, etc.
981 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
982 GL_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
983 ;;
984 esac
985
986 have_pci_id=no
987 if test "$have_libudev" = yes; then
988 DEFINES="$DEFINES -DHAVE_LIBUDEV"
989 have_pci_id=yes
990 fi
991
992 if test "$have_sysfs" = yes; then
993 DEFINES="$DEFINES -DHAVE_SYSFS"
994 have_pci_id=yes
995 fi
996
997 # This is outside the case (above) so that it is invoked even for non-GLX
998 # builds.
999 AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
1000
1001 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1002 GLESv1_CM_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
1003 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1004 GLESv2_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
1005
1006 AC_SUBST([X11_INCLUDES])
1007 AC_SUBST([GL_LIB_DEPS])
1008 AC_SUBST([GL_PC_REQ_PRIV])
1009 AC_SUBST([GL_PC_LIB_PRIV])
1010 AC_SUBST([GL_PC_CFLAGS])
1011 AC_SUBST([DRI_PC_REQ_PRIV])
1012 AC_SUBST([GLESv1_CM_LIB_DEPS])
1013 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
1014 AC_SUBST([GLESv2_LIB_DEPS])
1015 AC_SUBST([GLESv2_PC_LIB_PRIV])
1016
1017 AC_SUBST([HAVE_XF86VIDMODE])
1018
1019 dnl
1020 dnl More GLX setup
1021 dnl
1022 case "x$enable_glx$enable_xlib_glx" in
1023 xyesyes)
1024 DEFINES="$DEFINES -DUSE_XSHM"
1025 ;;
1026 xyesno)
1027 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1028 if test "x$driglx_direct" = xyes; then
1029 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1030 fi
1031 ;;
1032 esac
1033
1034 dnl
1035 dnl TLS detection
1036 dnl
1037
1038 AC_ARG_ENABLE([glx-tls],
1039 [AS_HELP_STRING([--enable-glx-tls],
1040 [enable TLS support in GLX @<:@default=disabled@:>@])],
1041 [GLX_USE_TLS="$enableval"],
1042 [GLX_USE_TLS=no])
1043 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
1044
1045 AS_IF([test "x$GLX_USE_TLS" = xyes -a "x$ax_pthread_ok" = xyes],
1046 [DEFINES="${DEFINES} -DGLX_USE_TLS"])
1047
1048 dnl
1049 dnl More DRI setup
1050 dnl
1051 dnl Directory for DRI drivers
1052 AC_ARG_WITH([dri-driverdir],
1053 [AS_HELP_STRING([--with-dri-driverdir=DIR],
1054 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
1055 [DRI_DRIVER_INSTALL_DIR="$withval"],
1056 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
1057 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
1058 dnl Extra search path for DRI drivers
1059 AC_ARG_WITH([dri-searchpath],
1060 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
1061 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
1062 [DRI_DRIVER_SEARCH_DIR="$withval"],
1063 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
1064 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
1065 dnl Which drivers to build - default is chosen by platform
1066 AC_ARG_WITH([dri-drivers],
1067 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
1068 [comma delimited classic DRI drivers list, e.g.
1069 "swrast,i965,radeon" @<:@default=auto@:>@])],
1070 [with_dri_drivers="$withval"],
1071 [with_dri_drivers=auto])
1072
1073 if test "x$with_dri_drivers" = xauto; then
1074 if test "x$enable_opengl" = xyes -a "x$enable_dri" = xyes; then
1075 with_dri_drivers="yes"
1076 else
1077 with_dri_drivers="no"
1078 fi
1079 fi
1080 if test "x$with_dri_drivers" = xno; then
1081 with_dri_drivers=''
1082 fi
1083
1084 dnl If $with_dri_drivers is yes, drivers will be added through
1085 dnl platform checks. Set DEFINES and LIB_DEPS
1086 if test "x$enable_dri" = xyes; then
1087 # Platform specific settings and drivers to build
1088 case "$host_os" in
1089 linux*)
1090 DEFINES="$DEFINES -DHAVE_ALIAS"
1091 if test "x$enable_dri3" = xyes; then
1092 DEFINES="$DEFINES -DHAVE_DRI3"
1093 fi
1094
1095 if test "x$have_pci_id" != xyes; then
1096 AC_MSG_ERROR([libudev-dev or sysfs required for building DRI])
1097 fi
1098
1099 case "$host_cpu" in
1100 powerpc* | sparc*)
1101 # Build only the drivers for cards that exist on PowerPC/sparc
1102 if test "x$with_dri_drivers" = "xyes"; then
1103 with_dri_drivers="r200 radeon swrast"
1104 fi
1105 ;;
1106 esac
1107 ;;
1108 *freebsd* | dragonfly* | *netbsd* | openbsd*)
1109 DEFINES="$DEFINES -DHAVE_ALIAS"
1110 ;;
1111 gnu*)
1112 DEFINES="$DEFINES -DHAVE_ALIAS"
1113 ;;
1114 cygwin*)
1115 if test "x$with_dri_drivers" = "xyes"; then
1116 with_dri_drivers="swrast"
1117 fi
1118 ;;
1119 darwin*)
1120 DEFINES="$DEFINES -DGLX_ALIAS_UNSUPPORTED"
1121 if test "x$with_dri_drivers" = "xyes"; then
1122 with_dri_drivers="swrast"
1123 fi
1124 ;;
1125 esac
1126
1127 # default drivers
1128 if test "x$with_dri_drivers" = "xyes"; then
1129 with_dri_drivers="i915 i965 nouveau r200 radeon swrast"
1130 fi
1131
1132 # Check for expat
1133 PKG_CHECK_MODULES([EXPAT], [expat], [],
1134 # expat version 2.0 and earlier do not provide expat.pc
1135 [AC_CHECK_HEADER([expat.h],[],
1136 [AC_MSG_ERROR([Expat headers required for DRI not found])])
1137 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1138 [AC_MSG_ERROR([Expat library required for DRI not found])])
1139 EXPAT_LIBS="-lexpat"])
1140
1141 DRICOMMON_NEED_LIBDRM=no
1142 # If we are building any DRI driver other than swrast.
1143 if test -n "$with_dri_drivers"; then
1144 if test "x$with_dri_drivers" != xswrast; then
1145 # ... libdrm is required
1146 if test "x$have_libdrm" != xyes; then
1147 AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
1148 fi
1149 DRICOMMON_NEED_LIBDRM=yes
1150 fi
1151 fi
1152
1153 # If we're building any gallium DRI driver other than swrast
1154 if test -n "$with_gallium_drivers" -a "x$DRICOMMON_NEED_LIBDRM" = xno; then
1155 if test "x$with_gallium_drivers" != xswrast; then
1156 # ... build a libdrm aware dricommon
1157 DRICOMMON_NEED_LIBDRM=yes
1158 fi
1159 fi
1160
1161 # put all the necessary libs together
1162 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1163 fi
1164
1165 AC_SUBST([DRI_LIB_DEPS])
1166
1167 DRI_DIRS=''
1168 dnl Duplicates in DRI_DIRS are removed by sorting it at the end of this block
1169 if test -n "$with_dri_drivers"; then
1170 if test "x$enable_opengl" != xyes; then
1171 AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1172 fi
1173
1174 dri_drivers=`IFS=', '; echo $with_dri_drivers`
1175 for driver in $dri_drivers; do
1176 DRI_DIRS="$DRI_DIRS $driver"
1177 case "x$driver" in
1178 xi915)
1179 HAVE_I915_DRI=yes;
1180 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1181 ;;
1182 xi965)
1183 HAVE_I965_DRI=yes;
1184 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1185 ;;
1186 xnouveau)
1187 HAVE_NOUVEAU_DRI=yes;
1188 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED])
1189 ;;
1190 xradeon)
1191 HAVE_RADEON_DRI=yes;
1192 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1193 ;;
1194 xr200)
1195 HAVE_R200_DRI=yes;
1196 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1197 ;;
1198 xswrast)
1199 HAVE_SWRAST_DRI=yes;
1200 ;;
1201 *)
1202 AC_MSG_ERROR([classic DRI driver '$driver' does not exist])
1203 ;;
1204 esac
1205 done
1206 DRI_DIRS=`echo $DRI_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1207 fi
1208
1209 AM_CONDITIONAL(NEED_MEGADRIVER, test -n "$DRI_DIRS")
1210 AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_xlib_glx" = xyes -o \
1211 "x$enable_osmesa" = xyes -o \
1212 -n "$DRI_DIRS")
1213
1214 dnl
1215 dnl OSMesa configuration
1216 dnl
1217
1218 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1219 AC_ARG_WITH([osmesa-bits],
1220 [AS_HELP_STRING([--with-osmesa-bits=BITS],
1221 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1222 [osmesa_bits="$withval"],
1223 [osmesa_bits=8])
1224 if test "x$osmesa_bits" != x8; then
1225 if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then
1226 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1227 osmesa_bits=8
1228 fi
1229 fi
1230 case "x$osmesa_bits" in
1231 x8)
1232 OSMESA_LIB="${OSMESA_LIB}"
1233 ;;
1234 x16|x32)
1235 OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
1236 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1237 ;;
1238 *)
1239 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1240 ;;
1241 esac
1242
1243 if test "x$enable_osmesa" = xyes -o "x$enable_gallium_osmesa" = xyes; then
1244 # only link libraries with osmesa if shared
1245 if test "$enable_static" = no; then
1246 OSMESA_LIB_DEPS="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1247 else
1248 OSMESA_LIB_DEPS=""
1249 fi
1250 OSMESA_PC_LIB_PRIV="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1251 fi
1252
1253 AC_SUBST([OSMESA_LIB_DEPS])
1254 AC_SUBST([OSMESA_PC_REQ])
1255 AC_SUBST([OSMESA_PC_LIB_PRIV])
1256
1257 dnl
1258 dnl gbm configuration
1259 dnl
1260 if test "x$enable_gbm" = xauto; then
1261 case "$with_egl_platforms" in
1262 *drm*)
1263 enable_gbm=yes ;;
1264 *)
1265 enable_gbm=no ;;
1266 esac
1267 fi
1268 if test "x$enable_gbm" = xyes; then
1269 if test "x$need_pci_id$have_pci_id" = xyesno; then
1270 AC_MSG_ERROR([gbm requires udev >= $LIBUDEV_REQUIRED or sysfs])
1271 fi
1272
1273 if test "x$enable_dri" = xyes; then
1274 GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
1275 if test "x$enable_shared_glapi" = xno; then
1276 AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1277 fi
1278 else
1279 # Strictly speaking libgbm does not require --enable-dri, although
1280 # both of its backends do. Thus one can build libgbm without any
1281 # backends if --disable-dri is set.
1282 # To avoid unnecessary complexity of checking if at least one backend
1283 # is available when building, just mandate --enable-dri.
1284 AC_MSG_ERROR([gbm requires --enable-dri])
1285 fi
1286 fi
1287 AM_CONDITIONAL(HAVE_GBM, test "x$enable_gbm" = xyes)
1288 if test "x$need_pci_id$have_libudev" = xyesyes; then
1289 GBM_PC_REQ_PRIV="libudev >= $LIBUDEV_REQUIRED"
1290 else
1291 GBM_PC_REQ_PRIV=""
1292 fi
1293 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1294 AC_SUBST([GBM_PC_REQ_PRIV])
1295 AC_SUBST([GBM_PC_LIB_PRIV])
1296
1297 dnl
1298 dnl EGL configuration
1299 dnl
1300 EGL_CLIENT_APIS=""
1301
1302 if test "x$enable_egl" = xyes; then
1303 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS $PTHREAD_LIBS"
1304
1305 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1306
1307 if test "$enable_static" != yes; then
1308 if test "x$enable_dri" = xyes; then
1309 HAVE_EGL_DRIVER_DRI2=1
1310 fi
1311
1312 fi
1313 fi
1314 AM_CONDITIONAL(HAVE_EGL, test "x$enable_egl" = xyes)
1315 AC_SUBST([EGL_LIB_DEPS])
1316
1317 dnl
1318 dnl XA configuration
1319 dnl
1320 if test "x$enable_xa" = xyes; then
1321 if test "x$with_gallium_drivers" = xswrast; then
1322 AC_MSG_ERROR([
1323 Building xa requires at least one non swrast gallium driver.
1324 If you are looking to use libxatracker.so with the VMware driver,
1325 make sure to include svga in the gallium drivers list, apart from
1326 enabling XA.
1327 Example: ./configure --enable-xa --with-gallium-drivers=svga...])
1328 fi
1329 enable_gallium_loader=$enable_shared_pipe_drivers
1330 fi
1331 AM_CONDITIONAL(HAVE_ST_XA, test "x$enable_xa" = xyes)
1332
1333 dnl
1334 dnl OpenVG configuration
1335 dnl
1336 VG_LIB_DEPS=""
1337
1338 if test "x$enable_openvg" = xyes; then
1339 if test "x$enable_egl" = xno; then
1340 AC_MSG_ERROR([cannot enable OpenVG without EGL])
1341 fi
1342 if test -z "$with_gallium_drivers"; then
1343 AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1344 fi
1345
1346 AC_MSG_ERROR([Cannot enable OpenVG, because egl_gallium has been removed and
1347 OpenVG hasn't been integrated into standard libEGL yet])
1348
1349 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1350 VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS $PTHREAD_LIBS"
1351 VG_PC_LIB_PRIV="-lm $CLOCK_LIB $PTHREAD_LIBS $DLOPEN_LIBS"
1352 AC_SUBST([VG_PC_LIB_PRIV])
1353 fi
1354 AM_CONDITIONAL(HAVE_OPENVG, test "x$enable_openvg" = xyes)
1355
1356 dnl
1357 dnl Gallium G3DVL configuration
1358 dnl
1359 if test -n "$with_gallium_drivers" -a "x$with_gallium_drivers" != xswrast; then
1360 if test "x$enable_xvmc" = xauto; then
1361 PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no])
1362 fi
1363
1364 if test "x$enable_vdpau" = xauto; then
1365 PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no])
1366 fi
1367
1368 if test "x$enable_omx" = xauto; then
1369 PKG_CHECK_EXISTS([libomxil-bellagio], [enable_omx=yes], [enable_omx=no])
1370 fi
1371
1372 if test "x$enable_va" = xauto; then
1373 PKG_CHECK_EXISTS([libva], [enable_va=yes], [enable_va=no])
1374 fi
1375 fi
1376
1377 if test "x$enable_xvmc" = xyes; then
1378 PKG_CHECK_MODULES([XVMC], [xvmc >= $XVMC_REQUIRED x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
1379 enable_gallium_loader=$enable_shared_pipe_drivers
1380 fi
1381 AM_CONDITIONAL(HAVE_ST_XVMC, test "x$enable_xvmc" = xyes)
1382
1383 if test "x$enable_vdpau" = xyes; then
1384 PKG_CHECK_MODULES([VDPAU], [vdpau >= $VDPAU_REQUIRED x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED],
1385 [VDPAU_LIBS="`$PKG_CONFIG --libs x11-xcb xcb xcb-dri2`"])
1386 enable_gallium_loader=$enable_shared_pipe_drivers
1387 fi
1388 AM_CONDITIONAL(HAVE_ST_VDPAU, test "x$enable_vdpau" = xyes)
1389
1390 if test "x$enable_omx" = xyes; then
1391 PKG_CHECK_MODULES([OMX], [libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED])
1392 enable_gallium_loader=$enable_shared_pipe_drivers
1393 fi
1394 AM_CONDITIONAL(HAVE_ST_OMX, test "x$enable_omx" = xyes)
1395
1396 if test "x$enable_va" = xyes; then
1397 PKG_CHECK_MODULES([VA], [libva >= 0.35.0 x11-xcb xcb-dri2 >= $XCBDRI2_REQUIRED],
1398 [VA_LIBS="`$PKG_CONFIG --libs x11-xcb xcb-dri2`"])
1399 enable_gallium_loader=$enable_shared_pipe_drivers
1400 fi
1401 AM_CONDITIONAL(HAVE_ST_VA, test "x$enable_va" = xyes)
1402
1403 dnl
1404 dnl Nine Direct3D9 configuration
1405 dnl
1406 if test "x$enable_nine" = xyes; then
1407 if ! echo "$with_gallium_drivers" | grep -q 'swrast'; then
1408 AC_MSG_ERROR([nine requires the gallium swrast driver])
1409 fi
1410 if test "x$with_gallium_drivers" == xswrast; then
1411 AC_MSG_ERROR([nine requires at least one non-swrast gallium driver])
1412 fi
1413 if test "x$enable_dri3" = xno; then
1414 AC_MSG_WARN([using nine together with wine requires DRI3 enabled system])
1415 fi
1416
1417 enable_gallium_loader=$enable_shared_pipe_drivers
1418 fi
1419 AM_CONDITIONAL(HAVE_ST_NINE, test "x$enable_nine" = xyes)
1420
1421 dnl
1422 dnl OpenCL configuration
1423 dnl
1424
1425 AC_ARG_WITH([libclc-path],
1426 [AS_HELP_STRING([--with-libclc-path],
1427 [DEPRECATED: See http://dri.freedesktop.org/wiki/GalliumCompute#How_to_Install])],
1428 [LIBCLC_PATH="$withval"],
1429 [LIBCLC_PATH=''])
1430
1431 if test -n "$LIBCLC_PATH"; then
1432 AC_MSG_ERROR([The --with-libclc-path option has been deprecated.
1433 Please review the updated build instructions for clover:
1434 http://dri.freedesktop.org/wiki/GalliumCompute])
1435 fi
1436
1437
1438 AC_ARG_WITH([clang-libdir],
1439 [AS_HELP_STRING([--with-clang-libdir],
1440 [Path to Clang libraries @<:@default=llvm-config --libdir@:>@])],
1441 [CLANG_LIBDIR="$withval"],
1442 [CLANG_LIBDIR=''])
1443
1444 PKG_CHECK_EXISTS([libclc], [have_libclc=yes], [have_libclc=no])
1445 AC_CHECK_LIB([elf], [elf_memory], [have_libelf=yes;ELF_LIB=-lelf])
1446
1447 if test "x$enable_opencl" = xyes; then
1448 if test -z "$with_gallium_drivers"; then
1449 AC_MSG_ERROR([cannot enable OpenCL without Gallium])
1450 fi
1451
1452 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 7; then
1453 AC_MSG_ERROR([gcc >= 4.7 is required to build clover])
1454 fi
1455
1456 if test "x$have_libclc" = xno; then
1457 AC_MSG_ERROR([pkg-config cannot find libclc.pc which is required to build clover.
1458 Make sure the directory containing libclc.pc is specified in your
1459 PKG_CONFIG_PATH environment variable.
1460 By default libclc.pc is installed to /usr/local/share/pkgconfig/])
1461 else
1462 LIBCLC_INCLUDEDIR=`$PKG_CONFIG --variable=includedir libclc`
1463 LIBCLC_LIBEXECDIR=`$PKG_CONFIG --variable=libexecdir libclc`
1464 AC_SUBST([LIBCLC_INCLUDEDIR])
1465 AC_SUBST([LIBCLC_LIBEXECDIR])
1466 fi
1467
1468 # XXX: Use $enable_shared_pipe_drivers once converted to use static/shared pipe-drivers
1469 enable_gallium_loader=yes
1470
1471 if test "x$enable_opencl_icd" = xyes; then
1472 OPENCL_LIBNAME="MesaOpenCL"
1473 else
1474 OPENCL_LIBNAME="OpenCL"
1475 fi
1476
1477 if test "x$have_libelf" != xyes; then
1478 AC_MSG_ERROR([Clover requires libelf])
1479 fi
1480 fi
1481 AM_CONDITIONAL(HAVE_CLOVER, test "x$enable_opencl" = xyes)
1482 AM_CONDITIONAL(HAVE_CLOVER_ICD, test "x$enable_opencl_icd" = xyes)
1483 AC_SUBST([OPENCL_LIBNAME])
1484
1485 dnl
1486 dnl Gallium configuration
1487 dnl
1488 AM_CONDITIONAL(HAVE_GALLIUM, test -n "$with_gallium_drivers")
1489
1490 AC_SUBST([LLVM_BINDIR])
1491 AC_SUBST([LLVM_CFLAGS])
1492 AC_SUBST([LLVM_CPPFLAGS])
1493 AC_SUBST([LLVM_CXXFLAGS])
1494 AC_SUBST([LLVM_LIBDIR])
1495 AC_SUBST([LLVM_LIBS])
1496 AC_SUBST([LLVM_LDFLAGS])
1497 AC_SUBST([LLVM_INCLUDEDIR])
1498 AC_SUBST([LLVM_VERSION])
1499 AC_SUBST([CLANG_RESOURCE_DIR])
1500
1501 case "x$enable_opengl$enable_gles1$enable_gles2" in
1502 x*yes*)
1503 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1504 ;;
1505 esac
1506
1507 AC_SUBST([VG_LIB_DEPS])
1508 AC_SUBST([EGL_CLIENT_APIS])
1509
1510 dnl
1511 dnl EGL Platforms configuration
1512 dnl
1513 AC_ARG_WITH([egl-platforms],
1514 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1515 [comma delimited native platforms libEGL supports, e.g.
1516 "x11,drm" @<:@default=auto@:>@])],
1517 [with_egl_platforms="$withval"],
1518 [if test "x$enable_egl" = xyes; then
1519 with_egl_platforms="x11"
1520 else
1521 with_egl_platforms=""
1522 fi])
1523
1524 if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
1525 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1526 fi
1527
1528 # Do per-EGL platform setups and checks
1529 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1530 for plat in $egl_platforms; do
1531 case "$plat" in
1532 wayland)
1533 PKG_CHECK_MODULES([WAYLAND], [wayland-client >= $WAYLAND_REQUIRED wayland-server >= $WAYLAND_REQUIRED])
1534
1535 WAYLAND_PREFIX=`$PKG_CONFIG --variable=prefix wayland-client`
1536 AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner],,
1537 [${WAYLAND_PREFIX}/bin$PATH_SEPARATOR$PATH])
1538 ;;
1539
1540 x11)
1541 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED xcb-xfixes])
1542 ;;
1543
1544 drm)
1545 test "x$enable_gbm" = "xno" &&
1546 AC_MSG_ERROR([EGL platform drm needs gbm])
1547 test "x$have_libdrm" != xyes &&
1548 AC_MSG_ERROR([EGL platform drm requires libdrm >= $LIBDRM_REQUIRED])
1549 ;;
1550
1551 android|fbdev|gdi|null)
1552 ;;
1553
1554 *)
1555 AC_MSG_ERROR([EGL platform '$plat' does not exist])
1556 ;;
1557 esac
1558
1559 case "$plat$need_pci_id$have_pci_id" in
1560 waylandyesno|drmyesno)
1561 AC_MSG_ERROR([cannot build $plat platform without udev >= $LIBUDEV_REQUIRED or sysfs]) ;;
1562 esac
1563 done
1564
1565 # libEGL wants to default to the first platform specified in
1566 # ./configure. parse that here.
1567 if test "x$egl_platforms" != "x"; then
1568 FIRST_PLATFORM_CAPS=`echo $egl_platforms | sed 's| .*||' | tr 'a-z' 'A-Z'`
1569 EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
1570 else
1571 EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
1572 fi
1573
1574 if echo "$egl_platforms" | grep -q 'x11'; then
1575 NEED_WINSYS_XLIB=yes
1576 fi
1577 AM_CONDITIONAL(HAVE_EGL_PLATFORM_X11, echo "$egl_platforms" | grep -q 'x11')
1578 AM_CONDITIONAL(HAVE_EGL_PLATFORM_WAYLAND, echo "$egl_platforms" | grep -q 'wayland')
1579 AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep -q 'drm')
1580 AM_CONDITIONAL(HAVE_EGL_PLATFORM_FBDEV, echo "$egl_platforms" | grep -q 'fbdev')
1581 AM_CONDITIONAL(HAVE_EGL_PLATFORM_NULL, echo "$egl_platforms" | grep -q 'null')
1582
1583 AM_CONDITIONAL(HAVE_EGL_DRIVER_DRI2, test "x$HAVE_EGL_DRIVER_DRI2" != "x")
1584
1585 AC_SUBST([EGL_NATIVE_PLATFORM])
1586 AC_SUBST([EGL_CFLAGS])
1587
1588 # If we don't have the X11 platform, set this define so we don't try to include
1589 # the X11 headers.
1590 if ! echo "$egl_platforms" | grep -q 'x11'; then
1591 DEFINES="$DEFINES -DMESA_EGL_NO_X11_HEADERS"
1592 GL_PC_CFLAGS="$GL_PC_CFLAGS -DMESA_EGL_NO_X11_HEADERS"
1593 fi
1594
1595 AC_ARG_WITH([max-width],
1596 [AS_HELP_STRING([--with-max-width=N],
1597 [Maximum framebuffer width (4096)])],
1598 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1599 AS_IF([test "${withval}" -gt "4096"],
1600 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1601 )
1602 AC_ARG_WITH([max-height],
1603 [AS_HELP_STRING([--with-max-height=N],
1604 [Maximum framebuffer height (4096)])],
1605 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1606 AS_IF([test "${withval}" -gt "4096"],
1607 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1608 )
1609
1610 dnl
1611 dnl Gallium LLVM
1612 dnl
1613 AC_ARG_ENABLE([gallium-llvm],
1614 [AS_HELP_STRING([--enable-gallium-llvm],
1615 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1616 [enable_gallium_llvm="$enableval"],
1617 [enable_gallium_llvm=auto])
1618
1619 AC_ARG_ENABLE([llvm-shared-libs],
1620 [AS_HELP_STRING([--enable-llvm-shared-libs],
1621 [link with LLVM shared libraries @<:@default=enabled@:>@])],
1622 [enable_llvm_shared_libs="$enableval"],
1623 [enable_llvm_shared_libs=yes])
1624
1625 AC_ARG_WITH([llvm-prefix],
1626 [AS_HELP_STRING([--with-llvm-prefix],
1627 [Prefix for LLVM installations in non-standard locations])],
1628 [llvm_prefix="$withval"],
1629 [llvm_prefix=''])
1630
1631
1632 # Call this inside ` ` to get the return value.
1633 # $1 is the llvm-config command with arguments.
1634 strip_unwanted_llvm_flags() {
1635 # Use \> (marks the end of the word)
1636 echo `$1` | sed \
1637 -e 's/-DNDEBUG\>//g' \
1638 -e 's/-D_GNU_SOURCE\>//g' \
1639 -e 's/-pedantic\>//g' \
1640 -e 's/-Wcovered-switch-default\>//g' \
1641 -e 's/-O.\>//g' \
1642 -e 's/-g\>//g' \
1643 -e 's/-Wall\>//g' \
1644 -e 's/-Wcast-qual\>//g' \
1645 -e 's/-Woverloaded-virtual\>//g' \
1646 -e 's/-fcolor-diagnostics\>//g' \
1647 -e 's/-fdata-sections\>//g' \
1648 -e 's/-ffunction-sections\>//g' \
1649 -e 's/-fno-exceptions\>//g' \
1650 -e 's/-fomit-frame-pointer\>//g' \
1651 -e 's/-fvisibility-inlines-hidden\>//g' \
1652 -e 's/-fPIC\>//g' \
1653 -e 's/-fstack-protector-strong\>//g'
1654 }
1655
1656
1657 if test -z "$with_gallium_drivers"; then
1658 enable_gallium_llvm=no
1659 fi
1660 if test "x$enable_gallium_llvm" = xauto; then
1661 case "$host_cpu" in
1662 i*86|x86_64|amd64) enable_gallium_llvm=yes;;
1663 esac
1664 fi
1665 if test "x$enable_gallium_llvm" = xyes; then
1666 if test -n "$llvm_prefix"; then
1667 AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no], ["$llvm_prefix/bin"])
1668 else
1669 AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no])
1670 fi
1671
1672 if test "x$LLVM_CONFIG" != xno; then
1673 LLVM_VERSION=`$LLVM_CONFIG --version | egrep -o '^[[0-9.]]+'`
1674 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1675 LLVM_BINDIR=`$LLVM_CONFIG --bindir`
1676 LLVM_CPPFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cppflags"`
1677 LLVM_CFLAGS=$LLVM_CPPFLAGS # CPPFLAGS seem to be sufficient
1678 LLVM_CXXFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cxxflags"`
1679 LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
1680 LLVM_LIBDIR=`$LLVM_CONFIG --libdir`
1681
1682 AC_COMPUTE_INT([LLVM_VERSION_MAJOR], [LLVM_VERSION_MAJOR],
1683 [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
1684 AC_COMPUTE_INT([LLVM_VERSION_MINOR], [LLVM_VERSION_MINOR],
1685 [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"])
1686
1687 LLVM_VERSION_PATCH=`echo $LLVM_VERSION | cut -d. -f3 | egrep -o '^[[0-9]]+'`
1688 if test -z "$LLVM_VERSION_PATCH"; then
1689 LLVM_VERSION_PATCH=0
1690 fi
1691
1692 if test -n "${LLVM_VERSION_MAJOR}"; then
1693 LLVM_VERSION_INT="${LLVM_VERSION_MAJOR}0${LLVM_VERSION_MINOR}"
1694 else
1695 LLVM_VERSION_INT=`echo $LLVM_VERSION | sed -e 's/\([[0-9]]\)\.\([[0-9]]\)/\10\2/g'`
1696 fi
1697
1698 LLVM_REQUIRED_VERSION_MAJOR="3"
1699 LLVM_REQUIRED_VERSION_MINOR="3"
1700 if test "$LLVM_VERSION_INT" -lt "${LLVM_REQUIRED_VERSION_MAJOR}0${LLVM_REQUIRED_VERSION_MINOR}"; then
1701 AC_MSG_ERROR([LLVM $LLVM_REQUIRED_VERSION_MAJOR.$LLVM_REQUIRED_VERSION_MINOR or newer is required])
1702 fi
1703
1704 LLVM_COMPONENTS="engine bitwriter"
1705 if $LLVM_CONFIG --components | grep -qw 'mcjit'; then
1706 LLVM_COMPONENTS="${LLVM_COMPONENTS} mcjit"
1707 fi
1708
1709 if test "x$enable_opencl" = xyes; then
1710 LLVM_COMPONENTS="${LLVM_COMPONENTS} ipo linker instrumentation"
1711 # LLVM 3.3 >= 177971 requires IRReader
1712 if $LLVM_CONFIG --components | grep -qw 'irreader'; then
1713 LLVM_COMPONENTS="${LLVM_COMPONENTS} irreader"
1714 fi
1715 # LLVM 3.4 requires Option
1716 if $LLVM_CONFIG --components | grep -qw 'option'; then
1717 LLVM_COMPONENTS="${LLVM_COMPONENTS} option"
1718 fi
1719 # Current OpenCL/Clover and LLVM 3.5 require ObjCARCOpts and ProfileData
1720 if $LLVM_CONFIG --components | grep -qw 'objcarcopts'; then
1721 LLVM_COMPONENTS="${LLVM_COMPONENTS} objcarcopts"
1722 fi
1723 if $LLVM_CONFIG --components | grep -qw 'profiledata'; then
1724 LLVM_COMPONENTS="${LLVM_COMPONENTS} profiledata"
1725 fi
1726 fi
1727 DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT -DLLVM_VERSION_PATCH=$LLVM_VERSION_PATCH"
1728 MESA_LLVM=1
1729
1730 dnl Check for Clang internal headers
1731 if test "x$enable_opencl" = xyes; then
1732 if test -z "$CLANG_LIBDIR"; then
1733 CLANG_LIBDIR=${LLVM_LIBDIR}
1734 fi
1735 CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION}
1736 AS_IF([test ! -f "$CLANG_RESOURCE_DIR/include/stddef.h"],
1737 [AC_MSG_ERROR([Could not find clang internal header stddef.h in $CLANG_RESOURCE_DIR Use --with-clang-libdir to specify the correct path to the clang libraries.])])
1738 fi
1739 else
1740 MESA_LLVM=0
1741 LLVM_VERSION_INT=0
1742 fi
1743 else
1744 MESA_LLVM=0
1745 LLVM_VERSION_INT=0
1746
1747 if test "x$enable_opencl" = xyes; then
1748 AC_MSG_ERROR([cannot enable OpenCL without LLVM])
1749 fi
1750 fi
1751
1752 dnl Directory for XVMC libs
1753 AC_ARG_WITH([xvmc-libdir],
1754 [AS_HELP_STRING([--with-xvmc-libdir=DIR],
1755 [directory for the XVMC libraries @<:@default=${libdir}@:>@])],
1756 [XVMC_LIB_INSTALL_DIR="$withval"],
1757 [XVMC_LIB_INSTALL_DIR='${libdir}'])
1758 AC_SUBST([XVMC_LIB_INSTALL_DIR])
1759
1760 dnl
1761 dnl Gallium Tests
1762 dnl
1763 if test "x$enable_gallium_tests" = xyes; then
1764 # XXX: Use $enable_shared_pipe_drivers once converted to use static/shared pipe-drivers
1765 enable_gallium_loader=yes
1766 fi
1767 AM_CONDITIONAL(HAVE_GALLIUM_TESTS, test "x$enable_gallium_tests" = xyes)
1768
1769 dnl Directory for VDPAU libs
1770 AC_ARG_WITH([vdpau-libdir],
1771 [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1772 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1773 [VDPAU_LIB_INSTALL_DIR="$withval"],
1774 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1775 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
1776
1777 dnl Directory for OMX libs
1778
1779 AC_ARG_WITH([omx-libdir],
1780 [AS_HELP_STRING([--with-omx-libdir=DIR],
1781 [directory for the OMX libraries])],
1782 [OMX_LIB_INSTALL_DIR="$withval"],
1783 [OMX_LIB_INSTALL_DIR=`$PKG_CONFIG --define-variable=libdir=\$libdir --variable=pluginsdir libomxil-bellagio`])
1784 AC_SUBST([OMX_LIB_INSTALL_DIR])
1785
1786 dnl Directory for VA libs
1787
1788 AC_ARG_WITH([va-libdir],
1789 [AS_HELP_STRING([--with-va-libdir=DIR],
1790 [directory for the VA libraries @<:@${libdir}/dri@:>@])],
1791 [VA_LIB_INSTALL_DIR="$withval"],
1792 [VA_LIB_INSTALL_DIR="${libdir}/dri"])
1793 AC_SUBST([VA_LIB_INSTALL_DIR])
1794
1795 AC_ARG_WITH([d3d-libdir],
1796 [AS_HELP_STRING([--with-d3d-libdir=DIR],
1797 [directory for the D3D modules @<:@${libdir}/d3d@:>@])],
1798 [D3D_DRIVER_INSTALL_DIR="$withval"],
1799 [D3D_DRIVER_INSTALL_DIR="${libdir}/d3d"])
1800 AC_SUBST([D3D_DRIVER_INSTALL_DIR])
1801
1802 dnl
1803 dnl Gallium helper functions
1804 dnl
1805 gallium_require_drm() {
1806 if test "x$have_libdrm" != xyes; then
1807 AC_MSG_ERROR([$1 requires libdrm >= $LIBDRM_REQUIRED])
1808 fi
1809 }
1810
1811 gallium_require_llvm() {
1812 if test "x$MESA_LLVM" = x0; then
1813 case "$host" in *gnux32) return;; esac
1814 case "$host_cpu" in
1815 i*86|x86_64|amd64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1816 esac
1817 fi
1818 }
1819
1820 gallium_require_drm_loader() {
1821 if test "x$enable_gallium_loader" = xyes; then
1822 if test "x$need_pci_id$have_pci_id" = xyesno; then
1823 AC_MSG_ERROR([Gallium drm loader requires libudev >= $LIBUDEV_REQUIRED or sysfs])
1824 fi
1825 enable_gallium_drm_loader=yes
1826 fi
1827 if test "x$enable_va" = xyes && test "x$7" != x; then
1828 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $7"
1829 fi
1830 }
1831
1832 require_egl_drm() {
1833 case "$with_egl_platforms" in
1834 *drm*)
1835 ;;
1836 *)
1837 AC_MSG_ERROR([--with-egl-platforms=drm is required to build the $1 driver.])
1838 ;;
1839 esac
1840 if test "x$enable_gbm" != xyes; then
1841 AC_MSG_ERROR([--enable-gbm is required to build the $1 driver.])
1842 fi
1843 }
1844
1845 radeon_llvm_check() {
1846 if test "x$enable_gallium_llvm" != "xyes"; then
1847 AC_MSG_ERROR([--enable-gallium-llvm is required when building $1])
1848 fi
1849 LLVM_REQUIRED_VERSION_MAJOR="3"
1850 LLVM_REQUIRED_VERSION_MINOR="4"
1851 LLVM_REQUIRED_VERSION_PATCH="2"
1852 if test "${LLVM_VERSION_INT}${LLVM_VERSION_PATCH}" -lt "${LLVM_REQUIRED_VERSION_MAJOR}0${LLVM_REQUIRED_VERSION_MINOR}${LLVM_REQUIRED_VERSION_PATCH}"; then
1853 AC_MSG_ERROR([LLVM $LLVM_REQUIRED_VERSION_MAJOR.$LLVM_REQUIRED_VERSION_MINOR.$LLVM_REQUIRED_VERSION_PATCH or newer is required for $1])
1854 fi
1855 if test true && $LLVM_CONFIG --targets-built | grep -qvw 'R600' ; then
1856 AC_MSG_ERROR([LLVM R600 Target not enabled. You can enable it when building the LLVM
1857 sources with the --enable-experimental-targets=R600
1858 configure flag])
1859 fi
1860 LLVM_COMPONENTS="${LLVM_COMPONENTS} r600 bitreader ipo"
1861 NEED_RADEON_LLVM=yes
1862 if test "x$have_libelf" != xyes; then
1863 AC_MSG_ERROR([$1 requires libelf when using llvm])
1864 fi
1865 }
1866
1867 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
1868 if test -n "$with_gallium_drivers"; then
1869 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1870 for driver in $gallium_drivers; do
1871 case "x$driver" in
1872 xsvga)
1873 HAVE_GALLIUM_SVGA=yes
1874 gallium_require_drm "svga"
1875 gallium_require_drm_loader
1876 ;;
1877 xi915)
1878 HAVE_GALLIUM_I915=yes
1879 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1880 gallium_require_drm "Gallium i915"
1881 gallium_require_drm_loader
1882 ;;
1883 xilo)
1884 HAVE_GALLIUM_ILO=yes
1885 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1886 gallium_require_drm "Gallium i965/ilo"
1887 gallium_require_drm_loader
1888 ;;
1889 xr300)
1890 HAVE_GALLIUM_R300=yes
1891 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1892 gallium_require_drm "Gallium R300"
1893 gallium_require_drm_loader
1894 gallium_require_llvm "Gallium R300"
1895 ;;
1896 xr600)
1897 HAVE_GALLIUM_R600=yes
1898 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1899 gallium_require_drm "Gallium R600"
1900 gallium_require_drm_loader
1901 if test "x$enable_r600_llvm" = xyes -o "x$enable_opencl" = xyes; then
1902 radeon_llvm_check "r600g"
1903 LLVM_COMPONENTS="${LLVM_COMPONENTS} bitreader asmparser"
1904 fi
1905 if test "x$enable_r600_llvm" = xyes; then
1906 USE_R600_LLVM_COMPILER=yes;
1907 fi
1908 if test "x$enable_opencl" = xyes; then
1909 LLVM_COMPONENTS="${LLVM_COMPONENTS} bitreader asmparser"
1910 fi
1911 ;;
1912 xradeonsi)
1913 HAVE_GALLIUM_RADEONSI=yes
1914 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1915 gallium_require_drm "radeonsi"
1916 gallium_require_drm_loader
1917 radeon_llvm_check "radeonsi"
1918 require_egl_drm "radeonsi"
1919 ;;
1920 xnouveau)
1921 HAVE_GALLIUM_NOUVEAU=yes
1922 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1923 gallium_require_drm "nouveau"
1924 gallium_require_drm_loader
1925 ;;
1926 xfreedreno)
1927 HAVE_GALLIUM_FREEDRENO=yes
1928 PKG_CHECK_MODULES([FREEDRENO], [libdrm_freedreno >= $LIBDRM_FREEDRENO_REQUIRED])
1929 gallium_require_drm "freedreno"
1930 gallium_require_drm_loader
1931 ;;
1932 xswrast)
1933 HAVE_GALLIUM_SOFTPIPE=yes
1934 if test "x$MESA_LLVM" = x1; then
1935 HAVE_GALLIUM_LLVMPIPE=yes
1936 fi
1937 ;;
1938 xvc4)
1939 HAVE_GALLIUM_VC4=yes
1940 gallium_require_drm "vc4"
1941 gallium_require_drm_loader
1942
1943 case "$host_cpu" in
1944 i?86 | x86_64 | amd64)
1945 USE_VC4_SIMULATOR=yes
1946 ;;
1947 esac
1948 ;;
1949 *)
1950 AC_MSG_ERROR([Unknown Gallium driver: $driver])
1951 ;;
1952 esac
1953 done
1954 fi
1955
1956 dnl Set LLVM_LIBS - This is done after the driver configuration so
1957 dnl that drivers can add additional components to LLVM_COMPONENTS.
1958 dnl Previously, gallium drivers were updating LLVM_LIBS directly
1959 dnl by calling llvm-config --libs ${DRIVER_LLVM_COMPONENTS}, but
1960 dnl this was causing the same libraries to be appear multiple times
1961 dnl in LLVM_LIBS.
1962
1963 if test "x$MESA_LLVM" != x0; then
1964
1965 LLVM_LIBS="`$LLVM_CONFIG --libs ${LLVM_COMPONENTS}`"
1966
1967 if test "x$enable_llvm_shared_libs" = xyes; then
1968 dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
1969 LLVM_SO_NAME=LLVM-`$LLVM_CONFIG --version`
1970 AS_IF([test -f "$LLVM_LIBDIR/lib$LLVM_SO_NAME.so"], [llvm_have_one_so=yes])
1971
1972 if test "x$llvm_have_one_so" = xyes; then
1973 dnl LLVM was built using auto*, so there is only one shared object.
1974 LLVM_LIBS="-l$LLVM_SO_NAME"
1975 else
1976 dnl If LLVM was built with CMake, there will be one shared object per
1977 dnl component.
1978 AS_IF([test ! -f "$LLVM_LIBDIR/libLLVMTarget.so"],
1979 [AC_MSG_ERROR([Could not find llvm shared libraries:
1980 Please make sure you have built llvm with the --enable-shared option
1981 and that your llvm libraries are installed in $LLVM_LIBDIR
1982 If you have installed your llvm libraries to a different directory you
1983 can use the --with-llvm-prefix= configure flag to specify this directory.
1984 NOTE: Mesa is attempting to use llvm shared libraries by default.
1985 If you do not want to build with llvm shared libraries and instead want to
1986 use llvm static libraries then add --disable-llvm-shared-libs to your configure
1987 invocation and rebuild.])])
1988
1989 dnl We don't need to update LLVM_LIBS in this case because the LLVM
1990 dnl install uses a shared object for each component and we have
1991 dnl already added all of these objects to LLVM_LIBS.
1992 fi
1993 else
1994 AC_MSG_WARN([Building mesa with statically linked LLVM may cause compilation issues])
1995 dnl We need to link to llvm system libs when using static libs
1996 dnl However, only llvm 3.5+ provides --system-libs
1997 if test $LLVM_VERSION_MAJOR -eq 3 -a $LLVM_VERSION_MINOR -ge 5; then
1998 LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --system-libs`"
1999 fi
2000 fi
2001 fi
2002
2003 AM_CONDITIONAL(HAVE_GALLIUM_SVGA, test "x$HAVE_GALLIUM_SVGA" = xyes)
2004 AM_CONDITIONAL(HAVE_GALLIUM_I915, test "x$HAVE_GALLIUM_I915" = xyes)
2005 AM_CONDITIONAL(HAVE_GALLIUM_ILO, test "x$HAVE_GALLIUM_ILO" = xyes)
2006 AM_CONDITIONAL(HAVE_GALLIUM_R300, test "x$HAVE_GALLIUM_R300" = xyes)
2007 AM_CONDITIONAL(HAVE_GALLIUM_R600, test "x$HAVE_GALLIUM_R600" = xyes)
2008 AM_CONDITIONAL(HAVE_GALLIUM_RADEONSI, test "x$HAVE_GALLIUM_RADEONSI" = xyes)
2009 AM_CONDITIONAL(HAVE_GALLIUM_RADEON_COMMON, test "x$HAVE_GALLIUM_R600" = xyes -o \
2010 "x$HAVE_GALLIUM_RADEONSI" = xyes)
2011 AM_CONDITIONAL(HAVE_GALLIUM_NOUVEAU, test "x$HAVE_GALLIUM_NOUVEAU" = xyes)
2012 AM_CONDITIONAL(HAVE_GALLIUM_FREEDRENO, test "x$HAVE_GALLIUM_FREEDRENO" = xyes)
2013 AM_CONDITIONAL(HAVE_GALLIUM_SOFTPIPE, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes)
2014 AM_CONDITIONAL(HAVE_GALLIUM_LLVMPIPE, test "x$HAVE_GALLIUM_LLVMPIPE" = xyes)
2015 AM_CONDITIONAL(HAVE_GALLIUM_VC4, test "x$HAVE_GALLIUM_VC4" = xyes)
2016
2017 AM_CONDITIONAL(HAVE_GALLIUM_STATIC_TARGETS, test "x$enable_shared_pipe_drivers" = xno)
2018
2019 # NOTE: anything using xcb or other client side libs ends up in separate
2020 # _CLIENT variables. The pipe loader is built in two variants,
2021 # one that is standalone and does not link any x client libs (for
2022 # use by XA tracker in particular, but could be used in any case
2023 # where communication with xserver is not desired).
2024 if test "x$enable_gallium_loader" = xyes; then
2025 if test "x$NEED_WINSYS_XLIB" = xyes; then
2026 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_XLIB"
2027 fi
2028
2029 if test "x$enable_dri" = xyes; then
2030 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRI"
2031 fi
2032
2033 if test "x$enable_gallium_drm_loader" = xyes; then
2034 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRM"
2035 PKG_CHECK_MODULES([GALLIUM_PIPE_LOADER_XCB], [xcb xcb-dri2],
2036 pipe_loader_have_xcb=yes, pipe_loader_have_xcb=no)
2037 if test "x$pipe_loader_have_xcb" = xyes; then
2038 GALLIUM_PIPE_LOADER_CLIENT_DEFINES="$GALLIUM_PIPE_LOADER_CLIENT_DEFINES -DHAVE_PIPE_LOADER_XCB"
2039 GALLIUM_PIPE_LOADER_CLIENT_LIBS="$GALLIUM_PIPE_LOADER_CLIENT_LIBS $GALLIUM_PIPE_LOADER_XCB_LIBS $LIBDRM_LIBS"
2040 fi
2041 fi
2042
2043 GALLIUM_PIPE_LOADER_CLIENT_DEFINES="$GALLIUM_PIPE_LOADER_CLIENT_DEFINES $GALLIUM_PIPE_LOADER_DEFINES"
2044 GALLIUM_PIPE_LOADER_CLIENT_LIBS="$GALLIUM_PIPE_LOADER_CLIENT_LIBS $GALLIUM_PIPE_LOADER_LIBS"
2045
2046 AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
2047 AC_SUBST([GALLIUM_PIPE_LOADER_LIBS])
2048 AC_SUBST([GALLIUM_PIPE_LOADER_CLIENT_DEFINES])
2049 AC_SUBST([GALLIUM_PIPE_LOADER_CLIENT_LIBS])
2050 fi
2051
2052 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
2053 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
2054 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
2055 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
2056 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
2057 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
2058
2059 AM_CONDITIONAL(NEED_RADEON_DRM_WINSYS, test "x$HAVE_GALLIUM_R300" = xyes -o \
2060 "x$HAVE_GALLIUM_R600" = xyes -o \
2061 "x$HAVE_GALLIUM_RADEONSI" = xyes)
2062 AM_CONDITIONAL(NEED_WINSYS_XLIB, test "x$NEED_WINSYS_XLIB" = xyes)
2063 AM_CONDITIONAL(NEED_RADEON_LLVM, test x$NEED_RADEON_LLVM = xyes)
2064 AM_CONDITIONAL(USE_R600_LLVM_COMPILER, test x$USE_R600_LLVM_COMPILER = xyes)
2065 AM_CONDITIONAL(HAVE_LOADER_GALLIUM, test x$enable_gallium_loader = xyes)
2066 AM_CONDITIONAL(HAVE_DRM_LOADER_GALLIUM, test x$enable_gallium_drm_loader = xyes)
2067 AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
2068 AM_CONDITIONAL(HAVE_MESA_LLVM, test x$MESA_LLVM = x1)
2069 AM_CONDITIONAL(USE_VC4_SIMULATOR, test x$USE_VC4_SIMULATOR = xyes)
2070 if test "x$USE_VC4_SIMULATOR" = xyes -a "x$HAVE_GALLIUM_ILO" = xyes; then
2071 AC_MSG_ERROR([VC4 simulator on x86 replaces i965 driver build, so ilo must be disabled.])
2072 fi
2073
2074 AC_SUBST([ELF_LIB])
2075
2076 AM_CONDITIONAL(DRICOMMON_NEED_LIBDRM, test "x$DRICOMMON_NEED_LIBDRM" = xyes)
2077 AM_CONDITIONAL(HAVE_LIBDRM, test "x$have_libdrm" = xyes)
2078 AM_CONDITIONAL(HAVE_X11_DRIVER, test "x$enable_xlib_glx" = xyes)
2079 AM_CONDITIONAL(HAVE_OSMESA, test "x$enable_osmesa" = xyes)
2080 AM_CONDITIONAL(HAVE_GALLIUM_OSMESA, test "x$enable_gallium_osmesa" = xyes)
2081
2082 AM_CONDITIONAL(HAVE_X86_ASM, test "x$asm_arch" = xx86 -o "x$asm_arch" = xx86_64)
2083 AM_CONDITIONAL(HAVE_X86_64_ASM, test "x$asm_arch" = xx86_64)
2084 AM_CONDITIONAL(HAVE_SPARC_ASM, test "x$asm_arch" = xsparc)
2085
2086 AC_SUBST([NINE_MAJOR], 1)
2087 AC_SUBST([NINE_MINOR], 0)
2088
2089 AC_SUBST([VDPAU_MAJOR], 1)
2090 AC_SUBST([VDPAU_MINOR], 0)
2091
2092 VA_MAJOR=`$PKG_CONFIG --modversion libva | $SED -n 's/\([[^\.]]*\)\..*$/\1/p'`
2093 VA_MINOR=`$PKG_CONFIG --modversion libva | $SED -n 's/.*\.\(.*\)\..*$/\1/p'`
2094 AC_SUBST([VA_MAJOR], $VA_MAJOR)
2095 AC_SUBST([VA_MINOR], $VA_MINOR)
2096
2097 AC_SUBST([XVMC_MAJOR], 1)
2098 AC_SUBST([XVMC_MINOR], 0)
2099
2100 XA_HEADER="$srcdir/src/gallium/state_trackers/xa/xa_tracker.h"
2101 XA_MAJOR=`grep "#define XA_TRACKER_VERSION_MAJOR" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_MAJOR //'`
2102 XA_MINOR=`grep "#define XA_TRACKER_VERSION_MINOR" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_MINOR //'`
2103 XA_TINY=`grep "#define XA_TRACKER_VERSION_PATCH" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_PATCH //'`
2104
2105 AC_SUBST([XA_MAJOR], $XA_MAJOR)
2106 AC_SUBST([XA_MINOR], $XA_MINOR)
2107 AC_SUBST([XA_TINY], $XA_TINY)
2108 AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_TINY")
2109
2110 dnl Restore LDFLAGS and CPPFLAGS
2111 LDFLAGS="$_SAVE_LDFLAGS"
2112 CPPFLAGS="$_SAVE_CPPFLAGS"
2113
2114 dnl Suppress clang's warnings about unused CFLAGS and CXXFLAGS
2115 if test "x$acv_mesa_CLANG" = xyes; then
2116 CFLAGS="$CFLAGS -Qunused-arguments"
2117 CXXFLAGS="$CXXFLAGS -Qunused-arguments"
2118 fi
2119
2120 dnl Add user CFLAGS and CXXFLAGS
2121 CFLAGS="$CFLAGS $USER_CFLAGS"
2122 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
2123
2124 dnl Substitute the config
2125 AC_CONFIG_FILES([Makefile
2126 src/Makefile
2127 src/egl/drivers/dri2/Makefile
2128 src/egl/main/Makefile
2129 src/egl/main/egl.pc
2130 src/egl/wayland/Makefile
2131 src/egl/wayland/wayland-drm/Makefile
2132 src/egl/wayland/wayland-egl/Makefile
2133 src/egl/wayland/wayland-egl/wayland-egl.pc
2134 src/gallium/Makefile
2135 src/gallium/auxiliary/Makefile
2136 src/gallium/auxiliary/pipe-loader/Makefile
2137 src/gallium/drivers/freedreno/Makefile
2138 src/gallium/drivers/galahad/Makefile
2139 src/gallium/drivers/i915/Makefile
2140 src/gallium/drivers/identity/Makefile
2141 src/gallium/drivers/ilo/Makefile
2142 src/gallium/drivers/llvmpipe/Makefile
2143 src/gallium/drivers/noop/Makefile
2144 src/gallium/drivers/nouveau/Makefile
2145 src/gallium/drivers/r300/Makefile
2146 src/gallium/drivers/r600/Makefile
2147 src/gallium/drivers/radeon/Makefile
2148 src/gallium/drivers/radeonsi/Makefile
2149 src/gallium/drivers/rbug/Makefile
2150 src/gallium/drivers/softpipe/Makefile
2151 src/gallium/drivers/svga/Makefile
2152 src/gallium/drivers/trace/Makefile
2153 src/gallium/drivers/vc4/Makefile
2154 src/gallium/drivers/vc4/kernel/Makefile
2155 src/gallium/state_trackers/clover/Makefile
2156 src/gallium/state_trackers/dri/Makefile
2157 src/gallium/state_trackers/glx/xlib/Makefile
2158 src/gallium/state_trackers/nine/Makefile
2159 src/gallium/state_trackers/omx/Makefile
2160 src/gallium/state_trackers/osmesa/Makefile
2161 src/gallium/state_trackers/va/Makefile
2162 src/gallium/state_trackers/vdpau/Makefile
2163 src/gallium/state_trackers/vega/Makefile
2164 src/gallium/state_trackers/xa/Makefile
2165 src/gallium/state_trackers/xvmc/Makefile
2166 src/gallium/targets/d3dadapter9/Makefile
2167 src/gallium/targets/d3dadapter9/d3d.pc
2168 src/gallium/targets/dri/Makefile
2169 src/gallium/targets/egl-static/Makefile
2170 src/gallium/targets/gbm/Makefile
2171 src/gallium/targets/libgl-xlib/Makefile
2172 src/gallium/targets/omx/Makefile
2173 src/gallium/targets/opencl/Makefile
2174 src/gallium/targets/osmesa/Makefile
2175 src/gallium/targets/osmesa/osmesa.pc
2176 src/gallium/targets/pipe-loader/Makefile
2177 src/gallium/targets/va/Makefile
2178 src/gallium/targets/vdpau/Makefile
2179 src/gallium/targets/xa/Makefile
2180 src/gallium/targets/xa/xatracker.pc
2181 src/gallium/targets/xvmc/Makefile
2182 src/gallium/tests/trivial/Makefile
2183 src/gallium/tests/unit/Makefile
2184 src/gallium/winsys/freedreno/drm/Makefile
2185 src/gallium/winsys/i915/drm/Makefile
2186 src/gallium/winsys/intel/drm/Makefile
2187 src/gallium/winsys/nouveau/drm/Makefile
2188 src/gallium/winsys/radeon/drm/Makefile
2189 src/gallium/winsys/svga/drm/Makefile
2190 src/gallium/winsys/sw/dri/Makefile
2191 src/gallium/winsys/sw/fbdev/Makefile
2192 src/gallium/winsys/sw/kms-dri/Makefile
2193 src/gallium/winsys/sw/null/Makefile
2194 src/gallium/winsys/sw/wayland/Makefile
2195 src/gallium/winsys/sw/wrapper/Makefile
2196 src/gallium/winsys/sw/xlib/Makefile
2197 src/gallium/winsys/vc4/drm/Makefile
2198 src/gbm/Makefile
2199 src/gbm/main/gbm.pc
2200 src/glsl/Makefile
2201 src/glx/Makefile
2202 src/glx/apple/Makefile
2203 src/glx/tests/Makefile
2204 src/gtest/Makefile
2205 src/loader/Makefile
2206 src/mapi/Makefile
2207 src/mapi/es1api/glesv1_cm.pc
2208 src/mapi/es2api/glesv2.pc
2209 src/mapi/glapi/gen/Makefile
2210 src/mapi/vgapi/Makefile
2211 src/mapi/vgapi/vg.pc
2212 src/mesa/Makefile
2213 src/mesa/gl.pc
2214 src/mesa/drivers/dri/dri.pc
2215 src/mesa/drivers/dri/common/Makefile
2216 src/mesa/drivers/dri/common/xmlpool/Makefile
2217 src/mesa/drivers/dri/i915/Makefile
2218 src/mesa/drivers/dri/i965/Makefile
2219 src/mesa/drivers/dri/Makefile
2220 src/mesa/drivers/dri/nouveau/Makefile
2221 src/mesa/drivers/dri/r200/Makefile
2222 src/mesa/drivers/dri/radeon/Makefile
2223 src/mesa/drivers/dri/swrast/Makefile
2224 src/mesa/drivers/osmesa/Makefile
2225 src/mesa/drivers/osmesa/osmesa.pc
2226 src/mesa/drivers/x11/Makefile
2227 src/mesa/main/tests/Makefile
2228 src/util/Makefile
2229 src/util/tests/hash_table/Makefile])
2230
2231 AC_OUTPUT
2232
2233 dnl
2234 dnl Output some configuration info for the user
2235 dnl
2236 echo ""
2237 echo " prefix: $prefix"
2238 echo " exec_prefix: $exec_prefix"
2239 echo " libdir: $libdir"
2240 echo " includedir: $includedir"
2241
2242 dnl API info
2243 echo ""
2244 echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
2245 echo " OpenVG: $enable_openvg"
2246
2247 dnl Driver info
2248 echo ""
2249 case "x$enable_osmesa$enable_gallium_osmesa" in
2250 xnoyes)
2251 echo " OSMesa: lib$OSMESA_LIB (Gallium)"
2252 ;;
2253 xyesno)
2254 echo " OSMesa: lib$OSMESA_LIB"
2255 ;;
2256 xnono)
2257 echo " OSMesa: no"
2258 ;;
2259 esac
2260
2261 echo ""
2262 if test "x$enable_dri" != xno; then
2263 echo " DRI platform: $dri_platform"
2264 if test -z "$DRI_DIRS"; then
2265 echo " DRI drivers: no"
2266 else
2267 echo " DRI drivers: $DRI_DIRS"
2268 fi
2269 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
2270 fi
2271
2272 case "x$enable_glx$enable_xlib_glx" in
2273 xyesyes)
2274 echo " GLX: Xlib-based"
2275 ;;
2276 xyesno)
2277 echo " GLX: DRI-based"
2278 ;;
2279 *)
2280 echo " GLX: $enable_glx"
2281 ;;
2282 esac
2283
2284 dnl EGL
2285 echo ""
2286 echo " EGL: $enable_egl"
2287 if test "$enable_egl" = yes; then
2288 echo " EGL platforms: $egl_platforms"
2289
2290 egl_drivers=""
2291 if test "x$HAVE_EGL_DRIVER_DRI2" != "x"; then
2292 egl_drivers="$egl_drivers builtin:egl_dri2"
2293 fi
2294
2295 echo " EGL drivers: $egl_drivers"
2296 fi
2297
2298 echo ""
2299 if test "x$MESA_LLVM" = x1; then
2300 echo " llvm: yes"
2301 echo " llvm-config: $LLVM_CONFIG"
2302 echo " llvm-version: $LLVM_VERSION"
2303 else
2304 echo " llvm: no"
2305 fi
2306
2307 echo ""
2308 if test -n "$with_gallium_drivers"; then
2309 echo " Gallium: yes"
2310 else
2311 echo " Gallium: no"
2312 fi
2313
2314
2315 dnl Libraries
2316 echo ""
2317 echo " Shared libs: $enable_shared"
2318 echo " Static libs: $enable_static"
2319 echo " Shared-glapi: $enable_shared_glapi"
2320
2321 dnl Compiler options
2322 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2323 cflags=`echo $CFLAGS | \
2324 $SED 's/^ *//;s/ */ /;s/ *$//'`
2325 cxxflags=`echo $CXXFLAGS | \
2326 $SED 's/^ *//;s/ */ /;s/ *$//'`
2327 defines=`echo $DEFINES | $SED 's/^ *//;s/ */ /;s/ *$//'`
2328 echo ""
2329 echo " CFLAGS: $cflags"
2330 echo " CXXFLAGS: $cxxflags"
2331 echo " Macros: $defines"
2332 echo ""
2333 if test "x$MESA_LLVM" = x1; then
2334 echo " LLVM_CFLAGS: $LLVM_CFLAGS"
2335 echo " LLVM_CXXFLAGS: $LLVM_CXXFLAGS"
2336 echo " LLVM_CPPFLAGS: $LLVM_CPPFLAGS"
2337 echo ""
2338 fi
2339 echo " PYTHON2: $PYTHON2"
2340
2341 echo ""
2342 echo " Run '${MAKE-make}' to build Mesa"
2343 echo ""