OSDN Git Service

Revert "automake: src/mesa/drivers/osmesa"
[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 Versioning - scrape the version from configs/default
6 m4_define([mesa_version],
7     [m4_esyscmd([${MAKE-make} -s -f bin/version.mk version | tr -d '\n' | tr -d '\r'])])
8 m4_ifval(mesa_version,,
9     [m4_fatal([Failed to get the Mesa version from `make -f bin/version.mk version`])])
10
11 dnl Tell the user about autoconf.html in the --help output
12 m4_divert_once([HELP_END], [
13 See docs/autoconf.html for more details on the options for Mesa.])
14
15 AC_INIT([Mesa],[mesa_version],
16     [https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa])
17 AC_CONFIG_AUX_DIR([bin])
18 AC_CANONICAL_HOST
19 AM_INIT_AUTOMAKE([foreign])
20
21 # Support silent build rules, requires at least automake-1.11. Disable
22 # by either passing --disable-silent-rules to configure or passing V=1
23 # to make
24 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
25
26 LT_PREREQ([2.2])
27 LT_INIT([disable-static])
28
29 dnl Save user CFLAGS and CXXFLAGS so one can override the default ones
30 USER_CFLAGS="$CFLAGS"
31 USER_CXXFLAGS="$CXXFLAGS"
32
33 dnl Versions for external dependencies
34 LIBDRM_REQUIRED=2.4.24
35 LIBDRM_RADEON_REQUIRED=2.4.24
36 LIBDRM_INTEL_REQUIRED=2.4.30
37 LIBDRM_NOUVEAU_REQUIRED=0.6
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 AC_PROG_CXX
47 AC_CHECK_PROGS([MAKE], [gmake make])
48 AC_CHECK_PROGS([PYTHON2], [python2 python])
49 AC_PROG_SED
50 AC_PROG_MKDIR_P
51 AC_PATH_PROG([MKDEP], [makedepend])
52
53 if test "x$MKDEP" = "x"; then
54     AC_MSG_ERROR([makedepend is required to build Mesa])
55 fi
56
57 AC_PROG_YACC
58 AC_PATH_PROG([YACC_INST], $YACC)
59 if test ! -f "$srcdir/src/glsl/glcpp/glcpp-parse.y"; then
60     if test -z "$YACC_INST"; then
61         AC_MSG_ERROR([yacc not found - unable to compile glcpp-parse.y])
62     fi
63 fi
64 AC_PROG_LEX
65
66 dnl Our fallback install-sh is a symlink to minstall. Use the existing
67 dnl configuration in that case.
68 AC_PROG_INSTALL
69 test "x$INSTALL" = "x$ac_install_sh" && INSTALL='$(MINSTALL)'
70
71 dnl We need a POSIX shell for parts of the build. Assume we have one
72 dnl in most cases.
73 case "$host_os" in
74 solaris*)
75     # Solaris /bin/sh is too old/non-POSIX compliant
76     AC_PATH_PROGS(POSIX_SHELL, [ksh93 ksh sh])
77     SHELL="$POSIX_SHELL"
78     ;;
79 esac
80
81 AC_PATH_PROG([GTESTCONFIG], [gtest-config])
82 if test "x$GTESTCONFIG" != "x"; then
83     GTEST_CFLAGS=`gtest-config --cppflags --cxxflags`
84     GTEST_LIBS=`gtest-config --ldflags --libs`
85     AC_SUBST([GTEST_CFLAGS])
86     AC_SUBST([GTEST_LIBS])
87     HAVE_GTEST=yes
88 else
89     HAVE_GTEST=no
90 fi
91 AM_CONDITIONAL(HAVE_GTEST, test x$HAVE_GTEST = xyes)
92
93 dnl clang is mostly GCC-compatible, but its version is much lower,
94 dnl so we have to check for it.
95 AC_MSG_CHECKING([if compiling with clang])
96
97 AC_COMPILE_IFELSE(
98 [AC_LANG_PROGRAM([], [[
99 #ifndef __clang__
100        not clang
101 #endif
102 ]])],
103 [acv_mesa_CLANG=yes], [acv_mesa_CLANG=no])
104
105 AC_MSG_RESULT([$acv_mesa_CLANG])
106
107 dnl If we're using GCC, make sure that it is at least version 3.3.0.  Older
108 dnl versions are explictly not supported.
109 if test "x$GCC" = xyes -a "x$acv_mesa_CLANG" = xno; then
110     AC_MSG_CHECKING([whether gcc version is sufficient])
111     major=0
112     minor=0
113
114     GCC_VERSION=`$CC -dumpversion`
115     if test $? -eq 0; then
116         major=`echo $GCC_VERSION | cut -d. -f1`
117         minor=`echo $GCC_VERSION | cut -d. -f2`
118     fi
119
120     if test $major -lt 3 -o $major -eq 3 -a $minor -lt 3 ; then
121         AC_MSG_RESULT([no])
122         AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.])
123     else
124         AC_MSG_RESULT([yes])
125     fi
126 fi
127
128
129 MKDEP_OPTIONS=-fdepend
130 dnl Ask gcc where it's keeping its secret headers
131 if test "x$GCC" = xyes; then
132     for dir in include include-fixed; do
133         GCC_INCLUDES=`$CC -print-file-name=$dir`
134         if test "x$GCC_INCLUDES" != x && \
135            test "$GCC_INCLUDES" != "$dir" && \
136            test -d "$GCC_INCLUDES"; then
137             MKDEP_OPTIONS="$MKDEP_OPTIONS -I$GCC_INCLUDES"
138         fi
139     done
140 fi
141 AC_SUBST([MKDEP_OPTIONS])
142
143 dnl Make sure the pkg-config macros are defined
144 m4_ifndef([PKG_PROG_PKG_CONFIG],
145     [m4_fatal([Could not locate the pkg-config autoconf macros.
146   These are usually located in /usr/share/aclocal/pkg.m4. If your macros
147   are in a different location, try setting the environment variable
148   ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])])
149 PKG_PROG_PKG_CONFIG()
150
151 dnl LIB_DIR - library basename
152 LIB_DIR=`echo $libdir | $SED 's%.*/%%'`
153 AC_SUBST([LIB_DIR])
154
155 dnl Cache LDFLAGS so we can add EXTRA_LIB_PATH and restore it later
156 _SAVE_LDFLAGS="$LDFLAGS"
157 AC_ARG_VAR([EXTRA_LIB_PATH],[Extra -L paths for the linker])
158 AC_SUBST([EXTRA_LIB_PATH])
159
160 dnl Cache CPPFLAGS so we can add *_INCLUDES and restore it later
161 _SAVE_CPPFLAGS="$CPPFLAGS"
162 AC_ARG_VAR([X11_INCLUDES],[Extra -I paths for X11 headers])
163 AC_SUBST([X11_INCLUDES])
164
165 dnl Compiler macros
166 DEFINES=""
167 AC_SUBST([DEFINES])
168 case "$host_os" in
169 linux*|*-gnu*|gnu*)
170     DEFINES="$DEFINES -D_GNU_SOURCE -DPTHREADS"
171     ;;
172 solaris*)
173     DEFINES="$DEFINES -DPTHREADS -DSVR4"
174     ;;
175 cygwin*)
176     DEFINES="$DEFINES -DPTHREADS"
177     ;;
178 esac
179
180 dnl Add flags for gcc and g++
181 if test "x$GCC" = xyes; then
182     CFLAGS="$CFLAGS -Wall -std=c99"
183
184     # Enable -Werror=implicit-function-declaration and
185     # -Werror=missing-prototypes, if available, or otherwise, just
186     # -Wmissing-prototypes.  This is particularly useful to avoid
187     # generating a loadable driver module that has undefined symbols.
188     save_CFLAGS="$CFLAGS"
189     AC_MSG_CHECKING([whether $CC supports -Werror=missing-prototypes])
190     CFLAGS="$CFLAGS -Werror=implicit-function-declaration"
191     CFLAGS="$CFLAGS -Werror=missing-prototypes"
192     AC_LINK_IFELSE([AC_LANG_PROGRAM()],
193                    AC_MSG_RESULT([yes]),
194                    [CFLAGS="$save_CFLAGS -Wmissing-prototypes";
195                     AC_MSG_RESULT([no])]);
196
197     # Enable -fvisibility=hidden if using a gcc that supports it
198     save_CFLAGS="$CFLAGS"
199     AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
200     VISIBILITY_CFLAGS="-fvisibility=hidden"
201     CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
202     AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
203                    [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
204
205     # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
206     CFLAGS=$save_CFLAGS
207
208     # Work around aliasing bugs - developers should comment this out
209     CFLAGS="$CFLAGS -fno-strict-aliasing"
210
211     # gcc's builtin memcmp is slower than glibc's
212     # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
213     CFLAGS="$CFLAGS -fno-builtin-memcmp"
214 fi
215 if test "x$GXX" = xyes; then
216     CXXFLAGS="$CXXFLAGS -Wall"
217
218     # Enable -fvisibility=hidden if using a gcc that supports it
219     save_CXXFLAGS="$CXXFLAGS"
220     AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
221     VISIBILITY_CXXFLAGS="-fvisibility=hidden"
222     CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
223     AC_LANG_PUSH([C++])
224     AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
225                    [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]);
226     AC_LANG_POP([C++])
227
228     # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
229     CXXFLAGS=$save_CXXFLAGS
230
231     # Work around aliasing bugs - developers should comment this out
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="$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 These should be unnecessary, but let the user set them if they want
252 AC_ARG_VAR([OPT_FLAGS], [Additional optimization flags for the compiler.
253     Default is to use CFLAGS.])
254 AC_ARG_VAR([ARCH_FLAGS], [Additional architecture specific flags for the
255     compiler. Default is to use CFLAGS.])
256 AC_SUBST([OPT_FLAGS])
257 AC_SUBST([ARCH_FLAGS])
258
259 dnl
260 dnl Hacks to enable 32 or 64 bit build
261 dnl
262 AC_ARG_ENABLE([32-bit],
263     [AS_HELP_STRING([--enable-32-bit],
264         [build 32-bit libraries @<:@default=auto@:>@])],
265     [enable_32bit="$enableval"],
266     [enable_32bit=auto]
267 )
268 if test "x$enable_32bit" = xyes; then
269     if test "x$GCC" = xyes; then
270         CFLAGS="$CFLAGS -m32"
271         ARCH_FLAGS="$ARCH_FLAGS -m32"
272     fi
273     if test "x$GXX" = xyes; then
274         CXXFLAGS="$CXXFLAGS -m32"
275     fi
276 fi
277 AC_ARG_ENABLE([64-bit],
278     [AS_HELP_STRING([--enable-64-bit],
279         [build 64-bit libraries @<:@default=auto@:>@])],
280     [enable_64bit="$enableval"],
281     [enable_64bit=auto]
282 )
283 if test "x$enable_64bit" = xyes; then
284     if test "x$GCC" = xyes; then
285         CFLAGS="$CFLAGS -m64"
286     fi
287     if test "x$GXX" = xyes; then
288         CXXFLAGS="$CXXFLAGS -m64"
289     fi
290 fi
291
292 dnl Can't have static and shared libraries, default to static if user
293 dnl explicitly requested. If both disabled, set to static since shared
294 dnl was explicitly requested.
295 case "x$enable_static$enable_shared" in
296 xyesyes )
297     AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
298     enable_shared=no
299     ;;
300 xnono )
301     AC_MSG_WARN([Can't disable both static and shared libraries, enabling static])
302     enable_static=yes
303     ;;
304 esac
305
306 dnl
307 dnl mklib options
308 dnl
309 AC_ARG_VAR([MKLIB_OPTIONS],[Options for the Mesa library script, mklib])
310 if test "$enable_static" = yes; then
311     MKLIB_OPTIONS="$MKLIB_OPTIONS -static"
312 fi
313 AC_SUBST([MKLIB_OPTIONS])
314
315 dnl
316 dnl other compiler options
317 dnl
318 AC_ARG_ENABLE([debug],
319     [AS_HELP_STRING([--enable-debug],
320         [use debug compiler flags and macros @<:@default=disabled@:>@])],
321     [enable_debug="$enableval"],
322     [enable_debug=no]
323 )
324 if test "x$enable_debug" = xyes; then
325     DEFINES="$DEFINES -DDEBUG"
326     if test "x$GCC" = xyes; then
327         CFLAGS="$CFLAGS -g"
328     fi
329     if test "x$GXX" = xyes; then
330         CXXFLAGS="$CXXFLAGS -g"
331     fi
332 fi
333
334 dnl
335 dnl library names
336 dnl
337 LIB_PREFIX_GLOB='lib'
338 LIB_VERSION_SEPARATOR='.'
339 if test "$enable_static" = yes; then
340     LIB_EXTENSION='a'
341 else
342     case "$host_os" in
343     darwin* )
344         LIB_EXTENSION='dylib' ;;
345     cygwin* )
346         dnl prefix can be 'cyg' or 'lib'
347         LIB_PREFIX_GLOB='???'
348         LIB_VERSION_SEPARATOR='-'
349         LIB_EXTENSION='dll' ;;
350     aix* )
351         LIB_EXTENSION='a' ;;
352     * )
353         LIB_EXTENSION='so' ;;
354     esac
355 fi
356
357 dnl
358 dnl Mangled Mesa support
359 dnl
360 AC_ARG_ENABLE([mangling],
361   [AS_HELP_STRING([--enable-mangling],
362     [enable mangled symbols and library name @<:@default=disabled@:>@])],
363   [enable_mangling="${enableval}"],
364   [enable_mangling=no]
365 )
366 GL_LIB="GL"
367 GLU_LIB="GLU"
368 OSMESA_LIB="OSMesa"
369 if test "x${enable_mangling}" = "xyes" ; then
370   DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE"
371   GL_LIB="MangledGL"
372   GLU_LIB="MangledGLU"
373   OSMESA_LIB="MangledOSMesa"
374 fi
375 AC_SUBST([GL_LIB])
376 AC_SUBST([GLU_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 GLU_LIB_NAME='lib$(GLU_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 GLU_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLU_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
405 OSMESA_LIB_GLOB=${LIB_PREFIX_GLOB}'$(OSMESA_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
406 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
407 EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
408 GLESv1_CM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv1_CM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
409 GLESv2_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv2_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
410 VG_LIB_GLOB=${LIB_PREFIX_GLOB}'$(VG_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
411 GLAPI_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLAPI_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
412
413 AC_SUBST([GL_LIB_NAME])
414 AC_SUBST([GLU_LIB_NAME])
415 AC_SUBST([OSMESA_LIB_NAME])
416 AC_SUBST([EGL_LIB_NAME])
417 AC_SUBST([GLESv1_CM_LIB_NAME])
418 AC_SUBST([GLESv2_LIB_NAME])
419 AC_SUBST([VG_LIB_NAME])
420 AC_SUBST([GLAPI_LIB_NAME])
421
422 AC_SUBST([GL_LIB_GLOB])
423 AC_SUBST([GLU_LIB_GLOB])
424 AC_SUBST([OSMESA_LIB_GLOB])
425 AC_SUBST([EGL_LIB_GLOB])
426 AC_SUBST([GLESv1_CM_LIB_GLOB])
427 AC_SUBST([GLESv2_LIB_GLOB])
428 AC_SUBST([VG_LIB_GLOB])
429 AC_SUBST([GLAPI_LIB_GLOB])
430
431 dnl
432 dnl Arch/platform-specific settings
433 dnl
434 AC_ARG_ENABLE([asm],
435     [AS_HELP_STRING([--disable-asm],
436         [disable assembly usage @<:@default=enabled on supported plaforms@:>@])],
437     [enable_asm="$enableval"],
438     [enable_asm=yes]
439 )
440 asm_arch=""
441 ASM_FLAGS=""
442 MESA_ASM_SOURCES=""
443 GLAPI_ASM_SOURCES=""
444 AC_MSG_CHECKING([whether to enable assembly])
445 test "x$enable_asm" = xno && AC_MSG_RESULT([no])
446 # disable if cross compiling on x86/x86_64 since we must run gen_matypes
447 if test "x$enable_asm" = xyes && test "x$cross_compiling" = xyes; then
448     case "$host_cpu" in
449     i?86 | x86_64)
450         enable_asm=no
451         AC_MSG_RESULT([no, cross compiling])
452         ;;
453     esac
454 fi
455 # check for supported arches
456 if test "x$enable_asm" = xyes; then
457     case "$host_cpu" in
458     i?86)
459         case "$host_os" in
460         linux* | *freebsd* | dragonfly* | *netbsd*)
461             test "x$enable_64bit" = xyes && asm_arch=x86_64 || asm_arch=x86
462             ;;
463         esac
464         ;;
465     x86_64)
466         case "$host_os" in
467         linux* | *freebsd* | dragonfly* | *netbsd*)
468             test "x$enable_32bit" = xyes && asm_arch=x86 || asm_arch=x86_64
469             ;;
470         esac
471         ;;
472     powerpc)
473         case "$host_os" in
474         linux*)
475             asm_arch=ppc
476             ;;
477         esac
478         ;;
479     sparc*)
480         case "$host_os" in
481         linux*)
482             asm_arch=sparc
483             ;;
484         esac
485         ;;
486     esac
487
488     case "$asm_arch" in
489     x86)
490         ASM_FLAGS="-DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM"
491         MESA_ASM_SOURCES='$(X86_SOURCES)'
492         GLAPI_ASM_SOURCES='$(X86_API)'
493         AC_MSG_RESULT([yes, x86])
494         ;;
495     x86_64)
496         ASM_FLAGS="-DUSE_X86_64_ASM"
497         MESA_ASM_SOURCES='$(X86-64_SOURCES)'
498         GLAPI_ASM_SOURCES='$(X86-64_API)'
499         AC_MSG_RESULT([yes, x86_64])
500         ;;
501     sparc)
502         ASM_FLAGS="-DUSE_SPARC_ASM"
503         MESA_ASM_SOURCES='$(SPARC_SOURCES)'
504         GLAPI_ASM_SOURCES='$(SPARC_API)'
505         AC_MSG_RESULT([yes, sparc])
506         ;;
507     *)
508         AC_MSG_RESULT([no, platform not supported])
509         ;;
510     esac
511 fi
512 AC_SUBST([ASM_FLAGS])
513 AC_SUBST([MESA_ASM_SOURCES])
514 AC_SUBST([GLAPI_ASM_SOURCES])
515
516 dnl PIC code macro
517 MESA_PIC_FLAGS
518
519 dnl Check to see if dlopen is in default libraries (like Solaris, which
520 dnl has it in libc), or if libdl is needed to get it.
521 AC_CHECK_FUNC([dlopen], [],
522     [AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
523 AC_SUBST([DLOPEN_LIBS])
524
525 dnl See if posix_memalign is available
526 AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"])
527
528 dnl SELinux awareness.
529 AC_ARG_ENABLE([selinux],
530     [AS_HELP_STRING([--enable-selinux],
531         [Build SELinux-aware Mesa @<:@default=disabled@:>@])],
532     [MESA_SELINUX="$enableval"],
533     [MESA_SELINUX=no])
534 if test "x$enable_selinux" = "xyes"; then
535     AC_CHECK_HEADER([selinux/selinux.h],[],
536                     [AC_MSG_ERROR([SELinux headers not found])])
537     AC_CHECK_LIB([selinux],[is_selinux_enabled],[],
538                  [AC_MSG_ERROR([SELinux library not found])])
539     SELINUX_LIBS="-lselinux"
540     DEFINES="$DEFINES -DMESA_SELINUX"
541 fi
542
543 dnl Options for APIs
544 AC_ARG_ENABLE([opengl],
545     [AS_HELP_STRING([--disable-opengl],
546         [disable support for standard OpenGL API @<:@default=no@:>@])],
547     [enable_opengl="$enableval"],
548     [enable_opengl=yes])
549 AC_ARG_ENABLE([gles1],
550     [AS_HELP_STRING([--enable-gles1],
551         [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
552     [enable_gles1="$enableval"],
553     [enable_gles1=no])
554 AC_ARG_ENABLE([gles2],
555     [AS_HELP_STRING([--enable-gles2],
556         [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
557     [enable_gles2="$enableval"],
558     [enable_gles2=no])
559 AC_ARG_ENABLE([openvg],
560     [AS_HELP_STRING([--enable-openvg],
561         [enable support for OpenVG API @<:@default=no@:>@])],
562     [enable_openvg="$enableval"],
563     [enable_openvg=no])
564
565 AC_ARG_ENABLE([dri],
566     [AS_HELP_STRING([--enable-dri],
567         [enable DRI modules @<:@default=auto@:>@])],
568     [enable_dri="$enableval"],
569     [enable_dri=auto])
570 AC_ARG_ENABLE([glx],
571     [AS_HELP_STRING([--enable-glx],
572         [enable GLX library @<:@default=auto@:>@])],
573     [enable_glx="$enableval"],
574     [enable_glx=auto])
575 AC_ARG_ENABLE([osmesa],
576     [AS_HELP_STRING([--enable-osmesa],
577         [enable OSMesa library @<:@default=auto@:>@])],
578     [enable_osmesa="$enableval"],
579     [enable_osmesa=auto])
580 AC_ARG_ENABLE([egl],
581     [AS_HELP_STRING([--disable-egl],
582         [disable EGL library @<:@default=enabled@:>@])],
583     [enable_egl="$enableval"],
584     [enable_egl=yes])
585
586 AC_ARG_ENABLE([xorg],
587     [AS_HELP_STRING([--enable-xorg],
588         [enable support for X.Org DDX API @<:@default=no@:>@])],
589     [enable_xorg="$enableval"],
590     [enable_xorg=no])
591 AC_ARG_ENABLE([xa],
592     [AS_HELP_STRING([--enable-xa],
593         [enable build of the XA X Acceleration API @<:@default=no@:>@])],
594     [enable_xa="$enableval"],
595     [enable_xa=no])
596 AC_ARG_ENABLE([d3d1x],
597     [AS_HELP_STRING([--enable-d3d1x],
598         [enable support for Direct3D 10 & 11 low-level API @<:@default=no@:>@])],
599     [enable_d3d1x="$enableval"],
600     [enable_d3d1x=no])
601 AC_ARG_ENABLE([gbm],
602    [AS_HELP_STRING([--enable-gbm],
603          [enable gbm library @<:@default=auto@:>@])],
604    [enable_gbm="$enableval"],
605    [enable_gbm=auto])
606
607 AC_ARG_ENABLE([xvmc],
608    [AS_HELP_STRING([--enable-xvmc],
609          [enable xvmc library @<:@default=auto@:>@])],
610    [enable_xvmc="$enableval"],
611    [enable_xvmc=auto])
612 AC_ARG_ENABLE([vdpau],
613    [AS_HELP_STRING([--enable-vdpau],
614          [enable vdpau library @<:@default=auto@:>@])],
615    [enable_vdpau="$enableval"],
616    [enable_vdpau=auto])
617 AC_ARG_ENABLE([va],
618    [AS_HELP_STRING([--enable-va],
619          [enable va library @<:@default=auto@:>@])],
620    [enable_va="$enableval"],
621    [enable_va=auto])
622
623 AC_ARG_ENABLE([xlib_glx],
624     [AS_HELP_STRING([--enable-xlib-glx],
625         [make GLX library Xlib-based instead of DRI-based @<:@default=disable@:>@])],
626     [enable_xlib_glx="$enableval"],
627     [enable_xlib_glx=auto])
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 # Option for Gallium drivers
644 GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
645
646 AC_ARG_WITH([gallium-drivers],
647     [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@],
648         [comma delimited Gallium drivers list, e.g.
649         "i915,nouveau,r300,r600,svga,swrast"
650         @<:@default=r300,r600,swrast@:>@])],
651     [with_gallium_drivers="$withval"],
652     [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
653
654 # Doing '--without-gallium-drivers' will set this variable to 'no'.  Clear it
655 # here so that the script doesn't choke on an unknown driver name later.
656 case "$with_gallium_drivers" in
657     yes) with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT" ;;
658     no) with_gallium_drivers='' ;;
659 esac
660
661 if test "x$enable_opengl" = xno -a \
662         "x$enable_gles1" = xno -a \
663         "x$enable_gles2" = xno -a \
664         "x$enable_openvg" = xno -a \
665         "x$enable_xorg" = xno -a \
666         "x$enable_xa" = xno -a \
667         "x$enable_d3d1x" = xno -a \
668         "x$enable_xvmc" = xno -a \
669         "x$enable_vdpau" = xno -a \
670         "x$enable_va" = xno; then
671     AC_MSG_ERROR([at least one API should be enabled])
672 fi
673
674 API_DEFINES=""
675 if test "x$enable_opengl" = xno; then
676     API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
677 else
678     API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
679 fi
680 if test "x$enable_gles1" = xyes; then
681     API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
682 fi
683 if test "x$enable_gles2" = xyes; then
684     API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
685 fi
686 AC_SUBST([API_DEFINES])
687
688 AC_ARG_ENABLE([shared-glapi],
689     [AS_HELP_STRING([--enable-shared-glapi],
690         [EXPERIMENTAL.  Enable shared glapi for OpenGL @<:@default=no@:>@])],
691     [enable_shared_glapi="$enableval"],
692     [enable_shared_glapi=no])
693
694 SHARED_GLAPI="0"
695 if test "x$enable_shared_glapi" = xyes; then
696     SHARED_GLAPI="1"
697 fi
698 AC_SUBST([SHARED_GLAPI])
699
700 dnl
701 dnl Driver configuration. Options are xlib, dri and osmesa right now.
702 dnl More later: fbdev, ...
703 dnl
704 default_driver="xlib"
705
706 case "$host_os" in
707 linux*)
708     case "$host_cpu" in
709     i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
710     esac
711     ;;
712 *freebsd* | dragonfly* | *netbsd*)
713     case "$host_cpu" in
714     i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
715     esac
716     ;;
717 esac
718
719 if test "x$enable_opengl" = xno; then
720     default_driver="no"
721 fi
722
723 AC_ARG_WITH([driver],
724     [AS_HELP_STRING([--with-driver=DRIVER], [DEPRECATED])],
725     [mesa_driver="$withval"],
726     [mesa_driver=auto])
727 dnl Check for valid option
728 case "x$mesa_driver" in
729 xxlib|xdri|xosmesa|xno)
730     if test "x$enable_dri" != xauto -o \
731             "x$enable_glx" != xauto -o \
732             "x$enable_osmesa" != xauto -o \
733             "x$enable_xlib_glx" != xauto; then
734         AC_MSG_ERROR([--with-driver=$mesa_driver is deprecated])
735     fi
736     ;;
737 xauto)
738     mesa_driver="$default_driver"
739     ;;
740 *)
741     AC_MSG_ERROR([Driver '$mesa_driver' is not a valid option])
742     ;;
743 esac
744
745 # map $mesa_driver to APIs
746 if test "x$enable_dri" = xauto; then
747     case "x$mesa_driver" in
748     xdri) enable_dri=yes ;;
749     *)    enable_dri=no ;;
750     esac
751 fi
752
753 if test "x$enable_glx" = xauto; then
754     case "x$mesa_driver" in
755     xdri|xxlib) enable_glx=yes ;;
756     *)          enable_glx=no ;;
757     esac
758 fi
759
760 if test "x$enable_osmesa" = xauto; then
761     case "x$mesa_driver" in
762     xxlib|xosmesa) enable_osmesa=yes ;;
763     *)             enable_osmesa=no ;;
764     esac
765 fi
766
767 if test "x$enable_xlib_glx" = xauto; then
768     case "x$mesa_driver" in
769     xxlib) enable_xlib_glx=yes ;;
770     *)     enable_xlib_glx=no ;;
771     esac
772 fi
773
774 if test "x$enable_glx" = xno; then
775     enable_xlib_glx=no
776 fi
777
778 AM_CONDITIONAL(HAVE_DRI, test x"$enable_dri" = xyes)
779
780 dnl
781 dnl Driver specific build directories
782 dnl
783
784 dnl this variable will be prepended to SRC_DIRS and is not exported
785 CORE_DIRS=""
786
787 SRC_DIRS=""
788 GLU_DIRS="sgi"
789 GALLIUM_DIRS="auxiliary drivers state_trackers"
790 GALLIUM_TARGET_DIRS=""
791 GALLIUM_WINSYS_DIRS="sw"
792 GALLIUM_DRIVERS_DIRS="galahad trace rbug noop identity"
793 GALLIUM_STATE_TRACKERS_DIRS=""
794
795 # build shared-glapi if enabled for OpenGL or if OpenGL ES is enabled
796 case "x$enable_shared_glapi$enable_gles1$enable_gles2" in
797 x*yes*)
798     CORE_DIRS="$CORE_DIRS mapi/shared-glapi"
799     ;;
800 esac
801
802 # build glapi if OpenGL is enabled
803 if test "x$enable_opengl" = xyes; then
804     CORE_DIRS="$CORE_DIRS mapi/glapi"
805 fi
806
807 # build es1api if OpenGL ES 1.x is enabled
808 if test "x$enable_gles1" = xyes; then
809     CORE_DIRS="$CORE_DIRS mapi/es1api"
810 fi
811
812 # build es2api if OpenGL ES 2.x is enabled
813 if test "x$enable_gles2" = xyes; then
814     CORE_DIRS="$CORE_DIRS mapi/es2api"
815 fi
816
817 # build glsl and mesa if OpenGL or OpenGL ES is enabled
818 case "x$enable_opengl$enable_gles1$enable_gles2" in
819 x*yes*)
820     CORE_DIRS="$CORE_DIRS glsl mesa"
821     ;;
822 esac
823
824 case "x$enable_glx$enable_xlib_glx" in
825 xyesyes)
826     DRIVER_DIRS="$DRIVER_DIRS x11"
827     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
828     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS libgl-xlib"
829     GALLIUM_STATE_TRACKERS_DIRS="glx $GALLIUM_STATE_TRACKERS_DIRS"
830     HAVE_WINSYS_XLIB="yes"
831     ;;
832 xyesno)
833     # DRI-based GLX
834     SRC_DIRS="$SRC_DIRS glx"
835     ;;
836 esac
837
838 if test "x$enable_dri" = xyes; then
839     DRIVER_DIRS="$DRIVER_DIRS dri"
840
841     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/dri"
842     GALLIUM_STATE_TRACKERS_DIRS="dri $GALLIUM_STATE_TRACKERS_DIRS"
843     HAVE_ST_DRI="yes"
844 fi
845
846 if test "x$enable_osmesa" = xyes; then
847     # the empty space matters for osmesa... (see src/mesa/Makefile)
848     if test -n "$DRIVER_DIRS"; then
849         DRIVER_DIRS="$DRIVER_DIRS osmesa"
850     else
851         DRIVER_DIRS="osmesa"
852     fi
853 fi
854
855 AC_SUBST([SRC_DIRS])
856 AC_SUBST([GLU_DIRS])
857 AC_SUBST([DRIVER_DIRS])
858 AC_SUBST([GALLIUM_DIRS])
859 AC_SUBST([GALLIUM_TARGET_DIRS])
860 AC_SUBST([GALLIUM_WINSYS_DIRS])
861 AC_SUBST([GALLIUM_DRIVERS_DIRS])
862 AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
863 AC_SUBST([MESA_LLVM])
864
865 # Check for libdrm
866 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
867                   [have_libdrm=yes], [have_libdrm=no])
868
869 if test "x$enable_dri" = xyes; then
870     # DRI must be shared, I think
871     if test "$enable_static" = yes; then
872         AC_MSG_ERROR([Can't use static libraries for DRI drivers])
873     fi
874
875     # not a hard requirement as swrast does not depend on it
876     if test "x$have_libdrm" = xyes; then
877         DRI_PC_REQ_PRIV="libdrm >= $LIBDRM_REQUIRED"
878     fi
879 fi
880
881 dnl
882 dnl Find out if X is available. The variable have_x is set if libX11 is
883 dnl found to mimic AC_PATH_XTRA.
884 dnl
885 if test -n "$PKG_CONFIG"; then
886     AC_MSG_CHECKING([pkg-config files for X11 are available])
887     PKG_CHECK_EXISTS([x11],[
888         x11_pkgconfig=yes
889         have_x=yes
890         ],[
891         x11_pkgconfig=no
892     ])
893     AC_MSG_RESULT([$x11_pkgconfig])
894 else
895     x11_pkgconfig=no
896 fi
897 dnl Use the autoconf macro if no pkg-config files
898 if test "$x11_pkgconfig" = yes; then
899     PKG_CHECK_MODULES([X11], [x11])
900 else
901     AC_PATH_XTRA
902     test -z "$X11_CFLAGS" && X11_CFLAGS="$X_CFLAGS"
903     test -z "$X11_LIBS" && X11_LIBS="$X_LIBS -lX11"
904     AC_SUBST([X11_CFLAGS])
905     AC_SUBST([X11_LIBS])
906 fi
907
908 dnl Try to tell the user that the --x-* options are only used when
909 dnl pkg-config is not available. This must be right after AC_PATH_XTRA.
910 m4_divert_once([HELP_BEGIN],
911 [These options are only used when the X libraries cannot be found by the
912 pkg-config utility.])
913
914 dnl We need X for xlib and dri, so bomb now if it's not found
915 if test "x$enable_glx" = xyes -a "x$no_x" = xyes; then
916     AC_MSG_ERROR([X11 development libraries needed for GLX])
917 fi
918
919 if test "x$enable_glx" = xyes; then
920     DEFINES="$DEFINES -DUSE_XCB"
921 fi
922
923 dnl Direct rendering or just indirect rendering
924 case "$host_os" in
925 gnu*)
926     dnl Disable by default on GNU/Hurd
927     driglx_direct_default="no"
928     ;;
929 cygwin*)
930     dnl Disable by default on cygwin
931     driglx_direct_default="no"
932     ;;
933 *)
934     driglx_direct_default="yes"
935     ;;
936 esac
937 AC_ARG_ENABLE([driglx-direct],
938     [AS_HELP_STRING([--disable-driglx-direct],
939         [enable direct rendering in GLX and EGL for DRI \
940             @<:@default=auto@:>@])],
941     [driglx_direct="$enableval"],
942     [driglx_direct="$driglx_direct_default"])
943
944 dnl
945 dnl libGL configuration per driver
946 dnl
947 case "x$enable_glx$enable_xlib_glx" in
948 xyesyes)
949     # Xlib-based GLX
950     if test "$x11_pkgconfig" = yes; then
951         PKG_CHECK_MODULES([XLIBGL], [x11 xext])
952         GL_PC_REQ_PRIV="x11 xext"
953         X11_INCLUDES="$X11_INCLUDES $XLIBGL_CFLAGS"
954         GL_LIB_DEPS="$XLIBGL_LIBS"
955     else
956         # should check these...
957         X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
958         GL_LIB_DEPS="$X_LIBS -lX11 -lXext"
959         GL_PC_LIB_PRIV="$GL_LIB_DEPS"
960         GL_PC_CFLAGS="$X11_INCLUDES"
961     fi
962     GL_LIB_DEPS="$GL_LIB_DEPS $SELINUX_LIBS -lm -lpthread $DLOPEN_LIBS"
963     GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $SELINUX_LIBS -lm -lpthread"
964     ;;
965 xyesno)
966     # DRI-based GLX
967     PKG_CHECK_MODULES([GLPROTO], [glproto >= $GLPROTO_REQUIRED])
968     GL_PC_REQ_PRIV="glproto >= $GLPROTO_REQUIRED"
969     if test x"$driglx_direct" = xyes; then
970         if test "x$have_libdrm" != xyes; then
971             AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
972         fi
973         PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
974         GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED dri2proto >= $DRI2PROTO_REQUIRED"
975     fi
976
977     # find the DRI deps for libGL
978     if test "$x11_pkgconfig" = yes; then
979         dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx"
980
981         # add xf86vidmode if available
982         PKG_CHECK_MODULES([XF86VIDMODE], [xxf86vm], HAVE_XF86VIDMODE=yes, HAVE_XF86VIDMODE=no)
983         if test "$HAVE_XF86VIDMODE" = yes ; then
984             dri_modules="$dri_modules xxf86vm"
985         fi
986
987         PKG_CHECK_MODULES([DRIGL], [$dri_modules])
988         GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV $dri_modules"
989         X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS"
990         GL_LIB_DEPS="$DRIGL_LIBS"
991     else
992         # should check these...
993         X11_INCLUDES="$X11_INCLUDES $X_CFLAGS"
994         if test "x$HAVE_XF86VIDMODE" == xyes; then
995            GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXxf86vm -lXdamage -lXfixes"
996         else
997            GL_LIB_DEPS="$X_LIBS -lX11 -lXext -lXdamage -lXfixes"
998         fi
999         GL_PC_LIB_PRIV="$GL_LIB_DEPS"
1000         GL_PC_CFLAGS="$X11_INCLUDES"
1001
1002         # XCB can only be used from pkg-config
1003         PKG_CHECK_MODULES([XCB],[x11-xcb xcb-glx])
1004         GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV x11-xcb xcb-glx"
1005         X11_INCLUDES="$X11_INCLUDES $XCB_CFLAGS"
1006         GL_LIB_DEPS="$GL_LIB_DEPS $XCB_LIBS"
1007     fi
1008
1009     # Check to see if the xcb-glx library is new enough to support
1010     # GLX_ARB_create_context.  This bit of hackery is necessary until XCB 1.8
1011     # is released.
1012     save_CPPFLAGS="$CPPFLAGS"
1013     save_LDFLAGS="$LDFLAGS"
1014     CPPFLAGS="$CPPFLAGS $X11_INCLUDES"
1015     LDFLAGS="$LDFLAGS $GL_LIB_DEPS"
1016     AC_CHECK_LIB(xcb-glx, xcb_glx_create_context_attribs_arb_checked,
1017         [HAVE_XCB_GLX_CREATE_CONTEXT=yes],
1018         [HAVE_XCB_GLX_CREATE_CONTEXT=no])
1019     CPPFLAGS="$save_CPPFLAGS"
1020     LDFLAGS="$save_LDFLAGS"
1021
1022     if test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes; then
1023         X11_INCLUDES="$X11_INCLUDES -DHAVE_XCB_GLX_CREATE_CONTEXT"
1024     fi
1025
1026     # need DRM libs, -lpthread, etc.
1027     GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1028     GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1029     ;;
1030 esac
1031
1032 # This is outside the case (above) so that it is invoked even for non-GLX
1033 # builds.
1034 AM_CONDITIONAL(HAVE_XCB_GLX_CREATE_CONTEXT,
1035     test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes)
1036
1037 GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1038 GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1039 GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
1040 GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
1041
1042 AC_SUBST([GL_LIB_DEPS])
1043 AC_SUBST([GL_PC_REQ_PRIV])
1044 AC_SUBST([GL_PC_LIB_PRIV])
1045 AC_SUBST([GL_PC_CFLAGS])
1046 AC_SUBST([DRI_PC_REQ_PRIV])
1047 AC_SUBST([GLESv1_CM_LIB_DEPS])
1048 AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
1049 AC_SUBST([GLESv2_LIB_DEPS])
1050 AC_SUBST([GLESv2_PC_LIB_PRIV])
1051
1052 GLAPI_LIB_DEPS="-lpthread $SELINUX_LIBS"
1053 AC_SUBST([GLAPI_LIB_DEPS])
1054
1055
1056 dnl Setup default DRI CFLAGS
1057 DRI_CFLAGS='$(CFLAGS)'
1058 DRI_CXXFLAGS='$(CXXFLAGS)'
1059 DRI_LIB_DEPS='$(TOP)/src/mesa/libmesa.a'
1060 MESA_MODULES='$(TOP)/src/mesa/libmesa.a'
1061
1062 if test "x$enable_dri" = xyes && test "x$driglx_direct" = xyes ; then
1063     DRICORE_GLSL_LIBS='$(TOP)/$(LIB_DIR)/libglsl.so'
1064     DRICORE_LIBS='$(TOP)/$(LIB_DIR)/libdricore.so'
1065     DRICORE_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -lglsl'
1066     DRI_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -ldricore -lglsl'
1067     DRI_CFLAGS='$(CFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1068     DRI_CXXFLAGS='$(CXXFLAGS_NOVISIBILITY) -DUSE_DRICORE'
1069     MESA_MODULES='$(DRICORE_LIBS) $(DRICORE_GLSL_LIBS)'
1070 fi
1071 AC_SUBST([DRICORE_LIBS])
1072 AC_SUBST([DRICORE_GLSL_LIBS])
1073 AC_SUBST([DRICORE_LIB_DEPS])
1074 AC_SUBST([DRI_CXXFLAGS])
1075 AC_SUBST([DRI_CFLAGS])
1076 AC_SUBST([MESA_MODULES])
1077
1078 AC_SUBST([HAVE_XF86VIDMODE])
1079
1080 dnl
1081 dnl More GLX setup
1082 dnl
1083 case "x$enable_glx$enable_xlib_glx" in
1084 xyesyes)
1085     DEFINES="$DEFINES -DUSE_XSHM"
1086     ;;
1087 xyesno)
1088     DEFINES="$DEFINES -DGLX_INDIRECT_RENDERING"
1089     if test "x$driglx_direct" = xyes; then
1090         DEFINES="$DEFINES -DGLX_DIRECT_RENDERING"
1091     fi
1092     ;;
1093 esac
1094
1095 dnl
1096 dnl TLS detection
1097 dnl
1098
1099 AC_ARG_ENABLE([glx-tls],
1100     [AS_HELP_STRING([--enable-glx-tls],
1101         [enable TLS support in GLX @<:@default=disabled@:>@])],
1102     [GLX_USE_TLS="$enableval"],
1103     [GLX_USE_TLS=no])
1104 AC_SUBST(GLX_TLS, ${GLX_USE_TLS})
1105
1106 AS_IF([test "x$GLX_USE_TLS" = xyes],
1107       [DEFINES="${DEFINES} -DGLX_USE_TLS -DPTHREADS"])
1108
1109 dnl
1110 dnl More DRI setup
1111 dnl
1112 dnl Directory for DRI drivers
1113 AC_ARG_WITH([dri-driverdir],
1114     [AS_HELP_STRING([--with-dri-driverdir=DIR],
1115         [directory for the DRI drivers @<:@${libdir}/dri@:>@])],
1116     [DRI_DRIVER_INSTALL_DIR="$withval"],
1117     [DRI_DRIVER_INSTALL_DIR='${libdir}/dri'])
1118 AC_SUBST([DRI_DRIVER_INSTALL_DIR])
1119 dnl Extra search path for DRI drivers
1120 AC_ARG_WITH([dri-searchpath],
1121     [AS_HELP_STRING([--with-dri-searchpath=DIRS...],
1122         [semicolon delimited DRI driver search directories @<:@${libdir}/dri@:>@])],
1123     [DRI_DRIVER_SEARCH_DIR="$withval"],
1124     [DRI_DRIVER_SEARCH_DIR='${DRI_DRIVER_INSTALL_DIR}'])
1125 AC_SUBST([DRI_DRIVER_SEARCH_DIR])
1126 dnl Which drivers to build - default is chosen by platform
1127 AC_ARG_WITH([dri-drivers],
1128     [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@],
1129         [comma delimited DRI drivers list, e.g.
1130         "swrast,i965,radeon" @<:@default=auto@:>@])],
1131     [with_dri_drivers="$withval"],
1132     [with_dri_drivers=yes])
1133 if test "x$with_dri_drivers" = x; then
1134     with_dri_drivers=no
1135 fi
1136
1137 dnl If $with_dri_drivers is yes, directories will be added through
1138 dnl platform checks
1139 DRI_DIRS=""
1140 case "$with_dri_drivers" in
1141 no) ;;
1142 yes)
1143     # classic DRI drivers require FEATURE_GL to build
1144     if test "x$enable_opengl" = xyes; then
1145         DRI_DIRS="yes"
1146     fi
1147     ;;
1148 *)
1149     # verify the requested driver directories exist
1150     dri_drivers=`IFS=', '; echo $with_dri_drivers`
1151     for driver in $dri_drivers; do
1152         test -d "$srcdir/src/mesa/drivers/dri/$driver" || \
1153             AC_MSG_ERROR([DRI driver directory '$driver' doesn't exist])
1154     done
1155     DRI_DIRS="$dri_drivers"
1156     if test -n "$DRI_DIRS" -a "x$enable_opengl" != xyes; then
1157         AC_MSG_ERROR([--with-dri-drivers requires OpenGL])
1158     fi
1159     ;;
1160 esac
1161
1162 dnl Set DRI_DIRS, DEFINES and LIB_DEPS
1163 if test "x$enable_dri" = xyes; then
1164     # Platform specific settings and drivers to build
1165     case "$host_os" in
1166     linux*)
1167         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1168         DEFINES="$DEFINES -DHAVE_ALIAS"
1169
1170         case "$host_cpu" in
1171         x86_64)
1172             if test "x$DRI_DIRS" = "xyes"; then
1173                 DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1174             fi
1175             ;;
1176         powerpc*)
1177             # Build only the drivers for cards that exist on PowerPC.
1178             if test "x$DRI_DIRS" = "xyes"; then
1179                 DRI_DIRS="r200 radeon swrast"
1180             fi
1181             ;;
1182         sparc*)
1183             # Build only the drivers for cards that exist on sparc
1184             if test "x$DRI_DIRS" = "xyes"; then
1185                 DRI_DIRS="r200 radeon swrast"
1186             fi
1187             ;;
1188         esac
1189         ;;
1190     freebsd* | dragonfly* | *netbsd*)
1191         DEFINES="$DEFINES -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1"
1192         DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
1193
1194         if test "x$DRI_DIRS" = "xyes"; then
1195             DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1196         fi
1197         ;;
1198     gnu*)
1199         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1200         DEFINES="$DEFINES -DHAVE_ALIAS"
1201         ;;
1202     solaris*)
1203         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1204         ;;
1205     cygwin*)
1206         DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER"
1207         if test "x$DRI_DIRS" = "xyes"; then
1208             DRI_DIRS="swrast"
1209         fi
1210         ;;
1211     esac
1212
1213     # default drivers
1214     if test "x$DRI_DIRS" = "xyes"; then
1215         DRI_DIRS="i915 i965 nouveau r200 radeon swrast"
1216     fi
1217
1218     DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/  */ /g'`
1219
1220     # Check for expat
1221     if test "x$enable_dri" = xyes; then
1222         EXPAT_INCLUDES=""
1223         EXPAT_LIB=-lexpat
1224         AC_ARG_WITH([expat],
1225             [AS_HELP_STRING([--with-expat=DIR],
1226                 [expat install directory])],[
1227             EXPAT_INCLUDES="-I$withval/include"
1228             CPPFLAGS="$CPPFLAGS $EXPAT_INCLUDES"
1229             LDFLAGS="$LDFLAGS -L$withval/$LIB_DIR"
1230             EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
1231             ])
1232         AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
1233         save_LIBS="$LIBS"
1234         AC_CHECK_LIB([expat],[XML_ParserCreate],[],
1235             [AC_MSG_ERROR([Expat required for DRI.])])
1236         LIBS="$save_LIBS"
1237     fi
1238
1239     # libdrm is required for all except swrast
1240     if test -n "$DRI_DIRS" -a x"$DRI_DIRS" != xswrast; then
1241         if test "x$have_libdrm" != xyes; then
1242             AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
1243         fi
1244     fi
1245
1246     # put all the necessary libs together
1247     DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIB -lm -lpthread $DLOPEN_LIBS"
1248 fi
1249 AC_SUBST([DRI_DIRS])
1250 AC_SUBST([EXPAT_INCLUDES])
1251 AC_SUBST([DRI_LIB_DEPS])
1252
1253 case $DRI_DIRS in
1254 *i915*|*i965*)
1255     PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1256
1257     for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1258         case $d in
1259         i915)
1260             HAVE_I915_DRI=yes;
1261             ;;
1262         i965)
1263             HAVE_I965_DRI=yes;
1264             ;;
1265         esac
1266     done
1267
1268     ;;
1269 esac
1270
1271 case $DRI_DIRS in
1272 *nouveau*)
1273     PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1274     HAVE_NOUVEAU_DRI=yes;
1275     ;;
1276 esac
1277
1278 case $DRI_DIRS in
1279 *radeon*|*r200*)
1280     PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
1281
1282     for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do
1283         case $d in
1284         radeon)
1285             HAVE_RADEON_DRI=yes;
1286             ;;
1287         r200)
1288             HAVE_R200_DRI=yes;
1289             ;;
1290         esac
1291     done
1292
1293     ;;
1294 esac
1295
1296 case $DRI_DIRS in
1297 *swrast*)
1298     HAVE_SWRAST_DRI=yes;
1299     ;;
1300 esac
1301
1302 AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
1303 AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
1304 AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
1305 AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
1306 AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
1307 AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
1308
1309 dnl
1310 dnl OSMesa configuration
1311 dnl
1312
1313 dnl Configure the channel bits for OSMesa (libOSMesa, libOSMesa16, ...)
1314 AC_ARG_WITH([osmesa-bits],
1315     [AS_HELP_STRING([--with-osmesa-bits=BITS],
1316         [OSMesa channel bits and library name: 8, 16, 32 @<:@default=8@:>@])],
1317     [osmesa_bits="$withval"],
1318     [osmesa_bits=8])
1319 if test "x$osmesa_bits" != x8; then
1320     if test "x$enable_dri" = xyes -o "x$enable_glx" = xyes; then
1321         AC_MSG_WARN([Ignoring OSMesa channel bits because of non-OSMesa driver])
1322         osmesa_bits=8
1323     fi
1324 fi
1325 case "x$osmesa_bits" in
1326 x8)
1327     OSMESA_LIB="${OSMESA_LIB}"
1328     ;;
1329 x16|x32)
1330     OSMESA_LIB="${OSMESA_LIB}$osmesa_bits"
1331     DEFINES="$DEFINES -DCHAN_BITS=$osmesa_bits -DDEFAULT_SOFTWARE_DEPTH_BITS=31"
1332     ;;
1333 *)
1334     AC_MSG_ERROR([OSMesa bits '$osmesa_bits' is not a valid option])
1335     ;;
1336 esac
1337
1338 if test "x$enable_osmesa" = xyes; then
1339     # only link libraries with osmesa if shared
1340     if test "$enable_static" = no; then
1341         OSMESA_LIB_DEPS="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1342     else
1343         OSMESA_LIB_DEPS=""
1344     fi
1345     OSMESA_MESA_DEPS=""
1346     OSMESA_PC_LIB_PRIV="-lm -lpthread $SELINUX_LIBS $DLOPEN_LIBS"
1347 fi
1348 AC_SUBST([OSMESA_LIB_DEPS])
1349 AC_SUBST([OSMESA_MESA_DEPS])
1350 AC_SUBST([OSMESA_PC_REQ])
1351 AC_SUBST([OSMESA_PC_LIB_PRIV])
1352
1353 dnl
1354 dnl gbm configuration
1355 dnl
1356 if test "x$enable_gbm" = xauto; then
1357     case "$with_egl_platforms" in
1358         *drm*)
1359             enable_gbm=yes ;;
1360          *)
1361             enable_gbm=no ;;
1362     esac
1363 fi
1364 if test "x$enable_gbm" = xyes; then
1365     SRC_DIRS="$SRC_DIRS gbm"
1366
1367     PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
1368                       AC_MSG_ERROR([gbm needs udev]))
1369
1370     if test "x$enable_dri" = xyes; then
1371         GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
1372         if test "$SHARED_GLAPI" -eq 0; then
1373             AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
1374         fi
1375     fi
1376 fi
1377 GBM_PC_REQ_PRIV="libudev"
1378 GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
1379 AC_SUBST([GBM_PC_REQ_PRIV])
1380 AC_SUBST([GBM_PC_LIB_PRIV])
1381
1382 dnl
1383 dnl EGL configuration
1384 dnl
1385 EGL_CLIENT_APIS=""
1386
1387 if test "x$enable_egl" = xyes; then
1388     SRC_DIRS="$SRC_DIRS egl"
1389     EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS -lpthread"
1390     EGL_DRIVERS_DIRS=""
1391
1392     AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
1393
1394     if test "$enable_static" != yes; then
1395         # build egl_glx when libGL is built
1396         if test "x$enable_glx" = xyes; then
1397             EGL_DRIVERS_DIRS="glx"
1398         fi
1399
1400         PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
1401                           [have_libudev=yes],[have_libudev=no])
1402         if test "$have_libudev" = yes; then
1403             DEFINES="$DEFINES -DHAVE_LIBUDEV"
1404         fi
1405         if test "x$enable_dri" = xyes; then
1406             # build egl_dri2 when xcb-dri2 is available
1407             PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes],
1408                           [have_xcb_dri2=yes],[have_xcb_dri2=no])
1409             
1410             if test "$have_xcb_dri2" = yes; then
1411                 EGL_DRIVER_DRI2=dri2
1412                 DEFINES="$DEFINES -DHAVE_XCB_DRI2"
1413                 # workaround a bug in xcb-dri2 generated by xcb-proto 1.6
1414                 AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [],
1415                           [DEFINES="$DEFINES -DXCB_DRI2_CONNECT_DEVICE_NAME_BROKEN"])
1416             fi
1417         fi
1418
1419         EGL_DRIVERS_DIRS="$EGL_DRIVERS_DIRS $EGL_DRIVER_DRI2"
1420     fi
1421 fi
1422 AC_SUBST([EGL_LIB_DEPS])
1423 AC_SUBST([EGL_DRIVERS_DIRS])
1424
1425 dnl
1426 dnl EGL Gallium configuration
1427 dnl
1428 if test "x$enable_gallium_egl" = xyes; then
1429     if test "x$with_gallium_drivers" = x; then
1430         AC_MSG_ERROR([cannot enable egl_gallium without Gallium])
1431     fi
1432     if test "x$enable_egl" = xno; then
1433         AC_MSG_ERROR([cannot enable egl_gallium without EGL])
1434     fi
1435     if test "x$have_libdrm" != xyes; then
1436         AC_MSG_ERROR([egl_gallium requires libdrm >= $LIBDRM_REQUIRED])
1437     fi
1438
1439     GALLIUM_STATE_TRACKERS_DIRS="egl $GALLIUM_STATE_TRACKERS_DIRS"
1440     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-static"
1441     HAVE_ST_EGL="yes"
1442 fi
1443
1444 dnl
1445 dnl gbm Gallium configuration
1446 dnl
1447 if test "x$enable_gallium_gbm" = xauto; then
1448     case "$enable_gbm$HAVE_ST_EGL$enable_dri$with_egl_platforms" in
1449         yesyesyes*drm*)
1450             enable_gallium_gbm=yes ;;
1451          *)
1452             enable_gallium_gbm=no ;;
1453     esac
1454 fi
1455 if test "x$enable_gallium_gbm" = xyes; then
1456     if test "x$with_gallium_drivers" = x; then
1457         AC_MSG_ERROR([cannot enable gbm_gallium without Gallium])
1458     fi
1459     if test "x$enable_gbm" = xno; then
1460         AC_MSG_ERROR([cannot enable gbm_gallium without gbm])
1461     fi
1462     # gbm_gallium abuses DRI_LIB_DEPS to link.  Make sure it is set.
1463     if test "x$enable_dri" = xno; then
1464         AC_MSG_ERROR([gbm_gallium requires --enable-dri to build])
1465     fi
1466
1467     GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS"
1468     GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm"
1469     HAVE_ST_GBM="yes"
1470 fi
1471
1472 dnl
1473 dnl X.Org DDX configuration
1474 dnl
1475 if test "x$enable_xorg" = xyes; then
1476     PKG_CHECK_MODULES([XORG], [xorg-server >= 1.6.0])
1477     PKG_CHECK_MODULES([LIBDRM_XORG], [libdrm >= $LIBDRM_XORG_REQUIRED])
1478     PKG_CHECK_MODULES([LIBKMS_XORG], [libkms >= $LIBKMS_XORG_REQUIRED])
1479     PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
1480         HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
1481         HAVE_XEXTPROTO_71="no")
1482     GALLIUM_STATE_TRACKERS_DIRS="xorg $GALLIUM_STATE_TRACKERS_DIRS"
1483     HAVE_ST_XORG=yes
1484 fi
1485
1486 dnl
1487 dnl XA configuration
1488 dnl
1489 if test "x$enable_xa" = xyes; then
1490 AC_PROG_AWK
1491 AC_PROG_GREP
1492 AC_CHECK_PROG(NM, nm, "nm")
1493 if test "x$AWK" = x || test "x$GREP" = x || test "x$NM" = x; then
1494 AC_MSG_WARN([Missing one of nm, grep or awk. Disabling xa.])
1495 enable_xa=no
1496 fi
1497 fi
1498 if test "x$enable_xa" = xyes; then
1499     GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS"
1500     HAVE_ST_XA=yes
1501     AC_SUBST(AWK)
1502     AC_SUBST(GREP)
1503     AC_SUBST(NM)
1504 fi
1505
1506 dnl
1507 dnl OpenVG configuration
1508 dnl
1509 VG_LIB_DEPS=""
1510
1511 if test "x$enable_openvg" = xyes; then
1512     if test "x$enable_egl" = xno; then
1513         AC_MSG_ERROR([cannot enable OpenVG without EGL])
1514     fi
1515     if test "x$with_gallium_drivers" = x; then
1516         AC_MSG_ERROR([cannot enable OpenVG without Gallium])
1517     fi
1518     if test "x$enable_gallium_egl" = xno; then
1519         AC_MSG_ERROR([cannot enable OpenVG without egl_gallium])
1520     fi
1521
1522     EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
1523     VG_LIB_DEPS="$VG_LIB_DEPS $SELINUX_LIBS -lpthread"
1524     CORE_DIRS="$CORE_DIRS mapi/vgapi"
1525     GALLIUM_STATE_TRACKERS_DIRS="vega $GALLIUM_STATE_TRACKERS_DIRS"
1526     HAVE_ST_VEGA=yes
1527 fi
1528
1529 dnl
1530 dnl D3D1X configuration
1531 dnl
1532
1533 if test "x$enable_d3d1x" = xyes; then
1534     if test "x$with_gallium_drivers" = x; then
1535         AC_MSG_ERROR([cannot enable D3D1X without Gallium])
1536     fi
1537
1538     GALLIUM_STATE_TRACKERS_DIRS="d3d1x $GALLIUM_STATE_TRACKERS_DIRS"
1539     HAVE_ST_D3D1X=yes
1540 fi
1541
1542 dnl
1543 dnl Gallium G3DVL configuration
1544 dnl
1545 AC_ARG_ENABLE([gallium-g3dvl],
1546     [AS_HELP_STRING([--enable-gallium-g3dvl],
1547         [build gallium g3dvl @<:@default=disabled@:>@])],
1548     [enable_gallium_g3dvl="$enableval"],
1549     [enable_gallium_g3dvl=no])
1550 if test "x$enable_gallium_g3dvl" = xyes; then
1551     if test "x$with_gallium_drivers" = x; then
1552         AC_MSG_ERROR([cannot enable G3DVL without Gallium])
1553     fi
1554
1555     if test "x$enable_xvmc" = xauto; then
1556         PKG_CHECK_EXISTS([xvmc], [enable_xvmc=yes], [enable_xvmc=no])
1557     fi
1558
1559     if test "x$enable_vdpau" = xauto; then
1560         PKG_CHECK_EXISTS([vdpau], [enable_vdpau=yes], [enable_vdpau=no])
1561     fi
1562
1563     if test "x$enable_va" = xauto; then
1564         #don't enable vaapi state tracker even if package exists
1565         #PKG_CHECK_EXISTS([libva], [enable_vdpau=yes], [enable_vdpau=no])
1566         enable_va=no
1567     fi
1568 fi
1569
1570 if test "x$enable_xvmc" = xyes; then
1571     PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6])
1572     GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg/xvmc"
1573     HAVE_ST_XVMC="yes"
1574 fi
1575
1576 if test "x$enable_vdpau" = xyes; then
1577     PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.4.1])
1578     GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau"
1579     HAVE_ST_VDPAU="yes"
1580 fi
1581
1582 if test "x$enable_va" = xyes; then
1583     PKG_CHECK_MODULES([LIBVA], [libva = 0.31.1])
1584     AC_MSG_WARN([vaapi state tracker currently unmaintained])
1585     GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS va"
1586     HAVE_ST_VA="yes"
1587 fi
1588
1589 dnl
1590 dnl GLU configuration
1591 dnl
1592 AC_ARG_ENABLE([glu],
1593     [AS_HELP_STRING([--disable-glu],
1594         [enable OpenGL Utility library @<:@default=enabled@:>@])],
1595     [enable_glu="$enableval"],
1596     [enable_glu=yes])
1597
1598 if test "x$enable_glu" = xyes; then
1599     if test "x$enable_glx" = xno -a "x$enable_osmesa" = xno; then
1600         AC_MSG_NOTICE([Disabling GLU since there is no OpenGL driver])
1601         enable_glu=no
1602     fi
1603 fi
1604
1605 if test "x$enable_glu" = xyes; then
1606     SRC_DIRS="$SRC_DIRS glu"
1607
1608     if test "x$enable_glx" = xno; then
1609         # Link libGLU to libOSMesa instead of libGL
1610         GLU_LIB_DEPS=""
1611         GLU_PC_REQ="osmesa"
1612         if test "$enable_static" = no; then
1613             GLU_MESA_DEPS='-l$(OSMESA_LIB)'
1614         else
1615             GLU_MESA_DEPS=""
1616         fi
1617     else
1618         # If static, empty GLU_LIB_DEPS and add libs for programs to link
1619         GLU_PC_REQ="gl"
1620         GLU_PC_LIB_PRIV="-lm"
1621         if test "$enable_static" = no; then
1622             GLU_LIB_DEPS="-lm"
1623             GLU_MESA_DEPS='-l$(GL_LIB)'
1624         else
1625             GLU_LIB_DEPS=""
1626             GLU_MESA_DEPS=""
1627         fi
1628     fi
1629 fi
1630 if test "$enable_static" = no; then
1631     GLU_LIB_DEPS="$GLU_LIB_DEPS $OS_CPLUSPLUS_LIBS"
1632 fi
1633 GLU_PC_LIB_PRIV="$GLU_PC_LIB_PRIV $OS_CPLUSPLUS_LIBS"
1634 AC_SUBST([GLU_LIB_DEPS])
1635 AC_SUBST([GLU_MESA_DEPS])
1636 AC_SUBST([GLU_PC_REQ])
1637 AC_SUBST([GLU_PC_REQ_PRIV])
1638 AC_SUBST([GLU_PC_LIB_PRIV])
1639 AC_SUBST([GLU_PC_CFLAGS])
1640
1641 AC_SUBST([PROGRAM_DIRS])
1642
1643 dnl
1644 dnl Gallium configuration
1645 dnl
1646 if test "x$with_gallium_drivers" != x; then
1647     SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
1648 fi
1649
1650 AC_SUBST([LLVM_CFLAGS])
1651 AC_SUBST([LLVM_LIBS])
1652 AC_SUBST([LLVM_LDFLAGS])
1653 AC_SUBST([LLVM_VERSION])
1654
1655 case "x$enable_opengl$enable_gles1$enable_gles2" in
1656 x*yes*)
1657     EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GL_LIB)'
1658     ;;
1659 esac
1660
1661 AC_SUBST([VG_LIB_DEPS])
1662 AC_SUBST([EGL_CLIENT_APIS])
1663
1664 AC_ARG_WITH([egl-platforms],
1665     [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@],
1666         [comma delimited native platforms libEGL supports, e.g.
1667         "x11,drm" @<:@default=auto@:>@])],
1668     [with_egl_platforms="$withval"],
1669     [with_egl_platforms=yes])
1670
1671 EGL_PLATFORMS=""
1672
1673 case "$with_egl_platforms" in
1674 yes)
1675     if test "x$enable_egl" = xyes; then
1676         EGL_PLATFORMS="x11"
1677     fi
1678     ;;
1679 *)
1680     if test "x$enable_egl" != xyes; then
1681         AC_MSG_ERROR([cannot build egl state tracker without EGL library])
1682     fi
1683     # verify the requested driver directories exist
1684     egl_platforms=`IFS=', '; echo $with_egl_platforms`
1685     for plat in $egl_platforms; do
1686         test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \
1687             AC_MSG_ERROR([EGL platform '$plat' does not exist])
1688         if test "$plat" = "fbdev"; then
1689                 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev"
1690         fi
1691         if test "$plat" = "null"; then
1692                 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null"
1693         fi
1694         if test "$plat" = "wayland"; then
1695                 PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-server],, \
1696                                   [AC_MSG_ERROR([cannot find libwayland-client])])
1697                 GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
1698
1699                 m4_ifdef([WAYLAND_SCANNER_RULES],
1700                          [WAYLAND_SCANNER_RULES(['$(top_srcdir)/src/egl/wayland/wayland-drm/protocol'])])
1701         fi
1702         if test "$plat" = "drm" && test "x$enable_gbm" = "xno"; then
1703                 AC_MSG_ERROR([EGL platform drm needs gbm])
1704         fi
1705         case "$plat$have_libudev" in
1706                 waylandno|drmno)
1707                     AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;;
1708         esac
1709     done
1710     EGL_PLATFORMS="$egl_platforms"
1711     ;;
1712 esac
1713 AC_SUBST([EGL_PLATFORMS])
1714
1715 AC_ARG_WITH([egl-driver-dir],
1716     [AS_HELP_STRING([--with-egl-driver-dir=DIR],
1717                     [directory for EGL drivers [[default=${libdir}/egl]]])],
1718     [EGL_DRIVER_INSTALL_DIR="$withval"],
1719     [EGL_DRIVER_INSTALL_DIR='${libdir}/egl'])
1720 AC_SUBST([EGL_DRIVER_INSTALL_DIR])
1721
1722 AC_ARG_WITH([xorg-driver-dir],
1723     [AS_HELP_STRING([--with-xorg-driver-dir=DIR],
1724                     [Default xorg driver directory[[default=${libdir}/xorg/modules/drivers]]])],
1725     [XORG_DRIVER_INSTALL_DIR="$withval"],
1726     [XORG_DRIVER_INSTALL_DIR="${libdir}/xorg/modules/drivers"])
1727 AC_SUBST([XORG_DRIVER_INSTALL_DIR])
1728
1729 AC_ARG_WITH([max-width],
1730     [AS_HELP_STRING([--with-max-width=N],
1731                     [Maximum framebuffer width (4096)])],
1732     [DEFINES="${DEFINES} -DMAX_WIDTH=${withval}";
1733      AS_IF([test "${withval}" -gt "4096"],
1734            [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1735 )
1736 AC_ARG_WITH([max-height],
1737     [AS_HELP_STRING([--with-max-height=N],
1738                     [Maximum framebuffer height (4096)])],
1739     [DEFINES="${DEFINES} -DMAX_HEIGHT=${withval}";
1740      AS_IF([test "${withval}" -gt "4096"],
1741            [AC_MSG_WARN([Large framebuffer: see s_tritemp.h comments.])])]
1742 )
1743
1744 dnl
1745 dnl Gallium LLVM
1746 dnl
1747 AC_ARG_ENABLE([gallium-llvm],
1748     [AS_HELP_STRING([--enable-gallium-llvm],
1749         [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
1750     [enable_gallium_llvm="$enableval"],
1751     [enable_gallium_llvm=auto])
1752 if test "x$with_gallium_drivers" = x; then
1753     enable_gallium_llvm=no
1754 fi
1755 if test "x$enable_gallium_llvm" = xauto; then
1756     case "$host_cpu" in
1757     i*86|x86_64) enable_gallium_llvm=yes;;
1758     esac
1759 fi
1760 if test "x$enable_gallium_llvm" = xyes; then
1761     AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
1762
1763     if test "x$LLVM_CONFIG" != xno; then
1764         LLVM_VERSION=`$LLVM_CONFIG --version | sed 's/svn.*//g'`
1765         LLVM_CFLAGS=`$LLVM_CONFIG --cppflags|sed -e 's/-DNDEBUG\>//g' -e 's/-pedantic//g'`
1766         LLVM_LIBS="`$LLVM_CONFIG --libs engine bitwriter`"
1767
1768         LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
1769         DEFINES="$DEFINES -D__STDC_CONSTANT_MACROS"
1770         MESA_LLVM=1
1771     else
1772         MESA_LLVM=0
1773     fi
1774 else
1775     MESA_LLVM=0
1776 fi
1777
1778 dnl Directory for VDPAU libs
1779 AC_ARG_WITH([vdpau-libdir],
1780     [AS_HELP_STRING([--with-vdpau-libdir=DIR],
1781         [directory for the VDPAU libraries @<:@default=${libdir}/vdpau@:>@])],
1782     [VDPAU_LIB_INSTALL_DIR="$withval"],
1783     [VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
1784 AC_SUBST([VDPAU_LIB_INSTALL_DIR])
1785
1786 dnl Directory for VA libs
1787 AC_ARG_WITH([va-libdir],
1788     [AS_HELP_STRING([--with-va-libdir=DIR],
1789         [directory for the VA libraries @<:@default=${libdir}/va@:>@])],
1790     [VA_LIB_INSTALL_DIR="$withval"],
1791     [VA_LIB_INSTALL_DIR='${libdir}/va'])
1792 AC_SUBST([VA_LIB_INSTALL_DIR])
1793
1794 dnl
1795 dnl Gallium helper functions
1796 dnl
1797 gallium_check_st() {
1798     if test "x$HAVE_ST_DRI" = xyes || test "x$HAVE_ST_XORG" = xyes ||
1799          test "x$HAVE_ST_XA" = xyes || test "x$HAVE_ST_XVMC" = xyes ||
1800          test "x$HAVE_ST_VDPAU" = xyes || test "x$HAVE_ST_VA" = xyes; then
1801          if test "x$have_libdrm" != xyes; then
1802             AC_MSG_ERROR([DRI or Xorg DDX requires libdrm >= $LIBDRM_REQUIRED])
1803          fi
1804          GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1"
1805     fi
1806     if test "x$HAVE_ST_DRI" = xyes && test "x$2" != x; then
1807          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2"
1808     fi
1809     if test "x$HAVE_ST_XORG" = xyes && test "x$3" != x; then
1810          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3"
1811     fi
1812     if test "x$HAVE_ST_XA" = xyes && test "x$4" != x; then
1813          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4"
1814     fi
1815     if test "x$HAVE_ST_XVMC" = xyes && test "x$5" != x; then
1816          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5"
1817          NEED_G3DVL_DRI="yes"
1818     fi
1819     if test "x$HAVE_ST_VDPAU" = xyes && test "x$6" != x; then
1820          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6"
1821          NEED_G3DVL_DRI="yes"
1822     fi
1823     if test "x$HAVE_ST_VA" = xyes && test "x$7" != x; then
1824          GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $7"
1825          NEED_G3DVL_DRI="yes"
1826     fi
1827 }
1828
1829 gallium_require_llvm() {
1830     if test "x$MESA_LLVM" = x0; then
1831         case "$host_cpu" in
1832         i*86|x86_64) AC_MSG_ERROR([LLVM is required to build $1 on x86 and x86_64]);;
1833         esac
1834     fi
1835 }
1836
1837 dnl Gallium drivers
1838 dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block
1839 if test "x$with_gallium_drivers" != x; then
1840     gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
1841     for driver in $gallium_drivers; do
1842         case "x$driver" in
1843         xsvga)
1844             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
1845             gallium_check_st "svga/drm" "dri-vmwgfx" "" "xa-vmwgfx"
1846             ;;
1847         xi915)
1848             PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
1849             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe"
1850             if test "x$MESA_LLVM" = x1; then
1851                 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1852             fi
1853             GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS i915/sw"
1854             gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
1855             ;;
1856         xr300)
1857             gallium_require_llvm "Gallium R300"
1858             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
1859             gallium_check_st "radeon/drm" "dri-r300" "xorg-r300" "" "xvmc-r300" "vdpau-r300" "va-r300"
1860             ;;
1861         xr600)
1862             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
1863             gallium_check_st "radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600" "va-r600"
1864             ;;
1865         xnouveau)
1866             PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
1867             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50 nvc0"
1868             gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau" "" "xvmc-nouveau" "vdpau-nouveau"
1869             ;;
1870         xswrast)
1871             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe"
1872             if test "x$MESA_LLVM" = x1; then
1873                 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
1874             fi
1875
1876             if test "x$HAVE_ST_DRI" = xyes; then
1877                 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS dri-swrast"
1878             fi
1879             if test "x$HAVE_ST_VDPAU" = xyes; then
1880                 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS vdpau-softpipe"
1881             fi
1882             if test "x$HAVE_ST_XVMC" = xyes; then
1883                 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS xvmc-softpipe"
1884             fi
1885             if test "x$HAVE_ST_VA" = xyes; then
1886                 GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS va-softpipe"
1887             fi
1888             if test "x$HAVE_ST_VDPAU" = xyes ||
1889                test "x$HAVE_ST_XVMC" = xyes ||
1890                test "x$HAVE_ST_VA" = xyes; then
1891                if test "x$HAVE_WINSYS_XLIB" != xyes; then
1892                   GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib"
1893                fi
1894             fi
1895             ;;
1896         *)
1897             AC_MSG_ERROR([Unknown Gallium driver: $driver])
1898             ;;
1899         esac
1900     done
1901 fi
1902
1903 if test "x$NEED_G3DVL_DRI" = xyes; then
1904     GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS g3dvl/dri"
1905 fi
1906
1907 dnl prepend CORE_DIRS to SRC_DIRS
1908 SRC_DIRS="$CORE_DIRS $SRC_DIRS"
1909
1910 dnl Restore LDFLAGS and CPPFLAGS
1911 LDFLAGS="$_SAVE_LDFLAGS"
1912 CPPFLAGS="$_SAVE_CPPFLAGS"
1913
1914 dnl Add user CFLAGS and CXXFLAGS
1915 CFLAGS="$CFLAGS $USER_CFLAGS"
1916 CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS"
1917
1918 dnl Substitute the config
1919 AC_CONFIG_FILES([configs/autoconf
1920                 src/gbm/Makefile
1921                 src/gbm/main/gbm.pc
1922                 src/egl/wayland/Makefile
1923                 src/egl/wayland/wayland-egl/Makefile
1924                 src/egl/wayland/wayland-egl/wayland-egl.pc
1925                 src/egl/wayland/wayland-drm/Makefile
1926                 src/mesa/drivers/dri/dri.pc
1927                 src/mesa/drivers/dri/Makefile
1928                 src/mesa/drivers/dri/common/Makefile
1929                 src/mesa/drivers/dri/i915/Makefile
1930                 src/mesa/drivers/dri/i965/Makefile
1931                 src/mesa/drivers/dri/nouveau/Makefile
1932                 src/mesa/drivers/dri/r200/Makefile
1933                 src/mesa/drivers/dri/radeon/Makefile
1934                 src/mesa/drivers/dri/swrast/Makefile
1935                 tests/Makefile
1936                 tests/glx/Makefile])
1937
1938 dnl Replace the configs/current symlink
1939 AC_CONFIG_COMMANDS([configs],[
1940 if test -f configs/current || test -L configs/current; then
1941     rm -f configs/current
1942 fi
1943 ln -s autoconf configs/current
1944 ])
1945
1946 dnl Sort the dirs alphabetically
1947 GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1948 GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1949 GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1950 GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
1951
1952 AC_OUTPUT
1953
1954 dnl
1955 dnl Output some configuration info for the user
1956 dnl
1957 echo ""
1958 echo "        prefix:          $prefix"
1959 echo "        exec_prefix:     $exec_prefix"
1960 echo "        libdir:          $libdir"
1961 echo "        includedir:      $includedir"
1962
1963 dnl API info
1964 echo ""
1965 echo "        OpenGL:          $enable_opengl (ES1: $enable_gles1 ES2: $enable_gles2)"
1966 echo "        OpenVG:          $enable_openvg"
1967
1968 dnl Driver info
1969 echo ""
1970 if test "x$enable_osmesa" != xno; then
1971         echo "        OSMesa:          lib$OSMESA_LIB"
1972 else
1973         echo "        OSMesa:          no"
1974 fi
1975
1976 if test "x$enable_dri" != xno; then
1977         # cleanup the drivers var
1978         dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/  */ /;s/ *$//'`
1979         if test "x$DRI_DIRS" = x; then
1980             echo "        DRI drivers:     no"
1981         else
1982             echo "        DRI drivers:     $dri_dirs"
1983         fi
1984         echo "        DRI driver dir:  $DRI_DRIVER_INSTALL_DIR"
1985 fi
1986
1987 case "x$enable_glx$enable_xlib_glx" in
1988 xyesyes)
1989     echo "        GLX:             Xlib-based"
1990     ;;
1991 xyesno)
1992     echo "        GLX:             DRI-based"
1993     ;;
1994 *)
1995     echo "        GLX:             $enable_glx"
1996     ;;
1997 esac
1998
1999 echo ""
2000 echo "        GLU:             $enable_glu"
2001
2002 dnl EGL
2003 echo ""
2004 echo "        EGL:             $enable_egl"
2005 if test "$enable_egl" = yes; then
2006     echo "        EGL platforms:   $EGL_PLATFORMS"
2007
2008     egl_drivers=""
2009     for d in $EGL_DRIVERS_DIRS; do
2010         egl_drivers="$egl_drivers builtin:egl_$d"
2011     done
2012
2013     if test "x$HAVE_ST_EGL" = xyes; then
2014         echo "        EGL drivers:    ${egl_drivers} egl_gallium"
2015         echo "        EGL Gallium STs:$EGL_CLIENT_APIS"
2016     else
2017         echo "        EGL drivers:    $egl_drivers"
2018     fi
2019 fi
2020
2021 echo ""
2022 if test "x$MESA_LLVM" = x1; then
2023     echo "        llvm:            yes"
2024     echo "        llvm-config:     $LLVM_CONFIG"
2025     echo "        llvm-version:    $LLVM_VERSION"
2026 else
2027     echo "        llvm:            no"
2028 fi
2029
2030 echo ""
2031 if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
2032     echo "        Gallium:         yes"
2033     echo "        Gallium dirs:    $GALLIUM_DIRS"
2034     echo "        Target dirs:     $GALLIUM_TARGET_DIRS"
2035     echo "        Winsys dirs:     $GALLIUM_WINSYS_DIRS"
2036     echo "        Driver dirs:     $GALLIUM_DRIVERS_DIRS"
2037     echo "        Trackers dirs:   $GALLIUM_STATE_TRACKERS_DIRS"
2038 else
2039     echo "        Gallium:         no"
2040 fi
2041
2042
2043 dnl Libraries
2044 echo ""
2045 echo "        Shared libs:     $enable_shared"
2046 echo "        Static libs:     $enable_static"
2047
2048 dnl Compiler options
2049 # cleanup the CFLAGS/CXXFLAGS/DEFINES vars
2050 cflags=`echo $CFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2051     $SED 's/^ *//;s/  */ /;s/ *$//'`
2052 cxxflags=`echo $CXXFLAGS $OPT_FLAGS $PIC_FLAGS $ARCH_FLAGS | \
2053     $SED 's/^ *//;s/  */ /;s/ *$//'`
2054 defines=`echo $DEFINES $ASM_FLAGS | $SED 's/^ *//;s/  */ /;s/ *$//'`
2055 echo ""
2056 echo "        CFLAGS:          $cflags"
2057 echo "        CXXFLAGS:        $cxxflags"
2058 echo "        Macros:          $defines"
2059 echo ""
2060 echo "        PYTHON2:         $PYTHON2"
2061
2062 echo ""
2063 echo "        Run '${MAKE-make}' to build Mesa"
2064 echo ""