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