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