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