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