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