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