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