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