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