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