OSDN Git Service

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