ddca0022f8cfea92e433123c5d20fcff88f85e1c
[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.2.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 [AC_SUBST([AM_DEFAULT_VERBOSITY], [1])])
25
26 m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
27
28 dnl Set internal versions
29 OSMESA_VERSION=8
30 AC_SUBST([OSMESA_VERSION])
31
32 dnl Versions for external dependencies
33 LIBDRM_REQUIRED=2.4.24
34 LIBDRM_RADEON_REQUIRED=2.4.42
35 LIBDRM_INTEL_REQUIRED=2.4.38
36 LIBDRM_NVVIEUX_REQUIRED=2.4.33
37 LIBDRM_NOUVEAU_REQUIRED="2.4.33 libdrm >= 2.4.41"
38 DRI2PROTO_REQUIRED=2.6
39 GLPROTO_REQUIRED=1.4.14
40 LIBDRM_XORG_REQUIRED=2.4.24
41 LIBKMS_XORG_REQUIRED=1.0.0
42
43 dnl Check for progs
44 AC_PROG_CPP
45 AC_PROG_CC
46 AX_PROG_CC_FOR_BUILD
47 AC_PROG_CXX
48 AX_PROG_CXX_FOR_BUILD
49 AM_PROG_CC_C_O
50 AM_PROG_AS
51 AC_CHECK_PROGS([MAKE], [gmake make])
52 AC_CHECK_PROGS([PYTHON2], [python2 python])
53 AX_PYTHON_MODULE([libxml2], [needed])
54 AC_PROG_SED
55 AC_PROG_MKDIR_P
56
57 LT_PREREQ([2.2])
58 LT_INIT([disable-static])
59
60 AX_PROG_BISON([],
61 AS_IF([test ! -f "$srcdir/src/glsl/glcpp/glcpp-parse.c"],
62 [AC_MSG_ERROR([bison not found - unable to compile glcpp-parse.y])]))
63 AX_PROG_FLEX([],
64 AS_IF([test ! -f "$srcdir/src/glsl/glcpp/glcpp-lex.c"],
65 [AC_MSG_ERROR([flex not found - unable to compile glcpp-lex.l])]))
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 case "$host_os" in
504 darwin*|mingw*)
505 ;;
506 *)
507 AC_CHECK_FUNCS([clock_gettime], [CLOCK_LIB=],
508 [AC_CHECK_LIB([rt], [clock_gettime], [CLOCK_LIB=-lrt],
509 [AC_MSG_ERROR([Couldn't find clock_gettime])])])
510 AC_SUBST([CLOCK_LIB])
511 ;;
512 esac
513
514 dnl See if posix_memalign is available
515 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
516
517 dnl Check for pthreads
518 AX_PTHREAD
519 dnl AX_PTHREADS leaves PTHREAD_LIBS empty for gcc and sets PTHREAD_CFLAGS
520 dnl to -pthread, which causes problems if we need -lpthread to appear in
521 dnl pkgconfig files.
522 test -z "$PTHREAD_LIBS" && PTHREAD_LIBS="-lpthread"
523
524 dnl SELinux awareness.
525 AC_ARG_ENABLE([selinux],
526 [AS_HELP_STRING([--enable-selinux],
527 [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
528 [MESA_SELINUX="$enableval"],
529 [MESA_SELINUX=no])
530 if test "x$enable_selinux" = "xyes"; then
531 AC_CHECK_HEADER([selinux/selinux.h],[],
532 [AC_MSG_ERROR([SELinux headers not found])])
533 AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
534 [AC_MSG_ERROR([SELinux library not found])])
535 SELINUX_LIBS="-lselinux"
536 DEFINES="$DEFINES -DMESA_SELINUX"
537 fi
538 AC_SUBST([SELINUX_LIBS])
539
540 dnl Options for APIs
541 AC_ARG_ENABLE([opengl],
542 [AS_HELP_STRING([--disable-opengl],
543 [disable support for standard OpenGL API @<:@default=no@:>@])],
544 [enable_opengl="$enableval"],
545 [enable_opengl=yes])
546 AC_ARG_ENABLE([gles1],
547 [AS_HELP_STRING([--enable-gles1],
548 [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
549 [enable_gles1="$enableval"],
550 [enable_gles1=no])
551 AC_ARG_ENABLE([gles2],
552 [AS_HELP_STRING([--enable-gles2],
553 [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
554 [enable_gles2="$enableval"],
555 [enable_gles2=no])
556 AC_ARG_ENABLE([openvg],
557 [AS_HELP_STRING([--enable-openvg],
558 [enable support for OpenVG API @<:@default=no@:>@])],
559 [enable_openvg="$enableval"],
560 [enable_openvg=no])
561
562 AC_ARG_ENABLE([dri],
563 [AS_HELP_STRING([--enable-dri],
564 [enable DRI modules @<:@default=enabled@:>@])],
565 [enable_dri="$enableval"],
566 [enable_dri=yes])
567 AC_ARG_ENABLE([glx],
568 [AS_HELP_STRING([--enable-glx],
569 [enable GLX library @<:@default=enabled@:>@])],
570 [enable_glx="$enableval"],
571 [enable_glx=yes])
572 AC_ARG_ENABLE([osmesa],
573 [AS_HELP_STRING([--enable-osmesa],
574 [enable OSMesa library @<:@default=disabled@:>@])],
575 [enable_osmesa="$enableval"],
576 [enable_osmesa=no])
577 AC_ARG_ENABLE([egl],
578 [AS_HELP_STRING([--disable-egl],
579 [disable EGL library @<:@default=enabled@:>@])],
580 [enable_egl="$enableval"],
581 [enable_egl=yes])
582
583 AC_ARG_ENABLE([xorg],
584 [AS_HELP_STRING([--enable-xorg],
585 [enable support for X.Org DDX API @<:@default=no@:>@])],
586 [enable_xorg="$enableval"],
587 [enable_xorg=no])
588 AC_ARG_ENABLE([xa],
589 [AS_HELP_STRING([--enable-xa],
590 [enable build of the XA X Acceleration API @<:@default=no@:>@])],
591 [enable_xa="$enableval"],
592 [enable_xa=no])
593 AC_ARG_ENABLE([gbm],
594 [AS_HELP_STRING([--enable-gbm],
595 [enable gbm library @<:@default=auto@:>@])],
596 [enable_gbm="$enableval"],
597 [enable_gbm=auto])
598
599 AC_ARG_ENABLE([xvmc],
600 [AS_HELP_STRING([--enable-xvmc],
601 [enable xvmc library @<:@default=auto@:>@])],
602 [enable_xvmc="$enableval"],
603 [enable_xvmc=auto])
604 AC_ARG_ENABLE([vdpau],
605 [AS_HELP_STRING([--enable-vdpau],
606 [enable vdpau library @<:@default=auto@:>@])],
607 [enable_vdpau="$enableval"],
608 [enable_vdpau=auto])
609 AC_ARG_ENABLE([opencl],
610 [AS_HELP_STRING([--enable-opencl],
611 [enable OpenCL library NOTE: Enabling this option will also enable
612 --with-llvm-shared-libs
613 @<:@default=no@:>@])],
614 [],
615 [enable_opencl=no])
616 AC_ARG_ENABLE([xlib_glx],
617 [AS_HELP_STRING([--enable-xlib-glx],
618 [make GLX library Xlib-based instead of DRI-based @<:@default=disabled@:>@])],
619 [enable_xlib_glx="$enableval"],
620 [enable_xlib_glx=no])
621 AC_ARG_ENABLE([gallium_egl],
622 [AS_HELP_STRING([--enable-gallium-egl],
623 [enable optional EGL state tracker (not required
624 for EGL support in Gallium with OpenGL and OpenGL ES)
625 @<:@default=disable@:>@])],
626 [enable_gallium_egl="$enableval"],
627 [enable_gallium_egl=no])
628 AC_ARG_ENABLE([gallium_gbm],
629 [AS_HELP_STRING([--enable-gallium-gbm],
630 [enable optional gbm state tracker (not required for
631 gbm support in Gallium)
632 @<:@default=auto@:>@])],
633 [enable_gallium_gbm="$enableval"],
634 [enable_gallium_gbm=auto])
635
636 AC_ARG_ENABLE([r600-llvm-compiler],
637 [AS_HELP_STRING([--enable-r600-llvm-compiler],
638 [Enable experimental LLVM backend for graphics shaders @<:@default=disable@:>@])],
639 [enable_r600_llvm="$enableval"],
640 [enable_r600_llvm=no])
641
642 AC_ARG_ENABLE([gallium_tests],
643 [AS_HELP_STRING([--enable-gallium-tests],
644 [Enable optional Gallium tests) @<:@default=disable@:>@])],
645 [enable_gallium_tests="$enableval"],
646 [enable_gallium_tests=no])
647
648 # Option for Gallium drivers
649
650 # Keep this in sync with the --with-gallium-drivers help string default value
651 GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
652
653 AC_ARG_WITH([gallium-drivers],
654 [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
655 [comma delimited Gallium drivers list, e.g.
656 "i915,nouveau,r300,r600,radeonsi,svga,swrast"
657 @<:@default=r300,r600,svga,swrast@:>@])],
658 [with_gallium_drivers="$withval"],
659 [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
660
661 # Doing '--without-gallium-drivers' will set this variable to 'no'. Clear it
662 # here so that the script doesn't choke on an unknown driver name later.
663 case "$with_gallium_drivers" in
664 yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
665 no) with_gallium_drivers='' ;;
666 esac
667
668 if test "x$enable_opengl" = xno -a \
669 "x$enable_gles1" = xno -a \
670 "x$enable_gles2" = xno -a \
671 "x$enable_openvg" = xno -a \
672 "x$enable_xorg" = xno -a \
673 "x$enable_xa" = 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 if test "x$enable_opengl$enable_xlib_glx" = xnoyes; then
704 AC_MSG_ERROR([Xlib-GLX cannot be built without OpenGL])
705 fi
706
707 # Disable GLX if OpenGL is not enabled
708 if test "x$enable_glx$enable_opengl" = xyesno; then
709 AC_MSG_WARN([OpenGL not enabled, disabling GLX])
710 enable_glx=no
711 fi
712
713 # Disable GLX if DRI and Xlib-GLX are not enabled
714 if test "x$enable_glx" = xyes -a \
715 "x$enable_dri" = xno -a \
716 "x$enable_xlib_glx" = xno; then
717 AC_MSG_WARN([Neither DRI nor Xlib-GLX enabled, disabling GLX])
718 enable_glx=no
719 fi
720
721 AM_CONDITIONAL(HAVE_DRI, test "x$enable_dri" = xyes)
722 AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_xlib_glx" = xyes -o \
723 "x$enable_osmesa" = xyes)
724
725 AC_ARG_ENABLE([shared-glapi],
726 [AS_HELP_STRING([--enable-shared-glapi],
727 [Enable shared glapi for OpenGL @<:@default=yes@:>@])],
728 [enable_shared_glapi="$enableval"],
729 [enable_shared_glapi="$enable_dri"])
730
731 # Shared GLAPI is only useful for DRI
732 if test "x$enable_dri" = xno; then
733 AC_MSG_NOTICE([Shared GLAPI is only useful for DRI, disabling])
734 enable_shared_glapi=no
735 fi
736
737 if test "x$enable_shared_glapi" = xyes; then
738 # libGL will use libglapi for function lookups (IN_DRI_DRIVER means to use
739 # the remap table)
740 DEFINES="$DEFINES -DIN_DRI_DRIVER"
741 CORE_DIRS="mapi/shared-glapi"
742 fi
743 AM_CONDITIONAL(HAVE_SHARED_GLAPI, test "x$enable_shared_glapi" = xyes)
744
745 dnl
746 dnl Driver specific build directories
747 dnl
748 GALLIUM_DIRS="auxiliary drivers state_trackers"
749 GALLIUM_TARGET_DIRS=""
750 GALLIUM_WINSYS_DIRS="sw"
751 GALLIUM_DRIVERS_DIRS="galahad trace rbug noop identity"
752 GALLIUM_STATE_TRACKERS_DIRS=""
753
754 # build glapi if OpenGL is enabled
755 if test "x$enable_opengl" = xyes; then
756 CORE_DIRS="$CORE_DIRS mapi/glapi"
757 fi
758
759 # build es1api if OpenGL ES 1.x is enabled
760 if test "x$enable_gles1" = xyes; then
761 CORE_DIRS="$CORE_DIRS mapi/es1api"
762 fi
763
764 # build es2api if OpenGL ES 2.x is enabled
765 if test "x$enable_gles2" = xyes; then
766 CORE_DIRS="$CORE_DIRS mapi/es2api"
767 fi
768
769 # build glsl and mesa if OpenGL or OpenGL ES is enabled
770 case "x$enable_opengl$enable_gles1$enable_gles2" in
771 x*yes*)
772 CORE_DIRS="mapi/glapi/gen $CORE_DIRS gtest glsl mesa"
773 ;;
774 esac
775
776 case "x$enable_glx$enable_xlib_glx" in
777 xyesyes)
778 DRIVER_DIRS="$DRIVER_DIRS x11"
779 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
780 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
781 GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS"
782 HAVE_WINSYS_XLIB="yes"
783 ;;
784 xyesno)
785 # DRI-based GLX
786 SRC_DIRS="$SRC_DIRS glx"
787 ;;
788 esac
789
790 if test "x$enable_dri" = xyes; then
791 DRIVER_DIRS="$DRIVER_DIRS dri"
792
793 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/dri"
794 GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
795 HAVE_ST_DRI="yes"
796 fi
797
798 if test "x$enable_osmesa" = xyes; then
799 DRIVER_DIRS="$DRIVER_DIRS osmesa"
800 fi
801
802 AC_SUBST([SRC_DIRS])
803 AC_SUBST([DRIVER_DIRS])
804 AC_SUBST([GALLIUM_DIRS])
805 AC_SUBST([GALLIUM_TARGET_DIRS])
806 AC_SUBST([GALLIUM_WINSYS_DIRS])
807 AC_SUBST([GALLIUM_DRIVERS_DIRS])
808 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
809 AC_SUBST([MESA_LLVM])
810
811 # Check for libdrm
812 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
813 [have_libdrm=yes], [have_libdrm=no])
814
815 if test "x$enable_dri" = xyes; then
816 # DRI must be shared, I think
817 if test "$enable_static" = yes; then
818 AC_MSG_ERROR([Cannot use static libraries for DRI drivers])
819 fi
820
821 # not a hard requirement as swrast does not depend on it
822 if test "x$have_libdrm" = xyes; then
823 DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
824 fi
825 fi
826
827 dnl Direct rendering or just indirect rendering
828 case "$host_os" in
829 gnu*)
830 dnl Disable by default on GNU/Hurd
831 driglx_direct_default="no"
832 ;;
833 cygwin*)
834 dnl Disable by default on cygwin
835 driglx_direct_default="no"
836 ;;
837 *)
838 driglx_direct_default="yes"
839 ;;
840 esac
841 AC_ARG_ENABLE([driglx-direct],
842 [AS_HELP_STRING([--disable-driglx-direct],
843 [disable direct rendering in GLX and EGL for DRI \
844 @<:@default=auto@:>@])],
845 [driglx_direct="$enableval"],
846 [driglx_direct="$driglx_direct_default"])
847
848 dnl
849 dnl libGL configuration per driver
850 dnl
851 case "x$enable_glx$enable_xlib_glx" in
852 xyesyes)
853 # Xlib-based GLX
854 PKG_CHECK_MODULES([XLIBGL], [x11 xext])
855 GL_PC_REQ_PRIV="x11 xext"
856 X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
857 GL_LIB_DEPS="$XLIBGL_LIBS"
858 GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
859 GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm $PTHREAD_LIBS"
860 ;;
861 xyesno)
862 # DRI-based GLX
863 PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
864 if test x"$driglx_direct" = xyes; then
865 if test "x$have_libdrm" != xyes; then
866 AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
867 fi
868 PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
869 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED"
870 fi
871
872 # find the DRI deps for libGL
873 dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx >= 1.8.1 xcb-dri2 >= 1.8"
874
875 # add xf86vidmode if available
876 PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
877 if test "$HAVE_XF86VIDMODE" = yes ; then
878 dri_modules="$dri_modules xxf86vm"
879 fi
880
881 PKG_CHECK_MODULES([DRIGL], [$dri_modules])
882 GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
883 X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
884 GL_LIB_DEPS="$DRIGL_LIBS"
885
886 # need DRM libs, $PTHREAD_LIBS, etc.
887 GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
888 GL_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
889 ;;
890 esac
891
892 # This is outside the case (above) so that it is invoked even for non-GLX
893 # builds.
894 AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
895
896 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
897 GLESv1_CM_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
898 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
899 GLESv2_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS"
900
901 AC_SUBST([X11_INCLUDES])
902 AC_SUBST([GL_LIB_DEPS])
903 AC_SUBST([GL_PC_REQ_PRIV])
904 AC_SUBST([GL_PC_LIB_PRIV])
905 AC_SUBST([GL_PC_CFLAGS])
906 AC_SUBST([DRI_PC_REQ_PRIV])
907 AC_SUBST([GLESv1_CM_LIB_DEPS])
908 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
909 AC_SUBST([GLESv2_LIB_DEPS])
910 AC_SUBST([GLESv2_PC_LIB_PRIV])
911
912 DRI_LIB_DEPS="\$(top_builddir)/src/mesa/libdricore/libdricore${VERSION}.la"
913
914 AC_SUBST([HAVE_XF86VIDMODE])
915
916 dnl
917 dnl More GLX setup
918 dnl
919 case "x$enable_glx$enable_xlib_glx" in
920 xyesyes)
921 DEFINES="$DEFINES -DUSE_XSHM"
922 ;;
923 xyesno)
924 DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
925 if test "x$driglx_direct" = xyes; then
926 DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
927 fi
928 ;;
929 esac
930
931 dnl
932 dnl TLS detection
933 dnl
934
935 AC_ARG_ENABLE([glx-tls],
936 [AS_HELP_STRING([--enable-glx-tls],
937 [enable TLS support in GLX @<:@default=disabled@:>@])],
938 [GLX_USE_TLS="$enableval"],
939 [GLX_USE_TLS=no])
940 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
941
942 AS_IF([test "x$GLX_USE_TLS" = xyes -a "x$ax_pthread_ok" = xyes],
943 [DEFINES="${DEFINES} -DGLX_USE_TLS -DHAVE_PTHREAD"])
944
945 dnl
946 dnl More DRI setup
947 dnl
948 dnl Directory for DRI drivers
949 AC_ARG_WITH([dri-driverdir],
950 [AS_HELP_STRING([--with-dri-driverdir=DIR],
951 [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
952 [DRI_DRIVER_INSTALL_DIR="$withval"],
953 [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
954 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
955 dnl Extra search path for DRI drivers
956 AC_ARG_WITH([dri-searchpath],
957 [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
958 [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
959 [DRI_DRIVER_SEARCH_DIR="$withval"],
960 [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
961 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
962 dnl Which drivers to build - default is chosen by platform
963 AC_ARG_WITH([dri-drivers],
964 [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
965 [comma delimited DRI drivers list, e.g.
966 "swrast,i965,radeon" @<:@default=auto@:>@])],
967 [with_dri_drivers="$withval"],
968 [with_dri_drivers=yes])
969 if test "x$with_dri_drivers" = x; then
970 with_dri_drivers=no
971 fi
972
973 dnl If $with_dri_drivers is yes, directories will be added through
974 dnl platform checks
975 DRI_DIRS=""
976 case "$with_dri_drivers" in
977 no) ;;
978 yes)
979 # classic DRI drivers require FEATURE_GL to build
980 if test "x$enable_opengl" = xyes; then
981 DRI_DIRS="yes"
982 fi
983 ;;
984 *)
985 # verify the requested driver directories exist
986 dri_drivers=`IFS=', '; echo $with_dri_drivers`
987 for driver in $dri_drivers; do
988 test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
989 AC_MSG_ERROR([DRI driver directory '$driver' does not exist])
990 done
991 DRI_DIRS="$dri_drivers"
992 if test -n "$DRI_DIRS" -a "x$enable_opengl" != xyes; then
993 AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
994 fi
995 ;;
996 esac
997
998 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
999 if test "x$enable_dri" = xyes; then
1000 # Platform specific settings and drivers to build
1001 case "$host_os" in
1002 linux*)
1003 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1004 DEFINES="$DEFINES -DHAVE_ALIAS"
1005
1006 case "$host_cpu" in
1007 x86_64)
1008 if test "x$DRI_DIRS" = "xyes"; then
1009 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1010 fi
1011 ;;
1012 powerpc*)
1013 # Build only the drivers for cards that exist on PowerPC.
1014 if test "x$DRI_DIRS" = "xyes"; then
1015 DRI_DIRS="r200 radeon swrast"
1016 fi
1017 ;;
1018 sparc*)
1019 # Build only the drivers for cards that exist on sparc
1020 if test "x$DRI_DIRS" = "xyes"; then
1021 DRI_DIRS="r200 radeon swrast"
1022 fi
1023 ;;
1024 esac
1025 ;;
1026 freebsd* | dragonfly* | *netbsd*)
1027 DEFINES="$DEFINES -DHAVE_PTHREAD -DUSE_EXTERNAL_DXTN_LIB=1"
1028 DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
1029
1030 if test "x$DRI_DIRS" = "xyes"; then
1031 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1032 fi
1033 ;;
1034 gnu*)
1035 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1036 DEFINES="$DEFINES -DHAVE_ALIAS"
1037 ;;
1038 solaris*)
1039 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1040 ;;
1041 cygwin*)
1042 DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1043 if test "x$DRI_DIRS" = "xyes"; then
1044 DRI_DIRS="swrast"
1045 fi
1046 ;;
1047 esac
1048
1049 # default drivers
1050 if test "x$DRI_DIRS" = "xyes"; then
1051 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1052 fi
1053
1054 DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
1055
1056 # Check for expat
1057 EXPAT_INCLUDES=""
1058 EXPAT_LIB=-lexpat
1059 AC_ARG_WITH([expat],
1060 [AS_HELP_STRING([--with-expat=DIR],
1061 [expat install directory])],[
1062 EXPAT_INCLUDES="-I$withval/include"
1063 CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
1064 LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
1065 EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
1066 ])
1067 AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
1068 save_LIBS="$LIBS"
1069 AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1070 [AC_MSG_ERROR([Expat required for DRI.])])
1071 LIBS="$save_LIBS"
1072
1073 # If we are building any DRI driver other than swrast.
1074 if test -n "$DRI_DIRS" -a x"$DRI_DIRS" != xswrast; then
1075 # ... libdrm is required
1076 if test "x$have_libdrm" != xyes; then
1077 AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
1078 fi
1079 # ... and build dricommon
1080 HAVE_COMMON_DRI=yes
1081 fi
1082
1083 # put all the necessary libs together
1084 DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm $PTHREAD_LIBS $DLOPEN_LIBS"
1085 GALLIUM_DRI_LIB_DEPS="$GALLIUM_DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm $CLOCK_LIB $PTHREAD_LIBS $DLOPEN_LIBS"
1086 fi
1087 AM_CONDITIONAL(NEED_LIBDRICORE, test -n "$DRI_DIRS")
1088 AC_SUBST([DRI_DIRS])
1089 AC_SUBST([EXPAT_INCLUDES])
1090 AC_SUBST([DRI_LIB_DEPS])
1091 AC_SUBST([GALLIUM_DRI_LIB_DEPS])
1092
1093 case $DRI_DIRS in
1094 *i915*|*i965*)
1095 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1096
1097 for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1098 case $d in
1099 i915)
1100 HAVE_I915_DRI=yes;
1101 ;;
1102 i965)
1103 HAVE_I965_DRI=yes;
1104 ;;
1105 esac
1106 done
1107
1108 ;;
1109 esac
1110
1111 case $DRI_DIRS in
1112 *nouveau*)
1113 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED])
1114 HAVE_NOUVEAU_DRI=yes;
1115 ;;
1116 esac
1117
1118 case $DRI_DIRS in
1119 *radeon*|*r200*)
1120 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1121
1122 for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1123 case $d in
1124 radeon)
1125 HAVE_RADEON_DRI=yes;
1126 ;;
1127 r200)
1128 HAVE_R200_DRI=yes;
1129 ;;
1130 esac
1131 done
1132
1133 ;;
1134 esac
1135
1136 case $DRI_DIRS in
1137 *swrast*)
1138 HAVE_SWRAST_DRI=yes;
1139 ;;
1140 esac
1141
1142 dnl
1143 dnl OSMesa configuration
1144 dnl
1145
1146 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1147 AC_ARG_WITH([osmesa-bits],
1148 [AS_HELP_STRING([--with-osmesa-bits=BITS],
1149 [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1150 [osmesa_bits="$withval"],
1151 [osmesa_bits=8])
1152 if test "x$osmesa_bits" != x8; then
1153 if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then
1154 AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1155 osmesa_bits=8
1156 fi
1157 fi
1158 case "x$osmesa_bits" in
1159 x8)
1160 OSMESA_LIB="${OSMESA_LIB}"
1161 ;;
1162 x16|x32)
1163 OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
1164 DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1165 ;;
1166 *)
1167 AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1168 ;;
1169 esac
1170
1171 if test "x$enable_osmesa" = xyes; then
1172 # only link libraries with osmesa if shared
1173 if test "$enable_static" = no; then
1174 OSMESA_LIB_DEPS="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1175 else
1176 OSMESA_LIB_DEPS=""
1177 fi
1178 OSMESA_MESA_DEPS=""
1179 OSMESA_PC_LIB_PRIV="-lm $PTHREAD_LIBS $SELINUX_LIBS $DLOPEN_LIBS"
1180 fi
1181
1182 AC_SUBST([OSMESA_LIB_DEPS])
1183 AC_SUBST([OSMESA_MESA_DEPS])
1184 AC_SUBST([OSMESA_PC_REQ])
1185 AC_SUBST([OSMESA_PC_LIB_PRIV])
1186
1187 dnl
1188 dnl gbm configuration
1189 dnl
1190 if test "x$enable_gbm" = xauto; then
1191 case "$with_egl_platforms" in
1192 *drm*)
1193 enable_gbm=yes ;;
1194 *)
1195 enable_gbm=no ;;
1196 esac
1197 fi
1198 if test "x$enable_gbm" = xyes; then
1199 SRC_DIRS="$SRC_DIRS gbm"
1200
1201 PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1202 AC_MSG_ERROR([gbm needs udev]))
1203
1204 if test "x$enable_dri" = xyes; then
1205 GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
1206 if test "x$enable_shared_glapi" = xno; then
1207 AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1208 fi
1209 fi
1210 fi
1211 GBM_PC_REQ_PRIV="libudev"
1212 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1213 AC_SUBST([GBM_PC_REQ_PRIV])
1214 AC_SUBST([GBM_PC_LIB_PRIV])
1215
1216 dnl
1217 dnl EGL configuration
1218 dnl
1219 EGL_CLIENT_APIS=""
1220
1221 if test "x$enable_egl" = xyes; then
1222 SRC_DIRS="$SRC_DIRS egl"
1223 EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS $PTHREAD_LIBS"
1224
1225 AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1226
1227 if test "$enable_static" != yes; then
1228 # build egl_glx when libGL is built
1229 PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1230 [have_libudev=yes],[have_libudev=no])
1231 if test "$have_libudev" = yes; then
1232 DEFINES="$DEFINES -DHAVE_LIBUDEV"
1233 fi
1234
1235 if test "x$enable_dri" = xyes; then
1236 HAVE_EGL_DRIVER_DRI2=1
1237 fi
1238
1239 fi
1240 fi
1241 AC_SUBST([EGL_LIB_DEPS])
1242
1243 dnl
1244 dnl EGL Gallium configuration
1245 dnl
1246 if test "x$enable_gallium_egl" = xyes; then
1247 if test "x$with_gallium_drivers" = x; then
1248 AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
1249 fi
1250 if test "x$enable_egl" = xno; then
1251 AC_MSG_ERROR([cannot enable egl_gallium without EGL])
1252 fi
1253 if test "x$have_libdrm" != xyes; then
1254 AC_MSG_ERROR([egl_gallium requires libdrm >= $LIBDRM_REQUIRED])
1255 fi
1256
1257 GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
1258 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static"
1259 HAVE_ST_EGL="yes"
1260 fi
1261
1262 dnl
1263 dnl gbm Gallium configuration
1264 dnl
1265 if test "x$enable_gallium_gbm" = xauto; then
1266 case "$enable_gbm$HAVE_ST_EGL$enable_dri$with_egl_platforms" in
1267 yesyesyes*drm*)
1268 enable_gallium_gbm=yes ;;
1269 *)
1270 enable_gallium_gbm=no ;;
1271 esac
1272 fi
1273 if test "x$enable_gallium_gbm" = xyes; then
1274 if test "x$with_gallium_drivers" = x; then
1275 AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
1276 fi
1277 if test "x$enable_gbm" = xno; then
1278 AC_MSG_ERROR([cannot enable gbm_gallium without gbm])
1279 fi
1280 # gbm_gallium abuses DRI_LIB_DEPS to link. Make sure it is set.
1281 if test "x$enable_dri" = xno; then
1282 AC_MSG_ERROR([gbm_gallium requires --enable-dri to build])
1283 fi
1284
1285 GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS"
1286 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm"
1287 HAVE_ST_GBM="yes"
1288 enable_gallium_loader=yes
1289 fi
1290
1291 dnl
1292 dnl X.Org DDX configuration
1293 dnl
1294 if test "x$enable_xorg" = xyes; then
1295 PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1296 PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1297 PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1298 PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1299 HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1300 HAVE_XEXTPROTO_71="no")
1301 GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS"
1302 HAVE_ST_XORG=yes
1303 fi
1304
1305 dnl
1306 dnl XA configuration
1307 dnl
1308 if test "x$enable_xa" = xyes; then
1309 AC_PROG_AWK
1310 AC_PROG_GREP
1311 AC_CHECK_PROG(NM, nm, "nm")
1312 if test "x$AWK" = x || test "x$GREP" = x || test "x$NM" = x; then
1313 AC_MSG_WARN([Missing one of nm, grep or awk. Disabling xa.])
1314 enable_xa=no
1315 fi
1316 fi
1317 if test "x$enable_xa" = xyes; then
1318 GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS"
1319 HAVE_ST_XA=yes
1320 AC_SUBST(AWK)
1321 AC_SUBST(GREP)
1322 AC_SUBST(NM)
1323 fi
1324
1325 dnl
1326 dnl OpenVG configuration
1327 dnl
1328 VG_LIB_DEPS=""
1329
1330 if test "x$enable_openvg" = xyes; then
1331 if test "x$enable_egl" = xno; then
1332 AC_MSG_ERROR([cannot enable OpenVG without EGL])
1333 fi
1334 if test "x$with_gallium_drivers" = x; then
1335 AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1336 fi
1337 if test "x$enable_gallium_egl" = xno; then
1338 AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
1339 fi
1340
1341 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1342 VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS $PTHREAD_LIBS"
1343 CORE_DIRS="$CORE_DIRS mapi/vgapi"
1344 GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1345 HAVE_ST_VEGA=yes
1346 VG_PC_LIB_PRIV="-lm $CLOCK_LIB $PTHREAD_LIBS $DLOPEN_LIBS"
1347 AC_SUBST([VG_PC_LIB_PRIV])
1348 fi
1349 AM_CONDITIONAL(HAVE_OPENVG, test "x$enable_openvg" = xyes)
1350
1351 dnl
1352 dnl Gallium G3DVL configuration
1353 dnl
1354 AC_ARG_ENABLE([gallium-g3dvl],
1355 [AS_HELP_STRING([--enable-gallium-g3dvl],
1356 [build gallium g3dvl @<:@default=disabled@:>@])],
1357 [enable_gallium_g3dvl="$enableval"],
1358 [enable_gallium_g3dvl=no])
1359 if test "x$enable_gallium_g3dvl" = xyes; then
1360 if test "x$with_gallium_drivers" = x; then
1361 AC_MSG_ERROR([cannot enable G3DVL without Gallium])
1362 fi
1363
1364 if test "x$enable_xvmc" = xauto; then
1365 PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no])
1366 fi
1367
1368 if test "x$enable_vdpau" = xauto; then
1369 PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no])
1370 fi
1371 fi
1372
1373 if test "x$enable_xvmc" = xyes; then
1374 PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6 x11-xcb xcb-dri2 >= 1.8])
1375 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xvmc"
1376 HAVE_ST_XVMC="yes"
1377 fi
1378
1379 if test "x$enable_vdpau" = xyes; then
1380 PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.4.1 x11-xcb xcb-dri2 >= 1.8])
1381 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau"
1382 HAVE_ST_VDPAU="yes"
1383 fi
1384
1385 dnl
1386 dnl OpenCL configuration
1387 dnl
1388
1389 AC_ARG_WITH([libclc-path],
1390 [AS_HELP_STRING([--with-libclc-path],
1391 [DEPRECATED: See http://dri.freedesktop.org/wiki/GalliumCompute#How_to_Install])],
1392 [LIBCLC_PATH="$withval"],
1393 [LIBCLC_PATH=""])
1394
1395 if test "x$LIBCLC_PATH" != x; then
1396 AC_MSG_ERROR([The --with-libclc-path option has been deprecated.
1397 Please review the updated build instructions for clover:
1398 http://dri.freedesktop.org/wiki/GalliumCompute])
1399 fi
1400
1401
1402 AC_ARG_WITH([clang-libdir],
1403 [AS_HELP_STRING([--with-clang-libdir],
1404 [Path to Clang libraries @<:@default=llvm-config --libdir@:>@])],
1405 [CLANG_LIBDIR="$withval"],
1406 [CLANG_LIBDIR=""])
1407
1408 LIBCLC_INCLUDEDIR=`pkg-config --variable=includedir libclc`
1409 LIBCLC_LIBEXECDIR=`pkg-config --variable=libexecdir libclc`
1410 AC_SUBST([LIBCLC_INCLUDEDIR])
1411 AC_SUBST([LIBCLC_LIBEXECDIR])
1412
1413 if test "x$enable_opencl" = xyes; then
1414 if test "x$with_gallium_drivers" = x; then
1415 AC_MSG_ERROR([cannot enable OpenCL without Gallium])
1416 fi
1417
1418 if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6; then
1419 AC_MSG_ERROR([gcc >= 4.6 is required to build clover])
1420 fi
1421
1422 if test "x$LIBCLC_INCLUDEDIR" == x || test "x$LIBCLC_LIBEXECDIR" == x; then
1423 AC_MSG_ERROR([pkg-config cannot use libclc.pc which is required to build clover])
1424 fi
1425
1426 GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS clover"
1427 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS opencl"
1428 enable_gallium_loader=yes
1429 fi
1430
1431 if test "x$enable_gallium_gbm" = xyes || test "x$enable_opencl" = xyes; then
1432 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS pipe-loader"
1433 fi
1434
1435 dnl
1436 dnl Gallium configuration
1437 dnl
1438 if test "x$with_gallium_drivers" != x; then
1439 SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
1440 fi
1441 AM_CONDITIONAL(HAVE_GALLIUM, test "x$with_gallium_drivers" != x)
1442
1443 AC_SUBST([LLVM_BINDIR])
1444 AC_SUBST([LLVM_CFLAGS])
1445 AC_SUBST([LLVM_CPPFLAGS])
1446 AC_SUBST([LLVM_CXXFLAGS])
1447 AC_SUBST([LLVM_LIBDIR])
1448 AC_SUBST([LLVM_LIBS])
1449 AC_SUBST([LLVM_LDFLAGS])
1450 AC_SUBST([LLVM_INCLUDEDIR])
1451 AC_SUBST([LLVM_VERSION])
1452 AC_SUBST([CLANG_RESOURCE_DIR])
1453
1454 case "x$enable_opengl$enable_gles1$enable_gles2" in
1455 x*yes*)
1456 EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1457 HAVE_OPENGL=yes
1458 ;;
1459 esac
1460 AM_CONDITIONAL(HAVE_OPENGL, test "x$HAVE_OPENGL" = xyes)
1461
1462 AC_SUBST([VG_LIB_DEPS])
1463 AC_SUBST([EGL_CLIENT_APIS])
1464
1465 dnl
1466 dnl EGL Platforms configuration
1467 dnl
1468 AC_ARG_WITH([egl-platforms],
1469 [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1470 [comma delimited native platforms libEGL supports, e.g.
1471 "x11,drm" @<:@default=auto@:>@])],
1472 [with_egl_platforms="$withval"],
1473 [if test "x$enable_egl" = xyes; then
1474 with_egl_platforms="x11"
1475 else
1476 with_egl_platforms=""
1477 fi])
1478
1479 EGL_PLATFORMS=""
1480
1481 if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
1482 AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1483 fi
1484
1485 # Do per-EGL platform setups and checks
1486 egl_platforms=`IFS=', '; echo $with_egl_platforms`
1487 for plat in $egl_platforms; do
1488 case "$plat" in
1489 fbdev|null)
1490 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/$plat"
1491 ;;
1492
1493 wayland)
1494 PKG_CHECK_MODULES([WAYLAND], [wayland-client >= 1.0.2 wayland-server >= 1.0.2])
1495 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
1496
1497 WAYLAND_PREFIX=`$PKG_CONFIG --variable=prefix wayland-client`
1498 AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner],,
1499 [${WAYLAND_PREFIX}/bin$PATH_SEPARATOR$PATH])
1500 ;;
1501
1502 x11)
1503 PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 >= 1.8 xcb-xfixes])
1504
1505 if test "x$enable_glx" = xyes; then
1506 HAVE_EGL_DRIVER_GLX=1
1507 fi
1508 ;;
1509
1510 drm)
1511 test "x$enable_gbm" = "xno" &&
1512 AC_MSG_ERROR([EGL platform drm needs gbm])
1513 ;;
1514
1515 android|gdi)
1516 ;;
1517
1518 *)
1519 AC_MSG_ERROR([EGL platform '$plat' does not exist])
1520 ;;
1521 esac
1522
1523 case "$plat$have_libudev" in
1524 waylandno|drmno)
1525 AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;;
1526 esac
1527 done
1528
1529 # libEGL wants to default to the first platform specified in
1530 # ./configure. parse that here.
1531 if test "x$egl_platforms" != "x"; then
1532 FIRST_PLATFORM_CAPS=`echo $egl_platforms | sed 's| .*||' | tr 'a-z' 'A-Z'`
1533 EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
1534 else
1535 EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
1536 fi
1537
1538 EGL_PLATFORMS="$egl_platforms"
1539
1540 AM_CONDITIONAL(HAVE_EGL_PLATFORM_X11, echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1)
1541 AM_CONDITIONAL(HAVE_EGL_PLATFORM_WAYLAND, echo "$egl_platforms" | grep 'wayland' >/dev/null 2>&1)
1542 AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep 'drm' >/dev/null 2>&1)
1543 AM_CONDITIONAL(HAVE_EGL_PLATFORM_FBDEV, echo "$egl_platforms" | grep 'fbdev' >/dev/null 2>&1)
1544 AM_CONDITIONAL(HAVE_EGL_PLATFORM_NULL, echo "$egl_platforms" | grep 'null' >/dev/null 2>&1)
1545
1546 AM_CONDITIONAL(HAVE_EGL_DRIVER_DRI2, test "x$HAVE_EGL_DRIVER_DRI2" != "x")
1547 AM_CONDITIONAL(HAVE_EGL_DRIVER_GLX, test "x$HAVE_EGL_DRIVER_GLX" != "x")
1548
1549 AC_SUBST([EGL_NATIVE_PLATFORM])
1550 AC_SUBST([EGL_PLATFORMS])
1551 AC_SUBST([EGL_CFLAGS])
1552
1553 AC_ARG_WITH([egl-driver-dir],
1554 [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1555 [directory for EGL drivers [[default=${libdir}/egl]]])],
1556 [EGL_DRIVER_INSTALL_DIR="$withval"],
1557 [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1558 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1559
1560 AC_ARG_WITH([xorg-driver-dir],
1561 [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1562 [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1563 [XORG_DRIVER_INSTALL_DIR="$withval"],
1564 [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1565 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1566
1567 AC_ARG_WITH([max-width],
1568 [AS_HELP_STRING([--with-max-width=N],
1569 [Maximum framebuffer width (4096)])],
1570 [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1571 AS_IF([test "${withval}" -gt "4096"],
1572 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1573 )
1574 AC_ARG_WITH([max-height],
1575 [AS_HELP_STRING([--with-max-height=N],
1576 [Maximum framebuffer height (4096)])],
1577 [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1578 AS_IF([test "${withval}" -gt "4096"],
1579 [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1580 )
1581
1582 dnl
1583 dnl Gallium LLVM
1584 dnl
1585 AC_ARG_ENABLE([gallium-llvm],
1586 [AS_HELP_STRING([--enable-gallium-llvm],
1587 [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1588 [enable_gallium_llvm="$enableval"],
1589 [enable_gallium_llvm=auto])
1590
1591 AC_ARG_WITH([llvm-shared-libs],
1592 [AS_HELP_STRING([--with-llvm-shared-libs],
1593 [link with LLVM shared libraries @<:@default=disabled@:>@])],
1594 [],
1595 [with_llvm_shared_libs=no])
1596 AS_IF([test x$enable_opencl = xyes],
1597 [
1598 AC_MSG_WARN([OpenCL required, forcing LLVM shared libraries])
1599 with_llvm_shared_libs=yes
1600 ])
1601
1602 AC_ARG_WITH([llvm-prefix],
1603 [AS_HELP_STRING([--with-llvm-prefix],
1604 [Prefix for LLVM installations in non-standard locations])],
1605 [llvm_prefix="$withval"],
1606 [llvm_prefix=""])
1607
1608
1609 # Call this inside ` ` to get the return value.
1610 # $1 is the llvm-config command with arguments.
1611 strip_unwanted_llvm_flags() {
1612 # Use \> (marks the end of the word)
1613 echo `$1` | sed \
1614 -e 's/-DNDEBUG\>//g' \
1615 -e 's/-pedantic\>//g' \
1616 -e 's/-Wcovered-switch-default\>//g' \
1617 -e 's/-O.\>//g' \
1618 -e 's/-g\>//g' \
1619 -e 's/-Wall\>//g' \
1620 -e 's/-fomit-frame-pointer\>//g'
1621 }
1622
1623
1624 if test "x$with_gallium_drivers" = x; then
1625 enable_gallium_llvm=no
1626 fi
1627 if test "x$enable_gallium_llvm" = xauto; then
1628 case "$host_cpu" in
1629 i*86|x86_64) enable_gallium_llvm=yes;;
1630 esac
1631 fi
1632 if test "x$enable_gallium_llvm" = xyes; then
1633 if test "x$llvm_prefix" != x; then
1634 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no], ["$llvm_prefix/bin"])
1635 else
1636 AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1637 fi
1638
1639 if test "x$LLVM_CONFIG" != xno; then
1640 LLVM_VERSION=`$LLVM_CONFIG --version | sed 's/svn.*//g'`
1641 LLVM_VERSION_INT=`echo $LLVM_VERSION | sed -e 's/\([[0-9]]\)\.\([[0-9]]\)/\10\2/g'`
1642 LLVM_COMPONENTS="engine bitwriter"
1643 if $LLVM_CONFIG --components | grep -q '\<mcjit\>'; then
1644 LLVM_COMPONENTS="${LLVM_COMPONENTS} mcjit"
1645 fi
1646 if $LLVM_CONFIG --components | grep -q '\<oprofilejit\>'; then
1647 LLVM_COMPONENTS="${LLVM_COMPONENTS} oprofilejit"
1648 fi
1649
1650 if test "x$enable_opencl" = xyes; then
1651 LLVM_COMPONENTS="${LLVM_COMPONENTS} ipo linker instrumentation"
1652 fi
1653 LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1654 LLVM_BINDIR=`$LLVM_CONFIG --bindir`
1655 LLVM_CPPFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cppflags"`
1656 LLVM_CFLAGS=$LLVM_CPPFLAGS # CPPFLAGS seem to be sufficient
1657 LLVM_CXXFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cxxflags"`
1658 LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
1659 LLVM_LIBDIR=`$LLVM_CONFIG --libdir`
1660 DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT"
1661 MESA_LLVM=1
1662
1663 dnl Check for Clang interanl headers
1664 if test "x$enable_opencl" = xyes; then
1665 if test "x$CLANG_LIBDIR" = x; then
1666 CLANG_LIBDIR=${LLVM_LIBDIR}
1667 fi
1668 CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION}
1669 AC_CHECK_FILE("$CLANG_RESOURCE_DIR/include/stddef.h",,
1670 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.]))
1671 fi
1672 else
1673 MESA_LLVM=0
1674 LLVM_VERSION_INT=0
1675 fi
1676 else
1677 MESA_LLVM=0
1678 LLVM_VERSION_INT=0
1679 fi
1680
1681 dnl Directory for XVMC libs
1682 AC_ARG_WITH([xvmc-libdir],
1683 [AS_HELP_STRING([--with-xvmc-libdir=DIR],
1684 [directory for the XVMC libraries @<:@default=${libdir}@:>@])],
1685 [XVMC_LIB_INSTALL_DIR="$withval"],
1686 [XVMC_LIB_INSTALL_DIR='${libdir}'])
1687 AC_SUBST([XVMC_LIB_INSTALL_DIR])
1688
1689 dnl
1690 dnl Gallium Tests
1691 dnl
1692 if test "x$enable_gallium_tests" = xyes; then
1693 SRC_DIRS="$SRC_DIRS gallium/tests/trivial gallium/tests/unit"
1694 enable_gallium_loader=yes
1695 fi
1696
1697 dnl Directory for VDPAU libs
1698 AC_ARG_WITH([vdpau-libdir],
1699 [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1700 [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1701 [VDPAU_LIB_INSTALL_DIR="$withval"],
1702 [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1703 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
1704
1705 dnl Directory for OpenCL libs
1706 AC_ARG_WITH([opencl-libdir],
1707 [AS_HELP_STRING([--with-opencl-libdir=DIR],
1708 [directory for auxiliary libraries used by the OpenCL implementation @<:@default=${libdir}/opencl@:>@])],
1709 [OPENCL_LIB_INSTALL_DIR="$withval"],
1710 [OPENCL_LIB_INSTALL_DIR='${libdir}/opencl'])
1711 AC_SUBST([OPENCL_LIB_INSTALL_DIR])
1712
1713 dnl
1714 dnl Gallium helper functions
1715 dnl
1716 gallium_check_st() {
1717 if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes ||
1718 test "x$HAVE_ST_XA" = xyes || test "x$HAVE_ST_XVMC" = xyes ||
1719 test "x$HAVE_ST_VDPAU" = xyes; then
1720 if test "x$have_libdrm" != xyes; then
1721 AC_MSG_ERROR([DRI or Xorg DDX requires libdrm >= $LIBDRM_REQUIRED])
1722 fi
1723 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1724 fi
1725 if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1726 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1727 HAVE_COMMON_DRI=yes
1728 fi
1729 if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
1730 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1731 fi
1732 if test "x$HAVE_ST_XA" = xyes && test "x$4" != x; then
1733 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
1734 fi
1735 if test "x$HAVE_ST_XVMC" = xyes && test "x$5" != x; then
1736 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5"
1737 fi
1738 if test "x$HAVE_ST_VDPAU" = xyes && test "x$6" != x; then
1739 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6"
1740 fi
1741 }
1742
1743 gallium_require_llvm() {
1744 if test "x$MESA_LLVM" = x0; then
1745 case "$host_cpu" in
1746 i*86|x86_64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1747 esac
1748 fi
1749 }
1750
1751 gallium_require_drm_loader() {
1752 if test "x$enable_gallium_loader" = xyes; then
1753 PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1754 AC_MSG_ERROR([Gallium drm loader requires libudev]))
1755 if test "x$have_libdrm" != xyes; then
1756 AC_MSG_ERROR([Gallium drm loader requires libdrm >= $LIBDRM_REQUIRED])
1757 fi
1758 enable_gallium_drm_loader=yes
1759 fi
1760 }
1761
1762 radeon_llvm_check() {
1763 LLVM_REQUIRED_VERSION_MAJOR="3"
1764 LLVM_REQUIRED_VERSION_MINOR="2"
1765 if test "$LLVM_VERSION_INT" -lt "${LLVM_REQUIRED_VERSION_MAJOR}0${LLVM_REQUIRED_VERSION_MINOR}"; then
1766 AC_MSG_ERROR([LLVM $LLVM_REQUIRED_VERSION_MAJOR.$LLVM_REQUIRED_VERSION_MINOR or newer with R600 target enabled is required.
1767 To use the r600/radeonsi LLVM backend, you need to fetch the LLVM source from:
1768 git://people.freedesktop.org/~tstellar/llvm master
1769 and build with --enable-experimental-targets=R600])
1770 fi
1771 if test true && $LLVM_CONFIG --targets-built | grep -qv '\<R600\>' ; then
1772 AC_MSG_ERROR([LLVM R600 Target not enabled. You can enable it when building the LLVM
1773 sources with the --enable-experimental-targets=R600
1774 configure flag])
1775 fi
1776 AC_MSG_WARN([Please ensure you use the latest llvm tree from git://people.freedesktop.org/~tstellar/llvm master before submitting a bug])
1777 LLVM_COMPONENTS="${LLVM_COMPONENTS} r600"
1778 }
1779
1780 dnl Gallium drivers
1781 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
1782 if test "x$with_gallium_drivers" != x; then
1783 gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1784 for driver in $gallium_drivers; do
1785 case "x$driver" in
1786 xsvga)
1787 HAVE_GALLIUM_SVGA=yes
1788 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
1789 gallium_check_st "svga/drm" "dri-vmwgfx" "" "xa-vmwgfx"
1790 ;;
1791 xi915)
1792 HAVE_GALLIUM_I915=yes
1793 PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1794 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe"
1795 if test "x$MESA_LLVM" = x1; then
1796 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1797 fi
1798 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1799 gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1800 ;;
1801 xr300)
1802 HAVE_GALLIUM_R300=yes
1803 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1804 gallium_require_llvm "Gallium R300"
1805 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1806 gallium_check_st "radeon/drm" "dri-r300" "" "" "xvmc-r300" "vdpau-r300"
1807 ;;
1808 xr600)
1809 HAVE_GALLIUM_R600=yes
1810 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1811 gallium_require_drm_loader
1812 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1813 if test "x$enable_r600_llvm" = xyes -o "x$enable_opencl" = xyes; then
1814 radeon_llvm_check
1815 NEED_RADEON_GALLIUM=yes;
1816 R600_NEED_RADEON_GALLIUM=yes;
1817 LLVM_COMPONENTS="${LLVM_COMPONENTS} ipo bitreader asmparser"
1818 fi
1819 if test "x$enable_r600_llvm" = xyes; then
1820 USE_R600_LLVM_COMPILER=yes;
1821 fi
1822 if test "x$enable_opencl" = xyes; then
1823 LLVM_COMPONENTS="${LLVM_COMPONENTS} bitreader asmparser"
1824 fi
1825 gallium_check_st "radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600"
1826 ;;
1827 xradeonsi)
1828 HAVE_GALLIUM_RADEONSI=yes
1829 PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1830 gallium_require_drm_loader
1831 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS radeonsi"
1832 radeon_llvm_check
1833 NEED_RADEON_GALLIUM=yes;
1834 gallium_check_st "radeon/drm" "dri-radeonsi" "xorg-radeonsi" "" "" "vdpau-radeonsi" ""
1835 ;;
1836 xnouveau)
1837 HAVE_GALLIUM_NOUVEAU=yes
1838 PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1839 gallium_require_drm_loader
1840 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nv30 nv50 nvc0"
1841 gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau" "" "xvmc-nouveau" "vdpau-nouveau"
1842 ;;
1843 xswrast)
1844 HAVE_GALLIUM_SOFTPIPE=yes
1845 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe"
1846 if test "x$MESA_LLVM" = x1; then
1847 HAVE_GALLIUM_LLVMPIPE=yes
1848 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1849 fi
1850
1851 if test "x$HAVE_ST_DRI" = xyes; then
1852 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1853 fi
1854 if test "x$HAVE_ST_VDPAU" = xyes; then
1855 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS vdpau-softpipe"
1856 fi
1857 if test "x$HAVE_ST_XVMC" = xyes; then
1858 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS xvmc-softpipe"
1859 fi
1860 if test "x$HAVE_ST_VDPAU" = xyes ||
1861 test "x$HAVE_ST_XVMC" = xyes; then
1862 if test "x$HAVE_WINSYS_XLIB" != xyes; then
1863 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
1864 fi
1865 fi
1866 ;;
1867 *)
1868 AC_MSG_ERROR([Unknown Gallium driver: $driver])
1869 ;;
1870 esac
1871 done
1872 fi
1873
1874 dnl Set LLVM_LIBS - This is done after the driver configuration so
1875 dnl that drivers can add additonal components to LLVM_COMPONENTS.
1876 dnl Previously, gallium drivers were updating LLVM_LIBS directly
1877 dnl by calling llvm-config --libs ${DRIVER_LLVM_COMPONENTS}, but
1878 dnl this was causing the same libraries to be appear multiple times
1879 dnl in LLVM_LIBS.
1880
1881 if test "x$MESA_LLVM" != x0; then
1882
1883 LLVM_LIBS="`$LLVM_CONFIG --libs ${LLVM_COMPONENTS}`"
1884
1885 if test "x$with_llvm_shared_libs" = xyes; then
1886 dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
1887 LLVM_SO_NAME=LLVM-`$LLVM_CONFIG --version`
1888 AC_CHECK_FILE("$LLVM_LIBDIR/lib$LLVM_SO_NAME.so", llvm_have_one_so=yes,)
1889
1890 if test "x$llvm_have_one_so" = xyes; then
1891 dnl LLVM was built using auto*, so there is only one shared object.
1892 LLVM_LIBS="-l$LLVM_SO_NAME"
1893 else
1894 dnl If LLVM was built with CMake, there will be one shared object per
1895 dnl component.
1896 AC_CHECK_FILE("$LLVM_LIBDIR/libLLVMTarget.so",,
1897 AC_MSG_ERROR([Could not find llvm shared libraries:
1898 Please make sure you have built llvm with the --enable-shared option
1899 and that your llvm libraries are installed in $LLVM_LIBDIR
1900 If you have installed your llvm libraries to a different directory you
1901 can use the --with-llvm-prefix= configure flag to specify this directory.
1902 NOTE: Mesa is attempting to use llvm shared libraries because you have
1903 passed one of the following options to configure:
1904 --with-llvm-shared-libs
1905 --enable-opencl
1906 If you do not want to build with llvm shared libraries and instead want to
1907 use llvm static libraries then remove these options from your configure
1908 invocation and reconfigure.]))
1909
1910 dnl We don't need to update LLVM_LIBS in this case because the LLVM
1911 dnl install uses a shared object for each compoenent and we have
1912 dnl already added all of these objects to LLVM_LIBS.
1913 fi
1914 fi
1915 fi
1916
1917 AM_CONDITIONAL(HAVE_GALLIUM_SVGA, test "x$HAVE_GALLIUM_SVGA" = xyes)
1918 AM_CONDITIONAL(HAVE_GALLIUM_I915, test "x$HAVE_GALLIUM_I915" = xyes)
1919 AM_CONDITIONAL(HAVE_GALLIUM_R300, test "x$HAVE_GALLIUM_R300" = xyes)
1920 AM_CONDITIONAL(HAVE_GALLIUM_R600, test "x$HAVE_GALLIUM_R600" = xyes)
1921 AM_CONDITIONAL(HAVE_GALLIUM_RADEONSI, test "x$HAVE_GALLIUM_RADEONSI" = xyes)
1922 AM_CONDITIONAL(HAVE_GALLIUM_NOUVEAU, test "x$HAVE_GALLIUM_NOUVEAU" = xyes)
1923 AM_CONDITIONAL(HAVE_GALLIUM_SOFTPIPE, test "x$HAVE_GALLIUM_SOFTPIPE" = xyes)
1924 AM_CONDITIONAL(HAVE_GALLIUM_LLVMPIPE, test "x$HAVE_GALLIUM_LLVMPIPE" = xyes)
1925
1926 if test "x$enable_gallium_loader" = xyes; then
1927 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
1928 GALLIUM_PIPE_LOADER_DEFINES="-DHAVE_PIPE_LOADER_SW"
1929 GALLIUM_PIPE_LOADER_LIBS="\$(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_loader.la"
1930 GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS \$(top_builddir)/src/gallium/winsys/sw/null/libws_null.la"
1931
1932 if test "x$HAVE_WINSYS_XLIB" = xyes; then
1933 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_XLIB"
1934 GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS \$(top_builddir)/src/gallium/winsys/sw/xlib/libws_xlib.la"
1935 fi
1936
1937 if test "x$enable_gallium_drm_loader" = xyes; then
1938 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRM"
1939 PKG_CHECK_MODULES([GALLIUM_PIPE_LOADER_XCB], [xcb xcb-dri2],
1940 pipe_loader_have_xcb=yes, pipe_loader_have_xcb=no)
1941 if test "x$pipe_loader_have_xcb" = xyes; then
1942 GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DPIPE_LOADER_HAVE_XCB"
1943 GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS $GALLIUM_PIPE_LOADER_XCB_LIBS $LIBDRM_LIBS"
1944 fi
1945 fi
1946
1947 AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES])
1948 AC_SUBST([GALLIUM_PIPE_LOADER_LIBS])
1949 fi
1950
1951 dnl Tell Automake which drivers to build
1952 for driver in $GALLIUM_DRIVERS_DIRS; do
1953 case "x$driver" in
1954 xgalahad)
1955 HAVE_GALAHAD_GALLIUM=yes;
1956 ;;
1957 xidentity)
1958 HAVE_IDENTITY_GALLIUM=yes;
1959 ;;
1960 xnoop)
1961 HAVE_NOOP_GALLIUM=yes;
1962 ;;
1963 *)
1964 GALLIUM_MAKE_DIRS="$GALLIUM_MAKE_DIRS $driver"
1965 ;;
1966 esac
1967 done
1968
1969 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
1970 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
1971 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
1972 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
1973 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
1974 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
1975 AM_CONDITIONAL(HAVE_COMMON_DRI, test x$HAVE_COMMON_DRI = xyes)
1976
1977 AM_CONDITIONAL(HAVE_GALAHAD_GALLIUM, test x$HAVE_GALAHAD_GALLIUM = xyes)
1978 AM_CONDITIONAL(HAVE_IDENTITY_GALLIUM, test x$HAVE_IDENTITY_GALLIUM = xyes)
1979 AM_CONDITIONAL(HAVE_NOOP_GALLIUM, test x$HAVE_NOOP_GALLIUM = xyes)
1980 AM_CONDITIONAL(NEED_RADEON_GALLIUM, test x$NEED_RADEON_GALLIUM = xyes)
1981 AM_CONDITIONAL(R600_NEED_RADEON_GALLIUM, test x$R600_NEED_RADEON_GALLIUM = xyes)
1982 AM_CONDITIONAL(USE_R600_LLVM_COMPILER, test x$USE_R600_LLVM_COMPILER = xyes)
1983 AM_CONDITIONAL(HAVE_LOADER_GALLIUM, test x$enable_gallium_loader = xyes)
1984 AM_CONDITIONAL(HAVE_DRM_LOADER_GALLIUM, test x$enable_gallium_drm_loader = xyes)
1985 AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
1986 AM_CONDITIONAL(HAVE_MESA_LLVM, test x$MESA_LLVM = x1)
1987 AM_CONDITIONAL(LLVM_NEEDS_FNORTTI, test $LLVM_VERSION_INT -ge 302)
1988
1989 AC_SUBST([GALLIUM_MAKE_DIRS])
1990
1991 AM_CONDITIONAL(NEED_LIBPROGRAM, test "x$with_gallium_drivers" != x -o \
1992 "x$enable_xlib_glx" = xyes -o \
1993 "x$enable_osmesa" = xyes)
1994 AM_CONDITIONAL(HAVE_X11_DRIVER, echo "$DRIVER_DIRS" | grep 'x11' >/dev/null 2>&1)
1995
1996 AM_CONDITIONAL(HAVE_X86_ASM, echo "$DEFINES" | grep 'X86_ASM' >/dev/null 2>&1)
1997 AM_CONDITIONAL(HAVE_X86_64_ASM, echo "$DEFINES" | grep 'X86_64_ASM' >/dev/null 2>&1)
1998 AM_CONDITIONAL(HAVE_SPARC_ASM, echo "$DEFINES" | grep 'SPARC_ASM' >/dev/null 2>&1)
1999
2000 AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes)
2001
2002 AC_SUBST([VDPAU_MAJOR], 1)
2003 AC_SUBST([VDPAU_MINOR], 0)
2004
2005 AC_SUBST([XVMC_MAJOR], 1)
2006 AC_SUBST([XVMC_MINOR], 0)
2007
2008 AC_SUBST([XA_MAJOR], 1)
2009 AC_SUBST([XA_MINOR], 0)
2010 AC_SUBST([XA_TINY], 0)
2011 AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_TINY")
2012
2013 dnl prepend CORE_DIRS to SRC_DIRS
2014 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
2015
2016 dnl Restore LDFLAGS and CPPFLAGS
2017 LDFLAGS="$_SAVE_LDFLAGS"
2018 CPPFLAGS="$_SAVE_CPPFLAGS"
2019
2020 dnl Add user CFLAGS and CXXFLAGS
2021 CFLAGS="$CFLAGS $USER_CFLAGS"
2022 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
2023
2024 dnl Substitute the config
2025 AC_CONFIG_FILES([Makefile
2026 src/Makefile
2027 src/egl/Makefile
2028 src/egl/drivers/Makefile
2029 src/egl/drivers/dri2/Makefile
2030 src/egl/drivers/glx/Makefile
2031 src/egl/main/Makefile
2032 src/egl/main/egl.pc
2033 src/egl/wayland/Makefile
2034 src/egl/wayland/wayland-drm/Makefile
2035 src/egl/wayland/wayland-egl/Makefile
2036 src/egl/wayland/wayland-egl/wayland-egl.pc
2037 src/gallium/Makefile
2038 src/gallium/auxiliary/Makefile
2039 src/gallium/auxiliary/pipe-loader/Makefile
2040 src/gallium/drivers/Makefile
2041 src/gallium/drivers/i915/Makefile
2042 src/gallium/drivers/llvmpipe/Makefile
2043 src/gallium/drivers/nouveau/Makefile
2044 src/gallium/drivers/nv30/Makefile
2045 src/gallium/drivers/nv50/Makefile
2046 src/gallium/drivers/nvc0/Makefile
2047 src/gallium/drivers/r300/Makefile
2048 src/gallium/drivers/r600/Makefile
2049 src/gallium/drivers/radeon/Makefile
2050 src/gallium/drivers/radeonsi/Makefile
2051 src/gallium/drivers/rbug/Makefile
2052 src/gallium/drivers/softpipe/Makefile
2053 src/gallium/drivers/svga/Makefile
2054 src/gallium/drivers/trace/Makefile
2055 src/gallium/state_trackers/Makefile
2056 src/gallium/state_trackers/clover/Makefile
2057 src/gallium/state_trackers/dri/Makefile
2058 src/gallium/state_trackers/dri/drm/Makefile
2059 src/gallium/state_trackers/dri/sw/Makefile
2060 src/gallium/state_trackers/egl/Makefile
2061 src/gallium/state_trackers/gbm/Makefile
2062 src/gallium/state_trackers/glx/Makefile
2063 src/gallium/state_trackers/vdpau/Makefile
2064 src/gallium/state_trackers/vega/Makefile
2065 src/gallium/state_trackers/xa/Makefile
2066 src/gallium/state_trackers/xorg/Makefile
2067 src/gallium/state_trackers/xvmc/Makefile
2068 src/gallium/targets/Makefile
2069 src/gallium/targets/dri-i915/Makefile
2070 src/gallium/targets/dri-nouveau/Makefile
2071 src/gallium/targets/dri-r300/Makefile
2072 src/gallium/targets/dri-r600/Makefile
2073 src/gallium/targets/dri-radeonsi/Makefile
2074 src/gallium/targets/dri-swrast/Makefile
2075 src/gallium/targets/dri-vmwgfx/Makefile
2076 src/gallium/targets/egl-static/Makefile
2077 src/gallium/targets/gbm/Makefile
2078 src/gallium/targets/opencl/Makefile
2079 src/gallium/targets/pipe-loader/Makefile
2080 src/gallium/targets/libgl-xlib/Makefile
2081 src/gallium/targets/vdpau-nouveau/Makefile
2082 src/gallium/targets/vdpau-r300/Makefile
2083 src/gallium/targets/vdpau-r600/Makefile
2084 src/gallium/targets/vdpau-radeonsi/Makefile
2085 src/gallium/targets/vdpau-softpipe/Makefile
2086 src/gallium/targets/xa-vmwgfx/Makefile
2087 src/gallium/targets/xa-vmwgfx/xatracker.pc
2088 src/gallium/targets/xorg-i915/Makefile
2089 src/gallium/targets/xorg-nouveau/Makefile
2090 src/gallium/targets/xorg-r600/Makefile
2091 src/gallium/targets/xorg-radeonsi/Makefile
2092 src/gallium/targets/xvmc-nouveau/Makefile
2093 src/gallium/targets/xvmc-r300/Makefile
2094 src/gallium/targets/xvmc-r600/Makefile
2095 src/gallium/targets/xvmc-softpipe/Makefile
2096 src/gallium/tests/trivial/Makefile
2097 src/gallium/tests/unit/Makefile
2098 src/gallium/winsys/Makefile
2099 src/gallium/winsys/i915/drm/Makefile
2100 src/gallium/winsys/i915/sw/Makefile
2101 src/gallium/winsys/nouveau/drm/Makefile
2102 src/gallium/winsys/radeon/drm/Makefile
2103 src/gallium/winsys/svga/drm/Makefile
2104 src/gallium/winsys/sw/Makefile
2105 src/gallium/winsys/sw/dri/Makefile
2106 src/gallium/winsys/sw/fbdev/Makefile
2107 src/gallium/winsys/sw/null/Makefile
2108 src/gallium/winsys/sw/wayland/Makefile
2109 src/gallium/winsys/sw/wrapper/Makefile
2110 src/gallium/winsys/sw/xlib/Makefile
2111 src/gbm/Makefile
2112 src/gbm/main/gbm.pc
2113 src/glsl/Makefile
2114 src/glsl/builtin_compiler/Makefile
2115 src/glx/Makefile
2116 src/glx/tests/Makefile
2117 src/gtest/Makefile
2118 src/mapi/es1api/Makefile
2119 src/mapi/es1api/glesv1_cm.pc
2120 src/mapi/es2api/Makefile
2121 src/mapi/es2api/glesv2.pc
2122 src/mapi/glapi/Makefile
2123 src/mapi/glapi/gen/Makefile
2124 src/mapi/glapi/tests/Makefile
2125 src/mapi/shared-glapi/Makefile
2126 src/mapi/shared-glapi/tests/Makefile
2127 src/mapi/vgapi/Makefile
2128 src/mapi/vgapi/vg.pc
2129 src/mesa/Makefile
2130 src/mesa/gl.pc
2131 src/mesa/drivers/Makefile
2132 src/mesa/drivers/dri/dri.pc
2133 src/mesa/drivers/dri/common/Makefile
2134 src/mesa/drivers/dri/common/xmlpool/Makefile
2135 src/mesa/drivers/dri/i915/Makefile
2136 src/mesa/drivers/dri/i965/Makefile
2137 src/mesa/drivers/dri/Makefile
2138 src/mesa/drivers/dri/nouveau/Makefile
2139 src/mesa/drivers/dri/r200/Makefile
2140 src/mesa/drivers/dri/radeon/Makefile
2141 src/mesa/drivers/dri/swrast/Makefile
2142 src/mesa/drivers/osmesa/Makefile
2143 src/mesa/drivers/osmesa/osmesa.pc
2144 src/mesa/drivers/x11/Makefile
2145 src/mesa/libdricore/Makefile
2146 src/mesa/main/tests/Makefile
2147 src/mesa/main/tests/hash_table/Makefile
2148 src/mesa/program/Makefile
2149 src/mesa/x86-64/Makefile
2150 src/mesa/x86/Makefile])
2151
2152 dnl Sort the dirs alphabetically
2153 GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2154 GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2155 GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2156 GALLIUM_MAKE_DIRS=`echo $GALLIUM_MAKE_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2157 GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
2158
2159 AC_OUTPUT
2160
2161 dnl
2162 dnl Output some configuration info for the user
2163 dnl
2164 echo ""
2165 echo " prefix: $prefix"
2166 echo " exec_prefix: $exec_prefix"
2167 echo " libdir: $libdir"
2168 echo " includedir: $includedir"
2169
2170 dnl API info
2171 echo ""
2172 echo " OpenGL: $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
2173 echo " OpenVG: $enable_openvg"
2174
2175 dnl Driver info
2176 echo ""
2177 if test "x$enable_osmesa" != xno; then
2178 echo " OSMesa: lib$OSMESA_LIB"
2179 else
2180 echo " OSMesa: no"
2181 fi
2182
2183 if test "x$enable_dri" != xno; then
2184 # cleanup the drivers var
2185 dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
2186 if test "x$DRI_DIRS" = x; then
2187 echo " DRI drivers: no"
2188 else
2189 echo " DRI drivers: $dri_dirs"
2190 fi
2191 echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
2192 fi
2193
2194 case "x$enable_glx$enable_xlib_glx" in
2195 xyesyes)
2196 echo " GLX: Xlib-based"
2197 ;;
2198 xyesno)
2199 echo " GLX: DRI-based"
2200 ;;
2201 *)
2202 echo " GLX: $enable_glx"
2203 ;;
2204 esac
2205
2206 dnl EGL
2207 echo ""
2208 echo " EGL: $enable_egl"
2209 if test "$enable_egl" = yes; then
2210 echo " EGL platforms: $EGL_PLATFORMS"
2211
2212 egl_drivers=""
2213 if test "x$HAVE_EGL_DRIVER_GLX" != "x"; then
2214 egl_drivers="$egl_drivers builtin:egl_glx"
2215 fi
2216 if test "x$HAVE_EGL_DRIVER_DRI2" != "x"; then
2217 egl_drivers="$egl_drivers builtin:egl_dri2"
2218 fi
2219
2220 if test "x$HAVE_ST_EGL" = xyes; then
2221 echo " EGL drivers: ${egl_drivers} egl_gallium"
2222 echo " EGL Gallium STs:$EGL_CLIENT_APIS"
2223 else
2224 echo " EGL drivers: $egl_drivers"
2225 fi
2226 fi
2227
2228 echo ""
2229 if test "x$MESA_LLVM" = x1; then
2230 echo " llvm: yes"
2231 echo " llvm-config: $LLVM_CONFIG"
2232 echo " llvm-version: $LLVM_VERSION"
2233 else
2234 echo " llvm: no"
2235 fi
2236
2237 echo ""
2238 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
2239 echo " Gallium: yes"
2240 echo " Gallium dirs: $GALLIUM_DIRS"
2241 echo " Target dirs: $GALLIUM_TARGET_DIRS"
2242 echo " Winsys dirs: $GALLIUM_WINSYS_DIRS"
2243 echo " Driver dirs: $GALLIUM_DRIVERS_DIRS"
2244 echo " Trackers dirs: $GALLIUM_STATE_TRACKERS_DIRS"
2245 else
2246 echo " Gallium: no"
2247 fi
2248
2249
2250 dnl Libraries
2251 echo ""
2252 echo " Shared libs: $enable_shared"
2253 echo " Static libs: $enable_static"
2254 echo " Shared-glapi: $enable_shared_glapi"
2255
2256 dnl Compiler options
2257 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2258 cflags=`echo $CFLAGS | \
2259 $SED 's/^ *//;s/ */ /;s/ *$//'`
2260 cxxflags=`echo $CXXFLAGS | \
2261 $SED 's/^ *//;s/ */ /;s/ *$//'`
2262 defines=`echo $DEFINES | $SED 's/^ *//;s/ */ /;s/ *$//'`
2263 echo ""
2264 echo " CFLAGS: $cflags"
2265 echo " CXXFLAGS: $cxxflags"
2266 echo " Macros: $defines"
2267 echo ""
2268 if test "x$MESA_LLVM" = x1; then
2269 echo " LLVM_CFLAGS: $LLVM_CFLAGS"
2270 echo " LLVM_CXXFLAGS: $LLVM_CXXFLAGS"
2271 echo " LLVM_CPPFLAGS: $LLVM_CPPFLAGS"
2272 echo ""
2273 fi
2274 echo " PYTHON2: $PYTHON2"
2275
2276 echo ""
2277 echo " Run '${MAKE-make}' to build Mesa"
2278 echo ""