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