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